c 言語によるプログラミングスタイル
DESCRIPTION
C 言語によるプログラミングスタイル. 制御システム工学科 山北 昌毅. 情報処理概論及び演習. 1.水曜日 S 516 前半 C言語の講義 後半 Matlab の演習 [ 学術国際情報センター(GSIC) ] 2.金曜日 学術国際情報センター(GSIC) 旧図書館南側の3階の建物 3階の第 1 実習室 C言語の演習. 講義日程. C言語講義のテキスト. 明解C言語 第 1 巻 入門編:柴田望洋 C言語のテキストを既に持っている人はそれでいいです。. 本日の内容. 構造化プログラミング - PowerPoint PPT PresentationTRANSCRIPT
C 言語によるプログラミングスタイル
制御システム工学科
山北 昌毅
情報処理概論及び演習1.水曜日 S516 前半 C言語の講義 [ 学術国際情報センター(GSIC) ]
後半 Matlab の演習2.金曜日 学術国際情報センター(GSIC) 旧図書館南側の3階の建物 3階の第 1 実習室 C言語の演習
講義日程日(曜日) 講義
(山北、石塚、伊吹)演習
(青野)4/8 (水 ) C 入門、変数、基本的な演算
4/10 (金 ) UNIX 入門、エディタ、日本語入力、電子メール ( 復習 )
4/15 (水 ) 制御構造 1(選択 ) 4/17 (金 ) 変数、基本的な演算4/22(水 ) 制御構造 2(繰り返し )
4/24 (金 ) 制御構造1 ( 選択、分岐 )4/30 (木 ) 関数 ( ポインタ無 ) 、単純配列 (水曜授業)
5/1 (金 ) 制御構造2 ( 繰り返し )
5/8 (金) 制御構造3 ( 繰り返し )[続き ]
5/13 (水 ) ポインタ、関数 ( ポインタ有 )
5/15 (金 ) 関数 ( ポインタ無 )
5/20 (水 ) 構造体・共用体 5/22 (金 ) 配列5/27 (水 ) 文字処理・ファイル操作
5/29 (金 ) ポインタ6/3 (水 ) 休講 6/5 (金 ) 関数(ポインタ有)6/10 (水 ) Matlab(1)6/12 (金 ) 構造体・共用体, gnuplot6/17 (水 ) Matlab(2)
6/19 (金 ) 文字処理・ファイル操作6/24 (水 ) Matlab(3)6/26 (金 ) 予備日7/1 (水 ) Matlab(4)7/3 (金 ) 予備日7/8 (水 ) Matlab(5)7/10 (金 ) 予備日7/15 (水 ) Matlab(6)7/17 (金 ) 予備日7/22 (水 ) 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
実行ファイルの生成
コンパイラ リンカーafo.c afo.o afo
+
ライブラリ
> cc –o afo afo.c
基本型
基本型の定数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);
結果は?