[前回まで内容] 目標: C 言語のプログラムを作成できるようにする 「プログラミング」とは:プログラムをどうつくるか 命令を並べた物 命令 : 何等か行為を行う 例 : printf ( "Hello, World\n" ); -> メッセージが表示される s_midi_play( "ド" ); -> ドの音がなる 他にもいろいろ「何か(基本こと)」を行う -> いろいろある 色々な命令を使うには、その命令の API を知ればよい 順接:命令を並べる -> 命令が、その並べた順番に実行される 命令列に名前を付けることができ、 名前を呼ぶだけで、その命令列が実行できる 複雑(量が多いもの)を単純にできる(量を減らせる) -> 100 行の hello, 自分の名前 -> まとめることにより、簡単にできた 全体を部分にわけて、それぞれを考える 物を考えるときに、常に必要な考え方 「引数」(プログラムの一部をあとから決める仕組み) より、「まとめる」事が効果的になる。 「C 言語」の内容:プログラムをどう表現するか 「Hello, World」プログラム 簡単だけど、完全なプログラムで、これを変更する事により、 他のプログラムが作れる「ひな形」として利用できる 「おまじない」がたくさんあるが、説明あとまわし 「りようできるようにしよう」 関数の作り方 「コンパイル」など、プログラム実行の方法:プログラムをどう実行か エディタで foobar.c のように、拡張子が .c のファイルを作る cc -c foobar.c でコンパイル cc -o foobar.exe foobar.o でリンク ./foobar.exe で実行 !make というのもある midi の使い方 2017/04/28 の midi のフォルダにプログラムファイルを作る #include "s_midi.h" を、#include の下に挿入 printf と同様に、s_midi_play_doremi の引数に文字列を指定する 文字列で指定された音が鳴る 詳しくは、api.txt を読む == 再帰呼び出し ある関数の本体に、自分自身を呼び出す # 第一感、「自分を作るのに自分を利用するのは変」な気がする # でも、数学の世界では、普通に行われている # 例1 # 数列の漸化式 # a_1 = 1 # a_{n+1} = a_n + 3 # 初項が 1 で、公差が 3 の数列 # {a_n} の中の a_{n+1} を a_n を用いている # 例2 # 階乗 n! # 1 (n=1の時) # n! = { # n * (n-1)! (そのほかの場合) # 5! = 5 * 4! # = 5 * 4 * 3! # = 5 * 4 * 3! # = 5 * 4 * 3 * 2! # = 5 * 4 * 3 * 2 * 1! # = 5 * 4 * 3 * 2 * 1 # = 120 # 例3 # 帰納法 : 次の a), b) の両方がいえれば、任意の自然数 n で P(n) が成立 # a) P(1) 時成立する # b) P(k) の時成立するなら、P(k+1) の時も成立する # # 「再帰」は、「数学的帰納法」を、実現したもの