Presentation is loading. Please wait.

Presentation is loading. Please wait.

第1回 プログラムの基本 他人が読めるプログラムを書く.

Similar presentations


Presentation on theme: "第1回 プログラムの基本 他人が読めるプログラムを書く."— Presentation transcript:

1 第1回 プログラムの基本 他人が読めるプログラムを書く

2 学習目標 Javaプログラムを書き、動かせる 他人が読めるプログラムが書ける 基本的なJava文法を説明できる コンパイルし、実行できる
インデントをつけることができる 適切な名前をつけることができる 適切なコメントをつけることができる 基本的なJava文法を説明できる 変数と代入について説明できる 出力する方法について説明できる 条件分岐のしくみを説明できる

3 1.1 Javaプログラム を動かしてみましょう 1.1.1 基本的な流れ 1.1.2 実際に書いてみましょう ①JDKのインストール
②エディタを開く ③ソースコードを書く ④保存する ⑤コンパイルする ⑥実行する

4 1.1.1 基本的な流れ コンパイル 実行 ソースコード バイトコード 人間が書く プログラム(Java) コンピュータが 実行できる命令

5 1.1.2 実際に書いてみましょう ①JDKのインストール テキストを参照 ②エディタを開く

6 ③ソースコードを書く Example1_1.java 同じ名前にすること ファイル名の拡張子は.java
例題1-1 (Example1_1.java) public class Example1_1 { public static void main(String[] args) { System.out.println("自動販売機のサービスが開始されました"); } 同じ名前にすること Example1_1.java ファイル名の拡張子は.java

7 classって何? クラスとは?(第4回から詳しくやります) Javaにおけるプログラムの単位
ファイル名とクラス名は同じにします。 クラス クラス クラス クラス プログラム プログラム

8 mainって何? main()メソッドは、Javaのプログラムのスタート地点です。各プログラムに必ず一つ必要です。 main クラス クラス

9 ④保存する 場所に注意してください(整理しないと後でわからなくなります) objprogフォルダ(ディレクトリ)を作成します。
Example1_1.java objprog02

10 ⑤コンパイルする objprog01ディレクトリ に移動します。
コンパイルコマンド 「javac Example1_1.java」 を実行します。 Example1_1.class ファイルができれば成功。 objprog01 Example1_1.class Example1_1.java

11 ⑥実行する 実行コマンド 「java Example1_1」 を実行します。
「自動販売機のサービスが開始されました」メッセージが表示されれば実行完了!

12 1.2 自動販売機プログラミング 1.2.1 買うことのできる商品を提示する ①商品と種類 ②商品種類を番号で扱う

13 1.2.1 買うことの できる商品を提示する 商品のリストを提示するプログラム 商品を売るためには、取り扱う商品を提示する必要がある

14 ①商品と種類 利用者が商品を選ぶときは、商品そのもので選ぶわけではなく、種類で選びます コーラ
コーラB コーラA コーラC コーラ コーラCを選ぶわけではない。コーラならどれでも良い

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

16 「商品種類」の表示を行う 買える商品を提示するプログラム =商品種類のリストを提示するプログラム しばらくはCUIで考えます。
「コーラ」は販売中です。 「ソーダ」は販売中です。 「緑茶」は販売中です。 GUI CUI

17 ②商品種類を番号で扱う 簡単にするために、しばらく商品種類は番号だけで扱うことにします 1001 1003 1001番は販売中です。
1002番は販売中です。 1004番は販売中です。 1002 1004

18 1.3 他人が 読めるプログラムを書く 1.3.1 人が読めるプログラムとは? 1.3.2 コメントの書法 ①インデントが付けられている
②変数に適切な名前が付けられている ③コメントがかかれている 1.3.2 コメントの書法 ①コメントとプログラムの目的 ②目的の階層構造 ③コメントの種類

19 1.3.1 他人が読める プログラムとは? 他人が読めないプログラム public class Example1_2 {
例題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+ "は販売中です。"); }

20 ①インデントを付ける public class Example1_2 {
例題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+ “は販売中です。”); }

21 インデント(1) ブロック プログラム中で{}で囲まれた部分をブロックといいます public static void main{ …
インデント(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 {
例題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+ “は販売中です。”); }

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を代入していることは、プログラムを見れば明らか
これでは、何故この人は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)見出し・コメント プログラムの一番初めに書くコメント 大目的を書く 日付や、作成者 なども入れるとよい
Javaでは、class宣言の前に書く 大目的を書く そもそもこのプロ グラムは何のため に書いたのか 日付や、作成者 なども入れるとよい /** * 自動販売機のプログラム * * 平成xx年xx月xx日 作成者:○○ ×× */ public class Example1_2 {    … }

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;//コーラ itemType02 = 1022;//ソーダ ブロック・コメントとの 連携

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); //四捨五入された平均を提示する System.out.println(answer);

47 1.4 たくさんの商品種類を扱う 1.4.1 変数を用意する 1.4.2 条件分岐を使う 1.4.3 さまざまな条件式
Javaの文法-変数と代入- Javaの文法-標準出力- 1.4.2 条件分岐を使う Javaの文法-条件分岐- 1.4.3 さまざまな条件式 Javaの文法-条件式-

48 1.4.1 変数を用意する 簡単に10個の変数として扱う方法 //取扱う商品種類を保存するための変数を定義する
例題1-3 (Example1_3.java) //取扱う商品種類を保存するための変数を定義する int itemType01; int itemType02; int itemType03; int itemType04; int itemType05;   …

49 初期化する 商品種類が入っていないことを「-1」として表現することにします コメントに意味を書いておかないと、他人に分からなくなりますよ
//取扱う商品種類を保存するための変数を初期化する //入っていないことを-1として表す itemType01 = -1; itemType02 = -1; itemType03 = -1; itemType04 = -1;   …

50 Javaの文法①ー変数と代入ー 変数の宣言 itemType 変数への代入 1001 itemType
//取扱う商品種類を保存するための変数を宣言する int itemType; 変数への代入 1001 //取扱う商品種類にコーラを追加する itemType = 1001; itemType

51 Javaの文法①-変数と代入ー Javaでは、宣言と代入を同時にできます。 1001 itemType
//取扱う商品種類を保存するための変数を宣言し、コーラを追加する int itemType = 1001; 1001 itemType

52 Javaの文法②ー標準出力ー 文字列を出力するにはSystem.out.println([文字列])
文字列リテラルは 「“」「”」で囲む   //自動販売機の開始を知らせる System.out.println(“自動販売機のサービスが開始されました”); 変数もそのまま出力できます System.out.println([変数]) 文字列とつなげる時は、「+」でつなげる //取扱う商品種類を表示する System.out.println(itemType+ “は販売中です。”);

53 追加と表示のプログラム //取扱う商品種類を追加する itemType01 = 1001;//コーラ
//取扱う商品種類を表示する 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 条件分岐を使う 入っていないときは出力しないように修正 //取扱う商品種類を表示する
例題1-4 (Example1_4.java) //取扱う商品種類を表示する if(itemType01 == -1){//入ってない //何もしない }else{//入っている System.out.println(itemType01+"は販売中です"); }

56 Javaの文法③-条件分岐ー 条件式 if(itemType01 == -1){ }else{ 成立(true)のときはここを実行 }
不成立(false)のときはここを実行

57 1.4.3 さまざまな条件式 条件式を工夫することによって、 より目的に近いプログラムに //取扱う商品種類を表示する
if(itemType01 == -1){//入ってない //何もしない }else{//入っている System.out.println(itemType01+"は販売中です"); } 例題1-4 (Example1_4.java) 例題1-5 (Example1_5.java) //取扱う商品種類を表示する if(itemType01 != -1){//入っている System.out.println(itemType01+"は販売中です"); }

58 Javaの文法④ー条件式ー(1) int i=100; if(i == 100) true
boolean b=true; if(b == true) int i=50; if(i == 100) false boolean b=true; if(b == false) int i=100; if(i != 100) boolean b=true; if(b != false) int i=100; if(i > 100) boolean b=true; if(b) int i=100; if(i >= 100) boolean b=false; if(b)

59 条件式(1)答え int i=100; if(i == 100) true boolean b=true; if(b == true)
false boolean b=true; if(b == false) false int i=100; if(i != 100) false boolean b=true; if(b != false) true int i=100; if(i > 100) false boolean b=true; if(b) true int i=100; if(i >= 100) true boolean b=false; if(b) false

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; if(b1 || b2)

61 条件式(2)答え boolean b1=true; boolean b2 = false; if(b1 == true && b2 == false) true boolean b1=true; boolean b2 = false; if(b1 == true || b2 == true) true boolean b1=true; boolean b2 = false; if(b1 && b2) false boolean b1=true; boolean b2 = false; if(b1 || b2) true boolean b1=false; boolean b2 = false; if(b1 || b2) false


Download ppt "第1回 プログラムの基本 他人が読めるプログラムを書く."

Similar presentations


Ads by Google