C言語によるプログラミングスタイル 制御システム工学科 山北 昌毅
基礎情報処理及び演習 1.3コマ目 S224 前半 C言語の講義 後半 Matlabの演習[南4情報演習室第一演習室] 2.4コマ目 C言語の演習 南4情報演習室第一演習室
演習室の場所 ここ 南4情報演習室第一演習室 (セブンイレブンのビルの3F)
講義日程
C言語講義のテキスト 明解C言語 第1巻 入門編:柴田望洋 C言語のテキストを既に持っている人はそれでいいです。
プログラムの制作プロセス 保守・更新 http://wwws.kobe-c.ac.jp/deguchi/c/step.htmlより
本日の内容 構造化プログラミング コンパイル・リンクの方法 ソースファイル、オブジェクトファイル、 実行ファイル 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”
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); 結果は?