一覧へ 情報Ⅰ (3) 第7回 | プログラミングの工夫
情報Ⅰ (3) コンピュータとプログラミング | 第7回

プログラミングの工夫

100 個の変数を作る人はいない。まとめて持ち、条件で選び、人に聞く

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

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

時間配分 前回まとめ・目標 4分 / 節1 組み合わせる 12分 / 節2 まとめて持つ 16分 / 節3 人に聞く 12分 / まとめ・自己評価・ふりかえり 6分

教科書: 新編情報Ⅰ 27 プログラミングの工夫(p.76)。

この回の評価(指導要領 (3) ア(イ) イ(イ)。制御構造の組み合わせ、リストや配列。単元設計は 単元設計のページ)

  • 知識・技能 リストの添え字が 0 から始まることと、反復の中に分岐を入れる書き方を理解している(体験01・02)
  • 思考・判断・表現 「7 で割った余りが 3」「余りが 3 より大きい」を条件に直してプログラムにし、入力に応じて答えを変えるプログラムを作っている(体験01・03)
  • 態度 同じことを何度も書かずに済ませる書き方を選ぼうとしている(ふりかえり)

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

前回のまとめ

条件で分かれる、決めた回数だけ繰り返す

if / elsefor k in range(10)while k<10|字下げが「中」を決める

分岐と反復を別々に使った。この 2 つを入れ子にすると、「繰り返しながら、当てはまるものだけ拾う」ができる。データを 100 個扱う道具も今日出てくる

0 から 99 のうち、7 の倍数だけを出す。何行で書けるか

教師用メモ

「print を 15 行書く」と言う生徒が出たら歓迎する。「それも動く。今日はもっと短くする」。前回「まだ」が多かった目標を 2 分拾う。

今日の目標

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

01
反復の中に分岐を入れて、条件に合うものだけ取り出せる
02
リストで複数の値をまとめて持ち、番号(添え字)で取り出せる
03
input で入力を受け取り、入力によって答えが変わるプログラムを作れる
01 | 12分
組み合わせる

繰り返しの中で選ぶ

02 | 16分
まとめて持つ

リストと添え字

03 | 12分
人に聞く

input で受け取る

SECTION 01

組み合わせる

全部見て、合うものだけ拾う

ベルトコンベアを流れるたくさんの札の中から、条件に合う札だけを高校生が拾い上げてかごに入れている
体験 01

0 から 99 のうち、7 で割り切れる数だけ

やること ①実行して 0, 7, 14 … 98 が出るのを確かめる ② 「余りが 3」に変える(==3) ③ 「余りが 3 より大きい」に変える(>3) ④ 「3 の倍数かつ 5 の倍数」を作る(if の中にもう一つ if を書く)
実行結果

※ for の中に if を書くと、繰り返しながら条件で選べる。字下げは for が 4 つ、if の中は 8 つ。字下げの深さが「どの中か」を表す

教師用メモ

進め方(10分) 実行 → 15 個。教科書問題: k%7==3(3,10,17…)、k%7>3(4,5,6,11,12,13…)。

④は if k%3==0: の中に if k%5==0:。15 の倍数が出る。「かつ」は入れ子でも and でも書ける(発展)。

拾いたい発言 「print を 15 行書くより短い」「範囲を 1000 にしても 1 文字変えるだけ」。これが繰り返しの価値。目標 01。

SECTION 02

まとめて持つ

箱を 100 個作る代わりに、棚を 1 つ作る

番号札のついた仕切りが並ぶ細長い棚に、高校生が一つずつ品物を入れている。棚全体には名前の札が1枚だけ付いている
説明

リスト | 名前は 1 つ、中身は番号で指す

a=[5,12,7,9,5,8,2] と書くと、a という名前の棚ができる。上の段が棚の中身。下の青いボタンを押すと、そのボタンの番号が指す中身が濃くなる

5
a[0]
12
a[1]
7
a[2]
9
a[3]
5
a[4]
8
a[5]
2
a[6]
押すと、その番号の中身が上で濃くなる

先頭は 0 番。a[3] は 4 番目の 9。人の数え方と 1 つずれるので、ここでつまずく人が多い

※ リストは Python の呼び方。ほかの言語では配列という。どちらも「複数の値を 1 つのまとまりで扱う仕組み」

教師用メモ

ここで 2 分。「a[7] は?」→ 存在しないのでエラー。棚には 0〜6 の 7 つしかない。

体験 02

リストを作り、取り出し、増やす

やること ①実行して 3 つの出力を確かめる ② a[3] を a[0] や a[6] に変える ③ 自分の好きなものを 5 つ入れたリストを作って全部表示する ④ for で 1 つずつ表示する(下の 2 行を足す)
実行結果

※ append( ) は末尾に足す。for x in a: と書くと、リストの中身を先頭から順に x に入れて繰り返す。番号を書かなくても全部たどれる

教師用メモ

進め方(12分) 実行 → リスト全体、9、33 が足されたリスト、そのあと 1 行ずつ 8 個。

③は文字も入る: b=['ramen','sushi','curry'](引用符で囲む)。日本語も入るが、まずは英数字で。

要点 変数を 8 個作る代わりに、リスト 1 つ。「クラス 40 人の点数」「1 年分の気温」も同じ形で持てる。第4単元のデータ活用につながる。目標 02。

SECTION 03

人に聞く

使う人が数を決める

画面に質問が出ているノートパソコンに、高校生がキーボードで答えを打ち込もうとしている
体験 03

入力によって答えが変わるプログラム

やること ①実行すると入力を聞かれる。0〜3 を入れる ② 4 を入れるとどうなるか試す ③ リストの中身を自分の好きなものに変える ④ 入力が 0〜3 のときだけ表示するように if を足す
実行結果

※ input( ) はキーボードから受け取る。受け取った値は文字なので、int( ) で整数に直してから番号として使う。( ) の中の文字は、聞くときに出る言葉

教師用メモ

進め方(10分) 実行すると入力欄が出る。2 → orange。4 → エラー(範囲外)。「使う人は間違った値を入れる。それを想定するのが作る側の仕事」。

④の例: if k>=0: の中に if k<=3:、else で print('range error')。

要点 ここまでで、入力・処理・出力がそろった。第1回の五大装置と結ぶ。目標 03。

まとめ

同じことを何度も書かないための道具

制御構造の組み合わせ反復の中に分岐を入れると、繰り返しながら条件に合うものだけ処理できる。字下げの深さが「どの中か」を表す
リスト・配列複数の値を 1 つのまとまりで扱う。名前と番号(添え字)で指す。先頭は 0 番。append( ) で追加。for x in a: で全部たどれる
input( )キーボードから値を受け取る。int( ) で整数に直す。使う人によって結果が変わるプログラムになる

※ まとめて処理することをバッチ処理という。データを 1 件ずつ人が扱う代わりに、リストと繰り返しでまとめて片づける

教師用メモ

次回は乱数と関数。「実行するたびに結果が変わる」「長いプログラムを分ける」。

道具で確かめる

配列の添え字が、どう書かれるかを見る

今日のリストのプログラムを変換し、添え字の書き方を確かめる

Python ⇄ 共通テスト用プログラム表記 変換ツールリストを使ったプログラムを、試験の表記に変換する
  1. 「この枚で開く」を押す
  2. 今日のリストのプログラムを左に貼って「→」
  3. 添え字がどう書かれるかを見る
  4. 「実行」で結果が同じか確かめる
この授業のページの中で開く。終わったら「閉じてこの枚に戻る」で戻る

※ この枚は提出しない。自分の手で確かめて、分かったことをノートに書く

教師用メモ

進め方 提出させない枚。手を動かして確かめるところまで。机間指導で、止まっている生徒だけを見る。

5分。添え字が 0 からか 1 からかは、表記によって違う。ここは試験でも問われる。

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

今日のまとめ

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

01
組み合わせる for の中の if で、100 個から 15 個を拾った。範囲を変えても 1 文字
02
リスト a=[…] で棚を 1 つ。a[3] は 4 番目。先頭は 0 番。append で増える
03
input 入れた番号で答えが変わった。範囲外を入れるとエラー。想定するのは作る側
自己評価

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

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

今日の目標、自分はどこまで | 1 つずつ選ぶ
01反復の中に分岐を入れて、条件に合うものだけ取り出せる
02リストで値をまとめて持ち、番号で取り出せる
03input で入力を受け取るプログラムを作れる
できただいたいまだ
教師用メモ

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

ふりかえり

リストで持つとよさそうなものを一つ

一文でよい。「〇〇をリストで持てば、△△ができる」の形

みんなのリストにしたいもの
教師用メモ

3 分。「クラスの点数」「部活の記録」が出たら、第4単元のデータ活用で実際に扱うと予告する。