基礎プログラミング 第6回(2007年4月25日) 条件分岐(switch) switchとifの対応 条件演算子( ? : ) 模擬試験 1 ★練習課題2.3 解答例★ (0未満,9より上,それ以外) Console.WriteLine("input waitsec (less than 10)"); int waitsec; waitsec = int.Parse(Console.ReadLine()); if (waitsec < 0) // 0未満 { Console.WriteLine("正の数を入れてください"); } else if (9 < waitsec) // 9より上 { Console.WriteLine("0~9の整数を入れてください", waitsec); } else //それ以外 { Console.WriteLine("OK, let's wait {0} sec.", waitsec); System.Threading.Thread.Sleep(waitsec * 1000); Console.WriteLine("done."); } 2 switch 文の基本構造 switch (変数) // (数値or文字列)型の変数のみ { // つまり,==で判別可能な変数 case 値1: 値1の処理; break; // break は } までの case 値2: // switch文処理を 値2の処理; break; // 「抜ける」という意味 ・・・・ default: どれも違った場合の処理; break; } 3 break; を省略すること (暗黙的 フォールスルー)はできない switch (変数) { case 値1: 値1のときの処理; case 値2: 値1・2共通の処理; break; ・・・・ default: どれも違った場合の処理; break; } 4 goto case 値; で明示的に飛び先指 定すればOK (※無限ループに注意) switch (変数) { case 値1: 値1のときの処理; goto case 値2; case 値2: 値1・2共通の処理; break; ・・・・ default: どれも違った場合の処理; break; } 5 case に処理がない場合は 暗黙的フォールスルーが可能 switch (変数) { case 値1: case 値2: 値1・2共通の処理; break; ・・・・ default: どれも違った場合の処理; break; } 6 switch文の使用をあまり推薦しない 理由 あらかじめ決められたパターンに当てはまる かどうかを判定するだけなら,シンプルに記 述できる(&読みやすい)ので有効 gotoを使って凝ったことをすると,分岐が読 みにくくなる 昔は全部gotoで書いていたが,読みにくいプログ ラムが書けてしまうので近年は避けられている ダイクストラが提唱「構造化プログラミング」 「順次,分岐,反復」の3つの基本的な論理構造 で記述する方式 7 if 文で書いた じゃんけん判断 ★練習課題3.3解答例★ Console.WriteLine("じゃんけんの手を入力してくださ い\n (G:グー,T:チョキ,P:パー)"); String handStr = Console.ReadLine(); if (handStr == "G" || handStr == "g") { Console.WriteLine("グーですね"); } else if (handStr == "T" || handStr == "t") { Console.WriteLine("チョキですね"); } else if (handStr == "P" || handStr == "p") { Console.WriteLine("パーですね"); } else { Console.WriteLine("G,T,Pどれかをいれて"); } 8 switch 文で書いた じゃんけん判断 (String版) Console.WriteLine(" input (G:グー,T:チョキ,P:パー)"); String handStr = Console.ReadLine(); switch (handStr) { case "G" : case "g" : Console.WriteLine("グーですね"); break; case "T" : case "t" : Console.WriteLine("チョキですね"); break; case "P" : case "p" : Console.WriteLine("パーですね"); break; default : Console.WriteLine("G,T,Pどれかをいれて"); break; 9 switch 文で書いた じゃんけん判断 (int版) Console.WriteLine("じゃんけんの手を入力してください\n (0: グー,2:チョキ,5:パー)"); int hand = int.Parse(Console.ReadLine()); switch (hand) { case 0 : Console.WriteLine("グーですね"); break; case 2 : Console.WriteLine("チョキですね"); break; case 5 : Console.WriteLine("パーですね"); break; default : Console.WriteLine(“0,2,5どれかをいれて"); break; } 10 その他の分岐 (条件演算子 ?:) (条件) ? trueの処理 : falseの処理 ; http://msdn2.microsoft.com/jajp/library/ty67wk28(VS.80).aspx 例: int val = int.Parse(Console.ReadLine()); int abs = (0 <= val) ? val : (val * -1); // absにはvalの絶対値(absolute value)が入る // ※メソッド Math.Abs(val); と同じ結果 11 提出課題 (Report-C) Report-C(1)(2)(3)を出します 課題の内容は別紙「模擬試験問題」を参照 締切:4月28日(土)23:59 12
© Copyright 2024 ExpyDoc