結果は以下の通りです。2015年5月29日この章では今まで説明してきたif文と配列を使って、占いプログラムを作ります。resultは大吉から大凶までの要素を持つ配列になっています。answerには0から6までのランダムな数が入ります。ランダムな数を得るにはrandメソッドを使います(メソッドの意味については「メソッドについて知ろう」の章で説明します)。1未満の乱数値を生成します。この例のrand(7)であれば0から6までの乱数値を生成します(7までではありません)。rand(6)+1であれば1から6までの乱数値を生成します。乱数を得た後はif文で判定を行います。いう条件式になるので、「大吉です」が出力されます。結果は以下の通り、毎回違う値が出力されます。これをcase..when文で書き換えると以下のようになります(先頭の2行は省略)。2015年5月25日この章ではswitch文で占いを作成します。占いは毎回同じ判定では変なので、結果はランダムになるようにします。初めにランダムな数をransuuに入れるのですが、このランダムな数を生成するにはrand関数を使用します。書きますと1から6までのランダムな数を返すようになります。このrand関数だけではプログラムを何回実行しても同じ結果にしかなりません。これは乱数を初期化していないからです。この乱数を初期化するにはsrand関数を使います。srand関数は乱数の初期値を設定する関数です。乱数に使う初期値を変える関数です。srand(1)と書くと初期値が1、srand(2)と書くと初期値が2の乱数を導き出すことが出来ます。入れないで、rand関数を実行してみましょう。この例の実行結果は以下の通りです。一度実行してみましょう。結果は以下の通りですが、1回目の結果と同じです。rand関数はランダムに数値を導き出してくれますが、乱数になるのは1回だけです。そこで違う乱数を導き出すためにsrand関数を使います。次の例は先ほどの例にsrand(6)を追加しただけです。結果は何度実行しても以下の通りです。初期値を変えたので乱数の値は変わりましたが、この例のようにsrand関数の中の引数を固定した場合はいつまで経っても同じ値になります。この中のtimeはtime関数で、1970年1月1日0時0分0秒からの経過時間を返します。time関数をsrandの引数に使うことで、その瞬間の時刻が引数に入りますので、その都度違う数値を引数に与えることができます。time関数の引数はNULLにします。記述する必要があります。ransuuには0から6までの数値がランダムに入るので、それをswitch文で判断して、unsei変数に代入しています。それを最後に出力します。2015年5月24日この章では足し算の練習プログラムを作成します。問題を5問解いて、正解数をカウントします。以下のプログラムを実行すると「14958」などの乱数を出力します。書きますと1から6までのなかでランダムな数を返すようになります。この例であれば1から50までのランダムな数を返します。以下の順番で配列に入ります。以下の順番で配列に入ります。次は以下の箇所の説明をします。結果は以下の通りです。実はこの計算プログラムは何回実行しても同じ計算式しか表示されません。以下の箇所に付け加えます。詳しくは「switch文で占いを判定しよう」で説明します。2015年5月9日この章ではswitch文で占いを作成します。占いは毎回同じ判定ではなく、結果はランダムになるようにします。初めにランダムな数をransuuに入れるのですが、このランダムな数を生成するにはrand関数を使用します。書かなくてはいけませんので注意してください。書きますと1から6までのランダムな数を返すようになります。このrand関数だけではプログラムを何回実行しても同じ結果にしかなりません。理由は乱数を初期化していないからです。この乱数を初期化するにはsrand関数を使います。srand関数の説明をしていきます。〇「unsigned」は「符号無し整数」で「0を含むプラスの値」が使用できる型です。記述する必要があります。〇srand関数はrand関数を使用する時に一緒に使用します。〇srand関数は乱数の初期値を設定する関数です。乱数に使う初期値を変える関数です。すると初期値が2の乱数を導き出すことが出来ます。入れないで、rand関数を実行してみましょう。この例の実行結果は以下の通りです。一度実行してみましょう。結果は以下の通りですが、1回目の結果と同じです。rand関数はランダムに数値を導き出してくれますが、乱数になるのは初めの1回だけです。そこで乱数の初期値を設定する関数であるsrand関数で実行結果を変えることが出来ます。結果は何度実行しても以下の通りです。初期値を変えたので乱数の値は変わりましたが、この例のようにsrandの中の引数を固定した場合はいつまで経っても同じ値になります。この中のtimeはtime関数で、1970年1月1日0時0分0秒からの経過時間を返します。time関数をsrandの引数に使うことで、その瞬間の時刻が引数に入りますので実行の都度違う数値を与えることができます。記述する必要があります。これで毎回違う結果を出力することが出来ます。ransuuに入った数字で大吉から大凶までをランダムに占い、その結果をポインタのunseiに入れて出力しています。2015年5月9日この章では足し算の練習プログラムを作成します。問題を5問解いて、正解数をカウントします。次は初めのfor文の中を説明します。=>rand関数は乱数を返します(関数については「関数について知ろう」でします。計算をするのに毎回違う数を使いたいのでrand関数を使います。具体的には0から32767までの数字の中でランダムな数を返します(詳しくは「switch文で占いを判定しよう」で説明します)。書きますと1から6までの中でランダムな数を返すようになります。この例であれば1から50までのランダムな数を返します(詳しくは「switch文で占いを判定しよう」で説明します)。書かなくてはいけませんので注意してください。次の箇所の説明をします。number1とnumber2の足し算の文を表示します。以下の赤枠の箇所です。=>答えをinput変数に代入します。scanfで入力した値が入っているinputを配列であるanswerに入れます。for文で5回繰り返しているので、その都度入力した値が配列に入ります。number1とnumber2の結果(つまり正解値)をresult配列に代入します。for文で5回繰り返しているので、その都度正解値が配列に入ります。次の箇所の説明をします。=>ここでは配列answerに入っている答えと配列resultに入っている答えを比べて、正解ならば変数rightanwerに1を足します。for文で5回繰り返しているので、その都度答え合わせをして、正解ならば変数rightanwerに1を足します。結果は以下の通りです。実はこの計算プログラムは何回実行しても同じ計算式しか表示されません。毎回違う計算式を表示させたいのならば、以下の赤枠の記述を付け加えます。詳しくは「switch文で占いを判定しよう」で説明します。2015年5月3日この章では文字列に関する関数について説明します。先ほど配列に関する関数を説明しましたが、今度は文字列を操作する関数について説明します。substr関数は指定した文字列の中の一部分を取得したり、文字列の一部を他の文字列に置換します。第1引数は対象となる文字列を指定し、第2引数は文字列の中の開始位置を指定し、第3引数は切り出す文字の長さです。第3引数を省略した場合は文字列の末尾までを取り出します。第4引数を指定すると1番目から3番目の引数によって指定した文字列を第4引数の文字列で置き換えます。4引数を省略しているので、第2引数で指定した位置から、最後までを取得して$n1に代入しています。位置の指定方法で気を付けることは先頭の文字の位置は0であり、1から数えるのではないので、注意してください。$moji1の文字列は一部をsubstrで取り出されても、$moji1自体は変化しません。次の例をみてみましょう。2引数にマイナスの値を入れた場合には以下の図のように末尾から数えます。マイナスの値を入れた位置から末尾までを取得して$n2に代入しています。次の例をみてみましょう。Americaの先頭から2番目の文字から2つを取得します。第2引数が2なので2個切り出しています。次の例をみてみましょう。franceの先頭から2番目の文字から、末尾から2番目の文字までの間の文字列を取得します。このように第3引数にマイナスを指定すると第2引数で指定した位置から第3引数で指定した位置までの間の文字列を取り出すことが出来ます。結果は「ran」です。次の例をみてみましょう。4番目の引数には置き換える文字列を指定します。置き換えの文字列は2番目と3番目の引数によって指定した文字列です。1番目の引数は文字列が代入されている変数でなければいけません。それは置きかえられた新しい文字列が入れられるようにするためです。これは元の文字列の内容が書き替わるので注意してください。結果は以下の通りです。次はrand関数について説明します。「返される乱数の最大値」を入力すると0から指定した数値未満までの乱数を返します。引数を省略すると、0から1までの値を返します。返される数値には小数点が含まれます。乱数なのでどの数値が出力されるのかはそのたびに変わります。この例の場合には引数に4を指定したので、4までの数値が更新するごとに変わります。rand(4);」と書いても同じ意味になります。次の例をみてみましょう。次の例をみてみましょう。小数点を含む数値の整数の部分だけを取り出すにはrand関数の前にintを付けます。いう小数点ではなく2と整数が出力されます。int関数と言いまして小数点以下を無視して、整数部分だけを返します。以下のint関数についての例を見てみましょう。以下の例は変数に入っている小数点以下を切り捨てるので、結果は0です。rand関数を使っておみくじを作ってみましょう。rand関数を使うと更新ボタンを押すごとに乱数値が変わるので、占いを作ることが出来ます。この例ではrand関数の戻り値を配列の添え字にしています。この例の場合にはint関数は付けても付けなくてもどちらでも結構です。配列の添え字は整数部分しか入れられないので、自動で小数点以下を切り捨ててくれるからです。次にucfirst関数について説明します。ucfirst関数は対象の文字列の先頭の文字を大文字に変換した文字列を返します。結果は「America」になります。以下のように書いても同じ意味になります。すべての文字を大文字に変換したい場合はuc関数を使います。結果は「AMERICA」になります。対象の文字列の先頭を小文字に変換したい場合はlcfirst関数を使います。結果は「book」になります。対象となる文字列を全て小文字に変換するにはlc関数を使います。結果は「world」になります。次はindex関数について説明します。index関数は対象となる文字列の中に第2引数で指定した文字列が含まれているかどうかを検索し、含まれている場合は最初に見つかった位置を数値で返します。見つからなかった場合は「-1」を返します。省略すると0を指定したとみなされます。3引数を省略しているので検索開始位置は0になります。この例ではtoは前から3つ目の所にあるので3が返されます。toが2つありますが、最初に見つかった位置を返します。以下の例のように第3引数に例えば5を入れるとkyotokyotoのなかの5番目の位置から右に検索されるので結果は8になります。rindex関数は対象となる文字列の中に第2引数で指定した文字列が含まれているかどうかを検索し、含まれている場合は最後に見つかった位置を数値で返します。第3引数を省略した場合は最後の文字を指定したとみなされます。検索する文字が見つからない場合は「-1」を返します。toが2つありますが、rindex関数は検索の結果、最後に見つかった位置を数値で返しますので結果は8になります。次の例をみてみましょう。この例の場合は第3引数に3を指定しているので、対象となる文字列であるkyotokyotoの中の前から3番目の文字以内でtoを検索します。結果は「3」になります。次は文字列の長さを測る関数lengthについて説明します。結果は以下の通りです。長さは5長さは9UTF-8は英数字は1バイトで数えて、日本語は3バイトで数えるようになっています。英数字の場合はバイト数と文字数は同じになります。文字コードによりバイト数は違うので注意してください。