C言語によるプログラミングスタイル 制御システム工学科 山北 昌毅 情報処理概論及び演習 1.水曜日 S516 前半 C言語の講義[学術国際情報センター(GSIC)] 後半 Matlabの演習 2.金曜日 学術国際情報センター(GSIC) 旧図書館南側の3階の建物 3階の第1実習室 C言語の演習 講義日程 日(曜日) 4/8 (水) 講義 (山北、石塚、伊吹) C 入門、変数、基本的な演算 4/10 (金) 4/15 (水) 4/17 (金) 4/22(水) 4/24 (金) 4/30 (木) UNIX 入門、エディタ、日本語入力、電子メール (復習) 制御構造 1(選択) 変数、基本的な演算 制御構造 2(繰り返し) 関数 (ポインタ無)、単純配列 5/1 (金) 5/8 (金) 5/13 (水) 5/15 5/20 5/22 5/27 5/29 6/3 6/5 6/10 6/12 6/17 6/19 6/24 6/26 7/1 7/3 7/8 7/10 7/15 7/17 7/22 (金) (水) (金) (水) (金) (水) (金) (水) (金) (水) (金) (水) (金) (水) (金) (水) (金) (水) (金) (水) 演習 (青野) 制御構造1 (選択、分岐) (水曜授業) 制御構造2 (繰り返し) 制御構造3 (繰り返し)[続き] ポインタ、関数 (ポインタ有) 関数 (ポインタ無) 構造体・共用体 配列 文字処理・ファイル操作 ポインタ 休講 関数(ポインタ有) Matlab(1) 構造体・共用体,gnuplot Matlab(2) 文字処理・ファイル操作 Matlab(3) 予備日 Matlab(4) 予備日 Matlab(5) 予備日 Matlab(6) 予備日 Matlab(7) C言語講義のテキスト 明解C言語 第1巻 入門編:柴田望洋 C言語のテキストを既に持っている人はそれで いいです。 本日の内容 1. 構造化プログラミング 2. コンパイル・リンクの方法 ソースファイル、オブジェクトファイル、 実行ファイル 3. printf,scanf (結果の表示、キーボードからの入力) 4. 変数・定数の使い方 ① 型 ② 暗黙の型変換・明示的型変換 5. 演算子 構造化プログラミング [目的] プログラムのテスト、保守、コード修正をしてくれる 人(将来の自分も含む)に理解しやすいプログラムを 作成すること。 → 実際の実行に際して、数マイクロの実行速度を 早くしたり、数ワードの記憶領域を節約しようという 無駄な努力はしない。(例外としては、制御プログラ ムなど実時間性の強いものや、人工衛星搭載用な ど記憶領域に制限があるもの) 構造化プログラミングのための指針 1. 逐次実行文、do-while文、do-until文、if-then-else文、case文の5つの 基本文からプログラムを作る。 2. goto文の使用は極力避け、プログラムは上から下へ読めるようにする。 3. プログラムは実行の流れの分岐点がすぐに分かるようにソース上で字下 げ(インデント)を行う。特に、入れ子構造の場合はインデントを行う。 4. 文が並んでいるもの(ブロック)は1つの入口と1つの出口を持つようにす る。 5. 論理は単純で、問題を単刀直入に解決する。(数学の証明ではないから、 等価問題などに置き換えるようなことはしない。) 6. 良い表現をする。 – – – – 変数名は意味のあるものにする。 ライブラリ関数を使う。 同じ表現の繰り返しは関数呼出し(サブルーチンコール)に変える。 一時変数はなるべく使わない。 C言語の特長 C言語は構造化プログラムを容易に記述できる高級アセンブラ [利点] 1. 移植性に優れている。 (ほとんどの計算機上で使える。) 2. 小技が効く (アセンブラと同等な処理プログラムを記述できる)。 3. 実行効率の良いプログラムを記述することが出来る。 4. 世の中でもっとも実用になっている 世界一有名なプログラム #include <stdio.h> int main(void) { printf(“Hello, world !\n”); } afo.c 実行ファイルの生成 > cc –o afo afo.c afo.c コンパイラ afo.o リンカー + ライブラリ afo 基本型 基本型の定数 1. int 型 10, -1(10進数) 0x10(16進数) 010(8進数) 2. float, double型 10.0, -1.0, 2.0e3, 4.0e-4 3. char型 ‘A’, ‘b’ 4. 文字列(char型のポインター) “Hello” JISコード表(文字型定数) printfの使い方 (構文図) 変換指定子など 最小フィールド幅 変換修飾子 変換指定子(1) 変換指定子(2) 変換指定子(3) 簡単な計算と結果の表示 #include <stdio.h> int main(){ 拡張表記(エスケープシーケンス) printf(“%d\n”, 2*3); printf(“%f\n”, 4.0/5.0) } 数値を変えたいとすると 再コンパイル 効率が悪い 変数の利用 変数の宣言 基本はブロックの先頭で (ブロック内では同じ変数名は一つだけ!) 型名 変数名{=初期値,変数名..} 例 int x, y=0; double z; scanfの使い方 scanf(書式,&変数{,変数}) ‘まじない’だと思って必ず付ける 変数とscanfの利用 double x,y; scanf(“%lf%lf”,&x,&y); printf(“%f\n”,x/y); >4.0 5.0 ↓(Enter) 0.8 > 演算子(1) 演算子(2) 暗黙・明示的な型変換(キャスト) [明示的型変換] (型名)値 例 (double) 1, x = (int)1.0; [暗黙の型変換](‘精度の高い’型に自動変換) 例 1.0/2 -> 1.0/(double)2 Quiz printf("%f\n", 1/2/4.0); 結果は?
© Copyright 2025 ExpyDoc