C#的語法----程序結構(1)

接下來的內容是整個C#學習的脈絡,它將各個知識點串聯了起來,是整個C#的重點,所以篇幅較長。

首先,我們類比一下PLC和C#執行代碼的方式,其實不難發現都是順序掃描,以Main爲程序入口,從上到下一行一行執行。這屬於順序結構。下面我們看看已下幾種結構

(1)分支結構:if if-else

(2)選擇結構:if-else-if  switch-case

(3)循環結構:while do-while for foreach

首先先分享分支結構的用法

if語句

語法:

if(判斷條件)

{

    要執行的代碼;

}

判斷條件:一般爲關係表達式或者bool類型的值。

執行過程:程序運行到if處,首先判斷判斷條件,若爲true則執行{}中的程序,如果返回false,則繼續向下執行。

即先判斷在執行

if else語句

語法:

if(判斷條件)

{

   執行代碼1;

}

else

{

    執行代碼2;

}

執行過程:程序執行到if處,首先判斷判斷條件是否誠意,返回true,則執行代碼1,否則執行代碼2。用於兩種情況的判斷。

注意:else永遠和離他最近的那個if配對。

這裏我們還要去提到一個if-else的一個簡化版用法,若語法條件不是很複雜可以這樣使用:

(表達式)?(result1):(result2)

 

if else-if語句

作用:用來處理多條件的區間的判斷。

語法:

if(判斷條件1)

{

    要執行的語句1;

}

else if(判斷條件2)

 

{

 

    要執行的語句2;

 

}

 

else if(判斷條件3)

{

 

    要執行的語句3;

 

}

 else

{

        要執行的語句4;

}

 

.....

執行過程:程序首先判斷判斷條件1,條件成立,執行語句1,否則執行判斷條件2,成立跳出,否則繼續執行語句3.如果都不成立則執行最後else語句。(else語句可以省略)

所以總結一下:if處理一種情況,if-else處理兩種情況,if else-if處理多種情況。

 


 

try-catch異常捕獲

問題引出:語法上沒有錯誤,在程序運行過程當中,由於某些原因程序出現了錯誤,不能在正常的運行。

下面我們看一段代碼:

1 Console.WriteLine("請輸入一個數字");
2 int number = Convert.ToInt32(Console.ReadLine());
3 
4 Console.WriteLine(number*2);
5 Console.ReadKey();

我們正常輸入int類型數字時,是沒有問題的,但是我們呢要是輸入類似“123ab”這樣的數字,系統就會拋異常,程序停止運行。這時,

若想你的程序變得堅強,就會用到try-catch進行異常捕獲。

就是哪裏可能會出問題就將他try起來。

語法:

try

{

    可能會出現異常的代碼;

}

catch

{

     出現異常後要執行的代碼;

}

執行過程:如果try中的代碼沒有出現異常,那麼catch中的代碼就不會執行。

更改後的代碼如下:

 

 1 int number = 0;
 2 Console.WriteLine("請輸入一個數字");
 3 try
 4 {
 5      int number = Convert.ToInt32(Console.ReadLine());
 6      Console.WriteLine(number*2);
 7 }
 8 catch
 9  {
10       Console.WriteLine("輸入的內容不能轉換成數字");
11  }  
12  Console.ReadKey();

 

 

這裏要注意變量的作用域,變量的作用域就是你能使用到這個變量的範圍,一般是從聲明他的那個括號開始到那個括號對應的括號結束。

注意:try-catch之間不允許有代碼,要緊密相連。

下面看這樣一個練習:

李四的年終工作評定,若爲A,工資漲500,爲B,工資漲200,爲C工資不變,若爲D工資降200,若爲E,工資降500.原工資爲5000

要求輸入李四評級,然後顯示李四來年的工資。

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 草稿
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             double salary = 5000;
14             Console.WriteLine("請輸入對李四的年終評定");
15             string level = Console.ReadLine();
16             if (level=="A")
17             {
18                 salary += 500;
19             }
20             else if (level=="B")
21             {
22                 salary += 200;
23             }
24             else if (level == "C")
25             {
26                 salary += 0;
27             }
28             else if (level == "D")
29             {
30                 salary -= 200;
31             }
32             else if (level == "E")
33             {
34                 salary -= 500;
35             }
36             else
37             {
38                 Console.WriteLine("輸入有誤程序退出");
39             }
40             Console.WriteLine("李四來年的工資是{0}",salary);
41             Console.ReadKey();
42         }
43     }
44 }

 

但是以上代碼會有問題,就是當你輸入的爲ABCDE以外的字母時,會發生一下問題:

 

 

 也就是在執行完else代碼後 最後的Console.WriteLine("李四來年的工資是{0}",salary);不應該輸出爲了解決這個問題,我們可以用以下方法解決。也就是用一個標誌位。

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 草稿
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             bool b = true;
14             double salary = 5000;
15             Console.WriteLine("請輸入對李四的年終評定");
16             string level = Console.ReadLine();
17             if (level=="A")
18             {
19                 salary += 500;
20             }
21             else if (level=="B")
22             {
23                 salary += 200;
24             }
25             else if (level == "C")
26             {
27                 salary += 0;
28             }
29             else if (level == "D")
30             {
31                 salary -= 200;
32             }
33             else if (level == "E")
34             {
35                 salary -= 500;
36             }
37             else
38             {
39                 Console.WriteLine("輸入有誤程序退出");
40                 b = false;
41             }
42             if (b)
43             {
44                 Console.WriteLine("李四來年的工資是{0}", salary);
45             }
46             
47             Console.ReadKey();
48         }
49     }
50 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章