C#編程自學(xué)之流程控制語句
在前面的文章中我們不難看出來,我們程序的執(zhí)行順序是從上到下順序執(zhí)行的,那么有時(shí)候我們需要程序在某個(gè)條件成立時(shí),執(zhí)行指定的代碼片段,那么怎么樣來控制這樣流程呢?這個(gè)就是我們今天這篇文章所需要討論的。那么開始吧!
一、if esle 語句
1.關(guān)系型運(yùn)算符
說到分支語句必定會(huì)牽扯到條件,例如當(dāng)滿足一個(gè)條件的時(shí)候去執(zhí)行指定的代碼段,那么如何構(gòu)建條件?這個(gè)時(shí)候我們就需要先了解一下運(yùn)算符中的《關(guān)系型運(yùn)算符》!請(qǐng)看下表:
看完表格后我們來介紹下什么是關(guān)系型運(yùn)算符,關(guān)系型運(yùn)算符就是對(duì)我們程序中的數(shù)據(jù)進(jìn)行比較,當(dāng)滿足條件就返回一個(gè)為真的Bool類型變量。注意:C#中的關(guān)系運(yùn)算符只能返回true與false。
那么我們在來看看關(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í)的有: == , !=
由此看來當(dāng)多個(gè)關(guān)系運(yùn)算符出現(xiàn)在表達(dá)式中時(shí),程序會(huì)根據(jù)優(yōu)先級(jí)級(jí)別來確定先比較哪一部分!
請(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)算符后我們來看看C#控制程序流程的語句if、else,if、else的意思就是如果、那么。從字面意思我們可以看出來這組語句可以用來幫助我們判斷程序中的邏輯。例如 如果 a > b 的話,在屏幕打印a+ b的和,那么(那么的意思就是a > b不成立的時(shí)候)。我們還是來看個(gè)例子吧!
假如:需要設(shè)計(jì)一個(gè)程序來讓用戶輸入兩個(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"); }
好的!那么我們來分析一下,前面的代碼就不說了相信大家都可以看懂,我們就從第7行開始看,這時(shí)假設(shè)用戶已經(jīng)數(shù)據(jù)了數(shù)據(jù)a為6 、b為5!
第7行if語句的表達(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#基本的分支語句之后我們可能會(huì)想到,當(dāng)我一次判斷中出現(xiàn)多個(gè)條件時(shí)應(yīng)該如何處理?例如條件為:當(dāng)姓名為王波洋并且年齡為24時(shí),這種條件我們應(yīng)該如何表示?這時(shí)條件運(yùn)算符又閃亮登場啦。當(dāng)有了條件運(yùn)算符時(shí)構(gòu)建這種多條件的表達(dá)式就輕松了許多,那么我們來看看C#都有哪些條件運(yùn)算符:
還是用一個(gè)例子帶過,需求如下:用戶輸入年齡,當(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語句
了解萬if、esle后我們來看C#提供的另一種分支語句switch、case,它是一種將條件表達(dá)式預(yù)定義好的一種分支結(jié)構(gòu)。例如設(shè)計(jì)一個(gè)點(diǎn)餐程序,我們的菜單有 1.漢堡 2.牛排 3.披薩 ,我們需要當(dāng)用戶輸入三個(gè)食品的序號(hào)來為可以提供食物。那么使用switch、case分支語句的代碼如下:
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("本店無您所需的食品"); break; }
那么我們繼續(xù)來分析一下,搜先來看switch 與 case的語法,當(dāng)switch后面括號(hào)中的值與case中定義的值一致時(shí)執(zhí)行對(duì)應(yīng)case中的代碼到碰見break為止。default的意思是當(dāng)switch后面括號(hào)中的值未能與case中的值匹配上時(shí),執(zhí)行default中的代碼到碰見break為止。那么由此分析得出:
1.當(dāng)用戶輸入1時(shí)代表選擇的漢堡,switch(1)
2.在case中尋找是否有1,尋找到case "1" 執(zhí)行case "1"中的代碼到碰見break為止
3.打印"您點(diǎn)的漢堡請(qǐng)慢用" 當(dāng)用戶輸入的值在case中為定義時(shí)例如5,那么程序必然輸出"本店無您所需食品"。
運(yùn)行結(jié)果如下:
本章介紹了C#的流程控制語句,學(xué)習(xí)重點(diǎn)在對(duì)條件判斷語句、循環(huán)語句、循環(huán)控制語句的理解和掌握,并熟悉使用對(duì)象控制語句。本章的難點(diǎn)在于對(duì)這些流程控制語句的靈活應(yīng)用和某些流程控制語句間區(qū)別的理解。
相關(guān)文章
用C#在本地創(chuàng)建一個(gè)Windows帳戶(DOS命令)
用C#在本地創(chuàng)建一個(gè)Windows帳戶(DOS命令)...2007-03-03