はじめに
今日は、プログラミングの便利な道具「関数(かんすう)」について学びます。
関数は「魔法のおまじない」のようなもの。
一度作れば、何度でも簡単に使えます!
関数って何だろう?
日常生活の「関数」
実は、私たちの生活にも「関数」のようなものがたくさんあります。
📦 日常の「名前付き作業」
「朝の準備」という関数:
- 顔を洗う
- 歯を磨く
- 着替える
- 朝ごはんを食べる
「宿題をする」という関数:
- 教科書を開く
- ノートを準備する
- 問題を解く
- 答え合わせをする
「カレーを作る」という関数:
- 材料を切る
- 炒める
- 煮込む
- ルーを入れる
「朝の準備して!」と言われたら、この4つの作業をまとめてやりますよね。
これがまさに関数の考え方です!
関数の基本
関数を作る
// 「挨拶する」という関数を作る
関数 挨拶する:
"おはようございます!"
"今日もがんばりましょう!"
"よろしくお願いします!"
// 関数を使う(呼び出す)
挨拶する()
// 結果
// おはようございます!
// 今日もがんばりましょう!
// よろしくお願いします!
なぜ関数を使うの?
関数を使わない場合:
// 朝の挨拶
"おはようございます!"
"今日もがんばりましょう!"
"よろしくお願いします!"
// お昼の挨拶(同じことをまた書く)
"おはようございます!"
"今日もがんばりましょう!"
"よろしくお願いします!"
// 夕方の挨拶(また同じ...)
"おはようございます!"
"今日もがんばりましょう!"
"よろしくお願いします!"
関数を使う場合:
// 関数を一度作る
関数 挨拶する:
"おはようございます!"
"今日もがんばりましょう!"
"よろしくお願いします!"
// 何度でも簡単に使える!
挨拶する() // 朝
挨拶する() // お昼
挨拶する() // 夕方
引数(ひきすう):関数に情報を渡す
材料を渡して結果を変える
関数に「材料」を渡すことで、結果を変えることができます。
// 名前を受け取って挨拶する関数
関数 名前で挨拶(名前):
"こんにちは、" + 名前 + "さん!"
"今日も元気ですか?"
// 使ってみる
名前で挨拶("太郎")
// こんにちは、太郎さん!
// 今日も元気ですか?
名前で挨拶("花子")
// こんにちは、花子さん!
// 今日も元気ですか?
複数の引数
// 計算する関数
関数 足し算(数1, 数2):
答え = 数1 + 数2
数1 + " + " + 数2 + " = " + 答え
// 使ってみる
足し算(3, 5) // 3 + 5 = 8
足し算(10, 25) // 10 + 25 = 35
足し算(100, 200) // 100 + 200 = 300
戻り値:関数から結果をもらう
結果を返す関数
関数は計算結果や処理結果を「返す」ことができます。
// 消費税を計算する関数
関数 消費税込み価格(値段):
税率 = 0.1 // 10%
税額 = 値段 × 税率
合計 = 値段 + 税額
返す 合計
// 使ってみる
本の値段 = 1000
支払額 = 消費税込み価格(本の値段)
"支払額は" + 支払額 + "円です" // 支払額は1100円です
いろいろな戻り値
// 成績を判定する関数
関数 成績判定(点数):
もし 点数 >= 90 なら
返す "秀"
そうでなければ もし 点数 >= 80 なら
返す "優"
そうでなければ もし 点数 >= 70 なら
返す "良"
そうでなければ もし 点数 >= 60 なら
返す "可"
そうでなければ
返す "もう少しがんばろう"
// 使ってみる
私の成績 = 成績判定(85)
"あなたの成績は:" + 私の成績 // あなたの成績は:優
実践的な関数の例
1. おみくじ関数
関数 おみくじを引く():
運勢番号 = ランダム(1〜6)
もし 運勢番号 == 1 なら
返す "大吉!最高の運勢です!"
そうでなければ もし 運勢番号 == 2 なら
返す "中吉!いいことがありそう"
そうでなければ もし 運勢番号 == 3 なら
返す "小吉!まずまずの運勢"
そうでなければ もし 運勢番号 == 4 なら
返す "吉!普通の運勢"
そうでなければ もし 運勢番号 == 5 なら
返す "末吉!もう少しがんばって"
そうでなければ
返す "凶...気をつけて過ごそう"
// 3回引いてみる
3回繰り返す:
結果 = おみくじを引く()
結果を表示
2. BMI計算関数
関数 BMI計算(体重, 身長cm):
// 身長をメートルに変換
身長m = 身長cm ÷ 100
// BMIを計算
BMI = 体重 ÷ (身長m × 身長m)
返す BMI
関数 BMI判定(BMI):
もし BMI < 18.5 なら
返す "やせ型"
そうでなければ もし BMI < 25 なら
返す "標準"
そうでなければ もし BMI < 30 なら
返す "肥満度1"
そうでなければ
返す "肥満度2"
// 使ってみる
私のBMI = BMI計算(50, 160)
判定 = BMI判定(私のBMI)
"BMI: " + 私のBMI + " (" + 判定 + ")"
3. パスワード強度チェック関数
関数 パスワード強度チェック(パスワード):
強度ポイント = 0
// 長さをチェック
もし 文字数(パスワード) >= 8 なら
強度ポイント = 強度ポイント + 1
もし 文字数(パスワード) >= 12 なら
強度ポイント = 強度ポイント + 1
// 数字が含まれているか
もし パスワードに数字が含まれる なら
強度ポイント = 強度ポイント + 1
// 大文字が含まれているか
もし パスワードに大文字が含まれる なら
強度ポイント = 強度ポイント + 1
// 記号が含まれているか
もし パスワードに記号が含まれる なら
強度ポイント = 強度ポイント + 1
// 判定
もし 強度ポイント >= 4 なら
返す "とても強い"
そうでなければ もし 強度ポイント >= 3 なら
返す "強い"
そうでなければ もし 強度ポイント >= 2 なら
返す "普通"
そうでなければ
返す "弱い"
// 使ってみる
強度 = パスワード強度チェック("Pass123!")
"パスワードの強度:" + 強度
関数の中で関数を使う
料理の例
関数 野菜を切る():
"にんじんを切る"
"じゃがいもを切る"
"たまねぎを切る"
関数 カレーを作る():
野菜を切る() // 他の関数を呼ぶ
"肉を炒める"
"野菜を加えて炒める"
"水を入れて煮込む"
"ルーを入れる"
"完成!"
// カレーを作る
カレーを作る()
よくある間違いと対処法
間違い1:引数の数が違う
// ❌ 間違い
関数 掛け算(数1, 数2):
返す 数1 × 数2
結果 = 掛け算(5) // エラー!引数が足りない
// ✅ 正解
結果 = 掛け算(5, 3) // 15
間違い2:戻り値を忘れる
// ❌ 間違い
関数 2倍にする(数):
答え = 数 × 2
// 返すのを忘れた!
結果 = 2倍にする(10) // 結果は空っぽ
// ✅ 正解
関数 2倍にする(数):
答え = 数 × 2
返す 答え
結果 = 2倍にする(10) // 20
練習問題
問題1:じゃんけん関数
コンピュータとじゃんけんをする関数を作ってください。
- プレイヤーの手を引数で受け取る
- コンピュータはランダムに手を決める
- 勝敗を判定して結果を返す
答えを見る
関数 じゃんけん(プレイヤーの手):
// コンピュータの手を決める
番号 = ランダム(1〜3)
もし 番号 == 1 なら
コンピュータの手 = "グー"
そうでなければ もし 番号 == 2 なら
コンピュータの手 = "チョキ"
そうでなければ
コンピュータの手 = "パー"
"コンピュータ:" + コンピュータの手
// 勝敗判定
もし プレイヤーの手 == コンピュータの手 なら
返す "引き分け"
そうでなければ もし (プレイヤーの手 == "グー" かつ コンピュータの手 == "チョキ") または
(プレイヤーの手 == "チョキ" かつ コンピュータの手 == "パー") または
(プレイヤーの手 == "パー" かつ コンピュータの手 == "グー") なら
返す "あなたの勝ち!"
そうでなければ
返す "あなたの負け..."
// 使ってみる
結果 = じゃんけん("グー")
結果を表示
問題2:平均点計算関数
テストの点数のリストを受け取って、平均点と最高点、最低点を計算する関数を作ってください。
答えを見る
関数 成績分析(点数リスト):
合計 = 0
最高点 = 0
最低点 = 100
人数 = 0
点数リストの各点数 に対して繰り返す:
合計 = 合計 + 点数
人数 = 人数 + 1
もし 点数 > 最高点 なら
最高点 = 点数
もし 点数 < 最低点 なら
最低点 = 点数
平均点 = 合計 ÷ 人数
"平均点:" + 平均点
"最高点:" + 最高点
"最低点:" + 最低点
// 使ってみる
テストの点数 = [85, 92, 78, 65, 90, 88, 72]
成績分析(テストの点数)
実践演習: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つのこと
- 関数は「名前付きの作業」(何度でも使える魔法の呪文)
- 引数で材料を渡し、戻り値で結果を受け取る
- 関数を使うとプログラムがスッキリして、間違いも減る
次回予告
次のレッスンでは、「配列とリスト」について学びます。
たくさんのデータをまとめて扱う方法:
- 買い物リスト
- クラスの名簿
- ゲームのアイテム一覧
データをきれいに整理する方法を身につけましょう!
チャレンジ問題
ミッション:電卓関数を作る
四則演算(足し算、引き算、掛け算、割り算)ができる電卓関数を作ってください。
条件:
- 2つの数字と演算子(+、-、×、÷)を受け取る
- 計算結果を返す
- 0で割ろうとしたらエラーメッセージを返す
答えの例を見る
関数 電卓(数1, 演算子, 数2):
もし 演算子 == "+" なら
返す 数1 + 数2
そうでなければ もし 演算子 == "-" なら
返す 数1 - 数2
そうでなければ もし 演算子 == "×" なら
返す 数1 × 数2
そうでなければ もし 演算子 == "÷" なら
もし 数2 == 0 なら
返す "エラー:0で割ることはできません"
そうでなければ
返す 数1 ÷ 数2
そうでなければ
返す "エラー:正しい演算子を使ってください"
// 使ってみる
結果1 = 電卓(10, "+", 5) // 15
結果2 = 電卓(20, "-", 8) // 12
結果3 = 電卓(6, "×", 7) // 42
結果4 = 電卓(100, "÷", 4) // 25
結果5 = 電卓(10, "÷", 0) // エラー:0で割ることはできません
素晴らしい!関数の使い方をマスターしました。これで、複雑なプログラムも整理して書けるようになりました。プログラマーへの道を着実に進んでいますね!