[前回] 整数型の話 整数値 ( .... -2, -1, 0, 1, 2, ... ) 集合としては有限集合 ( -2^{31} 〜 2^{31}-1 ) => コンピュータでは、表現の対象を内部の数値でコーディング 内部の数値:bit の並び(32 個) で表現 bit : 0/1 ( 2 通りの区別 ) 32 bit => 2^{32} 通りの区別(集合の要素) => 有限でしかない !! => ふつうに整数の四則演算などの整数の性質をもったモノ(int 型の値)が C 言語内の利用できる それまで、C 言語で「扱えるモノ[データ/値]」には、 最初に「文字列」、次に、「文字列の一部」としての「文字」 前回 : 「整数」が追加された # 実は他にもある「例 : 浮動小数点型 : 実数に対応」 処理の対象は「文字列」しか扱わない => 色々なところが決め打ち # 例 : 関数の引数は、「char *」とかけばよい # 整数型がはいってきた => 「int」とかく場面がでてきた これまでの講義方針 C 言語を学ぶ(講義の本来の目的)ではなく、C 言語に慣れる これまで(一周目) : C 言語の世界を一通りめぐる事やってきた -> 二週目は、「C 言語を理解するための『系統的な』説明」したい 整数型 定数表現(リテラル) : 数字並び (例 : 123 => 「百二十三」を表す ) # cf. "123" は、1,2,3 の文字が並ぶ、文字列 # '3' が、「3」という文字 # 123 は、整数値の123 になる 演算 : 四則演算(+,-,*,/)と、余り(%)ができる 比較演算 ( ==, !=, >, <, >=, <= ) 宣言(関数の引数): int # cf. 文字列の時は、「char *」だった... 出力 : (標準的な方法はあるが、それは説明せず..) : print_number => すでに、知っている文字の出力関数 putchar で、自分で作った [今日の内容] コマンドライン引数 プログラムを実行するとき、(実行ファイル名を指定する、そのあとに、追加で) コマンドライン引数(引数となる文字列を空白で区切ったもの)が指定できる 例 : ./p-003.exe abc 123 => 実行ファイル p-003.exe に、二つの引数 abc, 123 を指定 C 言語では、コマンドライン引数は、 main 関数に渡される、argc (引数の個数+1) と argv ( argv[n] とすると、n 番目に に指定した引数(文字列)を表す ) によって、参照できる => プログラムへの入力(文字列)として引数が利用できる # cf. 入力は、文字(getchar())しかやっていない Hanoi の問題 コマンドライン引数 => argc, argv の使い方 構造的帰納法の考え方 Hanoi(N) => Hanoi(N-1) move(N) Hanoi(N-1) # 再帰呼び出しが、二か所でおきている # cf. これまでの「繰り返し」のためには、 # 再帰呼び出しが一か所で済んだ