プログラミングⅠ(1組) 第9回 http://www.fit.ac.jp/~matsuki/lecture.html オフィス・アワーのお知らせ • オフィス・アワーを以下の要領で開講 – 日時:毎週月曜日、5時限目(16:20~) – 場所:A棟 4階 41番教室 – 内容:プログラミング関連科目 タイピングソフト • 喰人王を使用して結果を記録する • ステージ:第一の店(中華) • Excelのシートにスコアを毎回記録していく – 残り時間 ⇒ FeedBackページで報告 – 総タイプ数 – ミスタイプ数 – 正確さ ⇒ FeedBackページで報告 – 喰いっぷり ⇒ FeedBackページで報告 • このシートは,途中で提出してもらいます 今日の内容 • • • • • • 関数の概要 関数の定義 関数の呼び出し 変数のスコープ 引数の受け渡し 今日の課題 関数の概要 • これまで使った関数 – main関数・printf関数・scanf関数・sqrt関数・rand 関数...⇒ C言語は関数で構成されている • C言語の関数とは,「一連の処理の集まり」 • プログラマが,独自の関数を作ることができる 関数の定義 • 関数とは? – プログラマが与えた値(材料)を, – 指示通りに処理し, – 結果を吐き出す 引数 処理の材料 addnum()関数: 2つの整数値の 和を得る 2 a 3 b addnum() 戻り値(返り値) 処理の結果 5 関数の定義 引数の数だけ, 「,」で区切って変 数を用意する 第1引数 第2引数 戻り値の型 関数名 型 変数名 int addnum(int a, { int x; x = a + b; return x; } 型 変数名 int b) a, bというint型変数が, 引数の値を受け取る addnumの処理内容を ここに書く return文(関数を終了し,後に続く値(戻り値)を返す) 関数の定義 • 戻り値を持たない関数 voidは「空の」とい う意味 – 戻り値の型にvoid(ヴォイド)と指定する dispnum()関数:引数の整数値を表示する void dispnum(int a) { printf(“引数の値は%d\n”, a); return; } 戻り値を指定する必要はない(この場合,return文はなくてもOK) 関数の定義 • 引数を持たない関数 hello()関数:「Hello World」と表示する void hello(void) 「void hello()」と書いてもOK { printf(“Hello World\n”); } 関数の呼び出し • 関数呼び出しの基本 関数の定義 dispnum( int a ) { … 対応 } 関数の呼び出し dispnum ( 5 ) ; 関数名 引数 aの値は5になる #include <stdio.h> void dispnum(int a) { printf(“引数の値は%d\n”, a); } main() { int x = 10; dispnum( 5 ); dispnum( x ); } 5を引数として, dispnum()を呼び出す xの値10を引数として, dispnum()を呼び出す 関数の呼び出し • 戻り値を利用する 関数の定義 関数の 呼び出し int addnum( int a, int b ) { … 対応 } 関数の戻り値をnに代入する int n; n = addnum ( 2, 3 ) ; #include <stdio.h> int addnum(int a, int b) { int x; x = a + b; return x; } 1 main() addnum()関数を実行し, { 戻り値をnに格納する int n; n = addnum( 2, 3 ); printf(“戻り値は%d\n”, n); } 変数のスコープ(有効範囲) • ローカル変数:関数の中で定義した変数 int func( ) { int y; … } main() { int x; x = 3; y = 5; } 変数yのスコープ 変数xのスコープ func()にあるyを 参照することはできない! 変数のスコープ(有効範囲) • グローバル変数:関数の外で定義した変数 変数zのスコープ int z; //グローバル変数 int func( ... ) { 変数yのスコープ int y; z = 2; } main() { int x; z = 1; } 変数xのスコープ int y; int z; void myfunc(int a) { int z; int x; x = a; y = a; z = a; } main() { グローバル変数yとzのスコープ グローバル変数と同じ名前の ローカル変数があるときは, ローカル変数が優先される ローカル変数zとxのスコープ 同じ名前であっても, ローカル変数は,別の変数と見なす int x; x = 10; y = 10; z = 10; printf(“x, y, zの値は%d, %d, %d\n”,x, y, z); myfunc( 5 ); printf(“x, y, zの値は%d, %d, %d\n”,x, y, z); } ローカル変数xのスコープ プロトタイプ宣言 関数の定義 関数の呼び出し 関数の呼び出し 関数の定義 プロトタイプ宣言: 関数のひな型を呼び出し前に宣言しておく プロトタイプ宣言 戻り値の型 関数名 第1引数の型 プロトタイプ 宣言 int addnum(int, int); 関数の 呼び出し n = addnum(2, 3); 関数の定義 int addnum(int a, int b) { … } 第2引数の型 #include <stdio.h> void dispnum(int a) { printf(“引数の値は%d\n”, a); } main() { int x = 10; dispnum( 5 ); dispnum( x ); } #include <stdio.h> void dispnum(int a); プロトタイプ宣言 main() { int x = 10; dispnum( 5 ); dispnum( x ); } void dispnum(int a) { printf(“引数の値は%d\n”, a); }
© Copyright 2024 ExpyDoc