Vòng lặp while lặp lại bao nhiêu lần
Đăng bởi: Admin | Lượt xem: 10273 | Chuyên mục: C/C++ Show
Khi tiến hành lập trình có thể bạn sẽ gặp phải tình huống đó là một khối mã cần được thực thi nhiều lần, khi đó các câu lệnh được thực thi tuần tự: Câu lệnh đầu tiên trong một hàm được thực hiện trước tiên, tiếp theo là câu lệnh thứ hai và tiếp tục như vậy. Vòng lặp trong C nhằm cung cấp các loại vòng lặp sau đây để xử lý các yêu cầu lặp. Một câu lệnh vòng lặp cho phép chúng ta thực hiện một câu lệnh hoặc một nhóm các câu lệnh nhiều lần. Dưới đây là hình thức chung của một vòng lặp trong hầu hết các ngôn ngữ lập trình: For loop là một cấu trúc điều khiển lặp lại cho phép bạn viết một cách hiệu quả một vòng lặp mà cần phải thực hiện một số cụ thể. Cú pháp: for ( init; condition; increment ) { statement(s); }
Ví dụ: In ra 3 dòng chữ "BkitSoftware!” include int main(){ for(int i = 0; i < 3; i++){ printf("BkitSoftware!\n"); } // Continue ... printf("Ket thuc vong lap!\n"); } Giải thích:
Kết quả thu được: BkitSoftware! BkitSoftware! BkitSoftware! Ket thuc vong lap! Cú pháp của vòng lặp While loop trong ngôn ngữ lập trình C là: while(condition) { statement(s); } Ở đây, (các) câu lệnh có thể là một câu lệnh đơn hoặc một khối câu lệnh. Điều kiện có thể là bất kỳ biểu thức nào và là bất kỳ giá trị nào khác. Vòng lặp lại trong khi điều kiện là đúng. Khi điều kiện trở thành sai, điều khiển chương trình sẽ chuyển đến dòng ngay sau vòng lặp. Ví dụ: In ra số lẻ nhỏ hơn 10 #include int main(){ /* In ra các số lẻ <= 10. */ int number = 1; while (number <= 10){ if(number % 2 == 1){ printf("%d\t", number); } number++; } } Kết quả thu được: Không giống như vòng lặp for và while tiến hành kiểm tra điều kiện lặp ở đầu vòng lặp, do ... while trong lập trình C kiểm tra tình trạng của nó ở dưới cùng của vòng lặp. Vòng lặp do ... while tương tự như một vòng lặp while, ngoại trừ một thực tế rằng nó được thực hiện ít nhất một lần. Cú pháp: do { statement(s); } while( condition ); Lưu ý rằng biểu thức điều kiện xuất hiện ở cuối vòng lặp, do đó (các) câu lệnh trong vòng lặp thực hiện một lần trước khi điều kiện được kiểm tra. Nếu điều kiện là đúng, luồng điều khiển nhảy trở lại để làm, và (các) câu lệnh trong vòng lặp thực hiện lại. Quá trình này lặp lại cho đến khi điều kiện đã cho trở thành sai. Ví dụ: Nhập vào một số nguyên dương từ bàn phím và in ra số đó. Nếu nhập sai, bắt nhập lại. #include int main(){ int number; do{ printf("\nNhap number = "); scanf("%d", &number); }while(number < 1); // printf("\nNhap number = "); // scanf("%d", &number); // while(number < 1){ // printf("\nNhap number = "); // scanf("%d", &number); // } printf("\nnumber = %d", number); } Kết quả thu được: Nhap number = -1 Nhap number = -5 Nhap number = 3 number = 3 Một vòng lặp trở thành một vòng lặp vô hạn nếu một điều kiện không bao giờ trở thành sai. Các vòng lặp theo truyền thống được sử dụng cho mục đích này, vì không có biểu thức nào trong số ba biểu thức tạo thành vòng lặp for là bắt buộc, bạn có thể tạo vòng lặp vô tận bằng cách để trống biểu thức điều kiện. Ví dụ: #include int main () { for( ; ; ) { printf("This loop will run forever.\n"); } return 0; } Khi biểu thức điều kiện để trống, nó được giả định là đúng. Bạn có thể có một biểu thức khởi tạo và gia tăng, nhưng các lập trình viên C thường sử dụng cấu trúc for (;;) để biểu thị một vòng lặp vô hạn. Bạn có thể chấm dứt vòng lặp vô hạn bằng cách nhấn các phím Ctrl + C. Như vậy, thông qua bài học này, mình đã giới thiệu đến các bạn những vòng lặp cơ bản trong C. Cảm ơn các bạn đã đọc
Ở bài trước, chúng ta đã làm quen với vòng lặp for với những tiện ích cho chúng ta việc lặp đi lặp lại nhiều lần. Bài này chúng ta tiếp tục tìm hiểu 2 loại vòng lặp khác có chức năng tương tự vòng lặp for nhưng cách dùng có khác một chút là vòng lặp while và do…while. Các bạn có để ý đến các trang web mà chúng ta cần đăng nhập? Đơn giản như facebook hoặc google. Nếu các bạn viết sai username hoặc password thì sẽ không thể đăng nhập được dù cho bạn nhập bao nhiêu lần đi nữa. Cứ sai là họ bắt chúng ta nhập lại. Rõ ràng ở vòng for chúng ta thường nhìn thấy vòng for lặp một số lần cụ thể như từ 1 đến n,… Nhưng việc đăng nhập thì không biết bao nhiêu lần mới được mà chỉ có là đúng thì mới kết thúc. Đó là cách hoạt động của vòng lặp while và do…while. 1. Vòng lặp whileCấu trúc vòng lặp whileVí dụ 1:Viết chương trình nhập vào số bất kỳ đến khi nhập số âm thì dừng lại. #includeLưu ý: Ở trên mình vừa khai báo vừa gán giá trị cho biến x là 1 để đảm bảo rằng ban đầu vòng lặp while có điều kiện đúng để thực hiện được các lệnh bên trong, sau đó mỗi lần nhập thì nhập gì x nhận cái đó. Nếu không khởi gán bằng 1 thì có thể x sẽ nhận 1 giá trị ngẫu nhiên và có thể âm làm cho vòng lặp không thực hiện được. Kết quả:
Ví dụ 2:In các số từ 9 về 0 theo chiều giảm dần. Các số nằm trên 1 dòng. #include Thật đơn giản. Tuy nhiên cần chú ý một chút là điều kiện ở vòng lặp while trong code trên là gì? Đó là n có khác 0 hay không. khi viết while (n--) tức là kiểm tra xem n có khác 0 hay không hoặc có thể hiểu trong khi n đúng (đúng là khác 0) thì làm công việc in ra số n. Còn việc n-- thì chỉ là trừ đi n 1 đơn vị thôi. Và có một lưu ý quan trọng trong kết quả:
Tại sao số 0 vẫn được in ra trong khi theo phân tích thì khi n = 0 tức điều kiện sai, sai thì phải thoát chứ? Đó là do biểu thức n-- của chúng ta. Khi n = 1 thì n-- sẽ làm n có giá trị 0. Nhưng do biểu thức trừ ở phía sau n nên nó thực hiện sau lệnh kiểm tra n = 0. Tức là khi n = 1 thì biểu thức while(n--) vẫn đúng và sau đó n mới bị giảm về 0 và thực hiện lệnh in, do vậy khi in ra sẽ in cả số 0. 2. Vòng lặp do…whileCấu trúc vòng lặp do…whileVí dụ 1Lưu trước mật khẩu facebook của bạn. Hãy viết chương trình nhập vào mật khẩu để đăng nhập. #includeKết quả:
Lưu ý: Ở code trên, mình có dùng hàm strcmp để so sánh 2 chuỗi, hàm này nằm trong thư viện string.h Hàm strcmp so sánh chuỗi p và chuỗi pass và cho ta kết quả:
Do vậy chúng ta có điều kiện strcmp(p, pass) != 0 tức là 2 chuỗi này không giống nhau. Chi tiết cách so sánh 2 chuỗi, các bạn tham khảo tại bài So sánh 2 chuỗi trong C – strcmp 3. So sánh, cách dùng vòng lặp for, while, do…while
|