中学生に説明するためのC++予習(3)
3.演算、演算子(運算、運算子)
教科書眺めましたが、演算子の「一覧表」をバーンと出されると嫌になっちゃうのじゃないかと思います。表を覚えるのではなく、実際に試してみるのが近道でしょう。
四則演算なら困難は無いとしても、++ とか、+=とか見たことない複合記号が出てくると、面食らいそう。
実行環境
ところで今回から、CodeBlocksではなく、Web上のOnlineGDB
https://www.onlinegdb.com/
のC++23を使うことにします。環境構築に悩まなくていいですからね。
類似のサービスに
というのもあります。
++xとx++
教科書にはページを割いて詳しく書いてあるのだけれど、初学者にこんな記法の違いを教える必要あるのかね?かなり疑問。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int x, a, b, c;
x = 1;
a = x++;
cout << "x=" << x << "\ta=" << a <<endl;
x = 1;
b = ++x;
cout << "x=" << x << "\tb=" << b <<endl;
x = 1;
return 0;
}
結果
x=2 a=1
x=2 b=2
まあ、プログラマにでもなろうというなら++xとx++の違いとか問題になるのはわかる。大量のコード書く人になるなら、できるだけ効率的に書きたいだろうし。他人のコード見て意味が分からなきゃ困るわけだし。
でも、初学者の教材にこんなの載せて混乱させる必要はないんじゃない?と思いますね。
++はforループで出てくるからまあ、覚えておくとしても、
誤解が生じにくい書き方にすりゃいいじゃないのと思います。
#include <iostream>
using namespace std;
int main() {
int x, a, b, c;
x = 1;
a = x;
x++ ;
cout << "x=" << x << "\t" << "a=" << a <<endl;
x = 1;
x++ ;
b = x;
cout << "x=" << x << "\t" << "b=" << b <<endl;
return 0;
}
いやもう、x=x+1; だけで x++;も x+=1;も 「一周目の学習」では、知らなくていいのでは、
#include <iostream>
using namespace std;
int main() {
int x, a, b, c;
x = 1;
a = x;
x = x + 1 ;
cout << "x=" << x << "\t" << "a=" << a <<endl;
x = 1;
x = x + 1 ;
b = x;
cout << "x=" << x << "\t" << "b=" << b <<endl;
return 0;
}
これでいいじゃん。早く次へ進んで、if文とか、forループとかの構文の学習をした方がいいとおじさんは思うぞ。
まあ、でも学校の教育方針と違うこと言って中学生くんを混乱させるのが一番かわいそうだから、言わないけど。
ビット演算
教科書にはこれもあるんですけど、これも飛ばしてもいい気がしますが・・。「フラグが立つ」の意味を教えたいのかな(笑)
型変換
整数型同士の演算だと、5/2が2.5にならずに2になってしまうから、型を意識する必要があるよ、ということは大事。
感想
あらためて、これは、中一の初学者の教科書じゃないよ・・・。
入門レベルを終えた、「二周目」以降に使う教科書だよこれは、と思う私でした。