プログラミング論 第十二回 ある条件の時だけ処理させよう (条件文) 本日の内容 論理演算子 switch文を使ったプログラミング 参考 – フローチャート,PAD,TSチャート 関係演算子,等価演算子, 論理演算子の優先順位 高 優 先 順 位 低 ! <, <=, >, >= ==, != && || 同じ優先順位(式の左側から順に演算) 演習 3つの整数値を入力して,最大値を求め,出力 するプログラムを作りなさい。 – 手順: 3つの変数,a, b, cの値を入力する。 はじめにデータaを最大値maxと仮定する。 データbとmaxを比較して,bがmaxより大きい場合はbを maxとする。そうでない場合は何も行わない。 データcとmaxを比較して,cが大きい場合はcをmaxとする。 そうでない場合は何も行わない。 入力データと,最大値を表示する。 ensyu35.cを完成させなさい。 解説 -3つのデータ中の最大値を求めるa b c どれが一番大きいのだろう?? とりあえずは,最大値が入る箱を用意しておいて,っと。。 分からないから,仮に a MAX a が最大としよう。 a このMAXは仮の値だから,他の値と比較しないと。 MAX MAX 解説 -3つのデータ中の最大値を求めるでは,最初に b if a MAX b と比較しよう。 MAX箱の中身は の方が大きい! の方が大きい! b にしよう! a MAX b MAX そのままで変化無し。 解説 -3つのデータ中の最大値を求める最後に,残った c if c と比較しよう。 MAX箱の中身は の方が大きい! a or b MAX c にしよう! c MAX a or b の方が大きい! MAX そのままで変化無し。 switch文を使ったプログラム 式の値(整数値)によって処理を分けるこ とができます。 if文のような2分岐ではなく,多分岐のプ ログラムを書く事が出来ます。 – if文:「真ならば処理1,偽ならば処理2」 – switch文:「式の値が,1ならば処理1,2なら ば処理2,3ならば処理3,・・・」 if文で表す事も出来ます。 switch文を使ったプログラム if文とswitch文の比較です。同じ働きをします(switch.c)。 nが1の場合(case) switch(n){ case 1: printf("n=1\n"); break; case 2: printf("n=2\n"); break; case 3: printf("n=3\n"); break; default: printf("その他\n"); } if(n==1){ printf("n=1\n"); } else{ if(n==2){ printf("n=2\n"); } else{ if(n==3){ printf("n=3\n"); } else{ printf("その他\n"); } } } switch文を使ったプログラム フローチャートは次のようになります。 switch(n){ case 1: printf("n=1\n"); break; case 2: printf("n=2\n"); break; case 3: printf("n=3\n"); break; default: printf("その他\n"); } nが1 真 “n=1” 偽 nが2 真 “n=2” 偽 nが3 偽 “その他” 真 “n=3” switch文を使ったプログラム break文が無い場合はこうなります。 真 nが1 switch(n){ case 1: printf("n=1\n"); case 2: printf("n=2\n"); case 3: printf("n=3\n"); default: printf("その他\n"); } “n=1” 偽 真 nが2 “n=2” 偽 真 nが3 “n=3” 偽 “その他” もしnが1だったら,すべて のprintfが実行されます! switch文を使ったプログラム switch.cを実行して,switch文の働きを確 認しましょう。 break文が無い場合のプログラムの動き について確認しましょう。 ensyu36.cのようなプログラムも書けます。 動作を確認してください。 流れ図の描き方 フローチャート以外にも様々な描き方があります。 真 処理1 偽 真 条件 条件 条件 処理1 フローチャート 処理2 偽 処理2 PAD 真 偽 処理1 処理2 TSチャート 練習問題1 rensyu1.cは,「入力された秒数を時間, 分,秒に変換する」プログラムです。 これを修正して,「入力された秒数を,年, 日,時間,分,秒に変換する」プログラム としなさい。ただし,1年は365日とします。 練習問題2 あるテストの点数を、三人分キーボード から入力して、その平均値を出力するプ ログラムを作ってください。 平均値は、小数第一位まで表示してくだ さい。
© Copyright 2024 ExpyDoc