Professional Documents
Culture Documents
Slide 04
Slide 04
http://www.poly.edu.vn
MỤC TIÊU
Lệnh lặp
while
do…While
break
continue
goto
3
4
CẤU TRÚC LẬP TRÌNH
Trong các ngôn ngữ lập trình, thường có 3 câu trúc chính
Cấu trúc tuần tự
Cấu trúc quyết định chọn lựa rẽ nhánh
Cấu trúc lặp
false
ĐK
Nhập a,b Nhập:a,b
true
false true
c=a+b b=0
c=a/b
Xuất: lỗi Công việc
Xuất c Xuất: c
LỆNH LẶP
6
7
ĐẶT VẤN ĐỀ
Ví dụ
Viết chương trình xuất các số từ 1 đến 10
=> Sử dụng 10 câu lệnh printf
Viết chương trình xuất các số từ 1 đến 1000
=> Sử dụng 1000 câu lệnh printf !
Giải pháp
Sử dụng cấu trúc lặp lại một hành động trong khi còn thỏa một điều kiện
nào đó.
3 lệnh lặp: for, while, do… while
8
ĐẶT VẤN ĐỀ
Sinh viên A đăng kí thi tốt nghiệp tại trường Fpoly.
Nếu sinh viên A học không đủ số học kỳ(<=7) thì sinh viên A sẽ phải học tiếp.
Trong trường hợp sinh viên A học tiếp lần thứ 2, chúng ta lại nói rằng nếu sinh viên A
học không đủ số học kỳ để được thi tốt nghiệp thì sinh viên A phải học tiếp…
Vậy việc sinh viên A “học đi” cho từng học kỳ là công việc sẽ được lặp đi lặp lại nhiều
lần khi điều kiện sinh viên A đủ số học kỳ để thi tốt nghiệp vẫn chưa đạt.
false
Cú pháp
while (<<điều kiện>>) {
// công việc;
} ĐK
false
10
VÍ DỤ 1 LỆNH LẶP WHILE
Ví dụ
int i = 1;
while (i < 20) { i=1
printf("Hello World !");
i++; false
i<20
} true
Diễn giải:
Đoạn mã trên xuất 19 chữ “Hello Hello World
World” ra màn hình
i++
11
VÍ DỤ 2 LỆNH LẶP WHILE
tong
12
DEMO
1. Xuất bảng cửu chương 7
2. Tính trung bình cộng các số chia
hết cho 3 từ 1 đến 20.
13
ĐẶT VẤN ĐỀ
Sinh viên A bắt đầu thi tốt nghiệp học tại trường Fpoly.
Nếu sinh viên A thi tốt nghiệp dưới 5 điểm thì sinh viên A sẽ phải thi lại.
Trong trường hợp sinh viên A thi điểm tốt nghiệp từ 5 điểm trở lên thì sinh
viên A được xem là hoàn thành yêu cầu tốt nghiệp.
Vậy việc sinh viên A “Thi tốt nghiệp” là công việc sẽ được lặp đi lặp lại nhiều
lần khi điều kiện điểm thi tốt nghiệp của sinh viên A vẫn còn chưa đạt.
false
Thi tốt
Điểm < 5
nghiệp
true
Sinh viên FPoly
16
LỆNH LẶP DO….WHILE
Cú pháp:
do {
// công việc Công việc
}
true
while (<<điều kiện>>); ĐK
17
VÍ DỤ 1 LỆNH LẶP DO….WHILE
Ví dụ
int so = 0;
do { số=0
scanf("%d", &so);
} Nhập số
18
VÍ DỤ 2 LỆNH LẶP DO...WHILE
Ví dụ
int so=0;
do{ so=0
printf("Nhập số: ");
scanf("%d", &so);
} Nhập so
19
DEMO
20
22
TÓM TẮT BÀI HỌC
23
24
ĐẶT VẤN ĐỀ
Sinh viên A bắt đầu học tại trường Fpoly.
Nếu sinh viên A học chưa đủ 7 học kỳ tại Fpoly thì sinh viên A sẽ phải học tiếp.
Trong trường hợp sinh viên A học đủ 7 học kỳ thì sinh viên A được xem là hoàn thành
đủ số hoc kỳ yêu cầu.
Vậy việc sinh viên A “học đi” là công việc sẽ được lặp đi lặp lại nhiều lần trong từng
học kỳ khi điều kiện sinh viên A hoàn thành tổng số học kỳ vẫn chưa đạt.
false
Học kỳ Học kỳ
Học Học đi
<= 7 tiếp theo
Cú pháp 1 2 5 4 7
for (khởi đầu ; điều kiện; bước nhảy){
// công việc
36 Khởi đầu
}
Diễn giải false
Điều kiện
B1: Thực hiện <khởi đầu>
true
B2: Kiểm tra <điều kiện>
True: thực hiện Công việc
<công việc>
<bước nhảy>
Trở lại B2 Bước nhảy
26
VÍ DỤ LỆNH LẶP FOR
int i;
Xuất bảng nhân 7
for(i=1;i<=10;i++){
printf("%d x %d = %d\n",7,i,7*i);
}
Debug: Bước 1
Debug: lặp lần 2
Debug: lặp lần 3
7x1=7 int i;Debug: lặp lần 4
int i;Debug: lặp lần 5
7 x 2 = 14 int i;Debug: lặp lần 6
7 x 3 = 21 for(i=1;i<=10;i++){
int i;Debug: lặp lần 7
for(i=2;i<=10;i++){
int i;Debug: lặp lần 8
7 x 4 = 28 for(i=3;i<=10;i++){
int i;Debug: lặp lần 9
for(i=4;i<=10;i++){
printf("%d
int i;Debug:xlặp %dlần= 10
%d\n",7,i,7*i);
7 x 5 = 35 for(i=5;i<=10;i++){
printf("%d
int i;Debug:xLặp %dlần= %d\n",7,i,7*i);
11
for(i=6;i<=10;i++){
printf("%d
int i; x %d = %d\n",7,i,7*i);
7 x 6 = 42 } for(i=7;i<=10;i++){
printf("%d
int i; x %d = %d\n",7,i,7*i);
7 x 7 = 49 } for(i=8;i<=10;i++){
printf("%d
int i; x %d = %d\n",7,i,7*i);
} for(i=9;i<=10;i++){
printf("%d x %d = %d\n",7,i,7*i);
7 x 8 = 56 } for(i=10;i<=10;i++){
printf("%d x %d = %d\n",7,i,7*i);
} for(i=11;i<=10;i++){
printf("%d x %d = //11<=10
%d\n",7,i,7*i);
false
7 x 9 = 63 } printf("%d x %d = %d\n",7,i,7*i);
7 x 10 = 70 } printf("%d x %d = %d\n",7,i,7*i);
} printf("%d x %d = %d\n",7,i,7*i);
}
}
}
LỆNH LẶP FOR
n Sinh viên n
DEMO
30
LỆNH NGẮT
continue
goto
31
LỆNH BREAK & CONTINUE
32
LỆNH BREAK & CONTINUE
Ví dụ: Đi vào kho hồ sơ và lấy ra sinh viên tên Trần Văn A
Khi lấy được sinh viên Trần Văn A thì đi ra, không cần thực hiện lấy các
hồ sơ khác
33
LỆNH BREAK & CONTINUE
Ví dụ: Đóng mộc cho các sinh viên đã tốt nghiệp
Gặp những sinh viên nào chưa tốt nghiệp thì không cần thực hiện, tiếp
tục xem các sinh viên tiếp theo
34
LỆNH BREAK
35
VÍ DỤ : VIẾT MÃ THEO LƯU ĐỒ THUẬT TOÁN
i=2
false
i<số/2 Là số nguyên tố
true
i++
LỆNH CONTINUE
int x = 2;
while (x < 7) { 4
if (x % 2 == 0) { 6
x++;
continue;
} else {
x++;
}
printf("%d \n", x);
}
}
38
DEMO
39
LỆNH GOTO
Goto
Label 2 Công việc 2 Label 3
40
VÍ DỤ GOTO
int a = 10;
TEST:do {
if( a == 15) {
// quay ve do khi a = 15 (bỏ qua lệnh printf)
a = a + 1;
goto TEST;
}
printf("Gia tri cua a: %d\n", a);
a++;
} while( a < 20 );
41
DEMO
42
TÓM TẮT BÀI HỌC
43
44