Bài giảng Giới thiệu lập trình - Bài 4: Cấu trúc lặp - Lê Nguyên Khôi
Mệnh Lệnh break & continue
Luồng điều khiển:
Cấu trúc lặp thể hiện một cách rõ ràng luồng điều
khiển, khi nào bắt đầu, khi nào kết thúc một lần lặp
Trong một vài trường hợp, có thể cần thay đổi luồng
lặp tự nhiên
Mệnh lệnh break
Dừng vòng lặp ngay lập tức, kể cả khi điều kiện lặp
vẫn đang đúng
Mệnh lệnh continue
Bỏ qua phần còn lại của thân vòng lặp, bắt đầu một
vòng lặp mới (kiểm tra điều kiện, lăp, )
Giới Thiệu Lập TrìnhMệnh Lệnh break & continue – Ví Dụ
Nhập vào 4 số nguyên dương, và tính tổng
Giới Thiệu Lập Trình
int soND, tong = 0, dem = 1;
while (dem <= 4)
{
do
{
std::cin >> soND;
} while (soND <= 0);
tong = tong + soND;
dem = dem + 1;
}
std::cout << tong;
32 trang |
Chia sẻ: thucuc2301 | Lượt xem: 674 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Giới thiệu lập trình - Bài 4: Cấu trúc lặp - Lê Nguyên Khôi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Giới Thiệu Lập Trình
Cấu Trúc Lặp
TS. Lê Nguyên Khôi
Trường Đại học Công nghệ, ĐHQGHN
Nội Dung
1
Cấu trúc lặp:
for
while
do while
Giới Thiệu Lập Trình
Cấu Trúc Điều Khiển – Lặp
2
Mô hình hành động lặp một số lần cố định
In ra “teacher is so cool” 10 lần
Chạy hàm tính điểm sinh viên 1000 lần
Chạy 5 vòng quanh sân vận động
Số lần lặp có thể không biết
Quấy súp cho đến khi đặc
Nhập vào một số nguyên dương
Chọn một số ngẫu nhiên tới khi trúng thưởng
Tương ứng với lặp giới hạn (trên) và lặp không
giới hạn (dưới)
Giới Thiệu Lập Trình
Cấu Trúc Lặp Giới Hạn
3
Xét bài toán in ra 3 dấu sao
std::cout << "*";
std::cout << "*";
std::cout << "*";
Xét bài toán in ra 4 dấu sao
std::cout << "*";
std::cout << "*";
std::cout << "*";
std::cout << "*";
Xét bài toán in ra N dấu sao
std::cout << "*"; ?
Giới Thiệu Lập Trình
Cấu Trúc Lặp Giới Hạn
4
Mô hình hành động lặp:
Dựa trên số lần lặp N
Có thể cần một biết đếm bắt đầu từ 0
Tăng biết đếm thêm 1 sau mỗi lần lặp
Khi đó lặp lại hành động, ví dụ
std::cout << "*";
Cho đến khi biết đếm tới giá trị của N
Và dừng lại
Giới Thiệu Lập Trình
Cấu Trúc Lặp Giới Hạn for
5
Cú pháp:
for (MệnhLệnh1; BiểuThứcLôgic; MệnhLệnh2)
{
// thân vòng lặp
}
MệnhLệnh1 khởi tạo biến đếm (biến điều khiển)
Chỉ thực hiện một lần duy nhất khi bắt đầu lặp
MệnhLệnh2 thay đổi biến đếm (biến điều khiển)
BiểuThứcLôgic điều khiển quá trình lặp (với điều
kiện nào thì tiếp tục lặp)
Giới Thiệu Lập Trình
Cấu Trúc Lặp Giới Hạn for
6
Cú pháp:
for (MệnhLệnh1; BiểuThứcLôgic; MệnhLệnh2)
{
// thân vòng lặp
}
Ý nghĩa:
1. MệnhLệnh1 khởi tạo biến điều khiển
2. Nếu BiểuThứcLôgic đúng
3. Mệnh lệnh trong thân vòng lặp thực hiện
4. Thay đổi giá trị biến điều khiển (MệnhLệnh2)
5. Quay lại bước 2
6. Nếu không (BiểuThứcLôgic sai), kết thúc lặp
Giới Thiệu Lập Trình
Cấu Trúc Lặp Giới Hạn for
7
Ví dụ:
Với N = 4
Giá trị của n i=0 i=1 i=2 i=3 i=4
Điều khiển lặp true true true true false
Kết quả * * * *
Giới Thiệu Lập Trình
// i là biến đếm (biến điều khiển)
for (int i = 0; i < N; i = i + 1)
{
std::cout << "*";
}
Cấu Trúc Lặp Giới Hạn for – Ví Dụ
8Giới Thiệu Lập Trình
for (int i = 0; i < 25; i = i + 1)
{
std::cout << "teacher is so cool\n";
}
for (int i = 1000; i > 0; i = i - 1)
{
tinhDiem();
}
for (int i = 0; i < 5; i = i + 1)
{
chạy 5 vòng quanh sân vận động;
}
Cấu Trúc Lặp Giới Hạn for – Ví Dụ
9
In ra tổng của N số nguyên dương đầu tiên
Cần bao nhiêu biến (ngoại trừ N, được nhập)
2 biến: biến điều kiển, biến lưu tổng
Khởi tạo ở đâu
Biến lưu tổng khởi tạo ngoài cấu trúc lặp
Biến điều khiển khởi tạo trong cấu trúc lặp
Khi nào thì in ra tổng
Kết thúc vòng lặp, in ra tổng (như yêu cầu)
Thân vòng lặp
Cộng số nguyên dương tiếp theo vào tổng
Khi nào thì kết thúc lặp
Cộng xong N số nguyên dương (biến điều khiển)
Giới Thiệu Lập Trình
Cấu Trúc Lặp Giới Hạn for
10
In ra tổng của N số nguyên dương đầu tiên
Giới Thiệu Lập Trình
int tong = 0;
for (int i = 1; i <= N; i = i + 1)
{
tong = tong + i;
}
std::cout << tong;
Cấu Trúc Lặp Giới Hạn for
11
In ra tích của N số nguyên dương đầu tiên
Giới Thiệu Lập Trình
int tich = 1;
for (int i = 1; i <= N; i = i + 1)
{
tich = tich * i;
}
std::cout << tich;
Cấu Trúc Lặp Không Giới Hạn
12
Nếu số nhập vào khác 0, cộng vào tổng và in
ra tổng hiện tại, ví dụ
Nhập số (0 để kết thúc): 5
Tổng = 5
Nhập số (0 để kết thúc): -2
Tổng = 3
Nhập số (0 để kết thúc): 6
Tổng = 9
Nhập số (0 để kết thúc): 0
Khác biệt: không biết bao nhiêu lần lặp
Giới Thiệu Lập Trình
Cấu Trúc Lặp Không Giới Hạn – Ví Dụ
13
Nếu số nhập vào khác 0, cộng vào tổng và in
ra tổng hiện tại
Khi nào vòng lặp bắt đầu
Nhập vào một số
Cuối cùng vòng lặp làm gì
Nhập vào một số
Khi nào kết thúc vòng lặp
Khi số nhập vào bằng 0
Mệnh lệnh được lặp
Cộng số vừa nhập vào tổng
Sau đó in ra tổng hiện thời
Giới Thiệu Lập Trình
Cấu Trúc Lặp Không Giới Hạn while
14
Cú pháp:
// khởi tạo biến điều khiển
while (BiểuThứcLôgic)
{
// thân vòng lặp
// thay đổi giá trị biến điều khiển
}
BiểuThứcLôgic điều khiển quá trình lặp (với điều
kiện nào thì tiếp tục lặp)
Giới Thiệu Lập Trình
Cấu Trúc Lặp Không Giới Hạn while
15
Cú pháp:
while (BiểuThứcLôgic)
{
// thân vòng lặp
}
Ý nghĩa:
1. Khởi tạo biến điều khiển
2. Nếu BiểuThứcLôgic đúng
3. Mệnh lệnh trong thân vòng lặp thực hiện
4. Thay đổi giá trị biến điều khiển
5. Quay lại bước 2
6. Nếu không (BiểuThứcLôgic sai), kết thúc lặp
Giới Thiệu Lập Trình
Cấu Trúc Lặp Không Giới Hạn while
16
Nhập số khác 0, tính tổng và in ra tổng hiện tại
Giới Thiệu Lập Trình
int tong = 0; // biến tính tổng
int input; // biến điều khiển
std::cin >> input;
while (input != 0)
{
tong = tong + input;
std::cout << tong << std::endl;
std::cin >> input;
}
Cấu Trúc Lặp Không Giới Hạn while
17
Chọn một số ngẫu nhiên tới khi trúng thưởng
Giới Thiệu Lập Trình
int soLanChoi = 1;
int kq = taoSoNgauNhien(XO_SO);
int duDoan; std::cin >> duDoan;
bool trungThuong = kq == duDoan;
while (!trungThuong)
{
soLanChoi = soLanChoi + 1;
kq = taoSoNgauNhien(XO_SO);
std::cin >> duDoan;
trungThuong = kq == duDoan;
}
Cấu Trúc Lặp Không Giới Hạn do while
18
Đôi khi cần thực hiện thân vòng lặp trước khi
kiểm tra điều kiện lặp
do
{
nhặt một lá bài
} while (lá bài không phải chất cơ);
Giới Thiệu Lập Trình
Cấu Trúc Lặp Không Giới Hạn do while
19
Cú pháp:
// khởi tạo biến điều khiển
do
{
// thân vòng lặp
// thay đổi giá trị biến điều khiển
} while (BiểuThứcLôgic);
BiểuThứcLôgic điều khiển quá trình lặp (với điều
kiện nào thì tiếp tục lặp)
Lưu ý: cuối cùng của mệnh lệnh while là dấu “;”
Giới Thiệu Lập Trình
Cấu Trúc Lặp Không Giới Hạn do while
20
Cú pháp:
do
{
// thân vòng lặp
} while (BiểuThứcLôgic);
Ý nghĩa:
1. khởi tạo biến điều khiển
2. Mệnh lệnh trong thân vòng lặp thực hiện
3. Nếu BiểuThứcLôgic đúng
4. Quay lại bước 2
5. Nếu không (BiểuThứcLôgic sai), kết thúc lặp
Giới Thiệu Lập Trình
Cấu Trúc Lặp Không Giới Hạn do while
21
Yêu cầu nhập vào một số nguyên dương
Giới Thiệu Lập Trình
int input;
do
{
std::cin >> input;
} while (input <= 0);
Cấu Trúc Lặp – So Sánh
22Giới Thiệu Lập Trình
int input;
do {
std::cin >> input;
} while (input <= 0);
int input; std::cin >> input;
while (input <= 0) {
std::cin >> input;
}
int input; std::cin >> input;
for ( ; input <= 0; ) {
std::cin >> input;
}
Cấu Trúc Lặp – So Sánh
23
for
Thường dùng khi biết chính xác số lần lặp
while
Linh hoạt nhất
Không có nhược điểm
do while
Kém linh hoạt
Luôn thực hiện thân vòng lặp ít nhất một lần
Giới Thiệu Lập Trình
Cấu Trúc Lặp – Lỗi Thường Gặp
24
Vòng lặp vô hạn
Cấu trúc while, có dấu “;”
Sử dụng phép gán thay vì phép so sánh bằng
Giới Thiệu Lập Trình
while (input <= 0);
{
std::cin >> input;
}
while (i = 1)
{
std::cout << "*";
}
Cấu Trúc Lặp – Lỗi Thường Gặp
25
Vòng lặp vô hạn
Khi N lẻ hoặc âm
Giới Thiệu Lập Trình
int i = 0;
while (i != N)
{
std::cout << "*";
i = i + 2;
}
Mệnh Lệnh break & continue
26
Luồng điều khiển:
Cấu trúc lặp thể hiện một cách rõ ràng luồng điều
khiển, khi nào bắt đầu, khi nào kết thúc một lần lặp
Trong một vài trường hợp, có thể cần thay đổi luồng
lặp tự nhiên
Mệnh lệnh break
Dừng vòng lặp ngay lập tức, kể cả khi điều kiện lặp
vẫn đang đúng
Mệnh lệnh continue
Bỏ qua phần còn lại của thân vòng lặp, bắt đầu một
vòng lặp mới (kiểm tra điều kiện, lăp, )
Giới Thiệu Lập Trình
Mệnh Lệnh break & continue – Ví Dụ
27
Nhập vào 4 số nguyên dương, và tính tổng
Giới Thiệu Lập Trình
int soND, tong = 0, dem = 1;
while (dem <= 4)
{
do
{
std::cin >> soND;
} while (soND <= 0);
tong = tong + soND;
dem = dem + 1;
}
std::cout << tong;
Mệnh Lệnh break & continue – Ví Dụ
28
Nhập vào 4 số nguyên dương, và tính tổng
Giới Thiệu Lập Trình
int soND, tong = 0, dem = 0;
while (dem < 4)
{
std::cin >> soND;
if (soND <= 0)
{
continue;
}
tong = tong + soND;
dem = dem + 1;
}
std::cout << tong;
Mệnh Lệnh break & continue – Ví Dụ
29
Nhập vào 4 số nguyên dương, và tính tổng.
Dừng khi nhập số âm, in ra số lượng các số
Giới Thiệu Lập Trình
int soND, tong = 0, dem = 0;
while (dem < 4)
{
std::cin >> soND;
if (soND <= 0)
{
break;
}
tong = tong + soND;
dem = dem + 1;
}
std::cout << tong << " " << dem;
Mệnh Lệnh break & continue – Ví Dụ
30
Nhập vào 4 số nguyên dương, và tính tổng.
Nếu nhập vào số âm dừng, in số các số
Giới Thiệu Lập Trình
int soND, tong = 0, dem = 0;
while (dem < 4) {
std::cin >> soND;
if (soND > 0) {
tong = tong + soND;
dem = dem + 1;
}
else {
// ?
}
}
std::cout << tong << " " << dem;
Tham Khảo
31
Đọc sách:
Chương 3, Lập Trình Cơ Bản C++
Giới Thiệu Lập Trình
Các file đính kèm theo tài liệu này:
- ts_le_nguyen_khoibaigiang04_cautruclap_5294_2032115.pdf