一覧へ 情報Ⅰ (3) 第6回 | プログラムの基本構造 2
情報Ⅰ (3) コンピュータとプログラミング | 第6回

プログラムの基本構造 2

条件で分かれることと、同じことを繰り返すこと。この 2 つが入ると、プログラムは急に賢く見える

50分 | キーボードがあるとよい
教師用メモ

準備 教室コードは新しいものにする。「教師」を押す。Python はページの中で動く。前回のコードは端末に残っている。

時間配分 前回まとめ・目標 4分 / 節1 分かれる 14分 / 節2 繰り返す 14分 / 節3 止まらない 12分 / まとめ・自己評価・ふりかえり 6分

教科書: 新編情報Ⅰ 26 プログラムの基本構造 2(p.74)。Python。

この回の評価(指導要領 (3) ア(イ) イ(イ)。分岐構造と反復構造。単元設計は 単元設計のページ)

  • 知識・技能 if・else、for・range、while の書き方と、字下げ(インデント)の意味を説明している(体験01〜03)
  • 思考・判断・表現 3 の倍数判定・Child/Adult・偶数の表示を、フローチャートの形からプログラムに書いて動かしている(体験01・02)。無限ループの原因を見つけて直している(体験03)
  • 態度 動かないときに条件と繰り返しの回数に目を向けて直そうとしている(ふりかえり)

ふりかえりの枚の自己評価の分布を見て、「まだ」が多い目標を次回冒頭で拾い直す。

前回のまとめ

表示・演算・変数で、上から順に動く

print( )+ - * / %x = x + 5→順次構造

前回のプログラムは全部、上から下へ一直線だった。第4回のフローチャートには「ひし形」(判断)と「戻る矢印」(繰り返し)があった。今日はその 2 つを書く

x が偶数なら Guusuu、そうでなければ Kisuu。どう書くか

教師用メモ

前回「まだ」が多かった変数を、x=x+5 を 1 問やって拾う(2分)。

今日の目標

授業の終わりにできるようになること

01
if・else で条件によって処理を分けるプログラムを書ける
02
for・while で処理を繰り返すプログラムを書け、2 つの違いを言える
03
無限ループが起きる理由を見つけ、必ず終わる形に直せる
01 | 14分
分かれる

偶数か奇数か

02 | 14分
繰り返す

3 回、10 未満の間

03 | 12分
止まらない

無限ループを直す

SECTION 01

分かれる

もし〜なら、そうでなければ

道が二つに分かれる場所に立つ高校生。左の道には偶数の石、右の道には奇数の石が並んでいる
体験 01

偶数か奇数か | if と else

やること ①実行して Kisuu を確かめる ② x を 20 にして実行 ③ 「3 の倍数なら Baisuu」に書き換える(% 3 == 0) ④ 「12 未満なら Child、12 以上なら Adult」を作る(< を使う)
実行結果

※ if の行の終わりに「:」。条件が成り立つときの処理は、行の頭を 4 つ空ける(字下げ)。== は「等しいか」、= は「入れる」。比較: == != < > <= >=

教師用メモ

進め方(12分) 実行 → Kisuu。x=20 → Guusuu。「x%2==0 は何を調べている?」→ 2 で割った余りが 0 か(前回の %)。

教科書問題①: 3 の倍数(if x%3==0:)、Child/Adult(if x<12:)。

よくあるエラー 字下げがない(IndentationError)、: を忘れる、= と == を間違える(x=2 は代入なので if の条件には書けない)。「字下げは『この処理は if の中』という印」。Tab キーで 4 つ空く。目標 01。

SECTION 02

繰り返す

コンピュータは同じことを正確に何度でも

ベルトコンベアで同じ箱が次々流れてきて、ロボットの腕が1つずつ同じ印を押している。高校生が回数を数えている
体験 02

3 回、そして 10 未満の間 | for と while

やること ①実行して Hello World が 3 回、end が 1 回なのを確かめる ② range(3) を range(10) に ③ 下の while を実行し、1〜9 が出るのを確かめる ④ 「50 未満の間、2 から順に偶数を表示」を while で作る
実行結果

※ for は「回数が決まっている」繰り返し。range(3) は 0,1,2 の 3 回。while は「条件が成り立つ間」繰り返す。字下げした行だけが繰り返される。end は字下げがないので 1 回

教師用メモ

進め方(12分) 実行。「end が 3 回出なかったのはなぜ?」→ 字下げがないから繰り返しの外。

for と while の使い分け: 回数が決まっているなら for(range)。条件で止めるなら while。

教科書問題②: 50 未満の偶数。k=2 while k<50: print(k) k=k+2。range(2,50,2) でも書ける(発展)。

「range(1,10) は 1〜9」(終了値は含まない)を強調。目標 02。

SECTION 03

止まらない

必ず終わる、を書き忘れると

円形のレールの上を止まらずに走り続けるおもちゃの列車を、高校生が困った顔で見ていて、手にはレールの切れ端を持っている
体験 03

無限ループを、わざと起こして、直す

やること ①このまま実行する(4 秒で止められる) ②なぜ終わらないかを隣に説明する ③ 1 行足して、1〜9 を表示して終わるように直す ④ 「10 未満」を「10 以下」にすると何が変わるか試す
実行結果

※ k が変わらないので、k<10 がずっと成り立つ。「必ず終了する」はアルゴリズムの条件(第4回)。繰り返しの中で、条件に関わる変数を変えているかを確かめる

教師用メモ

進め方(10分) 実行すると 1 が大量に出て、4 秒で「止めました」。「なぜ?」→ k=k+1 がない。直すと 1〜9 と end。

「10 以下」(<=)にすると 10 まで出る。境界の条件を確かめる習慣。

実際のコンピュータでは無限ループはアプリの「固まる」原因の一つ。「必ず終わる」を書くのは書く側の責任。目標 03。

まとめ

分岐と反復 | 3 つの構造で、どんなアルゴリズムも書ける

分岐構造 if / else条件が成り立つ(真)とき if の中、成り立たない(偽)とき else の中を実行。条件は比較演算子(== != < > <= >=)で書く
反復構造 for回数が決まった繰り返し。for cnt in range(3): で 3 回。range(1,10) は 1〜9
反復構造 while条件が成り立つ間、繰り返す。条件に関わる変数を中で変えないと無限ループ
字下げif・for・while の中の処理は行の頭を 4 つ空ける。字下げが「どこまでが中か」を決める

※ 順次・分岐・反復の組み合わせで、あらゆるアルゴリズムが表せる。第4回のフローチャートの四角・ひし形・戻る矢印がそのまま対応する

教師用メモ

次回、分岐と反復を組み合わせ(7 の倍数だけ表示)、リストを使う。

道具で探す

字下げの代わりに、何が使われているか

if と for を変換し、Python の字下げの代わりに何が使われているかを見つけて出す

Python ⇄ 共通テスト用プログラム表記 変換ツール分岐と反復が、試験の表記でどう書かれるかを見る
  1. 「この枚で開く」を押す
  2. 今日の if のプログラムを左に貼って「→」
  3. for のプログラムでも同じことをする
  4. 字下げの代わりに何があるかを言う
この授業のページの中で開く。終わったら「閉じてこの枚に戻る」で戻る
見つけたものを、一文で
みんなの見つけたもの
教師用メモ

進め方 見つけた人から出す。全員に同じ答えを求めない。出てきたものを 2〜3 個読み上げ、共通点を言葉にする。

5分。if と for の対応だけ。もし〜ならば、繰り返し、の書き方を見る。

道具は外で公開されている Web アプリ。この授業のページの中で開くので、別のページへは移らない。閉じれば、そのままこの枚に戻る。ブラウザの中で動き、入力はこの授業のサーバーには送られない。

今日のまとめ

3つの目標に、自分の書いたプログラムで答える

01
if・else x%2==0 で偶数と奇数が分かれた。3 の倍数、Child/Adult も同じ形
02
for・while range(3) で 3 回、k<10 の間で 1〜9。回数が決まっていれば for、条件で止めるなら while
03
無限ループ k=k+1 がないと止まらない。条件に関わる変数を、繰り返しの中で変える
自己評価

今日の目標、自分はどこまで

3 つの目標それぞれに、できた/だいたい/まだ、を 1 つ選ぶ。右の帯にクラス全体の分布が出る

今日の目標、自分はどこまで | 1 つずつ選ぶ
01if・else で処理を分けるプログラムを書ける
02for・while で繰り返すプログラムを書け、違いを言える
03無限ループの理由を見つけ、必ず終わる形に直せる
できただいたいまだ
教師用メモ

1 分。「まだ」が多い目標は、次回の冒頭で拾い直す。

ふりかえり

今日いちばん詰まったところと、どう直したか

一文でよい。「〇〇で動かなかった。△△を直したら動いた」の形

みんなの詰まりと直し方
教師用メモ

3 分。詰まりの種類を投影で分類(字下げ・コロン・= と ==・range の範囲)。次回はリストと input。