C#編程自學(xué)之流程控制語(yǔ)句
在前面的文章中我們不難看出來(lái),我們程序的執(zhí)行順序是從上到下順序執(zhí)行的,那么有時(shí)候我們需要程序在某個(gè)條件成立時(shí),執(zhí)行指定的代碼片段,那么怎么樣來(lái)控制這樣流程呢?這個(gè)就是我們今天這篇文章所需要討論的。那么開始吧!
一、if esle 語(yǔ)句
1.關(guān)系型運(yùn)算符
說(shuō)到分支語(yǔ)句必定會(huì)牽扯到條件,例如當(dāng)滿足一個(gè)條件的時(shí)候去執(zhí)行指定的代碼段,那么如何構(gòu)建條件?這個(gè)時(shí)候我們就需要先了解一下運(yùn)算符中的《關(guān)系型運(yùn)算符》!請(qǐng)看下表:

看完表格后我們來(lái)介紹下什么是關(guān)系型運(yùn)算符,關(guān)系型運(yùn)算符就是對(duì)我們程序中的數(shù)據(jù)進(jìn)行比較,當(dāng)滿足條件就返回一個(gè)為真的Bool類型變量。注意:C#中的關(guān)系運(yùn)算符只能返回true與false。
那么我們?cè)趤?lái)看看關(guān)系運(yùn)算符之間的優(yōu)先級(jí),假如我們將關(guān)系運(yùn)算符分為兩個(gè)級(jí)別的優(yōu)先級(jí)為:一級(jí)(高優(yōu)先級(jí))二級(jí)(低優(yōu)先級(jí))
那么一級(jí)的有: < , > , <= , >=
二級(jí)的有: == , !=
由此看來(lái)當(dāng)多個(gè)關(guān)系運(yùn)算符出現(xiàn)在表達(dá)式中時(shí),程序會(huì)根據(jù)優(yōu)先級(jí)級(jí)別來(lái)確定先比較哪一部分!
請(qǐng)看如下程序:
if (10 > 5 == 10 < 5) { }
//程序判斷步驟: 因?yàn)檫\(yùn)算符 > , < 的優(yōu)先級(jí)高于 ==
//那么程序解析如下 if([10大于5返回true]->true == [10不小于5返回false]->false)
//那么下一步解析如下 if(true == false) [因?yàn)閠rue 不等于false ]所以最終表達(dá)式返回false條件不成立
2.if、else
了解完關(guān)系運(yùn)算符后我們來(lái)看看C#控制程序流程的語(yǔ)句if、else,if、else的意思就是如果、那么。從字面意思我們可以看出來(lái)這組語(yǔ)句可以用來(lái)幫助我們判斷程序中的邏輯。例如 如果 a > b 的話,在屏幕打印a+ b的和,那么(那么的意思就是a > b不成立的時(shí)候)。我們還是來(lái)看個(gè)例子吧!
假如:需要設(shè)計(jì)一個(gè)程序來(lái)讓用戶輸入兩個(gè)數(shù)字平且計(jì)算兩個(gè)數(shù)字的和,當(dāng)和大于10的時(shí)候在屏幕中打印“a + b的和大于10” 否則我們打印 “a + b 的和小于10”!
Console.Write("請(qǐng)輸入a的值:");
int a = Convert.ToInt32(Console.ReadLine());
Console.Write("請(qǐng)輸入b的值:");
int b = Convert.ToInt32(Console.ReadLine());
//判斷a + b 的和是否大于10
if (a + b > 10) //注意算數(shù)運(yùn)算符的優(yōu)先級(jí)高于關(guān)系運(yùn)算符所以表達(dá)式先計(jì)算a+b 后判斷是否大于10
{
//如果大于10執(zhí)行這里
Console.WriteLine("a + b 的和大于10");
}
else
{
//否則執(zhí)行這里
Console.WriteLine("a + b 的和小于10");
}
好的!那么我們來(lái)分析一下,前面的代碼就不說(shuō)了相信大家都可以看懂,我們就從第7行開始看,這時(shí)假設(shè)用戶已經(jīng)數(shù)據(jù)了數(shù)據(jù)a為6 、b為5!
第7行if語(yǔ)句的表達(dá)式中根據(jù)運(yùn)算符優(yōu)先級(jí)先計(jì)算a + b的和為11.
緊接著判斷11是否大于10 (11 > 10),11明顯大于10 所以表示返回true當(dāng)表達(dá)式返回true就執(zhí)行if下面{}中的代碼段, 所以程序會(huì)輸出 “a + b 的和大于10”
如果用戶數(shù)輸入a = 5 、b=3 那么和不大于10 程序自然而然也就輸出“a + b 的和小于10”
以下是兩種情況的輸出結(jié)果:

3.條件運(yùn)算符
看完了C#基本的分支語(yǔ)句之后我們可能會(huì)想到,當(dāng)我一次判斷中出現(xiàn)多個(gè)條件時(shí)應(yīng)該如何處理?例如條件為:當(dāng)姓名為王波洋并且年齡為24時(shí),這種條件我們應(yīng)該如何表示?這時(shí)條件運(yùn)算符又閃亮登場(chǎng)啦。當(dāng)有了條件運(yùn)算符時(shí)構(gòu)建這種多條件的表達(dá)式就輕松了許多,那么我們來(lái)看看C#都有哪些條件運(yùn)算符:

還是用一個(gè)例子帶過(guò),需求如下:用戶輸入年齡,當(dāng)年齡在20 30中間顯示“你很年輕”, 否則就顯示 “你的年齡不滿足我的要求”,代碼如下:
Console.Write("請(qǐng)輸入您的年齡:");
int age = Convert.ToInt32(Console.ReadLine());
//判斷年齡是否大于20 在判斷年齡是否小于30
//隨后在進(jìn)行邏輯運(yùn)算
if (age > 20 && age < 30) //注意關(guān)系運(yùn)算符的優(yōu)先級(jí)高于邏輯運(yùn)算符所以表達(dá)式先判斷age >20 與 age < 30 后進(jìn)行邏輯與
{
//如果年齡大于20小于30執(zhí)行這里
Console.WriteLine("你很年輕");
}
else
{
//否則執(zhí)行這里
Console.WriteLine("你的年齡不滿足我的要求");
}
繼續(xù)分析:從第6行開始看:
1. 關(guān)系運(yùn)算符優(yōu)先級(jí)高于邏輯運(yùn)算符。那么先判斷 age 是否大于 20 和 age 是否小于 30,假設(shè)此時(shí)age = 25,那么(age > 20) == true 、(age < 30) == true
2.此時(shí)表示為if(true && true),根據(jù)上面表格我們可以知道,邏輯與在兩邊都為true時(shí)返回true所以表達(dá)式成立
3.輸出結(jié)果 "你很年輕" 當(dāng)age = 35時(shí)輸出結(jié)果是"你的年齡不滿足我的要求"

二、switch case語(yǔ)句
了解萬(wàn)if、esle后我們來(lái)看C#提供的另一種分支語(yǔ)句switch、case,它是一種將條件表達(dá)式預(yù)定義好的一種分支結(jié)構(gòu)。例如設(shè)計(jì)一個(gè)點(diǎn)餐程序,我們的菜單有 1.漢堡 2.牛排 3.披薩 ,我們需要當(dāng)用戶輸入三個(gè)食品的序號(hào)來(lái)為可以提供食物。那么使用switch、case分支語(yǔ)句的代碼如下:
Console.WriteLine("/**********************************/");
Console.WriteLine("本店提供:1.漢堡 2.牛排 3.披薩");
Console.Write("選擇需要的食物:");
string num = Console.ReadLine();
//判斷num
switch (num)
{
case "1"://當(dāng)輸入的為1時(shí)執(zhí)行這里case與下面最近的break之間的代碼
Console.WriteLine("您點(diǎn)的漢堡請(qǐng)慢用");
break;
case "2"://當(dāng)輸入的為2時(shí)執(zhí)行這里case與下面最近的break之間的代碼
Console.WriteLine("您點(diǎn)的牛排請(qǐng)慢用");
break;
case "3"://當(dāng)輸入的為3時(shí)執(zhí)行這里case與下面最近的break之間的代碼
Console.WriteLine("您點(diǎn)的披薩請(qǐng)慢用");
break;
default: //當(dāng)輸入的值case中未聲明時(shí)執(zhí)行這里default與下面最近的break之間的代碼
Console.WriteLine("本店無(wú)您所需的食品");
break;
}
那么我們繼續(xù)來(lái)分析一下,搜先來(lái)看switch 與 case的語(yǔ)法,當(dāng)switch后面括號(hào)中的值與case中定義的值一致時(shí)執(zhí)行對(duì)應(yīng)case中的代碼到碰見(jiàn)break為止。default的意思是當(dāng)switch后面括號(hào)中的值未能與case中的值匹配上時(shí),執(zhí)行default中的代碼到碰見(jiàn)break為止。那么由此分析得出:
1.當(dāng)用戶輸入1時(shí)代表選擇的漢堡,switch(1)
2.在case中尋找是否有1,尋找到case "1" 執(zhí)行case "1"中的代碼到碰見(jiàn)break為止
3.打印"您點(diǎn)的漢堡請(qǐng)慢用" 當(dāng)用戶輸入的值在case中為定義時(shí)例如5,那么程序必然輸出"本店無(wú)您所需食品"。
運(yùn)行結(jié)果如下:

本章介紹了C#的流程控制語(yǔ)句,學(xué)習(xí)重點(diǎn)在對(duì)條件判斷語(yǔ)句、循環(huán)語(yǔ)句、循環(huán)控制語(yǔ)句的理解和掌握,并熟悉使用對(duì)象控制語(yǔ)句。本章的難點(diǎn)在于對(duì)這些流程控制語(yǔ)句的靈活應(yīng)用和某些流程控制語(yǔ)句間區(qū)別的理解。
相關(guān)文章
用C#在本地創(chuàng)建一個(gè)Windows帳戶(DOS命令)
用C#在本地創(chuàng)建一個(gè)Windows帳戶(DOS命令)...2007-03-03

