IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

 Kayıt ol  Topluluk
14Beğeni(ler)
  • 14 Post By Feragat

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 18 Mart 2014, 16:43   #1
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Fonksiyonel Hesap Makinesi




- mIRC Fonksiyonel Hesap Makinesi
- Hazırlayan : Feragat
- Oluşum : 12.12.2013
- Güncelleme: 06.01.2014
- Son Güncelleme: 27.03.2022

İsminden de anlaşılacağı üzere fonksiyonel hesaplar yapabilen bir hesap makinesidir.
mIRC'in kendi içerisinde $cos $sin $tan $acos $asin $atan $sqrt $pi tanımları bulunuyordu. Fakat sekant kosekant faktöriyel permütasyon kombinasyon vb. formül tanımları yoktu. Bu tanımları matematiksel fonksiyonlarını inceleyerek oluşturdum. İlk versionundan farklı olarak Picture windows ile işlemlerin rahat görülebilmesi için bir pencere oluşturuldu.

Bazı Kullanım ipuçları:

- x^y isimli tuşa basıldığında x üzeri y hesabı yapar, gibi bir sembolü olmadığı için bu şekilde yapmak zorunda kaldım. Bu hesaplama yapılırken öncelikle; üssü hesaplanacak taban sayı yazılır yani x, sonrasında x^y tuşuna basılır daha sonra üs sayısı yazılır yani y. Örnek: 5^3

- pi hesaplarken (örneğin 2 x pi); 2pi şeklinde yazıp = eşittir e basın. Yani pi2 veya 2xpi gibi girişlerde işlem yapmayacaktır. Ayrıca (sin|cos|tan|sec) miktar pi işlemi de yapmaktadır. Örnek: sin2pi

- nPr(Permütasyon) ve nCr(Kombinasyon) hesaplarken kullanılacak format; Öncelikle nPr veya nCr tuşu sonrasında x yani 1. sayı, sonra vürgül ve y yani 2. sayı şeklinde olmalıdır. Örnek: nPr20,10

- Faktöriyel(!) Hesaplamasında öncelikle Faktöriyel simgesine basıp sonra sayı yazılmalıdır. Örnek: !5

Değişen/Düzeltilen Bölümler:

- Arc(sin|cot|tan) hesaplamaları ile sqrt(kök) hesaplama işlemlerinde ki çakışma nedeniyle regex filtreleri yeniden düzenlendi ve sorun giderildi.

- Dialogu takip eden pencere alias'ını(yani drw isimli Alias) farklı bir kodu inceleyerek oluşturdum.(Biraz esinlendim ve birkaç eklenti yaptım diyebilirim.) Bunun dışında tüm bölümler özgün kodlamadır.

Not-I:
Virgül(,) karakterinin; nPr(Permütasyon) ve nCr(Kombinasyon) işlemleri harici bir fonksiyonu bulunmamaktadır. Dört işlem vb. hesaplamalarda Nokta(.) karakterini kullanın.

Not-II: Kullanmak isteyen kişilerin kodu sağlıklı çalışabilmesi için boş bir remote sayfasına eklemesini öneririm. mIRC'in herhangi bir ekranında sağ tık yapıp Hesap sekmesinden açabilirsiniz.

Not-III: Aslında bu kod daha sadede yapılabilir. Ben event'ları ayrı ayrı kullanmayı tercih ettim, daha anlaşılır olması adına. Performans gerektiren bir durum olmadığı için çok fazla karakter tasarrufuna da gitmedim açıkçası.

-Forumda, dialoglar konusunda faydalandığım [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]. Hazırlayanlara teşekkür ederim. İyi forumlar.

Örnek Ekran Görüntüleri-

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
;##################################### ;# - mIRC Fonksiyonel Hesap Makinesi # ;# - Hazırlayan : Feragat # ;# - Oluşum : 12.12.2013 # ;# - Güncelleme: 06.01.2014 # ;# - Son Güncelleme: 27.03.2022 # ;##################################### menu * { .Hesap:/dialog -m hesap hesap } dialog hesap { title "Fonksiyonel Hesap Makinesi" size -1 -1 222 163 option dbu edit "", 1, 10 56 201 10, multi autohs button "sin", 2, 10 73 21 12, flat button "asin", 3, 34 73 21 12, flat button "cot", 4, 58 73 21 12, flat button "cos", 5, 10 88 21 12, flat button "acos", 6, 34 88 21 12, flat button "sec", 7, 58 88 21 12, flat button "tan", 8, 10 102 21 12, flat button "atan", 9, 34 102 21 12, flat button "csc", 10, 58 102 21 12, flat button "7", 11, 115 73 17 12, flat button "8", 12, 135 73 17 12, flat button "4", 14, 115 88 17 12, flat button "5", 15, 135 88 17 12, flat button "6", 16, 155 88 17 12, flat button "1", 17, 115 103 17 12, flat button "2", 18, 135 103 17 12, flat button "3", 19, 155 103 17 12, flat button "<=", 20, 194 73 17 12, flat button "C", 21, 194 88 17 12, flat button "=", 22, 194 103 17 26, flat button "0", 23, 115 117 17 12, flat button ".", 25, 155 117 17 12, flat button "nCr", 26, 10 116 21 12, flat button "nPr", 27, 34 116 21 12, flat button "!", 28, 58 116 21 12, flat button "9", 13, 155 73 17 12, flat button "x", 29, 175 73 17 12, flat button "÷", 30, 175 88 17 12, flat button "-", 31, 175 103 17 12, flat button "+", 32, 175 117 17 12, flat button "pi", 38, 81 73 21 12, flat button "x^y", 39, 81 88 21 12, flat button "x³", 40, 81 116 21 12, flat button "x²", 41, 81 102 21 12, flat radio "Degree - (360°)", 42, 9 145 49 10 radio "Radian - (2pi)", 43, 64 145 44 10 button ",", 24, 135 117 17 12, flat button "Kök(sqrt)", 34, 10 130 45 12, flat box "", 35, 10 4 201 47 } ;ALIAS'lar ;Aktif pencere oluşum alias -l drw { if !$isid && $regex($1,/^on\z/S) { window -c @Hesap window -phdk0o +d @Hesap $calc($dialog(hesap).x + 30) $calc($dialog(hesap).y + 48) 388 70 .timerb -ho 0 100 drw ref } if !$isid && $regex($1,/^ref\z/S) { window $iif($dialog(hesap).active,-o,-u) @Hesap $calc($dialog(hesap).x + 30) $calc($dialog(hesap).y + 48) 388 70 } } ;Aktif pencere kısayol alias -l chesap { clear @Hesap drawtext -rbo @Hesap $rgb(255,255,255) $rgb(255,0,0) Verdana 15 8 13 $1- } alias -l dhesap drawtext -rbo @Hesap $rgb(0,255,255) $rgb(0,0,0) Verdana 12 8 42 $1- alias -l shesap drawtext -rbo @Hesap $rgb(0,255,255) $rgb(0,0,0) Verdana 15 70 13 $1- ;Kotanjant alias -l cot { if ($isid && $prop == deg) { return $calc(1 / $tan($1).deg) } elseif ($isid && !$prop) { return $calc(1 / $tan($1)) } } ;Sekant alias -l sec { if ($isid && $prop == deg) { return $calc(1 / $cos($1).deg) } elseif ($isid && !$prop) { return $calc(1 / $cos($1)) } } ;Kosekant alias -l csc { if ($isid && $prop == deg) { return $calc(1 / $sin($1).deg) } elseif ($isid && !$prop) { return $calc(1 / $sin($1)) } } ;Faktöriyel alias -l fac return $calc($regsubex($regsubex($str(*,$1),/./g,\n),/(?<=\d(?=\d))/g,*)) ;Permütasyon alias -l per $iif($isid,return,echo -a) $calc($fac($$1) / $fac($calc($$1 - $$2))) ;Kombinasyon alias -l cmb $iif($isid, return, echo -a) $calc($fac($$1) / $calc($fac($calc($$1 - $$2)) * $fac($$2))) ;x sayısının y üssü alias -l üs $iif($isid,return,echo -a) $calc($$1 ^ $$2) ;x sayısının küpü alias -l x3 $iif($isid,return,echo -a) $calc($$1 ^ 3) ;x sayısının karesi alias -l x2 $iif($isid,return,echo -a) $calc($$1 ^ 2) ;EVENT on *:dialog:hesap:*:*: { if ($devent = init) { did -c $dname 42 drw on } if ($devent = close) { window -c @Hesap .timerb off } if ($devent = sclick) { if ($did = 20) { if $did(1).text { did -ra $dname 1 $left($did(1).text,-1) } } if ($did isnum 11-19) || ($did = 23) { did -a $dname 1 $did($did).text } if ($did = 21) { did -r $dname 1 clear @Hesap } if ($did = 25) { did -a $dname 1 . } if ($did = 24) { did -a $dname 1 , } if ($did = 30) { did -a $dname 1 / } if ($did = 31) { did -a $dname 1 - } if ($did = 32) { did -a $dname 1 + } if ($did = 29) { did -a $dname 1 x } if ($did = 38) { did -a $dname 1 pi } if ($did = 41) { $iif(!$did(1).text,did -a $dname 1 x2^) } if ($did = 40) { $iif(!$did(1).text,did -a $dname 1 x3^) } if ($did = 39) { $iif($$did(1).text,did -a $dname 1 ^) } if ($did = 26) { $iif(!$did(1).text,did -a $dname 1 nCr) } if ($did = 27) { $iif(!$did(1).text,did -a $dname 1 nPr) } if ($did = 28) { $iif(!$did(1).text,did -a $dname 1 !) } if ($did = 34) { $iif(!$did(1).text,did -a $dname 1 sqrt) } if ($did = 2) { $iif(!$did(1).text, did -a $dname 1 sin, did -ra $dname 1 sin $+ $did(1).text) } if ($did = 3) { $iif(!$did(1).text, did -a $dname 1 asin, did -ra $dname 1 asin $+ $did(1).text) } if ($did = 6) { $iif(!$did(1).text, did -a $dname 1 acos, did -ra $dname 1 acos $+ $did(1).text) } if ($did = 9) { $iif(!$did(1).text, did -a $dname 1 atan, did -ra $dname 1 atan $+ $did(1).text) } if ($did = 5) { $iif(!$did(1).text, did -a $dname 1 cos, did -ra $dname 1 cos $+ $did(1).text) } if ($did = 8) { $iif(!$did(1).text, did -a $dname 1 tan, did -ra $dname 1 tan $+ $did(1).text) } if ($did = 4) { $iif(!$did(1).text, did -a $dname 1 cot, did -ra $dname 1 cot $+ $did(1).text) } if ($did = 7) { $iif(!$did(1).text, did -a $dname 1 sec, did -ra $dname 1 sec $+ $did(1).text) } if ($did = 10) { $iif(!$did(1).text, did -a $dname 1 csc, did -ra $dname 1 csc $+ $did(1).text) } if ($did = 22) { if $did(42).state == 1 && $regex(h,$did(1).text,/^([a-z]{3})([-]\d+|[-]\d+\.\d+|\d+|\d+\.\d+|\d+pi|pi)$/) { if $regex(k,$regml(h,2),/(\d+pi)/) { var %ns = $+($gettok($regml(k,1),1,112),$chr(32),$chr(42),$chr(32),$chr(36),$chr(112),$gettok($regml(k,1),2,112)) var %ns1 = [ [ %ns ] ] | did -ra $dname 1 [ [ $+($chr(36),$regml(h,1),$chr(40),%ns1,$chr(41),.deg) ] ] chesap $+($regml(h,1),$chr(40),$regml(h,2),$chr(41),:) dhesap $+($gettok($regml(k,1),1,112),$chr(32),$chr(42),$chr(32),$chr(112),$gettok($regml(k,1),2,112)) $chr(61) [ [ $+($chr(36),$regml(h,1),$chr(40),%ns1,$chr(41),.deg) ] ] } elseif $regex(k,$regml(h,2),/(pi)/) { var %ns = $pi did -ra $dname 1 [ [ $+($chr(36),$regml(h,1),$chr(40),%ns,$chr(41),.deg) ] ] chesap Pi: dhesap $+($regml(h,1),$chr(40),%ns,$chr(41)) $chr(61) [ [ $+($chr(36),$regml(h,1),$chr(40),%ns,$chr(41),.deg) ] ] } else { var %h = $+($chr(36),$regml(h,1),$chr(40),$regml(h,2),$chr(41),.deg) did -ra $dname 1 [ [ %h ] ] chesap $replace($regml(h,1),sin,Sinüs,cos,Kosinüs,tan,Tanjant,cot,Kotanjant,sec,Sekant,cos,Kosekant) $+ : dhesap $+($regml(h,1),$chr(40),$regml(h,2),$chr(41)) $chr(61) [ [ %h ] ] } } elseif $did(43).state == 1 && $regex(h,$did(1).text,/^([a-z]{3})([-]\d+|[-]\d+\.\d+|\d+|\d+\.\d+|\d+pi|pi)$/) { if $regex(k,$regml(h,2),/(\d+pi)/) { var %ns = $+($gettok($regml(k,1),1,112),$chr(32),$chr(42),$chr(32),$chr(36),$chr(112),$gettok($regml(k,1),2,112)) var %ns1 = [ [ %ns ] ] did -ra $dname 1 [ [ $+($chr(36),$regml(h,1),$chr(40),%ns1,$chr(41)) ] ] chesap Pi: dhesap $+($gettok($regml(k,1),1,112),$chr(32),$chr(42),$chr(32),$chr(112),$gettok($regml(k,1),2,112)) $chr(61) [ [ $+($chr(36),$regml(h,1),$chr(40),%ns1,$chr(41)) ] ] } elseif $regex(k,$regml(h,2),/(pi)/) { var %ns = $pi did -ra $dname 1 [ [ $+($chr(36),$regml(h,1),$chr(40),%ns,$chr(41)) ] ] chesap $replacecs($regml(h,1),pi,Pi) $+ : ;Burada sonda bir parantez vardı dhesap regml(h,2) $+ $replacecs($regml(k,1),pi,Pi) $chr(61) [ [ $+($chr(36),$regml(h,1),$chr(40),%ns,$chr(41)) ] ] } else { var %h = $+($chr(36),$regml(h,1),$chr(40),$regml(h,2),$chr(41)) did -ra $dname 1 [ [ %h ] ] chesap $replacecs($regml(h,1),pi,Pi,sin,Sinüs,cos,Kosinüs,tan,Tanjant,cot,Kotanjant) $+ : dhesap $+($regml(h,1),$chr(40),$regml(h,2),$chr(41)) $chr(61) [ [ %h ] ] } } elseif $did(42).state == 1 && $regex(s,$did(1).text,/^(asin|acot|atan)(\-1|\d|\d+\/\d+)$/) { var %sn = $+($gettok($regml(s,2),1,47),$chr(32),$chr(47),$chr(32),$gettok($regml(s,2),2,47)),%ss = $+($chr(36),$regml(s,1),$chr(40),%sn,$chr(41),.deg) did -ra $dname 1 [ [ %ss ] ] chesap $replace($regml(s,1),asin,Arc Sinus,acot,Arc Kotanjant,atan,Arc Tanjant) $+ : dhesap $regml(s,2) $chr(61) [ [ %ss ] ] } elseif $did(43).state == 1 && $regex(s,$did(1).text,/^(asin|acot|atan)(\-1|\d|\d+\/\d+)$/) { if $regex($regml(s,2),/\//) { var %sn = $+($gettok($regml(s,2),1,47),$chr(32),$chr(47),$chr(32),$gettok($regml(s,2),2,47)),%ss = $+($chr(36),$regml(s,1),$chr(40),%sn,$chr(41)) did -ra $dname 1 [ [ %ss ] ] chesap $replace($regml(s,1),asin,Arc Sinus,acot,Arc Kotanjant,atan,Arc Tanjant) $+ : dhesap $regml(s,2) $chr(61) [ [ %ss ] ] } else { var %ss = $+($chr(36),$regml(s,1),$chr(40),$regml(s,2),$chr(41)) did -ra $dname 1 [ [ %ss ] ] chesap $replace($regml(s,1),asin,Arc Sinus,acot,Arc Kotanjant,atan,Arc Tanjant) $+ : dhesap $regml(s,2) $chr(61) [ [ %ss ] ] } } elseif $regex(x,$did(1).text,/^(\d+\x5E\d+|\d+\x2E\d+\x5E\d+|\d+\x5E\d+\x2E\d+|\d+\x2E\d+\x5E\d+\x2E\d+)$/) { did -ra $dname 1 $calc($regml(x,1)) chesap x üssü y: dhesap $regml(x,1) $chr(61) $calc($regml(x,1)) } elseif $regex(p,$did(1).text,/^(\d+pi|\d+\x2E\d+pi)$/) { var %p1 = $gettok($regml(p,1),1,112),%p2 = $calc($pi * %p1) did -ra $dname 1 %p2 chesap Pi: dhesap %p1 $chr(61) %p2 } elseif $regex(u2,$did(1).text,/^(x2\x5E\d+|x2\x5E\d+\x2E\d+)$/) { var %u-2 = $regsubex(sc,$regml(u2,1),/^\w2\x5E(.+)$/,\1),%u_2 = $calc(%u-2 ^ 2) did -ra $dname 1 %u_2 chesap Kare: dhesap $chr(61) %u_2 } elseif $regex(u3,$did(1).text,/^(x3\x5E\d+|x3\x5E\d+\x2E\d+)$/) { var %u-3 = $regsubex(s3,$regml(u3,1),/^\w3\x5E(.+)$/,\1),%u_3 = $calc(%u-3 ^ 3) did -ra $dname 1 %u_3 chesap Küp: dhesap $chr(61) %u_3 } elseif $regex(c1,$did(1).text,/^(nCr\d+\x2C\d+)$/) { var %prm = $regsubex($regml(c1,1),/^nCr(.+)$/,\1) did -ra $dname 1 [ [ $+($chr(36),cmb,$chr(40),%prm,$chr(41)) ] ] chesap Kombinasyon: dhesap %prm $chr(61) [ [ $+($chr(36),cmb,$chr(40),%prm,$chr(41)) ] ] } elseif $regex(c1,$did(1).text,/^(nPr\d+\x2C\d+)$/) { var %prs = $regsubex($regml(c1,1),/^nPr(.+)$/,\1) did -ra $dname 1 [ [ $+($chr(36),per,$chr(40),%prs,$chr(41)) ] ] chesap Permütasyon: dhesap %prs $chr(61) [ [ $+($chr(36),per,$chr(40),%prs,$chr(41)) ] ] } elseif $regex(f1,$did(1).text,/^(\x21\d+|\x21\d+\x2E\d+)$/) { var %f1 = $regsubex($regml(f1,1),/\x21(.+)/,\1) did -ra $dname 1 [ [ $fac(%f1) ] ] chesap Faktöriyel: dhesap $chr(33) $+ %f1 $chr(61) [ [ $fac(%f1) ] ] } elseif $regex(q1,$did(1).text,/^(sqrt\d+|sqrt\d+\x2E\d+)$/) { var %q1 = $regsubex(qq,$regml(q1,1),/sqrt(.+)/,\1) did -ra $dname 1 [ [ $sqrt(%q1) ] ] chesap Kök: dhesap $regsubex(qq,$regml(q1,1),/sqrt(.+)/,\1) $chr(61) [ [ $sqrt(%q1) ] ] } elseif $regex(nm,$did(1).text,/^(\-?\d+[+-/x.]\d+|\-?\d+\x2E\d+[+-/x.]\d+|\-?\d+[+-/x.]\d+\x2E\d+)$/) { var %nm = $regsubex(rsn,$regml(nm,1),/(\-?\d+|\-?\d+\x2E\d+)(\+|\-|x|\/)(\d+|\d+\x2E\d+)/,\1 $replace(\2,x,*) \3) did -ra $dname 1 $calc(%nm) chesap İşlem: shesap $regml(rsn,1) $regml(rsn,2) $regml(rsn,3) dhesap Sonuç: $calc(%nm) } } } }


__________________
The Ghost of Christmas Past...

i'm here sometimes

Konu Feragat tarafından (09 Mayıs 2022 Saat 23:08 ) değiştirilmiştir. Sebep: Köklü bir güncelleme yapıldı.
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet
Cevapla

Etiketler
fonksiyonel, hesap, makinesi


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Hesap Makinesi nitX Visual Basic 2 28 Şubat 2011 10:27
Hesap Makinesi 2 Cemalizim Visual Basic 0 21 Temmuz 2008 18:36
Hesap Makinesi Cemalizim Visual Basic 0 21 Temmuz 2008 18:35
Hesap makinesi Cemalizim C ve C++ 0 19 Temmuz 2008 15:28