表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
PR
13/37

第十一話 型について



「ま、Cのプログラミングの作り方については、もうイツキくんにも解ったと思うから、これからCの基礎的な構成要素について、もっと詳しく話すわ」

 立花先輩はそう言うと、PCへと向き直ってキーボードへと手を載せる。

「基礎的な構成要素?」

「うん。これからの高度なプログラミングの説明に必要だもの。そろそろ基礎的な部分もイツキくんにも知っておいてほしいの。今回話すのは、Cで使うタイプ、型のことよ」

「それって、intとかの事ですか?」と西原さん。

「うん。Cには他にもいろいろあるから、まずそこから知っておいて欲しいの。まずは、int。整数ね。1とか0とか-10とか。float、浮動小数点の実数。1.5とかの小数点のある数ね。doubleは、floatと同じだけど、より精度が高くなっているの。で、さっきも出たchar。文字に対して使うっと」

 先輩はウィンドウズのメモ帳を開くとカタカタと書きこむ。

「よく使うのはこの四つかなー。他に大きな数を使いたい時にlongを使うけど、これはintと同じようなものだと思っていいわ」


「先輩、float、doubleの浮動小数点って?」

「あ、これは気にしないで。コンピューター内部で小数点を表すのに使う計算方法のことだから。たぶん、イツキくんにはわからないと思う。ただの実数、小数点のある数だと思って」

 うっ。はっきり言われると、少し悔しい。

「あとね、unsignedって頭につけたら、0以上の数のみになるの。unsigned intだと、0以上の整数、unsigned floatだと0以上の実数ね」

「なんでマイナスの数を出せなくするんだろう?」

「これは使える数の問題ね。これだとマイナス分のメモリーが要らないから、上限が普通の二倍の数を表せるの。もし、0以下の数にならないと確定している変数だったら、unsigned intにした方が得でしょ? 他にも、いろいろと理由はあるけど、ま、一番の理由はこれね」

「ふむふむ。なるほど」


「で、charの話だけど、これはちょっと特殊ね。文字に使うんだけど。コンピューターが使う文字は、アスキーコードって言って、それぞれ番号が振られているのよ。たとえばアルファベットの大文字のAだと、65とか。Bは66。数字の1だと、49とかね」

「それがcharと?」

「charの変数には、その数を入れて、文字として表すわけ。たとえば、char a = 'A'; って書くの。単独の文字はシングルクォート『’』で囲むのよ。これは、char a = 65と実際同じ意味だけど、人間の目にはこっちの方が解りやすくなるでしょ?」

「よく考えられているんだな」

「じゃあ今度は、配列についても少し話したいわ」

 先輩は、カタカタとコードを書き始めた。


int a[100];

a[0] = 1;

a[1] = 2;

a[99] = 100;


「これは、intの配列変数。この場合、100個の数をaって名づけた変数に入れられるのよ。四角カッコの中のインデックスの数によって、その中のどれを現すのか決められるのね」

「0から始まるんですね」と西原さん。

「そう。コンピューターの決まりのようなものだと思って。0番から100を数えたら、上限は99。だから、a[99]までなの。a[100] = 101;なんて書いたらエラーが出るわよ」

「しかし配列って何に使うのだろう?」

「同じ種類のデータだと、まとまってて便利に使えるの。たとえば、敵キャラのAIの集団を幾つも動かしたりする時にね。そのうち、イツキくんにfor文とか教えるから、使い道がもっと出るわよ」

 先輩は、メモ帳のコードを消すと、新たに書き始めた。


int a[3] = { 1, 2, 3};


「あとね、変数の宣言の時には、同時にこういう風に中カッコ{}内で値を入れることで初期化も出来るから、これも覚えておいて。ちなみに、a[0] = 1とかの、一つずつ入れてる例は、変数の初期化じゃなくて、初期化終了後の代入だからね。この違いも重要なの」

「初期化と代入か」

 ぶっちゃけ俺はまだよくわからん……。


「で、今度のが実は本題。文字列についてよ。今までのは、前振りみたいなものよ」

「文字列、文字の配列、ということですか?」と西原さん。

「そ。char変数だと、1文字しか入れられなかったでしょ? それじゃ、あまり使い道ないじゃない。でも、配列にしたら、幾つも文字を入れられるの」

 先輩はコードを書いた。



char string[4];

string[0] = 'A';

string[1] = 'B';

string[2] = 'C';

string[3] = '\0';



「これだと、ABCの三文字がstring配列変数の中にあるわね」

「最後のやつって? インデックス3のやつ。0円?」

「わかってるって、イツキくんの疑問」先輩はふふっと笑った。「これはナル終端文字っていって、文字列の最後に必ずつけないといけない記号なのよ。じゃないと、コンピューターはどこまでが文字列の最後なのか、わからないのね」

「ふむふむ」

「あとね、こういう一文字ずつ入れる書き方は面倒臭いーってんで世界中のプログラマーがぶーぶー言った結果、変数の初期化の時に限って、こういう書き方も許されるようになったの」


char string[] =“ABC“;


「こっちの方がよく使われるから、覚えておいて」

「四角カッコの中の数字は書かれないんですね」と西原さんが尋ねる。

「うん。こうしたら、コンピューターは自動的に、ABCの文字3つ + 終端文字の4つ分の配列を作って設定してくれるの。実際、入れてもいいんだけど、普通は省略するわね」

「こっちの方が読みやすいな」

「ただし、途中で文字を変えたくなったら、最初のやり方で入れないとダメだよ? たとえば後で2番目のBをDにしたくなったら、string[1] = ’D’; って入れたら、stringはADCになるわけ。でも、またstring[] = “ADC“;って入れたらエラーになるからね」


「ところで先輩、日本語はどうしたら入れられるんですか?」

 先輩は少し考え込んだ。

「それはちょっと難しい話になるよ? 日本語、というか日本語文字も含めたいろんな非英語文字や記号には、2バイト文字、あるいはマルチバイト文字ってのが使われてるんだけど、これはちょっと複雑なのよ。英文字や数字だと1バイトずつ、つまりchar1個分ずつ入れるんだけど、日本語の場合は漢字、ひらがな、カタカナと数が多いから、2つずつ要るの。ま、さっきの簡易な初期化方法だと、日本語でもコンピューターがちゃんと2バイト分ずつ計算して入れてくれるから、今は気にしないでもいいわよ」

「うーむ。結構、面倒なんだなぁ、コンピューターって」

「ふふっ。慣れたら簡単だよー」

 そう先輩は言うと、メモ帳を閉じた。



「じゃ、イツキくんも文法の話に疲れたみたいだし、気分転換するわよ。次に作るゲームを考えようよ」

「次に作る……ゲーム」

 俺は息を飲んだ。

 そうなのだ。俺は忘れていた。今、C言語を習っているのは、あくまでゲームを作るための道具だってことを。


 俺は、何を作りたいのだ?

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ