İç İçe For Döngüsü Mantığı
-
using System; class fordongusu { public static void Main() { int i, j, k; for (i = 1; i < 20; i++) { for (j = i; j < 20; j++) { Console.Write("A"); } for (k = 1; k <= i; k++) { Console.Write("*"); Console.Write(" "); } Console.WriteLine(); } Console.ReadKey(); } }
Selam dostlar, hobi olarak C# öğrenmeye çalışıyorum. Belki sonra unity falan bakıcam ama daha çooooook başındayım, karın yağmurun
soğuğun :)) iç içe for öğrenmek için üçgen yapmayı denedim. ben beceremedim, bu kod parçası alıntı. bana mantığını anlatabilecek olan
var mı? Benim kafam karıştı. hangi forun neyi arttırdığını anlayamadım. 20-19-18 diye azalan ve boşlukları veren foru hangisi kontrol
ediyor. Beni bu konuda, uzunların bilal gibi düşünüp mantığını anlatabilecek dostlarım varsa çok sevinirim. Saygı ve sevgiler.
Mylitta tarafından 19/Nis/20 18:13 tarihinde düzenlenmiştir -
Önce en içteki çalışır. O bittiğinde bir üstteki. Öle silsileyle gider.
-
Hocam ilgili satırlara ( Burda ekrana değerleri bastığın satırlar ) breakpoint koyduktan sonra, ilgili değişkenlere "add watch" ekledikten sonra debug modda çalıştır. aşağıda "watch 1" yazan yere tıkladıktan sonra adım adım "countinue" butonu ile ilerlet. Adım adım hangi işlemleri yaptığını, nereye uğrayıp nereye uğramadığını, hangi satırın çalıştığını, değişkenlerin o satıra kadarki değerlerini görüntüleyebilirsin hocam.
-
bende yeniyim c# ta. :d biraz basit mi kaçacak yazdıklarım bilemiyorum ama bişeyler yazayım.
her adımda kodun ne yaptığını algılamaya çalışın. i=1 ilk for döngüsü başladı. ikinci for döngüsünde j=1 oldu. 20den küçük 1 değeri. ekrana A yazdı ve j değeri 1 arttı j=2 oldu.hala 20 den küçük ekrana böylece 19 defa A yazacak. writeline yerine write kullanıldığı için yeni satıra geçmiyor bunu biliyorsunuzdur zaten. j=20 olunca ikinci döngü bitecek 3. for döngüsü başlayacak ama bu 3. döngü iç içe değil ikinci bittikten sonra işe başlıyor. k=1 oldu. i değeri 1 idi. ekrana * ve boşluk yazılacak aynı satıra tabi writeline değil line olduğundan. k bir arttırıldı k=2 oldu. (k=2)<=1 sağlanmadığından 3. döngü bitti. en sonda da Console.WriteLine(); ile yeni bir satıra geçilmiş oldu. şimdi ilk döngünün 1. işlemi tamamlanmış oldu.
iç içe for döngülerine şöyle bi baktığınızda ne iş yaptığını algılamaya şu aşamada gerek var mı? beynimiz o kadar harika değil malesef çalıştırın kodu ne yaptığını öğrenin tamam. :D bu döngüleri algılayabilmek için algoritma yazımına hakim olmak gerekli. biraz matematik geçmişi de gerekli onun için. tabi burada sizin niye c# öğrendiğiniz sorusu da önemli. her şeyi öğrenip bilgisayar bilimleri experti olacaksanız matematik öğrenin matematiksel problemleri kod yazarak çözmeye çalışın vs. ama öylesine öğreniyorsanız fazla kafa yormayın derim. bir amaç koymak lazım misal unity ile 2d platform koşu oyunu yapacağım diyin o öncelikte ilerleyin yoksa ucu bucağı yok öğrenmenin.
-
Başlangıçta kendinize şu soruyu sorun "Bu biraz karışık mı?". Evet, bu başlangıç için karışık. O nedenle basit for döngüsünü iyice öğren sonra üstüne bir şeyler katarak ilerlersin.
Önce tepeleri aşın, dağları sonra aşarsınız. Yoksa sıkılıp bırakma ihtimaliniz fazlacadır.
-
kanka sana bir tavsiye vericem. hep ilgilen c# la. gözünde büyütme ben 5 yıl önce iyide öğrenirken bir kaç dangalak şevkimi kırmıştı bırakmıştım. devam etseydim baya öğrenirdim.
sefer alganın kitabını al baya iyi kitap
-
İçteki döngü en hızlı çalışır..
O kendi turunu tamamlayınca üst döngü ikinci elemana geçer..
Kilometre sayacı gibi..
-
Mylitta bunu yazdı
using System; class fordongusu { public static void Main() { int i, j, k; for (i = 1; i < 20; i++) { for (j = i; j < 20; j++) { Console.Write("A"); } for (k = 1; k <= i; k++) { Console.Write("*"); Console.Write(" "); } Console.WriteLine(); } Console.ReadKey(); } }
Selam dostlar, hobi olarak C# öğrenmeye çalışıyorum. Belki sonra unity falan bakıcam ama daha çooooook başındayım, karın yağmurun
soğuğun :)) iç içe for öğrenmek için üçgen yapmayı denedim. ben beceremedim, bu kod parçası alıntı. bana mantığını anlatabilecek olan
var mı? Benim kafam karıştı. hangi forun neyi arttırdığını anlayamadım. 20-19-18 diye azalan ve boşlukları veren foru hangisi kontrol
ediyor. Beni bu konuda, uzunların bilal gibi düşünüp mantığını anlatabilecek dostlarım varsa çok sevinirim. Saygı ve sevgiler.
dostum öncelikle Sefer Algan'ın C# kitabını kesinlikle tavsiye ederim. bilale anlatır gibi anlatır. seni orta düzeye hatta birçok programcıya göre ileri seviyeye kadar taşır.
öncelik ile çalışma mantığını açıklayayım. öncelikle okunabilirlik açısından yazılı olan for döngüsünden ziyade
for(int i = 1; i<20; i++) şeklinde yazmak daha mantıklıdır. bu for döngüsünde öncelikle döngüyü yapacak eleman tanımlanır ve ilk değer verilir. int i = 1; şeklinde
sonrasında kontrol bölümüne gelir i<20; burada eğer kontrol true ise {} içerisindeki kodlar çalıştırılır. bu kodlardan sonra i++ ile i değişkeni bir arttırılır.
ek bilgi olarak for döngüsünde int i tanımlaması senin yaptığın şekilde de tanımlanabiliyor ancak okunabilirlik açısından int i tanımlaması genelde for döngüsü parantezinde yapılması tercih ediliyor.
ilk değer verme işlemine 1 yerine 0 ile vermeyi ve bu şekilde alışmanı tavsiye ediyorum. çünkü dizi gibi işlemlerde ilk eleman 1 ile değil 0 ile bulunuyor. alışkanlıkları sonradan bozmak daha da zor oluyor.
for(int i =0; i<19;i++){} şeklinde kullanılabildiği gibi ilk tanımın dışarıda yapıldığı örneklerde var
int i=0;
for(;i<19;i++) gibi. istersen tüm örnekleri for parantezi haricinde de tutabilirsin.
for(;;)
{
Console.WriteLine(i.ToString());
if(i<19)
{
break;
}
i++
}
gibi. dikkat edilmesi gereken şey şu for döngü parantezinde mutlaka iki adet ";" olması zorunluluğu.
şimdi soruna gelecek olursak. 19 satırlık bir döngü ile üçgen yazdırmakta
ilk for döngüsü tamamen satırları oluşturmakta. başlangıça i=1 için çalıştırdığımızda hemen altındaki j tanımlı for döngüsü çalıştırılıyor ve burada j her adımda 1 arttırılarak toplamda 19 adet A harfi basılıyor.
sonrasında k tanımlı for döngüsü çalışıyor ve i =1 olduğu için k tanımlı olan döngü sadece bir kez çalışarak "* "(yıldız ve bir boşluk) ekrana yazıp bir alt satıra geçiliyor.
i değişkeninin değeri 1 arttırılıp 2 yapılıyor. sonrasında tekrar j döngüsüne geçiyor. j tanımlı döngünün başlangıç değeri i değişkenine bağlı olduğu için 2 den başlıyor ve 18 kere A harfi basıyor.
sonrasında k tanımlı değişkene geliyor. burada döngünün doğruluk şartı i değişkeni ile şartlandırıldığı için 2 kez çalışıyor ve ekrana "* * " yazıp bir alt satıra geçiyor.
i değişkeni 1 arttırılıp 3 oluyor ve j döngüsüne geçiyor. j döngüsü 3 den başladığı için bu sefer 17 kez A harfi basıyor
k döngüsünün doğruluk şartı bu kez i =3 olduğu için 3 kez çalışıyor ve ekrana "* * * "yazıp bir alt satıra geçiyor.
mantık bu şekilde ilerleyerek 19 kez döngü devam ediyor
-
Bu kodu,
https://paste.ofcode.org/34mycE4jUkacbcbZN5xnDd7
Burada adım adım çalıştırıp görselleştir.
http://www.pythontutor.com/visualize.html#mode=edit
-
Hocalar anlatmış. Ben de basite indigeyerek iç içe foru şöyle anlatayım hocam: saatteki akrep yelkovan matığını düşün. Yelkovan her tur attığında akrep 12 de 1 kadar hareket eder. Yelkovan içteki for, akrep dışındaki. İçteki for(yelkovan) bi turu tamamladığında, dıştaki for(akrep) bir artıyor.
-
Yardımlarınızla başardım, akrep yelkovan örneği en çok yardımcı olan oldu.
Hepinize sonsuz teşekkürler!