28
C 言言言言言言言言言言言言言言言言 言言言言言言言言言 言言 言言

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

Embed Size (px)

DESCRIPTION

C 言語によるプログラミングスタイル. 制御システム工学科 山北 昌毅. 情報処理概論及び演習. 1.水曜日 S 516   前半 C言語の講義   後半  Matlab の演習 [ 学術国際情報センター(GSIC) ] 2.金曜日 学術国際情報センター(GSIC)         旧図書館南側の3階の建物         3階の第 1 実習室   C言語の演習. 講義日程. C言語講義のテキスト. 明解C言語 第 1 巻 入門編:柴田望洋 C言語のテキストを既に持っている人はそれでいいです。. 本日の内容. 構造化プログラミング - PowerPoint PPT Presentation

Citation preview

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

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

制御システム工学科

山北 昌毅

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

情報処理概論及び演習1.水曜日 S516  前半 C言語の講義 [ 学術国際情報センター(GSIC) ]

  後半  Matlab の演習2.金曜日 学術国際情報センター(GSIC)        旧図書館南側の3階の建物        3階の第 1 実習室  C言語の演習  

Page 3: 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)

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

C言語講義のテキスト

明解C言語 第 1 巻 入門編:柴田望洋

C言語のテキストを既に持っている人はそれでいいです。

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

本日の内容1. 構造化プログラミング2. コンパイル・リンクの方法

ソースファイル、オブジェクトファイル、実行ファイル

3. printf,scanf( 結果の表示、キーボードからの入力)

4. 変数・定数の使い方① 型② 暗黙の型変換・明示的型変換

5. 演算子

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

構造化プログラミング

[ 目的 ] プログラムのテスト、保守、コード修正をしてくれる人 ( 将来の自分も含む ) に理解しやすいプログラムを作成すること。

  → 実際の実行に際して、数マイクロの実行速度を早くしたり、数ワードの記憶領域を節約しようという無駄な努力はしない。 ( 例外としては、制御プログラムなど実時間性の強いものや、人工衛星搭載用など記憶領域に制限があるもの )

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

構造化プログラミングのための指針

1. 逐次実行文、 do-while 文、 do-until 文、 if-then-else 文、 case 文の5つの基本文からプログラムを作る。

2. goto 文の使用は極力避け、プログラムは上から下へ読めるようにする。

3. プログラムは実行の流れの分岐点がすぐに分かるようにソース上で字下げ ( インデント ) を行う。特に、入れ子構造の場合はインデントを行う。

4. 文が並んでいるもの ( ブロック ) は1つの入口と1つの出口を持つようにする。

5. 論理は単純で、問題を単刀直入に解決する。 ( 数学の証明ではないから、等価問題などに置き換えるようなことはしない。 )

6. 良い表現をする。– 変数名は意味のあるものにする。– ライブラリ関数を使う。– 同じ表現の繰り返しは関数呼出し (サブルーチンコール ) に変える。

– 一時変数はなるべく使わない。

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

C 言語の特長

C 言語は構造化プログラムを容易に記述できる高級アセンブラ

[利点 ]1.移植性に優れている。

(ほとんどの計算機上で使える。 )2.小技が効く

(アセンブラと同等な処理プログラムを記述できる ) 。

3.実行効率の良いプログラムを記述することが出来る。

4.世の中でもっとも実用になっている

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

世界一有名なプログラム

#include <stdio.h>

int main(void)

{

printf(“Hello, world !\n”);

}

afo.c

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

実行ファイルの生成

コンパイラ リンカーafo.c afo.o afo

+

ライブラリ

> cc –o afo afo.c

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

基本型

Page 12: 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”

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

JIS コード表(文字型定数)

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

printf の使い方

(構文図)

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

変換指定子など

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

最小フィールド幅

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

変換修飾子

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

変換指定子(1)

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

変換指定子(2)

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

変換指定子(3)

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

簡単な計算と結果の表示

#include <stdio.h>

int main(){

printf(“%d\n”, 2*3);

printf(“%f\n”, 4.0/5.0)

}

数値を変えたいとすると

再コンパイル

効率が悪い

変数の利用

拡張表記(エスケープシーケンス)

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

変数の宣言

基本はブロックの先頭で( ブロック内では同じ変数名は一つだけ!)

型名 変数名{=初期値 , 変数名 ..}

例int x, y=0;

double z;

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

scanf の使い方

scanf( 書式 ,& 変数 {, 変数})

‘まじない’だと思って必ず付ける

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

変数と scanf の利用

double x,y;

scanf(“%lf%lf”,&x,&y);

printf(“%f\n”,x/y);

>4.0 5.0 ↓ ( Enter) 0.8>

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

演算子(1)

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

演算子(2)

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

暗黙・明示的な型変換(キャスト)

[ 明示的型変換 ]

(型名)値例 (double) 1, x = (int)1.0;

[ 暗黙の型変換 ](‘精度の高い’型に自動変換)

例  1.0/2 -> 1.0/(double)2

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

Quiz

printf("%f\n", 1/2/4.0);

結果は?