Giáo trình Lập trình bằng ngôn ngữ C - Chương 3: Các cấu trúc lập trình trong ngôn ngữ C - Ngô Văn Linh
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.
49 trang |
Chia sẻ: huongthu9 | Lượt xem: 700 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Lập trình bằng ngôn ngữ C - Chương 3: Các cấu trúc lập trình trong ngôn ngữ C - Ngô Văn Linh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Chương 3:
Các cấu trúc lập trình trong
ngôn ngữ C
Ngô Văn Linh
Bộ môn Hệ thống thông tin
Viện Công nghệ thông tin và Truyền thông
Đại học Bách Khoa Hà Nội
2Nội dung chương này
3.1. Cấu trúc lệnh khối
3.2. Cấu trúc rẽ nhánh
3.2.1. Cấu trúc if, if else
3.2.2. Cấu trúc lựa chọn switch
3.3. Cấu trúc lặp
3.3.1. Vòng lặp for
3.3.2. Vòng lặp while
3.4. Các lệnh thay đổi cấu trúc lập trình
3.4.1. continue
3.4.2. break
3Nội dung chương này
3.1. Cấu trúc lệnh khối
3.2. Cấu trúc rẽ nhánh
3.2.1. Cấu trúc if, if else
3.2.2. Cấu trúc lựa chọn switch
3.3. Cấu trúc lặp
3.3.1. Vòng lặp for
3.3.2. Vòng lặp while
3.4. Các lệnh thay đổi cấu trúc lập trình
3.4.1. continue
3.4.2. break
43.1. Cấu trúc lệnh khối
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 cặp
dấu ngoặc nhọn {}
{
lenh_1;
lenh_2;
.
lenh_n;
}
5Ví dụ lệnh khối
#include
#include
#include
void main()
{
float r, cv, dt; // Khai bao 3 bien thuc
printf("\n Nhap vao ban kinh r = ");
scanf("%f",&r);
cv = 2*M_PI*r; // Tinh chu vi
dt = M_PI*r*r; // Tinh dien tich
printf("\nChu vi = %10.2f\nDien tich = %10.2f",cv, dt);
getch();
}
63.1. Cấu trúc lệnh khối (tiếp)
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;
...
}
}
73.1. Cấu trúc lệnh khối - ví dụ
#include
#include
void 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);
// 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()
83.1. Cấu trúc lệnh khối - ví dụ (tiếp)
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
9Nội dung chương này
3.1. Cấu trúc lệnh khối
3.2. Cấu trúc rẽ nhánh
3.2.1. Cấu trúc if, if else
3.2.2. Cấu trúc lựa chọn switch
3.3. Cấu trúc lặp
3.3.1. Vòng lặp for
3.3.2. Vòng lặp while
3.4. Các lệnh thay đổi cấu trúc lập trình
3.4.1. continue
3.4.2. break
10
3.2. Cấu trúc rẽ nhánh
3.2.1. Cấu trúc if, if...else
3.2.2. Cấu trúc lựa chọn switch
11
3.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;
12
3.2.1. Cấu trúc if, if else (tiếp)
if(biểu thức điều kiện)
lệnh 1;
lệnh kế tiếp;
biểu thức điều kiện?
lệnh 1
lệnh kế tiếp
!=0 ==0
biểu thức điều kiện?
lệnh 1 lệnh 2
lệnh kế tiếp
if(biểu thức điều kiện)
lệnh 1;
else
lệnh 2;
lệnh kế tiếp;
!=0 =0
13
3.2.1. Cấu trúc if, if else (tiếp)
#include
#include
void main()
{
// khai bao bien
float a, b;
float max;
printf(“ Nhap gia tri a va
b: “);
scanf(“%f %f”,&a,&b);
if(a<b)
max = b;
else
max = a;
printf(“\n So lon nhat
trong 2 so %.0f va
%.0f la %.0f “,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 va 247
la 247
Ví dụ: Bài toán tìm số lớn nhất trong 2 số
thực a và b:
14
3.2.1. Cấu trúc if, if else - Luyện tập
Lập chương trình tìm số nhỏ nhất trong ba
số thực nhập vào từ bàn phím.
Viết chương trình nhập vào một số nguyên
từ bàn phím, nếu là số chẵn thì hiển thị "Ban
vua nhap so chan", nếu là số lẻ thì hiển thị
"Ban vua nhap so le".
Nhập vào 3 số thực, kiểm tra xem nó có tạo
thành 3 cạnh của tam giác không?
15
3.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];]
}
16
3.2.2. Cấu trúc lựa chọn switch (tiếp)
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.
17
3.2.2. Cấu trúc lựa chọn switch (tiếp)
18
3.2.2. Cấu trúc lựa chọn switch (tiếp)
Quan sát ví dụ:
#include
#include
void main()
{
int n;
printf("Hay cho toi mot so nguyen");
scanf("%d",&n);
switch(n)
{
case 0: printf("\n So khong");
break;
case 1: printf("\nSo mot");
break;
case 2: printf("\nSo hai");
break;
default: printf("\nKhong fai 0,1,2");
}
getch();
}
19
3.2.2. Cấu trúc lựa chọn switch (tiếp)
Trong ví dụ trên, khi chạy chương trình thì sẽ
như thế nào?
Nếu ta bỏ break đi thì sao?
20
3.2.2. Cấu trúc lựa chọn switch (tiếp)
Kết quả khi chạy chương trình:
21
3.2.2. Cấu trúc lựa chọn switch (tiếp)
Nếu ta bỏ break đi:
22
3.2.2. Cấu trúc lựa chọn switch-Luyện 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.
23
3.2.2. Cấu trúc lựa chọn switch (tiếp)
#include
#include
int main ()
{
int thang; clrscr();
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;
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();
return 0;
}
24
3.2.2. Cấu trúc lựa chọn switch (tiếp)
#include
#include
int 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;
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();
return 0;
}
25
Nội dung chương này
3.1. Cấu trúc lệnh khối
3.2. Cấu trúc rẽ nhánh
3.2.1. Cấu trúc if, if else
3.2.2. Cấu trúc lựa chọn switch
3.3. Cấu trúc lặp
3.3.1. Vòng lặp for
3.3.2. Vòng lặp while
3.4. Các lệnh thay đổi cấu trúc lập trình
3.4.1. continue
3.4.2. break
26
3.3. Cấu trúc vòng lặp
3.3.1. Vòng lặp for
3.3.2. Vòng lặp while
27
3.3.1. Vòng lặp for
Mục đích
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)
{
day_cac_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
28
3.3.1. Vòng lặp for (tiếp)
29
3.3.1. Vòng lặp for - ví dụ
Đưa ra màn hình các số nguyên lẻ nhỏ hơn 100
#include
#include
void main()
{
int i;
for(i = 1;i<100;i++)//so vong lap la 99
{
if(i%2 == 1) printf("%5d",i);
if((i+1)%20 ==0) printf("\n");
}
getch();
}
30
3.3.1. Vòng lặp for - ví dụ (tiếp)
Đưa ra màn hình các số nguyên lẻ nhỏ hơn 100
#include
#include
void main()
{
int i;
for(i = 1;i<100;i+=2)//so vong lap la 50
{
printf("%5d",i);
if((i+1)%20 ==0) printf("\n");
}
getch();
}
31
3.3.1. Vòng lặp for - ví dụ (tiếp)
Kết quả:
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
32
3.3.2. Vòng lặp while
Mục đích:
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);
33
3.3.2. Vòng lặp while (tiếp)
34
3.3.2. Vòng lặp while (tiếp)
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 do được thực hiện ít nhất 1 lần dù
bieu_thuc có giá trị như thế nào.
35
3.3.2. Vòng lặp while (tiếp)
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 dùng for được vì chưa biết trước số lần
lặp.
Sử dụng vòng lặp while
36
3.3.2. Vòng lặp while - ví dụ (tiếp)
#include
#include
void main()
{
float diem;
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();
}
37
3.3.2. Vòng lặp while - ví dụ (tiếp)
#include
#include
void 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();
}
38
3.3.2. Vòng lặp while - kết quả (tiếp)
39
Nội dung chương này
3.1. Cấu trúc lệnh khối
3.2. Cấu trúc rẽ nhánh
3.2.1. Cấu trúc if, if else
3.2.2. Cấu trúc lựa chọn switch
3.3. Cấu trúc lặp
3.3.1. Vòng lặp for
3.3.2. Vòng lặp while
3.4. Các lệnh thay đổi cấu trúc lập trình
3.4.1. continue
3.4.2. break
40
3.4. Các lệnh thay đổi cấu trúc lập trình
continue
break
41
3.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;
42
3.4. Các lệnh thay đổi cấu trúc lập trình (tiếp)
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.
43
3.4. Các lệnh thay đổi cấu trúc lập trình (tiếp)
Ví dụ:
#include
#include
void main()
{
int i;
for(i = 1;i<=10;i++)
{
if(i == 5) continue;
printf(“%5d”,i);
if(i==7) break;
}
getch();
}
44
3.4. Các lệnh thay đổi cấu trúc lập trình (tiếp)
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ố?
45
3.4. Các lệnh thay đổi cấu trúc lập trình (tiếp)
#include
#include
#include
void main(){
int N, i, OK = 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) {
OK = 0;
break;
}
if (OK)
printf("\nSo %d la so nguyen to.", N);
else
printf("\nSo %d la hop so.", N);}
getch();
}
46
Bài tập
Bài 1: Lập chương trình giải phương trình
bậc hai: ax2 + bx + c = 0 với a, b, c nhập
vào từ bàn phím.
Bài 2: Viết chương trình nhập một số nguyên
n từ bàn phím và đưa ra n! (theo 3 cách)
Bài 3: Viết chương trình nhập một số nguyên
dương n từ bàn phím, đưa ra tổng các số từ
1 đến n (theo 3 cách)
47
Bài tập (tiếp)
Bài 4: Viết chương trình nhập một số nguyên
dương n từ bàn phím, đưa ra tổng các số
chẵn từ 1 đến n (theo 3 cách)
Bài 5: Viết chương trình kiểm tra một số
nguyên nhập từ bàn phím có phải là số
nguyên tố hay không ?
Bài 6: Lập trình tính tổng
S = 1 + ½ + 1/3 +...+ 1/n
với n là số nguyên dương nhập từ bàn phím
48
Bài tập (tiếp)
Bài 7: Viết chương trình nhập vào 2 số
nguyên dương từ bàn phím và đưa ra ước số
chung lớn nhất của chúng.
Bài 8: Viết chương trình nhập vào 2 số
nguyên từ bàn phím và đưa ra bội số chung
nhỏ nhất của chúng.
49
Các file đính kèm theo tài liệu này:
- giao_trinh_lap_trinh_bang_ngon_ngu_c_chuong_3_cac_cau_truc_l.pdf