分岐のプログラム その1 [Java]
前回、ifを使えば分岐させることができると説明しました。
今回は実際にソースコードの例を挙げて説明していきたいと思います。
public class Main{
public static void main(String[] args){
boolean nemuke=true;
if(nemuke==true){
System.out.println("二度寝しましょう") ;
}else{
System.out.println("おはようございます");
}
}
}
それでは順番にみていきます。
最初の2行はお馴染みの決まり文句のようなものですね。
そして3行目「boolean nemuke=true」 。nemukeは変数です。そして、booleanは真偽(true or falseを問う)データ型です。そして、trueで初期化しています。
「int a=3」と構造的には同じですね。
この場合は
int型の変数aに3を代入する
でしたが、上の例の場合は
boolean型の変数nemukeにtrueを代入する
となります。眠気がある場合はtrue、そうでない場合はfalseですね。
そして、いよいよでてきました「if」。
if(nemuke==true){System.out.println("二度寝しましょう");
}
はもし、nemukeがtrueなら(眠いなら)、{ } 内のことを実行します、という意味です。
ifの直後の()内に条件を書き入れ、その条件を満たす場合の行動を{}内に書き入れます。
簡単にいうと、
if(条件){行動
}
ということですね。
条件の部分でnemuke==trueのように=が2つになっています。ifの中で使われる演算子のことを特に「関係演算子」と呼びます。(ちなみに、前記事ででてきた演算子は厳密には代入演算子といいます。)
ifの条件式では=が2つと覚えておきましょう。
そして次の
else{System.out.println("おはようございます");
}
これは、「そうでない場合は{}内の行動をする」という意味です。elseは英語で「他の」といった意味があります。
ひらたく言うと、もし(if)〜なら・・・、そうでないなら(else)・・・ということになります。
つまり、今回のプログラムでは、もし眠気がないなら、画面に、おはようございます、と表示させます
まとめると基本形は以下のようになります。
if(条件){行動①
}else{
行動②
}
条件を満たすなら行動①へ、満たさないなら行動②へということです。
これがifの最も基本的な構造です。
次回は条件式の部分を変えて、もう少しifの基本形に慣れていきましょう。
枝分かれさせたいならif [Java]
前回、プログラムは①順次、②分岐、③繰り返しの三つでできていると説明しました。
今回は②分岐について説明していきます。
分岐は簡単にいうと枝分かれのことです。
夕食を食べた後、お風呂にはいるor寝る。
休日、出かけるor家で過ごす。
道に迷った時、右に進むor左に進む。などなど
二つ以上の選択肢があることを分岐といいます。日常レベルではあまり意識しないかもしれませんが、人はどちらかを選択する時に必ず何かしらの判断基準があります。
例えば、休日、出かけるor家で過ごす、では疲れているのか、そうでないかなどです。
プログラミングではこういった判断の条件を「if」で表します。
「もしも〜なら・・・」といった具合ですね。
そして、その条件に合わない場合、つまり「そうでないならば」、「else」で表します。
もし〜なら・・・、そうでないなら…。(if条件・・・、else…)といった具合ですね。
次回は実際にプログラムの例を挙げて説明していきます。
たった3つでわかる、プログラムの流れ [Java]
今回はプログラムの流れについて説明していきます。
先に言っておきます。今回説明することは、プログラミング以外のことにも通ずることで、難しくありません。
プログラムを作るうえで、そのプログラムは①順次、②分岐、③繰り返しの3つの流れで構成されています。
①順次
プログラムを上から順番に実行していく。
②分岐
条件によって、枝分かれする。
③繰り返し
ある条件が満たされるまで繰り返す。
これら3つを組み合わせれば、どんなものでもプログラミングすることができます。
プログラミングは現実にあるものを細分化して、コンピュータにもわかるように説明したものです。
ということは、どんなものでもプログラミングできるということを言い換えれば、逆にいうと、現実にあるどんなものでもこの3つの組み合わせを用いて説明でいるということになります。
ということで、1日の生活を例に、この3つを詳しく説明していきたいと思います。
朝起きました。
↓順次
朝ごはんを食べました
↓順次
歯を磨きました。
↓ 順次
服を着ました。
(友人との待ち合わせ。晴れなら大きな公園、雨ならカフェ)
↓分岐
(雨だったので)カフェにいきました。
↓順次
帰宅しました。
↓順次
カフェで食べ過ぎたので、疲れて上がらなくなるまで腕立て伏せすることにしました。
↓繰り返し
腕立て伏せがようやく終わりました。
↓順次
就寝
通常は「順次」です。
しかし、「もしも、雨が降ったら〜」のように条件によって行動が変わる時は「分岐」となります。選択肢が複数ある状態ですね。
そして、腕立て伏せで「疲れるまで」のようにある条件を満たすまで同じことをやり続けることを「繰り返し」といいます。
次回は「分岐」について説明していきます。プログラミングでは分岐の際には「if」を使います。
命令実行の文 その3 [Java]
前回は、ランダムで数字を生成する文について説明しました。
今回は、文字や整数の入力を受け付ける文について説明します。
主な用途としては、ユーザーに氏名や年齢を入力してもらうときに使用します。
文字列の入力を受け付ける
String input = new java.util.Scanner(System.in).nextLine();
整数の入力を受け付ける
int input =new java.util.Scanner(System.in).nextInt();
見比べてみてください。
非常に似通っています。異なる部分はStringとint 、nextLineとnextIntですね。
簡単におさらいしながらこの二つの違いについて説明していきます。
Stringとintは変数inputに対するデータ型です。収納する箱の形状を表しているのでしたね。
Stringが文字列を収納するデータ型であるのに対して、intは整数を収納するデータ型です。
ちなみに一文字だけ収納する場合はchar、大きな整数を収納する場合は long、小さな整数を収納する場合はshort(またはbyte)を使えばよかったのでしたね。
特に理由がない場合は、文字ならString、整数ならintで問題ありません。
ということで、今回の場合は文字の入力を受け付ける方にはデータ型としてStringを、整数の入力を受け付ける方にはデータ型としてintを使います。箱の中にいれるものを想定して、データ型(箱の形状)を決定すればよいわけです。
続いて異なる部分としてnextLineとnextIntが挙げられます。
これについては意味を考えればわかると思います。
文字列の入力を受け付けるのでLineを、整数の入力を受け付けるのでIntを用います。どちらかややこしくなった時は、意味のうえから考えても違いがはっきりすると思います。
この二つの文はよく使う文なのでそのまま覚えてしまうのが良いと思います。
命令実行の文は覚えきれないほどの数があります。実際にプログラムを作る際には、「こんな命令あったよな・・・」と思い出したり、調べたりしながら作業していくことになりますが、よく使う文に関しては覚えてしまった方が効率が良いと思います。
理由は二つあります。
①調べる手間が省ける
②表記の仕方に慣れる
からです。一見、無意味に見える文字の羅列ですが、その一つ一つにちゃんと意味があります。
詳しくはもっとJavaのことを勉強していくうちに少しずつわかっていくので、今の時点では形ごと覚えてしまいます。
さて、それでは実際にこの二つの文を使ったプログラミの例を見てみましょう。
public class Main{
public static void main(String[] args){
System.out.println("あなたの名前を教えてください。");
String name = new java.util.Scanner(System.in).nextLine();
System.out.println("あなたの年齢を教えてください。");
int age = new java.util.Scanner(System.in).nextInt();
System.out.println("こんにちは、"+age+"歳の"+name+"さん");
}
}
実行結果
あなたの名前を教えてください。ウィークリープログラマー
あなたの年齢を教えてください。
23
こんにちは、 23歳のウィークリープログラマーさん
このようなユーザーから入力を受け付けるプログラムを組んだ場合、プログラムは一時停止状態になります。
ユーザーが文字やら数字やらを入力するとそれが変数に代入されます。
命令実行の文は他にもたくさんありますが、あとはでてくる度にその都度説明することにします。
次回は演算子について説明します。
インクリメント演算子、ディクリメント演算子、そして、普段はあまり馴染みのない式の書き方です。
命令実行の文 その2 [Java]
命令実行の文 [Java]
変数の決まり [Java]
前回までに、変数はデータを収納するための箱であると説明しました。
そして、その箱の名前は自分で決めることができます。
例えば、数字を入れる箱なら、「int number」、「int suuji」、「int kazu」などわかりやすいように名付けます。
使用できるのはアルファベット、数字、「_」、「$」(、ひらがな、漢字など←推奨されません)です。
ただ、厳密には変数として名付けることのできない名前もあります。 それが予約語と呼ばれる約50個の単語です。
①予約語は使用禁止
その単語自体がJavaの中で意味を持ってしまっているため使用することができません。これまでにでてきたものだとint,doubleなどのデータ型、その他にも後々に紹介するif(条件分岐)などです。さらに詳しく知りたい方は→( )
②同じ変数名を再度使ってはならない
コンピュータは理解力のない体力馬鹿 ( )でも触れたように、同じ変数名を使用してしまうと区別することができません。
人間であれば、見た目も声も何から何までそっくりな双子がいても、バスケをやっているのか、サッカーをやっているのかなど、行動内容で見分けることができますね。
しかし、コンピュータは名前でしか判断できません。行動内容が異なっていても、名前が同じなら、コンピュータにとっては同じなのです。
ですから、もしも数字を複数種類使いたいのであれば、 int number_a, int number_b, int number_cのように別々の名前を付けなければなりません。
③大小文字、全半角は区別される
上の例でいうと、int number_aとint number_bが区別されるように、int number_aとint number_Aは区別されます。全半角についても同様に区別されます。
④ 複数の単語をつなげる場合は、2つ目以降の単語の先頭を大文字にする
int myNameのように、2つ目以降の単語の先頭を大文字にします。これは慣習のようなもので、必ずしもこうしなければいけないというものではありません。
プログラムをグループで作る、書いたプログラムを他者に見てもらうとなった時に見やすくするためです。
変数の名付け方にも慣れてきたでしょうか?
次回は「命令実行の文」について説明します。
主なデータ型は4種類 [Java]
前回は、演算子について説明しました。
その中で「int a」のintの部分をデータ型、aを変数であると説明しました。
変数の部分は箱に入れる中身がわかるような名前にしておくということでした。
今回は、このデータ型について説明していきたいと思います。
データ型は、簡単に言うと箱の種類・大きさを表しています。
引っ越しで例えると、
Sサイズの段ボールなのか、Mサイズなのか、Lサイズなのか、
それとも、衣類を入れることができるハンガーボックスなのか、
家具を包み込むネット毛布なのか。
収納するものの種類や大きさによって使い分けます。プログラミングでも同じです。
文字なのか、数字なのか(大きな数字なのかどうか)などによって使うことのできるデータ型が異なります。
前回使ったのはintというデータ型でした。これは普通の整数を収納できるデータ型です。具体的には−2147483648〜2147483647の範囲内の整数を扱うことができます。
intの他にも整数に対応したデータ型はありますが、intでほとんどの整数をカバーできるため割愛します。(long,short,byte)
さて、intは整数に限られました。小数の場合はどうなるのでしょう?
小数の場合は主にdoubleを用います。(floatについては割愛)
数字以外には文字が考えられますね。文字の場合は主に Stringを用います。ただし、一文字の場合に限りcharを用いても良いことになっています。
その他、YesかNoかで答えられるような二者択一のものに対してはbooleanを用います。収納するデータは必ず(yesなら)trueか(noなら)falseになります。
収納するデータによってこの型を使い分けます。
主に、整数(int)、小数(double)、文字(string)、二者択一(boolean)の4種類を使い分けることになります。例えば、文字列のデータに対してintを使うとエラー(コンパイルエラー)になり、実行できません。種類が全く違うからです。
ただし、byte,short,intのデータ型をlongのデータ型に収納するのは可能です。種類が同じ、かつ、より大容量のデータ型なら可能なのです。(通常はintで事足りるのでintを使っておけば問題ないです。)
以下に簡単にデータ型についてまとめておきます。
整数 long 大きな整数
int 普通の整数
short 小さな整数
byte とても小さな整数
小数 double 普通の小数
float 少しあいまいな小数
文字 String 文字列
char 1文字
真偽 boolean trueかfalse
次はデータ型とセットになっている「変数」についてさらに詳しく説明していきたいと思います。
演算子を使って計算してみよう [Java]
前回は画面上に「こんにちは」と表示させるプログラミングについて説明しました。
今回は、四則演算です。足し算、引き算、掛け算、割り算ですね。
前記事 ( http://weekly-programmer.blog.so-net.ne.jp/2015-07-04 )で、プログラミングの書き出しの部分は毎回ほぼ固定だと説明しました。(神様と司令官の部分ですね。)
それでは、早速・・・
public class Main{
public static void main(String[] args){
int a;
int b;
a=3;
b=5;
int sum=a+b;
System.out.println(a+ "+" +b+ "=" +sum);
}
}
青色部分と赤色部分は前回と全く同じですね。メソッドブロック(緑色部分)が前回と異なっています。このメソッドブロックのソースコードについて説明していきたいと思います。
まず、一行目の「int a;」。これは、変数宣言と 呼ばれています。イメージとしては、「a」は箱を表していて、「int」はその箱の種類を表しています。ちなみにaのこと変数をintのことをデータ型と呼びます。
箱の中に入れるものが数字なのか、文字なのか・・・によって箱の種類が変わってきます。今回は数字なので、「int」という種類を用意しました。(詳しくはまた別記事にて)
そして「a=3;」は「a」という箱に「3」を入れるという意味です。
「b」についても同様です。今、aとbのそれぞれの箱に3と5が入っている状態です。
ちなみに、メソッドブロックの各行に登場する「;」は、日本語でいう句読点のようなものです。必ず書き忘れないようにしましょう。
このようにやや面倒な手続きをしなければなりません。なんかプログラミングっぽいですね。しかし、実はこの4行、省略して書くことができるんです。ヒントは次の行「int sum=a+b;」。
これは
int sum;sum=a+b;
と二行にかき分けることができます。この2つ、よーく見てください。 aとbのそれぞれと同じ書き方ですね。つまり、逆に2行を1行にまとめて書くと・・・
int a=3;int b=5;
とそれぞれ書き換えることができます。すると、全文は以下のようになります。
public class Main{public static void main(String[] args){
int a=3;
int b=5;
int sum=a+b;
System.out.println(a+"+" +b+"="+sum);
}
}
だいぶすっきりしましたね。
そして、次は「int sum=a+b;」 。intという種類のsumという箱。そこにaとbを足したものを入れます。
このsumは合計という意味ですが、これはこちらが勝手に決めた名前です。tasiでも、plusでも、cでも好きな名前で構いません。ただし、コードが複雑になればなるほど、後で見返した時にわかりにくくなります。ですので、なるべく意味を連想できる名前が好ましいです。
System.out.println();は前回のこんにちはを表示させるプログラムでもでてきましたね。
今回は()の中が少し複雑です。()の中の決まりがあります。
①" "で囲む
②ただし、変数は" "の外に出す
③" "で囲まれた部分とそうでない部分が入っている場合、+でつなぐ
つまり、" "で囲まれた部分はそのまま表示され、" "の外にある+は接着剤のようなものなので、表示されません。
上のソースコードだと、
実行結果
3+5=8
と表示されます。 長い割に意外とすっきり。System~以外の行は実行した時に画面には表示されない、いわば裏方となっています。
ちなみに、四則演算は、+、−、*、/です。
次回は今回説明を割愛した「データ型」について説明していきたいと思います。
画面上に「こんにちは」と表示させる [Java]
今回は、画面に好きな文字を表示させるプログラムについてです。
public class Main{public static void main(String[] args){
System.out.println("こんにちは");
}
}
実行結果
こんにちは
なんとなく英語に近い言葉で書かれていると思います。
「こんにちは」の部分をさまざまに変化させて、好きな文字を表示させることができます。
水色と赤色の部分はほぼ定型文です。
赤色部分はクラスブロック、緑色部分はメソッドブロックと呼ばれています。プログラミングを行ううえで重要な概念のひとつにブロックというものがあげられます。
簡単にいうと、ブロックまとまりを表しています。
青色のブロックはこのプログラム全体を、クラスブロックはメソッドブロックをそれぞれ包み込んでいます。
そして、メソッドブロックには主に実行させたいことを書いていくといった具合です。
詳しくはまた別記事にて書いていくので、今のところは「まとまりを表している」ということだけうっすらと理解していれば良いと思います。
実際にプログラミングをしていくとメインとなるのはメソッドブロッグです。その他の部分はほぼ定型文です。
例えば、画面上に、おはようございます、こんにちは、こんばんはと三つ縦に並べて表示させたい時は以下のようなプログラミングになります。
public class Main{public static void main(String[] args){
System.out.println("おはようございます");
System.out.println("こんにちは");
System.out.println("こんばんは");
}
}
青色部分が全体を包み込み、クラスブロックがメソッドブロックを包み込みます。
コードが長くなってくると、この包含関係がわからなくなってきます。必ず「{」と「}」の数が一致していることを確認してください。
青色部分のMainの部分はこのプログラミングも名前とも呼べるべき部分です。
私のイメージですが、
青は神様
赤は司令官
緑は一般人
といったところでしょうか。神様は普遍的。変わりません。
Mainとmainの部分はそれぞれ、神様と司令官につけることのできる名前です。自分で自由に変更して構いません。
赤の司令官は緑の一般人をうまく操ります。時には司令官どうしで一般人の受け渡しをすることもあります。
次回は「四則演算のプログラミング」について書きたいと思います。