CPP 012 – While Döngüsü

Devamlı tekrar edecek işleri yapmak için while döngüsü kullanıyoruz. Örneğin oyunu açtınız. Her saniye ekrana 60+ kez görüntü basıyor. Bu bir döngüdür. Aynı işi tekrar tekrar oyun yapıyor ta ki oyun kapanana kadar.

Cpp de 4-5 tane döngümüz var

  • while
  • do-while
  • for
  • range based for
  • std::for_each
  • goto

Aslında temelde 2 tane

  • while : Koşul sağlanıyorsa devamlı çalış
  • for : A’dan başlayıp B’ye kadar adım adım ilerle

Biz bu dersimizde while döngüsüne bakacağız

While

En sade döngümüz bu. Bir tane koşulu var. O koşul gerçekleşiyorsa yani true ise her zaman döner. Gerçekleşmiyorsa yani false ise döngüden çıkar.

#include <iostream>
using namespace std;

int main() {
	int sayi = 0;

	while (true) {
		cout << sayi << ", ";
		sayi++;
	}
}

yukarıdaki kod sonsuza kadar çalışacaktır. Eğer yeterince beklerseniz (beklemeyin) overflow durumunu göreceksiniz.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, ...

programdan çıkmak için CTRL+C tuş kombinasyonunu kullanabilirsiniz.

Aşağıda while döngümüz için bir flow chart görüyoruz:

Overflow Nedir?

Kimi bilgisayar 8gb kimi bilgisayar 32gb belleğe sahiptir. Ne kadar büyük olursa olsun sonlu belleğe sahibiz ve dolayısıyla değişkenlerimiz de sonlu olmak mecburiyetinde. Hal böyle olunca bu değişkenlerle temsil değerler de sınırlı. Peki biz bu sınırları aşarsak ne olur? Overflow olup en başa döner. Tıpkı yılanda sağ duvardan çıkıp sol duvardan girmemiz gibi değişkenimiz en büyük değerden çıkar, en küçük değer girer.

Yukarıda yazdığımız sonsuz döngüyü beklemeyin diye demiştim. Çünkü int değişkeni -2147483648 den, 2147483647 sayısına kadar değerleri tutabilir. Saydım mı? Hayır! Bunlar hali hazırda tanımlanmış olarak bize veriliyor zaten:

	cout << INT_MIN << endl;	// -2147483648
	cout << INT_MAX << endl;	// 2147483647
	cout << CHAR_MIN << endl;	// -128
	cout << CHAR_MAX << endl;	// 127

// https://learn.microsoft.com/en-us/cpp/c-language/cpp-integer-limits?view=msvc-170

Dikkatli gözler – ile + arasında 1 sayılık bir fark olduğunu farkedebilir. Bunun nedeni bilgisayardaki sayıların karmaşık bir şekilde tutulması. Bu konuya hiç girmeyeceğim çünkü başlı başına farklı bir ders.

Örnekler

Sayı sayma

[5,120) aralığındaki sayılardan üçün katlarını yazdırınız.

int main() {
	int sayi = 5;
	while (sayi < 120) {
		if (sayi % 3 == 0)
			cout << sayi << endl;
		sayi++;
	}
}


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *