Java 程式設計(一)  第 四章 順序與分歧流程      下一頁

 

第四章 順序與分歧流程

4-1 程式流程簡介

內容:

  • 4-1 程式流程簡介

  • 4-2 順序性流程

    • 4-2-1 順序性敘述

    • 4-2-2 範例研討:超商列印購買清單

    • 4-2-3 自我挑戰:規劃客戶資料

 

程式(Program即是要求電腦執行工作的一份詳細企劃書。設計師製作程式時,除了期望達成目標之外,也須考慮可能發生的其他異常狀況,事先規劃狀況發生時應如何處理。為了製作各種可能出現狀態,一般程式語言可下列三種敘述流程:

(1) 順序性流程:將敘述句由上往下依照順序排列。電腦按部就班地執行完一個敘述句後,緊接著執行下一個敘述句,一直到所有敘述句執行完畢為止。

(2) 選擇性流程:選擇性敘述句(if/else)會判斷某一種條件是否成立,成立與否可能執行不同的敘述;程式結束後,某些敘述可能不會被執行到。

(3) 重複性流程:重複性敘述句亦會判斷某一條件是否成立,條件成立的話,則重複執行某敘述區塊;條件不成立,則停止該敘述運作。

本章將介紹順序與選擇性敘述,至於重複性敘述於下一章(第五章)介紹。

4-2 順序性流程

4-2-1 順序性敘述

將若干條敘述句(Statement由上往下排列,每一行編寫一條敘述句並以一個『分號』(;)表示結束。電腦接收到程式後,將依序由上往下執行程式內每一條敘述句,如圖 4-1 所示。

4-1 順序性敘述的範例

許多程式語言(如 Java C),並沒有要求一個敘述命令需要單獨一行排列,而是以一個『分號』(;)表示一個敘述的結束。也就是說,一個敘述句可能佔用多行;或是,一行裡存放多個敘述句,但每一個敘述句都是以分號表示結束。

4-2-2 範例探討:超商列印購買清單

A)程式功能:Ex4_1.java

請製作一套具有列印購物清單功能的超商收銀機。假設該收銀機僅允輸入三種貨品的購買數量,並會顯示該貨品的數量;使者輸入客戶購買數量後,系統會計算總金額及印出清單,操作介面如下:

百事可樂(每瓶 15 ) 購買數量 =>5

國民便當(每盒 45 ) 購買數量 =>2

約翰走路(每瓶 312 ) 購買數量 =>2

 

 *** 列印購物清單 ***

-------------------------------------------------------------------

|   品名         |    單價      |  數量  |  小計     |

-------------------------------------------------------------------

| 百事可樂       |    15        |    5     |   75      |

| 國民便當       |    45        |    2     |   90      |

| 約翰走路       |   312        |    2     |   624   |

------------------------------------------------------------------

| 總計     |     789                                |

------------------------------------------------------------------

B)製作技巧分析:

乍看起來,本範例好像不合乎實際情況,購物清單應該由印表機輸出才對,哪有由螢幕輸出的現象;其實在編寫程式時,無論是螢幕或印表機輸出格式都是相同的,只不過設定輸出設備不同而已。本範例僅利用順序敘述句即可達成,較困難的地方是,如何將清單排列整齊;吾人可利用跳『Tab』(\t)空白格的小技巧,將某些文字固定於特定位置。

C)程式範例:

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

// Ex4_1.java

 

import java.util.Scanner;

public class Ex4_1 {    

  public static void main(String args[]) {

     Scanner in = new Scanner(System.in);

     int total, sum1, sum2, sum3, value;

     int item1, item2, item3;

 

     System.out.printf("百事可樂(每瓶 15 ) 購買數量 =>");

     item1 = in.nextInt(); sum1 = item1 * 15;

       

     System.out.printf("國民便當(每盒 45 ) 購買數量 =>");

     item2 = in.nextInt(); sum2 = item2 * 45;

 

     System.out.printf("約翰走路(每瓶 312 ) 購買數量 =>");

     item3 = in.nextInt(); sum3 = item3 * 312;

 

     total = sum1+sum2+sum3;

     System.out.printf("\n *** 列印購物清單 ***\n");

     System.out.printf("------------------------------------- ---\n");

     System.out.printf("|   品名  \t|    單價   \t|  數量  \t|  小計 \t |\n");

     System.out.printf("------------------------------------------\n");

     System.out.printf("| 百事可樂\t|    15     \t|   %d  \t|  %d  \t |\n",item1, sum1);

     System.out.printf("| 國民便當\t|   45     \t|    %d  \t|   %d  \t |\n",item2, sum2);

     System.out.printf("| 約翰走路\t|   312     \t|    %d  \t|   %d  \t |\n",item3, sum3);

     System.out.printf("------------------------------------ ---\n");

     System.out.printf("| 總計  \t|     %d     \t          \t   

     System.out.printf("----------------------------------------\n");

  }

}

 

D)程式重點分析:

  • 11 item1 = in.nextInt(); sum1 = item1 * 15;。此行有兩只敘述句,每一敘述句利用『分號』(;)表示結束。基本上,每一行允許多個敘述句,前面敘述句執行完,再執行後面的,一直到該行敘述句做完,再跳至下一行執行。

  • 23 System.out.printf("|   品名  \t|  …. 小計 \t |\n");。利用許多『\t』將所欲列印的縱行(|)固定於特定位置上。

  • 2526 System.out.printf("| 百事可樂\t|  …..  \t |\n", item1, sum1);。此敘述句太長佔用了兩行,最後以分號(;)表示結束。

4-2-3 自我挑戰:規劃客戶資料

雖然可以任意指定變數名稱,來存放各項資料,但一般公司都希望所儲存的資料能夠在不同系統之間相互享用,所代表資料的變數名稱與資料型態,則必須統一規定才可達成。因此,公司大多會指定每一種資料的名稱與型態,公佈並要求程式設計師依照此標準編寫程式。我們以一個美體公司做個簡單的範例,來觀察一般公司指定變數型態的方法如何。

A)程式功能:PM4_1.java

請您幫『春嬌美體公司』建立一套客戶資料登錄系統,該系統以交談方式詢問客戶資料,輸入完後在螢幕上顯示客戶資料;客戶資料包含有:姓名(String name;)、性別(int sex; (1 表男性;0 表女性))、年齡(int age;)、地址(String address;)、身高(float tall;)、體重(float weight;)。期望操作介面如下:

望操作介面如下:

請輸入客戶姓名 =>張大智

請輸入客戶性別(: 1, : 0) =>1

請輸入客戶年齡 =>22

請輸入客戶地址 =>高雄市鳥松區澄清路 840

請輸入客戶身高 =>175

請輸入客戶體重 =>72

 

列印客戶資料如下:

客戶姓名 = 張大智

    姓別 = 1 (1: 0:)

    年齡 = 22

    地址 = 高雄市鳥松區澄清路 840

    身高 = 175.00

    體重 = 72.00

B)製作技巧提示:

首先設定客戶資料的名稱與型態,再分別讀入與輸出,程式提示如下:

首先設定客戶資料的名稱與型態,再分別讀入與輸出,程式提示如下:

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

….

/* 規劃資料的名稱與型態 */

String name;     // 姓名

int sex;         // 性別 (1:, 0:)

int age;         // 年齡

String address;  // 地址

float tall;      // 身高

float weight;    // 體重

……

/* 輸入客戶各項資料 */

System.out.print("請輸入客戶姓名 =>");

name = keyin.nextLine();

……

System.out.printf("請輸入客戶年齡 =>");

          age = keyin.nextInt();

keyin.nextLine();             // 清除輸入 enter

….

/*  列印客戶資料  */

System.out.printf("\n列印客戶資料如下: \n");

System.out.printf("客戶姓名 = %s\n", name);

System.out.printf("    姓別 = %d (1: 0:)\n", sex);

……

C)擴充程式功能:

雖然變數 sex = 1 表示男性;sex=0 為女性,這僅針對資料儲存較為方便而已;資料輸出時,還是能夠確實表示『男』或『女』較為理想,而不要用 0 1 來取代,可稍修上述提示即可達成,如下:

……

if (sex == 1)

     System.out.printf("    姓別 = 男性\n");

else

     System.out.printf("    姓別 = 女性\n");

……

翻轉工作室:粘添壽

 

Java 程式設計(一) 含程式邏輯

 

 

翻轉電子書系列: