第六回 数の計算、比較、論理演算について

プログラミング編

はじめに

マサト先生
マサト先生

やあ、こんにちは。今日は数の計算比較そして論理演算について学ぼう!

ヒロト
ヒロト

はい、よろしくお願いします!

数の計算について

マサト先生
マサト先生

まずは数の計算についてだが、慣れ親しんでいる演算記号とは違う演算記号を使うことがある。以下の表にまとめておいたから確認してほしい。なお、計算に使う記号のことを算術演算子と呼び、すべて半角で使うぞ。

算術演算子の表

演算 記号             意味
加法二つの数を足す
減法左側の数から右側の数を引く
乗法 *  二つの数を掛ける
除法1 /左側の数を右側の数で割る(割り切れない場合は小数の商となる)
除法2 //左側の数を右側の数で割る(小数点以下を切り捨てた商となる)
累乗 **例えば2**3の場合、『2の3乗』を意味する。
余り %左側の数を右側の数で割った余り
ヒロト
ヒロト

ある数をある数で割ったときの商や余りについて便利な演算がありますね!

マサト先生
マサト先生

ああ、これらは実際に使ってみて慣れていくのが一番だ。では、ビットアローを準備してくれ。今日は新しくfile6を作成して書いていこう。まずは次のプログラムを書いて実行してみてどうなるか見てほしい。それから、第1行目に『#数の計算』と書いてあるが、これは自分のためのメモみたいなものだ。#記号の右側に書くことでコンピュータはその行を無視してくれるのだ。なので、実際のプログラムは2行目から実行されるということになる。ぜひ、これから使っていこう!

ヒロト
ヒロト

はい、では書いてから実行してみます。

計算結果が表示されない!?

ヒロト
ヒロト

あれー何も表示されないや!なんでだろう?

マサト先生
マサト先生

ふふふ、すまない。ちょっとヒロトを試してしまったのだ。いいかい?プログラムにおいて何か表示させたいとき、絶対に必要だったものがあるが覚えているかい?

ヒロト
ヒロト

ああ、そうか!print関数か!

マサト先生
マサト先生

その通りだ!計算機に入力する感覚で計算をしようとしても表示させる命令を書いてないから計算だけさせて表示されないということになってしまったのだ。ぜひ、このことは忘れないでくれ。では、改めて上の計算結果を表示させるプログラムを書いてみてくれ!

ヒロト
ヒロト

はい、分かりました!

print関数を使うのだからこうすればいいはず!

ヒロト
ヒロト

正しい計算結果が表示されました!

print関数をうまく使う

マサト先生
マサト先生

ヒロトは注意しなくてもできていたが、print関数に代入するものは今回は文字列ではなく数値であるから、たとえば2行目について『print(‘2+3’)』とシングルクォーテーションで囲んでしまってはいけなかったのだ。因みにこのように書くと文字列としてそのまま『2+3』と表示されてしまうのだ。しかし、これをうまく使えば次のように実行結果から何を計算した結果なのかが分かるようになるぞ!

ヒロト
ヒロト

確かに何の計算結果なのかが見て分かるようになりました!文字列と数値の間にカンマ『 , 』を書くのを忘れないようにしなくちゃいけないですね!

マサト先生
マサト先生

その通りだ。たった一つカンマがないだけでエラーとなってしまうから注意が必要だな。数の計算についてはここまでにして次は数の比較についてやっていこう!

数の比較について

マサト先生
マサト先生

数の比較についても以下の表にまとめたから確認してほしい。算術演算子と同様に、比較するときに用いる記号のことを比較演算子と呼び、全て半角で使うからよろしくな。

比較演算子の表

プログラミングでの書き方 数学での記号    意味
     a>b  \(a>b\)aはbより大きい
     a>=b  \(a \geq b\) aはb以上
     a<b  \(a<b\) aはbより小さい
     a<=b  \(a \leq b\) aはb以下
     a==b   \( a=b\)aはbに等しい
     a!=b  \(a \ne b\)aとbは等しくない
ヒロト
ヒロト

『==』については以前出てきました!

また、『以上』と『以下』は不等号が前で等号が後ろなのですね!間違えないようにしなくちゃ。

マサト先生
マサト先生

その通りだ。順番を逆にしてしまうとエラーとなってしまうから気を付けよう!最後のaとbは等しくないことを意味する記号の『 ! 』はエクスクラメーションマークといい、シフトキーを押しながら数字の1を押すと入力できるぞ。

ヒロト
ヒロト

はい、覚えておきます。

論理演算子について

マサト先生
マサト先生

さて、あといくつかだけ紹介したいことがある。それは『論理演算子』についてだ。プログラムで複数の条件を組み合わせて書きたいときに便利なものだから必ず押さえておきたいものなのだ。以下の表を見てい欲しい。AとBはある条件文だと理解してくれ。

論理演算子の表

プログラミングでの書き方意味
    A and BAかつB
    A or BAまたはB
ヒロト
ヒロト

確かに『または』と『かつ』はよく使う表現ですよね。しかし先生、そろそろ頭がパンクしそうです。

マサト先生
マサト先生

そうだな、この辺で少し具体例を見てみよう。ここまで来たら、かなりプログラムの幅が広がっていることに気づくぞ!

具体例

マサト先生
マサト先生

では、はじめに簡単なものから書いていこう。入力した数が奇数ならば『奇数』と表示し、偶数ならば『偶数』と表示するプログラムを書いてみてほしい。できるかな?ヒントはinput関数とif文を使うぞ!新しくfile7を作成してそれに書くといいだろう。

ヒロト
ヒロト

入力した数が奇数かどうか判定するためには、2で割った余りが1に等しいかどうか調べればいいのでif文を使えばできるかも!

ヒロト
ヒロト

先生、何度試してもエラーが出てしまいます。if文は正しい自信があるのですが、なんでだろう?

マサト先生
マサト先生

ふむ、なるほどな。今回のエラーはよくあるエラートップ3に入るぞ。原因は文字を数で割っていることにある。ふふ、どういうことだろうって顔してるな?いいかい?1行目のinput関数で変数aにキーボードから入力した数を代入しているのだが、このとき入力した数は『文字列』として代入されてしまうのだよ。input関数でキーボードから入力したものはすべて文字列として認識されてしまうのだ!

ヒロト
ヒロト

そうだったのですね!では、キーボードから数を代入することはできないのですか?

マサト先生
マサト先生

いや、ちゃんと代入できるぞ!実はキーボードから入力した値を数値に変換してくれる関数があるのだ。それは『int関数』だ。次のように、int関数に代入すれば数値に変換されるのだ。

マサト先生
マサト先生

2行目でキーボードから入力した文字列としての値をint関数に代入して数値に変換したものを変数bに代入しているのだ。5を入力して実行すると画面のようにうまく処理されたことが分かるな!次のようにinput関数を直接int関数に代入することによって、1行だけで処理する方法もあるぞ。こうすることによって変数はaの1個だけで済むようになるのだ。

ヒロト
ヒロト

なるほど、こっちのほうがいいですね!

マサト先生
マサト先生

では、最後にいくつか練習問題をやって終わりにしよう。

練習問題

問題

新しくfile8、file9、file10を作成して、各問題の解答をそれぞれのファイルに書こう。

(1)変数aと変数bに数値を代入し、それらの四則『a+b , a-b , a*b , a/b』の計算結果を
  表示するプログラムを書こう。

(2)入力した数が奇数であり、かつ3の倍数であるときに『3の倍数である奇数』と表示し、
  そうでないときには『偶数であるか、または3の倍数でない』と表示するプログラムを
  書いてみよう。
※ヒント:if-else文を使うぞ!

(3)1から100までの数のうち、奇数であり、かつ3の倍数である数を抽出し表示する
  プログラムを書こう。
※ヒント:for文の中にif文を書くぞ!

解答

(1)


(2)


(3)

ヒロト
ヒロト

出来ました!すべて正常に機能しています!!

マサト先生
マサト先生

完璧だ!(3)のfor文の中でif文を使うとき、if文の条件が成り立つときに実行する部分をさらにインデントしているところが良かったぞ!

ヒロト
ヒロト

まあ、きっとこうだろうという感じで書きました!できていて良かったです。

マサト先生
マサト先生

今日は、かなり盛沢山な内容だったと思う。今回の内容を理解すると、プログラムの世界がぐっと広がること間違いなしだ!今日学んだ内容のプログラムを書いて遊んでみるといいだろう。では、今日はここまでにしよう。お疲れさん。

ヒロト
ヒロト

はい!しっかり遊んできます!

今日はありがとうございました!

コメント

タイトルとURLをコピーしました