<How ?> If và Break

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 :smile:

Còn các bạn thhì nghĩ sao?

3 Likes

“Quy chuẩn” dùng cờ để kết thúc vòng lặp ở đâu ra vậy nhỉ? Anh chưa thấy cái này bao giờ, mà anh nghĩ cũng không nên dùng nó tí nào ^^

Cái “Quy chuẩn” này em nghe thầy em bảo lúc trước người ta hay dùng, nhưng giờ thì ít rồi vì các ngôn ngữ cũng hỗ trợ khá mạnh rồi nên ít người còn sử dụng (Thầy này dạy it từ trước năm 2000 tới giờ nên e tin lắm :smile:. Hiện tại em vẫn đang sử dụng cách này để kết thúc vòng lặp

1 Like

Không biết cách viết kiểu “quy chuẩn” này có lợi thế gì so với những cách khác nhỉ :blush:

Anh thấy dùng break hay hơn chứ. Cách này nếu đọc code ko kỹ không thấy được chủ ý của người viết.

Cái này là cũ rồi, em chỉ nghe thầy bảo qua cách thế :smile:

Cùng 1 mục đích dừng vòng lặp nhưng có nhiều cách khác nhau :smile: bài trên em chỉ chỉ ra vì sao dùng if cũng có thể kết thúc vòng lặp thôi anh :smiley: Không biết có đúng không nhưng em nghĩ thế :blush:

Tiêu đề em để How? nghĩa là chưa có gì chuẩn cả, khi nào chuẩn sẽ để tut hoặc knowlege. Đây chỉ là cách nhìn của em về việc if và break kết thúc vòng lặp thôi.

p/s: mọi người đừng đá động cái “quy chuẩn” nữa vì đây là kiến thức từ thầy e, thầy nói sao trò biết vậy thôi :smiley:.

2 Likes

“quy chuẩn” sai rồi :penguin:
vòng lặp thoát là nhờ các lệnh nhảy và so sánh. Chứ ko có biến flag nào đc đánh dấu hay bật lên nhé.
giả mã bằng C

i=0;
loop:
 if(i==5) goto exit;
 x+=5;
 i++;
 goto loop;
exit:
 exit_program;

if khác break ở chỗ. Nếu có các câu lệnh sau if. Nó sẽ tiếp tục thực hiện đến hết câu lệnh trong for mới thôi.
ví dụ:

for(i=0;i<5;i++) {
 if(i==3) i=10;
 //dosth -> nó sẽ vấn thực hiện cái này!
}

còn break thì nhảy hẳn ra vòng lặp luôn, ko quan tâm sau nó có dòng code nào hay ko. Trừ khi if cuối for, hoặc if đi kèm continue; thì nó sẽ tựa như break ^^

1 Like

This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?