2014/05/09 プログラミング演習Ⅰ 第4回 条件文 今日の目標:基本的な条件文使用法 1. 制御文 先週までは順に 1 文ずつ先頭から実行 →特定の条件の時だけ処理を変えたり(条件文) 同じ処理を指定回数繰り返したい(繰り返し制御文)これは来週の話題 2. 条件文で使う比較演算子(教科書 p.57) (1) 等値演算子 (2) = = : 等しい(例:a = = b) != : 等しくない(例:a != b) 比較の結果が正しければ真、正しくなければ偽が結果 となる。 重要:以下の二つの演算を明確に区別せよ。 (i) a = b;(b の値を a に代入) (ii) a = = b;(a と b の値を比較) 関係演算子 > : 大きい (例:a > b) < : 小さい (例:a < b) <=, >= : 等合を含めた比較 start yes a==b no a=a+1 end 3. 条件文 図1 (i) 基本条件分岐 if(教科書 p.76) もし(条件)なら これをやる この場合は条件が成立しないと処理しない 例: if (a = = b) a = a + 1; (図1参照) a と b が等しければ a に1を加算 条件が成り立つ時に複数の文を実行したい時は 複数文(ブロック)にしないといけない (教科書 p.74) 例: if (a = = b){ a = a + 1; b = b + 2; } (ii) if と else もし(条件)なら プログラミング演習第 4 回 start yes a==b no a=a+1 b=b+2 end 図2 1 2014/05/09 これをやる 成立しなければ こちらをやる この場合はどちらかの処理が行なわれる 例: if (a = = b) a = a + 1; else b = b + 2; (図 2 参照) (iii) 多方向分岐 if と else if もし(条件 1)なら 処理1を行なう そうではなくもし(条件 2)なら 処理 2 を行なう そうではなくもし… 例: if (a = = b) a = a + 1; else if (a > b) b = b + 2; else if (a < b) a = a + b; (図3参照) (iv) 多方向分岐 switch と case(教科書 p.87) if~else if と同じことを実現可能。変数の 整数値で処理を切り替え(整数のみ使用可) switch(変数){ case 値1: (処理 1,複数行可) break;(忘れずに。ないと次の文も実 start yes a==b no a=a+1 yes a>b b=b+2 a<b yes a=a+b end 図3 start 効してしまう) case 値 2 (処理 2,複数行可) break; (以下同様) default:(以上どれにも当てはまらない時) (処理 n,複数行可) } 例: switch (a) { case 1: a = -1*a; break; case 2: a = a+2; break; default: a = 0; } (図4参照) プログラミング演習第 4 回 yes a==1 no a = -1 *a yes a = =2 a=a+2 a=0 end 図4 2 2014/05/09 4. プログラムの表示のファイルへの保存方法 プログラムを実行してコンソールに表示されるテキストは script コマンドでファイルに保存 できる。script[enter]と入力してから[Ctrl-d]と入力して終了するまで、全ての表示が現 在のディレクトリの typescript というファイルに保存される。 例: $ script[Enter] スクリプトを開始しました、ファイルは typescript です $ ./lab1.exe Enter number:2 Result: 4 $ [Ctrl]+[d] スクリプトを終了しました、ファイルは typescript です 以上で今までの表示がファイルにも保存されている。最後に[Ctrl]+[d]([Ctrl]キーと[d] のキーを同時に押す)を入力すること。 $ script ファイル名[Enter] と入力するとファイル名のテキストファイルに出力を保存できる。 5. テキストファイルのプリンタ出力 jp2lpr ファイル名 または u2ps ファイル名 例:samp2.c をプリンタ出力 jp2lpr samp2.c [Enter] u2ps samp2.c [Enter] 6. 本日の演習 (1) キーボードから整数値を入力し、正なら自分の名前を日本語で、それ以外は何も表示し (2) (3) (4) ないで終了するプログラムを作りなさい。if 文を使いなさい。 (1)のプログラムを改良して、入力が 10 より大きい場合(10 含まず)自分の名前を 日本語で、10 より小さい場合(0,負含む)英語で、10 の場合何も表示しないで終了す るプログラムを作りなさい。else if を使いなさい。 キーボードから 1 から 12 までの整数を入力する。入力に応じて以下の英語の月名を表 示するプログラムを switch 文を使って作成せよ。1 から 12 までの数字でない場合は そのような月がないことを警告表示せよ。 1:January, 2: February, 3: March, 4:April, --- 11: November, 12: December 表示例: $ lab4_3.exe[Enter] Enter a number:3[Enter] 3: March $ lab4_3.exe[Enter] Enter a number:13[Enter] 13: No such month! (3)のプログラムを改良して、入力が正なら月を日本語で、負なら英語で表示するプロ グラムを作りなさい。また 13 以上、0,-13 以下の入力はそのような月がないことを 警告表示せよ。 プログラミング演習第 4 回 3 2014/05/09 表示例: $ lab4_4.exe[Enter] Enter a number:3[Enter] 3: 3 月(弥生) $ lab4_4.exe[Enter] Enter a number:-3[Enter] 3: March (5) (6) (5)発展(余裕がある人はやってみてください) $西暦 4 桁を入力し、以下のように和暦を判定し、和暦出力するプログラムを作りなさ い。 ~1867:明治以前 1868~1911:明治 1912~1925:大正 1926~1988:昭和 1989~:平成 表示例: $ lab4_4.exe[Enter] Enter a year:1920[Enter] 1920: 大正 9 年 $ lab4_4.exe[Enter] Enter a year:1926[Enter] 1926: 昭和元年 $ (2)と(4)(できた人は(5)も)のリストと実行時の表示印刷(script 使用)を提出せよ。 提出期限は来週水曜(5/14)の 16 時までとします。電情系事務室内のプログラミング演習用 メールボックスに提出してください。 注意:提出レポートで明らかに動作しないプログラムは再提出してもらうので、十分デバッグ、 動作確認すること。再提出、期限外はその度に評価を1ランク下げるので、注意。また、未提出、 ならびに再提出を未提出のものは 0 点とする。必ず学生番号、氏名、出題日、課題番号を各プログ ラム第 1 ページ先頭にコメント行を使って明記のこと。複数枚にわたる場合はホチキスでとめること。 簡単な課題なので、必ず自分で演習に取り組むこと。 プログラムにはコメントを十分記入し、インデント、改行を適当に入れて読みやすいプログラム記入 を心掛けること。 動作しないプログラム、指示どおりの機能しないプログラムの他、適切なコメントやインデント のない提出プログラムも再提出の対象となるので注意。 前回のレポートが再提出とされた場合、再提出とされた元のレポートの上に修正したレポートを一 緒に綴じて提出のこと。今週のレポートと再提出のレポートは一緒に閉じないこと。再提出の期 限も来週水曜(5/14)の 16 時までとします。プログラミング演習用メールボックスに提出し てください。 7. 来週の予習 教科書(明快入門 C)の第 5 章の 37、38,39 節をもう一度読んでおくこと。 プログラミング演習第 4 回 4
© Copyright 2024 ExpyDoc