Lập Trình C++ B2: Điều Kiện, Vòng Lặp, ( If, While, For C++)
Điều kiện và vòng lặp trong lập trình c++
+ Là những câu lệnh sử dụng phổ biến.
+ Thực hiện việc rẽ nhánh chương trình.
+ Là cơ sở để xây dựng lên các test case cho phần mềm.
I. Lý Thuyết Cơ Bản Điều Kiện & Vòng Lặp.
1. Lệnh Điều Kiện If và Else.
=> Nếu điều kiện là chính xác, thực hiện các yêu cầu trong biểu thức If.
=> Nếu ngược lại, thì thực hiện các yêu cầu trong biểu thức else
Ví dụ:
#include <iostream.h> void main() { int a = 5; if (a >= 0) { std::cout << "a là một giá trị dương.";} else { std::cout << "a là một số giá trị âm.";} }
Ngoài ra, chúng ta có thể sử dụng mở rộng. if – else if – else if – else.
#include <iostream.h> void main() { int a = 5; if (a > 0) { std::cout << "Positive value"; } else if (a == 0) { std::cout << "Zero value"; } else if (a < 0 && a > -5) { std::cout << "Negative value > -5"; } else { std::cout << "Negative value < -5" } }
2. Lệnh điều kiện Switch.
switch là câu lệnh được sử dụng thay thế cho việc sử dụng if và else if quá nhiều lần.
Switch là cậu lệnh so sánh bằng điều kiện với một mốc giá trị cụ thể.
Switch thường được dùng ưu tiên cho các điều kiện có tính chất quan hệ liên tiếp.
Ví dụ, các thứ trong một tuần, các tháng trong 1 năm, hay các trạng thái cho một đối tượng (start, stop, pause, resume.)…
Xem ví dụ sau để hiểu cách dùng switch.
#include <iostream.h> void main() { int a = 5; switch(a) { case 2: std::cout << "Monday"; break; case 3: std::cout << "Tuesday"; break; case 4: std::cout << "Wednesday"; break; case 5: std::cout << "Friday"; break; case 6: std::cout << "Saturday"; break; default: std::cout << "Weekend"; break; } }
Trong ví dụ ở trên
break là câu lệnh sử dụng để thoát ra khỏi vòng switch.
Bạn tưởng tượng, nếu không có break, sau khi thực hiện ở nhánh a,
lệnh sẽ chạy tiếp xuống nhánh b, rồi lại nhánh c, nhánh d để so sánh.
Do đó gây mất thời gian cho việc so sánh khi mà việc so sánh đã giải quyết xong, break là cách để kết thúc switch.
default là nhánh rẽ mặc định của switch.
Nghĩa là nếu không có nhánh nào xảy ra, thì điều kiện sẽ nhảy vào default.
3. Lệnh nhảy goto.
Thực hiện chức năng nhảy từ vị trí được gọi đến một đoạn nào đó của chương trình mà đoạn này được đánh dấu bởi một nhãn.
Lệnh này khá ít dùng, vì nó dễ gây ra những lỗi bất ngờ trong chương trình.
#include<iostream.h> void main() { int a = 0; if (a > 0) {std::cout << "Positive Value";} else if (a == 0) { goto lable_finished;} else {std::cout << "Negative value";} lable_finished: { std::cout << "Zero value;" return } }
4. Vòng lặp for.
Thực hiện một vòng lặp với một số lần hữu hạn biết trước.
Trong hình minh họa trên:
i là biến chạy và trong for có 3 biểu thức.
Biểu thức 1: i được gán = 0 (hoặc có thể = 1 giá trị khác tùy ý.)
Biểu thức 2: là điều kiện giới hạn của i.
Biểu thức 3: là biểu thức thay đổi của i (có thể là i++, i = i + 2.)
Lưu ý: vì tuy rằng bạn có thể thiết lập số lần hữu hạn chạy cho biến i.
Nhưng nếu dùng sai, for vẫn có thể lặp vô hạn.
Ví du:. i = 0; i < 5 nhưng sau đó là i – -.
Vậy thì mỗi lần chạy, i lại bị giảm đi một đơn vị, và nó mãi mãi không thể lớn hơn hoặc = 5 để kết thúc vòng lặp for được.
5. Vòng lặp while và do while.
– Vòng lặp while là vòng lặp không xác định rõ số lần lặp.
– Vòng lặp while được sử dụng cho việc tìm kiếm một điều kiện.
Do đó nó chỉ kết thúc khi điều kiện đó được thỏa mãn.
– Do tính chất lặp vô hạn, do đó khi sử dụng phải xác định 2 điều kiện.
– Đảm bảo điều kiện có thể sẽ xảy ra.
– Nếu không đảm bảo điều kiện xảy ra, thì sẽ có trường hợp để thoát vòng lặp.
while (condition) { các yêu cầu được thực hiện;}
do { các yêu cầu thực hiện; } while (condition);
Hãy cùng xem ví dụ minh họa.
#include <iostream.h> void main() { int a = 14; int b = 2; int idx = 0; while (a%10 != 0) { idx++; a += 2*b; } std::cout << "Number of running = " << idx; }
Trong ví dụ code minh họa trên. Chúng ta thấy rõ những điểm sau.
+ Không có giới hạn lặp cụ thể cho while, chỉ khi nào nó tìm được giá trị a phù hợp để chia hết cho 10, thì while kết thúc.
+ Muốn biết số lần lặp tìm được trong while thì phải dùng một biến đếm như idx.
+ Sẽ không tốt nếu như số lần lặp quá lớn mà vẫn chưa tìm được giá trị a thỏa mãn.
Khi a cứ tăng mãi có thể vượt qua phạm vị lưu trữu mà nó có thể lưu trữ.
=> Có thể sử dụng câu lệnh: if (a > value) {break;} để giới hạn vòng lặp vô hạn.
Có khi nào sử dụng vòng lặp vô hạn không ?.
Có sử dụng vòng lặp vô hạn, nhưng có sự điều khiển kết thúc.
+ Ví dụ lập trình nhúng cho các thiết bị điện tử.
Người ta cần lập trình cho đèn led sáng liên tục.
Chỉ khi ấn nút tắt thì chương trình mới dừng lại.
+ Hoặc lập trình game, chương trình luôn dùng một vòng while để chạy liên tục.
Khi dừng lại là khi bấm nút stop để kết thúc while.
Với do – while cũng tương tự như vậy, chỉ khác là a được tính trước một bước, rồi mới thực hiện điều kiện lặp.
#include<iostream.h> void main() { int b = 0; int b = 2; do { a += 2*b;} while (a%10 != 0); std::cout << "Number of running = " << idx; }
6. Lệnh continue.
Lệnh này cho phép bạn bỏ qua một bước trong vòng lặp.
Điều này giúp giảm bớt thời gian thực thi khi thực hiện những giá trị không hợp lệ.
tôi giả sử i chạy từ 0 cho đến 10.
với i là số chẵn thì tôi bỏ qua, còn số lẻ thì tôi in nó ra màn hình.
II. BÀI TẬP.
– Viết chương trình đổi một số tự nhiên nhập vào sang dạng nhị phân và hiển thị trên màn hình.
– Kiểm tra một số nhập vào có phải là số nguyên tố hay không.
– Số hoàn chính là số mà nó = tổng tất cả các ước của nó. Viết chương trình in ra 100 số hoàn chỉnh đầu tiên.
– Cặp số sinh đôi là cặp số nguyên tố mà khoảng cách của nó là 2. Viết chương trình 20 cặp số sinh đôi đầu tiên.
It does not mention.
can you say more detail your comment ?
Stal designs