Ohm, dạo này có nhiều bạn pm Face hỏi mình câu hỏi thế này:
Anh ơi, trong vòng lặp em dùng if nó cũng thoát vòng, rồi dùng break nó cũng thoát vòng, vậy 2 thứ này ra sao mà theo “quy chuẩn” là phải dùng break?
Nghe thì có vẻ cũng thật buồn cười, nhưng nghĩ lại đây là câu hỏi đúng mà. Trước tiên mình giải thích vấn đề "quy chuẩn".
Theo mình biết được thì không hề có break hoặc if hoặc else gì trong vòng lặp cả, một cách để kết thúc vòng lặp được sử dụng biến flag để đánh dấu, biến nay còn được gọi là biến cờ. Ví dụ sau:
bool check = true; //flag
for(int i = 0, check, i++)
{
if(something) {
check = false;
}
}
Đây theo mình biết đó là một quy chuẩn kiểu cũ, nhưng cũng rất phù hợp với cách lập trình mới hiện nay. Cách mà máy tính chạy code thì mình không bàn tới rồi vì đây là vấn đề đơn giản.
Trở về với vấn đề đã nêu: Vậy if và break khác nhau trong vòng lặp?
Đúng, nó không những hoàn toàn khác nhau mà nó cực kỳ, rất rất rất khác nhau. Trở lại với lý thuyết trên trường thầy dạy thì mình nói cơ bản thế này:
If bản chất của nó là kiểm tra điều kiện và làm điều gì đó
Break bản chất của nó là kết thúc vòng lặp (tạm hiểu là thế)
Vậy tại sao dùng if lại có thể kết thúc vòng lặp?
Như đã nói bên trên, if dùng để kiểm tra điều kiện, và khi điều kiện thỏa thì nó sẽ chạy hết các dòng lệnh bên trong hàm if, khi chạy hết các dòng lệnh thì máy tính sẽ không hề gặp “continue” hay một “đệ quy” nào nữa, vậy là nó kết thúc tại đó.
Việc kết thúc này theo mình là do hết code chứ không hề có tính chất dùng để kết thúc vòng lặp. If dùng để bắt sự kiện và cũng có thể kết thúc (như đã giải thích bên trên) và tiếp tục vòng lặp tùy theo LTV có cho phép nó hay không.
Còn break? nó là COCC rồi
Còn các bạn thhì nghĩ sao?