C# ile Hesap Makinesi
Yazan : Yusuf Nar, Haziran 17, 2008, Salı 21:28
Etiket(ler) : calculator, ExpressionParser, info.lundin.Math, ödev
Bu yazının konusu işlem sırası gözeterek çalışan bir hesap makinesinin nasıl yapılabileceği üzerine olacaktır. Çoğumuz için 4 işlemden ibaret olan ve çalışma şekli olarak windows'un kendi hesap makinesi gibi çalışan birşey yapmak zor olmasa gerek. Ona ek olarak işlem sırasını gözeten ve
(1+2*3)/7
gibi bir işlemi çözümleyebilen bir hesap makinesi nasıl yapılır, bunun cevabını öğreneceğiz. Kendimiz sıfırdan bir uygulama yapmaktan ziyade halihazırdaki birkaç örneğe yer vererek, bunların nasıl kullanabileceğini inceleyeceğiz.
Bunun için temelde 2 yol vardır.
Birinci Yol
C Sharp derleyicisine bu işi yaptırmak. Yani matematik ifadelerini dinamik olarak oluşturduğumuz bir sınıfın dinamik bir metodu içinde çalıştırmak. C sharp kodları yazarken
x=(1+2*3)/7;
şeklinde ifadeler ile x değişkenine ilgili matematik işleminin sonucu atayabiliyoruz. Bir metodla bu ifade parametrik hale getirilir ve ilgili sınıf dinamik olarak derlenirse işlemi c sharp derleyici yapacaktır. Benzer bir örnek codeproject'de bir makalede yer almakta. Örneği codeproject üzerinden indirebileceğiniz gibi buradan da indirebilirsiniz. Arayüz olarak command line kullanılmış olsa da konuyu anlamak açısından çok güzel bir örnek.
İkinci Yol
İşlemleri ve sayıları pars eden bir sınıf yazmak, böylece işlem sırasını ve ifadeyi çözümleme işlemini kendimiz kodlamak. Nasıl pars edeceğimiz konusuna gelince, burada regular expressions kabiliyetlerimizi göstermek gerekiyor. Burası biraz zahmetli bir iş fakat 4 işlemden daha kabiliyetli bir araç geliştirmek istiyorsak bu yolu izlememiz gerekiyor.
İkinci yolla ilgili geliştirdiğimiz örnekte, amerikayı tekrar keşfetmeye gerek yok diyerek bu şekilde geliştirilen 3.parti bir .dll kullandık. Arkadaşımız regular expressions kullanmadan bu parser'ı uyarlamış olsa da iyi bir iş çıkartmış.
Bu .dll'lerden sonra aslında bize çok fazla bir iş kalmıyor. Uygulamamız rakam ve işaret girişini sağlayarak, sonucu bu 3.parti .dll'leri kullanarak hazırlıyor.
İkinci uygulamayı buradan indirebilirsiniz.
Bu tarz bir uygulama hazırlayacak olan arkadaşlara yukarıdaki örneklerin yol göstereceğini sanıyorum.