Merhaba, tekrar hoş geldiniz.
Yine de kontrol akışı hakkında biraz konuşacağız.
Şimdi doğrudan tekrar eden kod döngülerine dalalım.
İlk olarak, bu for döngüsü hakkında konuşacağız.
for döngüsü tamamen kodun tekrarlanmasıyla
ilgili olacaktır. Hatırlatmak gerekirse, tekrar eden
kodlar yinelemeye izin vermeyen bir yoldur ve
aslında aynı anda birden fazla benzer kod çalıştırıyor olabilirsiniz.
Dolayısıyla c programlama dili, kodu tekrarlamak istediğinizde kullanabileceğiniz
dil için tasarlanmış belirli yapılara sahiptir.
Bu da bir koşul sağlanana kadar bir ifade bloğunu tekrarlamanıza olanak tanır.
Yani for döngüsüne benzer ve bir Boolean ifadesini, bir koşulu değerlendireceksiniz.
Sonsuza kadar koşamazsın.
Bir döngüde sonsuza kadar koştuğunuzda, bu sonsuz bir döngü olduğu anlamına gelir.
Ve bunu yalnızca belirli zamanlarda, genellikle bir
şeyi izlemek veya dinlemek için tekrar yapmak isteyebilirsiniz.
Böylece bir döngünün kaç kez tekrarlanacağı sadece hesapla kontrol edilebilir.
Yapabileceğiniz 2 tür döngü vardır,
bir sayaç kontrol döngüsü veya sentinel kontrol döngüsü dedikleri gibi.
Bir sayaç kontrol döngüsü, döngünün 10 kez, 20
kez, 30 kez, belirli bir süre çalıştığı anlamına gelir.
Döngü içinde aynı deyim bloğunu birkaç kez
tekrarlar.
Sayaç kontrollü olmayan başka bir döngü türüne sahip olabilirsiniz.
5 kez çalışabilir, 100 kez çalışabilir, 20 kez isteyebilir, hepsi
bir koşula, bir değişkene veya başka bir şeye bağlıdır. Örneğin, kullanıcı quit tuşuna basana kadar döngümü
tekrar tekrar çalıştıracağımı söyleyen bir döngü çalıştırabilirsiniz.
Yani değişken çıkma olarak değişene kadar. Karşı kontrollü değil. Bağımlı değil.
Yine, 10 kez de çalışabilir, 100 kez de çalışabilir.
Bunlar 2 farklı döngü türüdür. Her ikisine de örnekler vereceğim,
ancak bunu yüksek düzeyde düşünün, ne zaman kodu tekrarlamak isterim?
Kodu 5 kez, belirli bir süre, kesin bir süre tekrarlamak isteyebilirim
veya bir kullanıcı tarafından girilen belirli bir
koşula dayalı olarak kod koymak isteyebilirim ve buna sentinel denir.
Bizim for döngümüzde for anahtar sözcüğü vardır. Belirli bir sayıda çalıştırmak
için kullanılır. Genellikle karşı kontrol için kullanılır, ancak buna gerek yoktur.
Sayaç kontrol döngüsü veya kontrol döngüsüne bir sentinel için kullanabilirsiniz.
Sana kalmış. Ancak birçok uygulamadaki örneklerin
çoğu, belirli bir miktarda karşı kontrollüdür.
Örneğin, 1'den 10'a kadar olan sayıları görüntülemek istiyorsanız, for döngüsünü kullanırsınız.
Farklı bir sayıyı görüntüleyen aynı printf deyimine
sahip 10 satır kod yazmak istemezsiniz.
Bu çok verimsiz. Çok zaman alıyor.
Kodu tekrarlamak için bir for döngüsü kullanırsınız.
Yapacağınız şey şuna benzer bir şey yapmaktır.
İşte for döngüsünün neye benzediğine ve sözdizimine
bir giriş.
for anahtar sözcüğünüz var ve ardından bu parantezler var.
Yine, parantezler for döngüsü için devam eden farklı şeyleri
tanımlar.
Sonra bir paranteziniz ve parantezlerin içinde ifadeleriniz vardır.
Yani yine parantezler, tıpkı bir if deyiminin gövdesini temsil
eden parantezler gibi döngünün gövdesini temsil eder.
Eğer tek bir ifadeniz varsa, parantezlere ihtiyacınız yoktur, ancak parantezleri
her zaman kullanmak iyi bir uygulamadır.
Buradaki örnekte, for anahtar kelimesini görüyorsunuz, tanımladığınız ilk şey bu olmalıdır.
İşlem, ne kadar süre çalışacağı ve for anahtar kelimesinden sonra parantezler arasında ne
görüneceği kontrol edilir, ki bu konuda özel ayrıntılara gireceğiz.
İçeride temel olarak 3 farklı ifade var.
Ve onları tanıyabilirsiniz çünkü noktalı virgülle ayrılmışlardır.
Yani noktalı virgül bunun bir ifade olduğunu söylüyor.
Peki bu 3 şey ne yapıyor, bunu açıklayacağız.
Tekrarlamak istediğiniz eylem,
döngünün gövdesinin içindedir, bu kadar çok kez olan şey budur.
Bu örnekte, döngünün gövdesi printf'tir.
Yani bir koşul doğru olarak değerlendirilirse, o sayıyı yazdırmaya devam edecektir.
Ve yine, tekli ifadeler için parantezleri atlayabilirsiniz.
Şimdi bunu ayrıntılı olarak inceleyelim.
for döngüsü için genel model bu tür bir ifadeye sahip olmanızdır.
Bir for ve ardından bir başlangıç koşulunuz var, bu sözde koddur.
Burada for döngüsünü tanımlamaya çalışıyorum.
Yani başlangıç koşulu ilk şeydir, ilk noktalı virgülden önceki her şey.
İkinci şey, sonunda noktalı virgül bulunan devam
koşuludur ve ardından parantezler arasındaki son şey yineleme başına eylemdir.
Ve bunların her birini tanımlamak istiyorum. Ve sonra gövdenin içinde döngü ifadesi yer alır.
Döngü ifadesi oldukça kolaydır. Bu sadece vücudun içinde.
Bu, her seferinde tekrarlanan ve yürütülecek olan koddur.
Bu oldukça basit.
Ve yine, birden fazla deyiminiz varsa parantezi kesebilir veya tek bir deyiminiz
varsa parantezi atlayabilirsiniz.
Başlangıç koşulu, ilk noktalı virgülden önceki parantez
içindeki ilk şey, her zaman olmasa da genellikle döngü kontrol
değişkeni adı verilen bir değişkeni başlatır.
Her yinelemede bakmaya başlayacağınız değişken budur.
Dolayısıyla, döngü kontrol değişkeni tipik olarak bazen bir sayaçtır,
her zaman değil, bunu tekrar vurgulamak istiyorum, öyle
olmak zorunda değil. Ancak çoğu zaman bir for döngüsünde
bu bir sayaçtır ve döngünün ne sıklıkta tekrarlandığını izler.
Bu başlangıç koşulu ve döngü kontrol değişkeninin yaptığı şey budur.
Aynı türden birden fazla değişkeni burada virgülle ayırarak da bildirebilir
ve başlatabilirsiniz. Böylece burada birden fazla değişken başlatabilirsiniz.
Şimdi, kullandığınız c derleyicisine bağlı olarak,
bu değişkenleri for deyimi içinde bildiremeyebilirsiniz.
C99 derleyicisinin altında bir derleyici kullanıyorsanız, değişkenleri
for deyiminin dışında bildirmeniz gerekir ve daha sonra bunları başlangıç koşulunun söylediği
yerde başlatırsınız, ancak bu örneklerden
bazılarını inceleyeceğiz.
Ancak başlangıç koşulu, değişkenleri başlattığınız yerdir.
Bu döngü kontrol değişkenidir ve bu nedenle adlandırılmıştır çünkü döngüyü başlattığınızda
döngünün ne sıklıkta yürütüleceğini kontrol eder.
Bahsetmek istediğim bir sonraki şey, devam koşulu, devam koşulu, for döngüsündeki
bu ilk noktalı virgülden önceki kısım.
Bu mantıksal bir ifadedir.
Bu, doğru veya yanlış olarak değerlendirilecek koşuldur.
Bu, döngüye atlayacağınız veya döngüden çıkacağınız zamandır.
Bu, döngünün yürütülmeye devam edip etmeyeceğini belirler.
Bu koşul true değerine sahip olduğu sürece, döngü yürütülmeye
devam eder, gövdedeki tüm ifadeler yürütülür.
Bu tipik olarak döngü kontrol değişkeninin değerini kontrol edecektir.
Böylece döngü kontrol değişkenini başlangıç koşulunda başlatırsınız
ve ardından devam koşuluna bakarsınız.
Ne yaptığınızı bildiğiniz sürece buraya herhangi bir mantık veya aritmetik ifade koyabilirsiniz.
Devam koşulu döngünün sonunda değil başında test edilir.
Bu, ön test döngüsü olarak adlandırılır.
Test sonrası bir döngü olan do-while döngüsü hakkında konuştuğumuzda farkı fark edeceksiniz.
Ancak bunun anlamı, döngü deyiminin bir kez yürütülebileceği veya
0 kez yürütülebileceğidir.
Her şey devam koşulunun doğru veya yanlış olarak değerlendirilip değerlendirilmemesine bağlıdır.
Yanlış olarak değerlendirilirse, gövdeyi asla çalıştırmazsınız.
Doğru olarak değerlendirilirse, bu gövdeyi en az bir kez çalıştırırsınız.
İkinci noktalı virgülden sonra for döngüsünün en sonunda yer alan yineleme başına eylem,
genellikle döngü kontrol değişkeninde bir tür değişiklik yapar.
Eğer bir döngü sayacı ise artırır veya azaltır ya
da eğer bir sentinel döngüsü ise kullanıcıdan daha fazla girdi girmesini isteyebilir.
Ayrıca bir değişken üzerinde birden fazla değişiklik yapabilirsiniz.
Döngü kontrol değişkenini değiştirebilir ve diğer değişkenleri değiştirebilirsiniz.
Sadece onları virgülle ayırmanız gerekir.
Ancak söylediğim her şeyi özetlemek
gerekirse, bunu açıklayan küçük bir tablomuz var.
Ancak bundan bahsetmeden önce küçük bir örneğe bakalım.
İşte bir örnek. Anahtar kelimemiz için var.
Ve sonra int I eşittir 1 j eşittir 2 olduğunu fark edeceksiniz,
değişkenleri burada başlatıyoruz.
Ve aslında burada virgülle ayrılmış 2 değişkeni başlatıyoruz, tipik olarak bir
for döngüsünde genellikle sadece birini, döngü kontrol değişkenini başlatırız.
Ancak bu durumda, I ve j'yi başlatıyoruz.
Noktalı virgülden sonra da bir koşulumuz var.
Bu döngüye ne zaman gireceğiz ve ne zaman çıkacağız.
I değeri 5'ten küçük olduğu sürece gireceğiz.
Boolean ifademiz doğru veya yanlış olarak değerlendirilir.
Ve ikinci noktalı virgülden sonra, döngü
kontrol değişkenini veya onunla ilgili diğer değişkenleri değiştireceğiz.
Burada bir artı yapıyoruz, artı I, bu bir artırma
operatörü, önek I. Ve sonra j'yi j artı 2'ye eşit olarak atıyoruz.
Bu, genellikle döngü kontrol değişkenini değiştiren
x koşulunuz olacaktır.
Ve sonra döngünün gövdesinde sadece tek bir ifade vardır, bu yüzden parantezlere ihtiyacımız yoktur.
Sadece I çarpı j değerlerini yazdırıyoruz.
Dolayısıyla, bu kod tarafından üretilen
çıktı tek bir satırda 2, 8, 18, 32 ve 50 değerleri olacaktır.
Döngünün ilk yinelemesinde I değeri 1'e, j değeri 2'ye eşit olacaktır.
Ve böylece I çarpı j, yani 1 çarpı 2 diyecek ve bunu görüntüleyecektir.
I'nın 5'ten büyük olmadığından emin olmak için kontrol edecek, I değilse 1'dir.
Bu yüzden geri dönecek ve ikinci kez yürütülecektir.
Ayrıca son ifademizdeki I değişkenini de değiştiriyoruz.
Yani döngünün ikinci yinelemesinde, I değeri 2'ye eşit olacaktır.
Ve j, 2 artı 2'ye eşit olacaktır ki bu da 4 eder.
Şimdi 2 ile 4'ü çarpacağız, bu da 8 eder ve
bunu göstereceğiz ve sonra kontrol edeceğiz
I 5'ten büyük mü? Hayır, ben hala 2 yaşındayım.
Böylece I'yı bir sonraki yineleme için 3'e
eşit olacak şekilde değiştiririz ve j'yi 4 artı 2'ye yani 6'ya eşit olacak şekilde değiştiririz.
Ve sonra döngünün üçüncü yinelemesi
için I ile J'yi çarpıyoruz. Yani 3 kere 6 diyoruz ve 18'i gösteriyoruz.
Dördüncü yinelemeyi gerçekleştirmeden önce, I değerinin 5'ten büyük olup olmadığını kontrol ederiz.
Hayır, dört. Sonra onu artırırız, 5 olduğunu söyleriz. 5'e eşit, yani yine de çalışacak.
Sonra 32 yapacağız, sonra 50 yapacağız.
Yani bu bir ifade içindir. Bunu çalıştırmak ve kod tarayıcısında yürütmek ve etrafta
oynamak ve bir şeyleri değiştirmek istiyorsunuz.
Ancak burada yaptığımız şey, tek bir kod satırında 3 ayrı şey yapmaktır.
Döngü kontrol değişkenini veya diğer değişkenleri başlatıyoruz.
Çıkış koşulumuz olan ilk noktalı virgülden sonra Boolean ifademiz var.
Ve sonra döngü kontrol değişkenini ve for ifadesinin son kısmı olarak istediğimiz
diğer değişkenleri değiştiriyoruz.
Ne yaptığımızı özetlemek için bir kitaptan bu küçük kullanışlı
tabloyu buldum ve size göstermek istedim. Bu her şeyi özetliyor.
İlk noktalı virgül döngü kontrol değişkenini başlatır.
İlk noktalı virgülden sonra, koşulumuzu, Boolean ifademizi yapıyoruz.
Ve ikinci noktalı virgülden sonra, döngü
kontrol değişkenini değiştiriyoruz. Bu da gördüğünüz tipik bir örnektir.
Bu, 1'den başlayıp 10'a kadar giden bir sayaç kontrol döngüsüdür.
Yani bu aslında 10 kez yürütülecek.
Anahtar, orada 10'a eşitten daha az olmasıdır. Dolayısıyla, ilişkisel operatörleri koşullarımız olarak göreceksiniz,
tıpkı if deyimimizde ilişkisel operatörleri koşullarımız olarak gördüğümüz gibi.
Buradaki anahtar, döngü kontrol değişkenini değiştirmek istemenizdir, aksi takdirde asla çıkamazsınız.
Dolayısıyla artı artı sayısı çok önemlidir.
Ve artı artı değişkeninden önce ya da sonra olması konusunda endişelenmenize
gerek yoktur çünkü
sadece döngü yinelemesinden sonra
artacak ya da azalacaktır, bu nedenle artı artı sayım ya da sayım artı
artı yapmanız fark etmez.
Ayrıca yine derleyiciniz için çalıştırdığınız c sürümüne bağlı
olarak, count değişkenini for
döngüsünün içinde bildirebilir ya da int count eşittir 1 demeniz veya for
döngüsünün dışında in count demeniz ve ardından ilk noktalı virgülde başlatmanız gerekebilir.
C99, başlatma ve bildirimi for döngüsünün aynı
bölümüne eklemiştir.
Ancak for döngüsü temelde bu şekilde çalışır.
Şimdi küçük bir örneğe geçelim, size for döngüsünün esnekliğini göstermek istiyorum.
İşte temelde sadece bazı tamsayıları toplayacağımız bir örnek.
Bu örnekte, kullanıcıdan toplamak istediği tam sayıları girmesini isteyeceğiz.
Bunu count adlı bir değişkende saklayacağız.
Şimdi, girdikleri sayıya bağlı olarak tüm bunların üzerinden geçen
bir for döngüsüne sahip olacağız ve bu döngüyü birçok kez yineleyeceğiz.
Yani burada 4 diyoruz, işaretsiz int'imiz var, int I eşittir 1 için işaretsiz
olmak zorunda değil. Döngü kontrol değişkenini başlatıyoruz.
Ve sonra diyoruz ki, eğer I sayımdan küçükse, o zaman çıkacağız ve sonra döngü
malzemesini artı artı I olarak değiştireceğiz.
Yani bu çalışacak. Yine, 1'den
kullanıcının girdiği sayıya kadar, 10 veya 20.
Ve yapacağımız tek şey, toplamın toplam artı 1'e eşit olduğunu söylemektir.
Şimdi for döngüsü çok güçlüdür çünkü for döngüsü birçok değişkeni
değiştirmenize izin verir.
Bu toplam artı eşittir I'yi for döngüsünün gövdesine koymamıza bile gerek yok.
Bunu son ifadenin sonuna koyabiliriz.
Yani I'yı 1 artırmanın yanı sıra, toplam artı eşittir I artı artı diyebiliriz.
Böylece her şeyi tek bir kod satırında yaptık
ve bu da size esnekliği gösteriyor. Çünkü değişkeni for deyiminin
içinde değiştirebiliyoruz. O vücut hattına sahip olmak zorunda değiliz.
Şimdi bu örneği nasıl değiştirebileceğinizi göstermek ve çıktının
ne olduğunu görmek için kod blokları halinde bir göz atalım.
İşte derste verdiğimiz örnek. Devam edip bunu derlemeye çalışmak istiyorum.
Ve bunu derlediğimde, bir hata aldığımı fark edeceksiniz.
Değişkenimi for deyimimin içinde bildiremeyeceğimi söylüyor. Bunun nedeni c derleyicisinin eski bir sürümünü
çalıştırıyor olmam. C89 kullanıyorum.
Muhtemelen buna sahip olmayacaksınız.
Ancak bu tür bir hata ile karşılaşırsanız, tek yapmanız gereken for döngüsünün
dışında bu hatayı gidermektir. Yani sadece imzasız I diyorsun.
Ve sonra for döngüsünün içinde, bunun gibi
bir şeyi başlatırsınız. Şimdi oluşturmayı deneyelim ve bu
biçim belirleyicilerin bazılarından kurtulmam gerekiyor.
Başarılı bir şekilde derlediğimde ve bu programı çalıştırdığımda,
döngünün nasıl çalıştığını göreceksiniz.
Benden toplamak istediğim tam sayıları girmemi isteyecek. Eğer 5 girersem, 1, 2,
3, 4 ve 5'in toplamı 15 olacaktır.
Bunu hata ayıklamak için yapabileceğimiz şey, for döngüsüne bir ayraç ekleyebiliriz ve
sadece kaç kez çalıştığını görmek isteyebiliriz, hata ayıklamak için değil, sadece
neler olup bittiğini görmek için bir print deyimi ekleyebiliriz, döngü içinde diyebiliriz.
Ve bu bize döngünün 5 kez çalıştığını söyleyecektir
çünkü saymak için I'yi çalıştıracaktır.
Göstermek istediğim şey bunun kaç kez çalıştığı. Şimdi bunu oluşturduğumda ve
çalıştırdığımda, her yinelemede neler olduğunu göreceğim.
Bu yüzden 8 diyeceğim.
İç döngü, iç döngü, iç döngü, satır beslemesi eklemedim. Bu yüzden okuması zor, ancak
iç döngü 8 kez görüntülenir.
Ve sonra bu sayıların her birini döngüler içinde topluyorum, böylece
cevap 36, 1 artı 2 artı 3 artı 4 artı 5 artı 6 artı 7 artı 8 oluyor.
Yani bununla oynayabilirsiniz. Ancak yine döngü kontrol değişkenimizi
başlatıyoruz. Çıkmak için koşulu kontrol ederiz. Kullanıcı ne girdiyse ona ulaştığımızda
çıkacağız. Kullanıcı 8 girdiyse, 8 kez çalıştıracağız
ve sonra I'yı değiştirmemiz gerekecek. Eğer burada I'yı değiştirmeseydik, sonsuza kadar sürecek bir döngü olurdu.
Ve programı çalıştırdığınızda ne olurdu,
sonsuza kadar çalışırdı.
Böylece, sayıyı girdikten sonra programınızın asla çıkmayacağını görürsünüz.
Diyelim ki 6 girdik, enter tuşuna bastım, neler olduğuna bakın, sadece
içerideki döngüyü yazdırıyorum. Hiç çıkmıyor.
Sonsuz bir döngü. Yani bu son şey çok ama çok önemli. Döngü kontrol değişkeninizi her zaman değiştirmek istersiniz.
Ve yine, döngü kontrol değişkeni çıkışı belirler, bu durumda I.
Bu yüzden for döngüsü oldukça fazla kullanılır.
Kullanımı çok kolaydır ve döngü içinde 3 farklı şey yapmanıza olanak tanır.
Döngü kontrol değişkenini başlatın, çıkış koşulu için
değişkenin döngü kontrolünü kontrol edin ve ardından bu döngü
kontrol değişkenini değiştirin.
Bunlar bir döngü içinde yapmanız gereken ve tek bir deyimle yapabileceğiniz 3 şeydir.
Şimdi hızlıca sonsuz döngü hakkında konuşmama izin verin.
Bu yüzden sonsuz bir döngü gösterdim. Burası asla çıkamayacağınız bir yer.
Ve for döngüsü ifadesine herhangi bir parametre koyma zorunluluğunuz yoktur.
Aslında bilerek sonsuz bir döngü yazabilirsiniz.
Bunu yapmanın yolu sadece noktalı virgülleri oraya koymaktır.
Böylece 2 noktalı virgül içeren bir for döngüsüne sahip olursunuz.
Eğer bunu görürseniz, sonsuz bir döngü yazıyorsunuz demektir.
Genellikle sonsuz döngülere sahip olmak istemezsiniz,
ancak döngüyü devam ettirmek için gerekli koşulun bulunmadığı zamanlar olabilir.
Döngü sonsuza kadar devam edecektir. Verileri izliyorsanız bu bazen yararlı olabilir.
Yani verileri izliyorsanız, orada bir şey olabilir.
Tipik olarak, bir sonsuz döngüye sahip olduğunuzda, genellikle programın yürütülmesini
belki bir saniyeliğine duraklatacak bir sleep'e de sahip olursunuz, böylece bir şeyi izlersiniz.
Sonsuz bir döngüye sahip olabileceğiniz diğer kullanım durumu ise bir bağlantıyı dinliyor olmanızdır.
Yani eğer bekliyorsanız ve bağlantı için dinliyorsanız ya da bir şeyi görmek için bir şeyi
çekiyorsanız bunu yapabilirsiniz.
Şimdi bazı insanlar asla çekmemeniz ve asla dinlememeniz gerektiğini
savunuyor, ama bu başka bir tartışma.
Sonsuz olan bazı for döngüleri için gerçekten tek durum budur.
Bu döngü kontrol değişkenini değiştirerek sonsuz döngülerden mümkün olduğunca kaçının.
Umarım bu yardımcı olmuştur. Bu for döngüsüdür.
Zorluklarımızdan birinde bir for döngüsü kullanacağız, böylece daha aşina olacağız.
Teşekkür ederim.