C言語によるプログラミングスタイル

Download Report

Transcript C言語によるプログラミングスタイル

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);
結果は?