コンピュータ演習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 ファイルを提出します。ここで図とコードの対応に慣れておきましょう。