2009 年度「計算数学」掲示の写し 2009-10-25


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


岩瀬順一