第4章 関数 関数を作ります! 第4章 関数 1 今回の内容 関数とは(数学) 関数とは(C言語) 関数のプロトタイプ宣言 第4章 関数 2 関数とは(数学) 𝑥 𝑓(𝑥) 𝑦 𝑥, 𝑦 𝑔(𝑥, 𝑦) 𝑧 何か値を入れると、何か値が出るもの つまり、xを入れるとyが出るもの xとyを入れてzが出ることもある(2つ入れても、出る値は1つだけ) 数学では、これを関数という 第4章 関数 3 以下のプログラムを実行してみよう #include <stdio.h> int f(int x) { return x + 1; } int main() { int x; 実行したら、適当な整数を入力しよう x > 3 4 x > 20 21 printf("x > "); scanf("%d", &x); printf("%d\n", f(x)); 第4章 return 0; 関数 } 4 数学みたいな関数 関数を定義する int 名前(int 入るやつ) { return 出るやつ; } 関数を呼び出す 𝑓 𝑥 = 𝑥 + 1 (𝑥は整数) 𝑓(3) の答えを表示 名前(入れるやつ) int f(int x) { return x + 1; } printf("%d\n", f(3)); 𝑓 𝑥 = 𝑥 + 1 という関数を作りました(まるで数学みたいだ!) 1つ目のintは、出る値が整数であるという意味 2つ目のintは、入る値が整数であるという意味 return 第4章 関数 𝑥 𝑓(𝑥) 𝑥+1 ; は、この値を返しなさいという命令文 5 関数を定義する場所 #include <stdio.h> includeとmainの間に、関数の定義を入れる int f(int x) { return x + 1; } ココ int main() : : 第4章 関数 6 関数の引数(ひきすう) 𝑓 𝑥, 𝑦, 𝑧 = 𝑥𝑦𝑧 (𝑥, 𝑦, 𝑧は整数) int f(int x, int y, int z) { return x * y * z; } 𝑓(1,2,3) の答えを表示 printf("%d\n", f(1, 2, 3)); ( ) の中身を引数(ひきすう)といいます ちなみに、「int x, int y, int z」は仮引数(かりひきすう)、「1, 2, 3」は実引数(じつひきすう)です このx,y,zは変数となります コンマ「,」で区切って、引数を増やすことができます それぞれintをつけましょう 第4章 関数 7 練習問題1 関数f(x)が 𝑓 𝑥 = 2𝑥 + 1 (𝑥は整数) となるように定義し、入力されたxについてf(x)を表示するプロ グラムを作りなさい x > 3 7 第4章 関数 8 練習問題1 解答例 #include <stdio.h> int f(int x) { return 2 * x + 1; } int main() { int x; printf("x > "); scanf("%d", &x); printf("%d\n", f(x)); return 0; 第4章 関数 } 9 関数とは(C言語) 実行! 実行! x int f(int x) y 実行! x,y void g(int x, int y) int main() 0 実行! void tetsuzuki() 何か値(0個以上)を入れると、何か実行され、何か値が出る(または出ない)もの C言語では、これを関数という 実はmainも関数です(main関数といいます) 第4章 関数 10 以下のプログラムを実行してみよう #include <stdio.h> 定義 関数が実行された! x = 0, y = 100 関数が実行された! x = 1, y = 101 関数が実行された! x = 2, y = 102 y = 102 int f(int x) { int y = x + 100; printf("関数が実行された! x = %d, y = %d\n", x, y); return y; } int main() { int y; f(0); 呼び出し f(1); y = f(2); printf("y = %d\n", y); 第4章 関数 return 0; } 11 C言語の関数 値が出る関数を定義する 関数を呼び出す 値が出ない関数を定義する int 名前(int 入るやつ) 名前(入れるやつ) void 名前(int 入るやつ) { { 実行するやつ 実行するやつ 関数を呼び出す 実行するやつ 実行するやつ (出る値は無視) 実行するやつ 実行するやつ 名前(入れるやつ); return 出るやつ; } } 今までmain関数でやっていたように、関数の中で何か実行させることができる 関数を呼び出す (出る値はない) 名前(入れるやつ); 関数を呼び出すとき、出る値がいらない場合は、関数とセミコロン「;」だけでよい 例: f(0); 値が出ない関数を定義するには、先頭をvoidにする(値が出ないのでreturn文は不要) 第4章 関数 12 手続き 定義 実行! void tetsuzuki() 何も入らず何も出ない関数も作れる void tetsuzuki() { printf("手続き\n"); } int main() { tetsuzuki(); tetsuzuki(); tetsuzuki(); 呼び出し return 0; } 手続き 手続き 手続き そのような関数は「手続き」と呼ばれている(これも関数です) よくやる処理を手続きにすると楽になる、というメリットがある 第4章 関数 13 練習問題2 関数f(x)が 𝑓 𝑥 = −𝑥 (𝑥 < 0のとき) (𝑥は整数) となるように定義し、入力されたxについてf(x)を 𝑥 (それ以外) 表示するプログラムを作りなさい 関数内でif文を使おう 第4章 関数 x > -4 4 14 練習問題2 解答例 定義 #include <stdio.h> int f(int x) { if (x < 0) return -x; else return x; } int main() { int x; printf("x > "); scanf("%d", &x); printf("%d\n", f(x)); 呼び出し return 0; 第4章 関数 } 15 関数のプロトタイプ宣言 #include <stdio.h> プロトタイプ宣言 int f(int x); int main() { int x; プロトタイプ宣言 int f(int x); printf("x > "); scanf("%d", &x); 関数には「プロトタイプ宣言」「定義」「呼び出し」がある プロトタイプ宣言は、こんな名前の関数がありますよ、と宣言する printf("%d\n", f(x)); 関数を呼び出す前に、定義かプロトタイプ宣言があればよい つまり、プロトタイプ宣言をすれば、定義を後回しにできる 定義 第4章 関数 return 0; 呼び出し } int f(int x) { return x + 1; } 16 練習問題3 練習問題2のプログラムでプロトタイプ宣言を使って、f(x)をmain関数の後に定義しなさい 第4章 関数 17 #include <stdio.h> 練習問題3 解答例 プロトタイプ宣言 int f(int x); int main() { int x; printf("x > "); scanf("%d", &x); printf("%d\n", f(x)); return 0; 呼び出し } 定義 第4章 関数 int f(int x) { if (x < 0) return -x; else return x; } 18 終わり お疲れ様でした 第4章 関数 19
© Copyright 2024 ExpyDoc