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