2004 年度「計算機基礎論3B」 2004-11-26

課題1

あなたのユーザ id の下二桁を(十進整数とみて) 100 で割ったものに 1 を加えた数を公比とし、 ユーザが入力した数を初項とする等比数列の初めの 10 項について、 「第…項めは…です」のように出力するプログラムを書きなさい。

正しく動くものができたら、プログラムだけをメールで送ってください。 その際、Active!Mail のメール作成画面の「添付ファイル」 *ではなく* 本文の中にプログラムを貼りつけること。 (メニューの「貼り付け」が使えなければ、 最初のページの「連絡・補い」に書いたように、 マウスの両ボタンの間にある灰色の豆のようなものを押してみる。 「添付ファイル」を使うとどうなるかは、 興味のある人はメールの練習として試してみるとよい。)

宛て先は私(岩瀬)の実習用アカウント cf5326@mailedu1.ipc.kanazawa-u.ac.jp です。 件名は「kadai01」(←全て半角文字、アルファベットは小文字、 途中にスペースをいれない)としてください。 自分の学籍番号、氏名(として大学に届けてあるもの) をメールの *本文内にも* 書くのを忘れずに。

私はメールを受けとったらプログラムを読み、コンパイルし、 動作をチェックして、 「OK」なり「やり直し!」なりの返事をメールで送ります。 「やり直し!」だった人は「OK」 がもらえるまでやり直して再提出しないと課題を提出したことにはなりません。 「OK」「やり直し!」の別は、理学部数学科の掲示板にも出します。

締め切りは 2004 年 12 月 10 日(金)12 時 50 分とします。 これは、 その日時までに私にメールを送るように、という意味です。 締め切り間際にメールを送ってくれた場合は私からの返事は締め切り後になるかもしれません。

※ 締め切りまぎわに出して「やり直し!」だとまずいので、 できれば早めに提出するように。

※ タブは emacs では 4 カラムごとに、 Active!Mail のメール作成画面では 8 カラムごとに展開されるので、

    for (i = 0; i < 10; i++) {
        ....
    }
を貼りつけると
        for (i = 0; i < 10; i++) {
                ....
        }
に変わる。 しかし、気にしないこと。

関数の自作

C言語では、自分で関数を作ることができる。 K&R2 §1.7, 1.8 も合わせて読むこと。

次のプログラムは K&R2 §1.7 からの引用である。 (一部変更してある。)

#include <stdio.h>

int power(int base, int n);         /* プロトタイプ宣言 */

int main() {                        /* 関数 power() をテストする */
    int i;

    for (i = 0; i < 10; i++) {
        printf("%d %d %d\n", i, power(2, i), power(-3, i));
    }
    return 0;
}


int power(int base, int n) {        /* base の n 乗を返す (n >= 0) */
    int i, p;

    p = 1;
    for (i = 1; i <= n; i++) {
        p = p * base;
    }
    return p;
}

※ 「power(2, i)」などとしてその値を計算させることを 「関数 power() を呼び出す」と言うときがある。

多くの関数は、cos(0) が 1 であるように、値をもっている。 その値のことを「返り値(かえりち)」と言う。 「int power」の int は、 power() の返り値が int 型であることを示している。

関数を使うときには power(x,y) のようにして使うが、 この xy のことを「引数(ひきすう)」と言う。 この power() の場合は x, yint 型と決めたので、 「関数 power()int 型の引数を二つとる」と言ったりする。

関数の定義のところでも x, y と書いてもいいのだが、 引数の意味がわかりやすいように、 最初の引数を base, あとの引数を n と呼ぶことにしよう。 「int power」 のあとの小カッコの中には引数の型と名前を、 引数ごとにカンマで区切って書く。 この例では第一引数は int 型で名前は base, 第二引数も int 型で名前は n, ということになる。

※ 引数には「仮引数」と「実引数」の区別があるがここではふれない。

その次の行の「int i, p;」は、 関数 power() の中で使う変数の宣言である。 いままで main() の中で宣言していたのと全く同じスタイルである

そのあとの部分で basen 乗を計算し、 最後の「return p;」でその値を返す。 return のうしろに書かれた式の値がこの関数の値になる、 という約束である。

(この項、続く)


岩瀬順一