#はじめに
この記事は、プログラミング入門 with Groovyの1部です。
#プログラムの流れ
さて、前回Groovyのインストールと簡単なプログラムを実行しました。
今回からもう少し具体的なプログラムの説明に入ってきます。
再度Groovyコンソールを起動して、以下のコード(プログラム)を入力してください。
Groovyコンソールって何?という方は前回の記事を参照してください。
println "Hello World"
println 123
println "aaa"
このプログラムを実行すると、上から順番に"Hello World", "123", "aaa"と画面に表示されたと思います。
この上から順番に実行されるというのがプログラムの大前提です。
どんなプログラムでも、原則上から順番に実行されます。この原則はどんなに巨大なプログラムでも変わりません。
#プログラムの値
さて、値とは何でしょう?
コレはプログラムが処理をする対象となるものです。
また以下のコードをGroovyコンソールに入力して実行してみてください。
println 1 + 2
これを実行すると、結果として3と表示されます。
何でも無いようなことですがコレは凄いことですね。私達は今3だなんていう文字はどこにも入力していません。
それにも関わらずGroovy(プログラム)は1と2という、プログラムから見て処理の対象となる値から、3という結果を導き出したわけですね。
今回の場合は1と2という数値が値となるわけですね。
値の種類
さて、鋭い方はお気づきかもしれませんが、今までのサンプルコードでは、値が**ダブルクォーテーション(")**で囲まれているものと囲まれていないものがあることに気づいたかもしれません。
例えば以下のプログラム。
println "123"
println 123
これを実行しても、2つの123という文字が画面に表示されるだけです。
でも実はこの2つの値は全く異なるものなのです。
それでは以下のコードを実行してみてください。
println "1" + 2
なんだまた足し算かよ、結果は3でしょ?と思いそうなところですが、実行結果はなぜか12になります。
なぜこんなことが起こるのでしょうか?
それは、1という値がダブルクォーテーションで囲まれた結果、文字列として扱われたためです。
プログラムの世界では、値には様々な種類が存在しており、その中でも一般的なのが、ダブルクォーテーションで囲まれた文字列と呼ばれるものと、整数をそのまま書いた数値と呼ばれるものです。
すこしややこしいですが、整数をダブルクォーテーションで囲むと、その整数は数値ではなく、文字列になります。
Groovyでは、文字列と別の値の間で足し算を行うと、別の値も文字列として扱って、単純に文字列同士をくっつけます。
そのため、以下のコードは全て結果が12になります。
println "1" + 2
println 1 + "2"
println "1" + "2"
プログラミングに関する書籍やニュース、ブログなどでは、文字列扱いの整数を数字と読んで、数値とは違うタダの文字列扱いの数字ですよ、という意味合いで使い分けをしています。
といっても日本語の問題なので、実際に読む記事などの文脈から判断する必要が当然有ります。
#変数
さて、プログラムに置ける重要な概念として変数というものがあります。
数学の授業などで聞いたことがあるのではないでしょうか?
数学と聞いて身構える必要はありません。非常に簡単です。
以下のコードを入力して、実行してみてください。
def hoge = 123
println hoge
どうですか?実行結果として123が表示されましたか?
初めて出てきたキーワードが3つ有りますね。
まずdef
。これはGroovyにおいて変数の宣言をするものです。このdef
の後に半角スペースを1個以上開けて変数名を宣言します。
次にhoge
。これが実際の変数になります。このhogeという名前は実は何でもOKです。aaaでもbbbで大丈夫。こういったサンプルプログラムではよくこのhoge
が用いられます。
最後に=
ですね。コレは、=
の右側の値を、左側の変数に入れるよ、という意味になります。算数だと左辺と右辺が等しい、という意味なのでちょっと意味合いが異なりますね。
今までなんとなく書いてきたprintln
ですが、コレはGroovyが持っているコマンドで、右側の値を画面に表示するというものです。
今回はhogeが指定されていますね。println
は賢いので、右側に指定されたものが変数だということを知っています。なのでその中身である123を画面に表示してくれたわけですね。
まとめると、def
キーワードでhoge
という変数を準備して、その中に123という値を格納した、ということになります。
ちなみにちゃんと計算で使うことも出来ます。
def hoge = 123
println hoge + 1
実行結果は124になります。
すでに学んだ通り何か文字列があると。。。?
def hoge = "123"
println hoge + 1
実行結果は1231になります。
数値でも文字列でも、defキーワードで宣言された変数に格納できることが解ると思います。
なお、実はこの変数なのですが、値と同様プログラミング言語や、Groovy自体にも様々な種類が存在しています。
と言っても別段難しいことではないので追々勉強していきます。
##なんで変数なんて必要なの
こういった疑問を持たれた方は現実的な視点を持っておられる方です!
変数には様々な役割、メリットが有りますので一言では説明しづらいのですが、例えば、ある数値の2乗を求める計算を考えてください。
2乗なので、計算式は同じ数値 x 同じ数値にになりますね。
ちなみにプログラムでは掛け算は*(アスタリスク)
という記号を用います。
println 5 * 5
実行結果は当然25になりますね。
ではコレを6の2乗にしたい場合はどうでしょう?
単純に数値を変えるだけでOKですよね。
println 6 * 6
しかしコレだと、2つの5という数値を手動で修正する必要があったわけです。短い上にたった2つなので今の所それでも問題ありませんが、コレが大きなプログラムになってくると、一体どこまで値を修正しなければならないのか、という問題が出てきます。
そこで変数の出番です。
変数を使えば、計算などでその変数を利用することが出来ます。
def hoge = 5
println hoge * hoge
実行結果は当然25になり、もし6の2乗を求めたい場合は、def hoge = 5
をdef hoge = 6
に変えるだけです。実際の計算処理自体を修正する必要は無いわけですね!
具体的にもっと便利/必要な場面というのは、実際にプログラムを書いていく上でわかってきますのでとりあえずは便利なんだな〜という感覚で捉えておいてもらえれば大丈夫だと思います。
#演算子
Groovyに限らず、一般的なプログラミング言語では、計算のために以下の演算子が用意されています。
演算子 | 意味 |
---|---|
+ | 足し算 |
- | 引き算 |
* | 掛け算 |
/ | 割り算 |
% | 剰余 |
掛け算とわり算の演算子が普通の算数とは少し違いますね。
剰余ってなんだ?という話ですが、コレは割り算に似ていて、わり算の余りを求めるものです。
例えば、4 / 5
、普通に算数すれば答えは0.8ですね。小数点を使わないのであれば、0と余り4になりますね。
剰余はずばりその余り4を求めるものです。
なので、println 4 % 5
を実行すると、その余りである4が表示されます。
#計算の順番
番外編的な扱いですが、Groovyでより複雑な算数をしてみましょう。
と言っても普通の算数のルールと同じです。
例えば算数で5 * (2 +10) / 3
というような計算をする必要がある場合、答えは20になります。
Groovyでコレを実現しようとすると。。。そのまま実行するだけです。
println 5 * (2 +10) / 3
Groovyでも一般的なプログラミング言語でも、算数のルールに則って、計算式は左から順番に計算されます。
そして、掛け算、割り算は足し算とひき算よりも先に計算されます。ただしカッコ()を使うことでその優先順位をある程度制御できる。
全て算数の計算ルールと同じですね。
#まとめ
今回は、プログラムの流れと、その中で使う値と変数という概念をまとめました。
ついでに計算で利用する演算子と、計算の順番も学びました。
コレですでに複雑な計算をプログラムを使って計算できるようになりましたね!