# Question08 - 関数 本資料の練習問題は、複数のプログラミング言語(Java / C# / PHP / Python)で共通して利用できるよう記述されています。静的型付け・動的型付けの違いや文字列の連結ルールなど、言語固有の文法仕様に基づき、問題文の表現をご使用の言語の仕様に適宜読み替えて進めてください。 ## この問題のねらい - 処理をひとまとまりの単位(関数)として定義し、呼び出せること - 関数に引数を渡し、その値を使った処理を実装できること - 関数から結果(戻り値)を呼び出し元に返し、受け取った値を利用できること - 戻り値として一覧(配列)を返す関数を実装できること - 同じ役割の処理を、渡す値の種類や個数に応じて使い分けられるようにすること 以下の設問はそれぞれ独立したプログラムとして実装してください。 --- ## 設問1 「呼び出されると、`こんにちは` という文字列を出力する、戻り値のない処理」を `hello` という名前の関数として用意してください。プログラムの実行開始点から、この `hello` 関数を呼び出してください。 - 出力: `こんにちは` --- ## 設問2 「1つの文字列を引数として受け取り、`こんにちは。(引数の値)です` という文字列を出力する、戻り値のない処理」を `hello` という名前の関数として用意してください。プログラムの実行開始点から、引数に `山田` を渡してこの `hello` 関数を呼び出してください。 - 出力: `こんにちは。山田です` --- ## 設問3 「呼び出されると、文字列 `こんにちは` を戻り値として返す処理」を `hello` という名前の関数として用意してください。プログラムの実行開始点で、`hello` 関数を呼び出した戻り値を、文字列を保持できる変数 `str` に代入したうえで、`str` の値を出力してください。 - 出力: `こんにちは` --- ## 設問4 「2つの整数 `x`, `y` を引数として受け取り、その合計を整数の戻り値として返す処理」を `sum` という名前の関数として用意してください。プログラムの実行開始点で、引数に1と2を渡してこの `sum` 関数を呼び出し、戻り値を変数 `sum` に代入したうえで、`sum` の値を出力してください。 - 出力: `3` - 補足: 変数名と関数名を同じ名前にできるかどうかは言語の仕様によるため、同じ名前にできない場合は変数名を適宜変更してよい --- ## 設問5 プログラムの実行開始点で、以下の処理を実装してください。 - `1つ目の数値を入力してください` という案内を表示したうえで、キーボードから入力された整数を変数 `num1` に代入する - `2つ目の数値を入力してください` という案内を表示したうえで、キーボードから入力された整数を変数 `num2` に代入する そのうえで、「2つの整数 `x`, `y` を引数として受け取り、その合計を整数の戻り値として返す処理」を `sum` という名前の関数として作成してください。作成した `sum` 関数に、`num1` と `num2` を引数として渡して呼び出し、戻り値を変数 `sum` に代入したうえで、`sum` の値を出力してください。 - 出力: 入力された2つの整数の合計値 - 補足: キーボードからの入力の受け取りには、使用する言語の標準的な手段を用いてよい --- ## 設問6 「2つの整数 `x`, `y` を引数として受け取り、2個の整数を格納できる新しい一覧を作り、その一覧の先頭(0番目)に `x`、次(1番目)に `y` を設定したうえで、その一覧を戻り値として返す処理」を `addArray` という名前の関数として作成してください。プログラムの実行開始点で、引数に10と20を渡してこの `addArray` 関数を呼び出し、戻り値を変数 `array` に代入したうえで、`array` に含まれる全要素を出力してください。 - 出力: 10, 20 の順に、すべての要素を出力する --- ## 設問7 「渡された値を使って `引数は(値)です` という文字列を出力する、戻り値のない処理」を `printValue` という名前の処理として、渡される値の種類(文字列・整数・小数・1文字)ごとに用意してください。 プログラムの実行開始点から、作成した `printValue` を、次の4種類の値をそれぞれ渡して呼び出してください。 1. 文字列 `こんにちは` を渡して呼び出す 2. 整数 `100` を渡して呼び出す 3. 小数 `10.1` を渡して呼び出す 4. 1文字だけを保持する値 `A` を渡して呼び出す - 出力: ``` 引数はこんにちはです 引数は100です 引数は10.1です 引数はAです ``` - 補足: 同じ名前の処理を、渡す値の種類によって使い分けられる言語では、`printValue` という同じ名前のまま、種類ごとに処理を用意してください。同じ名前のまま値の種類で使い分ける仕組みがない言語では、`printValueString`、`printValueInt` のように区別できる名前を付けて、上記と同じ呼び出し結果が得られるようにしてください --- ## 設問8 「渡されたすべての整数の合計を、整数の戻り値として返す処理」を `sum` という名前の処理として、引数の個数(2個・3個・4個)ごとに用意してください。 プログラムの実行開始点から、作成した `sum` を、次の3種類の整数をそれぞれ渡して呼び出し、戻り値を出力してください。 - 2個の場合: 1, 2 - 3個の場合: 1, 2, 3 - 4個の場合: 1, 2, 3, 4 - 出力: ``` 3 6 10 ``` - 補足: 同じ名前の処理を、引数の個数によって使い分けられる言語では、`sum` という同じ名前のまま、個数ごとに処理を用意してください。同じ名前のまま個数で使い分ける仕組みがない言語では、`sum2`、`sum3`、`sum4` のように区別できる名前を付けて、上記と同じ呼び出し結果が得られるようにしてください