280 likes | 379 Vues
C 言語によるプログラミングスタイル. 制御システム工学科 山北 昌毅. 情報処理概論及び演習. 1.水曜日 S 516 前半 C言語の講義 後半 Matlab の演習 [ 学術国際情報センター(GSIC) ] 2.金曜日 学術国際情報センター(GSIC) 旧図書館南側の3階の建物 3階の第 1 実習室 C言語の演習. 講義日程. C言語講義のテキスト. 明解C言語 第 1 巻 入門編:柴田望洋 C言語のテキストを既に持っている人はそれでいいです。. 本日の内容. 構造化プログラミング
E N D
C言語によるプログラミングスタイル 制御システム工学科 山北 昌毅
情報処理概論及び演習 1.水曜日 S516 前半 C言語の講義 後半 Matlabの演習[学術国際情報センター(GSIC)] 2.金曜日 学術国際情報センター(GSIC) 旧図書館南側の3階の建物 3階の第1実習室 C言語の演習
C言語講義のテキスト 明解C言語 第1巻 入門編:柴田望洋 C言語のテキストを既に持っている人はそれでいいです。
本日の内容 • 構造化プログラミング • コンパイル・リンクの方法ソースファイル、オブジェクトファイル、実行ファイル • printf,scanf(結果の表示、キーボードからの入力) • 変数・定数の使い方 • 型 • 暗黙の型変換・明示的型変換 • 演算子
構造化プログラミング [目的] プログラムのテスト、保守、コード修正をしてくれる人(将来の自分も含む)に理解しやすいプログラムを作成すること。 → 実際の実行に際して、数マイクロの実行速度を早くしたり、数ワードの記憶領域を節約しようという無駄な努力はしない。(例外としては、制御プログラムなど実時間性の強いものや、人工衛星搭載用など記憶領域に制限があるもの)
構造化プログラミングのための指針 • 逐次実行文、do-while文、do-until文、if-then-else文、case文の5つの基本文からプログラムを作る。 • goto文の使用は極力避け、プログラムは上から下へ読めるようにする。 • プログラムは実行の流れの分岐点がすぐに分かるようにソース上で字下げ(インデント)を行う。特に、入れ子構造の場合はインデントを行う。 • 文が並んでいるもの(ブロック)は1つの入口と1つの出口を持つようにする。 • 論理は単純で、問題を単刀直入に解決する。(数学の証明ではないから、等価問題などに置き換えるようなことはしない。) • 良い表現をする。 • 変数名は意味のあるものにする。 • ライブラリ関数を使う。 • 同じ表現の繰り返しは関数呼出し(サブルーチンコール)に変える。 • 一時変数はなるべく使わない。
C言語の特長 C言語は構造化プログラムを容易に記述できる高級アセンブラ [利点] • 移植性に優れている。(ほとんどの計算機上で使える。) • 小技が効く(アセンブラと同等な処理プログラムを記述できる)。 • 実行効率の良いプログラムを記述することが出来る。 • 世の中でもっとも実用になっている
世界一有名なプログラム #include <stdio.h> int main(void) { printf(“Hello, world !\n”); } afo.c
実行ファイルの生成 > cc –o afo afo.c コンパイラ リンカー afo.c afo afo.o + ライブラリ
基本型の定数 • int 型10, -1(10進数)0x10(16進数)010(8進数) • float, double型10.0, -1.0, 2.0e3, 4.0e-4 • char型‘A’, ‘b’ • 文字列(char型のポインター)“Hello”
printfの使い方 (構文図)
簡単な計算と結果の表示 #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 >
暗黙・明示的な型変換(キャスト) [明示的型変換] (型名)値 例 (double) 1, x = (int)1.0; [暗黙の型変換](‘精度の高い’型に自動変換) 例 1.0/2 -> 1.0/(double)2
Quiz printf("%f\n", 1/2/4.0); 結果は? printf("%f\n", 1/4.0/2);