Bu sayfadaki yazılar
Sayfanın metni
Sayfa 25
Merhaba... Bu ayki yazımızda DIM, DATA, READ ve RESTORE komutlarını örneklerle inceleyeceğiz. İşe önce değişkenleri seri olarak kullanabilmemizi sağlayan DIM komutundan başlayalım.
Genelde bir programın ana temeli değişkenlerden oluşur. Değişkenlerin aldığı değerler ve sonuçta alacağı değerlerle, bilgisayar programı ortaya çıkarılır. Değişkenler daha önceden gösterdiğimiz gibi [a=10] ya da [ELIF=$33] tanımlanabilir. Fakat bazen değişkenlerin sayısı programda artar. Bu değişkenleri tanımlamak ve değerlerini koymak zorlaşır. Zaten bir insan, karakterlerden oluşan kaç tane değişkeni aklında tutabilir? Bunun için bilgisayar dillerinde serilere yer verilmiştir. Amos Basic'te bir değişkenin seri olarak verilebilmesi için [DIM] komutunun kullanılması gerekir.
DIM KOMUTU: [DIM] komutu [DIM değişken (1.seride bulunan eleman sayısı, 2.seride bulunan eleman sayısı ......)] formatı altında kullanılır. Verilen seri sayısınca bir matris oluşur.
Diyelim ki 10 tane değişken gerekti. Bunun için [DIM OSMAN(10)] yazarak gereken değişkenleri bir seriye indirgeyebilirsiniz, ilk değişken OSMAN(1), ikinci OSMAN(2), sonra OSMAN(3)....OSMAN(10) olarak kullanılabilir.
DIMOSMAN(IO) FORI=lTO10 INPUT "SAYI";OSMAN(I) NEXTI PRINT "5.GIRDIGINIZ SAYI=";OS- MAN(5)
Bilgisayar programlarında değişkenler çoksa, tek tek girdi yapmak hem zordur hem de çok zamanınızı alır. Genelde Basic türü dillerde [READ, DATA] komutları sayesinde değişkenlere yüklenecek değerler bir arada toplanır ve kısa bir işlemle değişkenlere iletilebilir. DATA KOMUTU:
[DATA] komutu [DATA sabit listesi] olarak kullanılır. Bir çok değerin ve yazı ya da karakterin aynı yerde toplanmasını sağlar. Böylece programınızda kullanacağınız sabitler ve yazıları direkt olarak buraya yazıp, buradan alma olanağını sağlar. Örnek olarak:
[DATA 1, 39449, 5, "IPEK"] verebiliriz. Her sabit bir virgül işareti ile ayrılmalıdır. [DATA] komutu genelde programların sonunda kullanılmalıdır. Eğer programın ortasında kullanılırsa, sonra gelen
[READ] komutu error verir. Bir dikkat edilecek husus da, her Procedure'un kendine ait [DATA] komutu olmalıdır. Procedure'da ana programdan DATA okutulamaz.
DIM a$(3) FORI=l to3 READA$(I) NEXTI PRINT A$(l)+" "+A$(2)+" "+A$(3) DATA "OSMAN","SEVER","YARDI- MI"
PROCEDURE TEST READ B$ PRINT B$ DATA "İPEK" END PROC
READ KOMUTU: [READ değişken listesi] olarak kullanılır. Komut DATA'da bulunan sabitleri, değişkenlere atamaya yarar. Her atamadan sonra atama sırası DATA'daki diğer bir sabite geçer. Böylece karışıklık önlenmiş olur.
DIM A(3) FOR I=1 TO 3 READ A(I) NEXT I DATA 1233, 5665, 5555, 888 Bu örnekte A(1)=1233, A(2)=5665, A(3)=5555 anlamına gelmektedir. Sıra 888 değerindedir ve bu sıra sadece [RESTORE] komutu ile bozulur.
RESTORE KOMUTU: [RESTORE (READ'in başlama yeri)] formatı altında kullanılır. READ komutunun başlama yerini belirtmenin birçok yolu vardır. Bunları şöyle sıralayabiliriz:
RESTORE satır etiketi RESTORE karakter RESTORE satır sayısı RESTORE sayı [RESTORE] READ komutunun diğer sabiti hangi DATA'dan alacağını belirler. Her Procedure'un kendine ait bir READ okuma yeri vardır. Bunun için her Procedure'de ayrı olarak [RESTORE] kullanılmalıdır.
Satır etiketi READ komutunun ilk okumaya başlayacağı yerde olmalıdır.
RESTORE L RESTORE "L"+"A" ;gibi
Bunun gibi satır sayısı da okunacak DATA'nın başında yer alması gerekir.
RESTORE 10 RESTORE DEP+2;gibi Genelde çok gereksinim duyacaksınız ve her zaman yanılgıya düşeceksiniz. Çünkü görüldüğü kadar kolay bir olay olmadığını bir süre sonra fark edeceksiniz. Örneğin 5 karakter serisinin ortasında bir tane sayı sabitini okutma gibi.
INPUT "ODA";ODA RETOREODA*5+100 READ A$ PRINTAS
100 DATA "LODA" 105 DATA "2.0DA" 110 DATA "3.ODA"
Gelecek aya kadar iyi çalışmalar.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 24
MODIFY TUMBLE: Evet, "Edit / Modify / Indicated Tumble" fonksiyonuna geçebiliriz artık. Animasyon süresince bir objenin sizin belirlediğiniz yol boyunca hareket etmesini daha ileride göreceğiz. Şimdi anlatacağım konu, bu objenin hareketi sırasında bakış yönünü belirlemek için kullanılmakta. Bu konuyu öğrendikten sonra bakış yönü değişen bir cismin animasyonu için bizim gibi fazla kafa patlatmanıza gerek kalmaz.
Bir yolun (path) aslında bir eğriden oluştuğunu biliyoruz. Bu eğrinin noktaları yardımıyla objenin takip edeceği temel yol çizilmiş olur. Fakat yine de obje kendi ekseni etrafında da hareket edecekse bu eğri yetersiz kalır. Yolu oluşturan noktalar ayrıca dönüşü tanımlamak için de kullanılabilir. Bunu aşağıda bir örnekle inceleyelim:
Bir eğri yaratıp ("Tools / Curve" ile ya da tek tek nokta koyarak) bunu "path" olarak tanımlayalım ("Edit / Do / Make path"). Şimdi koordinat işaretçisini bu eğrinin ilk noktasına getirin. "Edit / Modify / Indicated tumble" fonksiyonunu çağırdığınızda karşınıza bir pencere çıkacak. Ayrıca aktif olan pencerede ilk nokta ekranın ortasına getirilecek ve bu noktadan üç doğru çıkacak. Bu doğruların her biri objenin dönüş eksenini belirtir. Bunların yardımıyla yolu takip edecek olan objeye yön tanımlayacağız. Üç doğruya baktıkları yönlere göre isim verelim: z ekseni (rengi sarı), x ekseni (rengi beyaz) ve dik olan y ekseni (rengi mor). Her üç penceredeki rotasyon gadget'ları yardımıyla bu eksenlerin yönü değiştirilebilir. Bu sayede yolu oluşturan noktaların her birinde obje için ayrı bir bakış yönü tanımlamak mümkün. Bir sonraki noktaya geçmek için "Move to : Next" gadget'ını, bir önceki noktaya dönmek içinse "Move to : Previous" gadget'ını kullanmanız gerekli. Bir yol üzerinde her noktada dönüş açısı tanımlamaya gerek yok. İki tanımlanan nokta arasında tanımlanmamış bir nokta varsa bu noktaya ait bakış açısı olarak bir önceki ile bir sonraki noktanın ortalaması alınır. Bu durumda o noktaya gelindiğinde penceredeki "Method :" yazısının yanında "Interpolated" yazacak. Eğer noktanın dönüş açılarını elle ayarlamışsanız buradaki gadget'ta "Specified" yazacaktır.
"Match Last" yardımıyla da obje yönünün bir önceki noktadaki obje yönüyle aynı olmasını sağlarız. Yolun ilk noktasında bu gadget'ı kullanmak anlamsız olur. Ama devamlı tekrar edecek olan bir animasyonu yapmak istersek, bu fonksiyon bir hayli yardımcı olur. Ayrıca obje bakış açısını da bu fonksiyon yardımıyla başka bir noktaya kopyalayabiliriz.
"Edit / Modify / Take" menüsünü yazımızın ileriki bölümlerinde detaylı olarak açıklayacağız. Bu yüzden, burada değinmeden geçiyorum. "Modify" alt-menüsü bu kadar; geçelim bir sonraki alt-menü olan "do" menüsüne.
"DO" ALT-MENÜSÜ: "Expand" (<sağ Amiga>+<X>) yardımıyla seçilen bir objenin boyutlarını değiştirebilirsiniz. Karşınıza çıkacak olan pencerede yapacağınız ayarlamalarla objenizin istenilen boyutlardan birinde ya da çoğunda genişlemesini ya da daralmasını sağlayabilirsiniz. "1/2" gadget'ı objenizi seçilen boyutlarda yarı boyuta indirecek, "2" ise iki katına çıkaracaktır. Pencerenin ortasında boyutu elle değiştirmeye yarayan iki sürgü var; bunlardan üstteki kaba ayar, alttaki ise hassas ayar yapmak içindir. "E / W", "N / S" ve "U / D" gadget'ları yardımıyla istediğiniz yönlerde büyültme ya da küçültme sağlayabilirsiniz.
"Subdivide" (<sağ Amiga>+<D>) yardımıyla bir objedeki nokta sayısını artırabilirsiniz. Bu sayede bir patatese burun eklemek ya da yuvarlak hatlardan oluşan bir objeyi daha da yuvarlatmak gayet basit hale gelmekte. Fonksiyonu çağırdıktan önce nokta eklenecek yüzeylere ait tüm noktaları seçin. Fonksiyonu çağırdıktan sonra her doğrunun ortasına bir nokta eklenmiş ve doğru ikiye bölünmüş olur.
Bu fonksiyonu; aralarında bir doğru olmayan iki nokta üzerinde uyguladığınızda, bu iki nokta arasına, sizin belirleyeceğiniz değer kadar nokta eklenecek, fakat bu noktalar birleştirilmeyecektir.
Bu aylık bu kadar bilgi zannedersem fazlasıyla yeter. Yine bütün bu anlatılanları daha iyi anlamak için verdiğim ufak örnekleri bol bol uygulayın demekten başka bir şey kalmadı. Bir dahaki ay görüşmek üzere hoşça kalın.