Amiga Dünyası sayı 20, sayfa 19

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 19

NEXT döngüsünü iki ayrı satıra ayırın, sonra tekrar çalıştırın. TIMER fonksiyonunun çalışmasını göreceksiniz. TIMER ON/TIMER OFF TIMER STOP KOMUTLARI: Kullanım Şekli: TIMER ON

TIMER OFF TIMER STOP Bu yönergeler sırayla zaman tabanlı event trapping'i açar, kapatır ve durdurur. TIMER ON yönergesi, ON TIMER .... GOSUB yönergesi kullanılarak zamanın okunmasını sağlar ve zamana göre program akışının değiştirilmesine izin verir. TIMER OFF ise ON TIMER dallanmalarına imkan vermez; program akışındaki bir TIMER ON yönergesi çalıştırılana kadar event trapping'i durdurur. TIMER STOP ise TIMER event trapping'i iptal eder. Event trapping devam etmektedir, ancak bir TIMER ON yönergesi çalıştırılmadan ON TIMER .... GOSUB yönergesini çalıştıramazsınız.

TRANSLATE$ KOMUTU: Kullanım Şekli: Fonem değişkeni=TRANSLATE$("dizi") Bu dizi fonksiyonu dizi'yi Fonem değişkeni içine SAY yönergesi ile söylenebilecek şekilde çevirerek yerleştirir. Burada kullanılan İngilizce fonem kurallarıdır. TRANSLATE$ komutu kullanılmadan, SAY "Amiga" gibi bir komut verilirse, "illegal function call" hata mesajına sebep olur. Zira SAY komutu ile verilen yazısal dizi Amiga tarafından doğrudan telaffuz edilemez. Bu yüzden dizinin önce Amiga'nın anlayacağı formata çevrilmesi gerekir. Bunun için TRANSLATE$ komutu kullanılır:

YAZI$=TRANSLATE$("Amiga") SAY YAZI$ TRANSLATE$ fonksiyonunun yaptığı iş verilen diziyi fonem kodlarına çevirmektir. Herhangi bir yazı dizisinin fonem kodlarını görmek isterseniz (mesela yukarıdaki örneğin), "PRINT YAZI$" yazıp "AHMIY3GAH" sonucunu alırsınız. TRON/TROFF KOMUTLARI: Kullanım Şekli: TRON TROFF AmigaBasic kullanıcıya, program hatalarını bulmada kolaylık olması açısından program izleme modunu (TRACE) da sunuyor. TRON ve TROFF komutları işte bu modu açıp kapatıyor. İzleme modu aktif durumdayken (Run menüdeki TRACE ON) program akışı sırasında işlenen aktif komut turuncu dikdörtgenle belirtilir. Bu dikdörtgen aracılığıyla program kontrolünü, komut akış sırasını ve döngüleri rahatlıkla görebilir, programınızı test edebilirsiniz. Tabii bunun için programı çalıştırdıktan sonra List penceresinin görüntülenmesini sağlamalısınız.

TROFF ise izleme modunu kapatıp normal moda dönmenizi sağlar.

UCASE$ KOMUTU: Kullanım Şekli: UCASE$("Yazısal Dizi") UCASE$ komutu, yazısal dizi içindeki tüm küçük harf karakterleri büyük harfe dönüştürür. Özellikle kullanıcıdan cevap isteyen programlarda çok yararlıdır.

INPUT "Devam etmek istiyor musunuz?"; CEVAP$

Satırı çıktığında, farklı kullanıcılar "Evet", "EVET", "E" ya da "e" olarak cevap verebilirler. İşte bu durumlarda UCASE$ komutu imdada yetişiyor:

A$=UCASE$(C$) IF A$="E" THEN deneme 1 IF A$="H" THEN deneme2 Dikkat ederseniz, program aldığı cevabı önce büyük harfe çevirip sonra dallanıyor.

Data girişi programlarında genellikle sıralama özelliği de aranır. Normal bir AmigaBasic program dataları alfabetik sıraya dizer. Ancak bunu yaparken ASCII karakter karşılıklarını esas aldığından büyük harfler ilk, küçük harfler sonraki sıralara yerleşirler. UCASE$ komutu bu durumlarda da çok faydalı bir komut. Girilen datalar UCASE$ komutu ile çevrilerek yerleştirilirse, sıralamada herhangi bir hata olmaz.

VAL KOMUTU: Kullanım Şekli: VAL("yazısal dizi") VAL fonksiyonu, STR$ fonksiyonunun tersidir. İçeriği sayı olan bir yazısal diziyi sayıya çevirir. Yazısal dizinin içeriği ilk harften itibaren çevrilecektir:

VAL"1234Merhaba" komutu 1234, VAL"1234Merhaba4567" komutu 1234, VAL"Merhaba1234" komutu 0 sonucunu verir.

VARPTR KOMUTU: Kullanım Şekli: VARPTR(değişken ismi) değişken ismi ile verilen değişkenin ilk byte'ının bellekteki yerleşim adresini verir. VARPTR çalıştırılmadan önce değişken ismi ile belirtilen değişkene bir değer atanmış olmalıdır; aksi halde AmigaBasic illegal function call hatası verir. Yazısal, sayısal ya da dizi değişkenlerinin isimleri kullanılabilir. Bellek adresleri, 0 ile 16.777.215 sınırları arasındadır. VARPTR, değişken ya da dizi adreslerini assembly dilinde yazılmış alt rutinlere geçirmek için kullanılır.

WAVE KOMUTU: Kullanım Şekli: WAVE kanal no,tamsayı dizi% WAVE kanal no,SIN SOUND komutu ile kullanılacak dalga şeklini değiştirmek için kullanılır. Dalga şekli, kanal no ile belirtilen ses kanalında geçerli olur. kanal no, 0 ile 3 arasında bir sayıdır ve bir ya da birden fazla kanala atanabilir. 0 ve 3, sol kanallar; 1 ve 2 ise sağ ses kanallarıdır.

SIN, sinüs dalga şeklidir. Tanımlı değer budur. Herhangi bir değişiklik yapılmadıkça kullanılmasına gerek yoktur.

tamsayı dizi% argümanında 256 eleman kullanılabilir. Burada kullanıcı tarafından tanımlanan dalga biçimi söz konusudur. Dizi değerleri -128 ile +127 arasında verilir. -128'in anlamı, titreşim için mümkün olan en düşük değer; +127 ise en yüksek değerdir.

Sinüs dalga biçimi dışında farklı ses tonları yaratan 3 tür dalga şekli vardır. Bunlardan birincisi üçgen dalga (triangle wave) biçimidir. Sinüs dalgaya benzer, ancak titreşimler sinüs eğrisi gibi derece derece değil, birdenbire tersine dönme şeklindedir. Bir üçgen dalgayı şu programla yaratabilirsiniz:

DIM t%(255) FOR X=0 TO 62 A=A+2:t%(X)=A NEXTX FORX=63T0 188 A=A-2:t%(X)=A NEXTX FORX=189T0 255 A=A+2:t%(X)=A NEXTX WAVE 0,t%:WAVE l,t%:WAVE 2,t% ERASE t% Örnekte önce tamsayı diziyi tanımladık. İlk FOR..NEXT döngüsü üçgen dalganın başlangıç noktasından en yüksek uç değe- rine çıktığı kısım. Sonraki döngü en alçak uç değerine inişi üretir. Son olarak da üçüncü döngü başlangıç noktasına geri yükseltir. Programı çalıştırdığınızda, ses tonlarında küçük değişiklikler olacak. Mesela BEEP komutunu vererek önceki ve programı çalıştırdıktan sonraki sesleri kıyaslayın. Programı çalıştırıp dalga biçi- mini değiştirdikten sonra sinüs dalgaya geri dönmek için program için ya da doğ- rudan komut modunda;

WAVE 0,SIN yazarak tek tek tüm kanalları sinüs dalgaya çevirebilir ve değişikliği iptal edebilirsiniz. Bu dalga biçimini geçen ay SOUND komutunda yazdığımız Star Wars müziği ile de deneyebilirsiniz.

Bir diğer dalga biçimi olan kare dalga (square wave), sadece bir tondan diğerine sıçrama sağlar ve ruhsuz bir ses üretir. Bir kare dalga sesi dinlemek isterseniz, aşağı- daki rutini yazın: DIM r%(256) FOR X=0 TO 127:r%(X)=127:NEXT X FOR X=128 TO 256:r%(X)=-128:NEXT X WAVE 0,r%:WAVE l,r%:WAVE 2,r% ERASE r%

Gördüğünüz gibi kare dalganın yapısı çok basit. Data alanının ilk yarısında maksimum 127 değerini, diğer yarısında da minimum -128 değeri okunur.

Dördüncü dalga şekli de beyaz dalga (white noise)'dır. Elektrik zili ya da alarm saatine benzer düzensiz sesler çıkarır. Titreşim değerleri, tamamen rasgele hesaplanır ve sık değişirler.

DIM n%(255) FORX=0TO127 n%(X)=RND*255-128 NEXTX WAVE 0,n% WAVE l,n% WAVE 2,n% ERASE n% Örnekte RND*255-128 formülü, -128 ile 127 arasında rasgele sayılar üretir. Bu, örnekleme sesleri için ayrılmış sınırdır.

Evet, bu aylık da bu kadar... Gelecek ay tekrar görüşmek üzere, hoşçakalın.

Klavyeyle gezinmek için ← ve → tuşları.