この章では変数の影響がどこまで及ぶのかを説明します。
変数にはスコープと呼ばれる有効範囲が存在します。
変数は関数の外で作成した変数と、関数内で作成した変数に分けます。
関数外で作成した変数はグローバル変数と呼ばれ、いつでも出力したり呼び出すことができます。
問題なのは関数内で作成した変数です。
これはローカル変数と呼ばれ、その関数内でしか使用することはできません。
また関数内と関数外で同じ変数名があった場合、つまりローカル変数とグローバル変数とが同じ変数名であった場合、関数内で優先されるのはローカル変数です。
では実際に例を見てみましょう。 この例ではわざとグローバル変数のとheikin関数の中のローカル変数gの2つの同じ変数名を用意しました。
関数の中ので出力されるのはローカル変数の99です。
つまりグローバル変数gの値である34よりローカル変数の99の方が優先されます。
結果は以下の通りです。 グローバル変数は関数内でも使用できますので、以下の例を見てください。 先ほどの例からローカル変数のgを削除しました。
その場合はグローバル変数gの値である34が関数内のgで使用されます。
結果は以下の通りです。
タグ: 変数
プログラムを書いてみよう
この章では幾つかの例を使ってプログラムの基本的な規則について説明します。 結果は次の通りです。 変数とは荷物を入れるバッグみたいなものです。
例えばバッグに財布やハンカチを入れて持ち運びますが、そのバッグに当たるものが変数です。
そして、このバッグに入っている財布やハンカチが変数に入れるデータに該当します。
つまり、バッグという変数に、ハンカチというデータを入れるわけです。
このように変数にデータを入れて、プログラムを書いていきます。
この例では変数にと名前を付けましたが、名前の付け方には一定のルールがあります。 以下の予約語を変数名に使用することはできません。 変数名と文字列の間にある「=」は数学のイコールの意味ではありません。
これは右辺のデータを左辺に入れるという意味があります。
つまり、name1の中にというデータを入れて、name2の中にというデータを入れて、name3の中にというデータを 入れています。
このようにデータを入れることを代入と言います。 変数は値を1つしか保持できないので、例えばname1に新しい他のデータを のように入れると前のデータである「近藤」という情報は上書きされて「飯島」に入れ替わります。
また、変数を上書きする方法はもう1つありまして、変数に変数を代入する方法です。 name2をname1に代入することにより、「近藤」が「岸辺」に上書きされます。 pythonはユニコードという国際的な文字コードの規格が標準なのでutf-8をユニコード文字列に変換する必要があるのです。
「u」を付けることでユニコード文字列に変換できます。
もうひとつの方法としては以下の構文でutf-8をユニコード文字列に変換します。 例えば以下のように書きます。 printは文字等のデータを出力する機能を持っています。
printの右側に変数や文字列を記述するとその値が出力されます。
printと「変数や文字列」との間は必ず、半角のスペースを空
けてください。
全角のスペースでは開けないでください。
はname1に入っている値である「近藤」という文字列を出力するという意味です。
文字列を囲っているダブルクォート自体は出力されません。
変数にデータを入れなくて、以下のように直接出力しても同じ結果になります。 結果は以下の通りです。 上の結果をみていただくと分かりますが、printは出力した後に改行してくれます。
改行をしたくない場合は以下のように変数の終わりにカンマを付けてください。 このように書けばと、改行しないで出力されますが、データとデータの間にはスペースが発生します。 1つのprint文で複数の文字列を出力したい場合は以下のように変数をカンマで区切って記述してください。 出力結果はデータとデータの間にスペースが発生します。
[ポイント6]
次はコメントについて説明します。
「#」はコメントを意味しています。
「#」の右から行末まではすべてコメントとみなされるので、画面には出力されません。
コメントに何を書くのかはプログラマ自身が決めるのですが、忘れてはいけないことなどをメモ程度に書きます。
また、この例のように一部のプログラムを動作させないことにも使われます。
以下の結果を見ていただくと分かりますが、
コメントの部分は出力されていないことが分かります。 複数行をコメントアウトする場合には以下のように2つのを使ってコメントしたい箇所を上下に挟みます。
print文では行末で自動的に改行してくれましたが、自ら改行を入れることが出来ます。
改行を表す文字はです。
使っているテキストエディタによりという表記なっている場合がありますが意味は同じです。
この改行文字はエスケープシーケンスと呼ばれています。
エスケープシーケンスとはダブルクォートやシングルクォートなど文字列として入力することができない特殊な文字をを使って表現します。
改行以外にもエスケープシーケンスはあります。 では例をみてみましょう。
結果は以下の通りです。 では説明を始めます。 これはタブを3つ記述していますが、これで3つのタブを記述したことになります。
次の箇所の説明をします。はこの位置で改行されることを意味します。
「島田」の後ろと「は」の後ろで改行されます。
次の箇所の説明をします。 ダブルクォートの中にダブルクォートを含めようとするとエラーになりますので、の前にを付けてください。 また、シングルクォートの中にシングルクォートを含めようとするとエラーになりますので、の前にを付けてください。
次の箇所の説明をします。 ダブルクォートの中にシングルクォート もしくは シングルクォートの中にダブルクォートを含める場合はエスケープシーケンスをする必要はありません。
次の箇所の説明をします。 を2つ連続して書きますとが1つ出力されます。
出力の方法は普通の変数と同じでprintで出力します。
結果は以下の通りです。 結果は以下の通りです。 では説明を始めます。 =>「文字列+文字列」と言う形式で文字列同士を連結することができます。
以下のカンマ区切りの意味は説明済みですが、復習してみましょう。 =>変数と変数の間をカンマで区切って出力すると変数の値の間にスペースが生まれます。
「+」は逆に変数の値の間にスペースは生まれません。
この例は以下のようなエラーが出ます。 エラーの箇所は以下の箇所です。 文字列と数値は連結できませんので、ここを以下のように変更してください。 変更点は変数であるageをstrのカッコの中に入れます。
strは文字列を表わすことはデータ型の章で説明した通りです。
数値の入っている変数をstrのカッコの中に記述すると数値を文字列に変換してくれます。
このことをキャストと言います。
strは関数と呼ばれているものですが、関数は「関数について知ろう1」で説明します。 これとは逆に文字列を整数値に変換するキャストの例を見てみましょう。 結果は以下の通りです。 数値をダブルクォートやシングルクォートで囲むと文字列になります。
との文字列同士を「+」で連結すると12となります。
文字列同士の結合なので結果は3にはなりません。
「+」には文字列を連結させるという機能があることは説明しましたが、「+」にはこの他にも数値同士を足すという機能があります。
計算をするためには対象が文字列であるならばそれを数値に変換してあげないといけません。
「文字列を数値に変換」するにはを使用します。
これは関数と呼ばれているものですが、詳しくは「関数について知ろう1」で説明します。 では例をみてみましょう。 この例ではを変数nameに入れて、printで紺野を6回出力します。 文字列に繰り返す回数を指定するとその数だけ文字列を繰り返します。
この例では繰り返し文をnameに入れていますが、以下のようにprint文で直接出力してもいいです。 この構文ではuが付くユニコード文字列の場合は文字数を取得します。日本語ではない場合はバイト数を取得します。
この例ではname3にlenの結果を入れていますが、以下のように直接print文で出力してもいいです。 結果は以下の通りです。
この章では変数について説明します。
変数とはオブジェクトを入れることが出来る入れ物です。
オブジェクトのことはまだ説明していないので、ここではデータと思ってください(例えば文字や数値などもデータです)。
例えば携帯電話やフロッピーディスクにデータを記憶すると持ち運びが出来ますが、この携帯電話やフロッピーディスクに相当するものが変数です。
では例をみてみましょう。 後で詳しく説明しますが、nekoというデータをanimalという変数に入れて、print文で変数に入っているデータを出力しています。
このようにデータは変数に入れて、プログラム内で使っていきます。
結果は以下の通りです。 このプログラムの中のanimalが変数ですが、以下で変数の特徴について説明します。 先頭には@ や@@を使用することができますが、これらには意味がありますので、「クラスについて知ろう」の章で説明します。 予約語とはあらかじめRubyで定義済みの文字です。
例えば、「if」でしたらというRubyの内部機構で初めから装備されている機能ですので、使用することが出来ません。 「=」を代入演算子と言います。
このように書くことでnekoと言うデータをanimalと言う変数に入れることができるわけです。
データを入れる行為を代入と言います。
そして、その変数に入っているデータを出力するのが先ほど説明したprintや putsです。
つまり、はになります。
変数に格納されているデータが使用されることを変数展開と言います。
つまりデータを上書きできると言うことです。
その場合、前のデータも消えてしまいます。
では例をみてみましょう。 nekoというデータは後から入れられたdogで上書きされます。
結果は以下の通りです。 例えば のようにを入れないと以下のエラーが発生します。 もう一つの書き方としては変数をで囲みます。
その場合にはを入れる必要はありません。 animalを他の変数であるanimal2に入れていますので、animal2にもnekoが代入されています。
結果は以下の通りです。
この章では変数について説明します。
変数とは何かしらのデータを入れる入れ物みたいなもので、さらにそのデータを記憶させて持ち運ぶことが出来ます。
例えばバックに財布やハンカチを入れて持ち運びますが、そのバックに当たるものが変数で、その中に入っている財布やハンカチがデータに該当します。
変数に入れたデータを使って、プログラムを書いていくのが基本中の基本になります。
では例をみてみましょう。 この例の中にという箇所がありますが、これが変数です。 この例では「int i;」が変数の宣言です。 つまり、入れるデータがどのような種類なのかによって、型名は異なります。
この例の場合は変数に入れるデータは123という整数なので「int」を付けています。 以下の表が予約語一覧です。以後、学習が進んでいく内に予約語は自然と覚えますので、ここでは覚えなくても結構です。
この例では以下の部分でデータを入れています。 「=」は代入演算子と言います。
代入演算子は右辺のデータを左辺にある変数に入れると言う役割があります。
データを入れる作業を代入と言います。
変数にデータを入れる方法はもう一つあります。
今までは以下のようにデータを入れていました。 これを書き換えると以下のようになります。 宣言と同時にデータを入れていますが、このような形式を「変数の初期化」と言います。 では文字列の連結について詳しく説明します。
文字列と数値(変数i)を「+」で連結していますが、「+」の左右どちらかが文字列の場合、もう片方も文字列に変換されてから結合されます。
つまり数値である「123」も文字列として認識されるのでのように数値もダブルクォートで囲まれているのと同じ意味になります。
ダブルクォートで囲まれている文字を文字列と言うことは説明した通りです。 ここでは変数iに234を再代入していますが、これでデータが123から234に変更されます。
つまり、上書きされると言うことです。
再代入するときにはのように型を改めて付ける必要はありません。
この章では変数に関するまとめと注意点について説明します。
変数の宣言の基本構文は以下のように説明しました。 しかし複数の変数を宣言するときには以下のようにバラバラに宣言するのはスマートな方法ではありません(スペースの都合で以下の例のprintf文を2行で書いていますが、1行で書いてもいいです)。
上の書き方でも間違いではありませんが、以下のように変数の宣言をまとめて書くとプログラムが読みやすくなります。 今までバラバラに変数の宣言をしていましたが、このように1行でまとめることもできます。
この例ではの箇所です。
まとめて変数を宣言した時の注意点について説明します。 つまり、まとめて宣言を書くことが出来るのはデータ型が同じ場合だけです。
違う型同士はまとめて書くことが出来ません。
この章では変数について説明します。
変数とはデータを入れることが出来る機械に似ています。
例えば携帯電話やフロッピーディスクにデータを記憶させると持ち運びが出来ますが、この携帯電話やフロッピーディスクに相当するものが変数です。
変数にデータを入れながら、プログラムを書いていくのが基本中の基本になります。
では以下の例で詳しく説明します。 変数は以下の構文で書きますが、これを変数の宣言と言います。
つまり、「これからこの変数を使いますよ」と宣言をしないと、変数は使うことができません。
それを以下の構文で行います。 この例では以下の箇所が変数です。 データ型についてはこの章の後半で説明しますので、今は変数名の名づけ方法について説明します。
変数には名前を付けなくてはいけないのですが、この例では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は文字列のに自動的に変えられてから連結されます。
「+」を挟んだ左右どちらかが文字列の場合はもう片方も文字列に変えられてから連結されるというわけです。
結果はになります。
この章の最後に補足をします。
「算術演算子について知ろう」ではのように計算式を直接入力していましたが、計算の結果を以下のように変数に入れてから出力しても問題ありません。
この章では変数について説明します。
変数とは何かしらのデータを入れる箱みたいなものです。
バッグを例に取るとバックには財布やハンカチを入れて持ち運びますが、そのバックに当たるものが変数です。
そして、このバッグに入っている財布やハンカチがデータに該当します。
もしくは、変数とはフロッピーディスクみたいなもので、その中にデータを記憶させておくことが出来ます。
では例をみてみましょう。 この例で言えば、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行で書いていただいても結構です)。 テンプレートの一番左側の変換指定子と変数側の一番左の変数は対応関係にあります。
テンプレートの真ん中の変換指定子と変数側の真ん中の変数は対応関係にあります。
テンプレートの一番右の変換指定子と変数側の一番右の変数は対応関係にあります。
変数と変換指定子の数は合わせて書いてください。
この章では変数について説明します。
変数とは音楽を入れることが出来る音楽プレイヤーに似ています。
例えば音楽を聴くときには携帯電話などの入れ物に音楽を入れて持ち運びますが、この携帯電話に相当するものが変数です。
つまり、変数にデータを入れるとデータを運ぶことが出来ます。
では例で詳しく説明します。
変数とはデータを入れることが出来る入れ物と言いましたがが変数です。
変数には名前を付けなくてはいけないのですが、bookが変数名です。
「$とbookが付いた形式」で初めて変数になります。
例では$bookと言う変数にと言うデータを入れています。
次に変数へのデータの入れ方について説明します。
「$book=”洋書”;」に=と言う記号がありますが、これを代入演算子と言います。
数学のイコールとは関係ありません。
代入演算子は右辺のデータを左辺に入れる役割があります。
例で説明しますと$bookという変数にというデータを入れるという意味です。
このデータを入れる行為を代入と言います。
文字列を変数の中に入れるにはダブルクォートもしくはシングルクォートで文字列を囲まなくてはいけません。
注意してほしいことはデータが入っている変数に他のデータを代入してしまうと後から代入したデータで上書きされますので注意してください。
例えばこの例ではの後にと書いていますが、はで上書きされます。
変数に入っているデータを出力する方法についてはこの章の後半で説明します。
次は変数名を付け方について説明します。
この例では変数名にbookと付けましたが、名前を付ければ何でもいいという訳ではなく、一定のルールがあります。
1つ目は$の次の1文字目は数字で始めることはできません。
例えば$3bookという名前は付けることはできません。
2つ目は$の次の1文字目はで始めます。
例えば$bookはbから始まっているので、有効です。
3つ目は$の次の次からは、を使うことが出来ます。
4つ目は同じ文字でも大文字と小文字は全く別の変数になります。
つまり、$bookと$BOOKは全く違う変数になります。
5つ目は予約語を使うことができないことです。
予約語とはすでにPHPの機能で定義されている単語のことです。
次の予約語一覧を参考にしていただきたいのですが、今すぐすべてを覚える必要はありません。
変数名は入れるデータに関連した名前にしましょう。
例えば動物に関連している変数であれば$animalと名前を付けましょう。
次に変数のデータを出力する方法について説明します。
この例ではprint文の中に変数を入れていますが、print文で変数を出力したい時にはダブルクォートの中に変数と文字列を一緒に入れます。
そして、変数だけをで囲みます。
printで出力するときにはと言う文字列がそのまま出力されるのではありません。
ダブルクォートの中にある変数はその変数の中に入っているデータに置き換わります。
このことをと呼びます。
つまり、最初のprint文の$bookには洋書というデータが入っているのでを出力します。
2つ目の$bookには和書というデータを入れていますが、これで洋書と言うデータは上書きされて和書に置き替わるので、結果はになります。
ここでのポイントは変数に入れることが出来るデータは1つだけという事です。
この例では同じ変数である$bookにそれぞれ違うデータを入れていますが、前のデータは後から入れたデータで上書きされます。 先ほどはprint文の中で変数をで囲みましたが、別の書き方でも書く事が出来ます。
それは「{ }」の代わりに文字列演算子ので文字列と変数を結合する方法です。
具体的には以下のように書きます。ととをそれぞれで連結しています。