はじめに
今日は、コンピュータのすごい能力の一つ、「繰り返し処理」を学びます。
想像してみてください:
- 「おはよう」を100回書く
- 1から1000まで数える
- 全員分の成績を計算する
人間がやったら大変ですよね?でも、コンピュータなら一瞬です!
毎日の繰り返し
あなたも繰り返している!
実は、私たちの生活は「繰り返し」でいっぱいです。
🔄 毎日の繰り返し
毎日すること:
- 歯を磨く(朝と夜)
- 学校に行く(月〜金)
- ご飯を食べる(朝・昼・晩)
繰り返しの作業:
- 階段を上る(1段ずつ20段)
- 縄跳び(100回跳ぶ)
- 漢字の練習(同じ字を10回書く)
これらをプログラムで表現すると、とても簡単になります!
回数を決めて繰り返す
基本の形:○回繰り返す
// 5回「こんにちは」と言う
5回繰り返す:
"こんにちは"
// 結果
// こんにちは
// こんにちは
// こんにちは
// こんにちは
// こんにちは
カウンターを使う
何回目かを数えながら繰り返すこともできます。
// 1から10まで数える
回数 を 1 から 10 まで繰り返す:
回数 + "回目"
// 結果
// 1回目
// 2回目
// 3回目
// ...
// 10回目
いろいろな繰り返し方
1. 腕立て伏せカウンター
目標回数 = 20
回数 を 1 から 目標回数 まで繰り返す:
"腕立て伏せ " + 回数 + "回!"
もし 回数 == 10 なら
"半分まで来た!がんばれ!"
もし 回数 == 目標回数 なら
"完了!お疲れさま!"
2. 九九の表を作る
// 3の段を表示
段 = 3
かける数 を 1 から 9 まで繰り返す:
答え = 段 × かける数
段 + " × " + かける数 + " = " + 答え
// 結果
// 3 × 1 = 3
// 3 × 2 = 6
// 3 × 3 = 9
// ...
// 3 × 9 = 27
3. 貯金箱シミュレーション
貯金額 = 0
毎日の貯金 = 10
日数 を 1 から 30 まで繰り返す:
貯金額 = 貯金額 + 毎日の貯金
もし 日数 % 7 == 0 なら // 7で割り切れる = 日曜日
"1週間で " + 貯金額 + "円貯まった!"
"30日後の貯金額:" + 貯金額 + "円"
条件で繰り返す
「〜になるまで」繰り返す
回数が決まっていない繰り返しもあります。
// サイコロで6が出るまで
サイコロの目 = 0
振った回数 = 0
サイコロの目 が 6 じゃない間 繰り返す:
サイコロの目 = ランダム(1〜6)
振った回数 = 振った回数 + 1
"サイコロを振った:" + サイコロの目
"6が出た!" + 振った回数 + "回かかった!"
ゲームの例:モンスターとの戦い
プレイヤーのHP = 100
モンスターのHP = 50
どちらかのHP が 0以下 になるまで繰り返す:
// プレイヤーの攻撃
ダメージ = ランダム(10〜20)
モンスターのHP = モンスターのHP - ダメージ
"モンスターに" + ダメージ + "のダメージ!"
もし モンスターのHP <= 0 なら
"モンスターを倒した!"
繰り返しを終了
// モンスターの攻撃
ダメージ = ランダム(5〜15)
プレイヤーのHP = プレイヤーのHP - ダメージ
"プレイヤーに" + ダメージ + "のダメージ!"
もし プレイヤーのHP <= 0 なら
"ゲームオーバー..."
繰り返しを終了
リストの全部に対して繰り返す
買い物リストの例
買い物リスト = ["りんご", "牛乳", "パン", "卵", "お菓子"]
合計金額 = 0
買い物リストの各商品 に対して繰り返す:
もし 商品 == "りんご" なら
値段 = 100
もし 商品 == "牛乳" なら
値段 = 200
もし 商品 == "パン" なら
値段 = 150
もし 商品 == "卵" なら
値段 = 250
もし 商品 == "お菓子" なら
値段 = 80
合計金額 = 合計金額 + 値段
商品 + ":" + 値段 + "円"
"合計:" + 合計金額 + "円"
クラスの成績処理
生徒の点数リスト = [85, 92, 78, 65, 90, 88, 72]
合計点 = 0
生徒数 = 0
点数リストの各点数 に対して繰り返す:
合計点 = 合計点 + 点数
生徒数 = 生徒数 + 1
もし 点数 >= 80 なら
"優秀!"
そうでなければ もし 点数 >= 60 なら
"合格"
そうでなければ
"もう少しがんばろう"
平均点 = 合計点 ÷ 生徒数
"クラスの平均点:" + 平均点
繰り返しの中断と継続
break(ブレイク):繰り返しを終了
// 宝探しゲーム
宝の位置 = 7
見つかった = false
位置 を 1 から 10 まで繰り返す:
"位置" + 位置 + "を探索中..."
もし 位置 == 宝の位置 なら
"宝を発見!"
見つかった = true
繰り返しを終了 // ここで終わり
"探索終了"
continue(コンティニュー):次の繰り返しへ
// 偶数だけ表示
数 を 1 から 10 まで繰り返す:
もし 数 % 2 == 1 なら // 奇数
次の繰り返しへ // スキップ
数 + "は偶数"
// 結果
// 2は偶数
// 4は偶数
// 6は偶数
// 8は偶数
// 10は偶数
二重の繰り返し
九九の表(全部)
段 を 1 から 9 まで繰り返す:
"【" + 段 + "の段】"
かける数 を 1 から 9 まで繰り返す:
答え = 段 × かける数
段 + " × " + かける数 + " = " + 答え
"---" // 区切り線
よくある間違いと対処法
間違い1:無限ループ
// ❌ 危険!終わらない繰り返し
数 = 1
数 が 10 より小さい間 繰り返す:
"こんにちは"
// 数を増やすのを忘れた!
// ✅ 正解
数 = 1
数 が 10 より小さい間 繰り返す:
"こんにちは"
数 = 数 + 1 // 忘れずに!
間違い2:範囲を間違える
// ❌ 11回繰り返してしまう
回数 を 0 から 10 まで繰り返す:
"繰り返し"
// ✅ 10回繰り返す
回数 を 1 から 10 まで繰り返す:
"繰り返し"
練習問題
問題1:星を描く
「★」を使って、次のような模様を作ってください:
★
★★
★★★
★★★★
★★★★★
答えを見る
行 を 1 から 5 まで繰り返す:
星 = ""
個数 を 1 から 行 まで繰り返す:
星 = 星 + "★"
星を表示
問題2:素数を見つける
1から20までの数字の中から、素数(1と自分自身でしか割り切れない数)を見つけてください。
答えを見る
数 を 2 から 20 まで繰り返す:
素数である = true
割る数 を 2 から (数-1) まで繰り返す:
もし 数 % 割る数 == 0 なら
素数である = false
繰り返しを終了
もし 素数である == true なら
数 + "は素数"
実践演習:CommandPlaygroundで体験
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
今日のまとめ
覚えておいてほしい3つのこと
- 繰り返し処理で、同じ作業を効率的に実行できる
- 「回数」「条件」「リスト」など、いろいろな繰り返し方がある
- 人間には大変な作業も、コンピュータなら一瞬でできる
次回予告
次のレッスンでは、「関数」について学びます。
関数は「魔法の呪文」のようなもの:
- よく使う処理に名前をつける
- 何度でも簡単に呼び出せる
- プログラムがスッキリする
料理のレシピを「関数」にすることもできます!
チャレンジ問題
ミッション:カレンダーを作る
1ヶ月分のカレンダーを表示するプログラムを作ってください。
条件:
- 月の日数は30日
- 7日ごとに改行(1週間)
- 日曜日は「🌞」、それ以外は数字
期待する出力:
🌞 2 3 4 5 6 7
🌞 9 10 11 12 13 14
🌞 16 17 18 19 20 21
🌞 23 24 25 26 27 28
🌞 30
答えの例を見る
日付 = 1
曜日 = 0 // 0=日曜日、1=月曜日...
日付 が 30以下 の間 繰り返す:
もし 曜日 == 0 なら
"🌞 "を表示(改行なし)
そうでなければ
日付 + " "を表示(改行なし)
日付 = 日付 + 1
曜日 = 曜日 + 1
もし 曜日 == 7 なら
改行する
曜日 = 0 // 日曜日に戻る
素晴らしい!繰り返し処理をマスターしました。これで、大量のデータも効率的に処理できるようになりました。コンピュータの本当の力を使えるようになってきましたね!