メインコンテンツへスキップ
レッスン 8 / 15推定時間: 25

関数=「おまじない」:よく使う作業に名前をつけよう

同じ処理を何度も書くのは大変!関数を使えば、よく使う処理に名前をつけて、魔法の呪文のように呼び出せます。プログラムをスッキリ整理する方法を学びましょう。

はじめに

今日は、プログラミングの便利な道具関数(かんすう)」について学びます。

関数は「魔法のおまじない」のようなもの。

一度作れば、何度でも簡単に使えます!

関数って何だろう?

日常生活の「関数」

実は、私たちの生活にも「関数」のようなものがたくさんあります。

📦 日常の「名前付き作業」

「朝の準備」という関数

  1. 顔を洗う
  2. 歯を磨く
  3. 着替える
  4. 朝ごはんを食べる

「宿題をする」という関数

  1. 教科書を開く
  2. ノートを準備する
  3. 問題を解く
  4. 答え合わせをする

「カレーを作る」という関数

  1. 材料を切る
  2. 炒める
  3. 煮込む
  4. ルーを入れる

「朝の準備して!」と言われたら、この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. おみくじ関数

関数 おみくじを引く():
    運勢番号 = ランダム(16)
    
    もし 運勢番号 == 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:じゃんけん関数

コンピュータとじゃんけんをする関数を作ってください。

  • プレイヤーの手を引数で受け取る
  • コンピュータはランダムに手を決める
  • 勝敗を判定して結果を返す
答えを見る
関数 じゃんけん(プレイヤーの手):
    // コンピュータの手を決める
    番号 = ランダム(13)
    もし 番号 == 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つのこと

  1. 関数は「名前付きの作業」(何度でも使える魔法の呪文)
  2. 引数で材料を渡し、戻り値で結果を受け取る
  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で割ることはできません

素晴らしい!関数の使い方をマスターしました。これで、複雑なプログラムも整理して書けるようになりました。プログラマーへの道を着実に進んでいますね!

さらに学習を続けるには

素晴らしい学習ペースです!次のレッスンに進むには、無料会員登録をお願いします。無料会員では各コース3レッスンまで学習できます。

無料で続きを学ぶ

各コース3レッスンまで学習可能

学習進捗の自動保存

コース修了証明書の発行