プログラミングでは変数や定数といわれる仕組みでデータを扱います。コンピュータは通常メモリに記録されたデータやそれを電気信号に変換したものしか扱うことができません。したがってプログラミングでは主にコンピュータへのデータの扱い方の命令をすることになります。そこで最初に登場するのが定数と変数です。これらはデータの一時的な保管庫です。もちろん私たちが全ての数を覚えておいて、複雑な処理や演算ができれば良いのですが、もしそれができたらプログラミングは必要ありませんね。それができないので、変数や定数という保管庫を用いて値を保持しておきます。
つまり定数とか変数って箱だと思えばいいの?
そうだね!その箱に数や文字などを入れておいてあとでいつでも使えるようにしておくんだ。
実際に使い方をみてみましょう。早速下記のプログラムを作成してください。
// 定数x を宣言し、値 1 を保管庫である定数xに入れておく
let x = 1
// print()で画面に表示する
print(x)
このコードを実行するとコンソールに1と表示されるはずです。
上記のコードではxという名前の保管庫となる定数を作っています。
let x = 1
は保管庫xに1という数を入れています。(ここではletについては気にせず進みましょう。)
これ以降の行でxと打つと保管庫から数(今の場合1)を取り出すという意味になります。
print() は print 関数と呼ばれる機能の名称() の中身をコンソール画面に表示しなさいという命令です。
つまり、print(x) は x の中身を表示しなさいという命令になります。
したがって、定数 x には値「1」が代入されているので、定数 x の中身である値「1」がコンソールに表示されることになるのです。
名前の付け方
定数や変数には、プログラミング言語側で予約されているキーワード以外で自由な名前を付与 することができます。ソースコードが膨大な場合や複雑な場合は、似たような処理や意味で使用 する定数や変数が数多く定義されます。変数や定数名はその名前が重複してはいけないため、複合語を用いて定義する時がしばしばあります。例えば「りんごの数」を意味する変数を定義する場合、これを英語に直して「number of apples」と変数に名前をつけたいですが、スペースで文が区切られてしまうため、この名前をつけることはできません。そこで、スペースを詰めて、単語の先頭を大文字にする命名規則が用いられます。今の場合、変数名は「numberOfApples」となります。この規則により、複合語を扱えるようになり、かつ読みやすさを維持できます。この ように、先頭を小文字、それ以降の単語の頭文字を大文字にする命名規則をキャメルケースとい います。定数や変数の名付けのセンスはプログラミングにおいてとても重要です。今のうちから気にしておくようにしましょう。
つまり、定数や変数の名前は基本的に何でもいいけどプログラミングで使うキーワードは使えないということ?
そうだね。さらに一つの名前の中でスペースを使うことができないことにも注意だね。スペースを使うと意味が区切られてしまってひとまとまりのものだと認識できないんだ。
定数
ここからいよいよSwiftの本格的な文法の世界へ突入します。
できるかなあ。。。
覚えることは多いけれど一つ一つ時間をかけて丁寧に理解すれば絶対にできるから頑張って!
定数は一度中身を決めたら中身の値を変更することができないデータです。後から値を変更されたくないデータに用います。定数は let キーワードを用いて以下のように宣言します。
// 定数の宣言方法
let 定数名 = 値
定数の宣言は「let」キーワードの後に定数の名前を入 力し、=を入力します。その後ろに入力したい値を入力します。以下に、定数の例を示します。
// 定数x を宣言し、値 1 を代入します。
let x = 1 // これは整数データとなります。
// 定数y を宣言し、値 3.14を代入します。
let y = 3.14 // これは小数データとなります。
// 定数z を宣言し、値"Hello, world!"を代入します。
let z = "Hello,␣world!" // これは文字列データとなります。
ここで、定数 z に代入した”Hello, world”の はスペースを表します。
上記の例では定数x, y, zを宣言してそれぞれ1, 3.14, “Hello, world”を代入しています。定数xは整数のデータ、定数yは小数のデータ、定数zは文字列のデータです。
変数
定数に続いて、変数の解説をします。変数は定数と異なり、宣言後も値を変更することができるデータです。変数は var キーワードを用いて宣言します。
// 変数の宣言方法
var 変数名 = 値
以下に、変数の例を示します。
// 変数a を宣言し、値 1 を代入します。
var a = 1 // これは整数データとなります。
// 変数b を宣言し、値 3.14を代入します。
var b = 3.14 // これは少数データとなります。
// 変数c を宣言し、値"Hello, world!"を代入します。
var c = "Hello,␣world!" // これは文字列データとなります。
上記の例では変数a, b, cを宣言してそれぞれ1, 3.14, “Hello, world”を代入しています。変数aは整数のデータ、定数bは小数のデータ、定数cは文字列のデータです。
大切なことなのでもう一度書きますが、
変数は定数と異なり値をあとで変更することができます。
変数や定数から値を取り出す
先生!変数や定数を作るのはわかったんだけど、どうやって使うの?
もっともな質問だね!これから説明するよ!
宣言した(作った)変数や定数を利用するにはその名前を書き下すだけで利用することができます。
つまり
let teisu = 10 // 定数名はteisu
を書いた行以降で
teisu
と書くだけでteisuは数10として振舞います。
このことを踏まえて、以下のコードを作成し、実行してください。
let teisu = 10
var hensu = 20
print(teisu + hensu)
さて、どのように表示されたでしょうか?
答えは30です。print(teisu + hensu)の部分が画面に表示する部分ですが、今teisuは10、hensuは20として振舞います。それを+記号で両者を足し合わせなさいと命令しているので両者を足し合わせた30という値になり30が画面に表示されます。
変数の値を変更する例
変数はその値を変更できるデータの一種でした。
変数の値をあとで変更する場合は以下のようにします。
変数名 = 値
ただし、上記コードの「変数名」はすでに宣言済みの(作った)ものでなければなりません。
以下に簡単な例を示します。
var apple = "なし"
print(apple) // なし と表示される
apple = "りんご" // "なし"から"りんご"に変更<-ここに注目!!!
print(apple) // りんご と表示される
上記の例では変数appleを作り、最初に”なし”という文字列を入れています。
その次にprint(apple)としているのでコンソールには「なし」と表示されます。
次にappleに”なし”という文字はふさわしくない?ので
apple=”りんご”
としてappleに文字列”りんご”を入れ直しています。
変数はこのように値を変更することが可能です。
ただし、最初に文字列を入れた変数に数を入れ直したり、数を文字列に入れ直したりすることはできません。(理由については後の記事で説明します。)
そして、最後のprint(apple)の時点でappleには”りんご”が入れられているので、「りんご」がコンソールに表示されます。
最後に先ほど作成した変数a, b, cの作成と値の変更の例を示しておきます。以下のコードの処理を追うことができれば問題ありません。
// 変数a を宣言し、値 1 を代入します。
var a = 1 // これは整数データとなります。
// 変数b を宣言し、値 3.14を代入します。
var b = 3.14 // これは小数データとなります。
// 変数c を宣言し、値"Hello, world!"を代入します。
var c = "Hello,␣world!" // これは文字列データとなります。
// 以下のコードでコンソールに表示します。 print("最初の値")
print(a, b, c)
// 変数は値を変えることができます。
// すでに変数a, b, c は宣言済みなので var や let なしに書くことができます。 a = 20 // 変数a の値を 20 に変更しました。
b = 2.718 // 変数b の値を 2.718に変更しました。
c = "Hello,␣Swift!" // 変数c の値を"Hello, Swift!"に変更しました。
print("変更後の値") print(a, b, c)
// どうですか?値が変わったことだと思います。
// ちなみに以下のコードはエラーとなります。
a = 3.14
// エラーメッセージは以下のような出力となります。
// cannot assign value of type ’Double’ to type ’Int’
// これは整数データであるa には小数データを入れられないよというメッセージです。
// データには「型」という概念が存在し、正しいコードを書くためには
// 型について正しく扱う必要があります。
練習問題
ここまでの内容を理解したか以下の問題で確認しましょう。
- 定数 hello を宣言してください。初期値は”Hello, world!”とします。
- print 関数を用いて定数 hello の値をコンソールに表示してください。
- 変数 greeting を宣言してください。初期値は”Nice to meet you.”とします。
- print 関数を用いて変数 greeting の値をコンソールに表示してください。
- 変数 greeting の値を”Have a nice day.”に変更してください。
- print 関数を用いて変数 greeting の値をコンソールに表示してください。
解答例
let hello = "Hello,␣world!"
print(hello)
var greeting = "Nice␣to␣meet␣you."
print(greeting)
greeting = "Have␣a␣nice␣day."
print(greeting)
