>> Doug LLOYD: Pekala, en döngüler hakkında konuşalım.
Yani döngüler tür serin onlar programa izin çünkü
kod satırlarını yürütmek üzerinde ve tekrar ve tekrar.
Defalarca, kalmadan kopyalamak ve yapıştırın veya başka bunları tekrarlayın.
Büyük üç Var Göreceğiniz döngüler türlü.
Muhtemelen kullanmak için bir fırsat olacak her biri size CS50 ilerledikçe.
Bu halkaların bazıları oldukça vardır Sıfırdan size tanıdık,
böylece yine, biz Koşullamalar ile yaptığımız gibi, Biz yan yana onları koyacağım
bir benzetme varsa biz çizebilirsiniz.
>> İlk olarak, Sıfırdan sonsuza kadar hangi while (true) karşılaştırır.
Bu bizim sonsuz bir döngü diyoruz.
Kıvırcık arasındaki kod satırları parantezler, çok puzzle parçaları gibi
C içinde bu uyum sonsuza kadar blok arasında,
üstten tekrar tekrar çalıştırılacaktır alt, tekrar ve tekrar ve tekrar,
Sonsuza kadar.
Sonuçta, bizim çağırmak durumunda Boole ifadeleri tartışma,
Gerçek her zaman doğrudur.
Biz yapıyoruz, bu yüzden Gerçek sürece bir şey
Bunu true-- bir küçük silly-- doğru görünüyor her zaman doğrudur, bu yüzden her zaman kaçıyorum.
Sonsuza kadar kaçıyorum ve Sonsuza dek biz gelene kadar
ile bunun dışında kırmaya için bir yol bulmak Bir break deyimi, yine
Biz bir süre önce gördüm biz anahtarı hakkında konuşuyorduk.
>> Ya da aksi takdirde sadece öldürmek bizim Program, hangi tesadüfen,
Hiç kendinizi bulursanız sonsuz bir döngü ile durum
ve durdurmak için nasıl bilmiyorum çalışan program.
Sadece kontrol ve C vurdu ve Bu sizin için bir program öldürür.
Ama bu, yine, sonsuz bir döngü denir.
Sonsuza dek çalışacak bir döngü.
Şimdi, döngüler yaparken değil Her zaman sonsuz, çünkü aynı zamanda
Biz Boole yerine bir şey ifade
Biraz daha kullanışlı daha adil doğru.
Yani burada bir başka örnek.
Iken ve bazı Boolean ifadesi ve ardından kaşlı.
Bu benzer oldukça fazla Sıfırdan kadar tekrarlayın.
Bir saniye, ben olacak olsa da farkı açıklar.
>> C Yani Boole ifadesi ise while döngüsünde içinde
gerçek, çizgiler değerlendirir kaşlı ayraçlar arasındaki kod
ve üzerinde tekrar tekrar çalıştırılacaktır ve üzeri Boole ifadesi kadar
false olarak değerlendirilir.
Yani örneğin, belki Sayacın çeşit var.
Yani başında size söylemek Bu döngü int x sıfıra eşit söylüyorlar.
X 100'den az olmasına rağmen, bir çift yapmak Bu küme parantezi içindeki şeyler,
sonra döngünün sonunda, diyorsunuz x artı artı, sen x artırma ediyoruz.
Sonunda x alacak 100 ve olacak
koşulu nedeniyle durmak x en az 100
artık olarak doğru olacak Yakında x olarak 100'e eşittir.
100, 100 daha az değildir.
>> Şimdi biraz karışacak, davranış karalama bloğunun tersine çevrilir.
Bu ise Yani gerçekten dikkatli olun döngüler kullanarak içine ilk baskını.
Temelde, tekrar Scratch blok kadar
bir şey tekrar edecektir ve üzerinde ve üzerinde,
İfade kadar Boolean altıgen ifade doğrudur.
Bu yüzden yapmaya devam edecektir o doğrudur kadar.
Bu arada, while döngüsü olacak bu yanlış kadar yapmaya devam.
Yani oldukça benzer, ama Sadece bu küçük fark var
Yaptığınız özellikle dikkatli olmak geçiş sizin ilk baskını
c içine Scratch için.
Döngünün sonraki tür aslında oldukça benzer.
Bu do while döngüsünde denir.
Bu döngü tüm hatları yürütecek Bir kez küme ayraçları arasındaki kod,
ve daha sonra kontrol edecek Boole ifadesi.
Boole ifadesi ise true değerlendirir,
geri dönün ve tekrar edeceğiz defalarca bu süreci
ve üzeri Boolean kadar ifade yanlış olarak değerlendirilir.
Yani bu döngü, bir süre döngü aksine, en az bir kez çalıştırmak için garantili.
Bu oldukça yararlı olabilir.
>> Son olarak, for döngüsü var.
Döngüler için bir tür vardır sözdizimsel çirkin
ve gidiş çok şey var Burada, bu yüzden benimle ayı
biz denemek ve dışında bu parçaları kırmak gibi.
Genellikle, kullanım durumunda for döngüsü sizi değildir
bir şey a tekrarlamak istiyorum kez belirli sayıda.
Burada, bu örnekte, Ben tekrar blok var
Sıfırdan, hangi for döngüsü benzer
C şey 10 kez yinelenen.
Ve üzerinde döngü için Orada sol, hangi
Dört döngü olduğunu aynı şeyi yapardı.
Bu 10 kez giderdim.
Sıfırdan Sayma, biz döngünün her geçiş artırmak.
Ve biz bunu yapmaya devam Ben az 10 olana kadar.
>> Peki ne oluyor?
Orada kod bir sürü var.
En aşağı kırmak edelim Ne adımı oluyor
Adım biz for döngüsü üzerinden kazmak olarak.
Oldu ilk şey Sayaç değişkeni merkezidir.
Ilk solundaki herşey parantez içinde noktalı virgül
yürütülür.
Bu durumda, biz i 0 eşittir int söyledi.
I adında yeni bir değişken bildirme, değişken bir tamsayı mı
ve biz içinde değer söylüyorsun bu değişken sıfır olacak.
>> Yaptığımız ikinci şey biz sonra hemen değerlendirir
Boole ifadesi.
Boole ifadesi olduğunu İki noktalı orta.
Ben az 10 olduğunu.
Bu doğru, burada doğru mu?
Biz sadece ben eşit olduğunu söyledi Sıfır ve böylece 0, en az 10
ve böylece durum doğrudur ve biz şimdi olacak
döngünün gövdesini yürütmek geçin.
Eğer yanlış oldu.
Eğer, örneğin, yerine sözü geçen i 0 oraya ben 15 eşittir söyledi eşittir
Ben 15 eşittir int.
Peki 15 10 daha az, bu yüzden döngünün gövdesini girin asla
Boole ifadesi nedeniyle yanlış olması değerlendirmek istiyorum.
>> Biz alt üst den geçmesi ardından, biz küme ayracı kapatmadan olduğunu karşılaşmak
Üçüncü şey olur.
Sayaç değişkendir artırılır, daha doğrusu, çizgiler
Bir ifadenin kod sonra içinde ikinci noktalı virgül
döngüler parantez için yürütülür.
Yani biz işe başlamak i 0 eşittir int söyledi.
Sonra olup olmadığını kontrol Boole ifadesi doğrudur.
0 10 yani bu doğru, daha azdır.
Yani biz devam edeceğiz vücudun döngü içine.
Things döngü içinde olur ve olacak biz kapanış kıvırcık olduğunu karşılaştıklarında
brace, sonraki şey yapmak, biz i artı artı söylüyorlar.
Ben sıfır şimdi biridir oldu.
Sonra biz tekrar değerini kontrol ortada Boole ifadesi.
Bir az 10'dur.
Yani biz bu geçmesi edeceğiz Tekrar ve tekrar işleme.
Biz kapanış alırsınız Yine kaşlı ayraç.
Biz dan i artırmak edeceğiz 1 ila 2 ve 2 ila 3.
Ve benzeri ve benzeri ve benzeri kadar sonunda i'nin değeri 10 olur.
10'dan 10 az mı?
Hayır.
0'dan Sayma, biz gittin döngünün 10 yineleme yoluyla.
Biz sadece, 10 kere tekrar ettik Biz Scratch bloğunda olduğu gibi.
Ve böylece temelde dört döngü için işlem.
>> Şimdi götürüp gerçek kod ve koyarak
Sadece bazı temel genel tablolarda.
İşte böyle oluyor.
Tüm deyimleri İlk yürütür başlar.
Birden fazla olabilir.
Ardından, Boole ifadesi kontrol edilir.
Ifadesi true olarak değerlendirilirse, vücuda döngü bir kez çalıştırmak.
Ifadesi değerlendirilirse false, biz bitirdik.
Biz yürütme yok tüm döngü gövdesi.
Biz idam ettikten sonra vücut döngü bir kez,
o zaman ne yapmak Orada artış parçası.
Hangi genellikle olacak i gibi bir şey artı artı
veya böyle bir şey, o bir sayaç değişkeni değiştirir.
Sonra, sonra biz, artırmak Yine ifadesini kontrol
ve tekrar bu adımları tekrarlayın ve ifadesi üzerinde dek
artık doğru.
>> Yani bir döngü için kullanım durumları nelerdir?
Eğer bir while döngüsü kullanmak kullanmak Bir döngü tekrarlamak istiyorum
kez bilinmeyen sayıda ancak muhtemelen tüm çalışmayabilir.
A Gerçekten yaygın örneği döngü bir süre kullanılan
Bir oyun için kontrol akışını çalıştırmaktır.
Sen bilmiyor olabilirsiniz ne kadar Kullanıcı oynuyor olacak,
ama saklamak istediğiniz aynı şeyi yapıyor.
Konumlarını güncelleniyor gemide çeşitli sprite.
Bir şeyleri tutmak istiyorum Her zaman, hareketli
ama ne zaman bilmiyorum kullanıcı çalmayı durdurmak için gidiyor
ya da gidiyoruz hayatımızın tükendi.
Yani bir süre döngü gerçekten Böyle bir şey için iyi.
Bu iyi bir kullanım durumunda bulunuyor.
>> Bir do için döngü sırasında, oldukça benzer.
Bir döngü bilinmeyen bir tekrarlamak istiyorum sayısı, ama en az bir kez.
Bir oyun için bu kullanabilirsiniz çok, ama gerçekten ortak kullanım durumu
giriş için kullanıcıya sorulmadan olduğunu.
Genellikle, bir şey diyebilirsiniz gibi, bana pozitif bir tamsayı vermek,
ve bunu koymak olabilir döngü sırasında do içinde.
Bu yüzden her zaman onlara soracak en az bir kere pozitif tamsayı için.
Onlar size pozitif bir tamsayı verirseniz, Eğer döngü patlak olabilir.
Sen yapılabilir.
Boole ifadesi olarak bunu yaparken yanlış olabilir.
>> Ve onları tekrar sormaz.
Onlar size negatif bir sayı nereye verirseniz Onlar var, bazı sözcük ya da bir şey yazın
gerçekten kullanışlı değil sen kullanabilirsiniz
döngü geri dönüp yapmak yok ederken Tekrar ve tekrar ve tekrar.
Kesinlikle sormak istiyorum Onları bir kez size bir numara vermek için
ama kaç kez bilmiyorum Bundan sonra onlar zararlıları olabilir.
Ve büyük bir kullanım bir do yüzden süre giriş için kullanıcıdan istemek için durum.
Ve döngüler için kullanın durum genellikle zaman olduğu
Eğer bir döngü tekrarlamak istiyorum kez ayrı bir sayıda,
olsa olmayabilir sayısını bilmek
moment Program derlenmiştir.
>> Yani, örneğin, belki bir program var nerede bir numara kullanıcıya sorar.
Ve onlar 100 girin.
Ve sonra for döngüsü olacak bu durumda 100 kez çalıştırın.
Ya da belki de girmek Programda 1000
ve döngü 1000 kez çalıştırın.
Bu kez belirli bir sayı.
Onlar mutlaka yok Ne bu sayı biliyor
derlendiği an programıdır.
Bir while döngüsü gibi değil nerede sonsuz olabilir.
Bu bir dizi çok var: Sadece bilmiyorum.
Şimdi ettik bile özetlenen tüm bu kullanım durumları,
Eğer bu oldukça bilmeli hemen her durum,
Tüm olabilir kavşak Bu döngü üç.
Sen döngü nereye için kullanabilirsiniz Aksi takdirde bir while döngüsü kullanmak istiyorsunuz.
Sen döngü yerde bir kullanabilirsiniz Bir do-while döngüsünde vb kullanmak istiyorum.
Bu, bazen biraz zor olabilir yani genelde iyi bir uygulama var
Tipik bir kullanım durumunda uymak için.
Döngü sırasında do kullanın eğer En az bir kez bir şey istedim.
Eğer yapmak istiyorsanız bir for döngüsü kullanın bir şey kez belirli bir sayıda.
Orada neden Sonuçta, işte döngüler üç çeşit.
>> Böylece kullanılabilir Sağ bağlamda.
Ama olabilir kavşak Onları isterseniz.
Eğer süre döngüler ile rahat hissediyorsanız ve her zaman döngüleri sırasında kullanmak istiyorum.
Bu bir şey olduğunu Yapabileceğiniz bunun rağmen
Biraz sözdizimsel olabilir zor, nerede için döngü
çok daha basit olurdu.
>> Benim adım Doug Lloyd ve bu CS50 olduğunu.