Infix,Postfix,Prefix Mantığı

INFIX, POSTFIX, PREFIX

Bu kısımda bilgisayar alanındaki önemli konulardan biri olan infix, postfix ve prefix kavramları üzerinde durulacak ve bu kavramlarda yığıt kullanımı gösterilecektir.

A+B

operator (işlemci) : +

operands (işlenenler) : A, B

infix gösterim : A+B

prefix gösterim : +AB (benzeri bir gösterim add(A,B) fonksiyonu)

postfix gösterim : AB+

in, pre ve post, operator’ün operand’lara göre yerine karılık gelir. Infix gösterimde işlemci (+), işlenenlerin (A,B) arasında yer alır. Prefix gösterimde işaretçi, işlenenlerden önce gelir, postfix gösterimde de sonra gelir.

A+B*C infix ifadesini postfix’e çevirelim. Bunun için işlem önceliğine bakmak gerekir. Çarpmanın toplamaya önceliği olduğu için, A+(B*C) eklinde düşünülebilir. Önce çarpma kısmı postfix’e çevrilecek sonra da sonucu.

A+(B*C) anlaşılırlığı artırmak için parantez kullandık.

A+(BC*) çarpım çevrildi.

A(BC*)+ toplam çevrildi.

ABC*+ postfix form.

işlem önceliği (büyükten küçüğe)

Üs alma/ Çarpma/Bölme /Toplama/Çıkarma

Parantezsiz ve aynı önceliğe sahip işlemcilerde işlemler soldan sağa doru yapılır (üs alma hariç). Üs almada sağdan sola dorudur. A-B+C ‘de öncelik (AB)+C şeklindedir. A^B^C’de ise A^(B^C) şeklindedir. Parantezler default öncelikleri belirtmek için konulmuştur.

 

 

 

Dikkat edilecek olunursa, postfix ile prefix ifadeler birbirinin ayna görüntüsü değildir.

Postfix formda parantez kullanımına gerek yoktur. ki infix ifadeyi düşünün : A+(B*C) ve (A+B)*C. İlk ifadede parantez gereksizdir. İkincide ilk ifade ile karıştırılmaması için gereklidir. Postfix forma çevirmek bu karışıklığı önler. (A+B)*(C+D)’yi infix formda parantezsiz ifade etmek için çarpım işlemi yapılırsa işlem sayısı çoğalır.

Infix formdan postfix forma çevrilen bir ifadede operand’ların (sayı veya sembol) balı olduğu operator’leri (+,-,*,/) görmek zorlaşır (3 4 5 * + ifadesinin sonucunun 23’e, 3 4 + 5 * ifadesinin sonucunun 35’e karılık geldiğini bulmak zor gibi görünür). Fakat parantez kullanmadan tek anlama gelen bir hale dönüşür. İşlemleri, hesaplamaları yapmak kolaylaştırır.

postfix ifadenin sonucunun hesaplanması (ve bunu gerçekletiren algoritma) :

Bir postfix string’inde her operator kendinden önce gelen iki operand üzerinde ilem yapacaktır. Bu operandlar daha önceki operator’lerin sonuçları da olabilir. Bir anda ifadeden bir operand okunarak yığıta yerleştirilir. Bir operator’e ulaşıldığında, yığıtın en üstündeki iki eleman bu operator’ün operand’ları olacaktır. ki eleman yııttan çıkarılır işlem yapılır ve sonuç tekrar yığıta konulur. Artık bir sonraki operator’ün operand’ı olmaya hazırdır.

Birçok derleyici 3*2+5*6 gibi bir infix ifadenin değerini hesaplayacağı zaman postfix forma dönüştürdükten (belirsizliği ortadan kaldırdıktan sonra) sonucu hesaplar : “3 2 * 5 6 * +” (ekil 5.3).

Şekil 5.3 : Bir postfix ifadenin “3 2 * 5 6 * +” sonucunun hesaplanması

 

Hazırlayan : Baran Kısa

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir