コンピュータ演習II 第04回 ドリル(授業中に解いて提出)¶

この問題集は、授業中に、解説を聞きながら自分の手を動かして解く 練習です。第04回の教材で学んだ フローチャートの読み方 と 論理演算子(and / or / not)を、各節 2 問ずつ練習します。

各問は フローチャート で与えます。図を読んで流れをつかんでから、それを Python に翻訳して 書いてください。「好きな整数」のところは、自分で自由に値を決めてかまいません。

進め方は次のとおりです。

  • 配布の 解答用テンプレート 2xBxxxxx_04_drill.ipynb を Colab で開き、各問題のフローチャートを Python に翻訳して実行してください。
  • 各問に 入力例と出力例 を載せています。イメージがつかめないときは、まず入力例のとおりに動かしてから、自分の値に変えてください。
  • できたら、テンプレートを .py 形式でダウンロードして提出 してください。答え合わせはしません。自分で値を決めて、思ったとおりに動くかを確かめることが目的です。
  • わからなくなったら、第04回の教材を見返してかまいません。答えを写すのではなく、書き方を思い出して自分で書く ことが大切です。

なお、この演習では Colab のコード生成(生成AI の補完)は使わないでください。自分でプログラムを書いて、読めるようになることが目的です。

1. 順次¶

問題 1: 順次のフローチャートを翻訳する¶

下のフローチャートを Python に翻訳してください。係数 a は好きな整数を決めます。x は input() で受け取り、整数に変換してから、y = a * x + 5 を計算して出力します。

入力の作り方:

a = 好きな整数
x は実行時に入力する

入力例:

a = 3
(実行時の入力) 4

出力例(入力例のとき):

17

これは例です。自分で決めた値で作ってかまいません(その場合、出力は例とは変わります)。

考えるポイント: 入力(input())のすぐあとに int への変換があるのはなぜでしょうか。変換を忘れるとどうなるかも、試してみてください(第03回で学んだエラーです)。

ヒント(フローチャート):

ヒント(フローチャート)


問題 2: 乱数を足した数を作る¶

下のフローチャートを Python に翻訳してください。sid に 自分の学籍番号後半5 桁 を入れ、-100〜100 の乱数を足した数 n を作って出力します。何回か実行して、n が毎回変わることを確かめてください。

入力の作り方:

sid = 自分の学籍番号後半5 桁

入力例:

sid = 61250

出力例(入力例のとき):

61283

乱数なので、実行のたびに 61150〜61350 の範囲で変わります。

考えるポイント: 乱数を使うには、プログラムの先頭に import random が必要です(第03回)。今回の課題でも、この「sid に乱数を足した数」を使います。

ヒント(フローチャート):

ヒント(フローチャート)


2. 分岐¶

問題 3: 7 の倍数か判定する¶

好きな整数 m を決めてください。下のフローチャートのとおり、m が 7 の倍数 なら lucky、そうでなければ normal と出力してください。

入力の作り方:

m = 好きな整数

入力例:

m = 21

出力例(入力例のとき):

lucky

これは例です。自分で決めた値で作ってかまいません(m = 20 なら normal になります)。

考えるポイント: 「7 の倍数」は、割った余り(%)を使うとどんな条件式で書けるでしょうか。

ヒント(フローチャート):

ヒント(フローチャート)


問題 4: 気温で3 つに分類する¶

好きな整数 t(気温のつもり)を決めてください。下のフローチャートのとおり、t が 30 以上なら hot、15 以上なら warm、それ以外なら cold と出力してください。

入力の作り方:

t = 好きな整数

入力例:

t = 28

出力例(入力例のとき):

warm

これは例です。自分で決めた値で作ってかまいません。

考えるポイント: 2 つ目のひし形(elif)に t >= 15 とだけ書けばよいのはなぜでしょうか(t < 30 はどこで保証されているでしょうか)。t = 31 や t = 3 でも試してください。

ヒント(フローチャート):

ヒント(フローチャート)


3. 論理演算子¶

問題 5: 2 桁の数か判定する(and)¶

好きな整数 k を決めてください。下のフローチャートのとおり、k が 10 以上 かつ 99 以下(= 2 桁の数)なら two digits、そうでなければ other と出力してください。

入力の作り方:

k = 好きな整数

入力例:

k = 42

出力例(入力例のとき):

two digits

これは例です。自分で決めた値で作ってかまいません(k = 7 なら other になります)。

考えるポイント: and を使わずに if の入れ子で書くと、どんな形になるでしょうか(教材5 章の「ひし形2 つ」の形)。両方書いて、同じ動きになることを確かめると理解が深まります。

ヒント(フローチャート):

ヒント(フローチャート)


問題 6: どちらかに当てはまるか判定する(or)¶

好きな整数 p を決めてください。下のフローチャートのとおり、p が 3 の倍数 または 末尾(1 の位)が 3 なら san、そうでなければ other と出力してください。

入力の作り方:

p = 好きな整数

入力例:

p = 23

出力例(入力例のとき):

san

これは例です。自分で決めた値で作ってかまいません(p = 25 なら other、p = 21 は 3 の倍数なので san になります)。

考えるポイント: 末尾(1 の位)は % でどう取り出せるでしょうか。p = 33 のように 両方の条件 に当てはまる数でも、出力が1 回だけになることを確かめてください。

ヒント(フローチャート):

ヒント(フローチャート)


まとめ¶

この回のドリルでは、フローチャートを Python に翻訳する練習をしました。次のことを確認しておきましょう。

  • 順次 は上から下へ、図のブロックを1 つずつ Python の1 行に翻訳する。
  • 入力(input())の結果は 文字列 なので、数として使うときは int() で変換する。
  • 判断(ひし形) は if に、True 側の処理はインデントの中に、False 側は else に翻訳する。ひし形の数珠つなぎは elif。
  • 複数の条件は and / or / not で1 つのひし形(1 つの条件式)にまとめられる。

授業後の 課題 では、同じ要領でフローチャートを Flowchart Maker で組んで、.pflow ファイルを提出します。ここで図とコードの対応に慣れておきましょう。