Chương 5
Vịng lặp
while / do-while / for
Nhập mơn về lập trình (C5)
Slide 1
Learning outcomes
L.O.3.1 – Liệt kê được các kiểu điều khiển và vẽ sơ đồ mô
tả chúng.
L.O.3.2 – Mô tả được được nguyên tắc kết hợp các kiểu
điều khiển để mô tả các giải thuật.
L.O.3.3 – Hiện thực được các kiểu điều khiển bằng ngôn
ngữ C.
L.O.3.4 – Sử dụng các cấu trúc điều khiển để giải quyết bài
tốn thực tế.
Nhập mơn về lập trình (C5)
Slide 2
Vịng lặp là gì ?
Vịng lặp là các phát biểu điều khiển dùng để thực hiện
một công việc nhiều lần.
Các phát biểu thực hiện cơng việc trong vịng lặp gọi là
thân vịng lặp.
Một vịng lặp thường có các phần :
• Khởi động vịng lặp.
• Thân vịng lặp.
• Điều khiển vịng lặp.
Có thể phân loại vịng lặp theo các tiêu chuẩn sau :
• Điều kiện : đi trước hoặc đi sau.
• Số lần lặp : biết trước hoặc khơng biết trước.
Nhập mơn về lập trình (C5)
Slide 3
Vịng lặp
Sơ đồ
Khởi
Khởiđộng
động
Sai
Điều khiển
Điều khiển
Đúng
Thân
Thân
Thốt
Nhập mơn về lập trình (C5)
Slide 4
Vòng lặp
Phân loại
VC++ cho phép sử dụng 3 loại vịng lặp với cú pháp như
sau:
• Vịng lặp while
while (condition) statement;
• Vịng lặp do
do statement while (condition);
• Vịng lặp for
for (initopt ; condopt ; loopopt ) statement;
Nhập môn về lập trình (C5)
Slide 5
Vòng lặp while
Cú pháp
:
while (condition) statement
Nghĩa là : trong khi điều kiện condition cịn đúng thì làm
phát biểu statement.
• condition là biểu thức luận lý điều khiển vòng lặp:
Đúng thì lặp (thực hiện statement).
Sai thì kết thúc (thốt khỏi vịng lặp).
• statement có thể là phát biểu ghép { ... }.
Vịng lặp while là vịng lặp có điều kiện đi trước và số lần
lặp không biết trước.
Nhập môn về lập trình (C5)
Slide 6
Vòng lặp while
Lưu đồ vận hành
Điều kiện đi trước
Sai
Điều
Điềukiện
kiện
Đúng
Lệnh
Lệnh
Kết thúc lặp
Nhập mơn về lập trình (C5)
Slide 7
Vịng lặp while
Ví dụ
Tính tổng các số ngun S = 1 + 2 + 3 + ... + n
(1)
Để có thể sử dụng vịng lặp, ta cần đưa cơng thức tính
dãy về dạng “từng bước”:
S(n) = G[S(n-1)]
Theo dạng này, muốn tính giá trị bước thứ n, phải có giá
trị bước thứ (n-1).
Xuất phát của vịng lặp là từ bước n=0.
Ta có thể viết lại tổng trên như sau:
S(n) = 1 + 2 + 3 + ... + (n-1) + n
(2)
mặt khác theo (1) ta cũng có:
S(n-1) = 1 + 2 + ... + (n-1)
(3)
Vậy, từ (2) và (3) ta suy ra:
S(n) = S(n-1) + n
(4)
Nhập mơn về lập trình (C5)
Slide 8
Vịng lặp while
Ví dụ
Để xác định giá trị ban đầu, từ (1) ta có:
S(1) = 1
(5)
Mặt khác, từ (4) ta có:
S(1) = S(0) + 1
(6)
Suy ra:
S(0)=0
Trong cơng thức (4), ta thay n bằng biến đếm i (i = 1 n)
Như vậy, các dữ kiện về vòng lặp là:
• Khởi động:
• Thân:
• Điều khiển:
Nhập mơn về lập trình (C5)
S=0,i=1
S=S+i,i=i+1
i <= n(lặp đến khi i lớn hơn n)
Slide 9
Vịng lặp while
Ví dụ
Nhập mơn về lập trình (C5)
Slide 10
Vòng lặp do-while
Cú pháp và vận hành
Cú pháp
:
do statement while (condition) ;
Nghĩa là : làm phát biểu statement trước 1 lần, sau đó xét
điều kiện condition, nếu đúng thì lặp lại, sai kết thúc.
• condition là biểu thức luận lý điều khiển vịng lặp:
Đúng thì lặp (thực hiện statement).
Sai thì kết thúc (thốt khỏi vịng lặp).
• statement có thể là phát biểu ghép { ... }.
Vòng lặp do-while là vịng lặp có điều kiện đi sau và số lần
lặp khơng biết trước.
Nhập mơn về lập trình (C5)
Slide 11
Vòng lặp do-while
Lưu đồ vận hành
Lệnh
Lệnh
Điều kiện đi sau
Điều
Điềukiện
kiện
Sai
Đúng
Kết thúc lặp
Nhập mơn về lập trình (C5)
Slide 12
Vịng lặp do-while
Ví dụ tính giai thừa
Tính giai thừa gt = 1*2*3*...*n
Đưa về dạng lặp: gt(n)= gt(n-1)*n
Từ đó, ta có thể xác định các dữ kiện vịng lặp như sau:
• Khởi động:
gt=1, i=1
• Thân:
gt=gt*i
i=i+1
• Kiều kiện lặp:
(i<=n)
Nhập mơn về lập trình (C5)
Slide 13
Vịng lặp do-while
Code ví dụ tính giai thừa
Nhập mơn về lập trình (C5)
Slide 14
Vòng lặp for
Cú pháp và vận hành
Cú pháp
:
for (initopt ; condopt ; loopopt ) statement
Nghĩa là : làm phát biểu statement trong khi điều kiện
condopt cịn đúng.
•
•
•
•
initopt :
condopt :
loopopt :
statement :
là phát biểu khởi động vòng lặp.
là biểu thức luận lý quyết định lặp hay dừng.
là phát biểu điều khiển vịng lặp.
có thể là phát biểu ghép.
Vịng lặp for cho phép thực hiện vịng lặp có số lần lặp biết
trước nếu dùng các dạng sau :
for (đếm=cậndưới; đếm<=cậntrên ; tăng đếm ) statement
for (đếm=cậntrên; đếm>=cậndưới ; giảm đếm ) statement
Nhập mơn về lập trình (C5)
Slide 15
Vòng lặp for
Lưu đồ vận hành
Init
Initopt
opt
cond
condopt
opt
Đúng
Điều kiện đi trước
Sai
Kết thúc lặp
Statement
Statement
loop
loopopt
opt
Nhập mơn về lập trình (C5)
Slide 16
Vịng lặp for
Ví dụ sắp thứ tự dãy
Nhập mơn về lập trình (C5)
Slide 17
Vịng lặp for
Giải thuật Bubble sort
i=0
55
22
77
11
44
j=1
55
22
55
77
11
44
55
77
22
44
j=2-3
22
11
j=4
11
Nhập mơn về lập trình (C5)
Slide 18
Vịng lặp for
Giải thuật Bubble sort
i=1
11
55
77
22
44
j=2-3
55
11
22
77
55
44
j=4
22
Nhập mơn về lập trình (C5)
Slide 19
Vịng lặp for
Giải thuật Bubble sort
i=2
11
22
77
55
44
j=3
77
11
22
55
77
44
77
55
j=4
55
11
Nhập mơn về lập trình (C5)
22
44
Slide 20
Vịng lặp for
Giải thuật Bubble sort
i=3
11
22
44
77
55
j=4
77
Xong
11
Nhập mơn về lập trình (C5)
22
44
55
77
Slide 21
Vòng lặp for
Nhập trị ban đầu và xử lý dãy
Vòng lặp for thường dùng để xử lý dãy (array).
Nhập mơn về lập trình (C5)
Slide 22
Vòng lặp for
Vòng lặp lồng nhau
Dùng 2 vòng for lồng nhau để xử lý ma trận.
Định nghĩa
Nhập phần tử
Nhập mơn về lập trình (C5)
Slide 23
Vịng lặp for
Tính tổng ma trận
Dùng 2 vịng for lồng nhau để tính tổng 2 ma trận.
Nhập mơn về lập trình (C5)
Slide 24
Vòng lặp for
In ma trận
Dùng 2 vòng for lồng nhau để in ma trận.
Nhập mơn về lập trình (C5)
Slide 25