Bài đăng nổi bật


Vòng lặp là một đoạn mã lệnh trong chương trình được thực hiện lặp đi lặp lại cho đến khi thỏa mãn một điều kiện nào đó. Vòng lặp là một khái niệm cơ bản trong lập trình cấu trúc.
Trong C có các loại vòng lặp sau:
         Vòng lặp for
         Vòng lặp while
         Vòng lặp do…while

Ta sử dụng các toán tử quan hệtoán tử logic trong các biểu thức điều kiện để điều khiển sự thực hiện của vòng lặp.
Vòng lặp ‘while’:
Cấu trúc lặp thứ hai trong C là vòng lặp while. Cú pháp tổng quát như sau:
         while (điều_kiện là đúng)
                   câu_lệnh;
Ở đó, câu_lệnh có thể là rỗng, hay một lệnh đơn, hay một khối lệnh. Nếu vòng lặp while chứa một tập các lệnh thì chúng phải được đặt trong cặp ngoặc xoắn {}. điều_kiện có thể là biểu thức bất kỳ. Vòng lặp sẽ được thực hiện lặp đi lặp lại khi điều kiện trên là đúng (true). Chương trình sẽ chuyển đến thực hiện lệnh tiếp sau vòng lặp khi điều kiện trên là sai (false).
Vòng lặp for có thể được sử dụng khi số lần thực hiện vòng lặp đã được xác định trước. Khi số lần lặp không biết trước, vòng lặp while có thể được sử dụng.
Ví dụ:
/* A simple program using the while loop*/
#include <stdio.h>
int main()
{
int count = 1;
         while (count <= 10) {
printf(“\n This is iteration %d\n”, count);
                   count++;
         }
         printf(“\nThe loop is completed. \n”);
}
Kết quả của chương trình trên được minh họa như sau:
         This is iteration 1
         This is iteration 2
         This is iteration 3
         This is iteration 4
         This is iteration 5
         This is iteration 6
         This is iteration 7
         This is iteration 8
         This is iteration 9
         This is iteration 10
         The loop is completed.
Đầu tiên chương trình gán giá trị của count là 1 ngay trong câu lệnh khai báo nó. Sau đó chương trình chuyển đến thực hiện lệnh while. Phần biểu thức điều kiện được kiểm tra. Giá trị hiện tại của count là 1, nhỏ hơn 10. Kết quả kiểm tra điều kiện là đúng (true) nên các lệnh trong thân vòng lặp while được thực hiện. Các lệnh này được đặt trong cặp dấu ngoặc nhọn {}. Giá trị của biến count là 2 sau lần lặp đàu tiên. Sau đó biểu thức điều kiện lại được kiểm tra lần nữa. Quá trình này cứ lặp đi lặp lại cho đến khi giá trị của count lớn hơn 10. Khi vòng lặp kết thúc, lệnh printf() thứ hai được thực hiện.
Giống như vòng lặp for, vòng lặp while kiểm tra điều kiện ngay khi bắt đầu thực hiện vòng lặp. Do đó các lệnh trong thân vòng lặp sẽ không được thực hiện nếu ngay từ ban đầu điều kiện đó là sai
Biểu thức điều kiện trong vòng lặp có thể phức tạp tùy theo yêu cầu của bài toán. Các biến trong biểu thức điều kiện có thể bị thay đổi giá trị trong thân vòng lặp, nhưng cuối cùng đièu kiện đó phải sai (false) nếu không vòng lặp sẽ không bao giờ kết thúc. Sau đây là ví dụ về một vòng lặp while vô hạn.
Ví dụ:
#include <stdio.h>
int main() {        
int count = 0;
         while (count < 100) {
                  printf(“This goes on forever, HELP!!!\n”);
                   count += 10;
                   printf(“\t%d”, count);
                   count -= 10;
                   printf(“\t%d”, count);
                   printf(“\Ctrl - C will help”);
         }
}
Ở trên, count luôn luôn bằng 0, nghĩa là luôn nhỏ hơn 100 và vì vậy biểu thức luôn luôn trả về giá trị true. Nên vòng lặp không bao giờ kết thúc.
Nếu có hơn một điều kiện được kiểm tra để kết thúc vòng lặp, vòng lặp sẽ kết thúc  khi có ít nhất một điều kiện trong các điều kiện đó là false. Ví dụ sau sẽ minh họa điều này.
#include <stdio.h>
int main() {        
int i, j;
         i = 0;
         j = 10;
         while (i < 100 && j > 5) {   
...
                   i++;
                   j -= 2;
         }
         ...
}
Vòng lặp này sẽ thực hiện 3 lần, lần lặp thứ nhất j sẽ là 10, lần lặp kế tiếp j bằng 8 và lần lặp thứ ba j sẽ bằng 6. Khi đó i  vẫn nhỏ hơn 100 (i bằng 3), j nhận giá trị 4 và điều kiện j > 5 trở thành false, vì vậy vòng lặp kết thúc.
Chúng ta hãy viết một chương trình nhận dữ liệu từ bàn phím và in ra màn hình. Chương trình kết thúc khi bạn nhấn phím ^Z (Ctrl + Z).
Ví dụ:
/*                                   ECHO PROGRAM                          */
/* A program to accept input data from the console and print it on the screen */
/* End of input data is indicated by pressing ‘^Z’*/
#include <stdio.h>
int main() {
         char ch;
         while ((ch = getchar()) != EOF) {
                   putchar(ch)
         }
}
Kết quả của chương trình trên được minh họa như sau:
Ví dụ một kết quả thực thi như sau:
         Have
         Have
         a
         a
         good
         good
         day
         day
         ^Z
Dữ liệu người dùng nhập vào được in đậm. Chương trình làm việc như thế nào ? Sau khi nhập vào một tập hợp các ký tự, nội dung của nó sẽ được in hai lần lên màn hình khi bạn nhấn <Enter>. Điều này là do các ký tự bạn nhập vào từ bàn phím được lưu trữ trong bộ đệm bàn phím. Và lệnh putchar() sẽ lấy nó từ bộ đệm sau khi bạn nhấn phím <Enter>. Chú ý cách thức kết thúc quá trình nhập dũe liệu bằng tổ hợp phím ^Z, đây là kí tự kết thúc file tront DOS.

Post a Comment

أحدث أقدم