Professional Documents
Culture Documents
HTMT Va NNC Chapter 8
HTMT Va NNC Chapter 8
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
Leänh if cho pheùp laäp trình vieân thöïc hieän moät leänh ñôn
hay moät leänh phöùc tuøy theo bieåu thöùc ñieàu kieän, neáu bieåu
thöùc coù trò khaùc 0 thì leänh ñöôïc thöïc thi.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
Daïng 1:
if (bieu_thuc)
leänh;
- bieåu_thöùc laø moät bieåu thöùc baát kyø, coù
theå coù haèng, bieán hoaëc goïi haøm trong ñoù
vaø sau cuøng laø bieåu thöùc naøy seõ coù trò 0
hoaëc 1
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
Daïng 1:
if (bieu_thuc)
leänh;
- leänh laø leänh thöïc thi cuûa if, coù theå laø
leänh ñôn, phöùc hoaëc leänh roãng.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
Daïng 2:
if (bieu_thuc)
leänh_1;
else
leänh_2;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
Ví duï: Xeùt chöông trình sau ñaây
#include <stdio.h>
#include <conio.h>
main()
{ int n;
clrscr();
printf (Moi nhap mot so: );
scanf (%d, &n);
if (n % 2 == 0)
printf ("So la so chan \n");
printf ("Moi ban nhan mot phim de ket thuc \n");
getch(); }
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
Ví duï: Xeùt chöông trình sau ñaây
#include <stdio.h>
#include <conio.h>
main()
{ int n; clrscr();
printf ("Moi nhap mot so: "); scanf ("%d", &n);
if (n % 2 == 0)
printf ("So la so chan \n"); vaãn coù daáu chaám
phaåy
else
printf ("So la so le \n");
printf ("Moi ban nhan mot phim de ket thuc \n");
getch(); }
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
if (a > 0) if (a > 0)
if (b > 0) {
c = b + a; if (b > 0)
else c = b – a;
c = b – a; }
else
c = b – a;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
8.2 LEÄNH IF
Ví duï: Chöông trình ví duï sau nhaäp vaøo moät kyù töï, kieåm
tra kyù töï ñoù laø thöôøng, hoa, kyù soá hoaëc kyù töï keát thuùc file
hay kyù töï khaùc.
#include <stdio.h>
#include <conio.h>
main()
{ char c;
clrscr();
printf ("Nhap mot ky tu: ");
c = getchar();
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
8.2 LEÄNH IF
if (c == EOF)
printf ("Da den cuoi file \n");
else if (c >= 'a' && c <= 'z')
printf ("ky tu thuong\n");
else if (c >= 'A' && c <= 'Z')
printf ("ky tu hoa\n");
else if (c >= '0' && c <= '9')
printf ("ky tu so\n");
else
printf ("ky tu khac\n");
getch();
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
switch (bieåu_thöùc) :
{ case haèng_n:
case haèng_1: leänh_n;
leänh_1; break;
break; default:
case haèng_2: leänh;
leänh_2; break;
break; }
:
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
case 3:
so += 3;
printf ("Tri la: %d\n", so);
break;
default:
printf ("Khong thoa\n");
break;
}
getch();
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Leänh break cuoái moãi case seõ chuyeån ñieàu khieån chöông
trình ra khoûi leänh switch. Neáu khoâng coù break, caùc leänh
tieáp ngay sau seõ ñöôïc thöïc thi duø caùc leänh naøy coù theå laø
cuûa moät case khaùc.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Coù theå noùi while laø leänh laëp cô baûn cuûa ngoân ngöõ laäp trình
coù caáu truùc, noù cho pheùp chuùng ta laëp laïi moät leänh hay
moät nhoùm leänh trong khi ñieàu kieän coøn ñuùng (true-töùc
khaùc 0). Cuù phaùp cuûa leänh while:
while (bieu-thuc) lenh
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
case 'P':
printf ("Ban da an mui ten
xuong\n");
break;
case 'K':
printf ("Ban da an mui ten qua
trai\n");
break;
case 'M':
printf ("Ban da an mui ten qua
phai\n");
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Chuù yù raèng moãi phím muõi teân khi ñöôïc aán ñeàu sinh ra hai
kyù töï: kyù töï ñaàu luoân laø kyù töï coù maõ ASCII laø 0 (töùc kyù töï
NUL), kyù töï thöù hai laø caùc maõ ASII töông öùng vôùi phím,
trong ví duï treân thì
+ Phím muõi teân leân coù maõ laø 0 vaø 'H'
+ Phím muõi teân xuoáng coù maõ laø 0 vaø 'P'
+ Phím muõi teân qua traùi coù maõ laø 0 vaø 'K'
+ Phím muõi teân coù maõ laø 0 vaø 'M'.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Töông töï nhö ngoân ngöõ PASCAL, trong ngoân ngöõ C cuõng
coù voøng laëp for, ñaây cuõng laø moät leänh laëp cho pheùp kieåm
tra ñieàu kieän tröôùc, gioáng nhö while. Cuù phaùp cuûa leänh for
nhö sau:
- bieåu_thöùc1 coù yù nghóa laø bieåu thöùc ñeå khôûi ñoäng trò ñaàu
cho bieán ñieàu khieån voøng for, noù coù theå laø bieåu thöùc gaùn
hay bieåu thöùc phaåy, coù theå khoâng coù.
- bieåu_thöùc2 coù yù nghóa laø bieåu thöùc cho pheùp kieåm tra
xem voøng laëp coù ñöôïc tieáp tuïc laëp nöõa hay khoâng.
- bieåu_thöùc3 laø bieåu thöùc coù yù nghóa cho pheùp thay ñoåi
bieán ñieàu khieån voøng laëp ñeå voøng laëp tieán daàn ñeán keát
thuùc. Bieåu thöùc naøy ñöôïc tính sau khi caùc leänh thöïc thi
trong thaân voøng for ñöôïc thöïc hieän xong.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Ví duï: voøng laëp for ñeå tính toång töø 1 tôùi n nhö sau
s = 0;
for (i = 1; i <= n; i++)
s += i;
Coù theå vieát ngaén goïn hôn nhö sau
for (i = 1, s = 0; i <= n; i++)
s += i;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Ví duï: Nhaäp caùc kyù töï cho ñeán khi naøo nhaän ñöôïc kyù töï
ESC coù maõ ASCII laø 27 thì keát thuùc chöông trình.
#include <stdio.h>
#include <conio.h>
#define ESC 27
main()
{ char c;
clrscr();
printf ("Cac ky tu duoc nhap la: ");
for ( ; (c = getch()) != ESC;) ; }
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Ñaây laø hai leänh nhaûy khoâng ñieàu kieän cuûa C, chuùng cho
pheùp laäp trình vieân coù theå thay ñoåi tieán trình laëp cuûa caùc
caáu truùc laëp maø ta ñaõ bieát: for, while, do-while.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
1. Leänh break
Trong caáu truùc switch-case, leänh break seõ keát thuùc leänh
switch-case; coøn trong caùc caáu truùc laëp thì leänh break cho
pheùp thoaùt sôùm ra khoûi voøng laëp (while, for hoaëc do-while)
chöùa noù maø khoâng caàn xeùt ñieàu kieän cuûa leänh keá tieáp sau
voøng laëp.
Cuù phaùp cuûa leänh break:
break;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
1. Leänh break
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
1. Leänh break
Ví duï:
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
2. Leänh continue
leänh continue coù taùc duïng chuyeån ñieàu khieån chöông trình
veà ñaàu voøng laëp chuaån bò cho chu kyø laëp môùi, boû qua caùc
leänh coøn laïi naèm ngay sau leänh noù trong chu kyø laëp hieän
haønh. Leänh naøy chæ ñöôïc duøng trong caùc voøng laëp, ñeå boû
qua caùc leänh khoâng caàn thöïc thi trong voøng laëp khi caàn
thieát.
Cuù phaùp leänh continue:
continue;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
2. Leänh continue
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
2. Leänh continue
Ví duï: Vieát chöông trình nhaäp moät daõy soá, tính toång cuûa
caùc soá döông trong daõy soá ñoù vaø thöông soá cuûa toång ñoù vôùi
töøng soá döông naøy.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
2. Leänh continue
for (i = 0; i < n; i++)
{
if (a[i] <= 0)
continue;
printf("Thuong cua tong voi so thu
%d la %5.2lf\n",i,tong/a[i]);
}
getch();
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Leänh naøy duøng ñeå thoaùt ra khoûi haøm hieän thôøi trôû veà haøm
ñaõ goïi noù, coù theå traû veà cho haøm goïi moät trò. Leänh naøy seõ
keát thuùc haøm duø noù naèm ôû ñaâu trong thaân haøm. Khi gaëp
leänh naøy C seõ khoâng thöïc hieän baát cöù leänh naøo sau leänh
return nöõa. Caùc cuù phaùp cuûa leänh return nhö sau:
return;
return (bieåu-thöùc);
return bieåu-thöùc;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Ví duï:
Thieát keá haøm traû veà keát quaû so saùnh hai soá theo quy taéc
sau ñaây:
soá ñaàu > soá sau: haøm traû veà trò 1
soá ñaàu = soá sau: haøm traû veà trò 0
soá ñaàu < soá sau: haøm traû veà trò -1
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Ví duï:
void nhan_ky_tu (void) ñònh nghóa haøm
{
while (1)
if (getche() == ESC)
return;
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Maëc duø khoâng uûng hoä cho vieäc laäp trình coù goto nhöng C
vaãn coù leänh reõ nhaùnh khoâng ñieàu kieän goto, leänh naøy cho
pheùp chuyeån ñieàu khieån chöông trình cho moät leänh naøo ñoù.
Cuù phaùp cuûa leänh goto:
goto nhaõn;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Vôùi nhaõn laø moät danh hieäu khoâng chuaån, danh hieäu naøy seõ
ñöôïc ñaët ôû tröôùc leänh maø ta muoán nhaûy ñeán theo cuù phaùp
sau:
nhan: leänh
nhaõn maø leänh goto muoán nhaûy ñeán phaûi naèm trong cuøng
moät haøm vôùi leänh goto ñoù, do ñoù trong nhöõng haøm khaùc
nhau coù theå coù caùc teân nhaõn gioáng nhau, nhöng trong cuøng
moät haøm caùc teân nhaõn naøy phaûi khaùc nhau.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Ví duï:
Caùch söû duïng leänh goto trong moät chöông trình C
main()
{
lap_lai: clrscr(); ...
if ((c = getch()) != ESC)
goto lap_lai;
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Trong C coù khaùi nieäm leänh roãng, leänh naøy chæ coù moät daáu
chaám phaåy (;), noù raát caàn thieát trong nhieàu tröôøng hôïp,
nhö ñoái vôùi caùc voøng laëp, khi ta ñaët caùc leänh bieåu thöùc
thöïc thi vaøo trong caùc bieåu thöùc cuûa leänh thì ta khoâng caàn
coù theâm leänh thöïc thi laøm thaân cho chuùng nöõa, khi ñoù neáu
ñeå troáng, C seõ hieåu nhaàm raèng leänh keá tieáp seõ laø thaân cuûa
voøng laëp, do ñoù chæ coøn caùch cho moät leänh roãng laøm thaân
cuûa chuùng.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP
Ví duï:
Voøng laëp for ñeå tính giai thöøa töø 1 tôùi n nhö sau
Ví duï:
9. Moät ngöôøi muoán gôûi moät soá tieàn vaøo ngaân haøng, haõy vieát
chöông trình tính toång soá tieàn maø ngöôøi ñoù coù ñöôïc sau khi
ñaõ gôûi ngaân haøng theo moät trong hai caùch gôûi:
- Gôûi töøng thaùng ruùt tieàn laõi
- Gôûi khoâng ruùt laõi töøng thaùng, maø nhaäp laõi vaøo voán
Thoâng soá nhaäp caàn thieát:- Soá tieàn gôûi luùc ñaàu
- Thôøi gian gôûi (theo thaùng)
- Laõi suaát/thaùng