Bir bilgisayar mühendisi için programlama dili, öğrendiklerini sınadığı, deneyler yaptığı bir laboratuardır ve mühendisler deneylerini, kestiremedikleri sonuçları gözlemlemek için değil, öngördükleri sonuçları doğrulamak için yapar...

Abaküs

Yüzlerce basamaklı oldukça uzun tamsayılarda çarpma, toplama, çıkarma, faktöryel ve üs alma işlemleri yapabilen online hesap makinesi.

Abaküs, Ekran GörüntüsüSayfa: Abaküs

İlgili yazı: Shunting Yard Algoritması

Sayfa yardımıyla basamak sayısı sınırı olmaksızın çok büyük sayılar üzerinde hızlı bir şekilde toplama, çıkarma, çarpma, üs ve faktöryel alma işlemleri yapabilirsiniz.

Kullanılabilir Operatörler

Kullanılabilecek operatörler şunlar (işlem önceliklerine göre sıralı):

(): İşlem öncelikli grup açma ve kapama operatörleri
! : Faktöryel operatörü
^ : Üs alma operatörü
* : Çarpma operatörü
+ : Toplama operatörü
- : Çıkarma operatörü

Sayfanın hikayesinden de bahsedeyim. Zamanında okulda C++ ile çok uzun tamsayılarda işlemler yapabilen bir sınıf yazmamız istenmişti. Ben de karakter dizilerini kullanarak işlemleri kağıt üzerinde yaptığımız gibi rakam rakam yapan bir sınıf yazmıştım. Sınıf, basamak sayısını önemsemeden istenen uzunluktaki tamsayılar ile işlem yapabiliyordu. PHP ile bir benzerini yeniden yazasım geldi. Başta hemen bitireceğimi düşünmüştüm ama hesaba katmadığım bir şey vardı; kullanıcı sadece bir operatör ve iki operand mı kullanacak?...

Kullanıcı oldukça karmaşık ifadeler girebilir. Karmaşık ifadelerin parçalanıp çözümlenmesi ve işlem önceliklerine uyularak işlenmesi gerekir. Mesela aşağıdaki gibi bir ifade düşünün. Bir insan bile bu ifadedeki işlem önceliklerini hemen belirleyemez.

3-4*(45-(21-2)*(2-1)-560-((4-3)*2))+43*4!-2

İşin asıl zamanımı alan kısmı buydu. Kendimce geliştirmeye çalıştığım hiç bir parçalama metodu, hazırladığım karmaşık girdi testlerinin tümünden geçemedi. Kendime verdiğim birkaç günlük süre dolunca ben de hazır bir girdi parçalama metodu arayışına girdim ve shunting yard algoritmasına rastladım. Algoritma yardımıyla infix notasyonundaki ifadeler, postfix notasyonunda, operatörlerin işlem önceliklerine göre sıralı olduğu biçimde elde edilebiliyor. Postfix notasyonu bilgisayarda işlenmek için çok daha uygun...

Sayfayı
Yayın tarihi: 10 Mart 2011 Perşembe, 15:33
Anahtar kelimeler: online hesap makinesi, uzun tamsayı, büyük sayılarda işlemler

Yorum Gönder

 
Yorumunuzu -1. yoruma yanıt olarak gönderiyorsunuz. Yanıtlamayı iptal etmek için buraya tıklayabilirsiniz.

 

Yorumlar (3)

sahin
Yanıtla
11 Mart 2011 Cuma, 03:32
#1

yaptığım işlemleri kontrol etmedim ama güzel bir çalışma olmuş

mert
Yanıtla
28 Temmuz 2011 Perşembe, 11:04
#2

bölme eksik gibi :) ama onun dışında çok iyi çalışıyor denedim :)

Hüseyin Atasoy
Yanıtla
28 Temmuz 2011 Perşembe, 18:25
#3

Evet, bölme işlemi yok. Sadece tamsayılar üzerinde işlem yaptırılabilir. Bölme işlemi için uzun sayılarda kullanılabilecek bir yöntem bulamadım. Hem bulmuş olsaydım bile, sonuçlar tamsayı çıkmayabileceğinden, bölme işlemi diğer işlemler için problem yaratabilirdi.

 
 
Sayfa 39 sorgu ile 0.01 saniyede oluşturuldu.
Atasoy Blog v4 © 2008-2017 Hüseyin Atasoy