この章ではユーザーにキーボードから入力させる方法について説明します。
この方法もC言語で使われていますがC++でも使えるので説明をします。
では例をみてみましょう。 gets(配列名);は文字列と文字列の間に空白を入れることが出来ます。
例えば,「dog cats」のようにdog とcatsの間に空白を入れて複数入力することが出来ます。
例えば以下のように出力されます。 この後に説明するscanfではのように空白を文字列に入れることはできません。
scanfについては説明しましたが、復習のつもりでもう一度説明します。
scanfはエンターキーを押すまで入力することが可能になります。
では例をみてみましょう。 結果は以下の通りです。 scanfの中の文字を入れる配列は複数書くことが出来ます。
この例ではxとsの2つを設定しています。
その場合にはそれぞれの配列をカンマで区切ります。 結果は以下の通りです。 もう一つユーザーにキーボードから入力させる方法があります。 入力演算子「>>」を使うことでもユーザーにキーボードからの入力をさせることが出来ます。 ユーザーが入力したデータはの中の変数nに入ります。
その後、で変数nを出力しています。
月: 2015年5月
この章では配列について説明します。
普通の変数は1つしかデータを入れることができません(他のデータを入れようとするとデータが上書きされてしまう)が、配列は複数のデータをまとめて入れることができます。
複数のデータを扱う場合、普通の変数では以下のように別々の変数名でそれぞれのデータを入れなければいけませんが、配列を使うと1つの変数名で同じ型のデータを複数入れることができるのです。
同じ目的で使用するデータは1つにまとめてしまい、1つの変数で複数のデータを管理できると便利です。
このような時に配列を使用します。
では例をみてみましょう。 変数と同じように配列も宣言をしなくてはいけません。
つまり、「これからこの配列を使います」と宣言をします。
それが以下の構文です。 この例では以下のように宣言しています。 これは「初めにint型の要素を4つ用意すること」を意味します。
次は作った配列にデータを入れますが、それが次の箇所です。
4つの要素で宣言したので4つのデータを入れます。 添え字とはデータを管理する番号です。例えばコインロッカーの箱には必ず番号が付いていますが、この番号があるからこそ、どこに自分の荷物があるのかが分かるわけです。
添え字もこれと同じで、添え字と言う管理番号で配列のどこにデータが入っているのかを管理します。
添え字は0から順番に番号が付けられていきます。
1から数えるのではないので注意してください。 配列の書き方はこの他にもあります。
それは配列の宣言と初期化を一緒に行う方法です。 配列に関する注意点が2つあります。
1つ目は以下の例のように要素数が4つであるにも関わらず、5個のデータを入れようとするとエラーになります。
2つ目は先ほど配列宣言と同時に初期化を行う基本構文を説明しましたが、以下のように要素数は省略できます。 この場合は代入するデータの数が配列の要素数になります。
この例の場合は要素数は4つなのでと同じ意味になります。
次は配列の要素をどのように出力するか見てみましょう。
この例では以下の箇所で配列の要素を出力しています(スペースの都合で2行で書いていますが1行で書いてもいいです)。 結果は「1234」です。
次は文字列を配列で扱う方法について説明します。
では例をみてみましょう。 文字列について説明します。
文字列とは複数の文字を並べたものです。char型の文字を複数並べることで文字列を作ることが出来ます。
char型の文字を複数並べるにはchar型の配列を使います。
ではchar型の配列の作成手順について説明します。 実は文字列(この例ではdog)には文字列の最後に(ヌル文字と言います)と言う文字が隠れていまして、これは「文字列の終わり」を意味します。
ですので、配列の最後の要素にを付け加えてください。
その分、配列の要素数も1つ増えるので、配列の要素数もではなくて、になります。
そして、で出力すると「dog」を出力します。
出力結果には「¥0」は含まれません。
また、char型の配列文字を出力する時の変換指定文字はになります。 上の配列を書き換える方法は2つあります。
std::coutについてもっと知ろう
この章ではstd::coutについて説明します。
「printf関数についてもっと知ろう」の章では以下の通り、結果の表示幅を指定することが出来ましたが、でも可能です。
では例をみてみましょう。 という記述で、空白部分も合わせて、指定した表示幅で表示します。
以下のように変数に入れて出力しても同じ事です。 結果は以下の通りです。 次の例をみてみましょう。 次の例をみてみましょう。
この例ではprecisionの引数に3を指定しているので3.23までが表示されます。
結果は以下の通りです。
puts関数について知ろう
scanf関数ついて知ろう
この章ではscanf関数について説明します。
scanf関数はC言語で使われている関数ですがC++でも使えるので紹介します。
scanf関数はユーザーがキーボードから入力したデータを取得するための関数です。
例えば「あなたの年齢は?」と質問するとプログラムはユーザーが入力するまで待ちます。
そして、この入力された年齢をプログラムに取り込むことが出来ます。
では例をみてみましょう。 ユーザーが入力したデータを入れるための変数の宣言をします。
年齢を入力するので、型はintにします。 「年齢は?」を出力します。 scanf関数はユーザーが年齢を入力してくれるのを待ちますので、一回プログラムが止まります。
そして、例えばユーザーが23と入力したのならば、その23がaに入ります。
scanfもprintfと同じように変換指定子を指定します。
例の場合は整数なのでを指定しています。
ここで注意してほしいことはscanfの中の変数の前に「&」を付けてください。 結果は以下の通りです。 結果は以下の通りです。
加算子,減算子について知ろう
この章では加算子,減算子について説明します。
加算子は数値を1つ増やし、減算子は数値を1つ減らす演算子です。 まだ説明していませんがfor文などの繰り返し構文等に主に使われます。 では例をみてみましょう。 「a1++;」も「++a2;」も変数の値である2に1を足しているわけですが,結果は同じ3になります。
つまり、「++」が前にあっても、後ろにあっても結果は同じです。
次は前置加算子について詳しく説明します。 前置加算子の例は特に変わったところが無いので解りやすいと思いますが、次の後置加算子の例は少し複雑になります。 後置加算子では初めに「++」を無視した状態で出力し、それからaに1を加算します。 デクリメントはインクリメントと考え方は同じなので、インクリメントの項を参考にしてみてください。
インクリメントは足して、デクリメントは引くと言う違いだけです。
キャスト演算子について知ろう
この章ではキャスト演算子について説明します。
これまでの例では型が違う変数同士の計算の場合にはサイズが大きい型に自動的に型変換されていましたが、自身で型変換をする方法もあります。
それはキャスト演算子を使う方法です。
最初はキャスト演算子を使っていない例をみてみましょう。 結果は「3です」です。
通常の計算では答えは3.25になりますが、int同士の計算なので、小数点以下が削除されてから、double型の変数eに代入されますので、3になります。
これでは正確な計算は出来ませんね。
そこで変数の前にを付けることで、その指定した型に換えることが出来ます。
では例をみてみましょう。 結果は「3.25です」です。
実はこの例の場合はのように両方ともキャストする必要はありません。
doubleのほうがintより大きい型なのでfとvの片方だけdoubleにキャストすることで、もう片方の変数もdoubleに変換されますので、のように片方でも同じ結果になります。
C++で計算をしよう
この章ではプログラム上で計算する方法について説明します。
計算をするときには算術演算子を使いますが、詳しい説明は例の後に行ないます。
では例をみてみましょう。 算術演算子とは算数などでも使われる計算記号の事です。 number1+number2は加算を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士を「+」で足しています。
以下のように変数を使わなくても直接計算式を書いてもいいです(これは他の演算子でも同じことです)。 number1-number2は減算を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士を「-」で引いています。
number1*number2は乗算を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士を「*」で掛けています。
number1/number2は除算を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士を「/」で割っています。
number1%number2は割り算の余りを計算するのですが、number1には5、number2には3が入っているので、この変数の値同士の除算の余りを算出します。 結果は以下の通りです。
以下の例は先ほどの例を書き換えた例です。一度計算式を変数に入れてから、出力しています。
このような事も出来ますので覚えておいてください。 次の例は型が違うデータ同士の計算の例です。 結果は以下の通りです。
「a+r」の部分でint型の変数とdouble型の変数を足していますが、サイズの小さい型とサイズの大きい型を足すとサイズが大きい型に統一されます。
エスケープシーケンスについて知ろう
エスケープシーケンスとは、ダブルクォートやシングルクォートなどC++において文字列として入力することが出来ない特殊な文字をを使って表現します。
「C++の基礎を知ろう2」で説明した「¥n」もエスケープシーケンスの1つです。
エスケープシーケンスは以下の通りです。 では例をみてみましょう。 「¥t」はタブを表しますので、結果は以下の通りです。
次の例をみてみましょう。 ダブルクォートの中にダブルクォートは入れられないのでエスケープシーケンスを使います。
ダブルクォートは文字列を囲むという機能がありますので、これをとして表示させるのがの役割です。
結果は以下の通りです。
次の例をみてみましょう。 文字として「¥」を入れたい場合には「¥¥」を使用します。
結果は以下の通りです。