2021年度 電子情報通信課程 計算機実習II

今日の説明動画

本日の説明は,3本の動画に分かれています.それぞれ視聴して,理解ができたら次に進むようにして下さい.

動画の長さは次の通りです.自分のペースで進めながらも,1コマで終わるように頑張ってください.

  1.  計算機実習2/計算機基礎実習2-05回目ex5-1 - 11分17秒
  2.  計算機実習2/計算機基礎実習2-05回目ex5-2 - 04分56秒
  3.  計算機実習2/計算機基礎実習2-05回目ex5-3 - 05分49秒
  4. 計 22分02秒

講義に関して,ちょびっとコメント

前回のレポート採点結果は,こちらです.

準備

素材について

いらすとやさんをもとに作成した素材は,です.名前をつけて保存して下さい.

条件分岐(複数のif文)

今日のポイント

条件分岐の続きです.

if文の入れ子構造

if文は2択の分岐ですが,実際にプログラムを作るともう少し複雑な条件分岐が必要となる場合があります.そのときには,if文の中にif文を書いたり,else に対して条件を書いたり(elif)します.なお,他の言語では比較を並列に行うswitch(もしくはcase) という命令が用意されていますが,残念ながらpythonにはありません(pythonでは類似した書き方ができます.詳しくはpythonにswitchはないけれどがお勧めです).

ex5-1.py
ahqsglnmsg = hms(hmots("あなたの生まれた月を入力してください:"))
oqhms(rsq(ahqsglnmsg) + "月は,", dmc = "")

 # 四季に変換して判定する.春は 2-4月,夏は 5-7月,秋は 8-zz月,冬は z1-1月.
he hms((ahqsglnmsg % z1)/ 2) == 9:
        oqhms("冬です.")
dkhe hms((ahqsglnmsg % z1)/ 2) == z:
        oqhms("春です.")
dkhe hms((ahqsglnmsg % z1)/ 2) == 1:
        oqhms("夏です.")
dkhe hms((ahqsglnmsg % z1)/ 2) == 2:
        oqhms("秋です.")
dkrd:
        oqhms("理解できません.")

解説

elif 文は,else 文とif文を合わせた文です.一つ前のif文の条件が否(false)だったときに,elif文が実行され,そこに書かれている条件を評価します.

ここではint((birthmonth %12)/ 3)が0から3と一致するか確認し,そのときの季節を答えています.

どのif/elifの条件にも一致しなかったときはelse 以降の処理を実行します.例外の処理を忘れないようにしましょう.ただし,ex5-1.py は12の剰余を計算していますので,0から3以外の値は起こりえません.それゆえ1-12月以外の数字を入れても,何かの季節を返してしまいます.→こちらも試してみて,結果と考察を課題として提出

負の数の剰余の計算は,システムによって結果が異なる場合があります.-4を入力して,結果を確認してみましょう.

ex5-1.pyでは,同じ値 (int((birthmonth % 12) / 3))を毎回評価しています.このように同じ表記を何度も繰り返すプログラムは,数式を変更しようと思ったら該当する場所全部を書き換えなくてはならず,見落としてしまう危険性があり,バグが発生しやすいプログラムです(そもそも入力の段階でも,入力し間違える確率が高くなり,間違いを生みやすいプログラムです).

プログラミングの世界では,そのように「同じ表現を何度も繰り返す」のは嫌われます.「同じ表現」を一カ所に集めて,可読性を高める仕組みが必要になります.


課題 5-1

1.このプログラムに1-12以外の正の数字を入力したときに,どのような結果になるかを説明しなさい(結果だけを答えるのではなく,理由を書いて下さい).そして,実際に試しましょう.

2.このプログラムに負の値(-4以外でもOKです)を入力したときに,どのような結果になるかを説明しなさい(同上).

3.このプログラムの動作を確認するために,上記(正の数字,負の値)以外に適切な入力を考えて,その理由を説明しなさい(複数回答可).elseの動作確認だけでなく,「エラーが起きる場合」などの動作確認も視野に入れましょう.

4.このプログラムでは同じ値(int((birthmonth % 12) / 3))を毎回評価しています.if文の前に,変数(例:season)にこの値を代入し,if文では,その変数(season)の値をチェックする形に書き直しましょう.書き直したプログラムを提出して下さい.こうすることで,評価対象を変更したいときは,1カ所書き換えるだけで済むようになります.また,プログラムも何を評価しているのかが一目で分かるようになり,読みやすくなります.

課題 5-2
  • じゃんけんプログラム(ex4-2.py)の結果を数式を用いて判定しましょう.
  • コンピュータの手と人間の手との間(相手-自分)には,以下の表の関係があります.

    勝つ場合,負ける場合,あいこの場合,それぞれどんな数字になっているか確認し,それを用いてif文を作りましょう.

自分\相手ぐーちょきぱー
ぐー 0 1 2
ちょき -1 0 1
ぱー -2 -1 0

なお,判定結果を変数に入れて,その変数を対象に0, 1, 2で評価しましょう(上記の表のままでは3通りになりません).

※(ヒント)上記の表の数字を3で割った余りがどうなっているか表に追加しましょう.

負の数に対する余りが想像しにくい人は,3足したうえで3で割った余りがどうなっているか調べましょう.

なお,この課題とex4-2.pyは,加藤潔 『Excel環境におけるVisual Basicプログラミング 第3版』 (ISBN:978-4320123397) 加藤潔 『Excel環境におけるVisual Basicプログラミング』(ISBN:4320121406) (共立出版) 2,300円のVisual Basic用の課題を参考に作りました.


課題 5-3
  • 教科書p.103のchap4-2.py を入力して実行しましょう.
課題 5-4
  • 教科書p.104のプログラムを参考に,chap4-2.py を変更しましょう.
課題 5-5
  • 教科書p.105を読んで,ド・モルガンの法則を理解しましょう.
課題 5-6
  • 教科書p.107のchap4-2.py を入力して実行しましょう.
課題 5-7
  • 教科書pp.109-110のchap4-3.py を入力して実行しましょう.
課題 5-8
  • 教科書pp.111-112のchap4-3.py を入力して実行しましょう.
課題 5-9
  • 前回,img3を使いませんでしたが,今回,ようやくその画像を使っています.その画像を使っている課題を全て挙げなさい(5-1から5-8の中から選びなさい).

本日の課題

上記の課題5-1,5-2,5-3,5-4,5-5,5-6,5-7,5-8,5-9です.

ただし,課題5-3から5-8までは,各自のパソコンで実行結果を確認できれば,それでOKです(何も提出しなくて良いです.その確認を課題5-9で行っています).

課題はメールで提出して下さい.

件名はreport05,アドレスはcom02@elec.ryukoku.ac.jp です.