Merhaba, hoş geldiniz. Bu derste, iç içe döngüler ve döngü kontrolü hakkında konuşmak istiyorum.
İç içe döngüler, döngülerin içindeki döngüler, döngü kontrolü break ve continue
ifadeleri ile ilgilidir.
Yani iç içe döngüler.
Bir döngüyü başka bir döngünün içine yerleştirmek istediğiniz zamanlar olabilir.
Çok mantıklı.
Örneğin, bir sokaktaki
her evde yaşayanların sayısını saymak isteyebilirsiniz.
Yani yapacağınız şey, evden eve adım attığınız bir dış döngüye sahip olmaktır.
Ve sonra içinde bulunduğunuz her evin sakinlerinin sayısını sayarsınız.
Umarım bunun nasıl iç içe geçmiş bir döngü olabileceğini gözünüzde canlandırabilir veya anlayabilirsiniz.
Yine, tüm evlerin içinden geçecek dış döngü.
Ve sonra dış döngünün her yinelemesinde karşılaştığınız her ev için evin içine girecek
ve tüm insanları saymak için bir döngüye sahip olacaksınız.
Bu, c'de iç içe geçmiş bir döngü kullanmak istediğinizde kullanabileceğiniz
küçük bir kullanım örneğidir.
İşte bir örnek. Tıpkı düşündüğünüz gibi bir döngünün
içinde bir döngü gibi görünüyor, gerçekten çok karmaşık değil.
Bu örnekte, for döngülerini for için kullanıyoruz.
Döngüler güzeldir çünkü döngü kontrol değişkenini başlatabilir, koşul
kontrolümüzü ve değişiklik döngü kontrol değişkenimizi tek bir satırda yapabiliriz.
Yani bu dış döngü ve buna dış iç döngü olarak bakın.
Dış döngü tam olarak ima ettiği şeydir. Dış taraftaki halka.
Ve birçok farklı iç içe geçme katmanına sahip olabilirsiniz. Çok sayıda iç döngüye sahip
olabilirsiniz.
Bu durumda, içinden geçiyoruz ve bu sayaç
kontrollü döngü, birden başlıyoruz ve saymaya kadar gidiyoruz.
Burada sayının ne olduğunu bilmiyoruz, önemli değil.
for döngüsünün gövdesinde, toplamın 0'a eşit olduğunu söylüyoruz. İç döngü için toplamı başlatıyoruz.
Ve sonra iç döngünün içinde, başka bir for döngüsü görüyoruz ve j eşittir
1, j eşitten küçüktür I ve artı artı j. O zaman toplam artı j'ye eşittir deriz.
1'den I'ya kadar olan tam sayıların toplamını hesaplıyoruz.
Yani aslında yaptığınız şey 5 rakamını girmektir.
Ve döngünün ilk yinelemesi için,
1 2 3 4 ve 5'i topluyorsunuz.
Döngünün bir sonraki yinelemesinde,
2 3 4 5'i toplayacaksınız.
Döngünün üçüncü yinelemesi için, 3 4 5 ve benzerlerini topluyorsunuz.
Bu nedenle iç döngüler özellikle kullanım durumuna bağlı olarak gereklidir, sadece bir döngünün
içindeki bir döngü mükemmeldir.
Bunu çok sık göreceksiniz.
Bundan çekinmeyin. Ne yapmanız gerektiğine ve hangi sorunu çözmeye çalıştığınıza bağlı olarak,
genellikle oldukça fazla kullanılır.
Bu noktada, her zaman for döngüsü içinde for döngüsü olmaz, for döngüsü içinde
while döngüsü de olabilir. Bir for döngüsünün içinde bir do while döngüsü
olabilir, fark etmez.
Bu örnekte, for
döngüsünün gövdesi içinde while anahtar sözcüğü kullanılarak
çağrılan bir iç döngü olması dışında aynı örnek.
Yani hala 1'den I'ya kadar bazı tamsayıları hesaplıyoruz.
while döngüsünün dışında bazı uh başlatmalarımız var.
while kontrolü içinde bir koşulumuz var
ve while döngüsünün gövdesi içinde değiştirdiğimiz
döngü kontrol değişkeni olan toplamlarımız var.
Yani toplam artı eşittir ve ardından döngü kontrol değişkenini artı artı j ile değiştiriyoruz.
Dolayısıyla, artı artı j'yi değiştirmeseydik, while döngüsü için sonsuz bir döngüye sahip olurduk.
Ancak aynı çıktıyı veriyor, sadece iç içe döngü olarak for döngüsü yerine while döngüsünü kullanıyor.
Yani iç içe yerleştirme, herhangi bir şeyi iç içe yerleştirdiğinizden farklı değildir.
İç içe if deyimleri, if deyimlerinin içinde if deyimleri,
döngülerin içinde döngü deyimleri.
İç içe döngüler kavramından uzaklaşmak
için continue deyiminden bahsedelim.
Bu noktaya kadar döngüler hakkında konuştuğumuzda, döngüyü
her zaman çıkış koşuluna, yani false olarak değerlendirilen Boole ifadesine
bağlı olarak birkaç kez çalıştırdık.
Ancak, bir döngüyü özellikle erken sonlandırmak istediğiniz veya hiçbir şey yapmadan
döngünün bir sonraki yinelemesine devam etmek
istediğiniz zamanlar vardır.
İkinci durumda hiçbir şey yapmadan devam etmek,
esasen atlamak, bunu yapmak için continue
deyimini kullanabilirsiniz.
Dolayısıyla, bir döngünün gövdesindeki continue deyimi aşağıdakileri yapar.
Her şeyden önce, bunu başlatmak istiyorsanız, tek yapmanız gereken continue anahtar sözcüğünü
ve ardından döngünün gövdesine noktalı virgül koymaktır.
Ancak yapacağı şey, temelde bu yinelemeyi
atlamak olacaktır. Yani continue'ın altındaki herhangi
bir şey, döngünün gövdesinin içindeyse yürütülmeyecektir.
Bu nedenle, çoğu zaman bir koşula bağlı olarak döngünün en üstünde
olmak isteriz, bu genellikle bir if deyimine sarılır.
Bu özel bir durumsa, döngünün gövdesindeki kodlardan herhangi
birini çalıştırmak istemiyorum, sadece bu yinelemeyi
atlayın ve bir dahaki sefere kontrol edin.
Ve yine, bir yinelemeyi atladığınız ve atladığınız için biraz kafa karıştırıcıdır, ancak geçerlidir
ve birden fazla kontrol yapmanın bir yoludur.
Dolayısıyla, Boole ifadenizin içinde döngü çıkış koşulunuz olsa bile, başka
bir kontrol daha yapabilirsiniz.
Ve bu kontrol döngüden çıkmayacak, ancak bir yinelemeyi
atlayacak.
Bu yüzden yinelemeyi atlamak istediğinizde tekrar kullanılır. Bunun avantajı, devam etmeyi kullanabilmeniz
ve çok fazla yuvalanmayı ortadan kaldıracak olmasıdır.
Ayrıca, döngü bloğunuzun içindeki birçok ek if deyimini de ortadan kaldıracaktır.
Dolayısıyla, ifadeler çok uzun olduğunda
veya derin iç içe geçme olduğunda okunabilirliği artırabilir.
Eğer çok fazla yuva yaptığınızı fark ederseniz.
"Belki de bunun yerine devam etmeyi kullanabilirim" demek isteyebilirsiniz.
Veya döngünün gövdesi içinde belirli şeyler yapan çok
sayıda if deyiminiz olduğunu fark ederseniz, belki bir continue yapmak istersiniz.
Kodu basitleştirmek yerine karmaşıklaştırıyorsa continue'ı kullanmayın.
Ne yaptığınızı bilmiyorsanız devam düğmesini kullanmayın.
İşte devam etmek için bir örnek.
Bu örnekte, gün türünde yeni bir enum oluşturuyoruz ve geçerli değerlerin
Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi Pazar olduğunu söylüyoruz.
Ve sonra enum'umuzu Pazartesi olarak başlattığımız
bir for döngümüz var ve gün Pazar'a eşitten
küçük olduğu sürece, bu çıkmak için bir koşuldur
ve sonra artı artı gün diyoruz.
Kendinize bir enumu nasıl artırdığımız sorusunu sorabilirsiniz.
Kaputun altındaki bir enumun bir tamsayı olduğunu unutmayın.
Yani bir enum üzerinde artı artı gün diyebilirsiniz ve bu sadece onu bir sonrakine artıracaktır.
Unutmayın, Pazartesi 0'a eşittir, Salı 1'e eşittir, Çarşamba
2'ye eşittir, hepsi listenin sırasıdır.
Yani enumları artırmak için mükemmel bir şekilde uygundur.
Bu for döngüsünde eğer günlerden Çarşamba ise, atlamak
istiyoruz. Hiçbir şey yapmak istemiyoruz. Basmak istemiyoruz.
Bu yüzden devam edin diyoruz. Gün Çarşamba'ya eşitse
devam edin. Yazdırma satırını atlayacak. Döngünün en üstüne geri dönecek
ve bir sonraki yinelemeyi yürütecektir.
O zaman Perşembe günü olacak.
Çarşamba gününe eşit olmayacak, bu yüzden atlamayacak.
Hemen aşağı inecek ve Çarşamba olmadığını yazdıracak.
Yani bu yaygın bir kullanım durumudur, continue kullanımının yaygın bir örneğidir, sözdizimini kullanmak çok kolaydır, sadece basit
bir anahtar kelime ve ardından noktalı virgül.
Döngüde garip bir şey yapmak isteyebileceğiniz diğer durum
ise erken çıkmak istemenizdir.
Yani normalde döngünün gövdesine girildikten sonra,
bir program döngünün gövdesindeki ve her bir yineleme için tüm ifadeleri
yürütecek ve ardından kontrol edip dışarı atlayacaktır.
Ve biraz farklı bir atlama yapan continue'ın nasıl çalıştığını biliyoruz.
Döngüdeki tüm ifadelerin yürütülmesini değiştirebilen başka bir ifade daha vardır,
buna break denir.
Bu biraz tanıdık gelecektir çünkü switch deyiminden bahsederken break anahtar sözcüğünü
kullanmıştık.
Hatırlayın, davalarımız olduğunda, davalardan bu şekilde ayrılırdık.
break anahtar sözcüğünü bir döngü içinde de kullanabilirsiniz.
Ve bunun yapacağı şey, döngüden atlamak olacaktır.
Dolayısıyla break deyimi, programın yürütmekte olduğu döngüden hemen çıkmasına neden olacaktır.
Döngüdeki ifadeler atlanır ve döngünün yürütülmesi sonlandırılır.
Yani döngünün dışına atlıyorsun.
Erken infaz ediyorsun. Break deyimi iç içe geçmiş döngüler içindeyse, yalnızca onu
içeren en içteki döngüyü etkileyecektir. Sadece içinde bulunduğunuz döngüden çıkacaksınız.
Bunu yapmak için break anahtar kelimesini ve ardından noktalı virgül kullanırsınız.
Break genellikle ayrılmak için 2 ayrı neden olduğunda bir döngüden ayrılmak için kullanılır.
Daha önce bir yinelemeyi atlamak istediğiniz başka bir nedeniniz olabileceğinden
bahsetmiştim, ancak bir döngüden atlamak istediğiniz 2 neden, 2 koşul varsa, bir kesme kullanabilirsiniz.
Yalnızca bir koşulunuz varsa,
bu yalnızca döngünün içinde while parantezinin içinde veya for döngüsündeki
ikinci noktalı virgülden önce yer alan koşuldur.
Break, bahsettiğim gibi switch deyimlerinde de kullanılır.
Bu yüzden size bunu hatırlatmak istedim. Onları karıştırmayın.
Yine de temelde aynı şeyleri yapıyorlar. Koddan atlıyorlar.
Bir switch deyimi kesildiğinde switch deyiminden
tamamen çıkılır, bir döngü kesildiğinde bu döngüden çıkılır.
İşte bir örnek. Bir while döngümüz var.
Bazı tam sayıları yazdırıyoruz.
Bazı tam sayıları okuyoruz. İç içe geçmiş bir while döngümüz var.
İç içe geçmiş while döngüsünün içinde ne girildiğini
kontrol ederiz. Ve 100'den büyükse, bu iç
döngüden çıkmak istiyoruz. Biz de öyle yapıyoruz.
Daha sonra dış döngüde başka bir kontrol yapmamız gerekir. Eğer 100'den büyükse, dış
döngüden çıkarız.
Eğer ikinci mola olmasaydı, ikinci dış döngüden asla atlayamazdınız.
Bu durumda, burası bana gitmeniz gereken bir yeri hatırlatıyor.
İç içe geçmiş 5 katmanınız olduğunu düşünün, while döngüsü içinde while döngüsü
içinde while döngüsü içinde while döngüsü içinde while döngüsü.
Döngülerden çıkmaya çalışmak için sadece break kullansaydınız,
her döngüde çıkmak için tüm bu if deyimlerine sahip olurdunuz.
Tüm bu if ifadelerini yapmak yerine, bir
go to kullanabilirsiniz. Go to, tek bir komutla tüm döngü durumu döngülerinden atlayacaktır.
Yani bu bir kullanım durumu. Ancak bu durumda, sadece kırılmaları
gösteriyoruz ve içinde bulunduğunuz döngüden çıktığınızı
anladığınızdan emin oluyoruz.
Ve bu durumda, iki döngüden ayrılıyoruz.
Yani bunlar, esasen beklediğiniz kodu tekrarlayamayacağınız 2 örnek,
2 anahtar kelimedir.
Bu nedenle, döngüde bir break veya continue görürseniz, neler olup bittiğini
anladığınızdan emin olun çünkü yürütüleceğini
düşündüğünüz belirli bir kodu yürütmüyor olabilirsiniz.
Yine, genellikle bir if koşulunun içine sarılır. Yani bu şekilde bakabilirsiniz,
ancak break veya continue kullandığınızda da iyi yorumlar sağlamak istersiniz.
Umarım bu yardımcı olur. Bir sonraki derste, bu döngüleri kullanabileceğimiz
ve while for döngüleri ile break ve continue hakkında her
şeyi öğrenmenize yardımcı olacak bir challenge yapacağız.
Teşekkür ederim.