Bài giảng Tin học đại cương - Bài 8: Các cấu trúc lập trình trong C - Đỗ Bá Lâm

8.1. Cấu trúc lệnh khối/lệnh ghép

• Thể hiện cấu trúc tuần tự

• Lệnh khối là dãy các câu lệnh được đặt

trong hai dấu ngoặc nhọn '{' và '}'

{

lenh_1;

lenh_2;

 .

lenh_n;

}

• C cho phép khai báo biến trong lệnh khối,

nhưng phần khai báo phải nằm trước câu

lệnh.

38.1. Cấu trúc lệnh khối (2)

• Lệnh khối lồng nhau:

– Trong một lệnh khối có thể chứa lệnh khối

khác

– Sự lồng nhau là không hạn chế

{

lenh;

{

lenh;

.

}

}

pdf 40 trang yennguyen 1500
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Bài 8: Các cấu trúc lập trình trong C - Đỗ Bá Lâm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Tin học đại cương - Bài 8: Các cấu trúc lập trình trong C - Đỗ Bá Lâm

Bài giảng Tin học đại cương - Bài 8: Các cấu trúc lập trình trong C - Đỗ Bá Lâm
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TIN HỌC ĐẠI CƯƠNG
Bài 8. Các cấu trúc lập trình trong C
Đỗ Bá Lâm
lamdb@soict.hut.edu.vn
Nội dung
8.1. Cấu trúc lệnh khối
8.2. Cấu trúc rẽ nhánh
8.2.1. Cấu trúc if, if  else
8.2.2. Cấu trúc lựa chọn switch
8.3. Cấu trúc lặp
8.3.1. Vòng lặp for
8.3.2. Vòng lặp while
8.4. Các lệnh thay đổi cấu trúc lập trình
8.4.1. continue
8.4.2. break
2
8.1. Cấu trúc lệnh khối/lệnh ghép
• Thể hiện cấu trúc tuần tự
• Lệnh khối là dãy các câu lệnh được đặt 
trong hai dấu ngoặc nhọn '{' và '}'
{
lenh_1;
lenh_2;
.
lenh_n;
}
• C cho phép khai báo biến trong lệnh khối, 
nhưng phần khai báo phải nằm trước câu 
lệnh.
3
8.1. Cấu trúc lệnh khối (2)
• Lệnh khối lồng nhau:
– Trong một lệnh khối có thể chứa lệnh khối 
khác
– Sự lồng nhau là không hạn chế
{ 
lenh;
{
lenh;
...
}
}
4
8.1. Cấu trúc lệnh khối (2)
#include 
#include 
main()
//Noi dung cua ham main() cung la mot 
khoi lenh
{
// khai bao bien
int c;
c = 10;
printf(“Gia tri cua c = %d day la c 
ngoai”,c);
5
8.1. Cấu trúc lệnh khối (2)
// bat dau mot khoi lenh khac
{
int c;
c = 10;
printf(“\n Gia tri cua c = %d day la c 
trong”,c);
printf(“\n Tang gia tri cua c them 10 
don vi”);
c = c + 10;
printf(“\n Gia tri cua c = %d day la c 
trong”,c);
}
printf(“\n Gia tri cua c = %d day la c 
ngoai”,c);
getch();
}// ket thuc khoi lenh cua ham main()
6
8.1. Cấu trúc lệnh khối (2)
• Kết quả:
Gia tri cua c = 10 day la c ngoai
Gia tri cua c = 10 day la c trong
Tang gia tri cua c them 10 don vi
Gia tri cua c = 20 day la c trong
Gia tri cua c = 10 day la c ngoai
7
Nội dung
• 8.1. Cấu trúc lệnh khối
• 8.2. Cấu trúc rẽ nhánh
– 8.2.1. Cấu trúc if, if  else
– 8.2.2. Cấu trúc lựa chọn switch
• 8.3. Cấu trúc lặp
– 8.3.1. Vòng lặp for
– 8.3.2. Vòng lặp while
• 8.4. Các lệnh thay đổi cấu trúc lập trình
– 8.4.1. continue
– 8.4.2. break
8
8.2.1. Cấu trúc if, if  else
• Cú pháp cấu trúc if
if (bieu_thuc_dieu_kien)
lenh;
• Cú pháp cấu trúc if  else
if (bieu_thuc_đieu_kien)
lenh_1;
else
lenh_2;
9
Kết hợp lệnh khối
if (bieu_thuc_dieu_kien)
{
lenh_11;
lenh_12;
}
if (bieu_thuc_đieu_kien)
{
lenh_21;
lenh_22;
}else
{
lenh_31;
lenh_32;
}
10
8.2.1. Cấu trúc if, if  else (2)
Ví dụ: Bài toán tìm số lớn nhất trong 2 số thực
a và b:
#include 
#include 
main()
{
// khai bao bien
float a, b;
float max;
printf(“ Nhap gia tri a va b: “);
scanf(“%f %f”,&a,&b);
11
8.2.1. Cấu trúc if, if  else (tiếp)
if(a<b)
max = b;
else
max = a;
printf(“\n So lon nhat trong 2 so 
%f va %f la %f“,a,b,max);
getch();
} //ket thuc ham main()
• Kết quả:
Nhap vao 2 gia tri a va b: 23 247
So lon nhat trong hai so 23.000000 va 247.000000 la 
247.000000
12
8.2.2. Cấu trúc lựa chọn switch
• Cú pháp cấu trúc switch
switch (bieu_thuc)
{
case gia_tri_1: lenh_1; [break];
case gia_tri_2: lenh_2; [break];
case gia_tri_n: lenh_n; [break];
[default: lenh_n+1; [break];]
}
13
8.2.2. Cấu trúc lựa chọn switch (2)
• Giá trị của biểu thức kiểm tra (bieu_thuc) 
phải là số nguyên:
– Phải có kiểu dữ liệu là char, int, long.
• Tương ứng các giá trị sau case (gia_tri_1, 
gia_tri_2,) cũng phải là số nguyên.
14
8.2.2. Cấu trúc lựa chọn switch (3)
• Ví dụ: Nhập vào số nguyên không âm, 
đưa ra ngày trong tuần tương ứng (theo 
số dư khi chia cho 7).
#include 
#include 
main()
{
int a;
printf(“\nNhap mot gia tri so 
nguyen khong am: “);
scanf(“%d”,&a);
15
8.2.2. Cấu trúc lựa chọn switch (4)
switch(a % 7) {
case 0: printf(“ Chu nhat”); break;
case 1: printf(“ Thu Hai”); break;
case 2: printf(“ Thu Ba”); break;
case 3: printf(“ Thu Tu”); break;
case 4: printf(“ Thu Nam”); break;
case 5: printf(“ Thu Sau”); break;
case 6: printf(“ Thu Bay”); break
}
getch();
}
16
8.2.2. Cấu trúc lựa chọn switch (5)
• Bài tập:
– Trong một năm các tháng có 30 ngày là 4, 6, 
9, 11 còn các tháng có 31 ngày là 1, 3, 5, 7, 8, 
10, 12. Riêng tháng hai có thể có 28 hoặc 29 
ngày.
– Hãy viết chương trình nhập vào 1 tháng, sau 
đó đưa ra kết luận tháng đó có bao nhiêu 
ngày.
17
8.2.2. Cấu trúc lựa chọn switch (6)
#include 
#include 
main () 
{
int thang; 
printf("\n Nhap vao thang trong nam "); 
scanf("%d",&thang); 
switch(thang) 
{ 
case 1: 
case 3:
case 5: 
case 7: 
case 8: 
case 10: 
case 12: 
printf("\n Thang %d co 31 ngay ",thang); 
break; 18
8.2.2. Cấu trúc lựa chọn switch (7)
case 4: 
case 6: 
case 9: 
case 11: 
printf("\n Thang %d co 30 ngay ",thang); 
break;
case 2: 
printf ("\ Thang 2 co 28 hoac 29 ngay"); 
break; 
default : 
printf("\n Khong co thang %d", thang); 
break; 
} 
getch(); 
} 
19
Nội dung
• 8.1. Cấu trúc lệnh khối
• 8.2. Cấu trúc rẽ nhánh
– 8.2.1. Cấu trúc if, if  else
– 8.2.2. Cấu trúc lựa chọn switch
• 8.3. Cấu trúc lặp
– 8.3.1. Vòng lặp for
– 8.3.2. Vòng lặp while
• 8.4. Các lệnh thay đổi cấu trúc lập trình
– 8.4.1. continue
– 8.4.2. break
20
8.3.1. Vòng lặp for
• Thường dùng để thực hiện lặp đi lặp lại một công 
việc nào đó với số lần lặp xác định.
• Cú pháp:
for([bieu_thuc_1];[bieu_thuc_2];[bieu_thuc_3])
lenh;
• Trong đó:
– bieu_thuc_1: Khởi tạo giá trị ban đầu cho vòng lặp
– bieu_thuc_2: Điều kiện tiếp tục vòng lặp
– bieu_thuc_3: Thực hiện bước tăng của vòng lặp
– Chú ý các biểu thức 1, 2, 3 có thể có hoặc không
21
8.3.1. Vòng lặp for (2)
• Ví dụ: Đưa ra màn hình các số nguyên lẻ nhỏ hơn 
100
#include 
#include 
main()
{
int i;
for(i = 1;i<100;i++)
{
if(i%2 == 1) printf(“%5d”,i);
if((i+1)%20 ==0) printf(“\n”);
}
getch();
}
22
8.3.1. Vòng lặp for (3)
• Ví dụ: Đưa ra màn hình các số nguyên lẻ nhỏ hơn 
100
#include 
#include 
main()
{
int i;
for(i = 1;i<100;i+=2)
{
printf(“%5d”,i);
if((i+1)%20 ==0) printf(“\n”);
}
getch();
} 
23
8.3.1. Vòng lặp for (4)
• Kết quả thực hiện
1 3 5 7 9 11 13 15 17 19
21 23 25 27 29 31 33 35 37 39
41 43 45 47 49 51 53 55 57 59
61 63 65 67 69 71 73 75 77 79
81 83 85 87 89 91 93 95 97 99
24
8.3.2. Vòng lặp while
• Thường dùng để thực hiện lặp đi lặp lại một 
công việc nào đó với số lần lặp không xác định.
• Cú pháp: Có 2 dạng:
while (bieu_thuc)
{
lenh;
}
hoặc 
do
{
lenh;
} while (bieu_thuc);
25
8.3.2. Vòng lặp while (2)
• while và do{} while:
– while:
• Kiểm tra điều kiện vòng lặp (tức là giá trị của biểu 
thức) trước rồi mới thực hiện lệnh.
• Các lenh sau while có thể không được thực hiện 
lần nào.
– do{} while:
• Thực hiện lenh trước rồi mới kiểm tra dieu_kien
của vòng lặp.
• Các lenh sau while được thực hiện ít nhất 1 lần 
dù bieu_thuc có giá trị như thế nào.
26
8.3.2. Vòng lặp while (3)
• Ví dụ: Nhập vào điểm của một sinh viên, 
nếu điểm đó không [0, 10] thì thông báo 
cho người dùng nhập lại.
• Cách làm:
– Nếu dùng lệnh if→ Chỉ kiểm tra được 1 lần
– Không nên dùng for vì chưa biết trước số 
lần lặp.
→ Sử dụng vòng lặp while
27
8.3.2. Vòng lặp while (4)
#include 
#include 
main()
{
float diem; clrscr();
printf(“Chuong trinh nhap diem sinh vien\n");
printf("Nhap diem (0<=diem<=10):"); 
scanf("%f",&diem);
while (diem 10)
{
printf("\nBan nhap khong dung!\n");
printf("Ban hay nhap lai (0<=diem<=10):");
scanf("%f",&diem);
}
printf("\nDiem ban vua nhap la: %.2f“, diem);
getch();
}
28
8.3.2. Vòng lặp while (5)
29
8.3.2. Vòng lặp while (5)
#include 
main()
{
float diem; clrscr();
printf(“Chuong trinh nhap diem sinh vien\n");
do
{
printf("Nhap diem (0<=diem<=10):"); 
scanf("%f",&diem);
if (diem 10)
printf("\nBan nhap khong dung!\n");
}
while (diem 10);
printf("\nDiem ban vua nhap la: %.2f“, diem);
getch();
}
30
Sửa bài xác định ngày trong tháng
#include 
#include 
main () 
{
int thang; clrscr();
do { 
printf("\n Nhap vao thang trong nam "); 
scanf("%d",&thang); 
}
while(thang 12);
switch(thang) 
{ 
case 2: 
printf ("\ Thang 2 co 28 hoac 29 ngay"); 
break;
31
Sửa bài xác định ngày trong tháng (2)
case 4: 
case 6: 
case 9: 
case 11: 
printf("\n Thang %d co 30 ngay ",thang); 
break;
default : 
printf("\n Thang %d co 31 ngay ", thang); 
break; 
} 
getch(); 
} 
32
Nội dung
• 8.1. Cấu trúc lệnh khối
• 8.2. Cấu trúc rẽ nhánh
– 8.2.1. Cấu trúc if, if  else
– 8.2.2. Cấu trúc lựa chọn switch
• 8.3. Cấu trúc lặp
– 8.3.1. Vòng lặp for
– 8.3.2. Vòng lặp while
• 8.4. Các lệnh thay đổi cấu trúc lập trình
– 8.4.1. continue
– 8.4.2. break
33
8.4. Các lệnh thay đổi cấu trúc lập trình
• Đối với các lệnh lặp:
– while, do{...} while, hoặc for
• Thay đổi việc thực hiện lệnh trong vòng 
lặp → C cung cấp 2 lệnh:
– continue;
– break;
34
8.4. Các lệnh thay đổi cấu trúc lập trình
• continue
– Bỏ qua việc thực hiện các câu lệnh nằm sau 
lệnh continue trong thân vòng lặp.
– Chuyển sang thực hiện một vòng lặp mới
• break
– Thoát khỏi vòng lặp ngay cả khi biểu thức 
điều kiện của vòng lặp vẫn còn được thỏa 
mãn.
35
8.4. Các lệnh thay đổi cấu trúc lập trình
• Ví dụ:
#include 
#include 
main()
{
int i;
for(i = 1;i<=10;i++)
{
if(i == 5) continue;
printf(“%5d”,i);
if(i==7) break;
}
getch();
}
36
8.4. Các lệnh thay đổi cấu trúc lập trình
• Ví dụ: Nhập vào 1 số nguyên. Kết luận số 
đó là số nguyên tố hay là hợp số?
37
#include 
#include 
main()
{
int N, i, flag = 1;
printf("\nNhap gia tri N : "); scanf("%d", &N);
if (n<2) printf("\nSo %d khong la so nguyen to va 
khong la hop so.", N);
else
{
for (i=2; i<N; i++)
if (N%i == 0)
{
flag = 0;
break;
}
if (flag)
printf("\nSo %d la so nguyen to.", N);
else
printf("\nSo %d la hop so.", N);
}
getch();
} 38
#include 
#include 
main()
{
int N, i, flag = 1;
printf("\nNhap gia tri N : "); scanf("%d", &N);
if (n<2) printf("\nSo %d khong la so nguyen to va 
khong la hop so.", N);
else
{
for (i=2; i<=(int)sqrt(N); i++)
if (N%i == 0)
{
flag = 0;
break;
}
if (flag)
printf("\nSo %d la so nguyen to.", N);
else
printf("\nSo %d la hop so.", N);
}
getch();
}
39
Câu hỏi ?
40

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_8_cac_cau_truc_lap_trinh_tro.pdf