Bài giảng Giới thiệu lập trình - Cấu trúc lặp - Lê Nguyên Khôi

Cấu Trúc Điều Khiển – Lặp

 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ìnhCấu Trúc Lặp Giới Hạn

 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ì

pdf 32 trang kimcuc 4520
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Giới thiệu lập trình - Cấu trúc lặp - Lê Nguyên Khôi", để 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 Giới thiệu lập trình - Cấu trúc lặp - Lê Nguyên Khôi

Bài giảng Giới thiệu lập trình - Cấu trúc lặp - Lê Nguyên Khôi
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

File đính kèm:

  • pdfbai_giang_gioi_thieu_lap_trinh_cau_truc_lap_le_nguyen_khoi.pdf