Chương 5

Vòng lặp while / do-while / for

Presenter:

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.

toán thực tế.

L.O.3.4 – Sử dụng các cấu trúc điều khiển để giải quyết bài

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

Phân loại

Vòng lặp

 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 4

Vòng lặp while

Cú pháp : while (condition) statement

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

Nghĩa là : trong khi điều kiện condition còn đúng thì làm

lặp không biết trước.

Nhập môn về lập trình (C5)

Slide 5

Lưu đồ vận hành

Vòng lặp while

Điều kiện đi trước

Sai

condition

Đúng

Statement

Kết thúc lặp

Nhập môn về lập trình (C5)

Slide 6

Ví dụ

Vòng lặp while

 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

 Theo dạng này, muốn tính giá trị bước thứ n, phải có giá

dãy về dạng “từng bước”: S(n) = G[S(n-1)]

(1)

trị bước thứ (n-1).

S(n-1) = 1 + 2 + ... + (n-2) + (n-1) (2)

(3)

 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 mặt khác ta cũng có: Vậy, từ (1) và (2) ta suy ra: S(n) = S(n-1) + n

Nhập môn về lập trình (C5)

Slide 7

Ví dụ

Vòng lặp while

(4)

S(1) = S(0) + 1

S(1) = 1 từ (3) ta có:

 Để xác định giá trị ban đầu, từ (1) ta có: (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

 Từ đó, ta có các dữ kiện về vòng lặp như sau:

i=1

• Khởi động: • Thân vòng lặp: • Điều khiển vòng lặp while:

S=0, S=S+i, i=i+1 i <= n (trong khi i chưa bằng n

thì vẫn lặp)

đếm i (với i = 1  n)

Nhập môn về lập trình (C5)

Slide 8

Ví dụ

Vòng lặp while

Nhập môn về lập trình (C5)

Slide 9

Cú pháp và vận hành

Vòng lặp do-while

do statement while (condition) ;

Cú pháp :

đ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 { ... }.

Nghĩa là : làm phát biểu statement trước 1 lần, sau đó xét

lặp không biết trước.

Vòng lặp do-while là vòng lặp có điều kiện đi sau và số lần

Nhập môn về lập trình (C5)

Slide 10

Lưu đồ vận hành

Vòng lặp do-while

Statement

Điều kiện đi sau

Sai

condition

Đúng

Kết thúc lặp

Nhập môn về lập trình (C5)

Slide 11

Ví dụ tính giai thừa

Vòng lặp do-while

gt=1

i=1

gt=gt*i i=i+1

• Khởi động: • Thân: • Kiều kiện lặp:

(i<=n)

 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:

Nhập môn về lập trình (C5)

Slide 12

Code ví dụ tính giai thừa

Vòng lặp do-while

Nhập môn về lập trình (C5)

Slide 13

Cú pháp và vận hành

Vòng lặp for

for (initopt ; condopt ; loopopt ) statement

Cú pháp :

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.

Nghĩa là : làm phát biểu statement trong khi điều kiện

condopt còn đúng. • initopt : • condopt : • loopopt : • 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

Nhập môn về lập trình (C5)

Slide 14

Lưu đồ vận hành

Vòng lặp for

Initopt

Điều kiện đi trước

Sai

condopt

Đúng

Kết thúc lặp

Statement

loopopt

Nhập môn về lập trình (C5)

Slide 15

Ví dụ sắp thứ tự dãy

Vòng lặp for

Nhập môn về lập trình (C5)

Slide 16

Nhập trị ban đầu và xử lý dãy

Vòng lặp for

 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).

Nhập môn về lập trình (C5)

Slide 17

Vòng lặp lồng nhau

Vòng lặp for

 Dùng 2 vòng for lồng nhau để nhập ma trận.

Nhập môn về lập trình (C5)

Slide 18

In ma trận

Vòng lặp for

 Dùng 2 vòng for lồng nhau để in ma trận.

Nhập môn về lập trình (C5)

Slide 19

Tính tổng ma trận

Vòng lặp for

 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 20