CÂU LỆNH

Trong C# mt ch dn lp trình đy đ đưc gi là câu lnh. Chương trình bao gm nhiu câu lnh tun t vi nhau. Mi câu lnh phi kết thúc vi mt du chm phy, ví d như:

int x; // một câu lệnh

 

x = 32; // câu lệnh khác

int y =x; // đây cũng là một câu lệnh

 

Nhng câu lnh này s đưc x lý theo th t. Đu tiên trình biên dch bt đu v trí đu ca danh sách các câu lnh và ln lưt đi tng câu lnh cho đến lnh cui cùng, tuy nhiên ch đúng cho trưng hp các câu lnh tun t không phân nhánh.

Có hai loi câu lnh phân nhánh trong C# là: phân nhánh không có điu kin (unconditional branching statement) và phân nhánh có điu kin (conditional branching statement).

Ngoài ra còn có các câu lnh làm cho mt s đon chương trình đưc thc hin nhiu ln, các câu lnh này đưc gi là câu lnh lp hay vòng lp. Bao gm các lnh lp for, while, do, in, và each s đưc đ cp ti trong mc tiếp theo.

Sau đây chúng ta s xem xét hai loi lnh phân nhánh ph biến nht trong lp trình C#.

Phân nhánh không có điều kiện

 

Phân nhánh không có điu kin có th to ra bng hai cách: gi mt hàm và dùng t khoá phân nhánh không điu kin.

 

Gọi hàm

Khi trình biên dch x lý đến tên ca mt hàm, thì s ngưng thc hin hàm hin thi mà bt đu phân nhánh d to mt gi hàm mi. Sau khi hàm va to thc hin xong và tr v mt giá tr thì trình biên dch s tiếp tc thc hin dòng lnh tiếp sau ca hàm ban đu.

Ví d: Gi mt hàm.

using System;

class GoiHam

{

static void Main()

{

Console.WriteLine( “Ham Main chuan bi goi ham Func()...” );

Func();

Console.WriteLine( “Tro lai ham Main()” );

}

static void Func()

{

Console.WriteLine( “---->Toi la ham Func()...”);

}

}

 

-----------------------------------------------------------------

Kết quả:

Ham Main chuan bi goi ham Func()...

---->Toi la ham Func()...

Tro lai ham Main()

-----------------------------------------------------------------

 

Lung chương trình thc hin bt đu t hàm Main x lý đến dòng lnh Func(), lnh Func() thưng đưc gi là mt li gi hàm. Ti đim này lung chương trình s r nhánh đ thc hin hàm va gi. Sau khi thc hin xong hàm Func, thì chương trình quay li hàm Main và thc hin câu lnh ngay sau câu lnh gi hàm Func.

 

Từ khoá phân nhánh không điều kiện

Đ thc hin phân nhánh ta gi mt trong các t khóa sau: goto, break, continue, return, statementthrow. Vic trình bày các t khóa phân nhánh không điu kin này s đưc đ cp trong chương tiếp theo. Trong phn này ch đ cp chung không đi vào chi tiết.

 

Phân nhánh có điều kiện

Phân nhánh có điu kin đưc to bi các lnh điu kin. Các t khóa ca các lnh này như : if, else, switch. S phân nhánh ch đưc thc hin khi biu thc điu kin phân nhánh đưc xác đnh là đúng.

1.     Câu lệnh if...else

 

Câu lnh phân nhánh if...else da trên mt điu kin. Điu kin là mt biu thc s đưc kim tra giá tr ngay khi bt đu gp câu lnh đó. Nếu điu kin đưc kim tra là đúng, thì câu lnh hay mt khi các câu lnh bên trong thân ca câu lnh if đưc thc hin.

Trong câu điu kin if...else thì else là phn tùy chn. Các câu lnh bên trong thân ca else ch đưc thc hin khi điu kin ca if là sai. Do vy khi câu lnh đy đ if...else đưc dùng thì ch có mt trong hai if hoc else đưc thc hin. Ta có cú pháp câu điu kin if... else sau:

 

if (biểu thức điều kiện)

      <Khối lệnh thực hiện khi điều kiện đúng>

[else

      <Khối lệnh thực hiện khi điều kiện sai>]

 

Nếu các câu lnh trong thân ca if hay else mà ln hơn mt lnh thì các lnh này phi đưc bao trong mt khi lnh, tc là phi nm trong du khi { }:

if (biểu thức điều kiện)

{

      <lệnh 1>

      <lệnh 2>

      ....

}

[else

{

      <lệnh 1>

      <lệnh 2>

      ...

}]

 

Như trình bày bên trên do else là phn tùy chn nên đưc đt trong du ngoc vuông [...].

Minh ha cách s dng câu lnh if...else.

 

using System;

class ExIfElse

{

static void Main()

{

int var1 = 10;

int var2 = 20;

if ( var1 > var2)

{

Console.WriteLine( “var1: {0} > var2:{1}”, var1, var2);

}

else

{

Console.WriteLine( “var2: {0} > var1:{1}”, var2, var1);

}

var1 = 30;

if ( var1 > var2)

{

var2 = var1++;

Console.WriteLine( “Gan gia tri var1 cho var2”);

Console.WriteLine( “Tang bien var1 len mot ”);

Console.WritelLine( “Var1 = {0}, var2 = {1}”, var1, var2);

}

else

{

var1 = var2;

Console.WriteLine( “Thiet lap gia tri var1 = var2” );

Console.WriteLine( “var1 = {0}, var2 = {1}”, var1, var2 );

}

}

}

 

-----------------------------------------------------------------

Kết quả:

Gan gia tri var1 cho var2

Tang bien var1 len mot

Var1 = 31, var2 = 30

-----------------------------------------------------------------

 

Trong ví d 3.7 trên, câu lnh if đu tiên s kim tra xem giá tr ca var1 có ln hơn giá tr ca var2 không. Biu thc điu kin này s dng toán t quan h ln hơn (>), các toán t khác như nh hơn (<), hay bng (==). Các toán t này thưng xuyên đưc s dng trong lp trình và kết qu tr là giá tr đúng hay sai.

Vic kim tra xác đnh giá tr var1 ln hơn var2 là sai (vì var1 = 10 trong khi var2 = 20), khi đó các lnh trong else s đưc thc hin, và các lnh này in ra màn hình:

      var2: 20 > var1: 10

Tiếp theo đến câu lnh if th hai, sau khi thc hin lnh gán giá tr ca var1 = 30, lúc này điu kin if đúng nên các câu lnh trong khi if s đưc thc hin và kết qu là in ra ba dòng sau:

 

Gan gia tri var1 cho var2

Tang bien var1 len mot

Var1 = 31, var2 = 30

 

2.     Câu lệnh if lồng nhau

 

Các lnh điu kin if có th lng nhau đ phc v cho vic x lý các câu điu kin phc tp. Vic này cũng thưng xuyên gp khi lp trình. Gi s chúng ta cn viết mt chương trình có yêu cu xác đnh tình trng kết hôn ca mt công dân da vào các thông tin như tui, gii tính, và tình trng hôn nhân, da trên mt s thông tin như sau:

Nếu công dân là nam thì đ tui có th kết hôn là 20 vi điu kin là chưa có gia đình. Nếu công dân là n thì đ tui có th kết hôn là 19 cũng vi điu kin là chưa có gia đình.

Tt c các công dân có tui nh hơn 19 điu không đưc kết hôn.

Da trên các yêu cu trên ta có th dùng các lnh if lng nhau đ thc hin.

 

Ví dụ: Các lệnh if lồng nhau.

using System;

class TinhTrangKetHon

{

static void Main()

{

int tuoi;

bool coGiaDinh; // 0: chưa có gia đình; 1: đã có gia đình

bool gioiTinh; // 0: giới tính nữ; 1: giới tính nam tuoi = 24;

coGiaDinh = false; // chưa có gia đình

gioiTinh = true; // nam

if ( tuoi >= 19)

{

if ( coGiaDinh == false)

{

if ( gioiTinh == false) // nu

Console.WriteLine(“ Nu co the ket hon”);

else // nam

if (tuoi >19) // phải lớn hơn 19 tuoi mới được kết hôn

Console.WriteLine(“ Nam co the ket hon”);

}

else // da co gia dinh

Console.WriteLine(“Khong the ket hon nua, da ket hon”);

}

else // tuoi < 19

Console.WriteLine(“ Khong du tuoi ket hon” );

}

}

Kết quả:

Nam co the ket hon

Theo trình t kim tra thì câu lnh if đu tiên đưc thc hin, biu thc điu kin đúng do tui có giá tr là 24 ln hơn 19. Khi đó khi lnh trong if s đưc thc thi. trong khi này li xut hin mt lnh if khác đ kim tra tình trng xem ngưi đó đã có gia đình chưa, kết qu điu kin if là đúng vì coGiaDinh = false nên biu thc so sánh coGiaDinh == false s tr v giá tr đúng. Tiếp tc xét xem gii tính ca ngưi đó là nam hay n, vì ch có nam trên 19 tui mi đưc kết hôn. Kết qu kim tra là nam nên câu lnh if th ba đưc thc hin và xut ra kết qu : “Nam co the ket hon”.

 

3.     Câu lệnh switch

Khi có quá nhiu điu kin đ chn thc hin thì dùng câu lnh if s rt ri rm và dài dòng, Các ngôn ng lp trình cp cao đu cung cp mt dng câu lnh switch lit kê các giá tr và ch thc hin các giá tr thích hp. C# cũng cung cp câu lnh nhy switch có cú pháp sau:

 

switch (biểu thức điều kiện)

{

case <giá trị>:

<Các câu lệnh thực hiện>

<lệnh nhảy>

[default:

<Các câu lệnh thực hiện mặc định>]

}

 

Cũng tương t như câu lnh if, biu thc đ so sánh đưc đt sau t khóa switch, tuy nhiên giá tr so sánh li đưc đt sau mi các t khóa case. Giá tr sau t khóa case là các giá tr hng s nguyên như đã đ cp trong phn trưc.

Nếu mt câu lnh case đưc thích hp tc là giá tr sau case bng vi giá tr ca biu thc sau switch thì các câu lnh liên quan đến câu lnh case này s đưc thc thi. Tuy nhiên phi có mt câu lnh nhy như break, goto đ điu khin nhy qua các case khác.Vì nếu không có các lnh nhy này thì khi đó chương trình s thc hin tt c các case theo sau.

Ví dụ: Câu lệnh switch.

-----------------------------------------------------------------

using System;

class MinhHoaSwitch

{

static void Main()

{

const int mauDo = 0;

const int mauCam = 1;

const int mauVang = 2;

const int mauLuc = 3;

const int mauLam = 4;

const int mauCham = 5;

const int mauTim = 6;

int chonMau = mauLuc;

switch ( chonMau )

{

case mauDo:

Console.WriteLine( “Ban cho mau do” );

break;

case mauCam:

Console.WriteLine( “Ban cho mau cam” );

break;

case mauVang:

Console.WriteLine( “Ban chon mau luc”);

break;

case mauLam:

Console.WriteLine( “Ban chon mau lam”);

goto case mauCham;

case mauCham:

Console.WriteLine( “Ban cho mau cham”);

goto case mauTim;

case mauTim:

Console.WriteLine( “Ban chon mau tim”);

goto case mauLuc;

default:

Console.WriteLine( “Ban khong chon mau nao het”);

break;

}

Console.WriteLine( “Xin cam on!”);

}

}

 

Trong ví d trên lit kê by loi màu và dùng câu lnh switch đ kim tra các trưng hp chn màu. đây chúng ta th phân tích tng câu lnh case mà không quan tâm đến giá tr biến chonMau.

Bảng 1.12. Mô tả các trường hợp thực hiện câu lệnh switch

Giá trị chonMau

Câu lệnh case thực hiện

Kết quả thực hiện

mauDo

case mauDo

Ban chon mau do

mauCam

case mauCam

Ban chon mau cam

mauVang

case mauVang

Ban chon mau luc

case mauLuc

mauLuc

case mauLuc

Ban chon mau luc

mauLam

case mauLam

Ban chon mau lam

case mauCham

Ban chon mau cham

case mauTim

Ban chon mau tim

case mauLuc

Ban chon mau luc

mauCham

case mauCham

Ban chon mau cham

case mauTim

Ban chon mau tim

case mauLuc

Ban chon mau luc

mauTim

case mauTim

Ban chon mau tim

case mauLuc

Ban chon mau luc

 

Trong đon ví d do giá tr ca biến chonMau = mauLuc nên khi vào lnh switch thì case mauLuc s đưc thc hin và kết qu như sau:

 

Kết quả

Ban chon mau luc

Xin cam on!

 

@Ghi chú: Đi vi ngưi lp trình C/C++, trong C# chúng ta không th nhy xung mt trưng hp case tiếp theo nếu câu lnh case hin ti không rng. Vì vy chúng ta phi viết như sau:

 

      case 1:    // nhảy xuống

      case 2:

 

Như minh ha trên thì trưng hp x lý case 1 là rng, tuy nhiên chúng ta không th viết như sau:

case 1:

      DoAnything();

      // Trường hợp này không thể nhảy xuống case 2

case 2:

 

trong đon chương trình th hai trưng hp case 1 có mt câu lnh nên không th nhy xung đưc. Nếu mun trưng hp case1 nhy qua case 2 thì ta phi s dng câu lnh goto mt các tưng minh:

 

case 1:

      DoAnything();

      goto case 2;

case 2:

 

Do vy khi thc hin xong các câu lnh ca mt trưng hp nếu mun thc hin mt trưng hp case khác thì ta dùng câu lnh nhy goto vi nhãn ca trưng hp đó:

      goto case <giá trị>

 

Khi gp lnh thoát break thì chương trình thoát khi switch và thc hin lnh tiếp sau khi switch đó.

Nếu không có trưng hp nào thích hp và trong câu lnh switch có dùng câu lnh defalut thì các câu lnh ca trưng hp default s đưc thc hin. Ta có th dùng default đ cnh báo mt li hay x lý mt trưng hp ngoài tt c các trưng hp case trong switch.

Trong ví d minh ha câu lnh switch trưc thì giá tr đ kim tra các trưng hp thích hp là các hng s nguyên. Tuy nhiên C# còn có kh năng cho phép chúng ta dùng câu lnh switch vi giá tr là mt chui, có th viết như sau:

switch (chuoi1)

{

case “mau do”:

....

break;

case “mau cam”:

...

break;

...

}

 

4.     Câu lệnh lặp

C# cung cp mt b m rng các câu lnh lp, bao gm các câu lnh lp for, while và do... while. Ngoài ra ngôn ng C# còn b sung thêm mt câu lnh lp foreach, lnh này mi đi vi ngưi lp trình C/C++ nhưng khá thân thin vi ngưi lp trình VB. Cui cùng là các câu lnh nhy như goto, break, continue, và return.

 

5.     Câu lệnh nhảy goto

 

Lnh nhy goto là mt lnh nhy đơn gin, cho phép chương trình nhy vô điu kin ti mt v trí trong chương trình thông qua tên nhãn. Tuy nhiên vic s dng lnh goto thưng làm mt đi tính cu trúc thut toán, vic lm dng s dn đến mt chương trình ngun mà gii lp trình gi là “mì ăn lin” ri như m bòng bong vy. Hu hết các ngưi lp trình có kinh nghim đu tránh dùng lnh goto. Sau đây là cách s dng lnh nhy goto:

To mt nhãn goto đến nhãn: Nhãn là mt đnh danh theo sau bi du hai chm (:). Thưng thưng mt lnh goto gn vi mt điu kin nào đó, ví d sau s minh ha các s dng lnh nhy goto trong chương trình.

 

Ví dụ: Sử dụng goto.

-----------------------------------------------------------------

using System;

public class UsingGoto

{

public static int Main()

{

int i = 0;

lap:   // nhãn

Console.WriteLine(“i:{0}”,i);

i++;

if ( i < 10 )

goto lap;  // nhãy về nhãn lap

return 0;

}

}

Kết quả:

i:0

i:1

i:2

i:3

i:4

i:5

i:6

i:7

i:8

i:9

------------------------------------------------------------------

 

Nếu chúng ta v lưu đ ca mt chương trình có s dng nhiu lnh goto, thì ta s thy kết qu rt nhiu đưng chng chéo lên nhau, ging như là các si mì vy. Chính vì vy nên nhng đon mã chương trình có dùng lnh goto còn đưc gi là “spaghetti code”.

Vic tránh dùng lnh nhy goto trong chương trình hoàn toàn thc hin đưc, có th dùng vòng lp while đ thay thế hoàn toàn các câu lnh goto.

 

6.     Vòng lặp while

Nghĩa ca vòng lp while là: “Trong khi điu kin đúng thì thc hin các công vic này”. Cú pháp s dng vòng lp while như sau:

while (Biểu thức)

      <Câu lệnh thực hiện>

 

Biu thc ca vòng lp while là điu kin đ các lnh đưc thc hin, biu thc này bt buc phi tr v mt giá tr kiu bool là true/false. Nếu có nhiu câu lnh cn đưc thc hin trong vòng lp while thì phi đt các lnh này trong khi lnh. Ví d minh ha vic s dng vòng lp while.

Ví dụ: Sử dụng vòng lặp while.

-----------------------------------------------------------------

using System;

public class UsingWhile

{

public static int Main()

{

int i = 0;

while ( i < 10 )

{

Console.WriteLine(“ i: {0} ”,i);

i++;

}

return 0;

}

}

Kết quả:

i:0

i:1

i:2

i:3

i:4

i:5

i:6

i:7

i:8

i:9

 

Đon chương trình trên cũng cho kết qu tương t như chương trình minh ha dùng lnh goto. Tuy nhiên chương trình trên rõ ràng hơn và có ý nghĩa t nhiên hơn. Có th din gii ngôn ng t nhiên đon vòng lp while như sau: “Trong khi i nh hơn 10, thì in ra giá tr ca i và tăng i lên mt đơn v”.

Lưu ý rng vòng lp while s kim tra điu kin trưc khi thc hin các lnh bên trong, điu này đm bo nếu ngay t đu điu kin sai thì vòng lp s không bao gi thc hin. do vy nếu khi to biến i có giá tr là 11, thì vòng lp s không đưc thc hin.

 

7.     Vòng lặp do...while

 

Đôi khi vòng lp while không tho mãn yêu cu trong tình hung sau, chúng ta mun chuyn ng nghĩa ca while là “chy trong khi điu kin đúng” thành ng nghĩa khác như “làm điu này trong khi điu kin vn còn đúng”. Nói cách khác thc hin mt hành đng, và sau khi hành đng đưc hoàn thành thì kim tra điu kin. Cú pháp s dng vòng lp do...while như sau:

do

<Câu lệnh thực hiện>

while ( điều kiện )

 

đây có s khác bit quan trng gia vòng lp while và vòng lp do...while là khi dùng vòng lp do...while thì ti thiu s có mt ln các câu lnh trong do...while đưc thc hin. Điu này cũng d hiu vì ln đu tiên đi vào vòng lp do...while thì điu kin chưa đưc kim tra.

Ví dụ: Minh hoạ việc sử dụng vòng lặp do..while.

using System;

public class UsingDoWhile

{

public static int Main( )

{

int i = 11;

do

{

Console.WriteLine(“i: {0}”,i);

i++;

} while ( i < 10 ) return 0;

}

}

-----------------------------------------------------------------

Kết quả:

i: 11

-----------------------------------------------------------------

 

Do khi to biến i giá tr là 11, nên điu kin ca while là sai, tuy nhiên vòng lp do...while vn đưc thc hin mt ln.

 

8.     Vòng lặp for

 

Vòng lp for bao gm ba phn chính:

·       Khi to biến đếm vòng lp

·       Kim tra điu kin biến đếm, nếu đúng thì s thc hin các lnh bên trong vòng for

·       Thay đi bưc lp.

Cú pháp s dng vòng lp for như sau:

 

for ([ phn khi to] ; [biu thc điu kin]; [bưc lp])

<Câu lnh thc hin>

 

Vòng lp for đưc minh ha trong ví d sau:

using System;

public class UsingFor

{

public static int Main()

{

for (int i = 0; i < 30; i++)

{

if (i % 10 == 0)

{

Console.WriteLine(“{0} ”,i);

}

else

{

Console.Write(“{0} ”,i);

}

}

return 0;

}

}

------------------------------------------------------------------

Kết quả:

0

12345678910

11 12 13 14 15 16 17 18 19 20

21 22 23 24 25 26 27 28 29

------------------------------------------------------------------

 

Trong đon chương trình trên có s dng toán t chia ly dư modulo, toán t này s đưc đ cp đến phn sau. Ý nghĩa lnh i%10 == 0 là kim tra xem i có phi là bi s ca 10 không, nếu i là bi s ca 10 thì s dng lnh WriteLine đ xut giá tr i và sau đó đưa cursor v đu dòng sau. Còn ngưc li ch cn xut giá tr ca i và không xung dòng.

Đu tiên biến i đưc khi to giá tr ban đu là 0, sau đó chương trình s kim tra điu kin, do 0 nh hơn 30 nên điu kin đúng, khi đó các câu lnh bên trong vòng lp for s đưc thc hin. Sau khi thc hin xong thì biến i s đưc tăng thêm mt đơn v (i++).

Có mt điu lưu ý là biến i do khai bao bên trong vòng lp for nên ch có phm vi hot đng bên trong vòng lp. Ví d 3.14 sau s không đưc biên dch vì xut hin mt li.

 

Ví dụ: Phạm vi của biến khai báo trong vòng lặp.

-----------------------------------------------------------------

using System;

public class UsingFor

{

public static int Main()

{

for (int i = 0; i < 30; i++)

{

if (i %10 ==0)

{

Console.WriteLine(“{0} ”,i);

}

else

{

Console.Write(“{0} ”,i);

}

}

//Lệnh sau sai do biến i chỉ được khai báo trong vòng lặp

Console.WriteLine(“ Ket qua cuoi cung cua i:{0}”,i);

return 0;

}

}

-----------------------------------------------------------------

 

9.     Câu lệnh lặp foreach

 

Vòng lp foreach cho phép to vòng lp thông qua mt tp hp hay mt mng. Đây là mt câu lnh lp mi không có trong ngôn ng C/C++. Câu lnh foreach có cú pháp chung như sau:

 

foreach (<kiểu tập hợp> <tên thành phần> in <tên tập hợp>)

{

      <Các câu lệnh thực hiện>

}

 

Do lp da trên mt mng hay tp hp nên toàn b vòng lp s duyt qua tt c các thành phn ca tp hp theo th t đưc sp. Khi duyt đến phn t cui cùng trong tp hp thì chương trình s thoát ra khi vòng lp foreach.

 

Ví dụ minh họa việc sử dụng vòng lặp foreach.

-----------------------------------------------------------------

using System;

public class UsingForeach

{

public static int Main()

{

int[] intArray = {1,2,3,4,5,6,7,8,9,10};

foreach( int item in intArray)

{

Console.Write(“{0} ”, item);

}

return 0;

}

}

------------------------------------------------------------------

Kết quả:

1 2 3 4 5 6 7 8 910

------------------------------------------------------------------

 

10. Câu lệnh nhảy break và continue

 

Khi đang thc hin các lnh trong vòng lp, có yêu cu như sau: không thc hin các lnh còn li na mà thoát khi vòng lp, hay không thc hin các công vic còn li ca vòng lp hin ti mà nhy qua vòng lp tiếp theo. Đ đáp ng yêu cu trên C# cung cp hai lnh nhy là break và continue đ thoát khi vòng lp.

Break khi đưc s dng s đưa chương trình thoát khi vòng lp và tiếp tc thc hin các lnh tiếp ngay sau vòng lp.

Continue ngng thc hin các công vic còn li ca vòng lp hin thi và quay v đu vòng lp đ thc hin bưc lp tiếp theo

Hai lnh break và continue to ra nhiu đim thoát và làm cho chương trình khó hiu cũng như là khó duy trì. Do vy phi cn trng khi s dng các lnh nhy này.

Ví d sau s đưc trình bày bên dưi minh ha cách s dng lnh continue và break. Đon chương trình mô phng h thng x lý tín hiu giao thông đơn gin. Tín hiu mô phng là các ký t ch hoa hay s đưc nhp vào t bàn phím, s dng hàm ReadLine ca lp Console đ đc mt chui ký t t bàn phím.

Thut toán ca chương trình khá đơn gin: Khi nhn tín hiu ‘0’ có nghĩa là mi vic bình thưng, không cn phi làm bt c công vic gì c, k c vic ghi li các s kin. Trong chương trình này đơn gin nên các tín hiu đưc nhp t bàn phím, còn trong ng dng tht thì tín hiu này s đưc phát sinh theo các mu tin thi gian trong cơ s d liu. Khi nhn đưc tín hiu thoát (mô phng bi ký t ‘T’) thì ghi li tình trng và kết thúc x lý. Cui cùng, bt c tín hiu nào khác s phát ra mt thông báo, có th là thông báo đến nhân viên cnh sát chng hn...Trưng hp tín hiu là ‘X’ thì cũng s phát ra mt thông báo nhưng sau vòng lp x lý cũng kết thúc.

Ví dụ: Sử dụng break continue.

------------------------------------------------------------------

using System;

public class TrafficSignal

{

public static int Main()

{

string signal = “0”; // Khởi tạo tín hiệu bắt đầu chu trình xử lý tín hiệu

while ( signal != “X”)

 

{

//nhập tín hiệu

Console.Write(“Nhap vao mot tin hieu: ”);

signal = Console.ReadLine();

// xuất tín hiệu hiện thời

Console.WriteLine(“Tin hieu nhan duoc: {0}”, signal);

//phần xử lý tín hiệu

if (signal == “T”)

{

//Tín hiệu thoát được gởi lưu lại sự kiện và thoát

Console.WriteLine(“Ngung xu ly! Thoat\n”);

break;

}

if ( signal == “0”)

{

//Tín hiệu nhận được bình thường

//Lưu lại sự kiện và tiếp tục

Console.WriteLine(“Tat ca dieu tot!\n”);

continue;

}

//Thực hiện một số hành động nào đó và tiếp tục

Console.WriteLine(“---bip bip bip\n”);

}

return 0;

}

}

---------------------------------------------------------------------

Kết quả: sau khi nhập tuần tự các tín hiệu : “0”, “B”, “T”

Nhap vao mot tin hieu: 0

Tin hieu nhan duoc: 0

Tat ca dieu tot!

Nhap vao mot tin hieu: B

Tin hieu nhan duoc: B

---bip bip bip

Nhap vao mot tin hieu: T

Tin hieu nhan duoc: T

Ngung xu ly! Thoat

------------------------------------------------------------------

 

Đim chính yếu ca đon chương trình trên là khi nhp vào tín hiu “T” thì sau khi thc hin mt s hành đng cn thiết chương trình s thoát ra khi vòng lp và không xut ra câu thông báo bip bip bip. Ngưc li khi nhn đưc tín hiu 0 thì sau khi xut thông báo chương trình s quay v đu vòng lp đ thc hin tiếp tc và cũng không xut ra câu thông báo bip bip bip.