見出し画像

一つのスペルミスがプログラミングの命取りに

 変数とは数値を覚えていてくれる箱のようなもので、整数や小数、文字列などの型があります。ひとつの変数に複数の値を覚えておいてくれる配列(データの塊)というのもあります。これらの変数は、使う前にどういう名前で、どういう型かを決めます。宣言する、と言います。最近のプログラミング言語には、事前に明示的に宣言しなくて良くなっているものもあります。ただし、気をつけないといけません。下記はVBAの例です。

temperature = 25
a = temparature * 2
Cells(11, 1).Value = a

この場合、aの値は50ではなく、0になります。これは2行目にtemparatureとスペルミスがあり、1行目とは別の変数が新規に登場した、と理解されてしまいます。スペルミスかどうかは、VBAはわかりませんし、教えてくれません。プログラムの先頭に、option explicitと書いておけば、宣言していない変数を使おうとするとエラーになって、ミスがわかるようになります。これは強くお勧めします。
 もうひとつ、初心者がハマるパターンに、2バイトの整数(short)が扱える範囲が意外に狭いというのがあります。プログラミング言語や処理系にもよりますが、shortは2バイトの領域が使われます。intも2バイトだった時代もありました。言語を作った時にどうして定義できなかったんですかね。1バイトは8ビットです。つまり2バイトは、2の16乗の数(65,536)を表せます。負の値も扱える型なら、2バイトの場合、最も大きい値で半分の32,767です。C++で下記を実行すると、aは32768ではなく、-32768になります。

short a = 32767;
a++;

 一方、同じ整数でもC++の場合、intlongは4バイトで、2の32乗の数(4,294,967,296)ですので、そうそう超えることはありません。8バイトの型のlong longという型もあります。これは2の64乗で18,446,744,073,709,551,616になります。1844京ですね。OSにもよりますが、32bitパソコンと64ビットパソコンでは、バイト数が異なることがあります。C++の場合、sizeof(型名)で、その型が何バイトなのかを調べることができます。
 また、変数に物理的な数値を入れる場合、単位に気をつける必要があります。1999年、NASAの火星探査機で、重さの単位をポンドからキログラムに間違えて設計してしまい、火星に墜落するという事故がありました。特に、プログラムの中で単位を変換するようなことがあるときは、変数名に単位をつけておいた方が安全です。weightKgとかweightPoundとか、ですね。

4. 火星に墜落


この記事が気に入ったらサポートをしてみませんか?