Hướng dẫn sử dụng môi trương kết hợp Turbo C1.. Ghi File Save F2 : Ghi tệp mới đang soạn thảo vào đĩaSave as : Ghi tệp đang soạn thảo vào đĩa theo tên... Giới thiệu ngôn ngữ lập trình C
Trang 1NGÔN NG L P C Ữ Ậ
Giáo viên
V V n ũ ă Đị nh
Trang 2Bài 1: T ng quan v ngôn ng l p ổ ề ữ ậ
Bài 1: T ng quan v ngôn ng l p ổ ề ữ ậ
trình C
Ngôn ng C có m t s các đ c đi m n i b t Ngôn ng C có m t s các đ c đi m n i b t ữ ữ ộ ố ộ ố ặ ặ ể ể ổ ậ ổ ậ sau :
B l nh phù h p v i phB l nh phù h p v i phộ ệộ ệ ợợ ớớ ươương pháp l p trình c u ng pháp l p trình c u ậậ ấấtrúc
Trang 3I Hướng dẫn sử dụng môi trương kết hợp Turbo C
1. Khởi động
C1: Từ DOS [ đường dẫn ]\ TC.EXE C2: Từ Win C -> TC -> BIN -> TC.EXE C3: Start -> Run -> C:\TC\BIN\TC.EXE
1. Mở File
Mở file mới : File -> New
Mở file đã có: File -> Open
1. Ghi File
Save (F2) : Ghi tệp mới đang soạn thảo vào đĩaSave as : Ghi tệp đang soạn thảo vào đĩa theo tên
Trang 4 Thoát tạm thời về DOS : Dos Shell
Thoát hẳn khỏi C: File \ Quit ( Alt + X)
Trang 5II Giới thiệu ngôn ngữ lập trình C
Là những từ có một ý nghĩa hoàn toàn xác định
Asm, char, do, int, float, for, do, While,…
Tên
Dùng để xác định các đại lượng khác nhau trong một chương trình
Trang 62 Các kiểu dữ liệu cơ sở trong C
Kiểu số ký tự (char)
Kiểu số nguyên (int)
Kiểu dấu phẩy động (chính xác đơ
n (float), chính xác kép (double))
Kiểu void
Trang 8 Trong ngôn ng C cung c p hai ki u ký t (char) là Trong ngôn ng C cung c p hai ki u ký t (char) là ữữ ấấ ểể ựựsigned char và unsigned char
Trang 92.2 Ki u s nguyên (int) ể ố
2.2 Ki u s nguyên (int) ể ố
Ki u s nguyên trong C g m các ki u sau:ể ố ồ ể
Ki u s nguyên trong C g m các ki u sau:ể ố ồ ể
Trang 102.3 Kiểu số thực hay còn gọi là kiểu dấu phẩy động
Kiểu Phạm vi biểu diễn Số chữ số
có nghĩa
Kích thướcfloat 3.4-38E -> 3.4E+38 7-8 4 bytedouble 1.7E-308 -> 1.7E+308 15-16 8 byte
laong
double
3.4E-4932 -> 1.1E+4932 17-18 10 byte
Trang 113 H ng và bi n ằ ế
3 H ng và bi n ằ ế
3.1 H ng:ằ
3.1 H ng:ằ
Khái ni m: h ng là giá tr b t bi n trong chKhái ni m: h ng là giá tr b t bi n trong chệệ ằằ ị ấị ấ ếế ươương ng
trình không thay đ i, không bi n đ i v m t giá tr đ i, không bi n đ i v m t giá tr ổổ ếế ổ ề ặổ ề ặ ịịCác lo i h ng ạ ằ
Các lo i h ng ạ ằ đđượ ử ụượ ử ục s d ng trong C tc s d ng trong C tươương ng v i ng ng v i ứứ ớớ
Trang 12H ng sằ ố
H ng sằ ố: là các giá tr s đã xác đ nh, có th là ki u : là các giá tr s đã xác đ nh, có th là ki u ị ốị ố ịị ểể ểểnguyên hay ki u th c ể ự
nguyên hay ki u th c ể ự
H ng nguyên: Giá tr ch bao g m các ch s , d u +, H ng nguyên: Giá tr ch bao g m các ch s , d u +, ằằ ịị ỉỉ ồồ ữ ố ấữ ố ấ
- đượ ưc l u tr theo ki u int Ví d : 12,-12 ữ ể ụ
- đượ ưc l u tr theo ki u int Ví d : 12,-12 ữ ể ụ
N u giá tr vN u giá tr vếế ị ượị ượt quá mi n giá tr c a int ho c có ký t quá mi n giá tr c a int ho c có ký ềề ị ủị ủ ặặ
t l (hay L ) theo sau giá tr thì l u theo ki u long int ự ị ư ể
t l (hay L ) theo sau giá tr thì l u theo ki u long int ự ị ư ể
Ví d : 43L ho c 43l là h ng nguyên l u theo ki u ụ ặ ằ ư ể
Ví d : 43L ho c 43l là h ng nguyên l u theo ki u ụ ặ ằ ư ể
long int
H ng th c: Trong giá tr có d u ch m th p phân, H ng th c: Trong giá tr có d u ch m th p phân, ằằ ựự ịị ấấ ấấ ậậ
ho c ghi dặ ướ ại d ng s có mũ, và đố ượ ưc l u theo ki u ể
ho c ghi dặ ướ ại d ng s có mũ, và đố ượ ưc l u theo ki u ể
float, double, long double Ví d : 1.2 , 2.1E -3 (2.1E-ụ
float, double, long double Ví d : 1.2 , 2.1E -3 (2.1E-ụ
3=0.0021) ho c 3.1e-2 (3.1e-2=0.031) ặ
3=0.0021) ho c 3.1e-2 (3.1e-2=0.031) ặ
Trang 13 H ng ký t 'A' th c s H ng ký t 'A' th c s ằằ ựự ự ựự ự đ ng nghĩa v i giá tr nguyđ ng nghĩa v i giá tr nguyồồ ớớ ịị ên 65,
là giá tr trong b ng mã ASCII c a ch hoa 'A' (Nh ị ả ủ ữ ư
là giá tr trong b ng mã ASCII c a ch hoa 'A' (Nh ị ả ủ ữ ư
v y giá tr c a h ng chính là mã ASCII c a nó) Ð i v i ậ ị ủ ằ ủ ố ớ
v y giá tr c a h ng chính là mã ASCII c a nó) Ð i v i ậ ị ủ ằ ủ ố ớ
m t vài h ng ký t ộ ằ ự
m t vài h ng ký t ộ ằ ự đ c bi t, ta c n s d ng đ c bi t, ta c n s d ng ặặ ệệ ầ ử ụầ ử ụ cách vi t cách vi t ếế
thêm d u \ , nh '\t' tấ ư ương ng v i phím tab: ứ ớ
thêm d u \ , nh '\t' tấ ư ương ng v i phím tab: ứ ớ
H ng ký t có th tham gia vào phép toán nh m i s H ng ký t có th tham gia vào phép toán nh m i s ằằ ựự ểể ư ọ ốư ọ ốnguyên khác:
VD: '8' - '1'= 56-49=7
Trang 15 Ví d : "Turbo C", "Ngôn ng C++ \n\r" Ví d : "Turbo C", "Ngôn ng C++ \n\r" ụ ụ ữ ữ
M t h ng chu i M t h ng chu i ộ ằ ộ ằ ỗ ỗ đ đ ượ ư ượ ư c l u tr t n c c l u tr t n c ữ ậ ữ ậ ùng b ng m t ký t Nul ùng b ng m t ký t Nul ằ ằ ộ ộ ự ự
(\0), ví d chu i "Turbo C" ụ ỗ
(\0), ví d chu i "Turbo C" ụ ỗ đ đ ượ ư ượ ư c l u tr trong b nh nh c l u tr trong b nh nh ữ ữ ộ ớ ư ộ ớ ư
sau:
Trang 16Cách định nghĩa hằng sử dụng trong chương trình
Với các giá trị hằng thường được dùng trong một
chương trình ta nên định nghĩa ở đầu chương trình
(sau các dòng khai báo những thư viện chuẩn) theo cú pháp:
#define <tên hằng> <giá trị>
Ví dụ: #define PI 3.1415
Trang 173.2 Bi n ế
3.2 Bi n ế
- Cách khai báo: M i bi n trong chM i bi n trong chỗỗ ếế ươương trình ng trình đ u ph i đ u ph i ềề ảả
được khai báo trước khi s d ng v i cú pháp khai: ử ụ ớ
được khai báo trước khi s d ng v i cú pháp khai: ử ụ ớ
Ví d : int a,b; float x;ụ
Ví d : int a,b; float x;ụ
- Kh i Kh i ở ở đ u cho các bi n đ u cho các bi n ầ ầ ế ế
Ngay trên dòng khai báo ta có th gán cho bi n ể ế
Ngay trên dòng khai báo ta có th gán cho bi n ể ế
m t giá tr Vi c làm này g i là kh i ộ ị ệ ọ ở
m t giá tr Vi c làm này g i là kh i ộ ị ệ ọ ở đ u cho đ u cho ầ ầ
bi n.ế
bi n.ế
Trang 192. Khai báo các ki u d li u m iKhai báo các ki u d li u m iểể ữ ệữ ệ ớớ
3. Khai báo h ng, khai báo bi nKhai báo h ng, khai báo bi nằằ ếế
4. Khai báo hàm
5. ChChươương trình chínhng trình chính
Trang 201 Ch th ti n biên d ch: giúp trình biên d ch th c hi n m t Ch th ti n biên d ch: giúp trình biên d ch th c hi n m t ỉ ị ềỉ ị ề ịị ịị ựự ệệ ộộ
s công vi c trố ệ ước khi th c hi n m t s công vi c ự ệ ộ ố ệ
s công vi c trố ệ ước khi th c hi n m t s công vi c ự ệ ộ ố ệ
trước khi th c hi n biên d ch chính th c ự ệ ị ứ
trước khi th c hi n biên d ch chính th c ự ệ ị ứ
VD: #include <stdio.h>;
#include <conio.h>;
2 Khai báo ki u d li u m i: dung t khoá Khai báo ki u d li u m i: dung t khoá ểể ữ ệữ ệ ớớ ừừ typedef
VD: typedef int songuyen; typedef float mang[10];
3 Khai báo h ng và bi n: khai báo các h ng s và bi n Khai báo h ng và bi n: khai báo các h ng s và bi n ằằ ếế ằằ ốố ếế
dùng trong chương trình
dùng trong chương trình
4 Khai báo hàm: khai báo các hàm t vi tKhai báo hàm: khai báo các hàm t vi tự ếự ế
5 ChChươương trình chính: hàm main là hàm b t bu c trong ng trình chính: hàm main là hàm b t bu c trong ắắ ộộ
chương trình Hàm main có th tr v giá tr ki u ể ả ề ị ể
chương trình Hàm main có th tr v giá tr ki u ể ả ề ị ể
nguyên (int) ho c không tr v giá tr nào (void)ặ ả ề ị
nguyên (int) ho c không tr v giá tr nào (void)ặ ả ề ị
Trang 21/* Chương trình in ra dòng chữ Trung tâm đào tạo Trí Đức trên màn hình */
# include <stdio.h>
void main () /* Ham chinh */
{
printf(" \n Trung tâm đào tạo Trí Đức ");
/*xuong dong in chu Trung tâm đào tạo Trí Đức */
}
Trang 22* Chương trình tính chu vi và diện tích hình tròn, biết bán kính r
là một hằng số có giá trị =3.1 */
# include <stdio.h> /* khai báo thư viện hàm nhập xuất chuẩn */
# include <math.h> /* khai báo thư viện hàm toán học */
dt=M_PI*r*r; /* Tinh dien tich */
printf("\nChu vi = %10.2f\nDien tich = %10.2f",cv,dt);
/* In ket qua len man hinh */
getch(); /* Tam dung chuong trinh */
}
Trang 23*Chương trình này minh họa cách vừa khai báo, vừa khởi đầu một biến trong C */
#include <stdio.h>
void main()
{
char ki_tu = 'a'; /* Khai báo/khởi đầu kí tự */
int so_nguyen = 15; /* Khai báo khởi đầu số nguyên */ float so_thuc = 27.62; /* Khai báo/khởi đầu số thực/
printf("%c la mot ki tu.\n",ki_tu);
printf("%d la mot so nguyen.\n",so_nguyen);
printf("%f la mot so thuc.\n",so_thuc);
}
Trang 24Bài 2:
Biểu thức và các phép toán
I Bi u th c I Bi u th c ể ể ứ ứ
Là s k t h p các phép toán và các toán h ng đ Là s k t h p các phép toán và các toán h ng đ ự ế ợự ế ợ ạạ ểể
di n đ t m t công th c toán h c nào đó.ễ ạ ộ ứ ọ
di n đ t m t công th c toán h c nào đó.ễ ạ ộ ứ ọ
Bi u th c trong C g m có bi u th c toán h c và Bi u th c trong C g m có bi u th c toán h c và ểể ứứ ồồ ểể ứứ ọọ
Trang 25-Phép toán chia 2 s nguyên s ch t c t ph n th p ố ẽ ặ ụ ầ ậ
-Phép toán chia 2 s nguyên s ch t c t ph n th p ố ẽ ặ ụ ầ ậ
phân
Trang 26II Các phép toán
Phép toán quan hệ
>= Có lớn hơn hay bằng không? a>=b
< Có nhỏ hơn không? a<b
<= Có nhỏ hơn hay bằng không? a<=b
!= Có khác nhau không? a!=b
Các phép toán quan hệ có độ ưu tiên thấp hơn so với các phép toán số học
Trang 27 Các phép toán quan hệ có độ ưu tiên nhỏ hơn
so với ! nhưng lớn hơn so với phép && và ||
Trang 29Phép toán tăng gi m Phép toán tăng gi m ả ả
Toán t + + : dùng đ tăng giá tr c a các bi n nguyên Toán t + + : dùng đ tăng giá tr c a các bi n nguyên ửử ểể ị ủị ủ ếếhay bi n th cế ự
Khi các toán t + +, đ ng trKhi các toán t + +, đ ng trửử ứứ ướước toán h ng thì giá tr c toán h ng thì giá tr ạạ ịị
c a toán h ng đủ ạ ược tăng ho c gi m trặ ả ước khi s d ng ử ụ
c a toán h ng đủ ạ ược tăng ho c gi m trặ ả ước khi s d ng ử ụ
và ngượ ạ ếc l i n u toán t ++, đ ng sau toán h ng thì ử ứ ạ
và ngượ ạ ếc l i n u toán t ++, đ ng sau toán h ng thì ử ứ ạ
toán h ng đạ ược tăng hay gi m sau khi th c hi nả ự ệ
toán h ng đạ ược tăng hay gi m sau khi th c hi nả ự ệ
Trang 30Chuy n đ i ki u giá tr ể ổ ể ị
Chuy n đ i ki u giá tr ể ổ ể ị
Vi c chuy n đ i ki u giá tr trong C thệ ể ổ ể ị ường di n ra t ễ ự
Vi c chuy n đ i ki u giá tr trong C thệ ể ổ ể ị ường di n ra t ễ ự
đ ng trong trộ ường h p sau:ợ
đ ng trong trộ ường h p sau:ợ
Trong bi u th c có các toán h ng khác ki uTrong bi u th c có các toán h ng khác ki uểể ứứ ạạ ểể
Khi gán m t giá tr ki u này cho m t giá tr ki u khácKhi gán m t giá tr ki u này cho m t giá tr ki u khácộộ ị ểị ể ộộ ị ểị ể
Ngoài ra ta có th dùng phép chuy n ki u đ ép ki u d Ngoài ra ta có th dùng phép chuy n ki u đ ép ki u d ểể ểể ểể ểể ểể ữữ
- Khi chuy n đ i ki u t ng bi u th c thì đ i v i toán Khi chuy n đ i ki u t ng bi u th c thì đ i v i toán ểể ổổ ể ỏể ỏ ểể ứứ ố ớố ớ
h ng có ki u th p h n s đạ ể ấ ơ ẽ ược nâng thành ki u cao ể
h ng có ki u th p h n s đạ ể ấ ơ ẽ ược nâng thành ki u cao ể
h n trơ ược khi ht c hi n phép toán và k t qu thu đự ệ ế ả ược
h n trơ ược khi ht c hi n phép toán và k t qu thu đự ệ ế ả ược
s có k t qu theo ki u cao h nẽ ế ả ể ơ
s có k t qu theo ki u cao h nẽ ế ả ể ơ
Trang 31 Ki u int và ki u long thì int > longKi u int và ki u long thì int > longểể ểể
int và float thì int -> float
Float và double thì float -> double
Ki u int có th chuy n thành float và ngKi u int có th chuy n thành float và ngểể ểể ểể ượ ạượ ạc l ic l i
Trang 32I Hàm xuất nhập chuẩn trong thư viện <stdio.h>
Hàm đưa kết quả ra màn hình
Cú pháp: printf(<dòng điểu khiển>, bt1, bt2, btk);
Ý nghĩa:
bt1, btk : là k biểu thức cần in kết quả ra màn hình
<dòng điểu khiển> là một hằng xâu ký tự bao gồm 3 loại:
- Ký tự diều khiển việc xuống dòng tiếp theo ‘\n’
- Ký tự hiển thị: là ký tự được in ra màn hình
- Ký tự mô tả cách đưa ra màn hình của các biến(đặc tả
của kiểu) Mỗi biểu thức có đặc tả tương ứng
Bài 3 Các hàm vào ra dữ liệu
Trang 33 Đ c t ki u nguyên đ i v i bi u th c có giá tr ki u s Đ c t ki u nguyên đ i v i bi u th c có giá tr ki u s ặ ả ểặ ả ể ố ớố ớ ểể ứứ ị ể ốị ể ốnguyên %[n]d Trong đó
n là s nguyên xác đ nh đ r ng t i thi u dành cho ố ị ộ ộ ố ể
n là s nguyên xác đ nh đ r ng t i thi u dành cho ố ị ộ ộ ố ể
đ nh đ r ng t i thi u trên màn hình cho giá tr c a bi u ị ộ ộ ố ể ị ủ ể
đ nh đ r ng t i thi u trên màn hình cho giá tr c a bi u ị ộ ộ ố ể ị ủ ể
th c:ứ
th c:ứ
VD:
Trang 34 %c : in một ký tự có mã ASCII tương ứng
%[n]d : in một số nguyên với chiều dài tối thiểu là n
%[n]ld: in một số nguyên (long int)
%[n.m]f : in một số thực vối chiều dài n và lấy m số thập phân
%s : in ra chuỗi ký tự
Trang 35 Hàm hi n th m t xâu ký t ra màn hìnhHàm hi n th m t xâu ký t ra màn hìnhểể ị ộị ộ ựự
Cú pháp: int puts(char *s);
Ý nghĩa: Hi n th m t xâu ký t s lên màn hình, sau khi in Hi n th m t xâu ký t s lên màn hình, sau khi in ểể ị ộị ộ ựựxong thì con tr s đỏ ẽ ược chuy n xu ng dòng Trong đó s ể ố
xong thì con tr s đỏ ẽ ược chuy n xu ng dòng Trong đó s ể ố
là con tr ki u char tr t i vùng ch a xâu ký tỏ ể ỏ ớ ứ ự
là con tr ki u char tr t i vùng ch a xâu ký tỏ ể ỏ ớ ứ ự
Trang 37 Hàm nh n m t ký t t bàn phímHàm nh n m t ký t t bàn phímậậ ộộ ự ừự ừ
Cú pháp: getchar(void);
Ý nghĩa: nh n ký t đ nh n ký t đậậ ự ượự ược nh p t bàn phím c nh p t bàn phím ậ ừậ ừ
Trang 38II Hàm xu t nh p chu n trong th vi n <conio.h> ấ ậ ẩ ư ệ
II Hàm xu t nh p chu n trong th vi n <conio.h> ấ ậ ẩ ư ệ
Hàm getch() và getche
Cú pháp : int getch( void )
int getche( void )
Trang 40III.M t s hàm thao tác trên màn hình ộ ố
III.M t s hàm thao tác trên màn hình ộ ố
Hàm xóa màn hình: clrscr();
Có tác d ng xóa toàn b m àn hình và sau khi xóa con ụ ộ
Có tác d ng xóa toàn b m àn hình và sau khi xóa con ụ ộ
tr s v trí góc phía bên trái.ỏ ẽ ở ị
tr s v trí góc phía bên trái.ỏ ẽ ở ị
Hàm đ t t a đ con tr : đ t t a đ con tr : ặ ọ ộ ặ ọ ộ ỏ ỏ gotoxy(int x, int y);
Đ t con tr t i v trí x, yặ ỏ ạ ị
Đ t con tr t i v trí x, yặ ỏ ạ ị
Hàm đ t m u n n textbackground đ t m u n n textbackground ặ ầ ề ặ ầ ề
void textbackground(int color);
Đ t m u n n Đ t m u n n ặặ ầầ ềề Color là m t bi u th c nguyên có giá Color là m t bi u th c nguyên có giá ộộ ểể ứứ
tr t 0 ị ừ
tr t 0 ị ừ đ n 7 tđ n 7 tếế ươương ng v i m t trong 8 h ng s ng ng v i m t trong 8 h ng s ứứ ớớ ộộ ằằ ốố
màu đ u tiđ u tiầầ ên c a b ng m u vên c a b ng m u vủ ảủ ả ầầ ăn b n.ăn b n.ảả
Trang 42Bài 4: Cấu trúc điều khiển
Trang 43ph c n u bt nhân giá tr true thì th c hi n s, ngứ ế ị ự ệ ượ ạc l i
ph c n u bt nhân giá tr true thì th c hi n s, ngứ ế ị ự ệ ượ ạc l i
Ý nghĩa: bt là bi u th c lôgic, n u bt nh n giá tr true thì ể ứ ế ậ ị
Ý nghĩa: bt là bi u th c lôgic, n u bt nh n giá tr true thì ể ứ ế ậ ị
th c hi n s b qua s1, ngự ệ ỏ ượ ạ ếc l i n u bt nh n giá tr ậ ị
th c hi n s b qua s1, ngự ệ ỏ ượ ạ ếc l i n u bt nh n giá tr ậ ị
flase thì th c hi n s1 b qua s(s và s1 có th là l nh đ n ự ệ ỏ ể ệ ơ
flase thì th c hi n s1 b qua s(s và s1 có th là l nh đ n ự ệ ỏ ể ệ ơ
Trang 44 Chú ý : trong C cho phép s d ng các c u trúc if l ng Chú ý : trong C cho phép s d ng các c u trúc if l ng ử ụử ụ ấấ ồồ
nhau đ gi i quy t bài toánể ả ế
nhau đ gi i quy t bài toánể ả ế
Trang 45}
Trang 46Ý nghĩa:
Bt: là bi u th c toán h c có giá tr ki u nguyênBt: là bi u th c toán h c có giá tr ki u nguyênểể ứứ ọọ ị ểị ể
Ni(i=1 k): là các s ki u nguyên, ki u h ng ký t , ho c Ni(i=1 k): là các s ki u nguyên, ki u h ng ký t , ho c ố ểố ể ểể ằằ ựự ặặ
Trang 47Ho t đ ng: l nh switch ph thu c vào giá tr c a bi u ạ ộ ệ ụ ộ ị ủ ể
Ho t đ ng: l nh switch ph thu c vào giá tr c a bi u ạ ộ ệ ụ ộ ị ủ ể
th c bt vi t sau switch, n u:ứ ế ế
th c bt vi t sau switch, n u:ứ ế ế
Giá tr bt = ni thì th c hi n câu l nh sau case ni;Giá tr bt = ni thì th c hi n câu l nh sau case ni;ịị ựự ệệ ệệ
Khi giá tr bi u th c khác t t c các ni thì th c hi n Khi giá tr bi u th c khác t t c các ni thì th c hi n ị ểị ể ứứ ấ ảấ ả ựự ệệ
câu l nh sau default n u có, ho c thoát kh i câu l nh ệ ế ặ ỏ ệ
câu l nh sau default n u có, ho c thoát kh i câu l nh ệ ế ặ ỏ ệ
switch
Khi chKhi chươương trình ng trình đã th c hi n xong câu l nh c a case ã th c hi n xong câu l nh c a case ựự ệệ ệệ ủủ
ni nào đó thì nó s th c hi n luôn các l nh thu c case ì nó s th c hi n luôn các l nh thu c case ẽ ựẽ ự ệệ ệệ ộộbên dưới nó mà không xét l i ạ
bên dưới nó mà không xét l i ạ đi u ki n ( do các ni còn đi u ki n ( do các ni còn ềề ệệ
được xem nh các như
được xem nh các như ãn) Vì v y, ãn) Vì v y, ậậ đ chđ chểể ươương trng trình
thoát kh i l nh switch sau khi th c hi n xong m t ỏ ệ ự ệ ộ
thoát kh i l nh switch sau khi th c hi n xong m t ỏ ệ ự ệ ộ
trường h p, ta dùng l nh break.ợ ệ
trường h p, ta dùng l nh break.ợ ệ