関数の仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、エクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが「3,5,7」(引数)であるならば結果は「15」です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
この章以前の関数は組み込み関数と言いまして、C++によって始めから用意されている関数です。
例えばprintf関数は文字列を出力する関数ですが、C++でそのような働きを作ってくれています。
組み込み関数の他にC++では自分で好き勝手に「ある働きを持った関数」を作ることができます。
これをユーザー定義関数と言いますが、この関数の作成方法をこの章で説明していきます。
例えば消費税を自動で計算する関数を自分で作りたいとします。
その場合、商品のお金を関数に渡すと関数は商品金額に消費税率を掛けた処理をして、その消費税を返すという関数を作ることになります。
関数の構文は以下の通りですが、これを関数の定義と呼びます。 〇引数とは関数が利用するデータのことを言います。
〇関数の中の引数は左端からと数えていきます。
〇1個以上の引数を記述する場合はカンマで区切ってください。
〇 returnを記述するときはという形で書きます。
returnは必要がない場合、省略することが出来ます。
main関数も関数の一種ですが、他にも色々な関数を作ることが出来ます。
main関数は特別で他にどんな関数を作っても一番初めに実行される関数です。
次は関数の実行方法について説明します。
関数はmain関数を除いて関数を定義しただけでは何も動きません。
関数を実行させるためには関数を呼び出す必要があります。
呼び出すことによって関数の中身が実行されます。 では1番簡単な例から、見てみましょう。 初めにプログラムの流れから説明します。 では関数の仕組みを詳しく見てみましょう。 戻り値の型の箇所にvoidと書かれていますが、この例の場合は戻り値が無いのでvoidと記述します。
関数とは入力したデータ(引数)に基づいて決められた処理を行い、戻り値という結果を返す機能を持っていますと説明しましたが、その戻り値の型を関数名の左側に書きます。
この例のようにreturn文がなくて戻すための値がない場合にはvoidと書きます。 つまり、関数の呼び出し元から渡されてくる引数が無いということです。 この例の場合はの箇所でhello関数を呼び出していますが、引数がカラです。 以下の書き方はエラーです。 次は引数のある関数についての説明をします。
では例をみてみましょう。 tashizan関数を実行し終えたのならばmain関数に戻ってきて,でプログラムを終了します。 次は戻り値のある例を見てみましょう。 tashizan関数の中で足し算の計算がされて、変数zにその結果を代入しています。
そして、そのz(戻り値)をreturn を使ってmain関数内のに戻して、その値を変数dに代入しています。 このようにreturnは関数の呼び出し元に値を返す役割があります。
returnの書き方はです。
図にすると以下のような過程で進みます。 では、どのような時にのように戻り値を返す必要があるのか?
それは呼びだし側であるmain関数でその値を活用したい場合に戻り値を返します。
月: 2015年5月
記号定数について知ろう
この章では記号定数について説明します。
記号定数とは変数のように値を変更することが出来ない値のことを言います。
下記のようにdefine構文を使えば、特定の値を記号定数として定義できます。 では例をみてみましょう。 この例ではfor文の条件式の中で記号定数を使用しています。
この例の記号定数名はRですが、これは3を意味しています。
つまり、プログラムの中にRと言う文字があるならば3と置き換えますと言う意味です。
以下の3つのfor文の中の条件式に3という箇所がありますが、変更が生じた場合にこれをすべて変更するのは面倒です。
そこでこの3という数値を記号定数にすることで変更が生じた場合にも記号定数の値だけを変更すればいいので変更が楽になります。
計算プログラムを作ろう
この章では足し算の練習プログラムを作成します。
問題を5問解いて、正解数をカウントします。
例えば以下のプログラムを実行すると「14958」などの乱数を出力します。 範囲を限定したい場合には例えばと書きますと1から6までのなかでランダムな数を返すようになります。
この例であれば1から50までのランダムな数を返します。 つまり、以下の順番で配列に入ります。 つまり、以下の順番で配列に入ります。 次は以下の箇所の説明をします。 結果は以下の通りです。 実はこの計算プログラムは何回実行しても同じ計算式しか表示されません。
毎回違う計算式を表示させたいのならばとを以下の箇所に付け加えます。 詳しくは「switch文で占いを判定しよう」で説明します。
この章ではcontinueの使い方を説明します。
continueは現在進行している周回を抜けたとしても、ループ自体は続けたい場合に使います。
主にfor文やwhile文などでよく使われます。
では例をみてみましょう。 if(i==g)の条件がTRUEの場合、下の行にあるを実行することなく、forの先頭に戻ります。
例の場合はgが4なので「4つのリンゴ」と言う文は実行しません。 例ではiとgがイコールになったら、forの先頭に戻って条件判定をしてループを続けるかどうか決めます。
先頭に戻ってiは5になりますが、5はまだTRUEなので「5つのリンゴ」を出力します。
breakと違いループ自体を止めることはしません。
whileとifとbreakを組み合わせて使おう
forとifとbreakを組み合わせて使おう
この章ではfor文の中でのbreakの使い方について説明します。
switch文の中でbreakを使用しましたが、これは一連の流れを強制的に中止したい時やブロックを抜けたい時に使いました。
このbreakはfor文の中でも使用することが出来ますので、例を見てみましょう。 for文のブロックの中にif文が入っていますが、
このif文の意味はbreakを使用しているので「もし、iが4になったらfor文を抜けますよ」と言う意味です。
ですので、「4つのリンゴ」「5つのリンゴ」を出力することなくループを終了します。
breakはこのように一連の流れを強制的に中止したい時に使用します。 次の例はforの入れ子の中でbreakを使用しています。 この例では上から2つ目のforの中でbreakを使っていますが、forの中でbreakを使った場合、breakで抜けることができるのはbreakのあるfor文(例の場合は上から2つ目)だけです。
つまり例の場合は上から2つ目のfor文の中のif文の条件部分が3を超えたら、(上から2つ目の)for文をbreakするのですが、breakした後はまた一番前のに戻ってループを繰り返します。 次の例をみてみましょう。 一つ前の例のように入れ子の中のfor文でbreakを使用した場合、抜けることが出来るのは内側のfor文だけですが、一気に外側のブロック(一番前のfor)を抜けたい場合の方法について説明します。
ある条件になったら繰り返しを止めたいと思う箇所にと記述してください。
次に抜けたい箇所にと言う形式で記述すると、そこまで実行位置を移すことが出来ます。
ラベル名は変数名と同じ規則で自由に付けることが出来ます。
この例では の箇所での結果が3より大きければが実行されて、のある場所まで実行位置を移すので二重ループそのものを抜けます。 for以外でもgotoは使うことが出来ます。
以下の例ではif文の中でgotoを使用しています。 初めにint number = 0;の箇所でnumberに0を代入しています。
次にの箇所で「ループ」を出力します。
次にnumber++;の箇所で1を足しているので1になります。
次にif文の中での場合にの箇所まで飛び、ではない場合にはの箇所まで飛びます。
ですので、初めに5回「ループ」を出力します。
この後にがTRUEになるのでが実行され、の箇所に実行位置が移ります。
そして、が実行されてプログラムを終了します。
for文で九九を作ろう
for文を入れ子にしよう
この章ではfor文の応用でfor文のネスト(入れ子)について説明します(つまりfor文の中にfor文を入れることができる)。
では例をみてみましょう。 ここがTRUEなので が3回実行されて
1掛ける1=1
1掛ける2=2
1掛ける3=3
が出力されます。
つまり、外側のfor文が1周するごとに、内側のfor文は3周します。 上の3番でiは2になりましたが、まだTRUEですので、 が3回実行されて
2掛ける1=2
2掛ける2=4
2掛ける3=6
が出力されます。
上の5番でiは3になりましたが、まだTRUEですので、 が3回実行されて
3掛ける1=3
3掛ける2=6
3掛ける3=9
が出力されます。 まとめますとこの例では外側のfor文が1周するごとに、中のfor文は3周しています。
これがfor文の入れ子です。
for文について知ろう
この章ではfor文について説明します。
while文は何回も同じ処理をする時に必要でしたが、for文もwhile文と同じ働きがあります。 forが最初に実行される時には初期値式から始まります。
初期値式とは条件式を判定するときの初めの変数です。
初期値式は下の例で言えばです。
次に初期値式を元に条件式を判定してTRUEであるならば、ブロックの中の文が実行されることになります。
条件式は下の例で言えばです。
ブロックの中の文が実行された後に増減式において、初期値を足したり引いたりする行為を行います。
増減式は下の例で言えばです。
プログラムの内容によってはなどの減算子の記述もできます。
では例をみてみましょう。 次の例は2つfor文がありますが、上のforで配列にデータを入れて、下のforでそのデータを取り出しています。
for文と配列の組み合わせを学んでください。 この例は最初のforでtashizan配列に要素を入れて、次のforで配列の要素を出力しています。 次の例ではfor文で文字列を出力する方法について説明します。 のように配列に文字列を入力する時には文字列の最後にが自動で付くと言いましたが、これを利用して、の条件式のように配列の要素がではない限りループします。
がありましたら、ループを終了します。