JavaScript'de Bayraklarla Çalışma
Şimdi bayraklarla nasıl çalışılacağını öğreneceğiz.
Bayrak, yalnızca iki değer alabilen özel bir değişkendir:
true ve false. Bayraklar kullanılarak,
bir şeyin olmamasını kontrol eden problemler çözülebilir:
örneğin, bir dizide belirli bir değere sahip bir elemanın
olmadığını kontrol edebiliriz. Hadi başlayalım.
Şu problemi çözelim: sayılardan oluşan bir dizi veriliyor,
içinde değeri 3 olan bir eleman olup olmadığını
kontrol etmemiz gerekiyor. Varsa '+++' yazdıralım,
yoksa '---' yazdıralım.
İlk olarak '+++' yazdırmayı deneyelim.
Bunun için dizimizin tüm elemanlarını döngüyle gezelim
ve bir if ile mevcut elemanın değerinin 3 olup
olmadığını soralım. Eşitse '+++' yazdıralım:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Ancak çözümümüz pek iyi değil: çünkü eğer
dizide bir tane değil de birden fazla 3
değeri varsa, '+++' birden fazla kez
yazdırılacaktır. Dizimizi düzeltelim (içinde
3 değerine sahip iki eleman yapalım) ve bundan
emin olalım:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // birkaç kez yazdıracak
}
}
Problemi düzeltelim: eğer eleman zaten bulunduysa,
break ile döngüyü sonlandıralım:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // döngüyü sonlandır
}
}
Şimdi, eğer dizide hiç 3 değerine sahip
eleman yoksa, '---' yazdırılacak şekilde
yapmaya çalışalım. Yaygın bir yanlış anlama,
if'imize else eklemek olacaktır - bu
durumda '---', 3 olmayan tüm
elemanlar için yazdırılacaktır:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // 3. elemanında yazdırır
} else {
console.log('---'); // 1, 2, 4, 5. elemanlarında yazdırır
}
}
Öyleyse, else ekleme fikri kötü ve
çalışmayan bir fikirdir. Bu tür problemleri
(bu tür problemler oldukça sık karşılaşılır)
çözmek için sözde bayraklar kullanılır.
Daha önce de belirtildiği gibi, bayrak,
yalnızca iki değer alabilen bir değişkendir:
true veya false.
Öyleyse, bir flag değişkeni yapalım
şu anlama gelecek şekilde: eğer true'ya
eşitse, dizide 3 elemanı vardır, eğer
false ise, böyle bir eleman yoktur.
Başlangıçta flag değişkenini false
değerine ayarlayalım - yani dizide 3
elemanının olmadığını varsayalım:
let arr = [1, 2, 3, 4, 5];
let flag = false; // dizide 3 elemanının olmadığını varsayıyoruz
Daha sonra, daha önce yaptığımız gibi bir if
ile bir döngü başlatalım. Eğer döngü dizide
3 elemanının olduğunu tespit ederse - flag
değişkenini true değerine ayarlayalım
ve break ile döngüden çıkalım:
let arr = [1, 2, 3, 4, 5];
let flag = false; // dizide 3 elemanının olmadığını varsayıyoruz
for (let elem of arr) {
if (elem == 3) {
flag = true; // eleman var - flag değişkenini yeniden tanımla
break; // döngüden çık
}
}
Dizide 3 olup olmadığı sorusunun cevabını
ancak döngüden sonra verebiliriz.
Ve bu cevap zaten elimizde: döngüden sonra
flag değişkeni false olarak
kalabilir veya eğer döngü dizide 3
bulduysa değerini true olarak değiştirmiş
olabilir:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// burada flag değişkeni ya true ya da false'dur
Şimdi döngüden sonra, flag değişkenine
bakan ve ekrana '+++' veya '---'
yazdıran bir if yapabiliriz:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
if (flag === true) {
console.log('+++');
} else {
console.log('---');
}
Bir dizi veriliyor:
let arr = ['a', 'b', 'c', 'd', 'e'];
Bu dizide 'c' elemanının olup olmadığını
kontrol edin. Varsa '+++' yazdırın,
yoksa '---' yazdırın.
Bir sayının asal olup olmadığını kontrol eden kodu yazın. Asal sayı yalnızca bire ve kendisine bölünür, başka sayılara bölünmez.