Bilgisayarlar matematiksel işlemleri insanlar gibi algılayıp gerçekleştirmede zorlanırlar (Özellikler karışık ve çok parantezli ifadelerde). Bu yüzden işlemlerin belirli bir sırada gelmesi işlerini kolaylaştırır.
- İnfix ifadeler
Günlük hayatta kullandığımız ifadelerdir. Operandların (Sayıların) arasında Operatorler (İşlemler) vardır.
Örnek vermek gerekirse:A * ( B + C ) / D
Yukarıdaki ifadeyi B ile C’yi topla, D’ye böl ve A ile çarp anlamına veya B ile C’yi topla A ile çarp D’ye böl anlamına gelebilir (Ama ikisi de aynı sonucu verir).İnfix ifadelerde parantezlerin önemi çok büyüktür ve işlemin sonucunu etkileyebilir. Fakat Postfix ve Prefix ifadelerde işlemler soldan sağa doğru şekilde gider. - Postfix ifadeler
Operatorler Operandlardan sonra gelir. Yukarıdaki ifadenin karşılığı Postfix dönüşümünde :A B C + * D /
olarak yazılır. İşlemlerin yapılışı soldan sağa şekilde olur. Operatorden önce gelen iki ifadenin işlemi yapılır ve yerlerine yazılır sonra yeniden ifade değerlendirilir. B + C ifadesine E diyelim mesela. Soldan sağa doğru ilerledik ilk Operator olarak ‘+’ işaretini gördük ve ondan önceki 2 Operandı işleme soktuk yeni ifademiz:A E * D /
şeklinde oldu. Yine soldan sağa doğru ilerledik ve ‘*’ işaretini gördük ondan önceki 2 Operandı işleme soktuk veF D /
ifadesine ulaştık yine aynı şekilde yaptık veG
sonucuna ulaşıp işlemi bitirdik. - Prefix ifadeler
Postfix ifadelerin aksine Operatorler Operandlardan önce gelir. Yine işlemler soldan sağa doğru şekilde ilerler. En baştaki ifadenin Prefix hali :/ * A + B C D
şeklindedir.
İnfix ifadeden Postfix ifadeye Dönüşüm
- Boş bir yığın yarat. (Yığın ile ilgili makaleme gitmek için tıklayın)
- İnfix ifadeyi en küçük birimlerine (token) böl.
- Eğer birim sol parantez ise yığına at.
- Eğer birim sağ parantez ise yığında sol paranteze uğrayana kadar yığını boşalt.
- Eğer birim bir Operator ise (+,-,*,/) daha önce eklenen ve şimdiki Operatorden aynı (isteğe bağlı) veya daha yüksek önceliği olanları yığından çıkar.
- İfadenin sonuna gelindiğinde yığını boşalt.
A+B*C/(E-F)
ifadesini Postfix ifadesine dönüştürelim.
- A ifadesini çıkışa yaz. (
A+B*C/(E-F)
)
Çıkış : A
Yığın : - + ifadesini yığına yaz. (
A+B*C/(E-F)
)
Çıkış : A
Yığın : + - B ifadesini çıkışa yaz. (
A+B*C/(E-F)
)
Çıkış : A B
Yığın : + - * ifadesini yığına yaz. (
A+B*C/(E-F)
)
Çıkış : A B
Yığın : + * - C ifadesini çıkışa yaz. (
A+B*C/(E-F)
)
Çıkış : A B C
Yığın : + * - / ifadesini yazmadan önce aynı veya da öncelikli ifadeleri çıkarıp (*) çıkışa ekle. (
A+B*C/(E-F)
)
Çıkış : A B C *
Yığın : + / - ( ifadesini yığına at. (
A+B*C/(E-F)
)
Çıkış : A B C *
Yığın : + / ( - E ifadesini çıkışa yaz. (
A+B*C/(E-F)
)
Çıkış : A B C * E
Yığın: + / ( - – ifadesini yığına at. (
A+B*C/(E-F)
)
Çıkış : A B C * E
Yığın : + / ( – - F ifadesini çıkışa yaz. (
A+B*C/(E-F)
)
Çıkış : A B C * E F
Yığın : + / ( – - ) ifadesine geldik. İlk görülen ‘(‘ ifadeye kadar olan işlemleri çıkışa yaz. (
A+B*C/(E-F)
)
Çıkış : A B C * E F –
Yığın : + / - İfadenin sonuna geldik. Yığında kalanları çıkışa yazacağız.
Çıkış : A B C * E F – / +
Yığın :
İnfix ifadeden Prefix ifadeye dönüşüm
- İnfix ifadeyi tersten yazın.
- Ters çevrilen ifadenin Postfix karşılığını yukarıdaki adımlardan bulun.
- Çıkan ifadeyi tersten yazdığınızda ifadenin infix karşılığını bulmuş olursunuz.