Ders 11
2.1 - Mantıksal İşlemler
Mantıksal işlemler, bir programın belirli bir koşulların doğrulanmasına göre tanımlanmış işlemleri uygulamasıdır. Metematikte olsun, bilgisayar bilimlerinde olsun, mantıksal olarak ya doğrular, ya da yanlışlar vardır. Matematikte olsun, bilgisayar bilimlerinde olsun, mantıksal işlemler, ya doğru, ya da yanlış olarak sonuçlanırlar. Başak her türlü sonuçlanma olasılığı gözardı edilir. Aslında bu fiziksel dünya için, en doğru muhakeme şeklidir. Suyun sıcaklığı 60° den fazla ise "Suyun Sıcaklığı 60° den Fazladır" savı doğrudur. Suyun sıcaklığı daha düşükse, bu sav yanlıştır. Başka olasılık da olamaz. Yani, mantıksal olayalar, doğrular ve yanlışlar üzerinden yürürler.
Bilgisayar programları, bazı koşulların gerçekleşip gerçekleşmediğini kontrol edip ona göre durum değiştirirler. Yani, bazı işlemleri ancak bazı koşullar gerçekleşmişse yaparlar. Aksi halde, bu koşulların gerçekleşmediği durumlarda yapmaları belirtilen işlemleri yaparlar. Bu seksiyonda, mantıksal koşulların ne şekilde oluştuğu ve bilgisayar programlarının mantıksal değerlere göre nasıl yön değiştirdiklerini incelemeye çalışacağız.
2.1.1 - Boolean Veri Tipi
Python programlama dili mantıksal (boolean) veri tipi değerlerinde C programlama dili yöntemlerini aynen kabul etmiştir. Boolean veriler ya False ya da True değerlerini alabilirler. Python derleyicisinin True veya False olarak değerlendirdiği değerler aşağıda görülmektedir.
2.1.2 - Karşılaştırma İşlemcileri
Pyhton karşılaştırma işlemcileri iki işlenenlidir ve sonuçları sadece mantıksal değer veri tipinde (True veya False) olabilir.
Python karşılaştırma işlemcileri, aşağıda görülmektedir.
2.1.2.1 - Karşılaştırma İşlemlerinin Uygulanması
Python karşılaştırma işlemcilerinden doğru sonuç alınabilmesi için, uygulanacak işlenenler üzerinde, son derece dikkatli uyarlama çalışmaları yapılmalı ancak ondan sonra, karşılaştırma işlemi yapılıp ancak ondan sonra, alınan sonucun güvenilir olabileceği düşülmelidr. Aksi halde, doğru sonuç alınabilme olasılığı çok düşük kalabilir. Düşünülmesi gereken en önemli şey, bilgisayarların sadece tamsayılarla çalıştığı, sadece tamsayıları (aslında sadece 0 veya 1 leri) tanıyabildiği unutulmamalıdır. Bilgisayarlar, tüm diğer verileri 1 ve 0 lara çevirip üzerlerinde işlem yaparlar. En büyük sorun da işte tam burada, bilgilerin makine diline çevrilmeleri sırasında ortaya çıkar.
Bilgisayara veri verirken, verinin düşüncemizce oluşturulmuş bir şeklini bilgisayara veri olarak göndeririz. Bilgisayarın da veriyi, bizim düşüncemizde olduğu gibi algılamasını bekleriz. Oysa bazen bunun tam tersi olur. Bilgisayar, gönderdiğimiz veriyi kendi algıladığı gibi belleğine yerleştirir ve algılamış olduğu veri bizim düşüncemize tam olarak uymayabilir.
İnsanlar ile bilgisayarların, üzerinde tam olarak anlaşabildikleri veriler, sadece tamsayı verileridir. Tamsayılar ile iletişime geçildiğinde, bilgisayarların insanların sağladığı verileri yanlış anlama olasılığı yok denecek kadar azdır. Bu nedenden dolayı, von Neumann bilgisayarlarda sadece tamsayılar ile çalışılmasını sağlık vermiştir. Doğal olarak, yaşam ondalıklı sayılara dayandığından bu öneri sadece bir ironi olarak kalmıştır. Tamsayılardan başka tüm veri türlerinde anlaşamama olasılığı çok yüksektir ve belirli bilgilerin bilgisayarlara aktarılmalarında, her veri tipi için ayrı bir uyarlama ön işleminin yapılmış olması kritiğin de üstünde bir zorunluluktur.
Örnek olarak, ondalıklı sayıları gözönüne alalım. Ondalıklı sayılar üzerinde bazı hesaplamalar yapılıp, sonucun belirli değerler ile karşılaştırılması gereksin, bu konuda üretilmiş değerin kaç ondalığa kadar duyarlı olduğu, yani bilgisayarın belleğindeki sayının ondalık değerlerinin kaçıncı basamağa kadar gerçeği yansıttığı tam olarak bilinemez. Bu nedenle, ondalık değerlerin eşitliklerinin değil, büyüklüklerinin karşılaştırılması ancak güvenilir sonuçlar verebilir.
Sözel veriler ise ayrı bir sorun kaynağıdır. Çoğu zaman, bu verilerin yazılmaları, kullanılan harfler, gündelik kullanımları ile sözlük yazımları arasındaki farklar belirli yöntemlerle giderilmeden, bu verilerin eşitlikleri üzerinde karşılaştırma işlemlerine girişilmemesi gerekir. Bunlar o kadar kritik işlemlerdir ki, çoğu zaman doğru yöntemler ancak profesyonel yardımla belirlenebilir.
İlk olarak eşitlik işlemcisinin uygulama örneklerini inceleyelim.
>>>16 == 16 True >>>21.000067 == 21.000067 True >>>"Duygu" == "duygu" False >>>0 == False True
Bu sonuçlardan, sözel verilerin karşılaştırılmalarında, küçük/büyük karakterlerin farklı algılandıkları, 0 sayısının False anlamına geldiğini anlıyoruz.
Diğer karşılaştırma işlemcileri de tamamen ile aynı şekilde çalışır.
2.1.3 - Mantıksal İşlemciler
Python mantıksal işlemcileri, matematikte uygulanandıkları şekillerde sonuç verirler. Üç tane mantıksal işlemci tanımlanmıştır. Bunlar, and , or ve not işlemcileridir ve hepsi matematik mantıkta olduğu gibi işlev yaparlar.
2.1.3.1 - Mantıksal İşlemcilerin Uygulanması
Mantıksal işlemcilerin uygulanması için örnekler:
>>>True and False False >>>True or False True >>>not False True
2.4 - Mantıksal İfadeler
Mantıksal ifadelerin sonucu daima boolean veri tipi olan True veya False değeri ile sonuçlanır. Mantıksal ifadelerde, karşılaştırma veya mantıksal işlemciler veya her ikisi birden bulunur. Örnek :
>>>16 > 30 and 23 == 23
False
Mantıksal işlemcilerin öncelik sıraları karşılaştırma işlemcilerinden küçüktür. Bu nedenle önce karşılaştırma işlemcileri uygulanır. Bu şekilde mantıksal ifade, False and True haline indirgenir. Burada, and işlemcisi ancak her iki işleneni de True olursa True sonucunu vereceğinden, sadece bir tane True ile sonuç False olur.
Mantıksal ifadeler çok daha karmaşık olabilirler. Fakat mantıksal ifadeler, ne kadar karmaşık olursa olsunlar, mantıksal veri tipinde (True veya False) olan sadece bir tek sonuç verebilirler.