Vòng lặp trong c (Bài 5)

Vòng lặp trong c (Bài 5)

p3-1
Lập trình C

Vòng lặp trong c (Bài 5)

Vòng lặp trong c là gì? Là phần mã (code) trong một chương trình được thực hiện nhiều lần cho đến khi một điều kiện cụ thể được thỏa mãn.

Ví dụ xử lý hiển thị thông tin của nhân viên trong một công ty. Đoạn xử lý lặp lại nhiều lần trong chương trình chính là “xử lý hiển thị thông tin nhân viên“. Xử lý sẽ kết thúc khi đã hiển thị hết thông tin của TẤT CẢ nhân viên (thỏa điều kiện).

Một ví dụ khác về xử lý lặp lại đó là xử lý kiểm tra mật khẩu người dùng nhập vào có hợp lệ hay không. Người dùng lặp lại thao tác nhập, chương trình lặp lại thao tác kiểm tra mật khẩu và việc này sẽ kết thúc khi người dùng nhập đúng mật khẩu (thỏa điều kiện).

Vòng lặp trong c gồmVòng lặp for; Vòng lặp do-while và Vòng lặp while

Vòng lặp trong c – Vòng lặp for

Cú pháp:

for(Khởi_tạo; Điều_kiện; Tăng/Giảm) {
   Xử lý lặp
}

Ví dụ hiển thị các số từ 1 đến 9

Phân tích yêu cầu: khởi tạo là 1 (Khởi tạo), điều kiện nhỏ hơn hoặc bằng 9 (Điều kiện), mỗi lần tăng 1 (Tăng)

Viết xử lý

int i;
for(i = 1; i <= 9; i = i + 1) {
  printf("%d", i);
}

Kết quả khi chạy chương trình

123456789

Nhận xét:

Trong xử lý trên, chương trình lặp lại xử lý hiển thị i (printf) và lặp lại 9 lần (i <= 9). Trong vòng lặp for, thông thường có 3 thành phần và mỗi thành phần phân cách nhau bởi dấu chấm phẩy (;).

Thành phần đầu tiên (Khởi_tạo) có nhiệm vụ khởi tạo giá trị ban đầu của vòng lặp, thành phần thứ hai (Điều_kiện) kiểm tra điều kiện lặp và thành phần thứ 3 (Tăng/Giảm) làm thay đổi giá trị ban đầu lên hoặc xuống 1 hoặc nhiều đơn vị để làm thay đổi điều kiện của vòng lặp.

Ví dụ hiển thị các số lẻ (số lẻ là số không chia hết cho 2) từ 1 đến 9, như vậy kết quả hiển thị sẽ là 1  3  5  7  9 . Vòng lặp có thể được viết như sau:

for(int i = 1; i <= 9; i = i + 2) {
  printf("%d", i);
}

Một ví dụ khác: Hiển thị dãy số giảm dần từ 9 đến 1. Kết quả yêu cầu: 9 8 7 6 5 4 3 2 1

for(int i = 9; i >= 1; i = i - 1) {
   printf("%d", i);
}

Như vậy trong vòng lặp, chúng ta có thể vừa khai báo biến vừa khởi tạo giá trị (int i = 9) và đối với việc tăng hoặc giảm 1 đơn vị có thể được viết gọn thành i++ thay cho i = i +1, i– (2 dấu -) thay cho i = i -1;

Cách 1Cách 2
int i;
for (i = 1; i <= 9; i = i + 1) {
printf(“%d”, i);
}
for (int i = 1; i <= 9; i++) {
printf(“%d”, i);
}
for (int i = 9; i >= 1; i = i – 1) {
printf(“%d”, i);
}
for (int i = 9; i >= 1; i–) {
printf(“%d”, i);
}

Vòng lặp trong c – Vòng lặp do-while

Cú pháp:

do {   
Xử lý lặp
} while (Điều_kiện);

Ví dụ hiển thị các số từ 1 đến 9

int i; 
do {
i = 1;
printf("%d", i);
i = i + 1;
// có thể viết i++ thay cho i = i + 1
} while(i <= 9);

Vòng lặp trong c – Vòng lặp while

Cú pháp:

while (Điều_kiện) {   
Xử lý lặp
}

Ví dụ hiển thị các số từ 1 đến 9

int i = 1; 
while (i <= 9) {
printf("%d", i);
i++;
}

Nhận xét Khi xác định trước số lần lặp, chúng ta nên sử dụng vòng lặp for. Vòng lặp while kiểm tra điều kiện lặp trước nếu thoả điều kiện sẽ thực hiên xử lý. Vòng lặp do-while thì kiểm tra điều kiện lặp sau vì vậy đối với vòng lặp do-while sẽ có ít nhất một xử lý được thực hiện.

Vòng lặp trong c – Tổng kết

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

Vòng lặp trong c – Bài tập thực hành 

Bài thực hành số 1: Viết chương trình hiển thị dãy số 100, 95, 90, 85, … , 5

Bài thực hành số 2: Nhập vào 2 số n1 và n2. Tính tổng các số lẻ trong đoạn n1 đến n2

Bài thực hành số 3: Viết chương trình tạo dãy Fibonaci. (1, 1, 2, 3, 5, 8, 13, 21,…)

Bài thực hành số 4: Viết chương trình in bảng cửu chương n (2<=n<=9). Ví dụ khi người dùng nhập n = 2 thì kết quả hiển thị như sau

2 X 2 = 4 
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18

Bài thực hành số 5: Viết chương trình kiểm tra mật khẩu người dùng nhập vào có hợp lệ hay không? Biết rằng mật khẩu hợp lệ là 12345. Mỗi lần người dùng nhập sai, chương trình sẽ thông báo “Mật khẩu không hợp lệ” và cho phép người dùng nhập lại. Chương trình sẽ kết thúc nếu người dùng nhập đúng mật khẩu hoặc số lần nhập sai quá 3.

Alert: You are not allowed to copy content or view source !!