Bu sayfadaki yazılar
Sayfanın metni
Sayfa 16
KOMUT: FLIP$ KULLANILIŞI: a$=FLIP$(b$)
Bir string'i tersine çevirmek istiyorsanız, bu komutu kullanabilirsiniz.
Örneğin; PRINT FLIP$("amiga") komutu ekrana agima yazacaktır.
Bu komuta örnek olarak yazdığım program, verilen bir string'i önce kelimelere ayırır, sonrada bunları tersinden yazar.
Rem** *********************** ** Rem** AMIGA DÜNYASI ** Rem** written by Burak Ozdemir ** Rem** AMOS copyright 1990 ** Rem** Mandarin/Jawx **
Do Input A$ L=Len(A$) B$="" A$=A$+" " N=l I=l Do F=Instr(A$," M) If F=0 Then Exit S$=Mid$(A$,N,F-N) D$=Flip$(S$) B$=B$+D$+"" I=F+1 N=F+1 If F=L+l Then Exit Loop Print" "+B$ Loop
KOMUT: Space$ KULLANILIŞI: a$=space$(n)
Bu komut 'n' kadar boşluk içeren bir string yaratır.
Örneğin; PRINT "bu program 10"; SPACE$(10); "boşluk yazar"
KOMUT: String$ KULLANILIŞI: a$=string$(b$,n)
Bu komut b$ değişkeninin ilk karakterinin 'n' tane kopyasını a$ değişkenine atar.
KOMUT: Chr$ KULLANILIŞI: a$=chr$(n)
Bu komut a$ değişkenine ASCII kodu 'n' olan karakteri atar.
KOMUT: Asc KULLANILIŞI: c=asc(a$)
Bu komut chr$ komutunun tersidir. Bir karaktere ait ASCII kodunu belirler.
KOMUT: Len KULLANILIŞI: a=len(a$)
Bu komut yardımıyla bir string'in uzunluğunu öğrenebilirsiniz.
Bu komut yardımıyla çok basit bir şifre programı yazmak mümkündür:
Rem** *********************** ** Rem** AMIGA DÜNYASI ** Rem** written by Burak Ozdemir ** Rem** AMOS copyright 1990 ** Rem** Mandarin/Jawx ** Rem************************** ** Do Print "yazi dizisini girin" Input A$ Print "şifreyi girin" Input B Print "şifreleniyor!" C$="" ForI=lToLen(A$) C$=C$+Chr$( Asc(Mid$( A$,1,1 ))+B) Next I Print "işlem tamam" Print C$ Loop
Yukarıdaki programın şifrelediği string'lerin şifrelerini çözmek için aynı işlemi tersinden yapan bir program yazmak yeterlidir:
Rem** *********************** ** Rem** AMIGA DÜNYASI ** Rem** written by Burak Ozdemir ** Rem** AMOS copyright 1990 ** Rem** Mandarin/Jawx ** Rern** *********************** ** Do Print "yazi dizisini girin" Input A$ Print "şifreyi girin" Input B Print "şifre çözülüyor!" C$=""
For I=l To Len(A$) C$=C$+Chr$(Asc(Mid$(A$,I,l))-B) Next I Print "işlem tamam" Print C$ Loop
KOMUT: Val KULLANILIŞI: b=val(a$) b#=val(a$)
Bu komut bir string'in içindeki rakamları 'b' değişkenine aktarır. Eğer herhangi bir sebepten ötürü bunu yapamıyorsa b=0 olur.
Örneğin; b=val("12.321") ile b=12.321 aynı anlama gelir.
KOMUT: Str$ KULLANILIŞI: a$=str$(n)
Bu komut matematiksel bir değişkenin değerini bir karakter değişkenine atar.
Bunlardan başka iki tane de genel dizi komutu vardır. Bu komutlar her türlü dizilerde kullanılabilir.
KOMUT: Sort KULLANILIŞI:
sort a(0) sort a#(0) sort a$(0)
Bu komutla bir dizinin elemanlarını sıraya dizebilirsiniz. Aşağıdaki program verilen isimleri bu komut yardımıyla sıraya dizer.
Rem** *********************** ** Rem** AMIGA DÜNYASI ** Rem** written by Burak Ozdemir ** Rem** AMOS copyright 1990 ** Rem** Mandarin/Jawx ** Rem** *********************** **
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 17
Input "isim sayisi=";N Dim A$(N) For I=1 ToN Print "isim ";I;"="; Input A$(I) Next I Sort A$(0) For 1=1 To N Print A$(I) Next I
KOMUT: Match KULLANILIŞI:
r=match(a(0),b) r=match(a#(0),b#) r=match(a$(0),b$)
Aşağıda bu komutla ilgili bir örnek program yazdım. Bu program yazı ile, sıfırdan 999.999'a kadar olan sayıları kelimelerine ayırıyor ve bu kelimelerle eş anlamlı sayılar yazıyor. Örneğin 'on dokuz bin yedi yüz otuz altı' yazınca, bunu '10 9 1000 7 100 30 6' olarak çeviriyor. Programa birkaç rutin daha ekleyerek bu sayı dizilerini gerçek rakamlara da dönüştürmek mümkün.
Rem** AMIGA DÜNYASI Rem** written by Burak Ozdemir ** Rem** AMOS copyright 1990 ** Rem** Mandarin/Jawx
Dim R$(2l) Dim Q(21) For I=1 To 21 Read R$(I) Next I For 1=1 To 21 Read Q(I) Next I Input "sayi=";S$ S$=S$+"" Rem Rem kac kelime Rem K=0
For I=1 To Len(S$) If Mid$(S$,l,l)=" "Then K=K+1 Next I Print "kelime savisi=";K Dim K$(K) Dim W(K) N=l For 1=I To K F=lnstr(S$," ",N) K$(I)=Mid$(S$,N,F-N) N=F+1 Next I Print "kelimeler=" For I=1 ToK Print KS(I) Next I For I=1 To K R=Match(R$(0),K$(I)) W(I)=Q(R) Print W(I) Next I Print "rakamlar" For I=1 ToK Print W(I) Next I
Data "alti"."altmiş", "bes","bin","bir" Data "doksan","dokuz","dört"."elli","iki" Data "kirk","on","otuz","sekiz". "seksen" Data "sifir'', "uc","yedi","yetmiş" Data "yirmi","yuz" Data 6,60,5,1000,1,90,9,4,50,2,40,10,- 30,8,80 Data 0,3,7,70,20,100
Sıra geldi okuyucu köşemize. Bu ayki şanslı okuyucumuz Biga/Çanakkale'den sayın Dr. Ali Hatay. Bu okuyucumuzdan sürekli mektup almamıza rağmen ancak cevap verme imkanı bulabildik. Bunun sebebi her ay sınırlı sayıda mektuba cevap verebilmemiz. Şimdi tekrar ilginize teşekkür edip sorularınızın cevabını veriyorum:
İlk olarak AMOS'ta kalın çizgi çizmek için bir komut olup olmadığını sormuşsunuz. Bunun için özel bir komut mevcut değil. Tabii bu kalın çizgilerin çizilemeyeceği anlamına gelmiyor. Bunu ayrı prosedürler tanımlayarak kolayca yapabilirsiniz. Gelecek sayımızda bunlara çeşitli örnekler vereceğim.
Değişkenleri sıfırlayıp oyunu yeniden başlatmak için, oyunun bittiği yere 'run program ismi.amos' yazmak yeterli olur. Bu şekilde program bitmeden evvel kendini yeniden çalıştırır. Yine bu tekniği kullanarak başka programları da çalıştırmak mümkündür. Böylece adventure oyunları gibi çok bellek isteyen programları birkaç değişik parçada hazırlayabilirsiniz.
Karakter setleri ve komut kısaltmalarını ise geçen sayımızda yazmıştım.
Sonix ve Soundtracker gibi müzik programlarının modüllerini AMOS'ta çalmak için AMOS disketlerinin içinde iki adet program mevcut. Bunları kullanarak bu müzikleri AMOS'ta çalabilirsiniz.
Bu ayki yazımız da burada bitiyor sevgili arkadaşlar. Bir dahaki sayıda buluşmak üzere hoşça kalın.