この章では変数について説明します。
変数とは何かしらのデータを入れる入れ物みたいなもので、さらにそのデータを記憶させて持ち運ぶことが出来ます。
例えばバックに財布やハンカチを入れて持ち運びますが、そのバックに当たるものが変数で、その中に入っている財布やハンカチがデータに該当します。
変数に入れたデータを使って、プログラムを書いていくのが基本中の基本になります。
では例をみてみましょう。 この例の中にという箇所がありますが、これが変数です。 この例では「int i;」が変数の宣言です。 つまり、入れるデータがどのような種類なのかによって、型名は異なります。
この例の場合は変数に入れるデータは123という整数なので「int」を付けています。 以下の表が予約語一覧です。以後、学習が進んでいく内に予約語は自然と覚えますので、ここでは覚えなくても結構です。
この例では以下の部分でデータを入れています。 「=」は代入演算子と言います。
代入演算子は右辺のデータを左辺にある変数に入れると言う役割があります。
データを入れる作業を代入と言います。
変数にデータを入れる方法はもう一つあります。
今までは以下のようにデータを入れていました。 これを書き換えると以下のようになります。 宣言と同時にデータを入れていますが、このような形式を「変数の初期化」と言います。 では文字列の連結について詳しく説明します。
文字列と数値(変数i)を「+」で連結していますが、「+」の左右どちらかが文字列の場合、もう片方も文字列に変換されてから結合されます。
つまり数値である「123」も文字列として認識されるのでのように数値もダブルクォートで囲まれているのと同じ意味になります。
ダブルクォートで囲まれている文字を文字列と言うことは説明した通りです。 ここでは変数iに234を再代入していますが、これでデータが123から234に変更されます。
つまり、上書きされると言うことです。
再代入するときにはのように型を改めて付ける必要はありません。
タグ: 代入演算子
この章では変数について説明します。
変数とはデータを入れることが出来る機械に似ています。
例えば携帯電話やフロッピーディスクにデータを記憶させると持ち運びが出来ますが、この携帯電話やフロッピーディスクに相当するものが変数です。
変数にデータを入れながら、プログラムを書いていくのが基本中の基本になります。
では以下の例で詳しく説明します。 変数は以下の構文で書きますが、これを変数の宣言と言います。
つまり、「これからこの変数を使いますよ」と宣言をしないと、変数は使うことができません。
それを以下の構文で行います。 この例では以下の箇所が変数です。 データ型についてはこの章の後半で説明しますので、今は変数名の名づけ方法について説明します。
変数には名前を付けなくてはいけないのですが、この例ではaが変数名です。
本に関係しているプログラムであればbookなどと変数名を付けます。
しかし、名前を付ければ何でもいいというのではなく、一定のルールがあります。 以下の表は予約語一覧です。
次に先ほど宣言をした変数にデータを入れる方法について説明します。
変数の宣言が終わった後には実際にデータを入れていきます。
例のの中に「=」と言う記号がありますが、これを代入演算子と言います。
数学の「=」とは関係ありません。
代入演算子は右辺のデータを左辺に入れる役割があります。 例で説明しますとaと言う変数に2と言うデータを入れるという意味です。
データを入れる行為を代入と言います。
次に変数の出力方法について説明します。 変数は普通の文字列と同じでを使って出力します。
この時、出力されるのは変数に入っているデータです。
この例は「値は2」が出力されます。
変数の代入と出力に関して注意してほしいことは以下のように同じ変数に複数のデータを代入してしまうと後から代入したデータで変数の値は上書きされますので注意してください。 結果は「値は2値は20」となりますが、整数のaに代入されていた2がの箇所で20に上書きされます。
次に「データ型名」について説明します。
先ほどの例の変数の前にintが付いていますが、これはデータ型を意味します。
変数を利用するためにはその変数がどのような型なのかを決めなくてはいけません。
つまり、変数を使用するには初めに『この変数は何型の変数です』と宣言しなければいけません。 この例では整数の2を変数aに入れているので、intを使用しています。 データ型については「データ型について知ろう」の章で詳しく説明します。
次に変数宣言の位置についてのC言語との違いについて説明します。
C 言語の関数内での変数の宣言位置はブロックの先頭でしなければいけませんでした。
C++の場合はそのような制約はなく、どこでもいつでも宣言することが可能です。
例えば以下の例はC言語のプログラムですが、変数を宣言する時には関数の先頭で宣言をしなくてはいけませんでした。
変数を先頭で宣言しないとエラーになります。 C++では以下のようにどこでも可能になります。 以下のように変数の宣言と同時にデータを入れることもできます。
この場合には1行で変数の宣言とデータの代入ができますので、プログラムがすっきりします。 これを「変数の初期化」と言います。
入れるデータのことを初期値と言います。
前の例ではstd::coutを使って変数に入っているデータを出力しました。
この例ではprintf関数を使用して変数のデータを出力しています。printf関数はC言語で使われているものですが、C++でも使えますので説明します。
整数型の数値を出力させるにはという変換指定子を使います。
変換指定子は例えばaの値をの箇所に置き換えて出力するために使います。 このように数値などのデータを文字列に変換して表示したい時に変換指定子を使います。 このテンプレートはダブルクォートで囲んでください。
そして、この中には文字列と変換指定子を自由に組み合わせて入れることができます。
テンプレートは「型」と言う意味なのでという型で出力しますよという意味です。 結果は「値は2」になります。
次の例ではprintfの中の変数を3つ同時に出力しています。 変数と「変換指定子」の対応関係は以下の通りです。
3つとは限らずいくらでも書くことができます。 テンプレートの一番左側の変換指定子と変数側の一番左の変数は対応関係にあります。
テンプレートの真ん中の変換指定子と変数側の真ん中の変数は対応関係にあります。
テンプレートの一番右の変換指定子と変数側の一番右の変数は対応関係にあります。
必ず変数と変換指定子の数を合わせてください。
補足ですが、printfは変換指定子を使わないで文字列を出力することも出来ます。 結果は「こんにちは」です。
printf関数についての詳細は「printfについてもっと知ろう」の章で詳しく説明します。
次はユーザーに文字列や数字などを入力させる方法について説明します。
では例をみてみましょう。 ユーザーが入力したデータを読み取るにはという構文を使用します。
「>>」は「入力演算子」と言います。 ユーザーが入力したデータはの中の変数nに入ります。
その後、で変数nを出力しています。
このように変数に入力データを入れることが出来ることを覚えておいてください。
では実際の画面で流れを追ってみましょう。
初めに「数値を入力」と出力して、ユーザーが入力するのを待ちます。 次に「123」を入力してエンターキーを押すと「数字は123」と出力されます。
では次の例を見てみましょう。 「cin >>a>>b>>c;」のように入力演算子を増やせば何個でも入力値を増やすことが出来ます。
この例では3回ユーザーに入力させています。
この入力させたものを3回掛けているのですが、それが以下の箇所です。 ユーザーに3回入力させているのですが、一回一回はエンターキーで区切ります。 もしくは以下のように半角スペースで区切ってもいいです。
変数について知ろう
この章では変数について説明します。
変数とは何かしらのデータを入れる箱みたいなものです。
バックを例に取るとバッグに財布やハンカチを入れて持ち運びますが、そのバックに当たるものが変数です。
そして、このバッグに入っている財布やハンカチがデータに該当します。変数に入れたデータを使って、計算をしたり、色々な作業を行っていくのがプログラミングの基礎の第一歩です。
では具体的な例を見てみましょう。この例では が変数です。
変数は変数名の前に「var」が付いた形式です。
変数を使用するには初めにと宣言しなければいけません。
これを変数宣言と言います。 変数名は名前を付ければ何でもいいというのではなく、一定のルールがあります。
1つ目は1文字目は数字で始めることはできません。
例えば3bookという名前は付けることはできません。
4つ目は同じ文字でも大文字と小文字は全く別の変数になります。
例えばbookとBOOKは全く違う変数になります。
5つ目は予約語を使うことができません。
予約語とはすでにJavaScriptの仕様で機能が定義されている単語のことです。 また、変数名には入れるデータに関連した名前にして、誰が見てもわかりやすくしましょう。
入れるデータが本に関連しているのならbookというように。
次に「変数宣言」のもう1つの書き方について説明します。
複数の変数の宣言は次の通り、まとめて行なうことが出来ます。
先ほどの3つの変数はまとめて と宣言することが出来ます。
その場合は「,」で1つずつ区切り、varは先頭のみ付けます。
次は変数宣言を終えた変数にデータを入れる方法について説明します。
データを入れているのが以下の箇所です。 変数名の右側にある「=」は数学にあるイコールと言う意味ではありません。
を例に取るとをbookに入れると言う意味です。
この入れる行為を代入と言います。
また、「=」を代入演算子といいます。
次は変数の宣言とデータの代入を同時に行なう方法について説明します。
変数の宣言と同時にデータを入れることを初期化と言いますが、以下の2と3がその初期化の例です。
1番が通常の宣言と代入の例です。 変数と変数の間はカンマで区切り、varは先頭のみに付けます。 1では「var book」と宣言をしてから、のようにデータを入れていますが、2や3では のように変数の宣言と同時にデータを入れています。
どちらの形式でデータを入れてもいいです。
変数で気を付けることは変数は値を1つしか保持できないので、以下のようにbookにを代入した後でと再度代入すればbook変数はに上書きされます。 次は以下の説明をします(この例では紙面の都合で2行で書いていますが1行で書いてもいいです。)。 document.writeはカッコの中の文字列などを表示させるための命令文です。
このカッコの中には変数が3つありますが、この変数名自体が表示されるわけではありません。
この中に入っているデータが出力されることになります。
つまり、book であればbook 自体ではなくbookの中に入っている「ダンスダンスダンス」が出力されます。
次はカッコの中にある「+」について説明します。
これは数字同士の計算では足し算の意味がありますが、文字列同士を「+」で繋ぐと両辺を連結してくれます。
例えばの箇所は「ダンスダンスダンス」と「村上春樹」と「”を”」が連結されてになります。
「+」は文字列を連結してくれますが、「+」の左右が数値と文字列の場合はどうでしょうか?
例の中のの部分のnumberは数値であり、は文字列です。
この場合は数値の部分は文字列に変えられてから連結されます。
つまり数値の2は文字列のに自動的に変えられてから連結されます。
「+」を挟んだ左右どちらかが文字列の場合はもう片方も文字列に変えられてから連結されるというわけです。
結果はになります。
この章の最後に補足をします。
「算術演算子について知ろう」ではのように計算式を直接入力していましたが、計算の結果を以下のように変数に入れてから出力しても問題ありません。
この章では複合演算子について説明します。
複合演算子とは算術演算子と代入演算子が複合して結びついている演算子のことをいいます。
例えば本来と書かなくてはいけないところ、のように短縮して書くことが出来ます。
複合演算子はaとbを計算したものをaに代入すると言う意味です。 では例をみてみましょう。 number1+= 8;はと同じ意味になります。
右辺にあるnumber1+8を計算してから、number1にその結果を代入してます。
number2 -= 8;はと同じ意味になります。
右辺を計算してから左辺に代入しています。
number3 *= 8;はと同じ意味になります。
右辺を計算してから左辺に代入しています。
number4 /= 3;はと同じ意味になります。
右辺を計算してから左辺に代入しています。
この章では変数について説明します。
変数とは何かしらのデータを入れる箱みたいなものです。
バッグを例に取るとバックには財布やハンカチを入れて持ち運びますが、そのバックに当たるものが変数です。
そして、このバッグに入っている財布やハンカチがデータに該当します。
もしくは、変数とはフロッピーディスクみたいなもので、その中にデータを記憶させておくことが出来ます。
では例をみてみましょう。 この例で言えば、numberやbookが変数です。
そして、numberには23、bookには芥川龍之介と言うデータを入れています。
そして、 のように記述するとbookやnumberと言う文字がそのまま出力されるのではなく、bookやnumberという変数の中に入っている23と言う数字と芥川龍之介と言う文字列が出力されて、結果はになります。
ではSystem.out.printlnの中身を見てみましょう。
「book」と「”を”」と「number」と「”冊買う”」を「+」で繋いでいます。
この「+」は計算の加算にも使われますが、文字に対して「+」を使用すると左右の文字列同士を連結する機能を持つようになります。
この文字同士を連結する「+」を文字列連結演算子と言います。
補足ですが、「+」を挟んだ左側を左オペランド、右側を右オペランドと言います。
「+」を使用すると文字列同士を連結すると書きましたが、この例の中のnumberは23と言う数値になっています。
つまり23は文字列ではなくて数値であるのに連結することが出来てしまっています。
理由は「+」の左右オペランドのどちらかが文字列の場合はもう片方も文字列に自動的に変換しているからです。
では、次に変数のルールについて説明します。
まず初めに変数を使うにはというように宣言をしてあげないといけません。
これを「変数の宣言」と言います。 変数の宣言の構文は上記の通りですが、必ず行の末尾にを入れてください。
例で言えば以下の部分が変数の宣言です。 1番前にintという文字が付いていますが、これはデータ型と言われるものです。
データ型については次の章で詳しく説明します。
データ型とは簡単に説明しますとその変数がどのような性質のデータなのかを分類したものです。
上の例で言えばnumberには数字が入るのでintを変数の前に付けます。
intは変数に入れるデータが整数の場合に使います。
Stringは文字列を扱うのですが、これはデータ型ではありません。データ型ではなくStringクラスと言われるものです。
クラスについては後半の章で説明しますので、ここではStringは文字列を扱う時に変数の前に付けるということだけ覚えておいてください。
そして、変数の宣言は1つの変数で一回だけです。
つまり、この例ではnumber変数が3回出てきますが、宣言を行うのは初めのnumber変数だけです。
また、同じ型であればまとめて変数の宣言を行うことが出来ます。 この例ではa,b,cの変数が同じint型なのでまとめて宣言を行っています。
次は変数へのデータの入れ方について説明します。
のように宣言をしましたら、次にすることは実際にデータを入れることです。
データを入れる方法は変数とデータの間に「=」を入れます。
「=」を代入演算子と言います。
「=」は数学で使われるイコールと言う意味ではなく、データを変数に入れると言う意味です。
このデータを入れる行為を「代入」と言います。 上の例では「23」をnumberに代入し、「”芥川龍之介”」をbookに代入しています。
例では変数の宣言とデータの代入を別々に記述していますが、これを以下のように一緒に記述することも出来ます。 このように変数の宣言とデータの代入を一緒に記述することを「変数の初期化」といいます。
次に変数に名前を付ける際のルールについて説明します。
1つ目は変数名の先頭を数字で始めることはできません。
例えば3bookという名前はつけることはできません。
先頭文字は
「アンダーバー(_)」
「aからz」「AからZ」
から始めます。
2文字目からは
「アンダースコア(_)」
「aからz」「AからZ」、
「数字」
を使うことが出来ます。
2つ目は同じ文字でも大文字と小文字は全く別の変数になります。つまり、 bookとBOOKは全く違う変数になります。
3つ目は予約語を使うことができません。
予約語とはすでにJavaの機能で定義されている単語のことです。
以下の予約語一覧を参考にしてください。予約語は自然に覚えるので、ここでは目を通すだけで結構です。 4つ目は変数名の先頭は小文字で始めてください。
大文字で書いてもエラーではありませんが、先頭は小文字で書くことが慣習になっています。
5つ目は変数名には入れるデータに関連した名前を付けて誰が見てもわかりやすくしましょう。
例えば入れるデータが本に関連しているのならばbookと、付けます。
6つ目は変数名に使える記号はとだけしか使うことが出来ません。
例えばのように「@」を使うことができません。
7つ目は違うデータ型であっても同じ変数名は付けることは出来ません。
例えば以下はデータ型が違うだけで同じ変数名を2回使っているのでエラーになります。
次に変数に入っているデータの変更方法について説明します。
例をみてみましょう。 結果は以下の通りです。 同じ変数に再び他のデータを代入し直しますと上書き状態になり、前のデータは失われてしまいます。 もし、上書きする前に前のデータを残しておきたい場合は、次の例のように別の変数に代入し保存しておきます。
では説明をしていきます。 のようにnumberをnumber2に、bookをbook2に代入します。
そうすれば、や の箇所でデータを上書きしたとしても、元のデータは失われません。
以下を出力すればわかるように元のデータのが表示されます。 結果は以下の通りです。 しかし、次のように変数の途中で改行するとエラーになりますので注意してください。 a=b=c=”猫”;のように書くことで、a,b,cの変数にすべて同じデータを一気に入れることが出来ます。
結果は「猫猫猫」になります。
この章では変数について説明します。
変数とはデータを入れることができる入れ物に似ています。
例えば携帯電話やフロッピーディスクにデータを記憶すると持ち運びが出来ますが、この携帯電話やフロッピーディスクに相当するものが変数です。
変数にデータを入れながら、プログラムを書いていくのが基本です。
では例で詳しく説明します。 「データ型名 変数名;」という構文を「変数の宣言」と言います。
データ型は「データ型について知ろう」で説明します。
この例では以下が変数の宣言です。 変数を使用するためには必ず変数の宣言が必要です。
つまり、「これからこの変数を使用しますよ」と宣言するのが変数の宣言です。
変数には名前を付けなくてはいけないのですが、この例ではaが変数名です。
本に関係しているプログラムであればbookなどと変数名を付けます。
この例では変数名にaと付けましたが、名前を付ければ何でもいいというのではなく、一定のルールがあります。 予約語とはすでにC言語の言語仕様で機能が定義されている単語のことです。
次の表が予約語です。
以後、学習が進んでいくうちに予約語は自然と覚えますので、ここでは覚えなくても結構です。 次に「データ型名」について説明します。 変数の前に「int」が付いていますが、これがデータ型です。
変数を使用するにはまず初めに『この変数は何型の変数です』と宣言しなければいけません。
データ型については「データ型について知ろう」で詳しく説明しますが、簡単に言いますとどのようなデータを変数に入れるのかにより型名は変わります。
この例では整数の2を変数aに入れているので、intを使用しています。 これまで変数の宣言について説明してきましたが、次の例で変数の宣言の注意事項について説明します。 変数の宣言は必ず関数の先頭で行ってください。
つまり、例のように宣言の前に余計なものがありますとエラーになります。
この例は「int a;」の前にが書いてありますので、エラーです。
次は変数へのデータの入れ方について説明します。
変数の宣言が終わりますとデータを入れることが出来ますが、以下の構文でデータを入れます。 変数を宣言してから、データを入れるというのが基本です。
データ型名は変数の宣言の箇所のみ付けてください。
例の「a=2;」の中にと言う記号がありますが、これを代入演算子と言います。
数学の「=」とは関係ありません。
代入演算子は右辺のデータを左辺に入れる役割があります。
例で説明しますとaと言う変数に2と言うデータを入れるという意味です。
この入れる作業を「代入」といいます。
注意してほしいことは以下のように同じ変数に他のデータを代入してしまうと後から代入したデータで上書きされますので注意してください。 つまり、結果は「変数の値は2です変数の値は20です」となりますが、整数のaに代入されていた2がの箇所で20に上書きされます。
変数には1つしかデータを入れることができないことを覚えておいてください。
ここで変数に関しての補足をしておきます。 他の入れ方としては以下の構文のように変数の宣言と同時にデータを入れることもできます。 これを変数の初期化と言います。
入れるデータのことを初期値と言います。
例えば先ほどの例は以下のように書き換えることができます。 どちらの方法でデータを入れても結構です。 次は先ほどの例の以下の箇所を説明します。 printfについては以前、説明しましたが、その時にはのようにprintfの中の引数は文字列でした。
しかし、整数を出力させようと思ってと書いても出力することはできません(エラーになります)。
の3の部分をダブルクォートで囲んでと書けばエラーにならず出力はできますが、数値をダブルクォートで囲むと整数ではなくなって、文字列として出力されることになります。
では、整数型の数値を整数として出力させるにはどうしたらいいか。
それは例にあるようにという変換指定子を使います。
この例の変換指定子はaの値をの箇所に置き換えます。 このように数値などのデータを文字列に変換して表示させたい時に変換指定子を使います。
ここで大事なのはと書いて出力されるのは変数の中に入っているデータであり、aという変数名が出力されるわけではありません。
つまり、この例ではaに入っている2というデータが出力されます。
つまり、結果はになりますが、と出力されるのではありません。
では変換指定子の基本構文について説明します。 〇「テンプレート」はダブルクォートで囲んでください。
そして、このテンプレートの中に文字列と変換指定子を自由に組み合わせて記述します。
テンプレートとは「型」と言う意味なのでという型で出力しますという意味です。
変換指定子はたくさんありますが、はint型の数値である整数を出力するときに使います。
基本構文の「変数」の箇所は変数ではなくても、直接数値などを指定してもいいです。 では他の例をみてみましょう。
これまでの例ではprintfの中の変換指定子は1つでしたが、以下の通り複数の変換指定子を設定できます。 変数と「変換指定子」の対応関係は以下の通りです(スペースの都合でprintfの引数を2行で書いていますが、1行で書いていただいても結構です)。 テンプレートの一番左側の変換指定子と変数側の一番左の変数は対応関係にあります。
テンプレートの真ん中の変換指定子と変数側の真ん中の変数は対応関係にあります。
テンプレートの一番右の変換指定子と変数側の一番右の変数は対応関係にあります。
変数と変換指定子の数は合わせて書いてください。