Bir cümlelik özet
Operatörler; sayılarla işlem yapmamızı, değerleri karşılaştırmamızı ve koşulları birleştirmemizi sağlayan küçük ama güçlü sembollerdir.
Neden önemli?
Bir önceki derste değişkenlerin bilgiyi bir kutuda sakladığını gördük. Ama bilgiyi sadece saklamak yetmez; onunla bir şeyler yapmamız gerekir. İki notun ortalamasını almak, bir sayının çift olup olmadığını anlamak veya "hava soğuksa ve yağmurluysa" gibi bir kararı ifade etmek isteriz.
İşte tam burada operatörler devreye girer. Operatörler, programın hesap yapmasını ve karar vermesini sağlar. Ben de kod yazmaya başladığımda operatörleri öğrenince programların "canlandığını" fark ettim: değişkenler artık sabit kutular değil, birbirleriyle konuşan değerler oluyordu.
Aritmetik operatörler
Aritmetik operatörler, matematikteki dört işleme çok benzer. Sadece semboller biraz farklıdır.
Temel semboller
| İşlem | Sembol | Örnek | Sonuç |
|---|---|---|---|
| Toplama | + | 5 + 3 | 8 |
| Çıkarma | - | 5 - 3 | 2 |
| Çarpma | * | 5 * 3 | 15 |
| Bölme | / | 6 / 4 | 1.5 |
| Kalan (mod) | % | 7 % 2 | 1 |
Çarpma için x değil * (yıldız) kullanırız, çünkü x çoğu zaman bir değişken adı olabilir. Bölmede ise / işareti bize ondalıklı bir sonuç verir: 6 / 4 sonucu 1.5'tir.
Kalan (mod) ve tam bölme fikri
% işareti bölmedeki kalanı verir. Örneğin 7 % 2 demek "7'yi 2'ye böldüğümde kalan kaç?" demektir; cevap 1'dir.
Bazı durumlarda ise kesirli değil, tam sonuç isteriz. Örneğin 7 şekeri 2 çocuğa dağıtırken her çocuğa kaç tam şeker düştüğünü merak ederiz. Buna tam bölme denir ve Python'da // sembolüyle yazılır:
sekerler = 7
cocuklar = 2
her_cocuga = sekerler // cocuklar # tam bölüm: 3
artan = sekerler % cocuklar # kalan: 1
print(her_cocuga) # 3
print(artan) # 1
Yani her çocuğa 3 şeker düşer, elde 1 şeker kalır.
Günlük örnek: iki notun ortalaması
Diyelim ki iki sınavdan 80 ve 90 aldın. Ortalaman şudur:
not1 = 80
not2 = 90
ortalama = (not1 + not2) / 2
print(ortalama) # 85.0
Buradaki parantezlere dikkat et; birazdan neden gerekli olduklarını göreceğiz.
Karşılaştırma operatörleri
Karşılaştırma operatörleri iki değeri karşılaştırır ve sonuç olarak doğru (True) veya yanlış (False) üretir.
Altı temel karşılaştırma
| Anlam | Sembol | Örnek | Sonuç |
|---|---|---|---|
| Eşit mi? | == | 5 == 5 | True |
| Eşit değil mi? | != | 5 != 3 | True |
| Küçük mü? | < | 3 < 5 | True |
| Büyük mü? | > | 3 > 5 | False |
| Küçük veya eşit mi? | <= | 5 <= 5 | True |
| Büyük veya eşit mi? | >= | 6 >= 7 | False |
Buradaki en önemli nokta şudur: eşitliği kontrol etmek için tek = değil, çift == kullanırız. Tek = işareti bir değişkene değer atamak içindir.
Günlük örnek: çift mi tek mi?
Bir sayının çift olması demek, 2'ye tam bölünmesi, yani kalanının 0 olması demektir. Bunu karşılaştırma ve mod operatörünü birlikte kullanarak yazabiliriz:
Başla
Bir sayı al
Eğer sayı % 2 eşittir 0 ise
"Çift" yaz
Değilse
"Tek" yaz
Bitir
Python'da:
sayi = 14
if sayi % 2 == 0:
print("Çift")
else:
print("Tek")
Burada sayi % 2 önce kalanı hesaplar, sonra == 0 bu kalanı sıfırla karşılaştırır.
Mantıksal bağlaçlar ve öncelik
Bazen tek bir koşul yetmez; birden fazla koşulu birleştirmek isteriz. Bunun için mantıksal bağlaçları kullanırız: VE (and), VEYA (or) ve DEĞİL (not).
VE, VEYA, DEĞİL
- VE (and): İki koşul da doğruysa sonuç doğrudur.
- VEYA (or): Koşullardan en az biri doğruysa sonuç doğrudur.
- DEĞİL (not): Bir koşulun sonucunu tersine çevirir.
Bunu bir doğruluk tablosu ile görmek en kolayıdır. Tabloda D = Doğru, Y = Yanlış:
| A | B | A VE B | A VEYA B |
|---|---|---|---|
| D | D | D | D |
| D | Y | Y | D |
| Y | D | Y | D |
| Y | Y | Y | Y |
Günlük örnek: koşulları birleştirmek
Diyelim ki dışarı çıkarken şemsiye alıp almayacağına karar veriyorsun. Kural şu: hava yağmurluysa VE rüzgâr çok kuvvetli DEĞİLSE şemsiye al.
yagmurlu = True
kuvvetli_ruzgar = False
if yagmurlu and not kuvvetli_ruzgar:
print("Şemsiye al")
else:
print("Şemsiye alma")
Rüzgâr çok kuvvetliyse şemsiye ters döner, o yüzden not ile bu durumu dışarıda bırakırız.
İşlem önceliği
Tıpkı matematikte olduğu gibi, kodda da işlemlerin bir önceliği vardır. Çarpma ve bölme, toplama ve çıkarmadan önce yapılır. Parantez ise her şeyin önüne geçer.
print(2 + 3 * 4) # 14, çünkü önce 3*4 yapılır
print((2 + 3) * 4) # 20, çünkü parantez önce çalışır
Karşılaştırmalar aritmetikten sonra, mantıksal bağlaçlar ise en sonra çalışır. Yani sayi % 2 == 0 ifadesinde önce %, sonra == çalışır. Emin olmadığında parantez kullanmak her zaman güvenlidir ve kodu okunaklı yapar.
Mini uygulama
Bir öğrencinin sınıfı geçip geçmediğini bulan bir kod düşün. Kural: ortalama 50 veya üzeriyse VE devamsızlık 20 günden azsa öğrenci geçer.
Aşağıdaki sözde kodu kendi defterine yaz, sonra Python'a çevir:
Başla
İki not al ve ortalamayı hesapla
Devamsızlığı al
Eğer ortalama >= 50 VE devamsizlik < 20 ise
"Geçti" yaz
Değilse
"Kaldı" yaz
Bitir
İpucu: Ortalamayı hesaplarken parantez kullanmayı ve eşitliği == değil, karşılaştırmayı >= ile yapmayı unutma. Farklı not ve devamsızlık değerleri deneyerek kodunun her durumu doğru yakaladığını kontrol et.
Uygulama laboratuvarı: Operatörler ve Karşılaştırmalar
Operatörler ve Karşılaştırmalar konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Aritmetik operatörler ile Kalan (mod) ve tam bölme fikri arasındaki ilişkiyi kullanarak açık bir algoritma, sözde kod ve test tablosu hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: bir robotu sınıfta güvenli biçimde hedefe götüren rota. Dersin ana hedefi “Aritmetik, karşılaştırma ve mantıksal operatörlerle hesap yapmayı ve koşulları birleştirmeyi öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Adımlar açık ve tek anlamlı mı?
- Başlangıç ve bitiş koşulu belli mi?
- Normal, sınır ve hatalı durumlar denendi mi?
- Gereksiz tekrar veya adım var mı?
- Başka biri algoritmayı aynı sonuçla uygulayabiliyor mu?
“Operatörler ve Karşılaştırmalar” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bir robotu sınıfta güvenli biçimde hedefe götüren rota senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Aritmetik operatörler ve Kalan (mod) ve tam bölme fikri ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
= ile == karıştırmak
= atama yapar, == karşılaştırır. if sayi = 5 yazmak hataya yol açar; doğrusu if sayi == 5 şeklindedir. Bu, yeni başlayanların en sık yaptığı hatadır.
Tam bölme ile normal bölmeyi karıştırmak
7 / 2 sonucu 3.5, 7 // 2 sonucu ise 3'tür. Tam sayı sonucu beklerken / kullanırsan ondalıklı bir değer alırsın ve şaşırırsın.
Önceliği yanlış varsaymak
2 + 3 * 4 ifadesinin 20 olduğunu sanmak yaygın bir hatadır; aslında 14'tür çünkü çarpma önce yapılır. İstediğin sırayı garantilemek için parantez kullan.
Mantıksal bağlacı yanlış seçmek
"Hava soğuk VE yağmurlu" ile "soğuk VEYA yağmurlu" çok farklı sonuçlar üretir. Koşulları birleştirirken and mı yoksa or mu istediğini net düşün.
Ders özeti
- Aritmetik operatörler (
+ - * / %) hesap yapmamızı sağlar;//tam bölüm,%kalan verir. - Karşılaştırma operatörleri (
== != < > <= >=) iki değeri karşılaştırıpTrueveyaFalseüretir. - Atama için
=, eşitlik kontrolü için==kullanılır; bunları karıştırmak sık bir hatadır. - Mantıksal bağlaçlar VE, VEYA ve DEĞİL koşulları birleştirir; doğruluk tablosu sonuçları görmeyi kolaylaştırır.
- İşlem önceliğinde çarpma-bölme öne geçer, parantez ise her zaman en önce çalışır.
Kontrol soruları
17 % 5işleminin sonucu nedir?- Bir değişkene değer atamak için hangi sembolü, iki değeri karşılaştırmak için hangi sembolü kullanırız?
7 / 2ile7 // 2sonuçları arasındaki fark nedir?A = True,B = FalseikenA and BveA or Bifadelerinin sonuçları nedir?2 + 3 * 4ifadesinin sonucu nedir ve neden?
Cevaplar
2'dir. 17'yi 5'e böldüğümüzde bölüm 3, kalan 2'dir;%kalanı verir.- Atama için tek
=, karşılaştırma için çift==kullanırız. 7 / 2sonucu3.5(ondalıklı bölme),7 // 2sonucu3'tür (tam bölüm, kesir atılır).A and BsonucuFalse'tur (ikisi de doğru olmalı, B yanlış).A or BsonucuTrue'dur (en az biri doğru, A doğru).14'tür. Çarpma toplamadan önce yapıldığı için önce3 * 4 = 12, sonra2 + 12 = 14hesaplanır.
Kaynak ve doğrulama notu
“Operatörler ve Karşılaştırmalar” dersi için doğrulama odağı Aritmetik operatörler ile Kalan (mod) ve tam bölme fikri arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Bu dersteki algoritmalar, örnek girdiler elle izlenerek ve beklenen çıktılarla karşılaştırılarak doğrulanmıştır. Sözde kod, belirli bir programlama diline bağlı kalmadan düşünme sırasını görünür kılmak için kullanılır.
Sonraki ders
Girdi, İşlem ve Çıktı: Kullanıcıdan bilgi alıp işleyerek anlamlı bir sonuç üreten ilk tam programını yazacaksın.