İsminden de anlaşılacağı üzere fonksiyonel hesaplar yapabilen bir hesap makinesidir.
tanımları bulunuyordu. Fakat
. formül tanımları yoktu. Bu tanımları matematiksel fonksiyonlarını inceleyerek oluşturdum. İlk versionundan farklı olarak
ile işlemlerin rahat görülebilmesi için bir pencere oluşturuldu.
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
.
şeklinde yazıp = eşittir e basın. Yani
. Ayrıca
işlemi de yapmaktadır.
yani 1. sayı, sonra vürgül ve
yani 2. sayı şeklinde olmalıdır.
Hesaplamasında öncelikle Faktöriyel simgesine basıp sonra sayı yazılmalıdır.
hesaplama işlemlerinde ki çakışma nedeniyle regex filtreleri yeniden düzenlendi ve sorun giderildi.
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.
. Dört işlem
. hesaplamalarda
karakterini kullanın.
eklemesini öneririm. mIRC'in herhangi bir ekranında
sekmesinden açabilirsiniz.
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ı.
. Hazırlayanlara teşekkür ederim. İyi forumlar.
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)
}
}
}
}