8

 僕が喫茶店に着くと、ことり先輩もほとんど同じタイミングで現れた。

 ドアの前で、声を揃えて挨拶してしまった。

「お疲れ様です」

 さて、お互いに荷物を置いてメニューを見ている。しばらくしたら、ウェイトレスが注文を聞きにしてくれた。口を開くのも同じタイミングになった。ここまでシンクロしているようで面白かった。

 でも、彼女は興味深いものを注文していた。

「バナナジュースをお願いします」

 ここのが美味しいから、たまに飲みたくなるんだよ教えてくれた。

 テーブルの上からはほのかに甘い香りが漂ってくる。

 彼女は思い出したようにリュックサックに手を入れると、とあるアイテムを出した。

 スマートフォン用の充電器だ。慣れた手つきでスマートフォンと接続してしまう。これで、バッテリーが 100% になるまで充電されるだろう。

 今日は、とある間だけループする話題だ。


 ・・・

 

 ことり先輩はバナナジュースのストローを加えて、まず一口飲みだした。そして、息を一息つくともう一口飲んでいる。

 僕は、その様子をつい眺めてしまう。

 きれいに動くのどについ見とれてしまった。

 すると、彼女はこちらを一目見て"君も飲む?"と目線で告げる。

 いやいや、それは遠慮しておこう。

 彼女はここでノートパソコンを立ち上げて、今日の話題をはじめた。

「さて、次は<繰り返し>だよ。

電卓のときに"イコールボタンを押すまで処理を続けることができる"って言ったよね。そのために処理を繰り返すことができるんだ」

 そう言って、電卓の処理を書き直してくれた。


*───────────────────

int result; //計算結果のメモリを用意する


while (buttonequal.Click = false) //イコールボタンを押すまで繰り返し

  if (button1.Click = true) //1のボタンが押されたら

    result = result + 1; //メモリに 1 が加算される

  if (button2.Click = true) //2のボタンが押されたら

    result = result + 2; //メモリに 2 が加算される

  ...


Print result; //メモリに格納されている計算結果を表示する

────────────────────


 また新しいことが書かれて、僕は目を丸くした。

「"while"っていうのは、簡単に言えばその条件のままだったら処理をしますよってこと。

つまり、"イコールボタンを押すまで繰り返し"をします。

ボタンが押されていないとfalseの判定になるから、その間は自由に数字ボタンを押すことができるよ」

 なるほど。

 ボタンが押されるまで、と言われると流れをイメージすることができた。

「この例だとボタンの話だけどさ。

例えば、カウンターが10回になるまでとか、グラスの飲み物が無くなるまでとか。

"条件が成立している間は"何回もその中の処理がされるんだ」

 ただし、このままでは問題があるんだ。わかる? こう言いながら彼女はバナナジュースを飲みながら聞いてくる。僕は分からないので、無言のまま首を横に振った。

「例えば、1から10まで数えるということは、カウントがひとつずつ増えていくってことだよね。

ただし、このジュースが減らなかったらどうする?」

 子どもは大はしゃぎするだろうなと僕は思ったが、それはもう明らかだった。

「これが飲んでも減らない魔法のジュースだとしましょう。

常にグラスの中にはあるということになる」

「お腹いっぱいになっても、飲み続けないとですね」

 "ジュースがグラスに残っている"ということは、いつかはなくならないといけない。

 だから、飲んで減るような処理を入れていないと、ずっと飲むことになってしまう。

「つまりは無限に飲み続けないといけない。

そんなことをしたら私は倒れちゃうように、せっかく作ったアプリも不具合が起きて強制的に終わるかもしれないんだよ」

 ......私もプログラム書いててやっちゃったけどね。彼女は少し自虐的に笑っている。


 ・・・


 ここで、ことり先輩は鞄からおやつを取りだした。

 小さな円筒型になっている箱には、アメでコーティングされている小さなチョコが入っている。さすがにこの暑さでも溶けていない。

「チョコの外側ってカラフルだよね」

 彼女は蓋を外して、少しの粒をトレーの上に出した。それぞれ赤と緑の色だ。

「あ、食べていいよ」

 いやいや。彼女のものだ、丁重に断ろうとしたけれど。

「むしろ食べて」

 こう言われては食べざるを得ない。話の流れがよく分からないまま赤い方のチョコを食べた。

「これさ、30個入っているんだよね。

それを一個ずつ色を読みながら食べるのは大変だよね。

プログラム的に解決するには......」

 ......君ならどうする? もうひとつのチョコを食べながら彼女は質問してきた。

「うーん......。

カウンターの変数を用意して、ひとつずつ減らしていくとか。

30からはじまって、0になるまでループするっていうのはどうでしょうか」

「そうだね、シンプルでいいね」

 彼女は感心するように頷いた。

「でも、カウントダウンさせるならもっといい方法があるんだよ」

 なんだろう? 彼女が書くコードを待つことにした。


*───────────────────

for(int i = 0; i < チョコの個数; i++)

 色を読み上げる

 食べる

Next i

────────────────────


 たったこれだけ。ことり先輩はそう言うと、にこっと笑ってみせた。僕はいまいちよく分からないというのが本音だ。

 首をかしげる僕に、彼女は画面を指差しながら教えてくれた。

「"for"っていうのも繰り返し処理のひとつ。

括弧の中をひとつずつ解いていくと、変数iが 0 からはじまる。

iの値がチョコの個数より小さいという条件が合っている場合に、iがひとつずつ増えていく」

 この文の利点は、たった1行で繰り返しの開始と終了の条件が書かれていることだという。

「そう、ここだけ読めば何回ループをするか分かるから素晴らしいんだ。

チョコの個数を書き直すだけで何回でもループできるからね」

 なるほど。

 でも、whileとfor。なぜふたつのループ文があるのだろう。

 僕がそう訊くと、彼女はバナナジュースを一口飲んだ。ストローをくわえながら説明を続ける。

「whileでチョコの個数を減らす処理を書いたってまず不正解じゃないよ。

でもさ、ジュースを飲む量って一定じゃないでしょ?

決められた回数で飲みきるなんてロボットじゃない限りできないじゃん」

 はて? ことり先輩の言おうとしていることがよく分からない。

「whileは1回でも100回でもいい。つまり"グラスが空になるまで"条件が満たされている"間ループする。

forは30とか100とか。"決められた回数"ループする」

 ここで彼女はバナナジュースを飲み干した。そしてありったけのドヤ顔を僕に向けるのだった。


 ・・・


 後日、僕はクラスメイトスタバに居る。

 久しぶりに時間ができたから、和也と絵里と一緒にコーヒーを飲んでいるのだ。

「ほんと、君って字が読みづらいよね。

それでテスト間違いになるなんて、もったいないよねえ」

「あの点数は高かったのに、困ったなあ」

 僕は彼らの様子を見ながらくすくすと笑った。

 今日もふたりのトークからはじまって、それから先生の話やクラスの話など色んな話題へと変わっていった。

 会話の風船は次から次へと膨らんでいって、上空に浮かび上がった。

 夕日が沈むまで、僕たちの話は尽きることはなかったんだ。


まるで、ことり先輩の授業を体現しているようだった。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る