前回(2017/05/12)の内容 条件判定をしてみよう 作成: 状況に応じて「複数の命令のどちらか一方」を実行したい 表現: 二つの命令を if( 条件 ) { 一方 } else { 他方 } とする / 条件の所に「!strcmp(変数,文字列)」を入れる 再帰呼出しをしてみよう 作成: 「全体」を実行するのに、「一部」と「残り」で済ませたい 表現: 関数の定義の中で、自分自身を呼び出す(再帰呼出し) 順接 作成 : 命令を並べると、その並べた順に命令が実行される 表現 : 命令1 命令2 ... 命令n -> 命令1, .., 命令n の順に実行される 三つの「命令の組み合わせ方」(順接、条件判断、再帰呼び出し)だけあれば、 原理的に計算可能なものは、すべて計算可能 (万能性がある) 「反論」:足し算さえできないのに、「万能」? <= 1進数の足し算を作って見せた 普通の数の足し算はまだできない(教えてない) けど、「1進数」という考え方を使えば、「足し算をエミュレーション」できる エミュレーション : 直接はそれができないが、別の世界で、それと対応する事を行う事 ある世界の問題を、別の世界の問題に変換して、そこで解く -> 数学の基本的な考え方=計算機でのプログラミングの考え方 今日の内容 1. turtle graphics 画面上の「亀(turtle)」に命令を与えて、図を描画する(grahics) 亀 : 自分のいる場所と向きをもっている 最初は、中心で、上を向いている 亀にできる命令 * s_turtle_turn : 向きを 45 度だけ時計まわりに向きを変える 二回呼ぶと、(最初の向きに対して)右を向く 8回呼ぶと、一周して、元の向きになる * s_turtle_move : いま居る所に足跡を残し、次に進む 自分の向いている方向に一歩だけ進む 上を向いていたら、y が一つ増える 右を向いていたら、x が一つ増える 左下を向いていたら、x,y がともに一つ減る * s_turtle_jump : いま居る所に足跡を残さず、次に進む 足跡を残さず、一歩進む * s_turtle_stop : 亀プログラムの終了 : return 0 の前に呼び出す プログラムの終了時に呼ぶと、画面が消える Turtle Graphics のプログラムは、 c:/usr/c/20170421/turtle の中に保存する 実行するときには make BASE=ファイル名 test とすると、コンパイル、リンク、実行までやってくれる 2. make の使い方 (cc などと同じ内容:できないと困る)