61
第 1 第 第第第第第第第第 第第第第第第第第第第第第第第

第 1 回 プログラムの基本

  • Upload
    ula

  • View
    54

  • Download
    0

Embed Size (px)

DESCRIPTION

第 1 回 プログラムの基本. 他人が読めるプログラムを書く. 学習目標. Java プログラムを書き、動かせる コンパイルし、実行できる 他人が読めるプログラムが書ける インデントをつけることができる 適切な名前をつけることができる 適切なコメントをつけることができる 基本的な Java 文法を説明できる 変数と代入について説明できる 出力する方法について説明できる 条件分岐のしくみを説明できる. 1.1 Java プログラム を動かしてみましょう. 1.1.1 基本的な流れ 1.1.2 実際に書いてみましょう ① JDK のインストール - PowerPoint PPT Presentation

Citation preview

Page 1: 第 1 回 プログラムの基本

第 1 回 プログラムの基本

他人が読めるプログラムを書く

Page 2: 第 1 回 プログラムの基本

学習目標 Java プログラムを書き、動かせる

コンパイルし、実行できる 他人が読めるプログラムが書ける

インデントをつけることができる 適切な名前をつけることができる 適切なコメントをつけることができる

基本的な Java 文法を説明できる 変数と代入について説明できる 出力する方法について説明できる 条件分岐のしくみを説明できる

Page 3: 第 1 回 プログラムの基本

1.1 Java プログラムを動かしてみましょう

1.1.1 基本的な流れ 1.1.2 実際に書いてみましょう

①JDK のインストール ② エディタを開く ③ ソースコードを書く ④ 保存する ⑤ コンパイルする ⑥ 実行する

Page 4: 第 1 回 プログラムの基本

1.1.1 基本的な流れ

ソースコード バイトコード

コンパイル 実行

コンピュータが実行できる命令

人間が書くプログラム (Java)

Page 5: 第 1 回 プログラムの基本

1.1.2 実際に書いてみましょう

①JDK のインストール テキストを参照

② エディタを開く テキストを参照

Page 6: 第 1 回 プログラムの基本

③ ソースコードを書く

public class Example1_1 {

public static void main(String[] args) { System.out.println(" 自動販売機のサービスが開始されました "); }

}

Example1_1.java

ファイル名の拡張子は .java同じ名前にすること

例題 1-1(Example1_1.java)

Page 7: 第 1 回 プログラムの基本

class って何? クラスとは? ( 第4回から詳しくやり

ます ) Java におけるプログラムの単位 Java ではすべてのプログラムはクラスに

書かれます。 ファイル名とクラス名は同じにします。

クラス

プログラム

クラス

プログラムクラス

クラス

Page 8: 第 1 回 プログラムの基本

main って何? main() メソッドは、 Java のプログラム

のスタート地点です。各プログラムに必ず一つ必要です。

クラス

プログラムクラス

クラスmain

Page 9: 第 1 回 プログラムの基本

④ 保存する 場所に注意してください(整理しない

と後でわからなくなります) objprog フォルダ ( ディレクトリ ) を作成し

ます。 その中に毎回のフォルダを作成します。

( 今回は objprog01)

objprog objprog01

objprog02

Example1_1.java

Page 10: 第 1 回 プログラムの基本

⑤ コンパイルする

objprog01

Example1_1.java

Example1_1.class

1. objprog01 ディレクトリに移動します。

2. コンパイルコマンド「 javac Example1_1.java 」を実行します。

3. Example1_1.classファイルができれば成功。

Page 11: 第 1 回 プログラムの基本

⑥ 実行する1. 実行コマンド

「 java Example1_1 」を実行します。

2. 「自動販売機のサービスが開始されました」メッセージが表示されれば実行完了!

Page 12: 第 1 回 プログラムの基本

1.2 自動販売機プログラミング

1.2.1 買うことのできる商品を提示する ① 商品と種類 ② 商品種類を番号で扱う

Page 13: 第 1 回 プログラムの基本

1.2.1 買うことのできる商品を提示する

商品のリストを提示するプログラム 商品を売るためには、取り扱う商品を提示

する必要がある

Page 14: 第 1 回 プログラムの基本

① 商品と種類 利用者が商品を選ぶときは、商品その

もので選ぶわけではなく、種類で選びます

コーラ Aコーラ B

コーラ C コーラ

コーラ C を選ぶわけではない。コーラならどれでも良い

Page 15: 第 1 回 プログラムの基本

「商品」と「商品種類」 本講座では、実際の商品のことを「商

品」、種類のことを「商品種類」と呼びます

商品

商品種類

Page 16: 第 1 回 プログラムの基本

「商品種類」の表示を行う 買える商品を提示するプログラム

=商品種類のリストを提示するプログラム しばらくは CUI で考えます。

GUI CUI

「コーラ」は販売中です。「ソーダ」は販売中です。「緑茶」は販売中です。

Page 17: 第 1 回 プログラムの基本

② 商品種類を番号で扱う 簡単にするために、しばらく商品種類

は番号だけで扱うことにします

1001

1002

1003

1004

1001 番は販売中です。1002 番は販売中です。1004 番は販売中です。

Page 18: 第 1 回 プログラムの基本

1.3 他人が読めるプログラムを書く

1.3.1 人が読めるプログラムとは? ① インデントが付けられている ② 変数に適切な名前が付けられている ③ コメントがかかれている

1.3.2 コメントの書法 ① コメントとプログラムの目的 ② 目的の階層構造 ③ コメントの種類

Page 19: 第 1 回 プログラムの基本

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)

他人が読めないプログラム

Page 20: 第 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)

Page 21: 第 1 回 プログラムの基本

ブロック

ブロックの中のブロック

インデント(1) ブロック プログラム中で {} で囲まれた部分をブ

ロックといいます

public static void main{ …  for(int i=0;i<10;i++){ … }  

}

Page 22: 第 1 回 プログラムの基本

インデント(2) ブロックの中に書かれているコードを字下げします (Tab1 つ , または space2つ分 )

public static void main{ …  for(int i=0;i<10;i++){ … }  

}

ブロックに入るごとに一つ字下げします。

Page 23: 第 1 回 プログラムの基本

② 適切な名前を付ける int x; x = 1001; System.out.println(x+ “は販売中です。” );

int itemType; itemType = 1001; System.out.println(itemType+ “は販売中です。” );

x とは、取り扱う商品種類の番号のことですから

Page 24: 第 1 回 プログラムの基本

名前付け規則 Java で使われる基本的な名前付け規則

クラス名 最初の文字は大文字にする。

(複数の単語を繋げた変数名の場合は、各単語の最初の文字を大文字にする。)

ex) String,StringBuffer,House,MyHouse 変数名、メソッド名

最初の文字は小文字にする。 ex) name,myName,move(),getString()

Page 25: 第 1 回 プログラムの基本

適切な名前付けをしたプログラム

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)

Page 26: 第 1 回 プログラムの基本

③ コメントが書かれている コンテクストが分からない他人が読めるようにする

// 取り扱う商品種類を提示するプログラムpublic class Example1_2 {

public static void main(String[] args) {

System.out.println(“ 自動販売機のサービスが開始されました” ); int itemType; itemType = 1001; System.out.println(itemType+ " は販売中です。 "); }}

Page 27: 第 1 回 プログラムの基本

Java におけるコメントの記述方法

/* 範囲指定コメント*/public class Example1_2 {

public static void main(String[] args) {   // 行コメント System.out.println(“ 自動販売機のサービスが開始されました” ); int itemType;// 行コメント itemType = 1001; System.out.println(itemType+ " は販売中です。 "); }}

Page 28: 第 1 回 プログラムの基本

1.3.2 コメントの書法 コメントは内容が重要!

他人に分かるコメントとは?

Page 29: 第 1 回 プログラムの基本

① コメントとプログラムの目的

public class Example1_2 {

public static void main(String[] args) {   //… System.out.println(“ 自動販売機のサービスが開始されました” ); //… int itemType; //… itemType = 1001; //… System.out.println(itemType+ " は販売中です。 "); }}

コメントをつけてみよう

Page 30: 第 1 回 プログラムの基本

まずいコメント

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+ " は販売中です。 "); }}

何故まずいのか考えてみよう!

Page 31: 第 1 回 プログラムの基本

プログラムの解説はいらない//itemType 変数に 1001 を代入するitemType = 1001;

itemType 変数に 1001 を代入していることは、プログラムを見れば明らか

これでは、何故この人は 1001 を代入しているのか、他人にわからない

すべてのプログラムには意味があるはず

Page 32: 第 1 回 プログラムの基本

コメントには目的を書け!// 取扱う商品種類にコーラを追加するitemType = 1001;

適切なコメントを書くことによって、itemType 変数に 1001 を代入することは、取扱う商品種類にコーラを追加するという意味があることが分かるようになる。

ソースコードだけでは、「コーラ =1001 」だという意味を理解できない。

プログラムの「目的」を書くようにする。

Page 33: 第 1 回 プログラムの基本

コメントには目的を書け!

public class Example1_2 {

public static void main(String[] args) {   //… System.out.println(“ 自動販売機のサービスが開始されました” ); //… int itemType; // 取扱う商品種類にコーラを追加する itemType = 1001; //… System.out.println(itemType+ " は販売中です。 "); }}

改めて、コメントを考えてみよう

Page 34: 第 1 回 プログラムの基本

目的が書かれたコメント

public class Example1_2 {

public static void main(String[] args) {   // 自動販売機の開始を知らせる System.out.println(“ 自動販売機のサービスが開始されました” ); // 取扱う商品種類を保存するための変数 int itemType; // 取扱う商品種類にコーラを追加する itemType = 1001; // 取扱う商品種類を表示する System.out.println(itemType+ " は販売中です。 "); }}

Page 35: 第 1 回 プログラムの基本

② 目的の階層構造 だいぶ他人にも分かるようになったが、

全体として何をやっているのか分からないpublic class Example1_2 {

public static void main(String[] args) {   // 自動販売機の開始を知らせる System.out.println(“ 自動販売機のサービスが開始されました” ); // 取扱う商品種類を保存するための変数 int itemType; // 取扱う商品種類にコーラを追加する itemType = 1001; // 取扱う商品種類を表示する System.out.println(itemType+ " は販売中です。 "); }}

Page 36: 第 1 回 プログラムの基本

目的の目的を考える // 商品種類を保存するための変数 int itemType;

では、何故保存しておく必要があるのか? その目的は?

取扱う商品種類を提示するため その目的は?

商品を買ってもらうため(自動販売機のプログラムだから)

Page 37: 第 1 回 プログラムの基本

目的の階層構造 (1) 自動販売機のプログラム(商品を買

う) 取扱う商品種類を提示する

自動販売機の開始したことを知らせる 取扱う商品種類を保存する変数を定義する 取扱う商品種類にコーラを追加する 取扱う商品種類を表示する

をするためには

をするためには

Page 38: 第 1 回 プログラムの基本

目的の階層構造 (2) 取扱う商品種類を保存する変数を定義する 取扱う商品種類にコーラを追加する

取扱う商品種類を追加する 取り扱う商品種類を保存する変数を定義す

る 取り扱う商品種類にコーラを追加する

取り扱う商品種類を追加するために

変数を定義している

をするためには

Page 39: 第 1 回 プログラムの基本

目的の階層構造を反映する/*** 自動販売機のプログラム*/public class Example1_2 {

  /** * 取扱う商品種類を提示する */ public static void main(String[] args) {

   // 自動販売機の開始を知らせる System.out.println(“ 自動販売機のサービスが開始されました” );

// 取り扱う商品種類を追加する int itemType;// 取扱う商品種類を保存するための変数 itemType = 1001;// 取扱う商品種類にコーラを追加する

// 取扱う商品種類を表示する System.out.println(itemType+ “ は販売中です。” );

}}

大目的

中目的

小目的

Page 40: 第 1 回 プログラムの基本

③ コメントの種類 目的の階層構造が反映されたコメント

を書くための指針 (1) 見出し コメント・ (2) ブロック コメント・ (3) 行 コメント・

Page 41: 第 1 回 プログラムの基本

(1) 見出し コメント・

/*** 自動販売機のプログラム** 平成 xx 年 xx 月 xx 日 作成者:○○  ××*/public class Example1_2 {   …}

プログラムの一番初めに書くコメント Java では、 class 宣言の前に書く

大目的を書く そもそもこのプロ

グラムは何のために書いたのか

日付や、作成者なども入れるとよい

Page 42: 第 1 回 プログラムの基本

(2) ブロック コメント・ ブロックの最初に書くコメント ブロック全体に対する目的を書く

中目的を書く

  /**

* 取扱う商品種類を提示する

*/

public static void main(String[] args) {

   // 自動販売機の開始を知らせる

System.out.println(“ 自動販売機のサービスが開始されました” );

}

Page 43: 第 1 回 プログラムの基本

ブロック(意味のカタマリ)を表現する/*** 自動販売機のプログラム*/public class Example1_2 {

  /** * 取扱う商品種類を提示する */ public static void main(String[] args) {

   // 自動販売機の開始を知らせる System.out.println(“ 自動販売機のサービスが開始されました” );

// 取り扱う商品種類を追加する int itemType;// 取扱う商品種類を保存するための変数 itemType = 1001;// 取扱う商品種類にコーラを追加する

// 取扱う商品種類を表示する System.out.println(itemType+ “ は販売中です。” );

}}

改行を利用してブロック(意味のカタマリ)

を表現する

Page 44: 第 1 回 プログラムの基本

(3) 行 コメント・ 行の最後に書くコメント

その行に対して、小目的を書く

int itemType; // 取扱う商品種類を保存するための変数

//取扱う商品種類を追加するitemType01 = 1001;// コーラitemType02 = 1022;// ソーダ

プログラムの後に書く

ブロック コメントとの・連携

Page 45: 第 1 回 プログラムの基本

練習問題

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);}}

ソースコードを美しく、他人が読めるようにせよ

Page 46: 第 1 回 プログラムの基本

解答例 /** 中間テストの成績を計算するプログラム*/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);

// 四捨五入された平均を提示する System.out.println(answer); }}

Page 47: 第 1 回 プログラムの基本

1.4 たくさんの商品種類を扱う

1.4.1 変数を用意する Java の文法-変数と代入- Java の文法-標準出力-

1.4.2 条件分岐を使う Java の文法-条件分岐-

1.4.3 さまざまな条件式 Java の文法-条件式-

Page 48: 第 1 回 プログラムの基本

1.4.1 変数を用意する 簡単に10個の変数として扱う方法

// 取扱う商品種類を保存するための変数を定義する int itemType01; int itemType02; int itemType03; int itemType04; int itemType05;  …

例題 1-3(Example1_3.java)

Page 49: 第 1 回 プログラムの基本

初期化する 商品種類が入っていないことを「 -1 」

として表現することにします コメントに意味を書いておかないと、他人

に分からなくなりますよ

// 取扱う商品種類を保存するための変数を初期化する // 入っていないことを -1として表す itemType01 = -1; itemType02 = -1; itemType03 = -1; itemType04 = -1;  …

Page 50: 第 1 回 プログラムの基本

Java の文法①ー変数と代入ー

// 取扱う商品種類を保存するための変数を宣言する int itemType;

// 取扱う商品種類にコーラを追加する itemType = 1001;

変数の宣言

変数への代入

itemType

itemType

1001

Page 51: 第 1 回 プログラムの基本

Java の文法①-変数と代入ー Java では、宣言と代入を同時にできま

す。

// 取扱う商品種類を保存するための変数を宣言し、コーラを追加する int itemType = 1001;

itemType

1001

Page 52: 第 1 回 プログラムの基本

Java の文法②ー標準出力ー 文字列を出力するには System.out.printl

n([ 文字列 ])

変数もそのまま出力できますSystem.out.println([ 変数 ])

   //自動販売機の開始を知らせる System.out.println(“ 自動販売機のサービスが開始されました” );

// 取扱う商品種類を表示する System.out.println(itemType+ “ は販売中です。” );

文字列とつなげる時は、「 + 」でつ

なげる

文字列リテラルは

「“」「”」で囲む

Page 53: 第 1 回 プログラムの基本

追加と表示のプログラム // 取扱う商品種類を追加する 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)

Page 54: 第 1 回 プログラムの基本

例題 1-3 の問題点 このプログラムには問題があります

出力結果を考えてみよう!

1000 番の商品種類は現在取り扱い中です。1001 番の商品種類は現在取り扱い中です。1002 番の商品種類は現在取り扱い中です。-1 番の商品種類は現在取り扱い中です。-1 番の商品種類は現在取り扱い中です。…

出力結果

-1 は表示したくありません。

Page 55: 第 1 回 プログラムの基本

1.4.2 条件分岐を使う

// 取扱う商品種類を表示する if(itemType01 == -1){// 入ってない // 何もしない }else{// 入っている System.out.println(itemType01+" は販売中です "); }

入っていないときは出力しないように修正

例題 1-4(Example1_4.java)

Page 56: 第 1 回 プログラムの基本

Java の文法③-条件分岐ー

if(itemType01 == -1){

}else{

}

条件式

成立 (true) のときはここを実行

不成立 (false) のときはここを実行

Page 57: 第 1 回 プログラムの基本

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)

条件式を工夫することによって、より目的に近いプログラムに

Page 58: 第 1 回 プログラムの基本

Java の文法④ー条件式ー (1)int i=100;if(i == 100)

int i=50;if(i == 100)

true

false

int i=100;if(i != 100)

int i=100;if(i > 100)

int i=100;if(i >= 100)

boolean b=true;if(b == false)

boolean b=true;if(b == true)

boolean b=true;if(b != false)

boolean b=true;if(b)

boolean b=false;if(b)

Page 59: 第 1 回 プログラムの基本

条件式 (1) 答えint i=100;if(i == 100)

int i=50;if(i == 100)

true

false

falseint i=100;if(i != 100)

int i=100;if(i > 100)

false

int i=100;if(i >= 100)

true

boolean b=true;if(b == false)

true

false

true

true

false

boolean b=true;if(b == true)

boolean b=true;if(b != false)

boolean b=true;if(b)

boolean b=false;if(b)

Page 60: 第 1 回 プログラムの基本

Java の文法④ー条件式ー (2)boolean b1=true; boolean b2 = false; if(b1 == true && b2 == false)

boolean b1=true; boolean b2 = false; if(b1 == true || b2 == true)

boolean b1=true; boolean b2 = false; if(b1 && b2)

boolean b1=true; boolean b2 = false; if(b1 || b2)

boolean b1=false; boolean b2 = false; if(b1 || b2)

Page 61: 第 1 回 プログラムの基本

条件式 (2) 答えtrue

true

false

true

false

boolean b1=true; boolean b2 = false; if(b1 == true && b2 == false)

boolean b1=true; boolean b2 = false; if(b1 == true || b2 == true)

boolean b1=true; boolean b2 = false; if(b1 && b2)

boolean b1=true; boolean b2 = false; if(b1 || b2)

boolean b1=false; boolean b2 = false; if(b1 || b2)