序章
第一章
Bashで理解するプログラミングの4つの要素
第二章
JavaScriptで学ぶプログラミングの基礎
その他
関数とは何かを知ろう
説明
前回は変数の概念について学びました。
変数というのは任意のデータを保存しておいて、プログラムの中で、その保存した値を利用するために
使うものでしたよね。
それでは前回のように、kansuu.shをVSCode開いてください。

ここまで準備出来たでしょうか?
ターミナルで以下のようにkansuu.shを実行してください。
kansuu.sh: line 11: herasu: command not found
こういう結果になりました。
11行目で「herasu」というコマンドが見つからないと言って怒られていますね。(herasu : command not found)
まず、プログラムの流れを説明します。
- 6行目で変数「x」に1を保存しています
- 8行目で1行目の「fuyasu」という名前がもう一度出てきます
- 11行目で「herasu」という名前が出てきますが、ここでコマンドが見つからないと怒られています
課題
さて、先ほど実行した時、「herasu」というコマンドが見つからないって怒られましたよね?
プログラムをよく読んでみると、
{
return $(( $1 + 1 ))
}
1行目に「fuyasu」はあります。
きっと「fuyasu」みたいな何かがあれば、このプログラムはエラーなく実行できるのでしょう。
それでは「fuyasu」の内容をコピーして、「herasu」を作ってみましょうか。
{
return $(( $1 + 1 ))
}
# ここから下がコピー&ペーストした内容
function fuyasu()
{
return $(( $1 + 1 ))
}
2つ目の「fuyasu」はコピーした内容をペーストしたものです。
「fuyasu」という名前を「herasu」に変更してください。
{
return $(( $1 + 1 ))
}
function herasu() # ここをfuyasuからherasuに変更
{
return $(( $1 + 1 ))
}
それでは、kansuu.shをもう一度実行してください。
2
このように表示されたでしょうか?
(herasu : command not foundは出なくなりましたよね)
先ほどコピー&ペーストした「herasu」の”{“から”}”までは「fuyasu」と同じものになっています。
足し算のままになっていますよね。
それでは「herasu」の計算式が引き算になるようにプログラムを修正してください。
正しく減らして、もう一度実行すると、以下のように表示されます。
2
1
ところで、新しく追加した「herasu」や元からあった「fuyasu」は、一体何でしょうか?
これらは関数と言います。
プログラミングをする時に、変数と並んで重要な考え方です。
関数は主に次のような特徴を持ちます。以下の絵を見ながら読んでみてください。
・「引数」(ひきすう)を受け取ることができる。
・関数が処理した結果を「戻り値」(もどりち)として呼び出し元に返すことができる。

上の絵では、呼び出し元は”ぼく”で、”ねこちょうだい”という関数を呼び出しています。
関数を呼び出す時の引数は、呼び出し元である”ぼく”が持っていたお金のうち5000万ドルですね。
”ねこちょうだい”という関数は、引数で5000万ドルもらったので”ねこ”を戻り値として返します。
呼び出し元である”ぼく”の手元には5000万ドルが残っていて、戻り値としてもらった”ねこ”を飼うことができます。
さて、kansuu.shに話を戻しましょう。
引数とは、以下のように「fuyasu」も「herasu」もkansuu.shの中では「$1」という特別な名前の変数です。
1を足したり引いたりする元になっている数値ですね。
もともとは呼び出し元にあった「x」という変数です。
{
return $(( $1 + 1 ))
}
続いて関数の呼び出し元に関して説明します。
「fuyasu」の呼び出し元は、以下の箇所です。
$xという変数を引数にして「fuyasu」という関数を呼び出しています。
また、「herasu」の呼び出し元は、以下の箇所です。
「fuyasu」も「herasu」も、このプログラムの中では$xという変数を引数にして、同じように呼び出していることが理解出来たでしょうか?
なお、bashの場合、関数の戻り値は「$?」という特別な変数に保存されています。
上記のように書くことで、関数の戻り値を表示しています。
Bashでは関数を定義するときに、関数名の前に付ける約束事の一つです。
今回は授業は「関数」の考え方について学びました。
「変数」と「関数」の基本的な考え方は、どのプログラム言語にも通じるものです。
そして、今後もこの2つの単語は授業の中で使いますので、しっかりと頭に入れておいてください。
答え合わせ
授業の中で幾つかプログラムを変更してもらいましたが、こちらのリンクから正しく修正したプログラムを見ることが出来ます。
以上で第二回の授業は終わりです。
お疲れ様でした。