Files

160 lines
3.2 KiB
Markdown
Raw Permalink Normal View History

---
baslik: Mantık ve karşılaştırma
bolum: Temeller
ozet: dogru/yanlis, karşılaştırma işleçleri, ve/veya/degil ve işleçlerin özeti
---
Program karar verirken bir sorunun cevabına bakar: "puan 50'den büyük mü?", "kullanıcı adı doğru mu?". Bu soruların cevabı bir mantık değeridir: `dogru` ya da `yanlis`.
## Karşılaştırma işleçleri
| İşleç | Sorusu |
|---|---|
| `==` | eşit mi? |
| `!=` | farklı mı? |
| `<` | küçük mü? |
| `<=` | küçük ya da eşit mi? |
| `>` | büyük mü? |
| `>=` | büyük ya da eşit mi? |
```kbl
yazdir(7 > 3)
yazdir(7 == 3)
yazdir(7 != 3)
yazdir(5 <= 5)
```
```cikti
doğru
yanlış
doğru
doğru
```
> **Dikkat:** Eşitlik sorusu **iki** eşittir işaretiyle yazılır: `==`. Tek `=` atamadır, değeri değiştirir.
## Metinleri karşılaştırmak
Metinler harf harf karşılaştırılır; büyük/küçük harf fark eder.
```kbl
yazdir("elma" == "elma")
yazdir("elma" == "Elma")
yazdir("elma".kucult() == "Elma".kucult())
```
```cikti
doğru
yanlış
doğru
```
## Sonucu değişkende tutmak
Karşılaştırmanın sonucu bir değerdir; değişkene atayabilirsin.
```kbl
yas = 20
ehliyet_alabilir = yas >= 18
yazdir(ehliyet_alabilir)
```
```cikti
doğru
```
## ve, veya, degil
Birden çok koşulu birleştirmek için sözcük işleçleri kullanılır:
| İşleç | Ne zaman doğru? |
|---|---|
| `a ve b` | ikisi de doğruysa |
| `a veya b` | en az biri doğruysa |
| `degil a` | a yanlışsa |
```kbl
yas = 16
veli_izni = dogru
yazdir(yas >= 18 ve veli_izni)
yazdir(yas >= 18 veya veli_izni)
yazdir(degil veli_izni)
```
```cikti
yanlış
doğru
yanlış
```
> **Dikkat:** `&&`, `||`, `!` gibi simgeler KabaLang'de yoktur. Her zaman `ve`, `veya`, `degil` yaz.
## Aralık sorusu
Bir değerin iki sınır arasında olup olmadığını `ve` ile sorarsın.
```kbl
sicaklik = 22
yazdir(sicaklik >= 18 ve sicaklik <= 26)
```
```cikti
doğru
```
## Parantezle gruplamak
`ve`, `veya`'dan önce hesaplanır. Uzun koşullarda parantez kullanmak hem doğru sonucu garanti eder hem okumayı kolaylaştırır. Artık yıl kuralı buna güzel bir örnek: yıl 4'e bölünür ve 100'e bölünmez **ya da** 400'e bölünür.
```kbl
yil = 2024
artik = (yil % 4 == 0 ve yil % 100 != 0) veya yil % 400 == 0
yazdir(artik)
```
```cikti
doğru
```
## Tek satırda seçim
`A eger kosul degilse B` ifadesi, koşul doğruysa A'yı, değilse B'yi verir.
```kbl
n = 7
yazdir("çift" eger n % 2 == 0 degilse "tek")
```
```cikti
tek
```
## İşleçlerin özeti
| Tür | İşleçler |
|---|---|
| Aritmetik | `+` `-` `*` `/` `//` `%` `**` |
| Atama | `=` `+=` `-=` `*=` |
| Karşılaştırma | `==` `!=` `<` `<=` `>` `>=` |
| Mantık | `ve` `veya` `degil` |
## Alıştırma
```alistirma
Bir bilet indirimi şöyle: yaşı 12'den küçük **veya** 65'ten büyük olanlar indirim alır. `yas` için bu koşulun sonucunu yazdır.
%%%
yas = 70
# buraya yaz
%%%
yas = 70
yazdir(yas < 12 veya yas > 65)
%%%
doğru
```
```alistirma
Bir şifre geçerli sayılmak için en az 8 karakter olmalı **ve** içinde boşluk bulunmamalı. `sifre` için `gecerli` değişkenini hesaplayıp yazdır.
%%%
sifre = "kirmizi kalem"
# buraya yaz
%%%
sifre = "kirmizi kalem"
gecerli = sifre.uzunluk() >= 8 ve degil sifre.icerir(" ")
yazdir(gecerli)
%%%
yanlış
```