C言語入門

1
C言語入門
プログラミング言語Ⅰ(実習を含む。),
計算機言語Ⅰ・計算機言語演習Ⅰ,
情報処理言語Ⅰ(実習を含む。)
2
本日の内容
•
•
•
•
授業予定日の確認
授業教材の指示
C言語用プログラミング環境の整備
C言語プログラミングの導入部分
3
授業予定日の確認
• 授業予定日の変更があります
• 本来の授業予定日:
•
毎週金曜日 7,8,9,10 時限
4/10、 4/17、 4/24、 5/1、 5/15、 5/22、 5/29、 6/5、
6/12、 6/19、 6/26、 7/3、 7/10、 7/17、 7/24、 7/31
以上16回、最終日は期末試験
• ただし以下の授業予定日は出張のため、翌日ま
たは翌々日に変更になります。
•
•
•
金曜日: 4/24、5/22、6/19、7/10 休講
土曜日: 4/25、5/23、6/20、7/11 補講候補日1
日曜日: 4/26、5/24、6/21、7/12 補講候補日2
4
授業変更日の確認
日 月
5 6
12 13
19 20
26 27
日
3
10
17
24
31
4月
火 水 木 金 土
1 2 3 4
7 8 9 10 11
14 15 16 17 18
21 22 23 24 25
28 29 30
5月
月 火 水 木 金 土
1 2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28 29 30
日 月
1
7 8
14 15
21 22
28 29
日 月
5 6
12 13
19 20
26 27
6月
火 水 木 金 土
2 3 4 5 6
9 10 11 12 13
16 17 18 19 20
23 24 25 26 27
30
7月
火 水 木 金 土
1 2 3 4
7 8 9 10 11
14 15 16 17 18
21 22 23 24 25
28 29 30 31
5
教材のページ
• 修学支援システムの講義情報から
Moodle【学内外版】へ
コマンドプロンプト
• キーボードから直接命令を入力して実行する
時に使います。本講義ではC言語によるプロ
グラムのソースコードをコンパイル(=機械語
に翻訳)する場合等に利用する。
コマンドプロンプトを開く
• キーボードから「田」を押したまま「R」を押して
「ファイル名を指定して実行」を開く。
「田+R」のように表記された場合、慣例として
上記のような複数キー同時押しを意味する。
• 「ファイル名を指定して実行」 の「名前」の欄
に「cmd」と入力し、 「ENTER」キーを押すか、
「OK」ボタンをクリックする。
「スタート」ボタンから、「すべてのプ
ログラム」→「アクセサリ」→「コマン
ドプロンプト」でも開ける。
コマンドプロンプトの設定項目
• 「簡易編集モード」をONにしておくと、マウス
の左右ボタンだけでコピペ出来る。
コマンドプロンプトの設定
• ウインドウ左上のアイコンをクリックするとメ
ニューが出る。
「プロパティ」で現在開いているプロ
ンプトのみ、「規定値」で次回以降開
くプロンプト全てに対する設定を変
更出来ます。
コマンドプロンプトと作業ディレクトリ
• 「作業ディレクトリ」とはコマンドプロンプトで作
業した際に、ファイルが入出力されるディレク
トリの事。
ディレクトリとはフォルダの別の言
い方。
つまり「ディレクトリ=フォルダ」
通常、コマンドプロンプトを開いた
初期状態では、ユーザーのホーム
またはプロファイルのディレクトリが
作業ディレクトリ。
作業ディレクトリとコマンド
• コマンドプロンプトで「explorer .」と入力し
て ENTER キーを押す。
• 現在の作業ディレクトリが explorer で開く。
「explorer」がコマンド名(≒
プログラムの実行ファイル名)で、ス
ペースで区切って与えた「.」はコマ
ンドライン引数と言います。この場
合「.」は、現在の作業ディレクトリを
表す。
「explorer」とは、Windows上で、
いつもファイルを操作している
このウインドウの事。
本来のディレクトリ名
• explorer 上では本来のディレクトリ名が日本
語も用いて分かり易く(?)表示されている。
異なる名前に見える
これが本来のディレクトリ名
explore 以外ではこちらを使う。
「C:\Users\kou」は C ドライブの
Users フォルダの中にある kou
フォルダを意味する。
ここをクリックすると、コマンド
プロンプト上の作業ディレクトリ
の表示と一致していることが確
認出来る。
13
プログラミング言語、計算機言語、
情報処理言語とは?
• コンピュータに命令するための人工言語
• AWK, BASIC, C, C++, C#, D, ECMAScript, Erlang,
Fortran, F#, Haskell, Java, JavaScript, Lisp,
Objective-C, OCaml, Perl, PHP, Python, Ruby,
Smalltalk, Tcl, 等々
14
プログラムとは?
• 値の保存・参照、各種演算、条件分岐等を組
み合わせた計算の手順
データ
処理
参照
条件判定
処理
真
保存
処理
データ
処理
偽
15
プログラムが出来ると
何が良いのか?
• コンピュータに仕事をやってもらえる!!!
•
ルーチンワークからの解放
• 工作の世界も広がる!!!
•
•
最近は Arduino 等の安くて高機能なキットがある
http://thinkit.co.jp/story/2013/02/12/3960
• 楽しい!!!
•
遊び方は遊ぶ人次第
• 仕事にもあぶれない?
•
•
Facebook元役員「プログラミングを学ぶのなら、生
涯仕事に困らないことを私が保証しよう。」
http://goo.gl/I8nCDm
16
C言語
• AT&T の Bell 研で UNIX を作ってた Brian
Wilson Kernighan と Dennis MacAlistair Ritchie
らによって UNIX を作成するための言語として
生まれた。
• K&R 「プログラミング言語C」がC言語のバイブ
ルと言われる所以。
17
世界で最も有名なプログラム
• K&R の最初に出て来るプログラム hello.c
hello.c
1
2
3
4
5
6
#include <stdio.h>
main()
{
printf("hello, world\n");
}
mintty + bash + GNU C
$ gcc hello.c && ./a
hello, world
18
世界で最も有名なプログラム
• K&R の最初に出て来るプログラム hello.c
hello.c
1
2
3
4
5
6
#include <stdio.h>
ヘッダファイル(stdio.h)の取り込み
main()
{
printf("hello, world\n");
}
main関数の定義
文字列の表示
mintty + bash + GNU C
$ gcc hello.c && ./a
hello, world
プログラムのソースコードを
コンパイルして実行
19
ヘッダファイル stdio.h
• 多くの入門書ではおまじないとして紹介
hello.c
1
2
3
4
5
6
#include <stdio.h>
ヘッダファイル(stdio.h)の取り込み
main()
{
printf("hello, world\n");
}
printf 関数の呼び出し
・C言語は言語本体だけでは、四則演算、条件分岐、繰り返し等の基本
mintty的な処理以外ほとんど何も出来ない。
+ bash + GNU C
・文字列の入出力や数学の関数等、基本的かつ必要性の高い機能は、
$ gcc
hello.c && ./a
標準ライブラリと呼ばれる、サブルーチン集として用意されている。
hello,
world
・printf
関数は stdio.h (= STanDard Input Output Header file) で提供され
ている。
20
C言語のプログラム
• コンパイラにより実行形式に変換する
Source files
.h ファイル
.h ファイル
.h ファイル
Preprocessor
Executable file
C compiler
実行ファイル
Object files
.c ファイル
.c ファイル
.c ファイル
.o ファイル
.o ファイル
.o ファイル
linker
21
C コンパイラによるコンパイル
• Cygwin の mintty で bash から gcc で行った例
$ ls
hello.c
$ gcc hello.c
$ ls
a.exe hello.c
$ ./a
hello, world
ファイル一覧の表示
コンパイル
ファイル一覧の表示
作成した実行ファイルを実行
22
C/C++ リファレンス
• http://www.cppll.jp/cppreference/
Windows Help (.chm) 版を入
れておくと便利です。
23
C 言語の規則
• 各処理の末尾はセミコロン「;」で終端する。
hello.c
1
2
3
4
5
6
#include <stdio.h>
main()
{
printf("hello, world\n");
}
これがないとコン
パイル時にエラー
となる。
24
セミコロン「;」を忘れたエラーの例
• 各処理の末尾はセミコロン「;」で終端する。
hello_err.c
1
2
3
4
5
6
#include <stdio.h>
main()
{
printf("hello, world\n")
}
本当はここに「;」
が必要。
mintty + bash + GNU C
$ gcc hello_err.c
hello_err.c: 関数 ‘main’ 内:
hello_err.c:6:1: エラー: expected ‘;’ before ‘}’ token
}
^
25
エラーの例
• hello.c の 関数「main」の内にある 6 行目の1
文字目にあるトークン「}」の前に「;」が(あるこ
とが)予想されますよ、と言っている。
mintty + bash + GNU C
$ gcc hello_err.c
hello_err.c: 関数 ‘main’ 内:
hello_err.c:6:1: エラー: expected ‘;’ before ‘}’ token
}
^
26
C 言語の規則
• { } で複数の処理をまとめる。
hello1.c
1
2
3
4
5
6
7
#include <stdio.h>
main()
{
printf("hello");
printf(", world\n");
}
{ } の間に ; で終端
された複数の処理
を書いてよい。
27
C 言語の規則
• " " で囲まれた部分は文字列
hello1.c
1
2
3
4
5
6
7
#include <stdio.h>
main()
{
printf("hello");
printf(", world\n");
}
{ } の間に ; で終端
された複数の処理
を書いてよい。
28
C 言語の構造
• プログラムは関数の形でまとめる。
関数定義の書式
1 戻り値の型 関数名(引数の宣言, ...)
2 {
3
// 処理;
4
// ...
5
// return 戻り値;
6 }
関数は上記のように定義し、
( ) の中に書かれた引数で
(呼び出し元や呼び出し先
の)他の関数と値の受け渡
しを行う。
29
C 言語の規則
• プログラムは main 関数から実行される。
main.c
1 main()
2 {
3
// ここに処理を書く
4 }
mintty + bash + GNU C
$ gcc main.c && ./a
これは何もしないで終わる
だけのプログラム。
// から行末までと
/* から */ までは
プログラムとして解釈はされない。
コメントと呼ばれる要素で、
メモや覚書として主に人間が読
む際の注釈を書くために使う他、
一時的にプログラムの一部を無
効にするために使う。
30
宿題
• 次回までに以下の事をやっておくこと。
•
教科書の第1章までを読み、指示された操作を
試して動作を確認する。
•
不明な点、疑問点についてメモし、次回の授業
に持参する。または、本講義の Moodle コース
上にある第1週宿題用フォーラムに書き込んで
おく。