Bài 6 Vòng lặp Mục tiêu:
6.1.3 Vòng lặp ‘do while’:
Vòng lặp do ... while còn được gọi là vòng lặp do trong C. Khơng giống như vịng lặp for và while, vòng lặp này kiểm tra điều kiện tại cuối vịng lặp. Điều này có nghĩa là vịng lặp do ... while sẽ được thực hiện ít nhất một lần, ngay cả khi điều kiện là sai (false) ở lần chạy đầu tiên.
Cú pháp tổng quát của vòng lặp do ... while như sau: do{
câu_lệnh;
} while (điều_kiện);
Cặp dấu ngoặc {} là không cần thiết khi chỉ có một câu lệnh hiện diện trong vịng lặp, nhưng việc sử dụng dấu ngoặc {} là một thói quen tốt. Vịng lặp do ... while lặp đến khi điều_kiện mang giá trị false. Trong vòng lặp do ... while, câu_lệnh (khối các câu lệnh) sẽ được thực thi trước, và sau đó điều_kiện được kiểm tra. Nếu điều kiện là true, chương trình sẽ quay lại thực hiện lệnh do. Nếu điều kiện là false, chương trình chuyển đến thực hiện lệnh nằm sau vịng lặp.
Ví dụ 6.8:
/* accept only int value */ #include <stdio.h>
int main()
{ int num1, num2; num2 = 0; do{ printf(“\nEnter a number: “); scanf(“%d”,&num1); printf(“No. is %d”, num1); num2++; }while (num1 != 0);
printf(“\nThe total numbers entered were %d”,--num2);
/* num2 is decremented before printing because count for last integer (0) is not to be considered */
}
Kết quả của chương trình được minh họa như sau: Enter a number: 10 No. is 10 Enter a number: 300 No. is 300 Enter a number: 45 No. is 45 Enter a number: 0 No. is 0
The total numbers entered were 3
Đoạn chương trình trên sẽ nhận các số nguyên và hiển thị chúng cho đến khi một số 0 được nhập vào. Và sau đó chương trình sẽ thốt khỏi vịng lặp do ... while và số lượng các số nguyên đã được nhập vào.
Các vòng lặp ‘while lồng nhau’ và ‘do ... while’
Cũng giống như vòng lặp for, các vòng lặp while và do ... while cũng có thể được lồng vào nhau. Hãy xem một ví dụ được đưa ra dưới đây.
Ví dụ 6.9: #include <stdio.h> int main() { int x; char i, ans; i = ''; do{ clrscr(); x = 0; ans = ‘y’;
printf(“\nEnter sequence of character: “); do{
i = getchar(); x++;
}while (i != ‘\n’); i = '';
printf(“\nNumber of characters entered is:%d”, --x);
printf(“\nMore sequences (Y/N)?”); ans = getch();
}while (ans == ‘Y’ || ans == ‘y’); }
Kết quả của chương trình được minh họa như sau:
Enter sequence of character: Good Morning! Number of character entered is: 14
More sequences (Y/N)? N
Chương trình trên yêu cầu người dùng nhập vào một chuỗi kí tự cho đến khi nhấn phím enter (vịng lặp while bên trong). Khi đó, chương trình thốt khỏi vịng lặp do…while bên trong. Sau đó chương trình hỏi người dùng có muốn nhập tiếp nữa hay thơi. Nếu người dùng nhấn phím ‘y’ hoặc ‘Y’, điều kiện cho vịng while bên ngồi là true và chương trình nhắc người dùng nhập vào chuỗi ký tự khác. Chương trình cứ tiếp tục cho đến khi người dùng nhấn bất kỳ một phím nào khác với phím ‘y’ hoặc ‘Y’. Và chương trình kết thúc.