Olmak ya da olmamak işte bütün mesele bu. Bizim programlama dilinde kullanacağımız mantık da tam olaraka buna dayanıyor.
- Olmak / true / 1
- Olmamak / false / 0
Eğer bugün yağmur yağıyor ise şemşiye al
if (bugun_yagmur_yagiyor)
cout<<"semsiye al" <<endl;Eğer bugün yağmur yağıyor ise şemşiye al; Yağmur yağmıyorsa dondurma.
if (bugun_yagmur_yagiyor)
cout<<"semsiye al" <<endl;
else
cout<<"dondurma al" <<endl;Şimdi bunu başka bir koşul ile birleştirelim.
Eğer bugün yağmur yağıyor ise şemşiye al; Yağmur yağmıyorsa ve hasta değilsen dondurma al.
if (bugun_yagmur_yagiyor){
cout<<"semsiye al" <<endl;
} // ilk kısım aynı kaldı
else{ // burada ikinci bir koşul yazmamız lazım
if(hasta_değilim)
cout<<"dondurma al" <<endl;
}
İşleri biraz daha karıştıralım
- Eğer bugün yağmur yağıyor ise şemşiye al;
- Yağmur yağmıyorsa ve hasta değilsen dondurma al;
- Yağmur yağmıyorsa ve hastaysan doktora git;
if (bugun_yagmur_yagiyor){
cout<<"semsiye al" <<endl;
} // ilk kısım aynı kaldı
else{ // burada ikinci bir koşul yazmamız lazım
if(hasta_değilim)
cout<<"dondurma al" <<endl;
else
cout<<"doktora git" <<endl;
}
hasta_değilim değişkeninin tersini alabiliriz
if(!hasta_değilim)
cout<<"doktora git" <<endl;
else
cout<<"dondurma al" <<endl; Adalet varsa
#include <iostream>
using namespace std;
int main(){
bool adalet_var = true;
cout << "adalet var: " << adalet_var << endl; // 1
if (adalet_var)
cout << "Dogrular hakim" << endl; // calisir
else
cout << "Yanlislar hakim" << endl; // calismaz
cout << endl;
// peki adalet ortadan kaldırıp yeni bir düzen kurarsak?
bool adalet_yok = !adalet_var; // artık adalet yok
cout << "!adalet_var: " << adalet_var << endl; // 0
if (adalet_yok)
cout << "Dogrular hakim" << endl; // calismaz
else
cout << "Yanlislar hakim" << endl; // calisir
}
gördüğünüz gibi ! operatörü mantıksal ifadenini tersini almak için kullanılır. Eğer değer doğru ise yanlış yapar. Yanlış ise doğru yapar. Bundan sonra yazılarımızda doğru yerine (true); yanlış yerine (false) kullanacağız.
Mantıksal ifadeleri cout ile bastırdığımızda bize true için 1 ve false için 0’ı verdi. O zaman ben sayıları koşul ifadelerinde kullanabilirim.
int main(){
int i = 5;
while (i) {
cout << i;
i = i - 1;
}
}
// çıktı:
// 54321- 0 dışındaki tüm sayılar true
- 0 false değerini verir. (ne kadar kullanışlı değil mi?)
Daha önceki derslerimizden birinde bir sayının çift ya da tek olduğunu bulmak için % operatörünü kullanmıştık. Ne yaptığımızı hatırlıyalım:
int main(){
int i = 7;
if (i % 2 == 0)
cout << "cift" << endl;
else
cout << "tek" << endl;
}- 7 sayısı için i%2 -> 1 değerini verir;
1 == 0 -> false değerini verir ve else bloğu çalışır. - 6 sayısı için i%2 -> 0 değerini verir;
0 == 0 -> true değerini verir ve if bloğu çalışır.
tersini alma (negotation) (!) operatörünü öğrendik, ayrıca sayıları da true false yerine kullanabileceğimizi öğrendik. O zaman yukarıdaki ifadeyi aşağıdaki ifadeye çevirebiliriz.
#include <iostream>
using namespace std;
int main(){
int i = 7;
if (!(i % 2))
cout << "cift" << endl;
else
cout << "tek" << endl;
}tabi tersini almak yerine if else bloklarının yeri de değiştirilebilir.
int i = 7;
if (i % 2)
cout << "tek" << endl;
else
cout << "cift" << endl;Hayat ne kadar güzel değil mi?
Bunlar basit sadeleştirmelere olsa da bazı durumlarda sade olmayan halini yazmak sade halini yazmaktan daha anlaşılır olabilir ama bu bugünün konusu değil.
Liseden hatırlarsanız mantıksal değerlerle işlemler yapabiliyorduk. Bu işlemler neydi
- VE (AND)
- VEYA (OR)
- zıttını alma (bunu yaptık)
| Değer 1 | Değer 2 | Sonuç |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| Değer 1 | Değer 2 | Sonuç |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
- VE işleminde her ikisinin de true olması bekleniyor
- VEYA işleminde ise birinin true olması yeterli.
- VE operatörünü && ile gösteriyoruz.
- VEYA operatörünü || ile gösteriyoruz.
int main(){
bool hava_sıcak = true;
bool evdeyim = true;
// hava sıcaksa ve evdeysen klimayı aç
if (hava_sıcak && evdeyim)
cout << "klimayi calistir" << endl;
}int main(){
bool atesin_var = true;
bool agrin_var = false;
// Ateşin veya ağrın varsa doktora git
if (atesin_var || agrin_var)
cout << "doktora git" << endl;
}Araştır
- Mantıksal kapıların ne olduğunu araştır.


Leave a Reply