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 が返る−−−−−−−−−−−−−−−−−−−−−−−−+