You are on page 1of 36

www.uit.edu.

vn

NHẬP MÔN LẬP TRÌNH

CÁC CẤU TRÚC LỆNH TRONG C

Mai Xuân Hùng – hungmx@uit.edu.vn 1


CÁC CÂU LỆNH TRÊN C

1. Lệnh if
2. Lệnh switch
3. Lệnh for
4. Lệnh while
5. Lệnh do … while
6. Lệnh goto, break, continue, return

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 2


CÂU LỆNH, KHỐI LỆNH

• KHÁI NIỆM VỀ CÂU LỆNH


Mỗi câu lệnh thực hiện một chức năng nào đó (như
lệnh gán, lệnh xuất dữ liệu ra màn hình), câu lệnh
có thể được viết trên một hoặc nhiều dòng và được
kết thúc bằng dấu chấm phẩy (;)

Ví dụ:
cv=2*r*M_PI;
printf("\nChu vi = %10.2f \
\nDien tich =
%10.2f",cv,dt);
Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 3
CÂU LỆNH, KHỐI LỆNH
• KHÁI NIỆM VỀ KHỐI LỆNH
Một dãy các câu lệnh được đặt trong một
cặp dấu { và } được gọi là một khối lệnh.
Ví dụ:
{
float cv,dt;
cv=2*r*M_PI;
dt=M_PI*r*r;
printf("\nChu vi = %10.2f \
\nDien tich = %10.2f”, cv, dt);
getch(); // chờ nhấn phím
}

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 4


CÂU LỆNH if

• CÚ PHÁP KHAI BÁO LỆNH IF


• Dạng 1 (if đơn):
if (biểu thức ĐK)
<khối lệnh>;
• Dạng 2:
if (biểu thức ĐK)
<khối lệnh 1>;
else
<khối lệnh 2>;

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 5


CÂU LỆNH if
• VÍ DỤ MINH HỌA
Cho 3 số nguyên a, b và c, xuất giá trị 3 số
đó ra màn hình theo thứ tự tăng dần.
max = a; min = b;
if (a<b)
{
max = b;
min = a;
}
if (c>max) max = c;
else if (c<min) min = c;
mid = (a+b+c) - (max + min);
printf(“%d %d %d”, min, mid, max);
Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 6
ví dụ
• Viết công thức trình tính tiền điện, theo công thức sau:
• (0,100]: 1000/kw
• (100,200]: 1500kw
• (200, trở về sau]: 2500/kw
• nhập số kw xài, tinh tiền phải trả
• Ví dụ: Nhập 120kww, thì tiền cần trả là 1000*100+2*1500 =
103000 đồng

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 7


• If(dk1)
•{
• câu lệnh 1;
• if(dk2)
• câu lệnh 2;
•}
• Else
• câu lệnh 3

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 8


• If(đk1 đung)\
•{
• Khối lệnh 1;
•}
• Else
•{
• khối lệnh 2;
•}

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 9


Ví dụ
• Giải biện luận phương trình bậc 1 có dạng bx+c=0
• Giải biện luận phương trình bậc 2 có dạng ax2 +
bx+c=0
• Giải biện luận phương trình trùng phương
• Giải biện luận hệ phương trình
• a1x+b1y+ c1=0
• a2x+b2y+ c2=0

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 10


LỆNH switch
• CÚ PHÁP KHAI BÁO LỆNH switch

switch (Biểu thức)


{
case n1:các câu lệnh 1; break;
case n2:các câu lệnh 2; break;
....
case nk: các câu lệnh k; break;
default: các câu lệnh con lai;
break;
} Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 11
LỆNH switch

 Giá trị “biểu thức” phải trả về kết quả là


1 số nguyên (int, char)
 ni: các hằng số nguyên hoặc ký tự.
 Nếu giá trị của biểu thức = ni thì thực
hiện câu lệnh sau case ni.
 Nếu giá trị biểu thức khác tất cả các
giá trị ni  thực hiện câu lệnh sau
default nếu có hoặc thoát khỏi switch.
Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 12
LỆNH switch

 Khi chương trình đã thực hiện xong câu


lệnh của case ni nào đó mà không có câu
lệnh break thì nó sẽ thực hiện luôn các
câu lệnh thuộc case bên dưới nó mà
không xét lại điều kiện (do các ni được
xem như các nhãn).
 Do đó để chương trình 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.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 13


LỆNH switch
• VÍ DỤ MINH HỌA
In ra màn hình học lực của học sinh theo thang điểm
như sau: Từ 0 -> 3: Kém, 4: Yếu, 5-> 6: Trung bình, 7
-> 8: Khá, 9 -> 10: Giỏi.
switch(diem)
{
case 0: case 1: case 2: case 3:
printf(“Kem\n”); break;
case 4: printf(“Yeu\n”); break;
case 5: case 6:
printf(“Trung binh\n”); break;
case 7: case 8: printf(“Kha\n”);
break;
case 9: case 10:
printf(“Gioi\n”); break;
default: printf(“Nhap diem sai\n”);
} // Kết thúc switch

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 14


LỆNH for
• CÚ PHÁP KHAI BÁO LỆNH FOR
for (biểuthức1;biểuthức2;biểuthức3)
<Khối lệnh>;
Hoạt động:
1. Tính giá trị của <biểuthức1>
2. Tính giá trị của <biểuthức2>
3. Nếu giá trị <biểuthức2> khác 0
 thực hiện <khối lệnh>
Ngược lại
 thoát khỏi lệnh for
4. Tính giá trị <biểuthức3> rồi lặp lại bước 2
Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 15
LỆNH for
• VÍ DỤ MINH HỌA
#include <stdio.h>

#include <conio.h>
void main()
{
int n, i;
printf(“Nhap gia tri n: ”);
scanf(“%d”, &n);
printf(“Cac uoc so cua %d la: ”, n);
for (i =1; i <= n; i++)
if ( !n%i ) // !n%i  n%i=0
printf(“%3d”, i );
getch();
}
Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 16
LỆNH while

• CÚ PHÁP KHAI BÁO LỆNH WHILE


while (biểu thức điều kiện)
<khối lệnh>;
Ý nghĩa:
Nếu giá trị của biểu thức còn khác 0
(còn đúng) thì còn thực hiện <khối
lệnh>.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 17


LỆNH while

• VÍ DỤ MINH HỌA

In ra màn hình tất cả các ước số của n:

i = n;
while (i) // i ! = 0
{
if ( !n%i ) // n%i = 0
printf(“%3d”, i );
i--;
}

Vòng lặp while sẽ thực hiện đến khi i = 0


thì dừng.Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 18
LỆNH do … while

• CÚ PHÁP KHAI BÁO LỆNH DO…WHILE


do
{
<khối lệnh>;
}while(biểu thức điều kiện);

Ý nghĩa:
Thực hiện <khối lệnh> cho đến khi giá trị
của biểu thức bằng 0 (sai) thì dừng.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 19


LỆNH do … while

• VÍ DỤ MINH HỌA
Viết đoạn chương trình nhập giá trị của x nằm
trong khoảng từ 1->6:
int x;
do
{
printf(“Nhap gia tri cua
x:”);
scanf(“%d”, &x);
} while (x<1 || x>6);
 Nhập giá trị của x, nếu x<1 hoặc x>6 thì yêu cầu nhập lại.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 20


MỘT SỐ CÂU LỆNH KHÁC

• LỆNH goto
 Cú pháp khai báo
goto nhãn;
 Khi gặp lệnh goto máy sẽ nhảy tới thực hiện
câu lệnh viết sau nhãn.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 21


MỘT SỐ CÂU LỆNH KHÁC
• VÍ DỤ MINH HỌA LỆNH GOTO
Nếu mã của phím nhấn vào != ESC thì thực hiện
lại chương trình kể từ câu lệnh clrscr().
void main(){
… // Khai báo biến
tt:
clrscr();
… // Các câu lệnh
printf(“\nNhan ESC \
de ket thuc chuong trinh...”);
if (getch() != 27)
// getch(): chờ nhấn phím bất kỳ
goto tt;
}

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 22


MỘT SỐ CÂU LỆNH KHÁC

• LỆNH break

 Lệnh break chỉ được khai báo bên trong các câu
lệnh vòng lặp for, while, do…while hoặc switch.

 Khi gặp câu lệnh break máy sẽ thoát khỏi vòng lặp
trong cùng chứa nó.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 23


MỘT SỐ CÂU LỆNH KHÁC

• VÍ DỤ MINH HỌA LỆNH break


Viết đoạn chương trình kiểm tra n có phải
là số nguyên tố không?
int i, t;
t = sqrt(n);
i = 2;
while ( i<=t )
if (n%i == 0)
break; // kết thúc vòng
lặp
else i++;
if (i>t)
printf(“%d là SNT”, n);
else
printf(“%d khong la SNT”, n);
Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 24
MỘT SỐ CÂU LỆNH KHÁC

• LỆNH continue
 Lệnh continue chỉ được khai báo bên trong các
vòng lặp for, while hoặc do…while
 Khi gặp câu lệnh continue máy sẽ bỏ qua các câu
lệnh còn lại trong thân vòng lặp để bắt đầu một
lần lặp mới.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 25


MỘT SỐ CÂU LỆNH KHÁC
• VÍ DỤ MINH HỌA LỆNH CONTINUE

int code;
while (1) // vòng lặp vô hạn
{
printf(“Hay cho biet mat ma: ”);
scanf(“%d”, &code);
if (code != 999)
continue;
break;
// đã nhập đúng, kết thúc vòng lặp
}

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 26


MỘT SỐ CÂU LỆNH KHÁC

• LỆNH return
Khi gặp lệnh return máy sẽ kết thúc
hàm chứa nó.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 27


MỘT SỐ CÂU LỆNH KHÁC
• VÍ DỤ MINH HỌA LỆNH return
void main()
{ …
int code;
while(1)
{
printf(“Hay cho biet mat ma: ”);
scanf(“%d”, &code);
if (code == 0) return;
if (code != 999) continue;
break; // nhập đúng, kthúc vòng lặp
}

}
Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 28
Các bài tập cơ bản
1. Tìm ước số chung lớn nhất của 2 số nguyên dương a,b (a,b nhập từ
bàn phím)
2. Tìm bội số chung nhỏ nhất của 2 số nguyên dương a,b (a, b nhập từ
bàn phím)
3. Kiểm tra 1 số có phải là số nguyên tố hay không?
• Số nguyên tố là số chỉ có 2 ước số là số 1 và chính nó
4. Đơn giản 1 phân số
5. Cộng trừ nhân chia 2 phân số

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 29


Các bài tập cơ bản (tt)
6. Nhập vào 1 số và phân tích ra dạng tổng như ví dụ sau:
• Nhập vào 234
• Phân tích thành 2 * 100 + 3 * 10 + 4 * 1
7. Nhập vào 1 số nguyên dương, trong đó các số hạng chỉ có giá trị
hoặc 0, hoặc 1. Phân tích ra dạng tổng như sau:
Nhập:1101
Xuất: 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 or 1 + 0 + 4 + 8, hoặc 13.

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 30


Các bài tập cơ bản (tt)
8. Nhập vào số nguyên n tính và in ra n!
9. Nhập vào epsilon tính và in ra giá trị e
1 1 1
e  1   
1! 2! 3!

10. Nhập x tính ex


2 3
x x x
1   
1! 2! 3!

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 31


Các bài tập cơ bản (tt)
• Tìm lỗi của đoạn chương trình sau:
for ( x = 100, x >= 1, x++ ) printf(”%d\n”,x);
• Cho biết kết xuất của đoạn chương trình sau:
value=2;
switch ( value % 2 )
{
case 0: printf("Even integer\n");
case 1: printf("Odd integer");
}

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 32


Các bài tập cơ bản (tt)
• Sửa đoạn lệnh sau để in ra các số 19..1
for( x = 19; x >= 1; x += 2 ) printf(“%d\n”,x);
• Sửa đoạn lệnh sau để in ra các số chẵn từ 2 -> 100:

counter = 2;
do{
printf(“%d\n”,counter);
counter += 2;
} while( counter < 100 );

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 33


Các bài tập cơ bản (tt)
• Viết chương trình nhập vào chiều cao h và in ra các
hình sau

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 34


Các bài tập cơ bản (tt)
• Viết chương trình xuất ra hình sau

Nhập chiều cao h

Mai Xuân Hùng (hungmx@uit.edu.vn) - Trường Đại Học CNTT 35


www.uit.edu.vn

Mai Xuân Hùng – hungmx@uit.edu.vn 36

You might also like