C++ Döngüler ve birkaç program //Ar-Ge Tim
Arkadaşlar while ve for döngülerini yeni başlayanlar veya öğrenmek isteyenler için anlaşılır bi şekilde anlatmak istedim, kolay gelsin.
Programlamada döngüler basitçe , programın belirli bir şart gerçekleştiği sürece, sürekli kendisine verilen görevi tekrarlamasıdır.
şöyle gösterelim:
While Döngüsü
Yukarıdaki örneğin aynısıdır diyebiliriz, birkaç örnekle açıklayalım:
çıktı:

Yukarıdaki programda while döngüsünü kullandık ve şunları yaptık;
a diye bir tamsayı tanımladık, while ın koşul kısmına a<10 yazdık. bu ne demek, şu demek: "eğer a, 10 dan küçük ise döngüye gir". bu kadar basit. döngüye girdik ve cout<<a; yazarak ekrana a yı yani 0 ı yazdırdık. Eğer programı bu kısımda bitirseydik sonsuza kadar 0 yazardı çünkü a yazdıktan sonra her başa döndüğünde a yine 10 dan küçük olacağından ve onu 10 dan büyük yapacak bir özellik katmadığımızdan sürekli kendini tekrar edecekti.
Böyle bir şeyin olmaması için a++; yazdık. yani a yi bir kez arttır (a-- yazsaydık a bir eksilirdi)
ve ne oldu, önce ekrana 0 yazdı, ondan sonra a yı bir arttırdı ve a 1 oldu, sonra başa döndü ve a 10 dan küçük olma koşulu sağlandığı için bir daha döngüye girdi ve ekrana a yı yani 1 yazdı ve a yı tekrar arttırdı yani 2 yaptı.
peki bu nereye kadar böyle gider, ekrana 0 dan 10 a kadarki sayıların hepsi yazılana kadar mı? hayır. neden, çünkü döngü a 9 olunca yine işleyecek, onu da yazacak ama a=10 olunca a<10 yani 10, 10 dan küçüktür koşulu şartımızı bozduğundan döngüye girilmeyecek ve ekrana sadece 0 dan 9 a kadarki rakamlar yazılacak. bunun olmaması için koşul ksımına a<=10 yazarız ve hallolur.
Haydi öğrendiklerimizle bir şifre sistemi yapalım:
çıktı:

Burda da öğreneceğimiz birkaç şey var. break komutu bizim döngüden çıkmamızı sağlar. şartlar sağlanmıyorsa bile break döngüyü sonlandırır. int sayac yazarak bir işin kaç kez tekrarlandığını anlayabileceğimiz bir tamsayı yarattık, incelerseniz göreceksiniz. strcmp fonksiyonu ise iki char ı karşılaştırır ve eğer ikisi de aynı ise 0 değerini döndürür, değilse başka bir sayı. while döngüsünü anladıysanız bu programı da anlayabilirsiniz.
For Döngüsü
For döngüsü while ın bir değişiğidir. while dan farkı, şart yazdığımız kısma şart dışında birkaç şey daha yazarız. Bunlar şöyledir, ilk kısma değişkenlerimizi tanımlarız, ikinci kısma ise while daki gibi şartımızı yazarız, üçüncü kısımda emirleri yazarız
şöyle anlatalım;
while ı anladıysanız mantığı da anlamışsınız demektir for u da çözersiniz. bu yüzden basit bir örnek vermiyim daha güzeli olsun.
şimdi de bildiklerimizle 500 e kadarki tam kare olan sayıları yazan bir program yazalım.
çıktı:

Gayet eğlenceli değil mi. döngüde a yı sürekli arttırıyoruz ama hep yazdırmıyoruz çünkü bizim için önemli olan a değil a nın bnin karesine eşit olup olmaması. eğer a, b nin karesi ise b yi arttırabiliriz çünkü "b nin karesi acaba başka bir sayı mı" diye arttırmayıp diğer sayıları da denememize gerek kalmadı.
işinize yarayacak birkaç bilgi:
-eğer while döngüsü yaptıysak ve hiç sona ermemesini istiyorsak while(1) yapmamız yeterlidir.
-iç içe birkaç döngü var ise her zaman en işteki önce tamamlanır, sonra dışındaki sonra onun da dışındaki...
bunların dışında do while döngüsü de var ama onu anlatmaya gerek duymadım, bunları anladıysanız do while ı da herhangi bir siteden öğrenebilirsiniz, ben sadece basit ve anlaşılır şekilde anlatmaya çalıştım.
Arkadaşlar while ve for döngülerini yeni başlayanlar veya öğrenmek isteyenler için anlaşılır bi şekilde anlatmak istedim, kolay gelsin.
Programlamada döngüler basitçe , programın belirli bir şart gerçekleştiği sürece, sürekli kendisine verilen görevi tekrarlamasıdır.
şöyle gösterelim:
Kod:
döngü(burdaki şart geçerli ise döngüye gir)
{
burada yazılan emirleri uygula ve başa dön;
}
While Döngüsü
Yukarıdaki örneğin aynısıdır diyebiliriz, birkaç örnekle açıklayalım:
Kod:
#include<iostream>
main()
{
int a=0;
while(a<10)
{
std::cout<<a<<endl;
a++; // a++ diyerek a yı bir arttırıyoruz
}
}

Yukarıdaki programda while döngüsünü kullandık ve şunları yaptık;
a diye bir tamsayı tanımladık, while ın koşul kısmına a<10 yazdık. bu ne demek, şu demek: "eğer a, 10 dan küçük ise döngüye gir". bu kadar basit. döngüye girdik ve cout<<a; yazarak ekrana a yı yani 0 ı yazdırdık. Eğer programı bu kısımda bitirseydik sonsuza kadar 0 yazardı çünkü a yazdıktan sonra her başa döndüğünde a yine 10 dan küçük olacağından ve onu 10 dan büyük yapacak bir özellik katmadığımızdan sürekli kendini tekrar edecekti.
Böyle bir şeyin olmaması için a++; yazdık. yani a yi bir kez arttır (a-- yazsaydık a bir eksilirdi)
ve ne oldu, önce ekrana 0 yazdı, ondan sonra a yı bir arttırdı ve a 1 oldu, sonra başa döndü ve a 10 dan küçük olma koşulu sağlandığı için bir daha döngüye girdi ve ekrana a yı yani 1 yazdı ve a yı tekrar arttırdı yani 2 yaptı.
peki bu nereye kadar böyle gider, ekrana 0 dan 10 a kadarki sayıların hepsi yazılana kadar mı? hayır. neden, çünkü döngü a 9 olunca yine işleyecek, onu da yazacak ama a=10 olunca a<10 yani 10, 10 dan küçüktür koşulu şartımızı bozduğundan döngüye girilmeyecek ve ekrana sadece 0 dan 9 a kadarki rakamlar yazılacak. bunun olmaması için koşul ksımına a<=10 yazarız ve hallolur.
Haydi öğrendiklerimizle bir şifre sistemi yapalım:
Kod:
#include<iostream>
#include<string.h>
using namespace std;
main()
{
int sayac=0;
int i=5;
char sifre[]="turkhackteam";
char deneme[50];
while(i!=0)
{
system("cls");
if(sayac==3)
{
cout<<"\n3 kez yanlis girdiniz, giris iptal.";
break;
}
cout<<"sifreyi girin: ";
cin>>deneme;
i=strcmp(sifre,deneme);
sayac++;
}
if(i==0)
cout<<"\nsifre dogru";
}
çıktı:

Burda da öğreneceğimiz birkaç şey var. break komutu bizim döngüden çıkmamızı sağlar. şartlar sağlanmıyorsa bile break döngüyü sonlandırır. int sayac yazarak bir işin kaç kez tekrarlandığını anlayabileceğimiz bir tamsayı yarattık, incelerseniz göreceksiniz. strcmp fonksiyonu ise iki char ı karşılaştırır ve eğer ikisi de aynı ise 0 değerini döndürür, değilse başka bir sayı. while döngüsünü anladıysanız bu programı da anlayabilirsiniz.
For Döngüsü
For döngüsü while ın bir değişiğidir. while dan farkı, şart yazdığımız kısma şart dışında birkaç şey daha yazarız. Bunlar şöyledir, ilk kısma değişkenlerimizi tanımlarız, ikinci kısma ise while daki gibi şartımızı yazarız, üçüncü kısımda emirleri yazarız
şöyle anlatalım;
Kod:
for(değişkenler buraya; şart kısımı buraya ; emirler ise buraya)
{
ve diğer emirler de buraya yazılır ve başa dönülür.
}
while ı anladıysanız mantığı da anlamışsınız demektir for u da çözersiniz. bu yüzden basit bir örnek vermiyim daha güzeli olsun.
şimdi de bildiklerimizle 500 e kadarki tam kare olan sayıları yazan bir program yazalım.
Kod:
#include<iostream>
#include<string.h>
using namespace std;
main()
{
for(int b=0,a=0 ; a<=500 ; a++)
{
if(b*b==a)
{
cout<<a<<" ";
b++;
}
}
}
çıktı:

Gayet eğlenceli değil mi. döngüde a yı sürekli arttırıyoruz ama hep yazdırmıyoruz çünkü bizim için önemli olan a değil a nın bnin karesine eşit olup olmaması. eğer a, b nin karesi ise b yi arttırabiliriz çünkü "b nin karesi acaba başka bir sayı mı" diye arttırmayıp diğer sayıları da denememize gerek kalmadı.
işinize yarayacak birkaç bilgi:
-eğer while döngüsü yaptıysak ve hiç sona ermemesini istiyorsak while(1) yapmamız yeterlidir.
-iç içe birkaç döngü var ise her zaman en işteki önce tamamlanır, sonra dışındaki sonra onun da dışındaki...
bunların dışında do while döngüsü de var ama onu anlatmaya gerek duymadım, bunları anladıysanız do while ı da herhangi bir siteden öğrenebilirsiniz, ben sadece basit ve anlaşılır şekilde anlatmaya çalıştım.
Son düzenleme:

