なんとなく分かるプログ

初学者がなんとなく分かった気になれるプログ(Programming Blog)

なんとなく分かるプログ(Programming Blog)

こんにちは!

本ブログは、ソフトウェア・プログラミングの初学者のための勉強ブログです。

 

私は、仕事の関係上、初学者に教えることが多いので、教え方メモとしてこのブログを立ち上げました。初学者の方の勉強の助けになれば幸いです。

 

勉強していて、分からないことがあったとき、手当たり次第にいろいろな参考書に手を出すのはハッキリ言って効率が悪いです。

 

一番効率の良い勉強方法は、人に教えてもらうこと、人に教えること、です。

 

ひとつぐらい、参考書を買って、もしも分からないことがあれば、本ブログを読んでみてください。それでも分からないことがあれば、コメントをして頂けたら返信します(コメントが来たらメイルで通知されるようになっているので比較的はやめに反応できると思います!)。私の教え方の改善にもなるので、ぜひ気軽にご活用下さい。

 

右側のメニューから、興味のあるカテゴリを覗いてみて下さいね。

なんとなくわかるJava入門#8 繰り返し編その②

こんにちは。

今回は繰り返し編その②です。今回の目標は「for文を理解する」です。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

これまでの復習

前回学習したwhile文について簡単に復習してみましょう。読むだけでも良いですが、可能であれば、Eclipseを起動し、次の名前のプロジェクトとJavaファイルを作って下さい。やり方が分からない人は、実際に動かしてみる編の記事を参照してください。

プロジェクト名:LoopWhile
クラス名:LoopWhileMain

public class LoopWhileMain {
    public static void main(String[] args) {
        System.out.println("復習します。");
        int sum = 0;
        int count = 0;
	while( count < 5 ) {
	    sum += 2;
	    count++;
	}
	System.out.println("合計:" + sum);
    }
}

このプログラムは、sumという整数型の値を扱う変数と、countという繰り返し回数をカウントする変数を用意し、{}内の処理をcountの値が5未満のあいだ繰り返し実行します。結果として、5回{}内の処理が実行されることになります。

繰り返しの回数を制御している部分は、
・int count = 0;
・count < 5
・count++;
になります。

while文は、実行したい目的処理( sum += 2;)と、繰り返し回数を制御する処理が同じ {} 内に記述されます。したがって、単純な n 回繰り返しの処理であっても、ちゃんとコードを読まないと何回繰り返しされるのかがわかりません。例えば、 {} が1万行あった場合、その中から count の値を操作している行を見つけ出して、どのような繰り返しが行われるか考える必要があります。

”単純な”繰り返し処理を簡素に記述できる構文として、for文があります。

 

繰り返し処理 - その②

for文

for文を利用することで、繰り返し回数を制御する処理を分けて記述することが出来ます。

今回もプログラムの書き方から覚えていきましょう。

このような for から始まるひとまとまりの文のことを、「for文」と呼びます。

初期化式には、繰り返し処理の最初の一回のみ実行される式を記述します。一般には繰り返し回数を制御する変数の初期化を行います。

条件式には、繰り返し処理を実行するか判定する式を記述します。この式の評価結果はboolean型の値(つまり、true or false)でなければいけません。典型的なものとしては、比較演算子( == とか、> とか)が用いられている式を記述します。

更新式には、繰り返し処理の後に実行される式を記述します。一般には繰り返し回数を制御する変数の値を加算等で更新します。

実行順としては、

  1. まず、初期化式が実行され、
  2. その後、条件式を実行します。
  3. その結果が真であれば、直後の「{}」の中の繰り返し処理が実行されます。
  4. 次に、更新式を実行し、2に戻る
    ※ 条件式の評価結果がが真である限り、2、3、4を繰り返し実行

このようにfor文は、 () 内に繰り返し回数を制御する処理、 {} 内に目的の処理で分けて記述することができ、簡素な記述となります。厳密には、() 内に繰り返し回数の制御とは関係のないことも書けますが、記述が分かりづらくなってしまうので避けましょう。

 

では、復習のプログラムの繰り返し処理について、このfor文を使って確認してみましょう。以下のようにプログラムを書き換えます。

public class LoopForMain {
public static void main(String[] args) { System.out.println("復習します。"); int sum = 0; for(int i = 0; i < 5; i++ ) { sum += 2; } System.out.println("合計:" + sum); } }

単純な n 回繰り返しの処理であれば、while文よりも分かりやすくなりました。
※ これまで繰り返し回数をカウントする変数の名前はcountとしていましたが、ここでは、i としています。countでも問題ありませんが、慣習として、for文の場合は i とすることが多いです。

 

以上のように、for文を使うことで、これまでは単純に上から下に行われていた実行の流れが、条件を満たす間繰り返し実行するといった流れを実現できるようになります。

繰り返しの処理の流れのイメージ

こまけぇハナシ

while文とfor文の使い分け

for文とwhile文はどちらも繰り返し処理を表現するための構文で、同じ内容の処理をどちらを使っても記述することができます。分かりやすい簡素なプログラムを記述するために、繰り返し処理の特徴に応じて、for文とwhile文を使い分けるようにしましょう。

for文は、繰り返し回数が最初から決まっている場合にはwhile文と比較して、簡素に記述することができます。これは、for文は繰り返しの回数を制御する部分と、目的の処理の部分を分けて記述することができるからです。

一方で、「繰り返し回数が最初から決まっていない場合」、「目的の処理が、繰り返しの回数の制御に密に関わっている場合」は、while文の方が簡素に記述することができます。例えば、以下のようなプログラムは、合計金額 (total_price) が1000未満の間、商品金額 (price) の加算と商品数 (items) のカウントを続ける繰り返し処理です。何回繰り返しを行うかはpriceによって変わります。

int total_price = 0;
int items = 0; while( total_price < 1000 ) { total_price += price; items++; }
(一部省略)

終わりに

といことで、繰り返し編その②は以上です。次回は配列です。

ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

なんとなくわかるJava入門#7 繰り返し編その①

こんにちは。

今回は繰り返し編その①です。今回の目標は「while文を理解する」です。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

これまでの復習

これまでに学習した内容について簡単に復習してみましょう。読むだけでも良いですが、可能であれば、Eclipseを起動し、次の名前のプロジェクトとJavaファイルを作って下さい。やり方が分からない人は、実際に動かしてみる編の記事を参照してください。

プロジェクト名:LoopWhile
クラス名:LoopWhileMain


public class LoopWhileMain{
	public static void main(String[] args) {
		System.out.println("復習します。");
		int sum = 0;
		sum += 2;
		sum += 2;
		sum += 2;
		sum += 2;
		sum += 2;
		System.out.println("合計:" + sum);
	}
}

このプログラムは、sumという整数型の値を扱う変数を用意し、5回だけ現在の値に2を加算し、最後に”合計:10”と出力させます。「+=」は現在の変数の値に右辺の値を加算するという意味でしたね。この演算子については演算についてで説明しているので、分からない方は参照して頂けたらと思います。

要は5回同じ処理を繰り返すことを目的としているプログラムでしたが、これが1万回繰り返したい場合、どのように記述すべきでしょうか?1万行の加算処理を記述しなければいけないのでしょうか?繰り返しであるということが分かっていれば読む必要もありませんが、もし他者の書いたプログラムだった場合どうなるでしょうか?本当に同じ処理が書かれているという保証はないので、1万行の処理を確認する必要があります。

このような同じ処理を繰り返し実行するプログラムを簡素にするための構文Javaには用意されています。主には、while文for文の2種類がありますが、今回はwhile文を学習していきます。

 

繰り返し処理 - その①

while文

while文を利用することで、特定の条件を満たしている間、繰り返し、同じ処理を実行することが出来ます。

今回もプログラムの書き方から覚えていきましょう。

このような while から始まるひとまとまりの文のことを、「while文」と呼びます。

条件式には、結果がboolean型の値(つまり、true or false)になるような式を記述します。典型的なものとしては、比較演算子( == とか、> とか)が用いられている式を記述します。

実行順としては、まず、この条件式が実行され、その結果が真であれば、直後の「{}」の中の記述が実行されます。もし、偽であれば、「{}」の後の処理が実行されていきます(つまり、繰り返し処理は終了)。

 

では、復習のプログラムの繰り返し処理について、このwhile文を使って確認してみましょう。以下のようにプログラムを書き換えます。


public class LoopWhileMain {
public static void main(String[] args) { System.out.println("復習します。"); int sum = 0; int count = 0; while( count < 5 ) { sum += 2; count++; } System.out.println("合計:" + sum); } }

新たに「count」という変数が登場しましたが、これは繰り返しの回数をカウントするための変数として用意しました。

while文の条件式には「 count < 5 」と書かれています。最初はcountの値は0なので、「{}」内の処理が実行されます。この「{}」内では、「count++」と書かれていますが、これはcountの現在の値に1加算するという意味です(忘れている方は演算についてで復習しましょう)。このcountの値が5になったとき、while文の繰り返しは終了します。

では、なぜ「cont <= 5 (countが5以下)」ではなく、「count < 5 (countが5未満)」なのでしょうか?「{}」内の処理はcountは、 0、1、2、3、4の時に実行されます。つまり目的通り5回繰り返されます。もし条件式が「count <= 5」の場合は、countが 0、1、2、3、4、5の時に実行されるので、6回繰り返されてしまいます。もちろん、countの初期値が1の場合は、「count <= 5」で良いのですが、プログラムでは慣例として0を初期値として繰り返し文を記述することがよくあります。

 

以上のように、while文を使うことで、これまでは単純に上から下に行われていた実行の流れが、条件を満たす間繰り返し実行するといった流れを実現できるようになります。

繰り返しの処理の流れのイメージ

こまけぇハナシ

特殊なwhile文として、do-while文といったものがあります。while文は、まず最初に繰り返しの条件判定を行うので、最初から条件を満たさない場合は「{}」内は1度も実行されません。一方で、do-while文の場合は、「{}」を実行してから、繰り返しの条件判定が行われるので、必ず1度は「{}」内の処理が実行されます。

do-while文

do-while文は次のように記述します。

public class LoopWhileMain {
    public static void main(String[] args) {
        System.out.println("復習します。");
        int sum = 0;
        int count = 0;
        do{
            sum +=2;
            count++;
        }while(count < 5);
}

最後のwhileの後にセミコロンを忘れないように注意しましょう。

終わりに

といことで、繰り返し編その①は以上です。次回は繰り返し編その②です。

ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

なんとなくわかるJava入門#6 条件分岐編

こんにちは。

今回は条件分岐編です。今回の目標は「if文を理解する」です。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

これまでの復習

これまでに学習した内容について簡単に復習してみましょう。読むだけでも良いですが、可能であれば、Eclipseを起動し、次の名前のプロジェクトとJavaファイルを作って下さい。やり方が分からない人は、実際に動かしてみる編の記事を参照してください。

プロジェクト名:ConditionalBranch
クラス名:CondBranchMain


public class CondBranch {
	public static void main(String[] args) {
		System.out.println("復習します。");
int i = 3; double d = 2.5; double ans = (int)d + i * d; } }

プログラムは、基本的に上から下に順に実行(順次)されます

「System.out.println("復習します。");」は、「復習します。」という文字列が表示されます。

「(int) d」は、キャスト演算子による明示的型変換です。double型の値をint型に変換します。

演算子として+と*がありますが、*の方が優先して実行されます。したがって、「i * d」を評価し、その後、「int型に変換されたdの値」と「i * dの結果」が加算されます。

また、「i * d」は、int型とdouble型の計算なので、型の大きい方であるdouble型にint型の値を変換してから計算が行われます。この型変換のことを、暗黙的型変換と呼びます。これら演算について型変換についてそれぞれ過去の記事で説明しているので、分からない方は参照して頂けたらと思います。

このプログラムを実行した結果、変数ansには、次のうちどちらの値が入っているでしょうか?

a ) 9.5

b ) 10

 

どちらになるかは、今回の学習内容である「条件分岐」を使って確認してみましょう。

 

条件分岐

if-elseの構文

条件分岐の仕組みを使うことで、これまで上から下に行われていた実行の流れを条件に応じて分岐させることができます。

今回はプログラムの書き方から覚えていきましょう。

このような if から始まるひとまとまりの文のことを、「if文」と呼びます。

条件式①には、結果がboolean型の値(つまり、true or false)になるような式を記述します。典型的なものとしては、比較演算子( == とか、> とか)が用いられている式を記述します。

実行順としては、まず、この条件式が実行され、その結果が真であれば、直後の「{}」の中の記述が実行されます。もし、偽であれば、elseの直後の「{}」の中の記述が実行されます。

 

では、復習のプログラムのansの結果について、この条件分岐を使って確認してみましょう。以下のようにプログラムを書き換えます。


public class CondBranch {
	public static void main(String[] args) {
System.out.println("復習します。");
 int i = 3; double d = 2.5; double ans = (int)d + i * d; if (ans == 10) { System.out.println("正解は10です。"); } else { System.out.println("正解は9.5です。"); } } }

if文の条件式には、「ans == 10」と記述されています。「==」は左辺と右辺の値が一致すればtrue、一致しなければfalseとして評価される演算子でしたね。

したがって、ansが10であれば、「正解は10です。」と表示され、ansが10でなければ、「正解は9.5以外です。」と表示されます。

ただし、このプログラムは表現している内容が正しくありません。なぜなら、ansが10ではないからといって、9.5とは限りません。次のif-else if-elseの構文を理解して、このプログラムを修正しましょう。

 

if-else if-elseの構文

実は、if文にはさらに分岐を追加することができます。さらに分岐を追加したif文は次のように記述します。

ifとelseの間に、「else if」を追加します。これによって、最初の条件式が偽の場合に、次の条件式が評価されます。この「else if」は0個以上記述することができます

先ほどのプログラムを次のように修正します。


public class CondBranch {
	public static void main(String[] args) {
System.out.println("復習します。");
 int i = 3; double d = 2.5; double ans = (int)d + i * d; if (ans == 10) { System.out.println("正解は10です。"); } else if (ans == 9.5) { System.out.println("正解は9.5です。"); } else {
System.out.println("正解はそれ以外です。");                } } }

これによって、ansの値が、10の場合と、9.5の場合と、それ以外の場合で処理を分けることができました。

これを実行してみると、結果として、ansの値は9.5であるということが分かります。

 

ifのみの構文

最後に、実はif文はelseを省略することもできます

つまり、if文について正しくは↑のように記述します。

以上のように、if文を使うことで、これまでは単純に上から下に行われていた実行の流れが、条件によっていずれかの「{}」の中を実行するといった流れの分岐が実現されるようになります。

実行の流れの分岐のイメージ

こまけぇハナシ

Javaにはif文の他にも、switch文という条件分岐を実現するための構文があります。まずは、if文を理解できれば十分ですが、余裕があればswitch文も理解しましょう。

switch文

switch文は次のように記述します。

「式の評価結果として得られた値」が、「caseに記述された値」のどれに一致するか判断し、一致するcase部に書かれた文(1行以上)を実行し、breakが来たら、switch文の {} から抜け出します。defaultは、どのcaseにも当てはまらない場合、実行されます。

switch( 式 )の式の評価結果はboolean型の値になる必要はありません。switch文は式の評価結果の値がどのcaseに一致するか判断して分岐する文です。これがif文との違いになります。

すこし複雑な話ですが、switch文の書き方にある「break」文は特別な意図がない限り忘れずに書くようにしましょう。あるcaseの場合、break:が来るまで下に実行され続けます。例えば、下の例では、値1の場合、文Aと文Bを実行することになります。

最後に、if文とswitch文の使い分けですが、多分岐となるような場合(つまり、1つの値に対して複数の場合分けをしたい場合)は、switch文が分かりやすいでしょう。一方で、ある条件が偽の場合に、異なる条件で分岐ーのような、複数の条件を組み合わせる場合は、if文のほうが分かりやすいでしょう。

具体的には、下のif文とswitch文は同じ結果になります。「switch(true)」としているので、「case a > 1」の評価結果がtrueの場合、次に、「b < 2」の評価結果がtrueの場合で実行されます。

switch文は、「括弧の中の値が、この場合だったら...」といった場合で分けられた処理を行うことを目的としたものです。この例では、「caseの式の結果がtrueの場合だったら。」という意味になるので、本来のswitch文の意図に反しており、分かりづらいものになっています。
プログラムは基本的に複数人で開発するものですし、後から自分で読み返すこともあります。したがって、プログラムを書くさいには、それが読み物として理解し易いかどうかといった視点がとても重要となります。

 

論理演算子

この条件分岐に指定される条件式として、複数の条件の論理積論理和、否定を表現するために論理演算子が利用されます。論理演算子とは何かについては、以前学習した演算編をご参照ください。

この論理演算子を使って、例えば、年齢が20代かどうかを判定することができます。


if (20 <= age && age < 30) {
    System.out.println("20代です。");
}

終わりに

といことで、条件分岐編は以上です。次回は繰り返し編(予定)です。

ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

なんとなくわかるJava入門#5 型変換編

こんにちは。

今回は型変換編です。今回の目標は「暗黙的/明示的型変換について理解する」です。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

異なる型同士の演算

異なる型の値同士が計算された場合、どうなるのかを説明していきます。

この計算には、暗黙的型変換と明示的型変換という仕組みが重要になってきます。

暗黙的型変換

基本は同じ型の値同士で計算が行われます。では、 1 + 1L のような計算、つまり、int 型と long 型の足し算を書いたらどうなるのでしょうか?


        long l = 1 + 1L;
    

正解は、同じ型同士の計算になるように「型変換(キャスト)」が行われます。 1 + 1L の場合、int型の値(1)が long 型(1L)に変換されてから、計算が行われます。このように勝手に型変換が行われることを、「暗黙的型変換(暗黙的キャスト)」と呼びます。

型変換は小さい型の方を大きい型の方になるよう変換が行われます。この、大きい、小さいは覚えていますか?( 基本データ型編 参照 ) int 型と long 型は、どちらも、整数を扱います。この二つの違いは、扱える値の範囲です。 long 型は、長整数と言って、int 型より大きい桁を扱うことができます。

大きさの順序は、次のとおりです。


        int < long < double
    

int型とlong型の計算であれば、int型の値はlong型に変換されるし、long型とdouble型の計算であれば、long型の値はdouble型に変換されます。

なぜ小さい方から大きい方に変換されるのでしょうか?int型とdouble型の違いは、小数点以下の値を扱えるかどうかです。

もしも、1というint型の値をdouble型に変換したとしたら、1.0になります。これは「.0」が追加されただけです。したがって、1 + 1.5 を評価したら、2.5 であり特に計算結果は変わりません。

しかし、1.5というdouble型の値をint型に変換したらどうなるでしょうか?正解は、1になります。これは「.5」の情報が削除されたことになります。1 + 1.5は、2となってしまい、計算結果が変わってしまいますよね?これだと想定しない問題も起きかねないので、小さい方から大きい方へ変換されると覚えると良いでしょう。

 

明示的型変換

どうしても大きい方の型から、小さい方の型へ変換したい場合があります。

通常は、「 int a = 1.5; 」のように、double型の値をint型の変数に代入することはできません。これを代入できるようにするには、「キャスト演算子を利用します。

キャスト演算子は、「(変換したい型)」のように記述します。先ほどの例の場合は、「int a = (int) 1.5;」のように記述します。これによりdouble型の値をint型に変換してから代入します。

ただし、大きい型の値を、小さい型に適合するように、一部の情報が削除されることに注意してください。「int a = (int) 1.5;」の場合、「1.5」をint型に変換すると小数点以下の値は扱えなくなるので、この情報が削除され、「1」となります。つまり、aに代入される値は「1」です。

このようにキャスト演算子を利用して型変換を行うことを「明示的型変換(明示的キャスト)」と呼びます。

 

こまけぇハナシ

暗黙的と明示的について

暗黙的と明示的という言葉はソフトウェアの分野ではよく使われます。

辞書にある暗黙値という用語の言葉を借りると、

暗黙的とは、文章などで示されないが、常識的(典型的)には分かっていること。

明示的とは、文章などではっきりと分かるように示されていること。

を指します。文書や会話で明示的だとか明示してというようにあれば、あぁはっきりと示すのね~というように理解すれば良いです。

 

終わりに

といことで、型変換編は以上です。次回は条件分岐編(予定)です。

ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

なんとなくわかるJava入門#4 演算編

こんにちは。

今回は演算編です。今回の目標は演算子と評価について理解する」です。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

演算子

今回は、演算について詳しくお話したいと思います。これまで演算について、とくに説明することなくなんとなくでお話してきましたが、改めて説明したいと思います。

まず細かいハナシは置いておいて、ざっくり説明すると、「a=1+2」のようなものを「式」と呼んで、「=」や「-」のような計算を行う記号のことを演算子(オペレータ)」と呼びます。そして、計算される対象を「被演算子オペランド)」と呼びます。

この演算子にはいくつか種類と、それぞれによって構成される式の中で評価される優先順位があります。以降より、この演算子の種類と評価の優先順位について説明をしていきます。



算術演算子

Javaでも四則演算を行うことができます足し算、引き算、掛け算、割り算はそれぞれ、+、-、*、/で表記します。これらを算術演算子と呼びます。掛け算は*で、割り算は/であることに注意しましょう。また、この演算にはもちろん「()カッコ」も用いることができます。

 

代入演算子

これまで学習した「=(代入)」演算子のひとつです。

さらに、「=」と「+、-、*、/」を組み合わせた「複合代入演算子というものもあります。例えば、「ans += 1;」のように記述します。この計算は「ans = ans + 1;」の省略記法です。つまり「+=」の左側の変数の値に、「+=」の右側の値を足して、再度代入することになります。その他、「-=」「*=」「/=」も同様です。

 

比較演算子

数値を比較するための演算子として「(数値)比較演算子があります。「>」「>=」「<」「<=」「==」「!=」の6種類があります。左辺と右辺の項を比較し、その結果からboolean型のtrue or falseを値とします。それぞれ、以下のような意味になります。

比較演算子 意味
> 左辺の値は、右辺の値より大きいかどうか?
>= 左辺の値は、右辺の値以上かどうか?
< 左辺の値は、右辺の値より小さいかどうか?
<= 左辺の値は、右辺の値以下かどうか?
== 左辺の値と右辺の値が等しいかどうか?
!= 左辺の値と右辺の値が等しくないかどうか?

 

例えば、「2 > 1」は、「2は1より大きいかどうか?」という意味で、これは正しい(真)のでtrueとなります。一方で、「1 > 2」の場合、「1は2より大きいかどうか?」という意味になり、誤り(偽)なのでfalseとなります。

 

論理演算子

論理積論理和、否定を実現するための演算子として論理演算子と呼ばれるものがあります。それぞれ、&&(論理積条件和演算子)、|| (論理和条件和演算子)、! (否定;否定演算子)のように記述します。

それぞれの演算子演算子はboolean型の値でないといけません

&&(条件和演算子)は二項演算子であり、左辺の条件式と右辺の条件式が両方とも true であれば true として評価されます。例えば、true && true は true と評価されます。

 || (条件和演算子)も二項演算子であり、左辺の条件式と右辺の条件式のいずれかが true であれば true として評価されます。例えば、true || false は左辺が true なので、 || も true と評価します。

 ! (否定演算子)は単項演算子であり、被演算子はboolean型の値でなければなりません。被演算子がtrue であれば false として評価されます。例えば、! true は、falseとして評価されます。

 

インクリメント/デクリメント演算子

その他にも「++(インクリメント演算子」「--(デクリメント演算子」といった、特殊な計算があります。「++a」は、「a = a+1」の省略記法で、1加算して再度代入するという意味です。ということは「--a」は、「a = a-1」ですね。

 

評価

評価には、優先順位と結合規則という2つの規則が関わっています。それぞれについて理解できれば演算をマスターすることができます。

優先順位

これらの演算子には評価の優先順位があります。以下の順に評価されます。

優先順位 演算子
1 ()かっこの中の演算子、インクリメント/デクリメント演算子
2 !
3 *、/、%
4 +、-
5 >、>=、<、<=
6 ==、!=
7 &&
8 ||
9 =、+=、-=、*=、/=、%=

 

同じ優先順位の演算子が並んでいる場合は、代入演算子以外は左にあるものから評価されます。例えば、「5-2-3」は、「-」が二つありますが、左の「5-2」から評価します。代入演算子は右にあるものから評価します。a = b = c = 1; の場合は、c=1から評価されます。

この同じ優先順位の演算子が並んでいる場合に、どちらを優先するのか決めた規則を「結合規則」と呼び、左側から優先されるものを「左結合」と呼びます。右から優先されるものを「右結合」と呼びます。

こまけぇハナシ

その他の演算子

今回紹介した演算子は、全体の一部です。その他にもビット演算子やシフト演算子等があります。

 

n項演算子

算術演算子などの演算子は、右辺と左辺の2つの項から一つの結果を得ることから、2項演算子と呼びます。

インクリメント/デクリメント演算子は1つの項から結果を得ることから、単項演算子と呼びます。

ちなみに、3項演算子も存在します。「条件式?式1:式2」の形式で記述し、条件が真であれば式1を評価した結果、条件が偽であれば式2を評価した結果を得ます。

(式、項、因子という用語を定義について説明するとさらにややこしくなるので、今回はこの説明は避けます。とりあえず、計算対象とぐらいに置き換えて頂ければ良いです。)

 

比較演算子と関係演算子

今回、>、>=、<、<=、==、!= のことを比較演算子と呼びましたが、関係演算子と呼ばれることもあります。

厳密にはJavaの仕様書によると、>、>=、<、<=を数値比較演算子と呼び、instanceof と記述する型比較演算子と合わせて、関係演算子と呼ぶようです。また、==、!=のことを等価演算子と呼びます。

今回は、分かりやすさを優先して、すべて比較演算子と呼んでいます。

 

論理演算子の使われ方

論理演算子の説明でtrue && true であれば true として評価されると説明しましたが、実際の使われ方はもう少し複雑です。

例えば、「 0 <= a && a <= 10」のように使われます。この式は、まず、「0 <= a」「a <= 10」の順に評価されます。もし、変数a に代入されている値が11であれば、「0 <= a」は true 、「a <= 10」は false として評価されます。この評価結果が元の式に適用され、「true && false」となります。きちんと、「&&」の被演算子はboolean型の値になっていますね。そして、「true && false」が評価され、結果としては false になります。つまりこの式は a の値が0以上10以下かどうかを判定しているわけです。

今はまだ実用性にピンとこないと思いますが、これは後日学習する条件分岐で納得いただけると思います。

前置、後置インクリメント、デクリメント

インクリメント/デクリメント演算子は、被演算子の前に記述(例:++a)することと、後ろに記述(例:a--)することができます。それぞれ、前置インクリメント/デクリメント、後置インクリメント/デクリメントと呼ばれます。

++aは、優先順位に従って加算した後の値が式の中で使われますが、a++は、加算する前の値が式の中で使われます。

つまり、
a = 1;

b = ++a + 2;
の場合、
++aによってaに1が加算された後に、2(aの加算後の値)+2が行われます。

 

一方で、
a = 1;

b = a++ + 2;
の場合、
a++ によってaに1が加算された後に、1(aの加算前の値)+2が行われます。

 

評価順序は変わりませんが、演算子による振る舞いが変わります。ここら辺は、後に学習するメソッドを理解すると分かりやすいかもしれません。

評価順序も、実は、
1. ()内の演算子、後置演算子
2. 前置演算子
・・・以降は同じ
が正しいです。

単項演算子の実行はややこしく、間違えやすいので、他の演算子と組み合わせて使うことは極力避けると良いでしょう。

 

Javaの文だとか式だとか

今回学習した演算子や、結合規則や、文だとか式だとか項だとかのハナシは、「JavaBNF」とか「コンパイラ」とか調べると良く分かると思いますので、ぜひ勉強してみて下さい。

 

 

終わりに

といことで、演算編は以上です。基本となる演算子を挙げましたが、これらは暗記しようとするよりも、いくつか演習問題を解いてみる方がすぐに身に付くと思います。評価の優先順位と結合規則については、とりあえずは、「代入以外を左から評価する」とだけ覚えておけば基本は問題なく実装できると思います。次回は型変換編です。

ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

なんとなくわかるJava入門#3 基本データ型編

こんにちは。

今回はデータ型編です。今回の目標は「データにはいろいろな種類があり、コンピュータ上では区別されることを理解すること」です。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

イメージしてみよう

今回は、まず最初にこれから学習する内容について、身近な例でイメージしてもらおうと思います。ちょっと頭で考えてみて下さい

 

まず、「3+2」を計算して下さい。

 

 

次に、「1300005 + 700005」を計算して下さい。

 

 

次に、「どんぐりころころ」という曲を頭の中で再生して下さい。

 

 

最後に、「スキップしている子供」をイメージして下さい。

 

 

それぞれ、数字、音、映像といった全く違うもので、イメージの仕方もそれぞれ違ったと思います。数字も、桁数が多いと通常モードではなく、本気モードで頭を使ったと思います。

ものによって頭の使われ方が異なる

 

コンピュータの世界で考えてみよう

Javaでも計算で扱うデータにはいろいろな種類があります。

具体的には、256などの数値、”A”などの文字があります。

さらに、数値にはいろいろな種類があり、「整数」や、整数部と小数部からなる「実数」などがあります。

整数にも種類があり、扱える値の範囲によって、「整数」や「長整数」などが定義されています。先ほどの「イメージしてみよう」で、「3+2」と「1300005+700005」は頭の使い方が異なっていました。これと同じように、コンピュータでも用途に応じて区別して扱うことで、効率よく計算をすることができます。

このように明確に区別され扱われ方が異なるデータの種類のことを「データ型」と呼びます。データ型の中でも、整数、実数、長整数 などといった基本的なものを「基本データ型」と言います。

 

Javaで扱われる型と意味を簡単にまとめると次のとおりです(一部)

意味
int型 整数
long型 桁の多い整数
double型 実数
boolean型 真偽値(trueとfalse)
char型 1文字
String型 文字列

最初からたくさん覚えるのもたいへんなので、とりあえず太字のものだけ覚えていれば十分です。あとはすぐに慣れて覚えられます。

 

これらの値を代入する変数もその型専用のものを使います。つまり、int型用の変数にはint型の値(整数値)のみを代入することができ、double型用の変数にはdouble型の値(実数値)のみを代入することができます。1桁しか数字を扱わないのに、10000000000桁の数字を扱うのと同じように記憶したり、計算していたら無駄ですよね?(つねに脳みそを本気モードにするイメージ)したがって、効率よく記録したり、計算したりするために、コンピュータはデータを種類によって区別して扱います。

 

ここまでのまとめ

  • 値の種類ごとに区別して扱われる。この種類を型と呼ぶ
  • 値を代入する変数もその型専用のものを使う

覚えておきたい4種類

プログラムを書いてみる

では、プログラムを作ってみましょう。

 

1) Eclipse を起動し、次の名前のプロジェクトとJavaファイルを作って下さい。

やり方が分からない人は、前回の記事を参照してください。

プロジェクト名:PrimitiveDataType

クラス名:PrimitiveDataTypeMain

 

2) 以下のコードを書いてください。


public class PrimitiveDataTypeMain {
	public static void main(String[] args) {
		int i;
		double d;
		long l;
		boolean b;
		char c;
		String s;
		
		i = 1;
		l = 1L;
		d = 1.0;
		b = true;
		b = false;
		c = 'A';
		s = "ABC";
	}
}

プログラムを観察してみる

先ほど書いたプログラムを観察してみましょう。

 

1) 「int i; ~ String s;」について、

int i; は整数値のための変数を宣言しています。int と先頭に書くことで、int型(整数)用であることを表し、i という名前の変数を宣言しています。以降も、それぞれの型の値のための変数を宣言しています。

 

2) i = 1; について、

前回学習したように、int型(整数)用の変数に対して、1を代入しています。

基本的には、ある型の値は、その型用の変数にしか代入ができません。

この「1」といった、ある型の値を表現するものをリテラルと呼びます。

 

3) l = 1L; について、

先ほどと、ほぼ同じように見えますが、「L」という文字が付いています。これは何でしょうか?

「L」というのは、これはlong型のリテラルであるということを表しています。「1」という数字だけをみても、これが、整数(int型)としての1なのか、大きな数も扱える整数(long型)としての1なのかは分かりません。コンピュータは、型が違えば扱い方が変わります。例えば、先ほど述べたようにint型の値はint型の変数にしか代入できません。しかし、「1」としか書かれておらず、int型かlong型かが判断できないと、どの型の変数に代入できるか分かりません。したがって、long型の値には末尾に「L」を付けることで判別できるようにします。

 

4) d = 1.0; について、

1.0というような、小数点が付いた数はdouble型のリテラルとなります。ちなみに、int型とlong型のように、実数にも種類があります。もうひとつの実数の型としてfloat型というものがあり、この型のリテラルは、1.0Fのように表記します。

 

5) b = true; と b = false; について、

trueは、4文字の文字列ではなく、それ自体でひとつの値を表しています。boolean型は、真偽値といって、true(真)かfalse(偽)しかない二値のデータの型です。活用例は今後色々と学習することになるので、今はそういったものがある程度に覚えておきましょう。

 

6) c = 'A'; と s = "ABC"; について、

シングルクォート( ’ ) で囲まれたものは「文字」、ダブルクォート( " )で囲まれたものは「文字列」のリテラルです。ここで文字というのは「1文字」という意味なので、

'ABC' という風には書けません。

 

ここまでをまとめは次のとおりです。

  • 型名 名前; で、ある型の変数を宣言する。
  • 「1」のようなある型の値を表したものをリテラルと呼ぶ。
  • 1はint型、1Lはdouble型のリテラル
  • boolean型というのは、trueかfalseのいずれかのみをとる値の型。
  • シングルクォートで囲むと1文字、ダブルクォートで囲むと文字列を表す。

 

 

こまけぇハナシ

ここで説明した基本データ型は、全体の一部です。ほかにも、byte、short、floatなどがあります。

整数値の先頭に0xをつけると16進数、0をつけると8進数、0bをつけると2進数になります。つまり、10進数の100は、16進数では0x64、8進数では0144、2進数では0b1100100になります。

また、整数値の途中に「_」を入れることができます。例えば、100_000_000のように、読みやすくすることができます。

 

終わりに

これで基本データ型編については終わりです。いろいろ言いましたが、データにはいろいろな種類があって、これらを区別してそれぞれいろいろな扱い方ができるってことを分かっていれば、ここらはすぐに慣れると思います。といことで、次回は演算編です。

ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

なんとなくわかるJava入門#2 変数編

こんにちは。

今回は変数編です。ちょっと新しく覚えるところも多いですが、最も基本的な要素となるので、しっかりと理解していきましょう!今回の目標は「変数を理解することと、コンピュータによる実行のイメージをつかむこと」です!

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

イメージしてみよう

プログラムのことは忘れて、今から問題を出すので、ちょっと頭で考えてみて下さい。メモとかは取らないでくださいね。

 

問題1.(1×2)+(3×4)を計算してみて下さい。

 

どんな感じで計算しましたか?

 

(1×2)を計算して、「左側の計算結果は2」と憶えておいて、

(3×4)を計算して、「右側の計算結果は12」と憶えておいて、

右側の計算結果(2)+左側の計算結果(12)を計算して、

「最終的な解答は14」と憶えたと思います。

 

つまり、計算する途中で、部分的な計算結果を憶えておくということをしました。

 

問題2.タロウは100円持っています。ハナコも100円持っています。タロウは母から300円もらいました。ハナコは父から200円もらいました。タロウは祖母から100円もらいました。ハナコは祖父から200円もらいました。タロウとハナコはそれぞれいくら持っていますか?

 

どんな感じで計算しましたか?

 

タロウは100円

ハナコは100円

タロウはいくらだっけ?100円だ!これに300円足して、400円

ハナコはいくらだっけ?100円だ!これに200円足して、300円

タロウはいくらだっけ?400円だ!これに100円足して、500円

ハナコはいくらだっけ?300円だ!これに200円足して、500円

というように考えたと思います。

つまり、ただ憶えておくだけでなく、思い出しては、計算して、最新の計算結果の状態に更新しました。

 

問題3.ところで問題1.の計算結果は何でしたか?

 

どんな感じで計算しましたか?

 

あらためて問題1.を計算することはしなかったと思います。

思い出す、もしくは、上にスクロールしたと思います。

つまり、何度も計算せずに繰り返し計算結果を利用するということをしました。

 

この「計算結果を憶えておくということ」これを、プログラム上でも「変数」というものによって実現することができます。

 

変数でできること

・部分的な計算結果を憶えておく

・思い出しては、計算して、最新の計算結果の状態に更新する

・何度も計算せずに計算結果を再利用する(利点)

 

どんな仕組み?

あまり細かいことは説明しませんが、どんな仕組みで実現されるのかをイメージできるようになりましょう。プログラムを読み書きするうえで、「頭の中で実行できること」がとても重要になります。したがって、早いうちから頭の中にコンピュータを作り上げていきましょう。

 

といっても、難しいハナシではありません。

先ほど、頭の中の記憶領域で、「左側の計算結果」と「右側の計算結果」を憶えておきました。

Javaではスタック領域(いわば、脳みそ)と呼ばれる場所に、「左側の計算結果」と「右側の計算結果」を憶えておく場所を用意します。そして、それぞれに2と12という値を憶えておく(保存しておく)ことができます。この「憶えておく場所」が変数です。

 

タロウとハナコについても同じです。タロウとハナコという名前で計算結果の最新の状態を憶えておく場所(変数)を用意しておいて、計算過程で繰り返し、現在の状態を思い出し(確認し)、更新していきます。

タロウは100と憶えているところに、直接300を足すのではなく、頭で考えたことと同じように、100を思い出して、これに300を足して、400を憶えておきます。

 

最後の問題も頭の中でやったことと同じですね。毎回同じ計算をするのではなく、左側の計算結果、右側の計算結果、タロウ、ハナコ、それぞれを憶えていれば、思い出すだけで良いです。

 

コンピュータにこういった計算をさせるよう命令するために、プログラムを書きます。

 

プログラムを書いてみる

では、実際にコンピュータに対する命令書であるプログラムを作ってみましょう。

 

1) Eclipse を起動し、次の名前のプロジェクトとJavaファイルを作って下さい。

やり方が分からない人は、前回の記事を参照してください。

プロジェクト名:Variable

クラス名:VariableMain

 

2) 以下のコードを書いてください。
コピペ(コピー&ペースト)でもOKですが、タイピングが不慣れな人は、みながら入力して少しでも慣れておいたほうが良いです。


public class VariableMain {
	public static void main(String[] args) {
		int left;
		int right;
		int answer;
		left = 1 * 2;
		right = 3 * 4;
		answer = left + right;
		System.out.println("計算結果:" + answer);
		
		int tarou = 100;
		int hanako = 100;
		tarou = tarou + 300;
		hanako = hanako + 200;
		tarou = tarou + 100;
		hanako = hanako + 200;
		System.out.println("タロウ:" + tarou);
		System.out.println("ハナコ:" + hanako);
	}
}

3) 書けたら保存して、実行してみましょう。
次のような実行結果がコンソールに表示されることを確認して下さい。


プログラムと実行結果を観察してみる

先ほど書いたプログラムを観察してみましょう。

前回のとおり、public static void main ... の { } カッコの中身が実行されています。

プログラムの「;(セミコロン)」までの記述のまとまりを「文」と呼びます。

以降より1文ずつ確認していきます。

 

1) まず、「int left;」について、

int left は、leftという名前の付いた憶えておく場所(変数)を用意してください。という命令です。この命令のことを「変数宣言」と呼びます。leftという名前の憶えておく場所を確保します!!と宣言するんですね。このleftは、イメージしてみようで話した「左側の計算結果」という名前の付いた憶えておく場所にあたります。

 

 

2) 「int right;」、「int answer;」について、

同じくですね。「右側の計算結果」「最終的な解答」という名前の付いた憶えておく場所にあたります。

 

3) left = 1*2;について、

Javaでは「×かける」は「*」で表記します。

「=」は、右側の数値を左側の「憶えておく場所」に保存する(代入する)ことを意味します。

計算過程は、1*2を実行し、2に置き換えます ( left = 2; になる )。

さらに、left = 2; を実行し、leftに2を代入します。

 

このプログラムの命令をひとつずつ実行することを「評価する」と言います。

命令には実行順序があり、「保存(代入)」は一番最後に実行されます。

 



4) right = 3 * 4;について、
同じくですね。

どういった計算過程になるのか考えてみて下さい。

 

3*4を実行し、12に置き換え、rightに保存(代入)します。

「=」の命令、つまり保存(代入)は一番最後に評価されるんでしたよね。

 

5) answer = left + right;について、

leftは、仕組みのところの例で話した「思い出す」という命令にあたります

つまり、leftとrightの数値を思い出して、足し算して、answerに保存(代入)が行われます。実行順序は「思い出す」が一番先で、思い出す > 四則演算 > 保存(代入)の順に実行されます。

 

6) System.out.println("計算結果:" + answer);について、

これまでの学習内容から理解できます。

前回の復習になりますが、

  • System.out.println() は、()カッコの中の文字が表示される
  • さらに、""で囲むと、文字列として扱われ、文字列 + 数値は、数値を文字列にして、文字列同士を結合する

ということを憶えていますでしょうか?

これに、今回の学習内容である

  • answerは、保存されている数値を思い出す(置き換える)
  • 思い出す、四則演算、保存(代入)という順に実行される

を組み合わせて考えると、結果は、

answerは、14に置き換えられ、

文字列 + 数値なので14は文字列"14"に変換され、

文字列同士の足し算を計算して"計算結果:14"となり、

この文字列が出力されます。

 

 

 

ここまでが、前半の内容です。

後半の内容については、すべて確認するのではなく、重要な2点について話させて頂きたいと思います。

 

 

7) int tarou = 100;について、

実は、「憶えておく場所を用意すること(変数宣言)」とその他の命令を1文にまとめて書くことができます

まず、int tarou から、tarouという名前の憶えておく場所(変数)が用意されます。

次に、100という値がtarouに保存(代入)されます。

 

8) 次に、tarou = tarou + 300; について、

「tarou + 300」はこれまで学習した内容です。tarouの値を思い出して、これに300を足します。

この計算結果を tarou に保存(代入)しています。つまり、最初に100の値を持っていたtarouが、400に変わりました。

これが重要な特徴で、変数はその名前のとおり、憶えている数を変えることができます

 

長くなりましたが、ここまでをまとめると、

  • int 名前; で覚えておく場所を用意する。
  • 憶えておく場所のことを変数と呼ぶ。
  • 憶えておく場所を用意する命令を変数宣言と呼ぶ。
  • 憶えておく場所に保存することを代入と呼ぶ。
  • 「+」は足し算、「=」は代入を表す。
  • 命令を実行することを評価と呼ぶ。
  • 思い出す > 四則演算 > 保存するの順に評価される。
  • 変数は代入されている値を変化させることができる

 

こまけぇハナシ

今回はこまけぇハナシはやめておきましょう。

すでに細かすぎかなとも思いましたが、

私の経験上、この「イメージを付ける」ということをいい加減にやると、発展的な内容になったときにつまづく方が多いです。

 

終わりに

次回は基本データ型編です。今回は一番基礎の部分だったので、かなり丁寧に説明しましたが、この先どんどんシンプルに、いい加減に説明して、「なんとなく分かった」と思っていただけるようにしたいと思います!ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

なんとなくわかるJava入門#1 実際に動かしてみる編

こんにちは。

今回は実際に動かしてみる編です。目標は「プログラムを動かすイメージをつかむ」ことです。細かい書き方のハナシは後にして、こんな感じで動くんだ!となんとなくつかんで頂けたらと思います。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

Eclipseを起動する

1) 前回の繰り返しになりますが、エクスプローラWindowsの下にあるフォルダみたいな絵)から「C:\pleiades\2023-12\eclipse」にある「eclipse.exe」をダブルクリックして、Eclipseを起動しましょう。

※ よくわからん人は、Windowsの左下にある虫眼鏡を押して「C:\pleiades\2023-12\eclipse」を入力してエンターキーを押す。そうすると小画面が表示されるので、ここにある「eclipse.exe」をダブルクリック

 

2) 下の画像のようなものが表示されたら、起動を押下

 

3) 下の画像のようなものが表示されたら、起動OK。

今日はここから、実際にプログラムを動かしてみて、なんとなーくJavaを動かすってこういうもんなんだと、つかんでもらおうと思います。

 

プログラムを動かしてみる

まずはEclipse上でJavaプログラムを書いて、実行してみようと思います。

以下の手順を実施してみて下さい。

 

1) ツールバーのファイル > 新規 > Javaプロジェクトの順に選択しましょう。

Eclipseの一番上の「ファイル(F)」などが書かれている行。これをツールバーと呼びます。

 

2) そしたら、小さい画面が開くので、プロジェクト名のところに「HelloWorld」を入力し、下のところにある「完了」ボタンを押しましょう

 

3) これで、Javaを開発するためのフォルダ(プロジェクト)が作成されました。

画面左側の「パッケージ・エクスプローラー」の部分に、さきほど作成したHelloWorldというフォルダがあることを確認してください。これがプロジェクトと呼ばれるものです。


4) プロジェクトを選択し、右クリック「新規>クラス」を選択しましょう。

 

5) また子画面が表示されるので、名前:のところに「HelloWorld」を入力し、下の完了ボタンを押す。とりあえず、これが何なのか?ということは気にしなさんな。

 

そうすると、HelloWorldプロジェクトのsrc > (デフォルト・パッケージ)にHelloWorld.javaが作成されます。これがJavaファイルと呼ばれるものです。

 

右側にHelloWorld.javaと書かれたエディタが開かれるのを確認してください。これが、Javaファイルの中身です。Javaファイルの中にプログラムを書いて、実行します

 

6) 以下のプログラムをコピー&ペースト


public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("こんにちは。Java!!");
	}
}

※コピー&ペースト
 上のプログラムをドラッグし、Ctrl+Cでコピー、Eclipseのエディタをの内容を
 Ctrl+Vでペーストして、置き換える。

こんな感じになったらオッケー!

 

エディタのタブの部分に「*HelloWorld.java」というように「*」が表示されています。これは、まだ保存していないということを表しています


7) プログラムを変更したので、保存しましょう(Ctrl+S)。「*」が消えていたらちゃんと保存されています。これで、プログラムの作成は完了です。

 

8) HelloWorldプロジェクトのsrc > (デフォルト・パッケージ) > HelloWorld.javaを選択し、右クリック > 実行 > Javaアプリケーションを選択しましょう。これによって、プログラムが実行されます。

 

そうするとEclipse の下のところにある「コンソール」に、下図のように表示されます。

エディタのところに書いたプログラムが実行され、その結果として、「こんにちは。Java!!」が表示されています。

 

プログラムと実行結果を観察してみる

ここからは、先ほど書いたプログラムと実行結果を観察して色々と試してみたいと思います。

 

1) プログラムと実行結果を観察してみましょう。

ここから予想できることは、


System.out.println("ここに書いた内容が表示される");

 

ということです。

 

2) では、以下のような出力結果になるように先ほどのプログラムを予想して書き換えてみて下さい。

 

答えは、次のような記述になります(必要な部分のみ抽出)。


System.out.println("Hello Hello!");
System.out.println("GoodBye!");

 

ここから分かることとしては、プログラムは上から下に向かって実行されることです。

 

 

3) また、プログラムは計算もできます。次のように記述して動作を確認してみて下さい。


System.out.println("1+1");
System.out.println(1+1);
System.out.println("1+1の解は" + (1+1));

 

 

次のように出力されましたか?

ここから分かることとしては、「"」で囲むと文字列として扱われること、「"」で囲まなければ計算されて数値が表示されること、文字列と数値を足したら数値を文字列にして連結されることです。

 

4) 最後に、次のように誤ったプログラムを書いてみて下さい。きっとプログラムの誤りを教えてくれるでしょう。


System.out.println("セミコロンがないよ")

赤の×印が、プログラムの誤りであることを示しています。プログラムは、融通が利かないので、セミコロンひとつないだけで動かすことができません。

 

public class HelloWorld { ... だとか、public static void main...だとか、そのほかの記述については、取り合えず今回は無視してください。

魔法の言葉で、この中に色々と書くと計算したり、画面に表示したりしてくれるんですね。

 

まとめ

  • public static void main ... の中に書いた記述が実行される
  • System.out.println("ここに書いた文字が表示される");
  • ""で囲むと文字列として扱われ、囲まないと計算される
  • 誤ったプログラムを書くと、赤い×印で教えてくれる

 

 

こまけぇハナシ

ここからはこまけぇハナシなので、なんとなく分かった気がする程度になれば良いです。ざっくりと、プログラムが動く仕組みについて理解しておきましょう。

 

今回、編集した「HelloWorld.java」のをソースコードと呼びます(ソースと呼ぶこともある)。ソースコードは、人間が理解し易い形式で書かれたコンピュータへの命令書です。

 

ソースコードはあくまで人間が理解できる形式で記述されたものなので、コンピュータはソースコードを理解することができません。そこで、ソースコードをコンピュータが理解できる形式のファイルに変換する必要があります。

 

ソースコードをコンピュータが理解できる形式のファイル(オブジェクトファイル)に変換することを「コンパイル」と呼びますJavaでは、このソースコードにあたるファイルがJavaファイルであり、オブジェクトファイルがclassファイルになります。

 

コンパイルなんてやらなくても実行できたじゃん?と思うかもしれませんが、Eclipseでは、ソースコードを保存したときに、勝手にコンパイルしたり、いろいろやってすぐに動かせるようにしてくれています。つまり、こんなこと知らなくても作れちゃうのですが、発展的なことをやろうとすると必要な知識になります。今のうちにざっくりレベルでいいので理解しておきましょう。

 

※ 実行するにはコンパイル以外にもいろいろとハナシがあるのですが、今は知らなくても良いです。
※ プログラムとは、「コンピュータを動作させるために用意された命令のまとまり」なので、文脈によってソースコードのことを指していたり、オブジェクトファイルのことを指していたりするので、注意しましょう。

 

まとめ

 

終わりに

次回は変数編です。本格的にJavaの書き方について学習していきましょう!ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

プライバシーポリシー・免責事項

個人情報の利用目的

当ブログでは、メールでのお問い合わせ、記事へのコメントの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

広告について

当ブログでは、第三者配信の広告サービス(●●●)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。
クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。

Cookieを無効にする方法やGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご確認ください。

また、「なんとなく分かるプログ」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。この規約に関して、詳しくはここをクリックしてください。

免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

プライバシーポリシーの変更について
当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。

初学者学習お勧め書籍編

こんにちは。

今回は、「初学者学習オススメ書籍編」です。定期的に更新していきたいと思います。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

おすすめ書籍

あくまで、個人的なおすすめ書籍です。自分が勉強する中で読んで、分かりやすかったと思うものを挙げていきます。特にこの書籍のここが良いとかは言いません。別に比較した訳ではないので。むしろオススメを照会して頂けると助かります。

 

Java

正直なんでもいいと思いますが、最初はこれ1冊あれば十分だと思います。

重要なのは、自分で書いてみること、分からないことは人に聞くことです。色々書籍を集めて満足するのではなく、とりあえずこれを読んでみて、分からないことは誰かに聞いてみましょう。どっかの掲示板で質問するのもいいし、Xで質問を投げればだれか答えてくれます。このブログのコメントにも書いてくれれば反応します(私の教え方の勉強にもなるので、気軽に聞いて下さい)。

 

 

わかりやすいコードの書き方とか

分かりやすいコードを書くというのは、とっても重要な観点です。当たり前じゃんって思うことも書いてあったり、なるほどなーって思うことも書いてあるので、読んでいて楽しいです。

この「リファクタリング」「リーダブルコード」の2冊があれば十分だと思う。あとはプログラミング作法とか?

 

 

 

 

デザインパターン

本ブログでは基本Javaを勉強するので、コレがおすすめ。一番わかりやすいかったです。

 

具体例について分からなかったらWebで検索してみればいくらでも情報が出てきます。

 

Web系の基本用語

まず最初にこれを読んでざっと理解して、詳しく知りたい内容の書籍を読むと良いと思う。

 

情報系全般の基本用語

こういうのをひとつ持っておくだけで助かる場面が多い。ほかにもおすすめの辞書があったら教えて下さい。

 

 

ソフトウェアアーキテクチャ/アーキテクチャスタイル・パターン

できれば原著を呼んだ方が良いと思うけど、自分はこれで勉強しました。

 

 

 

終わりに

なにか他にあれば更新していこうと思いますー。ほんじゃ、また。

励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

知っておくべき操作・ショートカット・用語 基礎編

こんにちは。

今回は、「知っておくべき用語・ショートカット 基礎編」です。定期的に更新していきたいと思います。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

いつでも使える操作・ショートカット

同時押しの表記

一般にキーボードのいくつかのキーを同時押しする場合は、「キー」+「キー」で表記されます。例えば、Ctrl+Cなどです。

 

ドラッグ

文字列や画像を左クリックで選択し、左クリックを押したままマウスカーソルを動かす操作です。これによって、特定の範囲を選択したり、要素を移動させたりすることができます。

文字列をドラッグすると、こんな感じになる

「この文字列をドラッグして」だとか、「この文字列を選択して」だとか、言われたらこの操作を行いましょう。

 

コピー

ある文字列や画像を選択(つまり、文字列の場合はドラッグ)して、Ctrl+Cを押すことで、特定の文字列や画像等を覚えておくことができます。

 

ペースト

コピーした後、Ctrl+Cを押すことで、覚えておいた文字列や画像の複製を張り付けることができます。

 

Eclipseで使えるショートカット

Eclipseを操作する上で知っておくと良いショートカットです。開発効率が段違いになるので、とりあえずこれを読みながら試して覚えておくと良いでしょう。

 

複数行選択

エディタ上でどこでも良いので選択した後、Shift+矢印キーでドラッグしたように範囲を選択することができます。

 

一行削除

エディタ上でどこでも良いので選択した後、Ctrl+Dを押すことで、その一行の内容を削除することができます。

 

コメントアウト

エディタ上でどこでも良いので選択した後、Ctrl+/ を押すことで、一行をコメントアウトすることができます。

複数行選択しているときは、複数行コメントアウトをしてくれます。

 

フォーマット

エディタ上でどこでも良いので選択した後、Ctrl+Shift+Fを押すことで、読みやすいように文章を整形してくれます。

 

クイックフィックス

エディタ上でどこでも良いので選択した後、Ctrl+1を押すことで、次の操作の候補を表示してくれます。

 

保存

エディタ上でどこでも良いので選択した後、Ctrl+Sで保存してくれます。

 

用語

また更新しておきます。

 

終わりに

知っておくべき操作・ショートカットはここまです。知ってて当たり前のように皆が使っているのでなるべく早いうちに覚えておくと良いでしょう。ほんじゃ、また。

励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。

なんとなくわかるJava入門#0 インストール編

こんにちは。
なんとなく分かったきになれるプログのJava編 第0回目は環境インストールについてです。こういったブログで一番つまらない回なので、サクッとやってサクッと終わらせましょう。

 

今回の目標は、Javaを動かせるようにコンピュータを設定すること」です。

最初の3か月間無料で音楽聞き放題!

スッキリわかるJava入門 第3版 スッキリわかるシリーズエレコム ウェットティッシュ クリーナー 汚れ落とし 強力 消臭 除菌 110枚入り 帯電防止効果 重曹電解水が汚れを除去 ボトルタイプ 日本製 WC-JU110N2Fire TV Stick 第3世代 | HD対応スタンダードモデル | ストリーミングメディアプレイヤー【2021年発売】Amazonギフトカード チャージタイプ(直接アカウントに残高追加)ヨックモック YOKUMOKU お歳暮 御歳暮 歳暮 クリスマス ホリデー スイーツ お菓子 ギフト プレゼント 人気 洋菓子 詰め合わせ 個包装 シガール オゥ ショコラ 18本入り

 

 

Javaを動かすのに必要なヤツを入れる

以下の手順でJavaを実装・実行できるようになります。

ここってこれ押せばいいのかな?って迷った場合は、

押しちゃいましょう。かまへん。そんなもんでコンピュータは壊れん。(個人ブログなので超無責任なことを言います。)

 

 

1) 統合開発環境 Eclipse 日本語化プロジェクト - Pleiade←ここにアクセス
もし、リンク切れになっている場合は、「Eclipse all in one 」で検索して、一番上のヤツで多分あってる。

 

2) Eclipse2023を選択

たまに、画面のデザインが変わりますが、とにかく最新で良い。

 

3) Windows x64(もちろん、MacのひとはMac) 行のJava列のDownloadを選択

たまに、画面のデザインが変わりますが、WindowsJavaという単語を探して、直感で押せばだいたいあってる。

4) ダウンロードしたファイル(exeファイル)をダブルクリックで実行
WindowsによってPCが保護されました。と表示されたら、詳細情報を押して、実行を押す。

5) 開いた小画面の解凍を押す(今は展開っていうことが多いらしいね)

けっこう、時間かかる。

 

6) エクスプローラWindowsの下にあるフォルダみたいな絵)から「C:\pleiades\2023-12\eclipse」にある「eclipse.exe」をダブルクリック

※ よくわからん人は、Windowsの左下にある虫眼鏡を押して「C:\pleiades\2023-12\eclipse」を入力してエンターキーを押す。そうすると小画面が表示されるので、ここにある「eclipse.exe」をダブルクリック

 

7) 以下の画像のようなものが表示されるか確認

バージョンが違ったら、多少見た目は変わると思うけど、とにかく「Eclipse」と表示されれば良い。

8) 以下の画像のようなものが表示されたら、起動を押下

これなんなん。って?ええねん、そんなこと気にせんで。

 

9) 下の画像のようなものが表示されたら、これで設定完了です。お疲れ様。

右上の「×」で閉じちゃってください。

ダークモード嫌いなんだけど、今はデフォでダークモードなんだね。

 

以上、今日の作業はここまでです。お疲れ様。

 

ここで紹介したリンクとかって大丈夫!?本当に信用できるの!?っていう人へ。そもそもあなたはこのブログをなぜ信じれるのか考えてみましょう。

 

こまけぇハナシ

なんとなくわかるプログは、なるべく小難しい用語は使わないようにしています。時にはいい加減な言葉も使います。でも、それはこの場だけにしましょう。適切な理解・コミュニケーションのためには、用語の意味を正しく理解し、使うことが大切です。

用語の意味が分からない場合は、てきとうに検索するのではなく、辞書を使いましょう。例えばここ。少なくとも、複数人が確認し、正しさが保証されている情報源を用いるようにしましょう。

 

今回、知っておいてほしい用語

  • インストール:コンピュータで実行できるように設定すること
  • PC・コンピュータ:あなたの目の前で動いているやつ。パソコンと言わないようにしましょう。造語です。適切に用語を使うことが大切です。
  • 実装:ここでは、プログラムを書くことという意味で使っています。(仕様、設計などに基づいて機能するものとして作ること。)

 

終わりに

インストール編はここまでです。次からは楽しい実際に動かしてみる編に入ります。

なんとなくわかるJava入門カテゴリで記事を書いていこうと思うので、別記事もぜひ読んでみて下さい。ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。