2009 年 10 月 25 日 日曜日
前回やった関数の自作については、理解度がまちまちだったようですが、 次回は先へ進みます。 この部分のむずかしさは、パソコンを前にしなくても、 プリントを見て考えることで乗り越えられるものですので、 各自で、次回までに理解しておいてください。 (もちろん、質問には応じます。 383 か 472 号室まできてください。)
なお、もしかしたら次のような説明がわかりやすいかも知れません。
x が 3, y が 5 で main() 内の power(x,y) にさしかかったとします。 すると、power() へとび、 base が 3, n が 5 で動き始めます。 power() の終わりにある returen p; にさしかかったとき、 p の値は 243 です。ですから、 main() 内の power(x, y) が 243 に置き換わって出力されます。
「なぜそのように main() から power() へとぶのか?」 「なぜそのように値が返るのか?」という質問には、 「C言語がそうできているから」としか答えられません。 そう理解してください。
(これと同じ説明を、この授業のホームページ、 およびインターネット上の私のページ(「岩瀬順一」で検索可能) においておきます。)
岩瀬順一
#include <stdio.h> int power(int base, int n); /* プロトタイプ宣言 */ main() { int x, y; printf("0 以上の整数を入力してください.\n"); scanf("%d", &x); ← ここで 3 が入力されたとする。x は 3 printf("0 以上の整数を入力してください.\n"); scanf("%d", &y); ← ここで 5 が入力されたとする。y は 5 3 5 3 5 printf("%d の %d 乗は %d です.\n", x, y, power(x, y)); ~~~~~~~~~~~ | ↑ 243 が印字される | +−−−−−−−+ +−−−−−+ | | | | | printf("%d の %d 乗は %d です.\n", y, x, power(y, x)); | | } | | | | +−−−−−−−−−−−−−−−−−−−−−−+ | ↓ ここへとぶ | 3 5 | int power(int base, int n) { /* 以下、関数 power() の定義 */ | int i, p; | | p = 1; | for (i = 0; i < n; i++) { | p = p * base; | } | return p; | } 243 が返る−−−−−−−−−−−−−−−−−−−−−−−−+