試験の注意 場所と環境は、何時も通り 時間は、9:00 開始で、12:10 まで 開始 30 分頃、一応出席 ( 答案が提出されていれば、無くてもよい ) 持ち込みはなんでも可能 試験中は、私語厳禁 解けない問題がでたら、指摘すれば、「無条件に正答扱い」する 自分の番号のファイルをダウロードする ダウンロードしたら、まず、展開する 回答は、基本 1 問 1 ファイルで答えて提出 ただし、いくつかの問題は、ファイルを提出するのではなく QQQQ-a.txt に書き込んで、まとめて提出 [前回の話] 二周目に入っていて、前回は、 関数の作り方 数学的な「式で定義される」関数の作り方 関数の中で 「return 式」という命令を実行すると、「式の値」が「関数値になる」 制御構造 : 条件分岐 ( if 構文 ) / 繰り返し ( 再帰 ) !! 制御構造 : 命令を組み合わせ(て、新しい機能を作)る方法 !! 順接 : 二つの命令を組み合わせる !! => 順接と、条件分岐、繰り返しが、「制御構造」の代表、これで十分 if 構文を使うと、二つ命令のうち、条件に合った、一つだけを実行できる 再帰呼び出し ( 自分自身を呼び出す .. ) を利用すると、 「同じ命令を何度も実行する事」(繰り返し)ができる 一般の(整数値もつ) 「数学的な関数」は、どれも、C 言語で記述可能 例題: n 番目の素数を出力する nprime( n ) をつくってみたい nprime( 1 ) => 2 nprime( 2 ) => 3 nprime( 3 ) => 5 いきなり、n 番目の素数を求める関数を作るのは、難しい => すこしずつ、関数を作って、それを組み合わせる事で、実現できる # すこし作っては、テストして、その部分がうまくゆくことを確認しながら [GT 法] Generate and Test 法 (しらみつぶし法) 答えの候補を作って、それが、答えかどうかを確認する事で答えを求める -> 十分に早い(それが許される..)なら、「全部試してしまえばよい」 例: 方程式 x^2 - 15x + 50 = 0 の解を一つ求めたい (x-5)(x-10)=0 => x=5,10 事前に「この方程式の解は、正の整数である事がわかっている」ものとする => G : x = 1, 2, 3, ... と作ってゆく T : できた答えの候補 x が、実際に答えかどうかを判定する GT法は、効率が悪い => コンピュータが十分に速いなら、答えが出せてしまう 数学の問題 : (G は暗黙の集合 [cf. 自然数]) で、 T (答えの条件) を与えた形になっている => GT 法で(原理的に..)解けてしまう GT法は、答え出す条件が数学的に与えられる 方程式 x^2 - 15x + 51 = 0 => これの解は整数じゃなくなるので、GT 法が止まらなくなる <= 数学的に「答えが整数である事が(事前に)証明されている」必要がある プログラムを書く上で、数学ができないと、 そもそも問題が解けなかったり、 解けたと思っても、それが正しい答えかどうかが判定できない [模擬試験] 答案の採点 => 作り方に関して、指定がなければ、結果だけが一致していればよい q.00 は、もちろん、繰り返し(再帰)を前提にしているが、 printf を 100 行書いても OK 一応、課題同じように、雛形となる半完成品をつけるが、それを使う必要もない 0 からつくってもよいし 事前に準備した、ファイルを利用してもよい 習っていない事をつかってもよい q.19 は、当日も、全員、同じ問題が、そのまま出るので、 予め、解答を準備しておいてもよい。 今日の課題 何か一つ提出する [課題について] 試験当日(を含む、その)日まで、提出されてものは、採点の対象とします。 CST-Portal II に出題されていても、講義でやらなかった課題は、提出する必要はありません => 講義でやった、課題の答案例が、Web で確認できるので、それで、提出が必要かどうかを判断してください。