>> DOUG LLOYD: Tất cả các bên phải, vì vậy hãy nói về các vòng lặp.
Vì vậy, các vòng lặp là loại mát mẻ bởi vì chúng cho phép chương trình của bạn
để thực hiện dòng mã hơn và hơn và hơn.
Liên tiếp, mà không cần phải sao chép và dán hoặc lặp lại chúng.
Có ba yếu các loại vòng bạn sẽ thấy.
Bạn có lẽ sẽ có dịp để sử dụng mỗi khi bạn tiến bộ thông qua CS50.
Một số trong các vòng là khá quen thuộc với bạn từ Scratch,
vậy một lần nữa, như chúng ta đã làm với điều kiện, chúng tôi sẽ đặt chúng lên cạnh nhau
nếu có một tương tự chúng ta có thể rút ra.
>> Đầu tiên là mãi mãi từ Scratch, mà so sánh với while (true).
Đây là những gì chúng ta gọi là một vòng lặp vô hạn.
Các dòng mã giữa xoăn niềng răng, giống như những mảnh ghép
mà phù hợp bên trong C của chặn mãi mãi,
sẽ thực hiện liên tục từ đầu xuống dưới, hơn và hơn và hơn,
mãi mãi.
Sau khi tất cả, nếu bạn nhớ lại chúng tôi thảo luận các biểu thức Boolean
đúng là luôn luôn đúng.
Vì vậy, nếu chúng ta đang làm một cái gì đó miễn là đúng
được true-- nó có vẻ hơi silly-- đúng luôn luôn là sự thật, do đó, nó sẽ luôn luôn chạy.
Nó sẽ chạy mãi và bao giờ và bao giờ cho đến khi chúng tôi
tìm một cách để thoát ra khỏi nó với một câu lệnh break, trong đó một lần nữa,
chúng ta đã thấy một chút trong khi trước đây chúng tôi đã nói về chuyển đổi.
>> Hoặc nếu không chỉ cần giết chúng tôi chương trình, mà tình cờ,
nếu bạn thấy mình trong một tình hình với một vòng lặp vô hạn
và bạn không biết làm thế nào để ngăn chặn chương trình của bạn chạy.
Chỉ cần nhấn điều khiển và C và rằng sẽ giết chương trình của bạn cho bạn.
Nhưng điều này, một lần nữa, là được gọi là một vòng lặp vô hạn.
Nó là một vòng lặp sẽ chạy mãi mãi.
Bây giờ, trong khi các vòng lặp là không luôn luôn vô hạn, bởi vì cũng
chúng ta có thể thay thế các Boolean biểu hiện với cái gì
nhiều hơn một chút hữu ích hơn là chỉ đúng.
Vì vậy, đây là một ví dụ khác.
Trong khi một số Boolean và biểu hiện và niềng răng thì xoăn.
Đó là khá nhiều tương tự để lặp lại cho đến khi, từ đầu.
Mặc dù trong một giây, tôi sẽ giải thích sự khác biệt.
>> Vì vậy, trong C, nếu biểu thức Boolean bên trong vòng lặp trong khi
để đánh giá đúng, các dòng mã giữa các dấu ngoặc nhọn
sẽ thực hiện nhiều lần hơn và hơn và hơn cho đến khi biểu thức Boolean
là false.
Vì vậy, ví dụ, có lẽ bạn có một số loại truy cập.
Vì vậy, nói rằng bạn ở đầu vòng lặp này nói int x bằng số không.
Trong khi x là ít hơn 100, làm một vài những thứ bên trong đó dấu ngoặc,
sau đó vào cuối vòng lặp của bạn, bạn nói x cộng cộng, bạn đang incrementing x.
Cuối cùng x sẽ nhận được 100 và bạn sẽ
dừng lại bởi vì điều kiện x là ít hơn 100
sẽ không còn là sự thật như Ngay sau khi x bằng 100.
100 là không ít hơn 100.
>> Bây giờ phần nào gây nhầm lẫn, các hành vi của khối đầu bị đảo ngược.
Vì vậy, hãy thực sự cẩn thận nếu điều này là đột phá đầu tiên của bạn vào sử dụng các vòng lặp.
Về cơ bản, các lặp lại cho đến khi khối trong Scratch
sẽ lặp lại một cái gì đó hơn và hơn và hơn,
cho đến khi các biểu hiện, các Boolean biểu hiện trong hình lục giác là đúng.
Vì vậy, nó sẽ tiếp tục làm nó cho đến khi nó là sự thật.
Trong khi đó, vòng lặp while sẽ tiếp tục làm điều đó cho đến khi nó là sai.
Vì vậy, chúng ta hoàn toàn tương tự, nhưng có mà ít phân biệt chỉ
phải cẩn thận đặc biệt là khi bạn thực hiện đột phá đầu tiên của bạn từ chuyển
để cào vào c.
Các loại kế tiếp của vòng lặp là thực sự khá tương tự.
Nó được gọi là những việc phải làm trong khi vòng lặp.
Vòng lặp này sẽ thực hiện tất cả các dòng mã giữa các dấu ngoặc nhọn một lần,
và sau đó nó sẽ kiểm tra biểu thức Boolean.
Nếu biểu thức Boolean để đánh giá đúng,
nó sẽ quay trở lại và lặp lại quá trình đó hơn và hơn
và hơn cho đến khi Boolean biểu hiện là false.
Vì vậy vòng lặp này, không giống như một vòng lặp trong khi, là đảm bảo để chạy ít nhất một lần.
Điều này có thể khá hữu ích.
>> Cuối cùng, chúng tôi có một vòng lặp for.
Đối với các vòng lặp là loại cú pháp không hấp dẫn
và có rất nhiều đi ở đây, do đó, chịu với tôi
khi chúng ta cố gắng và phá vỡ những mảnh vỡ.
Nói chung, các trường hợp sử dụng của một vòng lặp cho là bạn
muốn lặp lại một cái gì đó số cụ thể của lần.
Trong ví dụ này ở đây, Tôi có khối lặp lại
từ Scratch, đó là tương tự như vòng lặp for
trong C, lặp đi lặp lại một cái gì đó 10 lần.
Và cho vòng lặp trên bên trái có, mà
là một vòng lặp bốn mà sẽ làm điều tương tự.
Điều này sẽ đi 10 lần.
Đếm từ số không, chúng tôi tăng từng vượt qua các vòng lặp.
Và chúng tôi tiếp tục làm điều đó cho đến khi i nhỏ hơn 10.
>> Vì vậy, những gì sẽ xảy ra?
Có một toàn bộ rất nhiều mã có.
Hãy phá vỡ nó xuống những gì đang xảy ra bước
từng bước như chúng ta khai thác thông qua một vòng lặp for.
Việc đầu tiên mà đã xảy ra là biến truy cập là trung tâm.
Tất cả mọi thứ ở bên trái rằng đầu tiên dấu chấm phẩy bên trong dấu ngoặc đơn
được thực thi.
Trong trường hợp này, chúng tôi nói int i bằng 0.
Khai báo một biến mới gọi là i, mà các biến là một số nguyên loại
và chúng tôi đang nói những giá trị bên trong biến đó sẽ là zero.
>> Điều thứ hai chúng tôi làm là chúng tôi sau đó ngay lập tức đánh giá
biểu thức Boolean.
Biểu thức Boolean là trong giữa hai dấu chấm phẩy.
Tôi là ít hơn 10.
Đó là sự thật ở đây, phải không?
Chúng tôi chỉ nói tôi là bằng bằng không, và do đó 0 là ít hơn 10,
và như vậy điều kiện là đúng sự thật và chúng tôi sẽ bây giờ
tiến tới thực hiện cơ thể của vòng lặp.
Nếu nó sai.
Nếu, ví dụ, tôi nói, thay vì i bằng 0 thì tôi nói tôi bằng 15,
int i bằng 15.
Vâng 15 là không ít hơn 10, vì vậy chúng tôi sẽ không bao giờ nhập vào cơ thể của vòng lặp
vì biểu thức Boolean có thể đánh giá là sai lầm.
>> Sau khi chúng tôi đi qua từ trên xuống dưới, chúng tôi gặp phải là đóng ngoặc móc,
một điều thứ ba xảy ra.
Biến truy cập là tăng lên, hay đúng hơn, các đường
mã của một tuyên bố sau dấu chấm phẩy thứ hai bên trong của
cho vòng ngoặc đơn được thực thi.
Vì vậy, chúng tôi bắt đầu bằng cách nói int i bằng 0.
Sau đó chúng tôi kiểm tra có hay không biểu thức Boolean là đúng.
0 là ít hơn, 10 do đó, nó là sự thật.
Vì vậy, chúng tôi sẽ tiến hành vào cơ thể các vòng lặp.
Những điều sẽ xảy ra trong vòng lặp, và khi chúng ta gặp phải là đóng xoăn
nẹp, điều tiếp theo chúng tôi làm là chúng ta nói i cộng, cộng.
Tôi đã không bây giờ tôi là một.
Sau đó, chúng tôi một lần nữa kiểm tra giá trị của biểu thức Boolean ở giữa.
Một là ít hơn 10.
Vì vậy, chúng ta sẽ đi qua này xử lý một lần nữa và một lần nữa.
Chúng tôi sẽ nhận được để kết thúc ngoặc móc nữa.
Chúng tôi sẽ tăng i từ 1-2 và 2-3.
Và như vậy và như vậy và như vậy, cho đến khi cuối cùng giá trị của tôi sẽ trở thành 10.
Là 10 ít hơn 10?
Không.
Đếm từ 0, chúng tôi đã đi thông qua 10 lần lặp của vòng lặp.
Chúng tôi đã lặp đi lặp lại 10 lần, chỉ như chúng ta đã làm trong khối Scratch.
Và đó là cơ bản quá trình cho một vòng lặp bốn.
>> Bây giờ lấy đi các mã thực tế và đưa nó
chỉ trong một số báo cáo cơ bản chung.
Dưới đây là những gì sẽ xảy ra.
Tất cả các báo cáo trong bắt đầu được thực hiện đầu tiên.
Bạn có thể có nhiều hơn một.
Sau đó, biểu thức Boolean được kiểm tra.
Nếu biểu thức đánh giá đúng sự thật, thực hiện cơ thể vòng một thời gian.
Nếu biểu thức đánh giá để sai, chúng ta đang thực hiện.
Chúng tôi không thực hiện thân của vòng lặp ở tất cả.
Sau khi chúng tôi đã thực hiện các cơ vòng một thời gian,
sau đó chúng ta làm những gì có trong phần thặng dư có.
Mà thường là có được một cái gì đó giống như tôi cộng, cộng với
hoặc một cái gì đó như thế, đó sửa đổi một biến đếm.
Sau đó, sau khi chúng tôi tăng, chúng tôi kiểm tra các biểu hiện một lần nữa
và lặp lại những bước trên và hơn và hơn cho đến khi biểu thức là
không còn đúng nữa.
>> Vì vậy, các trường hợp sử dụng cho một vòng lặp là gì?
Sử dụng bạn sử dụng một vòng lặp trong khi khi bạn muốn có một vòng lặp để lặp lại
một số không rõ thời gian, nhưng nó có thể có thể không chạy tất cả.
Một ví dụ thực sự phổ biến của một khi vòng lặp được sử dụng
là để chạy các dòng điều khiển cho một trò chơi.
Bạn có thể không biết bao lâu người sử dụng sẽ được chơi,
nhưng bạn muốn giữ làm điều tương tự.
Đang cập nhật vị trí của sprites khác nhau trên bảng.
Bạn muốn giữ cho mọi thứ di chuyển ở tất cả các lần,
nhưng bạn không biết khi nào người sử dụng sẽ ngừng chơi
hoặc khi họ đang đi chạy ra khỏi cuộc sống.
Vì vậy, một vòng lặp trong khi thực sự là tốt cho một cái gì đó như thế.
Đó là một trường hợp sử dụng tốt.
>> Đối với một làm trong khi vòng lặp, nó khá là giống.
Bạn muốn có một vòng lặp để lặp lại một không rõ số lần, nhưng ít nhất một lần.
Bạn có thể sử dụng này cho một trò chơi quá, nhưng một trường hợp sử dụng thực sự phổ biến
đang khiến người sử dụng cho đầu vào.
Nói chung, bạn có thể nói điều gì đó như thế, cho tôi một số nguyên dương,
và bạn có thể đặt đó bên trong của một làm trong khi vòng lặp.
Vì vậy, nó sẽ luôn luôn yêu cầu họ tại ít nhất một lần cho một số nguyên dương.
Nếu họ cung cấp cho bạn một số nguyên dương, bạn có thể thoát ra khỏi vòng lặp.
Bạn có thể được thực hiện.
Các biểu thức Boolean trong trong khi làm có thể là sai.
>> Và bạn sẽ không yêu cầu họ một lần nữa.
Nếu họ cung cấp cho bạn một số tiêu cực nơi họ gõ một số từ hoặc một cái gì đó
không thực sự hữu ích cho bạn, bạn có thể sử dụng
làm vòng lặp trong khi đi lại và làm nó một lần nữa và một lần nữa và một lần nữa.
Bạn chắc chắn muốn hỏi họ cung cấp cho bạn một số lần,
nhưng bạn không biết bao nhiêu lần sau đó họ có thể là loài gây hại.
Và do đó, một việc phải làm trong khi nó sử dụng tuyệt vời trường hợp khiến người sử dụng cho đầu vào.
Và một cho vòng sử dụng Trường hợp điển hình là khi
bạn muốn lặp lại một vòng lặp một số rời rạc của thời gian,
mặc dù bạn có thể không biết số lần
lúc này chương trình được biên dịch.
>> Vì vậy, ví dụ, có thể bạn có một chương trình nơi bạn nhắc nhở người dùng cho một số.
Và họ nhập 100.
Và sau đó bạn cho vòng lặp sẽ trong trường hợp đó chạy 100 lần.
Hoặc có thể họ nhập 1000 trong chương trình của bạn
và sau đó chạy vòng lặp 1000 lần.
Đó là một số cụ thể của lần.
Họ không nhất thiết biết số đó
là chương trình lúc được biên soạn.
Nó không giống như một vòng lặp trong khi nơi mà nó có thể là vô hạn.
Nó thay vì một số mà bạn chỉ không biết.
Bây giờ mặc dù tôi đã vạch ra tất cả các trường hợp sử dụng,
bạn nên biết rằng trong khá nhiều mọi hoàn cảnh,
bạn có thể trao đổi tất cả ba trong số các vòng.
Bạn có thể sử dụng một vòng lặp for nơi bạn nếu không sẽ sử dụng một vòng lặp while.
Bạn có thể sử dụng một vòng lặp cho bất cứ nơi nào bạn muốn sử dụng một làm trong khi vòng lặp và như vậy.
Nó có thể là một chút khó khăn đôi khi, vì vậy nói chung nó là một thực hành tốt
phải tuân theo một trường hợp sử dụng điển hình.
Sử dụng một làm trong khi vòng lặp nếu bạn muốn một cái gì đó một lần, ít nhất.
Sử dụng một vòng lặp nếu bạn muốn làm một cái gì đó một số cụ thể của lần.
Sau khi tất cả, đó là lý do tại sao có ba loại khác nhau của các vòng.
>> Vì vậy, họ có thể được sử dụng trong bối cảnh phải.
Nhưng bạn có thể trao đổi họ nếu bạn muốn.
Nếu bạn cảm thấy thoải mái với các vòng trong khi và bạn luôn muốn sử dụng các vòng lặp while.
Nó là cái gì đó bạn có thể làm, mặc dù nó
có thể là một chút cú pháp khó khăn, nơi một vòng lặp cho
sẽ có rất nhiều đơn giản hơn.
>> Tôi tên là Doug Lloyd và đây là CS50.