第 1 回 プログラムの基本
他人が読めるプログラムを書く
学習目標
Java
プログラムを書き、動かせる コンパイルし、実行できる
他人が読めるプログラムが書ける インデントをつけることができる
適切な名前をつけることができる
適切なコメントをつけることができる
基本的なJava
文法を説明できる 変数と代入について説明できる
出力する方法について説明できる
条件分岐のしくみを説明できる
1.1 Java プログラム
を動かしてみましょう
1.1.1
基本的な流れ 1.1.2
実際に書いてみましょう ① JDK のインストール
② エディタを開く
③ ソースコードを書く
④ 保存する
⑤ コンパイルする
⑥ 実行する
1.1.1 基本的な流れ
ソースコード バイトコード
コンパイル 実行
コンピュータが 実行できる命令 人間が書く
プログラム
(Java)
1.1.2 実際に書いてみましょ う
①JDK
のインストール テキストを参照
② エディタを開く テキストを参照
③ ソースコードを書く
public class Example1_1 {
public static void main(String[] args) {
System.out.println(" 自動販売機のサービスが開始されました ");
} }
Example1_1.java
例題
1-1
(Example1_1.java)
class って何?
クラスとは?(
第4回から詳しくやり ます)
Java におけるプログラムの単位
Java ではすべてのプログラムはクラスに書 かれます。
ファイル名とクラス名は同じにします。
クラス
プログラム
クラス
プログラム クラス
クラス
main って何?
main()
メソッドは、Java
のプログラム のスタート地点です。各プログラムに 必ず一つ必要です。クラス
プログラム クラス
クラス
main
④ 保存する
場所に注意してください(整理しない と後でわからなくなります) objprog フォルダ ( ディレクトリ ) を作成 します。
その中に毎回のフォルダを作成します。
( 今回は objprog01)
objprog objprog01
objprog02
Example1_1.java
⑤ コンパイルする
objprog01
Example1_1.java
Example1_1.class
1. objprog01
ディレクトリ に移動します。2.
コンパイルコマンド「
javac Example1_1.java
」 を実行します。3. Example1_1.class
ファイルができれば成功。
⑥ 実行する
1.
実行コマンド「
java Example1_1
」 を実行します。2.
「自動販売機のサービスが開始されま した」メッセージが表示されれば実行 完了!1.2 自動販売機プログラミン グ
1.2.1
買うことのできる商品を提示する ① 商品と種類
② 商品種類を番号で扱う
1.2.1 買うことの
できる商品を提示する
商品のリストを提示するプログラム 商品を売るためには、取り扱う商品を提示
する必要がある
① 商品と種類
利用者が商品を選ぶときは、商品その もので選ぶわけではなく、種類で選び ますコーラ
A
コーラB
コーラ
C
コーラ「商品」と「商品種類」
本講座では、実際の商品のことを「商 品」、種類のことを「商品種類」と呼 びます商品
商品種類
「商品種類」の表示を行う
買える商品を提示するプログラム=商品種類のリストを提示するプログ ラム
しばらくは CUI で考えます。
GUI CUI
「コーラ」は販売中です。
「ソーダ」は販売中です。
「緑茶」は販売中です。
② 商品種類を番号で扱う
簡単にするために、しばらく商品種類 は番号だけで扱うことにします1001
1002
1003
1004
1001
番は販売中です。1002
番は販売中です。1004
番は販売中です。1.3 他人が
読めるプログラムを書く
1.3.1
人が読めるプログラムとは? ① インデントが付けられている
② 変数に適切な名前が付けられている
③ コメントがかかれている
1.3.2
コメントの書法 ① コメントとプログラムの目的
② 目的の階層構造
③ コメントの種類
1.3.1 他人が読める プログラムとは?
public class Example1_2 {
public static void main(String[] args) {
System.out.println(" 自動販売機のサービスが開始されました ");
int x;
x = 1001;
System.out.println(x+ " は販売中です。 ");
}}
例題
1-2
(Example1_2.java)
他人が読めないプログラム① インデントを付ける
public class Example1_2 {
public static void main(String[] args) {
System.out.println(" 自動販売機のサービスが開始されました ");
int x;
x = 1001;
System.out.println(x+ “ は販売中です。” );
} }
例題
1-2
改①(Example1_2.java)
ブロック ブロックの中のブロック
インデント(1) ブロック
プログラム中で{}
で囲まれた部分をブ ロックといいますpublic static void main{
…
for(int i=0;i<10;i++){
…
}
}
インデント(2)
ブロックの中に書かれているコードを 字下げします(Tab1
つ,
またはspace2
つ分)
public static void main{
…
for(int i=0;i<10;i++){
… }
ブロックに入るごとに一つ字下げ します。
② 適切な名前を付ける
int x;
x = 1001;
System.out.println(x+ “
は販売中です。”);
int itemType;
itemType = 1001;
System.out.println(itemType+ “
は販売中です。”);
x
とは、取り扱う商品種類の番号のことですから名前付け規則
Java
で使われる基本的な名前付け規則 クラス名
最初の文字は大文字にする。
(複数の単語を繋げた変数名の場合は、各単語 の最初の文字を大文字にする。)
ex) String,StringBuffer,House,MyHouse
変数名、メソッド名
最初の文字は小文字にする。
ex) name,myName,move(),getString()
適切な名前付けを したプログラム
public class Example1_2 {
public static void main(String[] args) {
System.out.println(" 自動販売機のサービスが開始されました ");
int itemType;
itemType = 1001;
System.out.println(itemType+ “ は販売中です。” );
} }
例題
1-2
改②(Example1_2.java)
③ コメントが書かれている
コンテクストが分からない他人が読めるよ うにする
// 取り扱う商品種類を提示するプログラム
public class Example1_2 {
public static void main(String[] args) {
System.out.println(“ 自動販売機のサービスが開始されました” );
int itemType;
itemType = 1001;
System.out.println(itemType+ " は販売中です。 ");
Java における
コメントの記述方法
/*範囲指定コメント
*/
public class Example1_2 {
public static void main(String[] args) {
// 行コメントSystem.out.println(“ 自動販売機のサービスが開始されました” );
int itemType;//
行コメントitemType = 1001;
System.out.println(itemType+ " は販売中です。 ");
} }
1.3.2 コメントの書法
コメントは内容が重要! 他人に分かるコメントとは?
① コメントとプログラムの目 的
public class Example1_2 {
public static void main(String[] args) { //…
System.out.println(“ 自動販売機のサービスが開始されました” );
//…
int itemType;
//…
itemType = 1001;
//…
System.out.println(itemType+ " は販売中です。 ");
}}
コメントをつけてみようまずいコメント
public class Example1_2 {
public static void main(String[] args) {
// 「自動販売機が開始しました」を表示するSystem.out.println(“ 自動販売機のサービスが開始されました” );
//int
型の itemType 変数を定義するint itemType;
//itemType 変数に 1001 を代入する itemType = 1001;
//itemType を表示する
System.out.println(itemType+ " は販売中です。 ");
}
何故まずいのか考えてみよう!
プログラムの解説はいらない
//itemType
変数に1001
を代入するitemType = 1001;
itemType
変数に1001
を代入している ことは、プログラムを見れば明らか
これでは、何故この人は1001
を代入し ているのか、他人にわからないすべてのプログラムには意味があるはず
コメントには目的を書け!
//
取扱う商品種類にコーラを追加するitemType = 1001;
適切なコメントを書くことによって、
itemType 変数に 1001 を代入することは、取扱う商品種類に コーラを追加するという意味があることが分かるようになる。
ソースコードだけでは、「コーラ
=1001
」だという 意味を理解できない。コメントには目的を書け!
public class Example1_2 {
public static void main(String[] args) {
//…System.out.println(“ 自動販売機のサービスが開始されました” );
//…
int itemType;
//
取扱う商品種類にコーラを追加するitemType = 1001;
//…
System.out.println(itemType+ " は販売中です。 ");
}
改めて、コメントを考えてみよう目的が書かれたコメント
public class Example1_2 {
public static void main(String[] args) {
// 自動販売機の開始を知らせるSystem.out.println(“ 自動販売機のサービスが開始されました” );
//
取扱う商品種類を保存するための変数int itemType;
//
取扱う商品種類にコーラを追加するitemType = 1001;
//
取扱う商品種類を表示するSystem.out.println(itemType+ " は販売中です。 ");
}
② 目的の階層構造
だいぶ他人にも分かるようになったが、全体として何をやっているのか分から ないpublic class Example1_2 {
public static void main(String[] args) { // 自動販売機の開始を知らせる
System.out.println(“ 自動販売機のサービスが開始されました” );
//取扱う商品種類を保存するための変数 int itemType;
//取扱う商品種類にコーラを追加する itemType = 1001;
//取扱う商品種類を表示する
System.out.println(itemType+ " は販売中です。 ");
}
目的の目的を考える
// 商品種類を保存するための変数 int itemType;
では、何故保存しておく必要があるのか?
その目的は?
取扱う商品種類を提示するため
その目的は?
商品を買ってもらうため
目的の階層構造 (1)
自動販売機のプログラム(商品を買 う) 取扱う商品種類を提示する
自動販売機の開始したことを知らせる
取扱う商品種類を保存する変数を定義する
取扱う商品種類にコーラを追加する
取扱う商品種類を表示する
をするためには
をするためには
目的の階層構造 (2)
取扱う商品種類を保存する変数を定義する
取扱う商品種類にコーラを追加する
取扱う商品種類を追加する
取り扱う商品種類を保存する変数を定義す る
取り扱う商品種類にコーラを追加する
取り扱う商品種類を
追加するために
変数を定義しているをするためには
目的の階層構造を反映する
/*** 自動販売機のプログラム
*/public class Example1_2 {
/**
* 取扱う商品種類を提示する
*/ public static void main(String[] args) {
//自動販売機の開始を知らせる
System.out.println(“ 自動販売機のサービスが開始されました” );
//取り扱う商品種類を追加する
int itemType;//取扱う商品種類を保存するための変数 itemType = 1001;//取扱う商品種類にコーラを追加する //取扱う商品種類を表示する
System.out.println(itemType+ “ は販売中です。” );
}
大目的 中目的
小目的
③ コメントの種類
目的の階層構造が反映されたコメント を書くための指針 (1)
見出し・コメント (2) ブロック・コメント
(3) 行・コメント
(1) 見出し・コメント
/*** 自動販売機のプログラム
** 平成 xx 年 xx 月xx 日 作成者:○○ ××
*/public class Example1_2 { …}
プログラムの一番初めに書くコメント
Java
では、class
宣言の前に書く
大目的を書く そもそもこのプロ グラムは何のため に書いたのか
日付や、作成者なども入れるとよい
(2) ブロック・コメント
ブロックの最初に書くコメント
ブロック全体に対する目的を書く 中目的を書く
/**
* 取扱う商品種類を提示する */
public static void main(String[] args) {
//自動販売機の開始を知らせる
System.out.println(“ 自動販売機のサービスが開始されまし た” );
ブロック (意味のカタマリ)を表現す る
/*** 自動販売機のプログラム
*/public class Example1_2 {
/**
* 取扱う商品種類を提示する
*/ public static void main(String[] args) {
//自動販売機の開始を知らせる
System.out.println(“ 自動販売機のサービスが開始されました” );
//取り扱う商品種類を追加する
int itemType;//取扱う商品種類を保存するための変数 itemType = 1001;//取扱う商品種類にコーラを追加する //取扱う商品種類を表示する
System.out.println(itemType+ “ は販売中です。” );
改行を利用して
ブロック(意味のカタマリ)
を表現する
(3) 行・コメント
行の最後に書くコメント その行に対して、小目的を書く
int itemType; //
取扱う商品種類を保存するための変数// 取扱う商品種類を追加する
itemType01 = 1001;//
コーラプログラムの後に書く
ブロック・コメントとの
練習問題
public class Practice1_1 {
public static void main(String args[]){
int a = 49;
int b = 73;
int c = 100;
int d = 45;
int e = 25;
double x = a + b + c + d + e;
double y = x / 5.0;
y = y * 10;
if((y % 10) >= 5){
y = y + 10;
}int z = (int)(y / 10);
System.out.println(z);
ソースコードを美しく、他人が読める ようにせよ解答例
/** 中間テストの成績を計算するプログラム*/public class Practice1_1 {
/**
* 5教科の平均を求めるプログラム
*/ public static void main(String args[]){
//各教科を保存する変数に、点数を代入する int kokugo = 49; // 国語
int suugaku = 73; //数学 int rika = 100; //理科 int syakai = 45; // 社会 int eigo = 25; // 英語
// 5教科の平均を求め、heikin 変数に保存する
double goukei = kokugo + suugaku + rika + syakai + eigo;
double heikin = goukei / 5.0;
// 平均を四捨五入し、 answer 変数に保存する heikin = heikin * 10;
if((heikin % 10) >= 5){
heikin = heikin + 10;
}
int answer = (int)(heikin / 10);
1.4 たくさんの商品種類を扱 う
1.4.1
変数を用意する Java の文法-変数と代入-
Java の文法-標準出力-
1.4.2
条件分岐を使う Java の文法-条件分岐-
1.4.3
さまざまな条件式 Java の文法-条件式-
1.4.1 変数を用意する
簡単に10個の変数として扱う方法//
取扱う商品種類を保存するための変数を定義するint itemType01;
int itemType02;
int itemType03;
int itemType04;
int itemType05;
…
例題
1-3
(Example1_3.java)
初期化する
商品種類が入っていないことを「-1
」 として表現することにします コメントに意味を書いておかないと、他人 に分からなくなりますよ
// 取扱う商品種類を保存するための変数を初期化する // 入っていないことを -1 として表す
itemType01 = -1;
itemType02 = -1;
itemType03 = -1;
itemType04 = -1;
Java の文法①ー変数と代入ー
// 取扱う商品種類を保存するための変数を宣言する int itemType;
// 取扱う商品種類にコーラを追加する itemType = 1001;
変数の宣言
変数への代入
itemType
itemType
1001
Java の文法①-変数と代入ー
Java
では、宣言と代入を同時にできま す。// 取扱う商品種類を保存するための変数を宣言し、コーラを追加する int itemType = 1001;
itemType
1001
Java の文法②ー標準出力ー
文字列を出力するにはSystem.out.printl n([
文字列])
変数もそのまま出力できますSystem.out.println([
変数])
// 自動販売機の開始を知らせる
System.out.println(“ 自動販売機のサービスが開始されました” );
// 取扱う商品種類を表示する
文字列とつなげる
時は、「 +
」でつ文字列リテラル
「“」「”」では
囲む
追加と表示のプログラム
// 取扱う商品種類を追加する itemType01 = 1001;// コーラ itemType02 = 1022;// ソーダ itemType03 = 1033;// お茶 // 取扱う商品種類を表示する
System.out.println(itemType01+" は販売中です ");
System.out.println(itemType02+" は販売中です ");
System.out.println(itemType03+" は販売中です ");
System.out.println(itemType04+" は販売中です ");
System.out.println(itemType05+" は販売中です ");
例題
1-3
(Example1_3.java)
例題 1-3 の問題点
このプログラムには問題があります 出力結果を考えてみよう!
1000
番の商品種類は現在取り扱い中です。
1001
番の商品種類は現在取り扱い中です。
1002
番の商品種類は現在取り扱い中です。
-1
番の商品種類は現在取り扱い中です。出力結果
-1
は表示したく ありません。1.4.2 条件分岐を使う
// 取扱う商品種類を表示する
if(itemType01 == -1){// 入ってない // 何もしない
}else{// 入っている
System.out.println(itemType01+" は販売中です ");
}
入っていないときは出力しないように 修正例題
1-4
(Example1_4.java)
Java の文法③-条件分岐ー
if(itemType01 == -1){
}else{
条件式
成立
(true)
のときはここを実 行不成立
(false)
のときはここを実行1.4.3 さまざまな条件式
// 取扱う商品種類を表示する
if(itemType01 == -1){//
入ってない//
何もしない}else{//
入っているSystem.out.println(itemType01+" は販売中です ");
}
//
取扱う商品種類を表示するif(itemType01 != -1){//
入っているSystem.out.println(itemType01+" は販売中です ");
例題
1-4
(Example1_4.java)
例題
1-5
(Example1_5.java)
条件式を工夫することによって、
より目的に近いプログラムに