Presentation is loading. Please wait.

Presentation is loading. Please wait.

.NET 程式設計入門 ( 使用 C#) 講師:鄧智鴻. Outline  流程控制 : 選擇判斷流程  流程控制 : 重覆流程  巢狀式迴圈.

Similar presentations


Presentation on theme: ".NET 程式設計入門 ( 使用 C#) 講師:鄧智鴻. Outline  流程控制 : 選擇判斷流程  流程控制 : 重覆流程  巢狀式迴圈."— Presentation transcript:

1 .NET 程式設計入門 ( 使用 C#) 講師:鄧智鴻

2 Outline  流程控制 : 選擇判斷流程  流程控制 : 重覆流程  巢狀式迴圈

3 Outline  流程控制 : 選擇判斷流程  流程控制 : 重覆流程  巢狀式迴圈

4 流程控制 : 選擇判斷流程 擇一執行 程式區塊 1 程式區塊 2-1 程式區塊 2-2 程式區塊 3

5 流程控制 : 選擇判斷流程  if...else…  可利用關係及邏輯運算子,來描述是否執行流程中的程式 區塊  語法 if ( 判斷條件 ) { 條件成立時執行內容 ; } else { 條件不成立時執行內容 ; }

6 流程控制 : 選擇判斷流程 - 課堂範例  程式功能  請使用者先輸入名字  猜測使用者為男生  請使用者回答是否為男生  列印結語  程式內容  // 輸入資料  Console.Write(" 請輸入您的名字︰ ");  string name = Console.ReadLine();  Console.WriteLine(" 我猜 " + name + " 您一定是個男生 !!");

7 流程控制 : 選擇判斷流程 - 課堂範例  程式內容 Console.Write(“\n 所以 … 您真的是男生嗎 ? (y/n)"); string sex = Console.ReadLine(); if (sex == "y" || sex == "Y“ ) { Console.WriteLine(" 怎麼樣 !! 厲害吧 !!"); } else { Console.WriteLine(" 其實我是故意猜錯的 !!"); }

8 流程控制 : 選擇判斷流程 - 課堂練習  程式功能  請使用者先輸入名字  利用亂數來決定猜測使用者為男生或女生  請使用者回答是否為亂數所產生出來的性別  列印結語  基本概念  可使用亂數產生一個為 0 或 1 的數,當為 0 時猜測為女生, 為 1 時猜測為男生

9 流程控制 : 選擇判斷流程 擇一執行 程式區塊 1 程式區塊 2-1 程式區塊 2-2 程式區塊 3 程式區塊 2-3 程式區塊 2-4

10 流程控制 : 選擇判斷流程  If…else if … else...  當程式具有多個判斷條件時,可利用 if …else if …else if …else 來完成  語法 if ( 判斷條件 1) { 程式區塊 1; } else if ( 判斷條件 2) { 程式區塊 2; } else if ( 判斷條件 3) { 程式區塊 3; } else { 程式區塊 4; }

11 流程控制 : 選擇判斷流程 - 課堂範例  程式功能  請使用者輸入考試成績  列印成績的等第  程式內容 // 輸入資料 Console.Write(" 請輸入您的成績︰ "); int grade = int.Parse(Console.ReadLine());

12 流程控制 : 選擇判斷流程 - 課堂範例 // 輸出結果 Console.Write("\n 您的成績等第為︰ "); if (grade >= 80 && grade <= 100) { Console.WriteLine(" 優等 !!"); } else if (grade >= 70 && grade < 80) { Console.WriteLine(" 甲等 !!"); } else if (grade >= 60 && grade < 70) { Console.WriteLine(" 乙等 !!"); } else { Console.WriteLine(“ 丙等 !!"); }

13 流程控制 : 選擇判斷流程 - 課堂練習  程式功能  剪刀、石頭、布  列印剪刀、石頭及布讓使用者選擇  電腦隨機選擇  列印勝負結果  基本概念  以數字 1 、 2 、 3 記錄使用者所出的拳  利用亂數選擇電腦要出的拳  利用 if …else if …else 判斷結果

14 流程控制 : 選擇判斷流程  三元運算子可用來取代 if …else 流程控制,使得程式 碼更為簡潔  語法  變數 = 判斷條件 ? 變數值 1 : 變數值 2  用法  string a = 7>4 ? "7 比 4 大是對的 " : "7 比 4 大是錯的 ";  輸出結果︰ 7 比 4 大是對的  string b = 1>4 ? "1 比 4 大是對的 " : "1 比 4 大是錯的 ";  輸出結果︰ 1 比 4 大是錯的

15 流程控制 : 選擇判斷流程 - 課堂練習  程式功能  請使用者輸入兩個數字  在螢幕上列印出大的那一個  基本概念  三元運算子可以簡單地達成

16 流程控制 : 選擇判斷流程  程式中若具有多個判斷條件時,除了 if …else if …else 流程 控制外,還可以選擇 switch 敘述  語法 switch ( 判斷數值 ) { case 條件值 1: 程式區塊 1 break; case 條件值 2: 程式區塊 2 break; default: 預設程式區塊 break; }

17 流程控制 : 選擇判斷流程  switch 流程控制不但簡潔更易維護  switch 的判斷條件可為變數、數值或字串等等  判斷條件結果之資料型別要與所有條件值的資料型別 一致  若條件值 1 滿足時,便會執行程式區塊 1 的程式內容, 直到 break 為止,然後離開 switch 敍述  若所有條件值皆不滿足時,便會執行 default 的預設程 式區塊內容

18 流程控制 : 選擇判斷流程 - 課堂範例  程式功能  請使用者輸入他想看的頻道  然後編個理由和他說節目沒了 ( 不同頻道要用不同理由 )  程式內容 // 輸入頻道 int channel; Console.WriteLine(“ 頻道 1- 中華職棒 "); Console.WriteLine(“ 頻道 2- 彩虹頻道 "); Console.WriteLine(“ 請輸入您想看的頻道︰ "); channel = int.Parse(Console.ReadLine());

19 流程控制 : 選擇判斷流程 - 課堂範例 switch (channel) { case 1: Console.WriteLine(" 中華職棒快打不下去了, 看了傷心還是別看吧 "); break; case 2: Console.WriteLine(" 彩虹要下雨天打開窗才可能看見喔 "); break; default: Console.WriteLine(" 不看就算了 "); break; }

20 流程控制 : 選擇判斷流程 - 課堂練習  程式功能  月份季節轉換  請使用者輸入月份  列印出所屬季節  基本概念  利用 switch 判斷結果  { case 1: case 2: 程式區塊 1….. break; // 這樣值為 1 或 2 的時候都會執行 }

21 Outline  流程控制 : 選擇判斷流程  流程控制 : 重覆流程  巢狀式迴圈

22 流程控制 : 重覆流程 重複多次 程式區塊 1 程式區塊 2 程式區塊 3

23 流程控制 : 重覆流程  for loop  當我們需要重複執行某段程式區塊時,就可以利用重複結 構流程控制來達成  語法 for ( 初值 ; 判斷式 ; 遞變值 ) { 程式區塊 ; }  用法 for (int i=0; i<10; i++) { Console.Write (i + " "); } // 輸出結果︰ 0 1 2 3 4 5 6 7 8 9

24 流程控制 : 重覆流程  迴圈執行時,會先判斷初值是否滿足判斷式,若滿足則執 行程式區塊,程式區塊執行完畢後會回到遞增值部份,遞 增值結束後再一次回到判斷式中,檢查遞增後的值是否滿 足判斷式,滿足再次執行程式區塊,完成後再次回到遞增 值部份,直到判斷式不滿足為止離開迴圈  程式區塊只有一行時,可省略大括號  假設初值與遞增值有二個以上的運算式,中間必須以逗號 分隔  for (int i=0, j=0; i*j <10; i++, j++)  初值、判斷式及遞增值必須仔細考量設定,以防造成『無 窮迴圈』  若初值、判斷式及遞增值皆省略,即為無窮迴窮  for ( ; ; )

25 流程控制 : 重覆流程 - 課堂範例  程式功能 輸入 x 列印出 1 ~ x 間所有整數和  程式內容 Console.Write(" 請輸入 x 的值︰ "); int x = int.Parse(Console.ReadLine()); int sum = 0; for(int i=1; i<=x; i++) { sum +=i; } Console.WriteLine("1 ~ " + x + " 間的整數和為︰ " + sum );

26 流程控制 : 重覆流程 - 課堂練習  程式功能  輸入 x  列印出 1~x 間所有奇數和

27 流程控制 : 重覆流程  break 在執行迴圈中,若遇到 break 陳述句時,會立即跳出迴圈  continue 在執行迴圈中,若遇到 continue 陳述句時,會略過而不執 行迴圈體中剩下的部份,立即跳至遞增值部份

28 流程控制 : 重覆流程 - 課堂範例  程式功能  for loop 執行 100 次,每次都亂數產生一個 1~100 間數  若第 k 次的 loop 產生的亂數剛好是 k ,那就跳出迴圈  每次都列出現在是第幾次,以及產生的亂數為多少  程式內容 int random_number; Random ran = new Random(); for (int a = 1; a <= 100;a++ ) { random_number = ran.Next(1, 101); Console.WriteLine(“ 現在是第 “+a+” 次 ”+”, 產生的亂數為 ”+random_number); if (a == random_number) { break; } Console.ReadKey();

29 流程控制 : 重覆流程 - 課堂練習  程式功能  登入系統  請使用者輸入密碼  輸入密碼為 john 則允許登入  容許三次登入機會

30 流程控制 : 重覆流程 - 課堂範例  程式功能  輸入 x  列印出 1~10 間不含 x 的所有數  程式內容 Console.Write(“ 請輸入一個整數 :”); int x=int.Parse(Console.ReadLine()); for(int i=1; i<=10; i++) { if(i==x) {continue;} Console.WriteLine(i); }

31 流程控制 : 重覆流程 - 課堂練習  程式功能  請使用者輸入一整數 N  請統計 1~N 中有多少整數可被 5 整除  將答案列印出來  提示  1~N 中的每個數都要被檢驗是否可被 5 整除,但不是每個數 都要被列入統計

32 流程控制 : 重覆流程  while loop  for 迴圈中必須先設定迴圈執行次數,而 while 迴圈只須設定執行迴圈 的條件即可,當條件滿足時,即會不斷重複執行  語法 while ( 判斷條件 ) { 程式區塊 }  用法 int i = 0; while (i < 10) { i++; Console.Write(i + " "); } // 輸出結果︰ 1 2 3 4 5 6 7 8 9 10

33 流程控制 : 重覆流程  while 迴圈在執行時,會先檢查條件是否成立,當條件 成立時才會執行迴圈中的程式區塊  while 迴圈中,一樣可以使用 break 及 continue  程式區塊中,必須有將判斷條件變成 false 的陳述句, 否則將導致無窮迴圈  while 迴圈判斷條件後加上時,表示迴圈中不需執行任 何程式區塊  while (Console.ReadLine() != "yes");

34 流程控制 : 重覆流程 - 課堂範例  程式功能  階乘計算  輸入 x  列印出 x! 的值  基本概念 int result=1, x, i=1; x = int.Parse(Console.ReadLine()); while(i<=x) { result *= i++; } Console.WriteLine(result); Console.ReadKey();

35 流程控制 : 重覆流程 - 課堂練習  程式功能  請使用者輸入整數  列印出 1 加 2 加 3 加至多少才會大於該整數 例 :“1+…+3 才會大於 5”  請使用者輸入 quit 後離開

36 流程控制 : 重覆流程  do…while loop  while 迴圈執行時,會先檢查條件是否成立,進而決定 是否執行迴圈中的程式區塊。而 do …while 迴圈第一 次執行時並不會先檢查判斷條件,直接執行迴圈中的 程式區塊,執行完畢後才會檢查條件是否滿足  語法 do { 程式區塊 } while ( 判斷條件 );

37 流程控制 : 重覆流程  用法 do { Console.WriteLine("1"); }while (false); // 輸出結果︰ 1  do …while 迴圈中,一樣可以使用 break 及 continue

38 流程控制 : 重覆流程 - 課堂範例  程式功能  判斷輸入值是否在 0 ~ 100 間  輸入 x  若 x 的值不在範圍內,請使用者重新輸入  程式內容 int input; do { Console.WriteLine(" 請輸入 1~100 間的整數 "); input=int.Parse(Console.ReadLine()); } while (input 100 );

39 流程控制 : 重覆流程 - 課堂練習  程式功能  簡易猜數字遊戲  亂數產生一個 1~3 間的整數  請使用者猜測整數值  若猜對則列印 " 您好厲害猜中了 !!“ 否則列印 ” 哈哈哈 !! 沒猜中 !!"  詢問使用者是否再玩一次

40 流程控制 : 重覆流程 - 課堂練習  程式功能  輸入二個整數  求出二整數間之最大公因數  利用輾轉相除法完成  提示  輾轉相除法 : 一直除以餘數直到可除盡  例如 : 取 18 和 12 的最大公因數 18/12=1…6 12/6=2…0  除盡了,表示 6 是最大公因數

41 Outline  流程控制 : 選擇判斷流程  流程控制 : 重覆流程  巢狀式迴圈

42 巢狀式迴圈 重複多次 程式區塊 1 程式區塊 2 程式區塊 3 重複多次 程式區塊 2-1 程式區塊 2-2

43 巢狀式迴圈  在一個迴圈的程式區塊中又有一個迴圈,我們稱之為 『巢狀式迴圈』  假設 A 迴圈執行 m 次, B 迴圈執行 n 次, B 迴圈在 A 迴 圈當中,則 A 迴圈每執行一次, B 迴圈就會執行 n 次, 因此最後 B 迴圈的程式區塊會被執行 m * n 次

44 巢狀式迴圈  程式功能  輸入內外迴圈執行次數  計算內迴圈內的程式碼實際執行多少次  列印內迴圈執行次數  程式內容 // 輸入資料 Console.Write(" 輸入外迴圈執行次數︰ "); int m = int.Parse(Console.ReadLine()); Console.Write(" 輸入內迴圈執行次數︰ "); int n = int.Parse(Console.ReadLine());

45 巢狀式迴圈  程式內容 // 列印結果 int c=0; for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { Console.WriteLine(" 內迴圈已經執行︰ " + (++c) + " 次 !!"); }

46 巢狀式迴圈 - 課堂範例  程式功能  列印出九九乘法表  程式內容 // 列印九九乘法表 for(int i=1; i<=9; i++) { for(int j=1; j<=9; j++) { Console.Write(i + "*" + j + "=" + (i*j) + "\t"); } Console.WriteLine(); }

47 巢狀式迴圈 - 課堂練習  程式功能  輸入 n  列印出邊長為 n 的實心正方形 * *

48 巢狀式迴圈 - 課堂範例  程式功能  輸入 x  列印出邊長為 x 的空心正方形  程式內容 int x; do { Console.Write(" 請輸入 x 的值 ( 奇數 ) ︰ "); x = int.Parse(Console.ReadLine()); } while (x <= 0);

49 巢狀式迴圈 - 課堂範例  程式內容 for(int i=0; i<x; i++) { for(int j=0; j<x; j++) { if (i >= 1 && i = 1 && j < x - 1) Console.Write(" "); else Console.Write(“* ”); } Console.WriteLine(); } Console.ReadKey();

50 巢狀式迴圈 - 課堂練習  程式功能  輸入 x ( 奇數 )  列印出邊長為 x 的格子狀正方形  例如 :  X=5  * * * * *  * * *  * * * * *  * * *  * * * * *

51 變數生命周期  變數的生命週期根據變數所屬的有效範圍來決定  我們可以簡單的把一組大括號所包含的範圍稱為一段 『程式碼區塊』  程式碼區塊界定變數的有效範圍  實例  在迴圈中宣告的變數,在迴圈外的程式碼區塊中便無法存 取該變數 for (int a = 0; a < 5; a++) { int I_am_a_variable; } I_am_a_variable = 1; // 錯誤, 因為這個變數已經不存在了

52 變數生命周期  例子 2 int k; for (int a = 0; a < 5; a++) { int k; }  例子 3 for (int a = 0; a < 5; a++) { int k; } for (int b = 0; b < 5; b++) { int k; }

53 作業 1-1  程式功能  輸入 x  列印出邊長為 x 的等腰直角三角形  基本概念  利用 if 來判斷決定出該列印那些星星

54 作業 1-2  程式功能  輸入平行四邊形的底和高  列印實心及空心平行四邊形


Download ppt ".NET 程式設計入門 ( 使用 C#) 講師:鄧智鴻. Outline  流程控制 : 選擇判斷流程  流程控制 : 重覆流程  巢狀式迴圈."

Similar presentations


Ads by Google