Fonksiyonel Hesap Makinesi

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

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 vs. formül tanımları yoktu. Bunları matematiksel fonksiyonlarını inceleyerek kendim oluşturdum. Hiçbir yerden alıntı değildir. İ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 yazımlarda 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öriye 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ı(Picture windows) farklı bir kodu inceleyerek oluşturdum.(Biraz esinlendim ve birkaç eklenti yaptım diyebilirim.) Diğer tüm bölümler özgün kodlamadır.

Not1:
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.

Not2: 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 Hesapsekmesinden açabilirsiniz.

-Emeğe saygı açısından kaynak sitemizin adresini silmezseniz sevinirim. İyi forumlar.

Ekran görüntüleri:

Fonksiyonel hesap makinesi için Kullanılacak Kod:

  #####################################;# - mIRC Fonksiyonel Hesap Makinesi #;# - Hazırlayan : Feragat            #;# - Oluşum : 12.12.2013             #;# - Güncelleme: 06.01.2014          #;# - www.mircscripting.net           #;#####################################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  link "www.mircscripting.net", 33, 158 146 55 8  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şumalias -l drw {   if !$isid && $regex($1,/on/AZS) {     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/AZS) {     window $iif($dialog(hesap).active,-o,-u) @Hesap $calc($dialog(hesap).x + 30) $calc($dialog(hesap).y + 48) 388 70  }};Aktif pencere kısayolalias -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- };Kotanjantalias cot {   if $isid && $prop == deg { return $calc(1 / $tan($1).deg) }  elseif $isid && !$prop { return $calc(1 / $tan($1)) }};Sekantalias sec {   if $isid && $prop == deg { return $calc(1 / $cos($1).deg) }  elseif $isid && !$prop { return $calc(1 / $cos($1)) }};Kosekantalias csc {   if $isid && $prop == deg { return $calc(1 / $sin($1).deg) }  elseif $isid && !$prop { return $calc(1 / $sin($1)) }};Faktöriyel alias fac {  unset %s   var %a = 1,%b = $1  while %a <= %b { %s = $addtok(%s,%a,32) | inc %a }  $iif($isid,return,echo -a) $calc($replace(%s,$chr(32),$+($chr(32),*,$chr(32))))};Permütasyonalias per { $iif($isid,return,echo -a) $calc($fac($$1) / $fac($calc($$1 - $$2))) };Kombinasyonalias cmb { $iif($isid,return,echo -a) $calc($fac($$1) / $calc($fac($calc($$1 - $$2)) * $fac($$2))) } ;x sayısının y üssü alias üs { $iif($isid,return,echo -a) $calc($$1 ^ $$2) };x sayısının küpüalias x3 { $iif($isid,return,echo -a) $calc($$1 ^ 3) };x sayısının karesialias x2 { $iif($isid,return,echo -a) $calc($$1 ^ 2) };EVENT'lar-----------------------------------------------;Linkon *:dialog:hesap:dclick:33: { run $did(33).text } ;Dialog başladığında..on *:dialog:hesap:init:*: {  did -c $dname 42 | drw on};Dialog kapandığında..on *:dialog:hesap:close:*: { window -c @Hesap | .timerb off };Geri Tuşuon *:dialog:hesap:sclick:20: { if $did(1).text { did -ra $dname 1 $left($did(1).text,-1) } };Rakamlar 0-9on *:dialog:hesap:sclick:11-19,23: { did -a $dname 1 $did($did).text };Temizle (C)on *:dialog:hesap:sclick:21: { did -r $dname 1 | clear @Hesap };Noktaon *:dialog:hesap:sclick:25: { did -a $dname 1 . };Virgülon *:dialog:hesap:sclick:24: { did -a $dname 1 , };Bölmeon *:dialog:hesap:sclick:30: { did -a $dname 1 / };Çıkarma on *:dialog:hesap:sclick:31: { did -a $dname 1 - };Toplama on *:dialog:hesap:sclick:32: { did -a $dname 1 + };Çarpmaon *:dialog:hesap:sclick:29: { did -a $dname 1 x };Pion *:dialog:hesap:sclick:38: { did -a $dname 1 pi };x2 on *:dialog:hesap:sclick:41: { $iif(!$did(1).text,did -a $dname 1 x2^) };x3 on *:dialog:hesap:sclick:40: { $iif(!$did(1).text,did -a $dname 1 x3^) };x üzeri yon *:dialog:hesap:sclick:39: { $iif($$did(1).text,did -a $dname 1 ^) };nCr Kombinasyonon *:dialog:hesap:sclick:26: { $iif(!$did(1).text,did -a $dname 1 nCr) };nPr Permütasyonon *:dialog:hesap:sclick:27: { $iif(!$did(1).text,did -a $dname 1 nPr) };! Faktöriyelon *:dialog:hesap:sclick:28: { $iif(!$did(1).text,did -a $dname 1 !) };Sqrt Kökon *:dialog:hesap:sclick:34: { $iif(!$did(1).text,did -a $dname 1 sqrt) };Sinüson *:dialog:hesap:sclick:2: {  if !$did(1).text { did -a $dname 1 sin }  else { did -ra $dname 1 sin $+ $did(1).text }};Asinon *:dialog:hesap:sclick:3: {   if !$did(1).text { did -a $dname 1 asin }  else { did -ra $dname 1 asin $+ $did(1).text } };Acoson *:dialog:hesap:sclick:6: {   if !$did(1).text { did -a $dname 1 acos }   else { did -ra $dname 1 acos $+ $did(1).text }};Atanon *:dialog:hesap:sclick:9: {   if !$did(1).text { did -a $dname 1 atan }  else { did -ra $dname 1 atan $+ $did(1).text } };Kosinüson *:dialog:hesap:sclick:5: {   if !$did(1).text { did -a $dname 1 cos }  else { did -ra $dname 1 cos $+ $did(1).text }};Tanjanton *:dialog:hesap:sclick:8: {   if !$did(1).text { did -a $dname 1 tan }  else { did -ra $dname 1 tan $+ $did(1).text } };Kotanjanton *:dialog:hesap:sclick:4: {   if !$did(1).text { did -a $dname 1 cot }  else { did -ra $dname 1 cot $+ $did(1).text } };Sekanton *:dialog:hesap:sclick:7: {   if !$did(1).text { did -a $dname 1 sec }  else { did -ra $dname 1 sec $+ $did(1).text }};Kosekant on *:dialog:hesap:sclick:10: {   if !$did(1).text { did -a $dname 1 csc }  else { did -ra $dname 1 csc $+ $did(1).text } };Eşittiron *:dialog:hesap:sclick: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) $+ : | 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) }}

Bir cevap yazın

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