Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi...
Transcript of Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi...
![Page 1: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/1.jpg)
Tin học cơ sở 4
Buổi 4. Luồng điều khiển
Lệnh lặp
Bộ môn Khoa học máy tính - 2017
![Page 2: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/2.jpg)
Nội dung buổi học
1. Luồng điều khiển lặp
2. Lệnh lặp
while
do-while
for
2
![Page 3: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/3.jpg)
Luồng điều khiển
Thứ tự chạy các lệnh trong chương
trình
3
Lệnh 1
Lệnh 2
Lệnh 3
Lệnh 4
Tuần tự
Điều kiện
Lệnh nhánh YES
Yes
Lệnh tiếp theo
No Rẽ nhánh
![Page 4: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/4.jpg)
Luồng điều khiển lặp
4
Điều kiện
Lệnh nhánh YES
Yes
Lệnh tiếp theo
No
Rẽ nhánh
![Page 5: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/5.jpg)
Luồng điều khiển lặp
5
Điều kiện
Nhánh lệnh cần lặp
Yes
No
Lặp
Thoát khỏi vòng lặp
![Page 6: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/6.jpg)
Luồng điều khiển lặp
Đếm từ
1 đến 10
6
n <= 10
cout << n << endl; n++;
Yes
No
Thoát khỏi vòng lặp
int n = 1;
![Page 7: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/7.jpg)
Luồng điều khiển lặp
Đếm ngược
khi phóng tên lửa
7
n >= 0
if (n > 0) cout << n << endl; else cout << "Lift off !!!" << endl; n--;
Yes
No
Thoát khỏi vòng lặp
int n = 10;
![Page 8: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/8.jpg)
Luồng điều khiển lặp
Tính tổng các
số từ 1 đến 100
8
n <= 100
sum += n; n++;
Yes
No
Thoát khỏi vòng lặp
int n = 1, sum = 0;
![Page 9: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/9.jpg)
Luồng điều khiển lặp
Tính tổng các
số chia ba dư 1
từ 1 đến 100
9
n <= 100
if (n % 3 == 1) sum += n; n++;
Yes
No
Thoát khỏi vòng lặp
int n = 1, sum = 0;
![Page 10: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/10.jpg)
Lệnh while
Cú pháp
while ( điều kiện lặp ) {
Dãy lệnh lặp khi điều kiện lặp đúng
}
Kiểm tra điều kiện trước khi lặp
10
![Page 11: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/11.jpg)
CT1. Đếm từ 1 đến 10
int n = 1;
while (n <= 10) {
cout << n << endl;
n++;
}
11
Cần 2 dấu đóng mở ngoặc
bao lấy điều kiện lặp
Thay đổi biến n, để điều
kiện có thể bị vi phạm
Nếu không
có lệnh
n++ này ?
![Page 12: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/12.jpg)
CT2. Đếm ngược phóng tên lửa
int n = 10;
while (n >= 0) {
if (n > 0) {
cout << n << endl;
} else {
cout << "Lift off !!!" << endl;
}
n--;
}
12
Lồng các cấu trúc điều
khiển khác trong vòng lặp
Giảm biến đếm n để điều
kiện lặp có thể bị vi phạm
![Page 13: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/13.jpg)
CT3. Tính tổng tích lũy
int n = 1, sum = 0;
while (n <= 100) {
sum += n;
n++;
}
cout << "1+2+...+100 = " << sum << endl;
13
Cộng số n hiện tại vào
biến sum để tích lũy tổng
![Page 14: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/14.jpg)
CT4. Tính tổng tích lũy có lựa chọn
int n = 1, sum = 0;
while (n <= 100) {
if (n % 3 == 1) {
sum += n;
}
n++;
}
cout << "1+4+7+...+100 = " << sum << endl;
14
Lựa chọn số n để tích lũy
vào tổng sum
![Page 15: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/15.jpg)
Lệnh do - while
Cú pháp
do {
Dãy lệnh lặp khi điều kiện lặp đúng
Lần đầu tiên không kiểm tra điều kiện
} while ( điều kiện lặp );
Kiểm tra điều kiện sau khi lặp lần đầu tiên
Luôn luôn lặp ít nhất 1 lần
15
![Page 16: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/16.jpg)
Luồng điều khiển do-while
16
Thoát khỏi vòng lặp Điều kiện
Nhánh lệnh cần lặp
Yes
No
![Page 17: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/17.jpg)
CT5. Nhắc lại đến khi gặp “good bye”
string line = "good bye";
do {
cout << "Write something: ";
getline(cin, line);
cout << "You entered: " << line << endl;
} while ( line != "good bye" );
17
Đọc 1 dòng ký tự bằng
lệnh getline
Kiểm tra dòng nhập vào
có phải là “good bye”
![Page 18: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/18.jpg)
CT6. Menu lựa chọn tính năng
string choice;
do {
cout << "Enter your choice: ";
getline(cin, choice);
if (choice == "sum") {
menuSum();
} else if (choice == "good bye") {
menuGoodbye();
} else {
cout << "Unrecognized choice\n";
}
} while (choice != "quit");
18
Gọi hàm tương ứng với
lựa chọn
![Page 19: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/19.jpg)
Lệnh for
Cú pháp
for ( lệnh khởi tạo; điều kiện lặp; lệnh thay
đổi biến chạy ) do {
Dãy lệnh lặp khi điều kiện lặp đúng
}
Kiểm tra điều kiện trước khi lặp lần
đầu tiên (giống lệnh while)
19
![Page 20: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/20.jpg)
CT7: Tổng từ 1 đến 10
int sum = 0;
for (int n = 1; n <= 10; n++) {
sum += n;
}
cout << sum << endl;
20
Khởi tạo
Điều kiện lặp Thay đổi biến chạy
Lỗi: phạm vi biến n
nằm trong vòng lặp
cout << n << endl;
![Page 21: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/21.jpg)
CT8: In các số chính phương
chẵn nhỏ hơn 1 tỷ
for (int n = 0; n*n < 1000000000; n+=2) {
cout << n*n << endl;
}
21
Khởi tạo
n = 0
số chẵn đầu tiên
Điều kiện lặp có
thể là biểu thức
điều kiện bất kỳ
Thay đổi biến chạy,
tăng 2 đơn vị mỗi
lần để n luôn chẵn
![Page 22: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/22.jpg)
Điều khiển cấu trúc lặp bằng
break và continue
22
Điều kiện
Yes
No
Thoát khỏi vòng lặp
break Thoát khỏi vòng lặp
continue
![Page 23: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/23.jpg)
CT10: Tổng từ 1 đến 10 bỏ qua
các số từ 5 đến 8
int sum = 0;
for (int n = 1; n <= 10; n++) {
if (n >= 5 && n <= 8)
continue;
sum += n;
}
23
Không chạy lệnh
sum += n khi điều
kiện đúng
![Page 24: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/24.jpg)
CT11. Hủy phóng tên lửa
int n = 10, temp = 0;
while (n >= 0) {
if (temp > 100) {
cout << "Temperature too high, Launch abort !!!\n”;
break;
}
if (n > 0) {
cout << n << endl;
} else {
cout << "Lift off !!!\n”;
}
n--;
temp+=40;
}
24
Thoát khỏi vòng lặp khi
nhiệt độ quá nóng
Thay đổi nhiệt độ
![Page 25: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/25.jpg)
Các kỹ thuật lặp cơ bản
Lặp với số lần cố định
Lặp với điều kiện lặp bất kì
Lặp vô hạn
Lặp lồng nhau
25
![Page 26: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/26.jpg)
Lặp với số lần lặp cố định
Ví dụ:
Lặp 100 lần
for (int i = 0; i < 100; i++)
Lặp trên các số chẵn
for (int i = 0; i < 100; i+=2)
26
![Page 27: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/27.jpg)
CT12. Sinh 100 số ngẫu nhiên
thực trong khoảng [0, 1]
for (int i = 0; i < 100; i++) {
double rNum =
1.0 * rand() / RAND_MAX;
cout << rNum << endl;
}
// 1.0*rand() chuyển số nguyên
thành số thực
27
![Page 28: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/28.jpg)
Lặp với điều kiện bất kì
Ví dụ:
Lặp trên các số chính phương
for (int i = 0; i*i < 1000000; i++)
Lặp vô hạn
for (; ;) { … } hoặc while (true) { … }
Sử dụng break để thoát khỏi vòng lặp
Dùng trong các trò chơi
28
![Page 29: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/29.jpg)
Lặp lồng nhau
Ví dụ:
Duyệt tất cả các cặp số (i,j) từ 1 đến 10
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
cout << "(" << i << "," << j << ")\n";
}
}
29
![Page 30: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/30.jpg)
Lặp lồng nhau
Ví dụ:
Duyệt tất cả các cặp số (i,j) mà i < j
for (int i = 1; i <= 10; i++) {
for (int j = i+1; j <= 10; j++) {
cout << "(" << i << "," << j << ")\n";
}
}
30
![Page 31: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/31.jpg)
Lặp lồng nhau
Ví dụ:
Duyệt tất cả các cặp số (i,j) mà i > j
for (int i = 1; i <= 10; i++) {
for (int j = 1; j < i; j++) {
cout << "(" << i << "," << j << ")\n";
}
}
31
![Page 32: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/32.jpg)
CT13. In bảng cửu chương
for (int i = 1; i < 10; i++) {
cout << "Bang " << i << ": " << endl;
for (int j = 1; j < 10; j++) {
cout << " "
<< i << " x " << j
<< " = " << i*j << endl;
}
}
32
![Page 33: Tin học cơ sở 4 - Buổi 4 - uet.vnu.edu.vntqlong/2017thcs4/lec04_control_flow_2.pdf · Buổi 4. Luồng điều khiển Lệnh lặp Bộ môn Khoa học máy tính - 2017](https://reader034.fdocuments.net/reader034/viewer/2022050715/5dd0a199d6be591ccb61ee3d/html5/thumbnails/33.jpg)
Câu hỏi
Về nội dung buổi học ?
Về nội dung khóa học ?
Về cách tổ chức ?
33