落穂拾い (2) 落穂拾い (2) : <*1> は試験範囲 / <*2> は範囲外だが問題の中で現れる 配列の初期化 <*1> 初期化の時だけ、配列の要素をまとめて設定可能 配列の要素を一括して値を指定する事ができるのは、「初期化時」のみ # 配列の要素に「代入」する場合は、 # 要素毎に、繰り返しをつかって、個々に「代入」を行う必要がある 配列のサイズと、初期化するデータの個数の関係 配列サイズ < 初期化するデータ個数 => 誤り 配列サイズ >= 初期化するデータ個数 => 指定した分だけ初期化される 配列の初期化の時だけ、 配列のサイズを省略可能 => 配列のサイズは、自動的に、初期化する値の個数にそろえられる 多次元配列 <*1> 配列の配列としての多次元配列 => 配列の配列 int idary[5][7]; => int idary0[7]; int idary1[7]; int idary2[7]; int idary3[7]; int idary4[7]; => int idary00, iary01, ,., iary06; int idary10, iary11, ,., iary16; .. int idary40, iary41, ,., iary46; 合計 5 x 7 = 35 個の要素の一括宣言 => 基本、さらに、k 次元の配列が可能 「メモリモデル」との関係 メモリは 1 次元 => 多次元の配列の要素は、1 次元に並べられる ポインタ値をみればわかる int idary[5][7]; idary[0][0] idary[0][1] .. idary[0][6] idary[1][0] idary[1][1] .. idary[1][6] .. idary[4][0] idary[4][1] .. idary[4][6] | v idary[0][0] idary[0][1] ... idary[0][6] idary[1][0] idary[1][1] ... idary[2][0] ... idary[4][6] 論理演算 <*1> 論理式と条件判定 C 言語の条件分岐は、 if ( 条件式 ) { 条件式が成り立つ(真) の時 } else { 条件式が成り立たない(偽) の時 } 「条件式」は実は、整数値で、 0 の時に「偽」 0 以外の時は「真」 !! 特に、「真」を表す場合は、「1」にする事が多い !!! 「真」にするには、0 以外なんでもよいが、デフォルト値として 1 が利用される => 「整数計算」(論理演算)が可能 num == 0 は、 num と真偽値が逆転するが 特に、C 言語では 「!」演算子を使って、「否定」を表現する !!a + !!b は、論理和 => || !!a * !!b は、論理積 => && => 「条件」式の所で、「複雑な計算」が可能である 模擬試験 q.10, q.12, q.14 は、結果だけ、a.txt に記入する => 計算は、手でやっても、電卓でも、(それから..) プログラムでも構わない => 結果のみ評価 他の問題は、.c ファイルを提出 <残りは、試験には、直接はでないので、17 日に説明...> エラー処理 <*2> 標準エラーと exit 共用体 union 動的なデータ構造 整数型 queue の実装