1 / 26

多岐選択 (switch 文 ) と 繰り返し構造 (do-while 文、 while 文 )

第6回[平成16年5月25日(火)]:PN04ー06 . ppt. 多岐選択 (switch 文 ) と 繰り返し構造 (do-while 文、 while 文 ). 今日の内容. 1 構造化プログラム、選択構造 (if 文 ) (復習) 2 論理演算子と演算子の優先順位 3 多岐 選択構造 (switch 文 ) 4  繰り返し構造 (do-while 文、 while 文 ) 5  演習. 皆さんのレポートから. オープン利用室の CPad の入っているパソコンの台数を増やしてほしい → センターに問い合わせてみます。

cirila
Download Presentation

多岐選択 (switch 文 ) と 繰り返し構造 (do-while 文、 while 文 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6回[平成16年5月25日(火)]:PN04ー06.ppt第6回[平成16年5月25日(火)]:PN04ー06.ppt 多岐選択(switch文)と繰り返し構造(do-while文、while文) 今日の内容 1 構造化プログラム、選択構造(if文)(復習) 2 論理演算子と演算子の優先順位 3 多岐選択構造(switch文) 4 繰り返し構造(do-while文、while文) 5 演習

  2. 皆さんのレポートから • オープン利用室の CPad の入っているパソコンの台数を増やしてほしい → センターに問い合わせてみます。 • ギリギリまで授業をすると、次の講義が6号館なのでつらい → 数分前に終了するのを目標としましょうか。あるいは、開始を5分ぐらい早くするとか。 • 比較的簡単でした。あと、今日ぐらいの授業のスピードがちょうど良いです。 • 今日は時間内に終わったので良かったです。 • 授業が長いです。早く終わりたい → 90分を有効活用 • 内容が多い、資料は3枚(18スライド)ぐらいが良い。 • 簡単だったような難しかった様な感じで、何とも言い難かったです。とにかくがんばります。 • 難しそうに感じたけれど、コツをつかめば簡単そう。

  3. 皆さんのレポートから pptの印刷無し5人 • Ifは高校でやった時からよく分からなかったから、しっかり復習して理解したいと思った。 → 高校で習ったから分かる、習わなかったから分からない、というのはおかしい。 → 大学で新たに学習する意気込みで勉強しよう • If文では、何通りもの答えがあったりするから、少し頭が混乱してしまう。 → まず基本的な考え方を理解する • If文をもっと詳しく知りたいと思いました。elseの後ろなどにセミコロン(;)を付けないようにしたいと思います。 • ちゃんと理解できて良かった。If文と3項演算子をしっかり使い分けるようにしたい。 • Ifが入ってきたので、プログラムが本格的になってくるので、気を引き締めたやりたい → 油断大敵ですよ

  4. false true 判断 B A B false 判断 true A 復習 構造化プログラミング • 順次構造 • 選択構造 ・二者択一、複数場合分け ・if文、switch文 • 繰り返し(反復)構造 ・定数回繰り返し、前判断、後判断 ・for文、while文、do-while文 どの構造も入口と出口が一つだけ

  5. true false 条件 文1 文2 復習 選択構造 • 条件判断によって処理を選択していく構造 • 判断の結果は非0 : true(Yes) または0 : false(No) if (条件)文1 //trueelse文2 //false 菱形の中:0又は非0(1)の結果を持つ式

  6. 復習 関係演算子と等価演算子(p.42-) • 関係演算子:値の大小関係を比較する   関係成立:1(true)、不成立:0(false) a <b aがbより小さいなら 1(条件成立) a <= b aがbより小さいか又は等しいなら1 a > b aがbより大きいなら 1 a >= b aがbより大きいか又は等しいなら 1 • 等価演算子:値が等しいかどうかを判定する •   関係成立:1(true)、不成立:0(false) a == b aとbが等しいなら 1 a != b aとbが等しくないなら 1

  7. 論理演算子(p.52-) p,q は 非0(true,1)又は0(false)とする • 論理否定演算子(!) → !p p が非0(true,1)ならば !p は 0(false) 0(false) 1(true) • 論理AND演算子(&&) → p && q pとqが共に非0(true,1)の時のみ 1(true) • 論理OR演算子(||) → p || q pとqのいずれかが非0(true,1)なら 1(true) 演算子の優先順位:教科書177頁を常に参照

  8. 論理演算:真(○)偽(×)値表 ○ × ○ × ○ × × × ○ ○ ○ × × ○ × ○ × × ○ ○ ○ ○ × ×

  9. 演算の優先順位 177頁

  10. 演習 次のif文で、年齢(age)が20歳以上かつ所持金(money)が1000円以上の場合、に変更してみよう if () {puts("You can drink beer"); puts("You can drink wine"); } else puts("You can drink juice");

  11. 演算子の優先順位 a=1; b=2; c=3; d=4; < > <= >= == != a != b < c 0(false) && 1(true) || a <= b && c == d 0(false) 1(true) 0(false) a == b >= c || d 1(true) 0(false) 0(false) 値4は非0(true)

  12. 演習(1) a,b,c,d,L を以下のような型と値を持つ変数とするとき、次の論理式の値を求めよ。 double a = 5.7 ; int c = 7 ;double b = 8.2 ; int d = 4 ;char L = ‘W’ ; 変数宣言の時初期値を入れることが出来る(初期化) (1) a < b (2) L == ‘$’ (3) ‘q’ < ‘r’ (4) -(a-b) > 2.0 (5) (c <= d) || (a == b)

  13. 演習(2) a,b,c,d,L を以下のような型と値を持つ変数とするとき、次の論理式の値を求めよ。 double a = 5.7 ; int c = 7 ;double b = 8.2 ; int d = 4 ;char L = ‘W’ ; (6)!(5 == d + 1) (7) c+d == (c ? 10 : 11) (8) 1 || b <= 8 (9) (a > 0) && (c != 7) (10) c*d == L - 59

  14. 演習(3) 次の数学上での条件を論理式で表現せよ (1) x = 5 (2) x ≠ 0 (3) x ≧ 2 (4) 0 < x ≦ 10 (5) x < 0 または x > 10 (6) xは負 または 5 以上で 10 を除く値

  15. 演習(4) 西暦 y 年が閏年かどうかを表示せよ ・[yが、4で割り切れて100で割り切れないか、  400で割り切れる年が閏年である] ・『「 y が 4 で割り切れる」かつ「 y が 100 で割り切れない」』または『 y が 400 で割り切れる』 if() puts("閏年だ"); else puts("閏年じゃあない"); ( && ) ||

  16. 処理A 値1 処理B 値2 値3 処理C 処理D その他 多岐選択(p.54-) break • 複数の選択肢から選ぶ • 式の値によって処理を選択 • 選択肢は幾つあっても良い • 以下の処理を避けるためにbreak文を使う • 該当する選択肢が無い場合は、その他の処理を実行 • その他は無くても良い

  17. switch文 • ラベルは式の取りうる値 • breakにより switch文を抜ける switch (式) { caseラベル1 :文1break; caseラベル2 :文21 文22 break; caseラベル30 : caseラベル31 :文31 caseラベル32:文32 break; : default : 文n [break;] } defaultの部分は省略可能

  18. switch文の例 • monthを調べて、日数を daysに与える • monthが 1~12 以外の時は ‘入力ミス’と出力する switch (month) { case 1:case 3:case 5:case 7: case 8:case 10:case 12: days = 31;break; case 4:case 6:case 9:case 11: days = 30; break; case 2: days = 28; break; default : printf("入力ミス");break;}

  19. 演習 • 入力された 年(year) と 月(month) から、その月の 日数(days) を与えるプログラム(部分)を switch文 で書け • yearと monthは入力済みとする • monthを調べて days を与える • ただし、month が 2 の時は、 year の値によって、閏年かどうかを判断し、 days を与える

  20. switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: _________; ______ case 4: ________________________days = 30; ______ case 2:if ( _____________________ ____________________ _____________________ ) days = 29; else days = 28; _______ _________ printf("月の入力ミス"); }

  21. 不定数回の繰り返し(反復)構造 ・不定数回反復とは   繰返しの回数が、前もって分からない反復 ・継続条件式が満たされている間は繰り返す do 文 while (条件式); do {文1 ... 文n}while (条件式); 実行したい文が複数ある→複合文,複文 while(条件式)文 while (条件式){文1 文2 ... 文n}

  22. k=1; printf("A"); k = k + 1; true k<=20000 false 反復を繰り返す条件 do-while文 • 継続条件式が真(true)の間は文繰り返す do 文 while (条件式 ); do{ 文1 ... 文n } while (条件式 ); k = 1; do { printf("A"); k = k + 1; } while( k<=20000);

  23. 反復を続ける条件 k=1; false k<=20000 true printf("A"); k = k + 1; while文 • 継続条件式が 真(true)の間は文を繰り返す while (条件式)文 while (条件式){文1 文2 ... 文n} k = 1; while (k<=20000 ) { printf("A"); k = k + 1; }

  24. 今回の課題 • キーボードから負の整数が入力されるまで、整数を入力しそれらを個数を求める部分を書け。(do-whileの場合とwhileの場合を書く) int a, count=0; do { printf("整数=>"); scanf("%d",&a); if ( ) count = ; } while ( ); 提出用紙に質問・意見・感想・提案等も書いて下さい

  25. 今回の課題(do-while場合の別解) int a, count=0; printf("整数=>"); scanf("%d",&a); if ( a >= 0 ) do { ; printf("整数=>"); scanf("%d",&a); }

  26. 今回の課題(whileの場合) int a, cnt=0; printf("整数=>"); scanf("%d",&a); while () { ; printf("整数=>"); scanf("%d",&a); } いずれの場合も結果出力の部分は省略した

More Related