KHOA ĐIỆN – ĐIỆN TỬ
1
Chương 4 CẤU TRÚC LẶP
GV giảng dạy: Nguyễn Quốc Bình. Email: binh.nguyenquoc@stu.edu.vn
Câu lệnh: while Cú pháp:
Đ
điều kiện lặp
CÂU LỆNH ( while ) ( for ) ( do … while )
câu lệnh Ý nghĩa: thực hiện câu lệnh cho đến khi điều kiện lặp bị sai (false).
S
while (điều kiện lặp) { câu lệnh
}
Ví dụ 1.
câu lệnh: có thể là một lệnh hoặc nhóm lệnh.
Lưu ý:
2
Khi tạo một vòng lặp while, phải luôn nhớ rằng nó phải kết thúc tại một thời điểm nào đó, do đó chúng ta phải cung cấp trong khối lệnh một số phương thức để buộc điều kiện lặp trở thành sai tại một số điểm, nếu không vòng lặp sẽ lặp vòng mãi mãi.
Ví dụ: Tính tổng từ 1 đến số nguyên n được nhập từ bàn phím. vd nếu n=5, kq=1+2+3+4+5=15
Cách viết giảm biến bên trong vòng lặp ? (--i)
1. Nếu nhập n=0 kết thúc vòng lặp i = ?
i=1
2
3
4
5
6
7
Tong
2. Nếu nhập n=6 kết thúc vòng lặp i = ? 3
i=1
2
5
6
4
7
8
9
Tong
3
3. Nếu nhập n=6 kết thúc vòng lặp i = ? Tong = ?
CÂU LỆNH ( while ) ( for ) ( do … while )
Câu lệnh while là một câu lệnh đơn và có thể lồng nhau.
j 0 1 2 3
4
i 0 1 2
Bài tập 1: viết chương trình tính tích từ 1 đến số nguyên n>0 được nhập từ bàn phím.
vd nếu n=5, kq=1*2*3*4*5=120
Sử dụng câu lệnh while
Kết quả xuất ra màn hình
Cho biết các giá trị của tích khi nhập n=9.
i=1
2
3
4
5
6
7
8
9
Tich
5
CÂU LỆNH ( while ) ( for ) ( do … while )
Một số phương thức buộc điều kiện lặp trở thành sai để kết thúc vòng lặp while
Sử dụng bộ đếm (counter): là biến dùng để tăng hay giảm mỗi lần thực hiện vòng lặp. o Biến đếm phải được khởi động trước khi cấu trúc lặp bắt đầu. o Biến đếm có thể tăng hay giảm sau mỗi lần lặp ở đoạn chương trình bên trong vòng lặp hoặc ở đoạn kiểm tra điều kiện của vòng lặp để kiểm soát việc thực thi và dừng của vòng lặp.
Sử dụng biến tác động đến điều kiện lặp.
Ví dụ b. tăng biến bên trong vòng lặp
6
Kết quả khi kết thúc vòng lặp tong = ? Ví dụ a. tăng biến khi kiểm tra điều kiện
Ví dụ: Tính tổng từ 1 đến số nguyên n được nhập từ bàn phím. vd nếu n=5, kq=1+2+3+4+5=15
7
Cách viết giảm biến bên trong vòng lặp ? (--i)
CÂU LỆNH ( while ) ( for ) ( do … while )
Ví dụ c. Không sử dụng biến đếm
Kết quả khi kết thúc vòng lặp tong = ?
8
Ví dụ d. kiểm tra biến nhập vào để thoát vòng lặp
BTVN. Viết chương trình cho phép nhập vào 1 số nguyên n>10. Cho biết số n là số có bao nhiêu chữ số. Ví dụ: n = 1234 là số có 4 chữ số.
Sử dụng câu lệnh while
Sử dụng câu lệnh do … while
9
BTVN. Viết chương trình cho phép nhập vào 1 số nguyên n>10. Cho biết số n là số có bao nhiêu chữ số. Ví dụ: n = 1234 là số có 4 chữ số.
Bài tập 1a: viết chương trình xuất tất cả các số chẵn nhỏ hơn số nguyên n được nhập từ bàn
phím (10 BTVN Vd: Nhap so nguyen n: 11 Cac so chan < 11 la: 2, 4, 6, 10, Sử dụng câu lệnh while Bài tập 1b: viết chương trình xuất tất cả các số lẻ nhỏ hơn số nguyên n được nhập từ bàn phím
(10 Vd: Nhap so nguyen n: 15 Sử dụng câu lệnh while 10 Cac so le < 15 la: 1, 3, 5, 7, 11, 13, Câu lệnh: do … while
Cú pháp: CÂU LỆNH ( while ) ( for ) ( do … while ) do{ câu lệnh Ý nghĩa: thực hiện câu lệnh trước,
sau đó hỏi điều kiện lặp. Nếu đúng
(true) quay lại thực hiện câu lệnh, sai
(false) thoát khỏi vòng lặp. Đ điều kiện lặp câu lệnh
} while (điều kiện lặp); S câu lệnh: có thể là một lệnh hoặc
nhóm lệnh. Câu lệnh do… while là một câu lệnh đơn và có thể viết lồng vào nhau.
Câu lệnh do… while sẽ được thực hiện ít nhất 1 lần do điều kiện lặp được kiểm tra ở cuối.
Cần kiểm soát điều kiện lặp bên trong thân của câu lệnh do… while để tránh trường hợp 11 câu lệnh do … while có thể bị lặp vô tận (loop). Ví dụ a. kiểm tra biến nhập vào để thoát vòng lặp Ví dụ b. tăng biến bên trong vòng lặp Kết quả tong = ?
2
i=1 Tong 12 Ví dụ: Tính tổng từ 1 đến số nguyên n>0 được nhập từ bàn phím.
vd nếu n=5, kq=1+2+3+4+5=15 1. Nếu nhập n=0 kết thúc vòng lặp i = ? Tong 2. Nếu nhập n=6 kết thúc vòng lặp i = ? Tong Cách viết giảm biến bên trong vòng lặp ? (--i) 13 Bài tập 2: viết chương trình tính tích từ 1 đến số nguyên n>0 được nhập từ bàn phím. vd nếu n=5, kq=1*2*3*4*5=120 Sử dụng câu lệnh do … while Cho biết các giá trị của tích khi nhập n=9.
3 Tich 14 Bài tập 2a: viết chương trình xuất tất cả các số chẵn nhỏ hơn số nguyên n được nhập từ bàn
phím (10 Vd: Nhap so nguyen n: 11 Cac so chan < 11 la: 2, 4, 6, 10, Bài tập 2b: viết chương trình xuất tất cả các số lẻ nhỏ hơn số nguyên n được nhập từ bàn phím
(10 Sử dụng câu lệnh do … while Cac so le < 15 la: 1, 3, 5, 7, 11, 13, Vd: Nhap so nguyen n: 15 15 Sử dụng câu lệnh do … while CÂU LỆNH ( while ) ( for ) ( do … while ) Câu lệnh: for
Cú pháp: for ( câu lệnh Khởi tạo Bước nhảy Đ điều kiện lặp } S câu lệnh 16 Ý nghĩa: kiểm tra điều kiện lặp ứng với giá trị
khởi tạo ban đầu, nếu thỏa thì thực hiện câu
lệnh, sau đó thay đổi bước nhảy và quay lại
kiểm tra điều kiện lặp … cho đến khi điều kiện
lặp sai (false) sẽ thoát khỏi vòng lặp. Các thành phần CÂU LỆNH ( while ) ( for ) ( do … while ) Ví dụ câu lệnh: for Tong Câu lệnh for là một câu lệnh đơn và có thể lồng nhau. 17 Sửa lại câu lệnh để tìm giá trị nhỏ nhất ? Ví dụ: Tính tổng từ 1 đến số nguyên n được nhập từ bàn phím.
vd nếu n=5, kq=1+2+3+4+5=15 1. Nếu nhập n=0 kết thúc vòng lặp i = ? Tong 2. Nếu nhập n=6 kết thúc vòng lặp i = ? Tong 18 Một vài ví dụ về vòng lặp for Kết quả: Tong … Kết quả: Tong … Kết quả: Tong … Kết quả: Tong … 19 CÂU LỆNH ( while ) ( for ) ( do … while ) Một số lưu ý trong câu lệnh for
Câu lệnh for là một câu lệnh đơn và có thể lồng nhau. 20 Trong câu lệnh for, có thể sẽ không có phần Bài tập 3: viết chương trình tính tích từ 1 đến số nguyên n>0 được nhập từ bàn phím. vd nếu n=5, kq=1*2*3*4*5=120 Sử dụng câu lệnh for Cho biết các giá trị của tích khi nhập n=9.
3 Tich 21 Bài tập 3a: viết chương trình xuất tất cả các số chẵn nhỏ hơn số nguyên n được nhập từ bàn
phím (10 Vd: Nhap so nguyen n: 11 Cac so chan < 11 la: 2, 4, 6, 10, Bài tập 3b: viết chương trình xuất tất cả các số lẻ nhỏ hơn số nguyên n được nhập từ bàn phím
(10 Sử dụng câu lệnh for để xuất dữ liệu. Cac so le < 15 la: 1, 3, 5, 7, 11, 13, Vd: Nhap so nguyen n: 15 22 Sử dụng câu lệnh for để xuất dữ liệu. Lệnh break có thể được dùng để kết thúc sự thực thi của vòng lặp tại nơi đặt phát biểu break.
Tuy nhiên việc bỏ qua các điều kiện dừng để kết thúc vòng lặp là vi phạm qui tắc của lặp
trình cấu trúc. Điều này khiến cho việc đọc hiểu, phát hiện lỗi của chương trình trở nên khó
khăn hơn. Do đó chúng ta nên hạn chế sử dụng break để kết thúc vòng lặp. CÂU LỆNH break 1 3 5 7 2 0 6 8 -1 3 -5 7 Nếu nhập n=6 kết thúc vòng lặp i = ?
6
3 Tong 23 CÂU LỆNH continue Câu lệnh continue khiến chương trình bỏ qua lần lặp hiện tại (các lệnh nằm trong vòng lặp
sau câu lệnh continue sẽ được bỏ qua) và lập tức chuyển sang lần lặp tiếp theo. Đoạn chương trình xuất các số lẻ nhỏ hơn n, trừ số 9. Ví dụ b. Ví dụ c. Ví dụ a. Cho biết kết quả
xuất ra màn hình ? 24 Cho biết kết quả xuất ra màn hình khi nhập n=15 ? Câu lệnh continue khiến chương trình bỏ qua lần lặp hiện tại (các lệnh sau câu lệnh continue
sẽ được bỏ qua) và lập tức chuyển sang lần lặp tiếp theo. Ví dụ d1. Ví dụ d2. 25 Cho biết kết quả xuất ra màn hình khi n=15 ? Bài tập 4a: viết chương trình xuất tất cả các số chẵn nhỏ hơn số nguyên n được nhập từ bàn
phím (0 Vd: Nhap so nguyen n: 11 Cac so chan < 11 la: 2, 4, 6, 10, Bài tập 4b: viết chương trình xuất tất cả các số lẻ nhỏ hơn số nguyên n được nhập từ bàn phím
(0 Sử dụng vòng lặp và câu lệnh continue Cac so le < 15 la: 1, 3, 5, 7, 11, 13, Vd: Nhap so nguyen n: 15 26 Sử dụng vòng lặp và câu lệnh continue CÂU LỆNH goto Ví dụ b. Ví dụ c. Câu lệnh goto cho phép thực hiện một bước nhảy tuyệt đối đến một điểm khác trong chương
trình. Điểm đích được xác định bởi một nhãn, được tạo từ một mã định danh hợp lệ, theo sau
là dấu hai chấm (:) Ví dụ a. Cho biết kết quả xuất ra
màn hình ? 27 Nhập n=98 tong ?
Nhập n=123 tong ? Bài tập 1. Viết chương trình nhập vào một số nguyên dương n. Tính giá trị của biểu thức sau: 𝑆 = 1 + + + ⋯ + 𝑣ớ𝑖 𝑛 > 0 Vd: n=5 1
2 1
3 1
𝑛 𝑆 = 1 + + + + = 2.28333
2. Viết chương trình nhập vào số nguyên dương n. Liệt kê tất cả các ước số của nó. 1
2 1
3 1
4 1
5 Vd: n=15 các ước số của nó {1, 3, 5, 15} 3. Viết chương trình nhập vào số nguyên dương n. Kiểm tra n có phải là số nguyên tố không? 4. Viết chương trình nhập vào số nguyên dương n (1< n <100). Liệt kê tất cả các số nguyên tố nhỏ hơn n. 28 5. Viết chương trình tính tổng các số nguyên tố nhỏ hơn n (0 < n < 50). 1. Viết chương trình nhập vào một số nguyên dương n và tính giá trị của biểu thức sau: 𝑆 = 𝑣ớ𝑖 𝑛 > 0 + + 1
2 2
3 3
4 𝑛
𝑛 + 1 … +
2. Viết chương trình nhập vào số nguyên dương n. Kiểm tra xem n có phải là số chính phương
hay không? (số chính phương là số khi lấy căn bậc 2 có kết quả là nguyên).
Ví dụ: n=4, n là số chính phương, n=5, n không là số chính phương. 3. Viết chương trình nhập vào một số nguyên n>=2. Kiểm tra xem n có phải là số hoàn thiện
hay không. Biết rằng số hoàn thiện là số có tổng các ước số của nó (không kể nó) bằng chính
số đó. Ví dụ: n=6; 1+2+3 = 6 = n là số hoàn thiện. 4. Viết chương trình cho phép nhập vào 1 số nguyên n>10. Cho biết số n là số có bao nhiêu
chữ số. Ví dụ: n = 1234 là số có 4 chữ số. 29 5. Viết chương trình cho phép nhập vào 1 số nguyên n>0. Tính tổng các chữ số có trong n. Ví dụ: n = 1234. Tổng các chữ số là: 1+ 2+ 3+ 4 = 10 1. Nhập một số nguyên dương n>10. Xuất ra số ngược lại. Ví dụ: Nhập 1976 Xuất 6791. 30 1. Nhập 5 số nguyên dương. Xuất ra giá trị trung bình cộng của chúng. a. Sử dụng câu lệnh for 2. Viết chương trình cho phép nhập vào một dãy số nguyên dương. Nếu nhập số
0 thì thoát chương trình, khi đó xuất ra giá trị trung bình cộng của chúng. b. Sử dụng câu lệnh while b. Sử dụng câu lệnh do … while 31 a. Sử dụng câu lệnh for Bài tập buổi 4. Viết chương trình nhập vào số nguyên dương n. Liệt kê tất cả các ước số của nó. Vd: n=15 các ước số của nó {1, 3, 5, 15} a. Sử dụng câu lệnh while 32 b. Sử dụng câu lệnh do … while Bài tập buổi 4. Viết chương trình nhập vào số nguyên dương n>1. Kiểm tra n có phải là số
nguyên tố không? Chương trình sẽ lặp vòng cho đến khi nhập n = 0 sẽ thoát chương trình. b. Sử dụng câu lệnh do … while 33 a. Sử dụng câu lệnh while Bài tập buổi 5. Viết chương trình nhập vào số nguyên dương n>1. Kiểm tra n có phải là số
nguyên tố không? Chương trình sẽ lặp vòng cho đến khi nhập n = 0 sẽ thoát chương trình. b. Sử dụng câu lệnh do … while 34 a. Sử dụng câu lệnh for Bài tập buổi 5. Viết chương trình nhập vào số nguyên dương n (1< n <100). Liệt kê tất cả các số nguyên tố nhỏ hơn n. Chương trình sẽ lặp vòng cho đến khi nhập n = 0 sẽ thoát chương trình. b. Sử dụng câu lệnh do … while 35 a. Sử dụng câu lệnh for BTVN buổi 5. 1. Viết chương trình nhập vào một số nguyên dương n và tính giá trị của biểu thức sau: 𝑆 = 𝑣ớ𝑖 𝑛 > 0 + + … +
2. Viết chương trình nhập vào số nguyên dương n (1< n <50) và tính tổng các số nguyên tố 1
2 2
3 3
4 𝑛
𝑛 + 1 36 nhỏ hơn n vừa nhập. BTVN buổi 5. 1. Viết chương trình nhập vào một số nguyên dương n và tính giá trị của biểu thức sau: 𝑆 = 𝑣ớ𝑖 𝑛 > 0 + + … +
2. Viết chương trình nhập vào số nguyên dương n (1< n <50) và tính tổng các số nguyên tố 1
2 2
3 3
4 𝑛
𝑛 + 1 37 nhỏ hơn n vừa nhập. BTVN buổi 6. 1. Viết chương trình nhập vào một số nguyên dương n và tính giá trị của biểu thức sau: 𝑆 = 𝑣ớ𝑖 𝑛 > 0 + + … +
2. Viết chương trình nhập vào số nguyên dương n (1< n <50) và tính tổng các số nguyên tố 1
2 2
3 3
4 𝑛
𝑛 + 1 38 nhỏ hơn n vừa nhập. 1. Viết chương trình nhập vào số nguyên dương n>5. Kiểm tra xem n có phải là (số chính phương là số khi lấy căn bậc 2 có kết quả là nguyên).
Ví dụ: n=4, n là số chính phương, n=5, n không là số chính phương. 2. Viết chương trình nhập vào số nguyên dương n. Liệt kê tất cả các số chính
phương nhỏ hơn n. #include "math.h" 39 x1=sqrt(a);3
4
5
6
7
i=1
2
3
4
5
6
7
i=1
2
3
4
5
6
7
8
9
i=1
2
4
6
5
7
8
9
Kết quả tong = ?
2
i=1
3
4
5
6
7
i=1
2
3
4
5
6
7
i=1
2
3
4
5
6
7
8
9
i
…
i
…
i
…
i
…
i=1
2
5
6
4
7
8
9
i=1
2
4
5
7
?
Bài tập buổi 6.
số chính phương hay không?

