課程名稱:程式設計I

指導老師:蔡佳麟

學生:徐尉哲

學號: 40207030

組別:第5組

週次:第10-14 [回首頁]

 

Part I指定作業:

作業4何謂條件分支?什麼情況下需運用條件分支?

答案4根據參考來源4:1.可藉由條件分支控制程式執行的流程。條件分支依據一個條件式的測試結果為真值偽值,而將流程將轉移至相關連的程式區塊。若條件式計算結果為 false 或nil,則視為條件不符 (測試為偽);否則條件成立 (測試為真)。注意,數值 0 視同真值;其他語言多數將 0 視同其偽值。

在許多常見的程式語言中,條件分支是一種敘述,它們決定哪段程式區塊被執行但本身沒有值。則將條件分支作為式子,所以它們也有值。舉例而言,一個 if 式子不只決定執行哪段程式區塊,它本身也會有一個結果值。如下例,該 if 式子之計算結果值為 3 :

if
 true 3
end

判斷式的使用方法在各種語言上其實都大同小異,不外乎是if else及switch或著是? : 三種,在使用上每個判斷式其後用左右的大刮號{ }夾著要執行的敘述句。以下簡單一下這種種判斷式的用法。

if else 判斷式

if (條件為true)) 
{ 
多行敘述句;; 
}else 
{ 
條件為flase的執行敘述句; 
} 

或著單行敘述時我們可以使用以下方式

if (條件為true)) 
單行敘述句; 
例子:

//hello.java
public class hello {
    public static void main(String args[])
    {
        int x =5;
        int y = 6;
        int z =3;
        if(x>y)
            System.out.println("x>y");
        else //執行else內的敘述句,輸出x<y
            System.out.println("x<y");
 
        System.out.println("----------------------------");
 
        if(x>z)//執行if內的敘述句,輸出x>z
        {
            System.out.println("第二例子");
            System.out.println("x>z");
        }
        else
        {
            System.out.println("第二例子");
            System.out.println("x<z");
        }
    }
}

switch判斷式

switch如果要用if else  來做也是可以,不過在執行速度上,跟程式的可看性上會比較不好。

使用方式如下:

switch (識別字)

case 等於某識別字1 : 敘述句;break;

case 等於某識別字2 : 敘述句;break;

‧‧‧

default: 敘述句;

例子:

//swtichSoruce.java
public class swtichSoruce {
    public static void main(String args[])
    {
        char x ='a';
        //答案是印
        //不是Z也不是X
        switch (x)
        {
            case 'z' : System.out.println("是Z");break;
            case 'x' :
                System.out.println("是X");
                break;
            default:
                System.out.println("不是Z也不是X");
        }
        System.out.println("-------------------------");
        int y = 5;
        //答案是印
        //是3
        switch(y)
        {
            case 5 : System.out.println("是5");break;
            case 3 : System.out.println("是3");break;
        }
        System.out.println("-------------------------");
        int z = 5;
        //答案是印
        //是5
        //是3
        switch(z)
        {
            case 6 : System.out.println("是6");
            case 5 : System.out.println("是5");
            case 3 : System.out.println("是3");
        }
 
    }
}

? : 斷判式

這個斷判式在新手上可能比較少使用,不過對一般熟的人使用上到很常見,這跟if else基本上是一樣的方式,只是敘述句只能存在單敘述,而無法寫入多行敘述。

條件?條件為true的敘述:條件為flase的敘述

例子:

//a.java
public class a {
    public static void main(String args[])
    {
        int x =5;
        //答案印出
        //是5
        System.out.println((x==5)?"是5":"不是5");
 
    }
}

2.選擇一條條件運行下去,例如:if(條件){輸出}else if(條件){輸出}

作業5何謂迴圈?什麼情況下需要運用迴圈?

答案5:根據參考來源5:「1.迴圈是計算機科學運算領域的用語,也是一種常見的控制流程。迴圈是一段在程式中只出現一次,但可能會連續執行多次的程式碼。迴圈中的程式碼會執行特定的次數,或者是執行到特定條件成立時結束迴圈,或者是針對某一集合中的所有項目都執行一次。

在一些函數程式語言(例如Haskell和Scheme)中會使用遞迴或不動點組合子來達到迴圈的效果,其中尾端遞迴是一種特別的遞迴,很容易轉換為迭代

當程式需要來回重複執行某一段程式碼時, 就可以使用迴圈
範例:印出10行hello

#include < stdio.h >
void main(void)
{  	
    int i;
    for ( i=0; i<10; i++ )
     {
      printf("hello %d\n",i);
      }
}

程式 (program) 中的迴圈 (loop) 就是在特定程式區塊 (block) 中,重複執行相同的工作

Java 中有兩種迴圈,一種是迴圈 (while loop) ,另一種則是迴圈 (for loop) ,兩種迴圈可以互相替代,端視自己喜歡用哪一種囉!我們先來看看while迴圈的寫法

int i = 10 // 設定控制變數
while (i > 0) {
    // 迴圈工作區
    System.out.println(i);
    i--; // 調整控制變數值
}
這個迴圈所進行的工作很簡單,先在命令列上印出 10 ,然後一路倒數到 1 為止。迴圈有三個地方要注意

while迴圈的控制變數 (control variable) 必須在while之前就先設定好,此例中將控制變數 i 設定為 10 。然後進入while的地方,條件 (condition) 就在while之後的小括弧中,此例的條件為當控制變數 i 大於 0 時,迴圈便會重複執行。迴圈工作區,也就是while之後用大括弧圍住的程式區塊,這裡,我們只有簡單的印出控制變數 i 的值,另外,最後需要有調整控制變數值的地方。

當我們明確知道重複次數的時候,我們得利用控制變數來記錄while迴圈所進行次數,這樣while迴圈才會有結束的一天,不然若是漏了任一與控制變數相關的部份時,就有可能導致無窮迴圈 (infinite loop) 的發生,例如

int i = 10 // 設定控制變數
while (i > 0) {
    // 迴圈工作區
    System.out.println(i);
    // 沒有調整控制變數值
}
這樣一來,控制變數 i 永遠大於 0 ,所以迴圈會一直重複執行,此例中會不斷的在命令列印出 10 ,直到強制結束程式執行為止。
以上的迴圈是介紹有明確重複次數的用法,若是迴圈沒有明確重複次數,那就得另行設計結束迴圈的方式,例如控制變數等於某一個值之時,再利用跳出迴圈。
另外一個for迴圈則是把控制變數的設定、迴圈結束條件、控制變數的調整全都寫在小括弧之中,如下
for (int i = 10; i > 0; i--) {
    System.out.println(i);
}
for之後的小括弧用兩個分號區隔三個項目,依序是控制變數的初值設定、迴圈結束條件、控制變數的調整。這個for迴圈與上面的while迴圈功能完全相同,寫成完整的範例程式,如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 示範 while 的類別
public class WhileDemo {
    public static void main(String[] args) {
        System.out.println();
        int i = 10; // 設定控制變數
        while (i > 0) {
            // 迴圈工作區
            System.out.println(i);
            i--; // 調整控制變數值
        }       
        System.out.println();
    }
}
 
小括中的兩個分號與條件是必須的,因此如果寫成
int i = 1;
for (; i > 0;) {
    System.out.println(i);
}

這會使for迴圈變成一個無窮迴圈。

習慣上,for迴圈通常用於具有明確重複次數的迴圈,因為全部的控制機制都放在for之後的小括弧中,while迴圈用於沒有明確重複次數的迴圈,例如接收使用者輸入的迴圈,程式通常被設計成一直等待使用者輸入,當使用者輸入結束指令時,迴圈才會結束。

但是提醒一點,for迴圈可以用while迴圈替代,反之亦然,自己偏好哪一種也就可以用哪一種囉!

接下來,我們開始設計一個將英文小寫字母換成另一個英文小寫字母的Encrypt 類別,也就是編密碼的類別 (class) ,藉此介紹更多物件導向程式設計 (object-oriented programming) 的特性 :)

2.來回重複或判斷執行一段程式碼,例如:重覆破關的遊戲

作業6介紹一個討論Java程式開發的網站。

答案6:根據參考來源6:「

JWorld@TW Java論壇 - Java技術,其它 Java 相關技術, Java 相關討論區

CodeData 技術論譠 - 除了討論java還有討論Python,資料庫,行動裝置,社交程式設計,主要還是討論java

參考來源:google

作業4 Java判斷式-流程判斷是與否

作業5程式迴圈,彭國倫 Kuo-luen Perng (Peter Pon),第三章:迴圈,程式語言教學誌

作業6google

 

Part II 10-14學習心得彙整

整理學習心得彙整表


流程控制 流程控制 迴圈控制 迴圈控制 一維陣列
10 第11週 12 13 14
實作1.流程圖10_ex1(單向選擇條件分支) 實作1.流程圖11_ex1(雙向選擇條件分支) 實作1.12_ex1流程圖(迴圈) 實作1. 程式練習(顯示逆轉九九乘法表) 實作1. 程式練習(猜數字遊戲)
實作2.流程圖10_ex2(雙向選擇條件分支) 實作2.11_ex1.java(多重選擇-BMI) 實作2.程式練習12_ex1(基本迴圈) 實作2:程式練習(迴圈之中斷) 實作2:程式練習(陣列結構)
實作3.程式練習10_ex2(雙向選擇) 實作3.11_ex2.java(switch選擇) 實作3.程式練習12_ex2(巢狀迴圈) 實作3. 程式練習(迴圈之標籤) 實作3. 程式練習(陣列結構+for(;;)or(:)方式)
         
  二維陣列 TQC-JV1    
  15 16 17  
  實作1:程式練習(修改上週最後一個練習) 實作1:程式練習(修改上週最後一個練習)    
  實作2:程式練習(取得線上資料) 實作2:程式練習(非矩形陣列+搜尋)    
  實作3:程式練習(二維陣列) 實作3:程式練習(JAV107-求平均值)    

 


創用 CC 授權條款
程式設計I(10-14週)-徐尉哲(40207030)由徐尉哲製作,以創用CC 姓名標示-非商業性 4.0 國際 授權條款釋出。