AMIGA BASIC
Retro bilgisayarMerhaba... Geçen ay dosya işlemlerini incelemiş, sırasal ve rasgele dosyalara bilgi girişi ile bu dosyalardan kayıt okuma örnekleri vermiştik. Dosya işlemlerine yeri geldikçe ve ilgili komutlarla tekrar değineceğiz. Şimdi kaldığımız yerden Amiga-Basic komutlarını incelemeyi sürdürelim.
OPTION BASE Kullanım Şekli: OPTION BASE n
Dizilerde minimum dizi tabanını tanımlamak için kullanılan komuttur. Dizi tabanı değiştirilmedikçe, 0 değerine sahiptir. Yani A(10) ile tanımlanan bir dizinin birinci eleman numarası, 0'dır: A(0). İşte OPTION BASE komutu, dizi taban değerini değiştirmek için kullanılır. n, 1 olduğunda en küçük değer 1, 0 olduğunda ise en küçük değer 0 olacaktır. n yerine 0 ya da 1 dışında bir değer tanımlanamaz. Tanımlı değer 0 olduğundan, genellikle; OPTION BASE 1 şeklinde kullanılır. Ancak değişikliği iptal etmek için; OPTION BASE 0 komutu ile dizi taban değeri yeniden 0'a ayarlanır. OPTION BASE komutu, dizilerin tanımlandığı DIM yönergesinden önce çalıştırılmalıdır. Aksi takdirde, "Duplicate definition" hatası oluşur.
PAINT KOMUTU: Kullanım Şekli: PAINT (STEP) (x,y) (boya rengi-no, çerçeve rengi-no)
Bu komut, daire, elips ya da poligon gibi çevresi kapatılmış bir alanı belirtilen renkle boyar. x ve y, bu alanın herhangi bir noktasının koordinatlarıdır. STEP opsiyonu, yeni pixel yerleşimini, son belirti-
AMIGA BASIC
len yerleşime oran şeklinde tanımlamak için kullanılır. Bu opsiyon yazılmazsa, x ve y koordinatları sabit bir pixel yerleşimini belirtir. boya yengi-no. alanın boyanacağı rengi için kullanılır.Bu parametre verilmezse, AmigaBasic CO-LÖR yönergesinde tanımlanan önzemin rengini kullanır. çerçeve rengi-no parametresi, alan kenarlarının çizileceği rengi tanımlar. Bu parametre belirtilmezse, çerçeve için de boya rengi-no kullanılır. Bu iki renk parametresi, bir PALETTE yönergesinde verilen renk-no'ya karşılıktır. Bu komut için önemli bir diğer nokta da, boyanacak alanın bulunduğu pencerenin yaratılacağı WİNDOW komutunda tip olarak 16 ile 31 arasında bir değer tanımlanması gerektiğidir. WİNDOW komutunda ayrıntılı olarak göreceğiz, ama bu değerlerle belirtilen pencereler için sadece belirtilen özelliklere yeterli miktarda bellek ayrılır; bu da oldukça iyi bir bellek tasarrufu sağlar. Şimdi yuvarlaklar çizip boyayarak şirin bir adam resmi yapalını: CİRCLE (320.190),200,1..,.6 PAİNT (320.170).1 CIİRCLE (320,90),160.3 PAİNT (320,90),3 CIRCLE (260,50),15,1....5 CİRCLE (380,50),15.1,,..5 PAİNT PAİNT (380,50),1 CİRCLE (260,53).8,2 CIRCLE (380,53).8,2 PAİNT (260.53),2 PAİNT (380,53),2 CIİRCLE (380.50),45,2,.2,2.2 CIRCLE (260,50),45,2,.8.2.8 CIİRCLE CİRCLE (320,110),80,2,3,1,0,.2 CİRCLE (320,10),10,2,4.7,1.5,.9 CIİRCLE (320,15),5,2,5,1.8,.7
CİRCLE (160,70),40,3,...6
CİRCLE (480,70),40,3,...6
PAİNT (160,70),3
PAİNT (480,70),3
CİRCLE (160,60),30,2,1,3,.3
CİRCLE (480,60),30,2..3.2.2,.3
CİRCLE (150,65).25,24,1..7
CİRCLE (490,65),25,2,2.2,5.4,.7
STOP
Yazın ve çalıştırın; hoşunuza gidecek.
PALETTE KOMUTU:
Kullanım Şekli:
PALETTE renk-no.kırmızı,
Bu komutla, renk üretebilirsiniz. Mevcut renk sayısı. ekrandaki bitplane sayısına bağlı olarak belirlenir. Her renk kendi alanmasında kullanılacak bir sahiptir. O ile 31 arasında olabilen bu savı, özel renklere verilebilir. SCREEN yönergesinin derinlik parametresi, kullanabileceğiniz Tenk sayısını tespit eder: atanabilecek maksimum değeri, renk-no ile sınırlayabilirsiniz. Amiga sistemi, 0 (mavi). | (beyaz), 2 (siyah) ve 3 (portakal) renklerini kullanır. PALETTE komutuyla atanan renkler sistem atamalarının yerine geçer. kirmizi,yeşil mavi parametrelerine, lanımlanan renk içindeki kırmızı, yeşil ve mavi oranları 0.00'dan 1.00'e kadar bir yüzde verilir; bunların birleşimi istenen rengi oluşturur. Aşağıdaki tablo, değişik renk oranlarının hangi renklerin ve ne oranda karışımla elde edilebileceğini gösteriyor: RENK Kırmızı — Yeşil Mavi camgöbeği 0.00 093 0.87 siyah 0.00 0.00 0.00 koyu mavi 0.40 0.60 1.00 gök mavisi 0.47 0.87 1.00 kahverengi 0.80 0.60 0.53 gri 0.73 0.73 0.73 yeşil 0.33 0.87 — 0.00 ıhlamur yeşili — 0.73 1.00 0.00 portakal 1.00 0.73 0.00 pembe 0.80 0.00 0.93 kiraz kirmizisi — 1.00 0.60 0.67 ateş kırmızısı 0.93 0.30 0.00 bej L00 0.87 073 menekşe moru — 1.00 0.13 0.93 beyaz 1.00 1.00 1.00 sarı 1.00 1.00 0.13
Bu renk karışımlarını deneyebileceğiniz bir küçük örnekle bu komutu tamamlaya- İlim. Renk tanımılarını tabloya göre değiştrip yeni renklerle çalışın:
PALETTE 1,.8,0,.93
PALETTE 3,1,.13,.93
PALETTE 0,.73,1.0
PALETTE 2,.8,.6..53
COLOR 3
PRİNT DUNYASI'
COLOR 2
PRİNT “AMIĞA
Tabii. yeni PALETTE komutları ekleyip çızım yaptırmanız da mümkün,
PATTERN KOMUTU: Kullanım Şekli: PATTERN
Bu komut, çizgi ve yüzeyler için doldurma tespit etmek için kullanılır. PATTERN'i çizgilerle kullanmak isterseniz, 16 bitlik bir değer vermelisiniz. Bu, bir tamsayı ifadedir ve doğru çizimi için kullanılabilecek 16 bitlik bir maske şeklinde düşünebileceğiniz 16 pixel genişliginde bir kalıptır. Sayıdaki her bit. ekrandaki bir noktaya karşılık gelir. 16 bitlik sayı, ondalık (örneğin, 65335), hex (&HFFFF) ya da octal (&0177777) formalta verilebilir. Alanlar için, bir tamsayı dizisi girilir. Dizideki sayılar, boyama ve doldurma işlemleri için (PAİNT. AREAFILL ya da LINE.....,BF gibi) kullanılabilecek bir kalip tanımlar. alan-kalıbı. kalıbı tanımlayan tamsayı dizisinin adıdır. Bu dizideki degerler de ekranda mevcut noktaları belirtürler ve her eleman ikinin üssü (1, 2, 4, 8. 16 veya 32 gibi) olmalıdır. Aşağıdaki örnek, bir kalıp yaratarak, bu kalıpla içi doldurulmuş bir dörtgen çiziyor: DIM area.pat area.pal PATTERN &HF FF LİNE (0,0)-(
PEEK KOMUTU: Kullanım Şekli: PEEK
PEEK, verilen adres'in içeriğini Bu içerik, O ile 255 arasında bir sayıdır ve bir byte'tir. Amipga'da verilebilecek en büyük adres değeri, 16777215'tir. Bir adrese bir byte'lik değer yazmanın komutu da daha sonra ineeleyeceğimiz, POKE Burada biraz mola verip, bellek adresleri konusunda sohbet edelim. Kullanabileceğiniz bellek adresleri bilgisayarınızın RAM (Read/Write Memory)'inde bulunur. RAM, kapasitesine göre her biri bir byte'lik hücrelerden oluşur. Bellek hücrelerinin herbiri kendi atamasında kullanılacak bir uumaraya sahiptir. İşte bu numara AD-RES olarak isimlendirilmiştir. Ami-ga'da ilk bellek adresi O, sonraki | şeklindedir.
PEEKL KOMUTU: Kullanım Şekli: PEEKL (adres)
PEEKL, uzun tamsayılar için kullanılır. Belirtilen başlayarak ardışık byte'lik dizi okunur. Adres PEEK komutundaki gibi, O ile 16777216 arasında bir nümerik ifadedir ve mutlaka bir çift sayı olmalıdır. Bu komutla okunabilecek sayı, -2147483648 ve 42147483647 degerleri arasında 4 byte'lik (32 bit) bir sayıdır. Bu tür bir değeri belleğe yerleştiriçin ise POKEL kullanılır.
PEEKW KOMUTU: Kullanım Şekli: PEEKW (adres)
PEEKW. itibaren iki byte'lik (kısa tamsayı) bilgi okur. adres, yine O ile 16777216 arasında ve sayı olmalıdır. Fonksiyon, delres'e -32768 ile 432767 arasında saklanmış 2 byte'lik sayıları okur.
POINT KOMUTU: Kullanım Şekli: POINT (r,y)
Bu fonksiyon, aktif çıktı penceresinin belirtilen noktasındaki renk numarasını verir. Nokta, pencerenin dışında bir yerdeyse, değer, olacaktır. Unutmayın, (0,0) koordinatı. pencerenin sol üst köşesini belirtir. x ve y, aktif pencerede istenen pixeli belirten koordinatlardır. Fonksiyonun alacağı değer, bir PALETTE yönergesinde bu- “ lunan renk-no'ya uyumlu olacaktır. komutu. pencerenin 21.15 koordinatlarındaki zemin renginin numarasını alacaktır.
POKE KOMUTU: Kullanım Şekli: — POKE adres,değer POKE fonksiyonu, belirtilen bellek adres'ine bir byte'lik bir değer yazar. 0- 255 arasında olabilen bu değer, PEEK komüutü ile okunabilir. adres, çifi sayı olarak verilmelidir. Değerleri belleğe yazama esnasında dikkatli olmalısınız. Planınızı doğru olarak yapmazsanız ve Âmiga'nın işletim sistemi hakkında doğru bilgilere sahip değilseniz, karışıklığa va zarara sebep olabilirsiniz.
POKEL KOMUTU: Kullanım Şekli: POKEL değer
POKEL komutu, belirtilen adres'ten başlayarak dört byte uzunluğunda alana verilen değer'i yazar, adres, yine çift sayı verilmelidir. POKEL kullanımında dikkatli olmak gerekli; zira sistem bölgesine gi rerek zarar verebilirsiniz.
POKEW KOMUTU: Kullanım Şekli: adres, değer
POKEW komulüu — ise, — belirtilen başlayarak iki byte'lik bellek bloğuna 2 byte bir değer yazar.
POS KOMUTU: Kullanım Şekli: POS(x)
Aktif penceredeki kursorun bulunduğu sütünün numarasını verir. O anki kursor pozisyonunu öğrenmek istiyorsanız. yazacağınız satır şöyle olmalı: Satır-CSRLIN:SUTUN-POS(0) Sonuç değeri genellikle Ve eşit ya da daha büyük olacaktır. x. bir kukla değişkendir. yani yerine herhangi bir değer girilebilir.
PRESET PSET KOMUTLARI: Kullanım Şekli: PRESET PSET
Bu komutlar. aktif pencerede belirli bir nokta tespit eder ve çizer. x ve y, reriklendirilecek noktanın pixel koordinatlarıdır. STEP belirtilmişse. pixel yerleşimi, son yerleşim noktasından hesaplanarak bulunur: kullanılmamışsa, x ve y mullak koordinatlar olarak kullanılır. renk-no ile konulacak noktanın rengi belirtilir. Her iki komut da aymı şekilde çalışır. Aralarındaki tek fark; renk-no belirtilmediyse, PRESET'in arka zemin; PSET'in ise o anki çizim rengini kullanmasıdır. Aşağıdaki örnek, nokta koymak yoluyla 1000 adet yıldız oluşturacak: FOR TO 1000 PSET(x.y) NEXTi Deneyin, görün.
PRİNT KOMUTU: Kullanım Şekli: PRİNT (değişken ya da değer| |seperatör|ldeğişken ya da değer) ........
Çıkış penceresinde dataları görüntülemek için kullanılır. Hatırlarsanız, LPRİNT komutu ile dataları printer'a gönderiyorduk. Komut. kısaltılarak ”?" ile yazılabilir. Yani, PRİNT a yerine: Ja yazarak, aynı komutu vermiş olursunuz değişken ya da değer parametresi, sayı sal veya alfanümerik data içeren değişken isinderi olabileceği gibi; çift tırnak içinde verilecek mesajları da taşıyabilir. PRİNT komutundan sonra hiçbir opsiyon kulla nılmazsa."program bir boş satı basacak ve bir sonraki satırdan devam edecektir. seperatör, birbiri arkasına eklenecek değişken/değer datalarını ayırmak için kullanılacak işareni belirtir; bunun için kullanabileceğtniz birçok karakter vardır. kullanılırsa, çıkışlar birbiri arkasına sıralanacak; "," kullamlırsa, çıkıştan sonra bir tab değeri atlanacak (normalde 15. sürün; ancak WİDTH komutu ile değiştirilebilir) ve ikinci bilgi buraya yazılacaktır. "#. & ve 96" işaretleride de- Bişken isimlerini ayırmak için kullanılabilir: bunlar aynen gibi çalışır. Değişken/değer listesi virgül ya da nokvirgül ile biliyorsa, sonraki PRINT yönergesi çıkışları son datanın yanından itibaren devanı edecektir. Satır. sonunda bu seperatörler kullanılmazsa, bir sonrakı çıkışlar satırbaşı yapılarak yazılacaktır. Aşağıdaki programı denevin: sonucu görün: PRİNT "A".”B", PRİNT "D' PRİNT "E"
PRİNT USİNG KOMUTU: Kullanım Şekli: PRİNT USİNG |edeğişken ya da
Ekrana basılacak karakterlerin formatını değiştirmek için kullanılır. Yazı karakterleri için kullamlabileceği gibi, özellikle sayı karakterlerinin çıkışını düzenlemek için çok kullanılır. Pek çoğunuzun bildiği gibi. Basic'te özellikle bu komut kullanılmadığı sürece pek mümkün değil. Karakter formatı, işte islediğiniz Tormu girmek için kullmacağınız bölüm. Burada kullanacağınız birçok opsiyon vardır. işareti, bir rakam olarak kabul edilir; ondalık noktadan sonraki hane ayarlamaları yapılabilir. Aşağıdaki örnekleri inceleyin:
primt using "HA#AH#":324 söonüç 32.40
print using 17.00
print üsing 424.12
print using AND 128.49
print using 130.00
Verilen sayının ondalık noktasından önceki kısmında bulunan rakam savısı. karakter formatı ndaki # Tazla ise, la nımlayıcı Olarak işareti basılacaktır: prim using 3253 743259325 karakter forman am başına "4" işareti koymak, verilen değerin başındaki artı ya da eksi işaretinin yazılmasını sağlar. "4" işaretinin sona konması, değer işaretinin başa değil sona Konmasına sebep olur. karakter sona artı yerine eksi işareti de konulabilir: bu durumda, sadece değer eksi olduğunda sonuna “-* işareti gelir: print using 4324.23 print using prini using “HAH 518.28print using “HAH 234 324.23 print using 518,29- # işaretlerinin önüne "**" işareti konuverilen değer ile # işaretleri sayısı arasındaki farktan ortaya çıkan yıldız işareti ile doldurulur. Yıldız işaretkeri rakam hanesi olarak savılır: using **42 20) prini üsing 10) print using #H”:-522.456 *-523.46 tek dolar işareti yazılmasına neden olur. İlk dökür işareti sonrasmda kayazılacağını, ikinci işareti de bir rakam pozisyonunu işarctler.
$43.54
print using 54-543 54
print using "S$###.##":-53245.345
print using
print using “SER
print using A SASA
Ve "$$" işaretlerinin kombinasyonunu da oluşturabilirsiniz. şeklinde bir kombinasvonda, bir dolar ve iki de vildızlar için Karakter pozisyonu sayılır:
print using
prim üsine 20)
Ondalık noktanın soluna "," koyarsanız, aşağıdaki sonucu elde edersiniz: primi using 3.444 233.50 Peki, üslü sayılarda ne oluyor? Üslü sayı Tormatı için kullanılacak işaret "MA" using print 009 " " karakteri. formal karakteri verine (H#) sonraki karakterin yazılmasını sağlar: print karakter formatı içerisinde. herhangi bir uzunlukta mesaj da girebilirsiniz. Ancak yazının 24 karakterden uzun olmamasında var. print using "İSTE 3.3 Gelelim PRİNT USİNG o kontültünün vazasal Karakterler için kullanımına. Ünlem işareti bilgisayara. verilen karakter dizisinin sadece birinci karakterini basmasını sövler: prini Komutu. sonuçta ekrana A karakterini basar, Bir daha Tazla Karakter basmasını İsterseniz, iki ters bölü işareli arasına istediğiniz karakter sayısı kadar boşluk koyun: prim komutu, ters bölü arasında bulu nan 3 boşluk kadar Karakter alır ve ekrana: Mer basar, “&” işareti ise, verilen karakter tamamını ekrana basmak için kullanılır:
print üsing
print üsine Armıga Amiga
Tabii ki bu sonucu PRINT USING kullanmadan da alabilirsiniz. PRINT USING, kullanımı çok basit olmayan bir komut. Ancak formatlı listeler ve tablolar oluşturabilmeniz için gereken opsiyonlara sahip oluşu açısından da oldukça önemli. Aynı amaçla kullanılabilen LOCATE ve yazısal dizi fonksiyonlarına göre de daha iyi çalışıyor. PRINT#
PRİNT# USİNG KOMUTLARI: kullanım Şekli: PRİNT#dosva-na.|USİNG karakter fordeğişken listesi
Bir sırasal dosyaya data kaydı. yapmak için kullanılır. kayıt için açılmış dosvanın numarasıdır; karakter PRİNT USİNG incelediğimiz formları içerir. değişken listesi ise. dosyaya yazılacak sayısal ya da yazısal ifadelerdir PRİNTER. dataları sıkışlırmaz: ekrana yazmak için kullanılan PRİNT komutu yerine kullamlır. değişken İistesi'ndeki arasında nokta ya da virgül kullanılabilir: PRİNTE gibi. Virgül kullanmak, dosyada datalar arasında çok fazla boöşlük bırakılmasına neden olur. Bunlar, dosyaya yazarken kullanılacak ayırıcılar. Bir de dosyadan İNPUT# ile ökünürken dataların anlamlı olması için, işaretlerle ayrılmasında fayda var. Şöyle bir örnekle inceleyelim: AŞ-”ISTANBUL” B$z"1991” ide kaydedilen datalar ISTANBUL 1991 gibi bir bilgi gelecektir. Bu iki değişkenin birbirinden virgülle ayrılmasında Tayda olduğu açık. Bunun için doğru konun kul- Tanımı şöyle; Bu Kez data okunduğunda, aynı hilgi: şeklinde olacaktır. Tabii boşluk, returü kodları ve ascii karakter kodları da Kullanılabilir. Artık siz: PRİNT#İ. USİNG HH," komutunun sonucunu PRİNT USİNG anlalımlarından bulabilirsiniz. değil mi? Bir küçük program bu komutu da
ENPUT AK
İNPUT “YASINIZ":Y
OPEN "TEST" OUTPUT AS #I
PRINT#I
CLOSE |
OPEN "TEST" FOR İNPUT AS #İ
Y
İNPUT&1,NS$:PRİNT NS
CLOSE |
Bu aylık da bu kadar. Gelecek ay yine birlikte olalım. Hoşçakalım....