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 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
Câu lnh if lng nhau
c lnh điu kin if có th lng nhau để phc v cho vic xcá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 3.8
sau s minh ha cho vic thc hin các yêu cu trên.
Ví d 3.8: Các lnh if lng 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: gii tính n; 1: gii 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) // phi ln hơn 19 tuoi mi được kết hôn
Console.WriteLine(“ Nam co the ket hon”);
}
else // da co gia dinh
Console.WriteLine(“ Khong the ket hon nua do 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 đú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ì chnam 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”.
Câu lnh 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 (biu thc điu kin)
{
case <giá tr>:
<Các câu lnh thc hin>
<lnh nhy>
[default:
<Các câu lnh thc hin mc đị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 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. Để d hiu hơn ta s xem xét ví d 3.9 dưới đây.
Ví d 3.9: Câu lnh 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 vang”);
case mauLuc:
Console.WriteLine( “Ban chon mau luc”);
break;
case mauLam:
Console.WriteLine( “Ban chon mau lam”);
goto case mauCham;
case mauCham: