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