Câu mệnh lệnh while là câu mệnh lệnh giản dị nhất nhập tứ câu mệnh lệnh vòng lặp tuy nhiên C++ hỗ trợ và nó sở hữu một khái niệm đặc biệt tương đương với câu mệnh lệnh if:
Bạn đang xem: câu lệnh while
while (expression)
statement;
Một câu lệnh while được khai báo vì chưng kể từ khóa while. Khi một câu lệnh while được thực ganh đua, biểu thức(expression) được dự tính. Nếu biểu thức ước tính là true (khác không), câu lệnh(statement) tiếp tục thực ganh đua.
Tuy nhiên, không như một câu mệnh lệnh if, một Khi câu mệnh lệnh vẫn thực ganh đua kết thúc, luồng thực thị tiếp tục quay trở lại đầu câu lệnh while và quy trình được tái diễn.
Hãy nằm trong coi một vòng lặp giản dị. Chương trình tại đây in toàn bộ những số kể từ 0 cho tới 9:
/**
* Cafedev.vn - Kênh vấn đề IT số 1 Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/
#include <iostream>
int main()
{
int count{ 0 };
while (count < 10)
{
std::cout << count << ' ';
++count;
}
std::cout << "done!";
return 0;
}
Kết ngược như sau:
0 1 2 3 4 5 6 7 8 9 done!
Hãy nằm trong kiểm tra kỹ rộng lớn những gì lịch trình này đang khiến. Thứ nhất, count được khởi tạo ra vì chưng 0. 0<10 được reviews là đích, vì thế, khối mệnh lệnh thực ganh đua. Câu mệnh lệnh thứ nhất in 0 và count tăng thêm một. Luồng tinh chỉnh tiếp sau đó xoay quay về đầu câu lệnh while. 1<10 được reviews là đích, vì thế, khối code được thực ganh đua lại. Khối code tiếp tục liên tiếp thực ganh đua cho tới Khi count vì chưng 10, bên trên cơ điểm 10 <10 sẽ tiến hành reviews là sai và vòng lặp tiếp tục bay.
Có thể là 1 trong câu lệnh while thực ganh đua 0 phen. Hãy kiểm tra lịch trình sau:
#include <iostream>
int main()
{
int count{ 15 };
while (count < 10)
{
std::cout << count << ' ';
++count;
}
std::cout << "done!";
return 0;
}
Điều khiếu nại 15 <10 ngay lập tức ngay lập tức reviews trở thành sai, chính vì thế câu lệnh while bị bỏ lỡ. Điều độc nhất lịch trình này được in ấn là done!.
1. Vòng lặp vô hạn
Mặt không giống, nếu như biểu thức luôn luôn trực tiếp reviews là đích, vòng lặp while tiếp tục thực ganh đua mãi mãi. Đây được gọi là 1 trong vòng lặp vô hạn. Dưới đó là một ví dụ về một vòng lặp vô hạn:
/**
* Cafedev.vn - Kênh vấn đề IT số 1 Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/
#include <iostream>
int main()
{
int count{ 0 };
while (count < 10) // this condition will never be false
{
std::cout << count << ' '; // sánh this line will repeatedly execute
}
return 0; // this line will never execute
}
Vì con số ko khi nào tăng nhập lịch trình này, nên count <10 tiếp tục luôn luôn đích. Do cơ, vòng lặp sẽ không còn khi nào xong xuôi và lịch trình tiếp tục in “0 0 0 0 0 …” mãi mãi.
Chúng tao rất có thể khai báo một vòng lặp vô hạn sở hữu căn nhà ý như vậy này:
while (true)
{
// this loop will execute forever
}
Cách độc nhất nhằm bay ngoài một vòng lặp vô hạn là trải qua câu mệnh lệnh return, câu mệnh lệnh break, câu mệnh lệnh exit, câu mệnh lệnh goto, một nước ngoài lệ được ném hoặc người tiêu dùng kill lịch trình.
Các lịch trình chạy cho tới Khi người tiêu dùng ra quyết định giới hạn bọn chúng thỉnh thoảng cố ý dùng một vòng lặp vô hạn cùng theo với câu mệnh lệnh return, break hoặc exit nhằm xong xuôi vòng lặp. Người tao thường bắt gặp loại vòng lặp này trong số phần mềm sever trang web chạy liên tiếp và những đòi hỏi trang web cty.
2. Biến vòng lặp
Thông thông thường, tất cả chúng ta ham muốn một vòng lặp nhằm tiến hành một trong những phen chắc chắn. Để thực hiện điều này, người tao hay được dùng một đổi mới vòng lặp, thông thường được gọi là cỗ kiểm đếm. Biến vòng lặp là đổi mới số nguyên vẹn được khai báo cho tới mục tiêu độc nhất là kiểm đếm số phen vòng lặp vẫn tiến hành. Trong những ví dụ bên trên, con số đổi mới là 1 trong đổi mới vòng lặp.
Xem thêm: top truyện tổng tài (h+ full)
Các đổi mới vòng lặp thông thường được mệnh danh giản dị, ví dụ như i, j hoặc k. Tuy nhiên, việc mệnh danh đổi mới i, j hoặc k sở hữu một yếu tố. Nếu mình muốn biết điểm nào là nhập lịch trình của khách hàng dùng một đổi mới vòng lặp(i,j,k) và chúng ta dùng tính năng dò xét tìm tòi những ký tự động i, j hoặc k, tính năng dò xét tìm tòi tiếp tục trả về cho mình khá là nhiều kết quả! phần lớn kể từ sở hữu i, j hoặc k nhập cơ. Do cơ, một phát minh chất lượng tốt rộng lớn là dùng iii, jjj hoặc kkk thực hiện thương hiệu đổi mới vòng lặp của khách hàng. Bởi vì thế những thương hiệu này là độc nhất, điều này thực hiện cho tới việc dò xét tìm tòi những đổi mới vòng lặp đơn giản rất nhiều và chung bọn chúng nổi trội giống như các đổi mới vòng lặp. Một phát minh chất lượng tốt không chỉ có vậy là dùng thương hiệu đổi mới với chân thành và ý nghĩa thực, ví dụ như count hoặc thương hiệu hỗ trợ cụ thể rộng lớn về những gì chúng ta đang được kiểm đếm.
Cách rất tốt là dùng số nguyên vẹn sở hữu lốt cho những đổi mới vòng lặp. Sử dụng số nguyên vẹn ko lốt rất có thể dẫn theo những yếu tố ko mong ước. Hãy kiểm tra những mã sau đây:
/**
* Cafedev.vn - Kênh vấn đề IT số 1 Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/
#include <iostream>
int main()
{
unsigned int count{ 10 };
// count from 10 down vĩ đại 0
while (count >= 0)
{
if (count == 0)
{
std::cout << "blastoff!";
}
else
{
std::cout << count << ' ';
}
--count;
}
return 0;
}
Hãy coi ví dụ bên trên và coi chúng ta cũng có thể vạc hình thành lỗi ko. Nó ko rõ rệt lắm.
Hóa rời khỏi, lịch trình này là 1 trong vòng lặp vô hạn. Nó chính thức bằng phương pháp in “10 9 8 7 6 5 4 3 2 1 blastoff!” như yêu cầu, tuy nhiên tiếp sau đó chuồn thoát ra khỏi lối ray và chính thức kiểm đếm ngược kể từ 4294967295. Tại sao? Bởi vì thế ĐK vòng lặp count >= 0 sẽ không còn khi nào sai! Khi kiểm đếm vì chưng 0, 0>= 0 là đích. Sau cơ –count được thực ganh đua và kiểm đếm tràn về 4294967295. Và vì thế 4294967295 > = 0, lịch trình nối tiếp. Vì số ciunt ko không tồn tại lốt nên nó ko khi nào rất có thể âm và vì thế ko khi nào rất có thể âm, nên vòng lặp sẽ không còn xong xuôi.
3. Lặp lại
Mỗi Khi một vòng lặp thực ganh đua, nó được gọi là 1 trong luật lệ lặp.
Bởi vì thế thân thích vòng lặp thông thường là 1 trong khối và cũng chính vì khối này được nhập và bay với từng phen lặp, nên ngẫu nhiên đổi mới nào là được khai báo phía bên trong thân thích vòng lặp đều được tạo ra và tiếp sau đó bị bỏ với từng phen lặp. Trong ví dụ sau, đổi mới x sẽ tiến hành tạo ra và bỏ 5 lần:
#include <iostream>
int main()
{
int count{ 1 };
int sum{ 0 }; // sum is declared up here because we need it later (beyond the loop)
while (count <= 5) // iterate 5 times
{
int x{}; // x is created here with each iteration
std::cout << "Enter integer #" << count << ':';
std::cin >> x;
sum += x;
// increment the loop counter
++count;
} // x is destroyed here with each iteration
std::cout << "The sum of all numbers entered is: " << sum << '\n';
return 0;
}
Đối với những đổi mới cơ bạn dạng, điều này là chất lượng tốt. Đối với những đổi mới ko cơ bạn dạng (như structs và class), điều này rất có thể phát sinh yếu tố về tính năng. Do cơ, chúng ta cũng có thể ham muốn kiểm tra việc xác lập những đổi mới ko cơ bạn dạng trước vòng lặp. Đây là 1 trong trong mỗi tình huống chúng ta cũng có thể khai báo một đổi mới trước lúc dùng phen thứ nhất.
Lưu ý rằng con số đổi mới được khai báo phía bên ngoài vòng lặp. Vấn đề này là quan trọng cũng chính vì tất cả chúng ta cần thiết độ quý hiếm nhằm lưu giữ bên trên những phen lặp (không bị bỏ với từng phen lặp).
Thông thông thường, tất cả chúng ta ham muốn thực hiện một chiếc gì cơ từng phen lặp, ví dụ như in một loại mới mẻ. Vấn đề này rất có thể đơn giản được tiến hành bằng phương pháp dùng toán tử ++ bên trên cỗ kiểm đếm của bọn chúng ta:
/**
* Cafedev.vn - Kênh vấn đề IT số 1 Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/
#include <iostream>
// Iterate through every number between 1 and 50
int main()
{
int count{ 1 };
while (count <= 50)
{
// print the number (pad numbers under 10 with a leading 0 for formatting purposes)
if (count < 10)
{
std::cout << "0" << count << ' ';
}
else
{
std::cout << count << ' ';
}
// if the loop variable is divisible by 10, print a newline
if (count % 10 == 0)
{
std::cout << '\n';
}
// increment the loop counter
++count;
}
return 0;
}
Chương trình này tạo nên kết quả:
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
4. Vòng lặp lồng nhau
Cũng rất có thể lồng những vòng lặp mặt mày trong số vòng không giống. Trong ví dụ sau, từng vòng lặp phía bên trong và vòng lặp phía bên ngoài đều sở hữu cỗ kiểm đếm riêng rẽ. Tuy nhiên, cảnh báo rằng biểu thức vòng lặp phía bên trong cũng dùng cỗ kiểm đếm của vòng lặp mặt mày ngoài!
/**
* Cafedev.vn - Kênh vấn đề IT số 1 Việt Nam
*
* @author cafedevn
* Contact: [email protected]
* Fanpage: https://www.facebook.com/cafedevn
* Instagram: https://instagram.com/cafedevn
* Twitter: https://twitter.com/CafedeVn
* Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/
#include <iostream>
// Loop between 1 and 5
int main()
{
int outer{ 1 };
while (outer <= 5)
{
// loop between 1 and outer
int inner{ 1 };
while (inner <= outer)
{
std::cout << inner++ << ' ';
}
// print a newline at the over of each row
std::cout << '\n';
++outer;
}
return 0;
}
Chương trình này in ra:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
Bài tập dượt C++ về Vòng lặp
Xem thêm: đội tuyển bóng đá quốc gia ý
Bình luận