Bài giảng Nhập môn về lập trình - Chương 5: Vòng lặp while, do-while, for với mục tiêu giúp sinh viên liệt kê được các kiểu điều khiển và vẽ sơ đồ mô tả chúng, 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, sử dụng các cấu trúc vòng lặp while, do-while, for để giải quyết bài toán thực tế. Mời các bạn cùng tham khảo chi tiết nội dung bài giảng.
Trang 1Chương 5
Vòng lặp
while / do-while / for
Presenter:
Trang 2Learning 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
toán thực tế
Trang 3Vò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
Trang 4Vò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 ; cond opt ; loop opt ) statement;
Trang 5Vò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
Sai thì kết thúc
• 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
Trang 6Vòng lặp while
Lưu đồ vận hành
condition
Statement
Sai
Đúng
Điều kiện đi trước
Kết thúc lặp
Trang 7Vòng lặp while
Ví dụ
Tính tổng các số nguyên S = 1 + 2 + 3 + + n
Để 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 (1)
mặt khác ta cũng có:
S(n-1) = 1 + 2 + + (n-2) + (n-1) (2)
Vậy, từ (1) và (2) ta suy ra:
Trang 8Vòng lặp while
Ví dụ
Để xác định giá trị ban đầu, từ (1) ta có:
từ (3) ta có:
S(1) = S(0) + 1 (5)
Do đó, có thể suy ra S(0)=0
Để dùng vòng lặp tính công thức (3), ta thay n bằng biến
đếm i (với i = 1 n)
Từ đó, ta có các dữ kiện về vòng lặp như sau:
• Thân vòng lặp: S=S+i, i=i+1
• Điều khiển vòng lặp while: i <= n (trong khi i chưa bằng n
thì vẫn lặp)
Trang 9Vòng lặp while
Ví dụ
Trang 10Vò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, sai kết thúc
• condition là biểu thức cho kết quả đúng/sai, đúng thì lặp, sai thì kết
thúc
• 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
Trang 11Vòng lặp do-while
Lưu đồ vận hành
condition
Statement
Sai
Đúng
Điều kiện đi sau
Trang 12Vò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:
• Thân:
gt=gt*i
• Kiều kiện lặp:
(i<=n)
Trang 13Vòng lặp do-while
Code ví dụ tính giai thừa
Trang 14Vòng lặp for
Cú pháp và vận hành
Cú pháp : for (initopt ; cond opt ; loop opt ) statement
Nghĩa là : làm phát biểu statement trong khi điều kiện
condopt còn đúng
• init opt : là phát biểu khởi động vòng lặp
• cond opt : là biểu thức luận lý quyết định lặp hay dừng
• loop opt : là phát biểu điều khiển vòng lặp
• statement : 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
Trang 15Vòng lặp for
Lưu đồ vận hành
Init opt
Sai
Đúng
Điều kiện đi trước
Statement
loop opt
Kết thúc lặp
Trang 16Vòng lặp for
Ví dụ sắp thứ tự dãy
Trang 17Vòng lặp for
Nhập trị ban đầu và xử lý dãy
Một trong những ứng dụng phổ biến của for là dùng để xử
lý các vấn đề liên quan đến dãy (array)
Trang 18Vòng lặp for
Vòng lặp lồng nhau
Dùng 2 vòng for lồng nhau để nhập ma trận
Trang 19Vòng lặp for
In ma trận
Dùng 2 vòng for lồng nhau để in ma trận
Trang 20Vò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