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

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

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

エラーが発生しました。

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

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

第十四話 反復



 立花先輩の話は続く。

「で、今度話すのは、Cの反復命令ね」

「反復?」

「そ。文字通りの意味よ。一定の範囲でくるくる回転させる命令。ま、コード見ればすぐわかるわ」

 先輩はコードをカリカリと書いていった。

「よし、できた。見てみて」

 俺と西原さんは出来たコードを見る。



/* 反復命令テスト! whiletest.c */

#include <stdio.h>


int main(void)

{

    int count = 3; /* 変数countを宣言すると同時に3で初期化 */


    printf("回転はじめます\n");


    while(count > 0)

    {

        printf("現在、count値は、%dです! \n" , count );


        count--; /* count = count - 1 と同じ */

    }


    printf("回転終了しました\n");


    return 0;

}



「これだと、わかりやすいんじゃないかなー」

「while命令が、回転させていると?」

「うん。イツキくんも、わかってきたわね」

 新しい命令をあてずっぽに言っただけだけど。

「while命令は、if命令と似ているわ。ここでも、カッコ内で判定式を入れて、結果がtrueだったら、次の中カッコ内の命令を実行する。falseだったら、中カッコの次の命令へと移動するって命令なの」

「つまり、trueである限り、中の命令が実行されるってことですか?」と西原さん。

「ちょっと付け加えがいるわ。中カッコのいろいろな命令が終了したら、またwhileの所に戻って、また判定するわけ。この繰り返しね」

「whileの判定か。count変数が 0以上だったら、だよな?」

「ぶー。ちがいまーす。0『より上』だったら、よ。0以上だったら、0も含めるから count >= 0にしないとダメなの」

「こ、細かい……」

「ぶーぶー。プログラムには、こういうちょっとしたミスがバグの元になるのが多いのよ。イツキくんも気をつけなさい」

 うぬぬっ。

「で、countが0より上、なら、最初は3だから、正解ですよね。」西原さんが続けた。「そして中で表示して、countを……これは1引くんですよね?」

「そう。count--って書いたら、count = count - 1と同じわけ。ちなみに、足すときには、count++ね」

「掛け算とかは?」

「掛け算、割り算は無いから。あと、これは1しか足したり引いたりできないの。よくプログラミングだと、変数を1足したり引いたりする事が多いから、特別に命令があるのね。あとね、--countって書き方もあるのよ。これは、結果としてcountから1引くのは同じだけど、count--と少し違うところもある──ま、いずれ話す時があると思うわ」

 西原さんが言った。

「じゃあ、話を戻しますと、countは2になって、またwhileの判定。この時も0より上だから、また中カッコの中の命令を実行。で、これを繰り替えして、countが0になったら、次のwhile文の判定で、falseになるんですよね?」

「そうそう。その時には、中カッコを飛び越して、printf("回転終了しました\n");の所へと移動するわけ」

「なるほどな。反復命令、理解したぜ」

「じゃ、理屈がわかったところで実践よ。コードを実行させるわ」

 先輩はコードをコンパイルさせると、実行させた。


> whiletest

回転はじめます

現在、count値は、3です!

現在、count値は、2です!

現在、count値は、1です!

回転終了しました


>_


「ふむふむ。count1が表示されてからマイナスされて0になるから、もう表示されないんだな」

「他にも、似たような命令がいくつかあるから、教えるね。まず、for命令。これは、開始状態の変数の宣言と判定式、変数の変化を同時に一行で行えるの。このコードの場合、こんな感じね」


int count;

for (count = 3; count > 0 ; count--)

{

    printf("現在、count値は、%dです! \n" , count );

}



「こっちの方が、わかりやすいな」

「それは、イツキくんが最初にwhile命令を理解したからよ。ま、慣れたらこっちの命令の方がよく使うかなー。あとね、do while命令ってのもあるの。これは、」


do {


    printf("現在、count値は、%dです! \n" , count );


    count--; /* count = count - 1 と同じ */


} while (count > 0);



「って感じ。最後に判定式を入れてるの。最初のwhileだと、初めての判定式でいきなりfalseが出たら、中カッコの中の命令は一度も実行されないけど、これだと最低1回は必ず実行されるのよ」

「ふむふむ」

「ちなみに、こっちだとwhileの最後にセミコロン;が要るから、忘れないでよ」

 先輩はそう付け加えると、メモ帳に書いたコードを消し始めた。

「さてと、イツキくんもこれで基本的なCの命令はわかっただろうから、あとはこれを組み合わせれば、簡単なゲームは作れると思うわ」

 俺は突然の先輩の前フリにぎょっとした。

「そ、そうかな? 俺は、まだ自信が……」

「大丈夫って。困ったときには、あたしに聞けばいいわ。とりあえず、今日はもうこれくらいにして、明日続きをしよ」

 俺は壁時計を見た。確かに、もう下校する時間だ。

「そうですね、私もそろそろ帰ります」と西原さんも頷く。

「じゃあ西原さんもうちの部、入部する?」

「そうさせて頂きますわね。ふふっ」

「西原さんのような可愛い女の子がうちの部員だったら、俺も嬉しいなー」

 俺はついにやけてしまう。

「……イツキくん、それって、あたしは可愛くないってこと?」

「い、いえっ。先輩もとても可愛いですです」


 俺はたじたじになって答えた。付き合いにくい人だなぁ、もう。

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

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

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ