課程名稱:程式設計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 (條件為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如果要用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--; // 調整控制變數值
}
|
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);
// 沒有調整控制變數值
}
|
以上的迴圈是介紹有明確重複次數的用法,若是迴圈沒有明確重複次數,那就得另行設計結束迴圈的方式,例如控制變數等於某一個值之時,再利用跳出迴圈。另外一個for迴圈則是把控制變數的設定、迴圈結束條件、控制變數的調整全都寫在小括弧之中,如下
for (int i = 10; i > 0; i--) {
System.out.println(i);
}
|
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();
}
}
|
這會使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:
作業5:程式迴圈,彭國倫 Kuo-luen Perng (Peter Pon),第三章:迴圈,程式語言教學誌
作業6:google
Part II 10-14學習心得彙整:
程式設計I(10-14週)-徐尉哲(40207030)由徐尉哲製作,以創用CC 姓名標示-非商業性 4.0 國際 授權條款釋出。