Güncelleme: 29 Aralık 2021
Matemetiksel İşlem Sembolleri
Matematiksel işlemlerde öncelik sırası
- Parantez içi. a = (5 + 10) * 3 ' 45
- Üs alma işlemi (^). a = 10 + 2 ^ 3 ' 18
- Negatife dönüştürme (-) a = 10 - -30 - -5 ' 45
- Çarpma ve Bölme(* , /). a = 20 + 30 / 2 ' 35
- Kalansız bölme (\) a= 30 - 16 \ 3 ' 25
- MOD işlemi. a = 10 + 11 MOD 3 ' 12
- Toplama, Çıkarma (+ , -) a = 10 + 5 * 2 - 20 / (2 + 3) ^ 2 ' ' 19.2
PRINT 5 ^ 2 ' 25 (Karesi) PRINT 5 ^ -2 '.04 PRINT 1 / 5 ^ 2 '.04 PRINT 25 ^ 1 / 2 '12.5 PRINT (25 ^ 1) / 2 '12.5 PRINT 25 ^ (1 / 2) '5 (Karekök) PRINT 25 ^ .5 '5 (Karekök) PRINT 27 ^ (1 / 3) ' 3 (Küpkök) PRINT 3 + 6 / 12 * 3 - 2' 2.5 PRINT 6 / 12 + 2 ^ 4 ' 0.5 PRINT 5 + .5 * 3' 1.5 PRINT 3 + 9 / 3' 4.5 PRINT 4.5 - 9 / 5 ' 2.5
ABS
Verilen sayının mutlak(ABSolute) değerini verir.Sayı negatif ya da pozitif olsa da sonuç pozitif olur.
PRINT ABS(-127) '127 PRINT ABS(254) '254
INT
Verilen sayıyı aşağı yuvarlar.Sayı negatif ise bir küçük sayıyı verir.
PRINT INT(12.86) '12 PRINT INT(14.13) '14 PRINT INT(-12.86) '-13 PRINT INT(-14.13) '-15
FIX
Sayının tam kısmını verir. Küsurat atılır.PRINT FIX(45.9) '45 PRINT FIX(45.1) '45 PRINT FIX(-45.1) '-45 PRINT FIX(-45.8) '-45
RND
PRINT RND '0 - 1 arası küsurlu bir sayı PRINT RND(1) PRINT INT(RND * 10) + 1 '0-9 arası tam sayıRND komutu program her çalıştırılmasında aynı sayıları üretir.
Bundan kurtulmak için aşağıda verilen örnekte olduğu gibi RND komutundan önce RANDOMIZE TIMER kullanılır.
TIMER, saat 00:00:00'dan o anki saate kadar geçen süreyi saniye cinsinden verir.
Rastgele sayı aralıklarını belirlemek için şu formül kullanılır:
SAYI = INT(RND * (büyüksayı - küçüksayı + 1) + küçüksayı)Örnek: 20 ile 35 arası bir sayı için:
SAYI = INT(RND * ( 35 - 20 + 1)) + 20 SAYI = INT(RND * 16) + 20 ' 20 - 35 arası bir sayı
RANDOMIZE
Rastgele sayı üreticisini hazırlar.Örnek 1:
RANDOMIZE TIMER DO rgs% = INT(RND * 11) + 2 '(2-12 arası rastgele sayı) PRINT rgs%; SLEEP LOOP UNTIL INKEY$ = CHR$(27) 'ESC : ÇıkışÖrnek 2: Sayı tahmin oyunu
' **** SAYI TAHMİN OYUNU **** ' ©2020 Mesut Akcan ' 28/05/2020 ' mesutakcan.blogspot.com DEFINT A-Z DIM SHARED sayi, a RANDOMIZE TIMER CLS cr$ = CHR$(10) CALL rastgeleSayi DO a = a + 1 IF a > 5 THEN COLOR 12 PRINT cr$; "Tahmin hakkınız bitti!" CALL tekrar ELSE COLOR 14 PRINT "Tahmin:"; a; "-"; INPUT tahmin IF tahmin = sayi THEN COLOR 26 PRINT cr$; "Tebrikler "; a; " denemede bildiniz..." COLOR 10 CALL tekrar ELSEIF tahmin < 1 OR tahmin > 10 THEN COLOR 28 PRINT "!! sayı 1 - 10 arasında !!" ELSE COLOR 13 PRINT "Bilemediniz, Kalan tahmin hakkınız:"; 5 - a END IF END IF LOOP SUB rastgeleSayi sayi = RND * 10 + 1 COLOR 11 CLS PRINT "Bilgisayar 1 - 10 arası bir sayı tuttu." PRINT "Bu sayıyı tahmin edin" END SUB SUB tekrar PRINT "Tekrar oynamak ister misiniz? (E/H)" c$ = INPUT$(1) IF UCASE$(c$) = "H" THEN END ELSE CALL rastgeleSayi END IF a = 0 END SUB
Örnek 3
'Mesut Akcan CLS RANDOMIZE TIMER FOR c = 191 TO 196 COLOR c - 191 + 10 FOR n = 1 TO 80 * 24 PRINT CHR$(c + RND); NEXT SLEEP NEXT
DÖNÜŞTÜRME FONKSİYONLARI
Bellekte değişken değeri olarak tutulan sayıyı farklı formatlara dönüştürmek için kullanılan fonksiyonlar:CDBL
Sayıyı DOUBLE formata dönüştürür.A% = 15454 ' Bellekte 2 baytlık yer tutuyor B# = CDBL(A%) ' Şimdi 8 baytlık Double formata dönüştü ve B değişkenine aktarıldı PRINT LEN(A%), LEN(B#)
CINT
Sayıyı INTEGER formata dönüştürür.Sayı küsurlu ise; küsur .4 den büyükse yukarı değilse aşağı yuvarlanır ve küsur atılır.
A = 1245.85 : PRINT CINT(A) '12346
CLNG
Sayıyı LONG formata dönüştürür. Sayı küsurlu ise CINT gibi.CSNG
Sayıyı SINGLE formata dönüştürürMATEMATİKSEL FONKSİYONLAR
TAN
Radyan olarak verilen açının TANjantını verir.ATN
Radyan olarak verilen açının ArkTaNjantını verir.PI = 4 * ATN(1) PRINT PI ' 3.141593 (Pi sayısı)
COS
Radyan olarak verilen açının kosinüsünü verir.SIN
Radyan olarak verilen açının sinüsünü verir.Dereceyi radyana dönüştürmek için: sayı * (pi / 180)
Örnekler:
pi# = 4 * ATN(1) 'pi sayısı d = 30 'derece r = d * (pi# / 180) 'radyan PRINT SIN(r) '.5 PRINT COS(r) '.8660254 PRINT TAN(r) '.5773503 PRINT ATN(r) '.4823479
Türetilmiş Trigonometrik fonksiyonlar
ArkTanjant (Arctangent)
ATN
Arksinüs (arcsine)
Arcsin = Atn(X / Sqr(-X * X + 1))
Sekant (secant)
Sec = 1 /
Cos(X)
Kosekant (cosecant)
Cosec = 1 / Sin(X)
Kotanjant
(cotangent)
Cotan = 1 / Tan(X)
Arkkosinüs (arccosine)
Arccos
= Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Arksekant (arcsecant)
Arcsec
= Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1))
Arkkosekant
(arccosecant)
Arccosec = Atn(X / Sqr(X * X - 1)) + (Sgn(X) – 1) * (2
* Atn(1))
Arkkotanjant (arccotangent)
Arccotan = Atn(X) + 2 *
Atn(1)
Hiperbolik Sinüs
HSin = (Exp(X) – Exp(-X)) / 2
Hiperbolik
Kosinüs
HCos = (Exp(X) + Exp(-X)) / 2
Hiperbolik Tanjant
HTan
= (Exp(X) – Exp(-X)) / (Exp(X) + Exp(-X))
Hiperbolik Sekant
HSec
= 2 / (Exp(X) + Exp(-X))
Hiperbolik Kosekant
HCosec = 2 /
(Exp(X) – Exp(-X))
Hiperbolik Kotanjant
HCotan = (Exp(X) +
Exp(-X)) / (Exp(X) – Exp(-X))
ArkHiperbolik Sinüs
HArcsin =
Log(X + Sqr(X * X + 1))
ArkHiperbolik Kosinüs
HArccos = Log(X +
Sqr(X * X – 1))
ArkHiperbolik Tanjant
HArctan = Log((1 + X) / (1
– X)) / 2
ArkHiperbolik Kosekant
HArcsec = Log((Sqr(-X * X + 1)
+ 1) / X)
ArkHiperbolik Kosekant
HArccosec = Log((Sgn(X) * Sqr(X
* X + 1) + 1) / X)
ArkHiperbolik Kotanjant
HArccotan = Log((X +
1) / (X – 1)) / 2
N tabanına logaritma
LogN = Log(X) / Log(N)
sayi
= 1000
taban = 10
logn = LOG(sayi) / LOG(taban) ' 1000 sayısının 10 tabanına göre logaritması PRINT logn '3
EXP
e sabitinin (~ = 2.718282) üstünü alırINPUT "Başlangıç bakteri miktarı"; c INPUT "Günlük çoğalma oranı"; oran r = oran / 100 PRINT PRINT "Gün", "Çoğalma" FOR t = 0 TO 15 STEP 3 PRINT USING "##"; t; PRINT USING "###,###,###,###"; c * EXP(r * t) NEXT
LOG
Sayının doğal LOGaritmasını hesaplar.'e tabanına göre 1000 sayısının logaritması (doğal logaritma) PRINT LOG(1000) '6.907755
MOD
İki sayının bölümü sonucunda kalanı verir.A = 11 PRINT A MOD 3 ' 11 in 3 e bölümünde kalan sayı: 2Örnek: 1-20 arası çift sayıların toplamı
FOR n = 1 TO 20 IF (n MOD 2) = 0 THEN toplam = toplam + n NEXT PRINT toplam
SGN
Sayının işaretini belirtir. Sayı; 0 ise 0, pozitif ise 1, negatif ise -1 değerini verir.PRINT SGN(-28) ' -1 PRINT SGN(18) ' 1 PRINT SGN(0) ' 0 PRINT SGN(20-10) ' 1 PRINT SGN(-20-10) ' -1 PRINT SGN(-2*-10) ' 1 PRINT SGN(10/-2) ' -1 PRINT SGN(10+12-5-4/2-17) ' -1
SQR
Sayını karekökünü verir.PRINT SQR(81) '9 'Alternatif: PRINT 81 ^ .5 '9 PRINT 81 ^ (1/2) '9
8'lik ve 16'lık sayı sistemlerini kullanma
PRINT &HFF ' 255 A = &H1FA9 PRINT A ' 8105
PRINT &O77 ' 63 A = &O5402 PRINT A ' 2818
HEX$
Verilen sayıyı 16'lık sayı sistemine(HEXadecimal) dönüştürürHEX$(sayı)
PRINT HEX$(2001) ' 7D1
OCT$
PRINT OCT$(2001) ' 3721Problem 1:
FUNCTION DEC2BIN(s AS INTEGER) .. .. END FUNCTION
FUNCTION BIN2DEC(s AS STRING) .. .. END FUNCTION
LEN
Önceki bölümde LEN komutunun verilen metnin karakter uzunluğunu verdiğini görmüştük.LEN komutuyla sayısal değişkenin bellekte kapladığı alanı bayt cinsinden öğrenebiliriz.
a% = 1 PRINT LEN(a%) ' 2 - INTEGERSayı 1 olduğu halde sonucun 2 çıktığına dikkat ediniz. Integer sayı değişkeni bellekte 2 bayt alan kaplar. Sayı 0 da olsa 32767 de olsa sonuç 2 olur.
d& = 2 ^ 30: PRINT LEN(d&) '4 - LONG b! = 3.1415: PRINT LEN(b!) '4 - SINGLE c# = .5: PRINT LEN(c#) '8 - DOUBLE TYPE kayit adi AS STRING * 15 '15 dyili AS INTEGER '2 boyu AS SINGLE '4 END TYPE 'toplam: 21 DIM personel AS kayit PRINT LEN(personel) '21
SAYIYI STRING'E DÖNÜŞTÜRME
STR$
a = 4.5 b$ = STR$(a)
Önceki Bölüm: 8: Karakterlerle ilgili işlemler | Sonraki Bölüm: 10: Dosya İşlemleri-1 |
Hiç yorum yok:
Yorum Gönder