You are on page 1of 73

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

8.1 Leänh ñôn vaø leänh phöùc 8.9 Leänh GOTO


8.2 Leänh IF 8.10 Leänh ROÃNG
8.3 Leänh SWITCH-CASE Baøi taäp cuoái chöông
8.4 Leänh WHILE
8.5 Leänh DO-WHILE
8.6 Leänh FOR
8.7 Leänh BREAK vaø leänh
CONTINUE
8.8 Leänh RETURN
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.1 LEÄNH ÑÔN VAØ LEÄNH PHÖÙC


(SIMPLE STATEMENT VAØ COMPOUND
STATEMENT)
- Leänh ñôn laø moät bieåu thöùc thuoäc loaïi baát kyø theo sau noù
laø moät daáu chaám phaåy (;), do ñoù leänh ñôn coøn ñöôïc goïi laø
leänh bieåu thöùc.
Ví duï: Caùc leänh sau ñaây laø caùc leänh ñôn
a = a + 1;
b >>= 3;
printf (...);
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.1 LEÄNH ÑÔN VAØ LEÄNH PHÖÙC


(SIMPLE STATEMENT VAØ COMPOUND
STATEMENT)
-Leänh phöùc bao haøm moät hay nhieàu leänh ñôn ñöôïc bao beân
trong caëp daáu ngoaëc nhoïn ({ }) vaø ñöôïc boä dòch C xem nhö
laø moät leänh ñôn.
Ví duï: Xeùt leänh if sau
if (a > 0)
{
i += 2; 

a++;   leänh phöùc, ñöôïc xem laø moät leänh
n = a * i;

}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.1 LEÄNH ÑÔN VAØ LEÄNH PHÖÙC


(SIMPLE STATEMENT VAØ COMPOUND
STATEMENT)
Caùc leänh ñieàu khieån naøy coù theå ñöôïc chia ra laøm hai
nhoùm:
- Nhoùm leänh lieân quan ñeán vieäc reõ nhaùnh chöông trình: if-
else, switch-case, goto,...
- Nhoùm leänh laëp: while, for, do_while
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

Ví duï: Xeùt chöông trình sau ñaây

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

if (bieåu_thöùc_1) Khi thöïc hieän leänh if_else loàng


lenh_1; nhau nhö theá naøy caùc bieåu thöùc
else if (bieåu_thöùc_2) seõ ñöôïc tính laàn löôït töø treân
lenh_2; xuoáng döôùi neáu coù bieåu thöùc
else if (bieåu_thöùc_3) naøo khaùc 0, leänh töông öùng vôùi
lenh_3; if ñoù seõ ñöôïc thi haønh vaø toaøn
...... boä phaàn coøn laïi cuûa leänh if-else
else ñöôïc boû qua.
lenh_n;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

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

8.3 LEÄNH SWITCH-CASE

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

8.3 LEÄNH SWITCH-CASE


CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.3 LEÄNH SWITCH-CASE


Ví duï: Vieát chöông trình nhaäp moät trò, neáu trò ñoù chia heát
cho 5 thì coäng theâm 5 vaøo cho soá ñoù, neáu trò ñoù chia cho 5
dö 1 thì coäng theâm 1, töông töï cho 3, neáu laø soá khaùc thì
baùo khoâng thoûa.
#include <stdio.h>
#include <conio.h>
main()
{ int so;
clrscr();
printf ("Nhap mot so: ");
scanf ("%d", &so);
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.3 LEÄNH SWITCH-CASE


switch (so % 5)
{
case 0:
so += 5;
printf ("Tri la: %d\n", so);
break;
case 1:
so += 1;
printf ("Tri la: %d\n", so);
break;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.3 LEÄNH SWITCH-CASE

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

8.3 LEÄNH SWITCH-CASE

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

8.3 LEÄNH SWITCH-CASE


Ví duï: Xeùt ví duï nhaäp thaùng vaø naêm, kieåm tra soá ngaøy
trong thaùng.
switch (thang)
{
case 4:
case 6:
case 9:
case 11:
so_ngay = 30;
break;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.3 LEÄNH SWITCH-CASE


case 2:
if (nam % 4 == 0)
so_ngay = 29;
else
so_ngay = 28;
break;
default:
so_ngay = 31;
break; }
printf("Thang %d nam %d co %d ngay\n", thang, nam,
so_ngay);
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.4 LEÄNH WHILE

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

8.4 LEÄNH WHILE


CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.4 LEÄNH WHILE


Ví duï: Chöông trình sau ñaây seõ in ra maøn hình 10 soá
ngaãu nhieân töø 0 ñeán 99.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>>
#include <time.h>
main()
{ int i = 1;
clrscr();
randomize();
printf ("So ngau nhien trong khoang 0-
99 la: ");
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.4 LEÄNH WHILE

while (i <= 10)


{
printf ("%d", random(100));
i++;
}
getch();
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.4 LEÄNH WHILE


Caùch khaùc:
int i = 10;
clrscr();
randomize();
printf ("So ngau nhien trong khoang 0-99 la: ");
while (i)
{
printf ("%d", random(100));
--i;
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.4 LEÄNH WHILE


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: ");
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.4 LEÄNH WHILE


while (1)
{
c = getche();
if (c == ESC)
break;
}
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.4 LEÄNH WHILE


#include <stdio.h>
#include <conio.h>
#define ESC 27 main()
{
char c;
clrscr();
printf ("Cac ky tu duoc nhap la: ");
while (getche() - ESC)
; leänh thöïc thi roãng

}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.5 LEÄNH DO-WHILE


Neáu leänh while cho pheùp kieåm tra ñieàu kieän tröôùc roài thöïc
thi leänh sau, nhö vaäy ngay töø ñaàu maø ñieàu kieän ñaõ sai thì
leänh cuûa while khoâng ñöôïc thöïc thi, thì leänh laëp do-while
laïi thöïc thi leänh tröôùc roài môùi kieåm tra ñieàu kieän sau.
Cuù phaùp cuûa leänh do-while nhö sau:
do
lenh
while (bieåu_thöùc);
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.5 LEÄNH DO-WHILE


CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.5 LEÄNH DO-WHILE


Ví duï: Vieát chöông trình cho pheùp kieåm tra vaø in ra phím
muõi teân ñaõ ñöôïc nhaán.
#include <stdio.h>
#include <conio.h>
#define ESC 27
main()
{
char c;
clrscr();
printf ("\n Moi an cac phim mui ten \n");
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.5 LEÄNH DO-WHILE


do
{
c = getch();
if (c == 0)
{
c = getch();
switch(c)
{
case 'H':
printf ("Ban da an mui ten
len\n");
break;
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.5 LEÄNH DO-WHILE

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

8.5 LEÄNH DO-WHILE


break;
} /* end switch */
}
}while (c != 27);
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.5 LEÄNH DO-WHILE

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

8.6 LEÄNH FOR

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:

for (bieåu_thöùc1; bieåu_thöùc2; bieåu_thöùc3)


leänh
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.6 LEÄNH FOR

- 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

8.6 LEÄNH FOR


CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.6 LEÄNH FOR

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

8.6 LEÄNH FOR

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

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE

Ñ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

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE

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

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE

1. Leänh break
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE

1. Leänh break
Ví duï:
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE


1. Leänh break
Ví duï:
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE

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

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE

2. Leänh continue
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE


2. Leänh continue
Ví duï:
i = 0;
while (i <= 10)
{
i ++;
if (i >= 6 && i <= 8)
continue;
printf ("Trò hieän thôøi cuûa i laø %d\n", i);
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE

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

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE


2. Leänh continue
#include <stdio.h>
#include <conio.h>
main()
{
double a[100];
double tong;
int i, n;
clrscr();
printf ("Co bao nhieu so can tinh: ");
scanf ("%d", &n);
printf ("Nhap cac so can tinh tong: ");
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE


2. Leänh continue
for (i = 0; i < n; i++)
scanf ("%lf", &a[i]);
for (i = 0, tong = 0; i < n; i++)
{
if (a[i] <= 0)
continue;
tong += a[i];
}
printf ("Tong cua cac so duong la %.2lf\n",
tong);
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.7 LEÄNH BREAK VAØ LEÄNH CONTINUE

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

2.8 LEÄNH RETURN

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

8.8 LEÄNH RETURN

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

8.8 LEÄNH RETURN


Ví duï:
int so_sanh (int a, int b)
{
if (a > b)/* Leänh return keát thuùc haøm, traû veà trò i
cho */
return 1; /* nôi ñaõ goïi haøm */
else if (a == b)
return 0; /* Traû veà trò 0 cho nôi goïi haøm khi a
= b */
else /* a < b */
return -1; /* Traû veà trò -1 cho nôi goïi haøm khi
a < b */
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.8 LEÄNH RETURN


Ví duï:
int so_sanh (int a, int b)
{
if (a > b) /* Leänh return keát thuùc haøm, traû veà trò
1 cho */
return 1; /* nôi ñaõ goïi haøm */
else if (a == b)
return 0; /* Traû veà trò 0 cho nôi goïi haøm khi
a = b */
return -1; /* Traû veà trò -1 cho nôi goïi haøm khi a
< b */
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.8 LEÄNH RETURN


Ví duï:

int so_sanh (int a, int b)


{
return (a > b) ? 1 : (a == b) ? 0 : -1;
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.8 LEÄNH RETURN


Ví duï:
Chöông trình sau duøng leänh return ñeå keát thuùc voøng laëp
laëp voâ taän khi ñieàu kieän thoûa (laø phím ESC ñöôïc nhaán).
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.8 LEÄNH RETURN


Ví duï:
#include <stdio.h>
#include <conio.h>
#define ESC '\x1b'
void nhan_ky_tu (void);  prototype cuûa haøm
main()
{
char c;
clrscr();
printf ("Moi ban nhap cac ky tu: ");
nhan_ky_tu ();  goïi haøm
}
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.8 LEÄNH RETURN

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

8.9 LEÄNH GOTO

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

8.9 LEÄNH GOTO

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

8.9 LEÄNH GOTO

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

8.10 LEÄNH ROÃNG

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

8.10 LEÄNH ROÃNG

Ví duï:
Voøng laëp for ñeå tính giai thöøa töø 1 tôùi n nhö sau

for (i = gt = 1; i <= n; gt *= i++)


;
printf ("Giai thua %d! = %d\n", n, gt);
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

8.10 LEÄNH ROÃNG

Ví duï:

for (i =1,s = 0; i < 10; i++) ; s += i;


printf("Tong la %d \n",s);
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

BAØI TAÄP CUOÁI CHÖÔNG

1. Vieát moät chöông trình nhaäp 4 soá vaø in ra


a) soá lôùn nhaát trong 4 soá ñoù
b) soá nhoû nhaát trong 4 soá ñoù
2. Vieát chöông trình tìm soá nguyeân toá töø 1 tôùi 100
3. Nhaäp moät soá nguyeân töø baøn phím, in ra maøn hình theo
thöù töï ngöôïc laïi.
Ví duï nhaäp: 54321
xuaát: 12345
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

BAØI TAÄP CUOÁI CHÖÔNG

4. In ra maøn hình baûn cöûu chöông caàn bieát.


5. In ra maøn hình caùc baûn cöûu chöông töø 2 ñeán 9.
6. Veõ ra maøn hình hình sau:
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

BAØI TAÄP CUOÁI CHÖÔNG

7. Tính bieåu thöùc sau ñaây


a) T =1! + 2! +...+n! thoâng soá nhaäp laø n

b) T  1! (1  2)! ...  (1  ...  n)! thoâng soá nhaäp laø n


n!
c) e1 e2 en thoâng soá nhaäp laø n
T    ... 
1! 2! n!
Bieát trong C coù haøm exp(x) ñeå tính , prototype haøm naøy
naèm trong file math.h.
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

BAØI TAÄP CUOÁI CHÖÔNG

8. Tính bieåu thöùc sau:


1 1 1 1
s  1     ...   2 (1)
2 4 8 n
Haõy vieát chöông trình nhaäp moät soá a thoûa:
1 < a < 2, sau ñoù tìm soá n thoûa ñieàu kieän (1):
s<a
CHÖÔNG 8
CAÙC LEÄNH ÑIEÀU KHIEÅN VAØ VOØNG LAËP

BAØI TAÄP CUOÁI CHÖÔNG

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

You might also like