体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

【選択式問題】ループ処理パズル【言語不問】解答と解説

ループ処理パズル

本問題は、仮想コードのルールに従った処理の結果を、選択肢から選ぶというものでした。

それでは以下、各問題とその解答を見ていきましょう。

問題のオープニング

あなたは、ループの女神「ルー=プ」の神殿にやって来ました。

この神殿では、女神の出す選択肢を正しく選べば富を約束され、間違うと死を約束されます。

あなたは、歴戦のプログラマーとして、女神の意図をくんで解答しなければなりません。

この神殿では、仮想コードが提示されます。その結果たどりつく処理の位置を、選択肢から選びます。

// 仮想コードのルール
A = B …… 変数AにBの値を代入。
A > B …… AがBより大きい場合にtrue。それ以外はfalse。
A

問題1

// 問題
cnt = 0
while (cnt < 3) {
cnt = cnt + 1
}
ANSWER(cnt)

// 選択肢
cntは0
cntは1
cntは2
cntは3

それでは問題の答えが、どのような値になるか、見ていきましょう。ループ処理を順に見ていき、変数の値を確かめていきます。

// 仮想コードの処理

cnt = 0 // 変数cntは0

▼▼▼▼▼▼▼▼▼▼

while (cnt < 3) {
cnt = cnt + 1
}

while (0 < 3) { // 変数cntは0、「0 < 3」はtrueなので{ }内を処理
cnt = 0 + 1 // 変数cntは0+1で、1になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 3) {
cnt = cnt + 1
}

while (1 < 3) { // 変数cntは1、「1 < 3」はtrueなので{ }内を処理
cnt = 1 + 1 // 変数cntは1+1で、2になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 3) {
cnt = cnt + 1
}

while (2 < 3) { // 変数cntは2、「2 < 3」はtrueなので{ }内を処理
cnt = 2 + 1 // 変数cntは2+1で、3になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 3) {
cnt = cnt + 1
}

while (3 < 3) // 変数cntは3、「3 < 3」はfalseなので終了

▼▼▼▼▼▼▼▼▼▼

ANSWER(cnt)

ANSWER(3) // 変数cntは3、3が解答

上記の通り、答えは4番目の選択肢の『cntは3』になります。

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード

// 関数
function ANSWER(n) {console.log(“cntは” + n)}

// 問題
cnt = 0
while (cnt < 3) {
cnt = cnt + 1
}
ANSWER(cnt)

// 出力結果
cntは3

問題2

// 問題
cnt = 0
i = 0
while (i < 3) {
cnt = cnt + i
i = i + 1
}
ANSWER(cnt)

// 選択肢
cntは0
cntは1
cntは2
cntは3

それでは問題の答えが、どのような値になるか、見ていきましょう。ループ処理を順に見ていき、変数の値を確かめていきます。

// 仮想コードの処理

cnt = 0 // 変数cntは0
i = 0 // 変数iは0

▼▼▼▼▼▼▼▼▼▼

while (i < 3) {
cnt = cnt + i
i = i + 1
}

while (0 < 3) { // 変数iは0、「0 < 3」はtrueなので{ }内を処理
cnt = 0 + 0 // 変数cntは0+0で、0になる
i = 0 + 1 // 変数iは0+1で、1になる
}

▼▼▼▼▼▼▼▼▼▼

while (i < 3) {
cnt = cnt + i
i = i + 1
}

while (1 < 3) { // 変数iは1、「1 < 3」はtrueなので{ }内を処理
cnt = 0 + 1 // 変数cntは0+1で、1になる
i = 1 + 1 // 変数iは1+1で、2になる
}

▼▼▼▼▼▼▼▼▼▼

1 2次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。