• 検索結果がありません。

第 1 回 プログラムの基本

N/A
N/A
Protected

Academic year: 2021

シェア "第 1 回 プログラムの基本"

Copied!
61
0
0

読み込み中.... (全文を見る)

全文

(1)

第 1 回 プログラムの基本

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

(2)

学習目標

 Java

プログラムを書き、動かせる

コンパイルし、実行できる

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

インデントをつけることができる

適切な名前をつけることができる

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

基本的な

Java

文法を説明できる

変数と代入について説明できる

出力する方法について説明できる

条件分岐のしくみを説明できる

(3)

1.1 Java プログラム

を動かしてみましょう

 1.1.1

基本的な流れ

 1.1.2

実際に書いてみましょう

 ① JDK のインストール

 ② エディタを開く

 ③ ソースコードを書く

 ④ 保存する

 ⑤ コンパイルする

 ⑥ 実行する

(4)

1.1.1 基本的な流れ

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

コンパイル 実行

コンピュータが 実行できる命令 人間が書く

プログラム

(Java)

(5)

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

JDK

のインストール

 テキストを参照

② エディタを開く

 テキストを参照

(6)

③ ソースコードを書く

public class Example1_1 {

public static void main(String[] args) {

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

} }

Example1_1.java

例題

1-1

(Example1_1.java)

(7)

class って何?

クラスとは?

(

第4回から詳しくやり ます

)

 Java におけるプログラムの単位

 Java ではすべてのプログラムはクラスに書 かれます。

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

クラス

プログラム

クラス

プログラム クラス

クラス

(8)

main って何?

 main()

メソッドは、

Java

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

クラス

プログラム クラス

クラス

main

(9)

④ 保存する

場所に注意してください(整理しない と後でわからなくなります)

 objprog フォルダ ( ディレクトリ ) を作成 します。

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

( 今回は objprog01)

objprog objprog01

objprog02

Example1_1.java

(10)

⑤ コンパイルする

objprog01

Example1_1.java

Example1_1.class

1. objprog01

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

2.

コンパイルコマンド

javac Example1_1.java

」 を実行します。

3. Example1_1.class

ファイルができれば成功。

(11)

⑥ 実行する

1.

実行コマンド

java Example1_1

」 を実行します。

2.

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

(12)

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

 1.2.1

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

 ① 商品と種類

 ② 商品種類を番号で扱う

(13)

1.2.1 買うことの

できる商品を提示する

商品のリストを提示するプログラム

 商品を売るためには、取り扱う商品を提示

する必要がある

(14)

① 商品と種類

利用者が商品を選ぶときは、商品その もので選ぶわけではなく、種類で選び ます

コーラ

A

コーラ

B

コーラ

C

コーラ

(15)

「商品」と「商品種類」

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

商品

商品種類

(16)

「商品種類」の表示を行う

買える商品を提示するプログラム

=商品種類のリストを提示するプログ ラム

 しばらくは CUI で考えます。

GUI CUI

「コーラ」は販売中です。

「ソーダ」は販売中です。

「緑茶」は販売中です。

(17)

② 商品種類を番号で扱う

簡単にするために、しばらく商品種類 は番号だけで扱うことにします

1001

1002

1003

1004

1001

番は販売中です。

1002

番は販売中です。

1004

番は販売中です。

(18)

1.3 他人が

読めるプログラムを書く

 1.3.1

人が読めるプログラムとは?

 ① インデントが付けられている

 ② 変数に適切な名前が付けられている

 ③ コメントがかかれている

 1.3.2

コメントの書法

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

 ② 目的の階層構造

 ③ コメントの種類

(19)

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)

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

(20)

① インデントを付ける

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)

(21)

ブロック ブロックの中のブロック

インデント(1) ブロック

プログラム中で

{}

で囲まれた部分をブ ロックといいます

public static void main{

 

for(int i=0;i<10;i++){

}

 

}

(22)

インデント(2)

ブロックの中に書かれているコードを 字下げします

(Tab1

,

または

space2

つ分

)

public static void main{

 

for(int i=0;i<10;i++){

… }

  ブロックに入るごと

に一つ字下げ します。

(23)

② 適切な名前を付ける

int x;

x = 1001;

System.out.println(x+ “

は販売中です。”

);

int itemType;

itemType = 1001;

System.out.println(itemType+ “

は販売中です。”

);

x

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

(24)

名前付け規則

 Java

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

 クラス名

最初の文字は大文字にする。

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

ex) String,StringBuffer,House,MyHouse

 変数名、メソッド名

最初の文字は小文字にする。

ex) name,myName,move(),getString()

(25)

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

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)

(26)

③ コメントが書かれている

 コンテクストが分からない他人が読めるよ うにする

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

public class Example1_2 {

public static void main(String[] args) {

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

int itemType;

itemType = 1001;

System.out.println(itemType+ " は販売中です。 ");

(27)

Java における

コメントの記述方法

/*範囲指定コメント

*/

public class Example1_2 {

public static void main(String[] args) {   

// 行コメント

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

int itemType;//

行コメント

itemType = 1001;

System.out.println(itemType+ " は販売中です。 ");

} }

(28)

1.3.2 コメントの書法

コメントは内容が重要!

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

(29)

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

public class Example1_2 {

public static void main(String[] args) {    //…

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

//…

int itemType;

//…

itemType = 1001;

//…

System.out.println(itemType+ " は販売中です。 ");

}}

コメントをつけてみよう

(30)

まずいコメント

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

}

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

(31)

プログラムの解説はいらない

//itemType

変数に

1001

を代入する

itemType = 1001;

 itemType

変数に

1001

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

これでは、何故この人は

1001

を代入し ているのか、他人にわからない

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

(32)

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

//

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

itemType = 1001;

適切なコメントを書くことによって、

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

ソースコードだけでは、「コーラ

=1001

」だという 意味を理解できない。

(33)

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

public class Example1_2 {

public static void main(String[] args) {   

//…

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

//…

int itemType;

//

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

itemType = 1001;

//…

System.out.println(itemType+ " は販売中です。 ");

}

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

(34)

目的が書かれたコメント

public class Example1_2 {

public static void main(String[] args) {   

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

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

//

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

int itemType;

//

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

itemType = 1001;

//

取扱う商品種類を表示する

System.out.println(itemType+ " は販売中です。 ");

}

(35)

② 目的の階層構造

だいぶ他人にも分かるようになったが

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

public static void main(String[] args) {    // 自動販売機の開始を知らせる

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

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

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

//取扱う商品種類を表示する

System.out.println(itemType+ " は販売中です。 ");

}

(36)

目的の目的を考える

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

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

その目的は?

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

 その目的は?

商品を買ってもらうため

(37)

目的の階層構造 (1)

自動販売機のプログラム(商品を買 う)

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

自動販売機の開始したことを知らせる

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

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

取扱う商品種類を表示する

をするためには

をするためには

(38)

目的の階層構造 (2)

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

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

取扱う商品種類を追加する

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

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

取り扱う商品種類を

追加するために

変数を定義している

をするためには

(39)

目的の階層構造を反映する

/*** 自動販売機のプログラム

*/public class Example1_2 {

  /**

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

*/ public static void main(String[] args) {

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

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

//取り扱う商品種類を追加する

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

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

}

大目的 中目的

小目的

(40)

③ コメントの種類

目的の階層構造が反映されたコメント を書くための指針

 (1)

見出し・コメント

 (2) ブロック・コメント

 (3) 行・コメント

(41)

(1) 見出し・コメント

/*** 自動販売機のプログラム

** 平成 xx xx xx 日 作成者:○○ ××

*/public class Example1_2 {    …}

プログラムの一番初めに書くコメント

Java

では、

class

宣言の前に書く

大目的を書く

そもそもこのプロ グラムは何のため に書いたのか

日付や、作成者

なども入れるとよい

(42)

(2) ブロック・コメント

ブロックの最初に書くコメント

ブロック全体に対する目的を書く

 中目的を書く

 /**

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

public static void main(String[] args) {

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

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

(43)

ブロック (意味のカタマリ)を表現す る

/*** 自動販売機のプログラム

*/public class Example1_2 {

 /**

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

*/ public static void main(String[] args) {

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

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

//取り扱う商品種類を追加する

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

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

改行を利用して

ブロック(意味のカタマリ)

を表現する

(44)

(3) 行・コメント

行の最後に書くコメント

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

int itemType; //

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

// 取扱う商品種類を追加する

itemType01 = 1001;//

コーラ

プログラムの後に書く

ブロック・コメントとの

(45)

練習問題

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

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

(46)

解答例

/** 中間テストの成績を計算するプログラム

*/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);

(47)

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

 1.4.1

変数を用意する

 Java の文法-変数と代入-

 Java の文法-標準出力-

 1.4.2

条件分岐を使う

 Java の文法-条件分岐-

 1.4.3

さまざまな条件式

 Java の文法-条件式-

(48)

1.4.1 変数を用意する

簡単に10個の変数として扱う方法

//

取扱う商品種類を保存するための変数を定義する

int itemType01;

int itemType02;

int itemType03;

int itemType04;

int itemType05;

  …

例題

1-3

(Example1_3.java)

(49)

初期化する

商品種類が入っていないことを「

-1

」 として表現することにします

 コメントに意味を書いておかないと、他人 に分からなくなりますよ

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

itemType01 = -1;

itemType02 = -1;

itemType03 = -1;

itemType04 = -1;

(50)

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

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

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

変数の宣言

変数への代入

itemType

itemType

1001

(51)

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

 Java

では、宣言と代入を同時にできま す。

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

itemType

1001

(52)

Java の文法②ー標準出力ー

文字列を出力するには

System.out.printl n([

文字列

])

変数もそのまま出力できます

System.out.println([

変数

])

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

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

// 取扱う商品種類を表示する

文字列とつなげる

時は、「 +

」でつ

文字列リテラル

「“」「”」で

囲む

(53)

追加と表示のプログラム

// 取扱う商品種類を追加する 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)

(54)

例題 1-3 の問題点

このプログラムには問題があります

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

1000

番の商品種類は現在取り扱い中です

1001

番の商品種類は現在取り扱い中です

1002

番の商品種類は現在取り扱い中です

-1

番の商品種類は現在取り扱い中です。

出力結果

-1

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

(55)

1.4.2 条件分岐を使う

// 取扱う商品種類を表示する

if(itemType01 == -1){// 入ってない // 何もしない

}else{// 入っている

System.out.println(itemType01+" は販売中です ");

}

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

例題

1-4

(Example1_4.java)

(56)

Java の文法③-条件分岐ー

if(itemType01 == -1){

}else{

条件式

成立

(true)

のときはここを実

不成立

(false)

のときはここを実行

(57)

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)

 条件式を工夫することによって、

より目的に近いプログラムに

(58)

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;

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;

(59)

条件式 (1) 答え

int i=100;

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

if(i == 100)

true false false int 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)

(60)

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;

(61)

条件式 (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)

参照

関連したドキュメント

main() メソッド public static void main(String[] args) で始まるブロックです. ・

public static void main ( String args[] ) throws IOException {. } // main処理の終了 } // Prog1プログラムの終了 変数宣言

public class Hello0 は Hello0 という (空欄 2.1.1) を作ることを宣言 している。

public class Hello0 は Hello0 という (空欄 2.1.1) を作ることを宣言 している。

public class Hello0 は Hello0 という (空欄 2.1.1) を作ることを宣言 している。

public class Hello0 は Hello0 という (空欄 2.1.1) を作ることを宣言 している。

public class Hello0 は Hello0 という を作ることを宣言している。 (クラスなど、オブ

public class Hello0 は Hello0 という を作ることを宣言している。 ( クラスなど 、オブ ジェクト指向の概念の詳しい説明は、後述する。ただし