11.07.2015 Views

Amiga Dunyasi - Sayi 23 (Nisan 1992).pdf - Retro Dergi

Amiga Dunyasi - Sayi 23 (Nisan 1992).pdf - Retro Dergi

Amiga Dunyasi - Sayi 23 (Nisan 1992).pdf - Retro Dergi

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

end ifOPEN Son jsmi FOR OUTPUT AS 2PRINT #2,numaraCLOSE #2ReturnBiraz uzunca oldu. Gelecek sefere süsleme mahiyetindeolan satırları eklemeyeceğim. Dikkat ederseniz,arada tuş sormak için iki ayrı basit yöntemkullandım. Tabii ki bu verileri okumak ve sorularısormak için çok daha etkili yöntemler kullanabiliriz.Ne var ki, bunlar şu anda konumuz değil (geleceksefere süsleme tekniklerini anlatırız olur biter).Önemli olan parametremizi, yani dosyanın kaçıncınumarasında olduğumuzu diskete kaydedebildik.Ufak bir sorunumuz var. Programı ilk çalıştırdığımızdadiskette verilen isimde bir dosya olmalı ve 0sayısını içermeli (Numara bir arttırılıp kullanılıyor).Biraz önce ilk kullanım değil, ileri kullanımlarsorun yarattı. Şimdi ise ilk kullanım sorun yaratıyor.Kurtulmak için iki seçeneğimiz var. Biri,başka bir programla bu dosyayı ilk kullanımdanönce hazırlamak. İkinci yöntem ise, bu başka programıasıl programımızın bir parçası yapmak. Asılprograma parça yapmak olayı daha şık çözümlesede, sadece bir kere kullanılacak ir program bölümüile programı aşırı kabartacaktır. Her halükardailk kullanımdan önce (yani ilk isim girilmeden),OPEN Sonjsim FOR OUTPUT AS # 28=0print #2,aCLOSE #2satırları çalıştınlmalıdır. Bu kısmı aslında sondandosya silmek için de kullanabilirsiniz. Evet artıkrahatça bilgi girebiliyoruz. Okuyamadığımız bilgiyisaklamanın anlamı yok. Hemen okuyabilecekbir düzen düşünelim.İsim oku:get #1,numaraiisim$ =isim$isoyisimS = soyisim$itno$ = tno$gosub isim_yazreturnisimyaz:print numara;" Numaralı kayıt"print " İsim : ";iisim$print " Soyisim : ";isoyisim$print " Numara : ";CVL(itno$)returnNiye isimleri isim$ ten iisim$'e kopyalıyorsundiye soracaksınız. Pek gerekli gözükmese de Fieldile atanan değişkenler program içinde sabit kalmayandeğişkenler. O yüzden mümkün olduğu kadarçabuk bu değerlerden asıl değerleri almak gerekir.Belki ileri aşamalarda bu okunan değerlere, ekranayazmak dışında ihtiyacımız olur. Dikkat edin,isim okuma kısmımızın temelini numara oluşturuyor.Biz numarayı veriyoruz, o da bize isimleri veriyor.Anahtar olay numara. Şimdiki bilgimiz veprogramımızla numaralarını hatırlamak suretiyleherkesin adını bulabiliriz. Ya da son numarayı bulabildiğimizegöre tüm isimleri bir liste halinde ekrana(PRINT) veya printer'a (LPRINT) aktarabiliriz.Bu pek az insanı mutlu edecektir. Bizim girilenbir ismi aramamız şart. Birazcık burada kafa karıştırayım.Neleri bilip, neler isteyebiliriz? Meselaadamın soyismi aklımızda (Öğretmensek mesela),olur numarasını merak ederiz. Veya ismini biliyoruznumarayı merak ediyoruz. Olur ya, numarayıbiliyoruz, numaranın kime ait olduğunu merak ediyoruz.Hatta adamın ismini biliyoruz, soyisminiarıyoruz, soytarılığı bırakalım (daha doğrusu benbırakayım). Kişi hakkındaki bilgilerimiz tam da olmayabilir.Bu kadar sıralamamın sebebi, aramamızıbu başlıkları kapsayacak şekilde yapmak. Gerçiörneğimizde en mantıklısı isimleri karşılaştırmakancak bunu biraz genişletebiliriz.Arama:Input "Aranan ismi girin ";a$a$ = UCASE$(a$)if a$ ="" then goto arama_biterOPEN Son_isim FOR INPUT AS 2INPUT #2,iCLOSE #2For numara = 1 to igosub İsim okub$ = iisimS+soyisimSif INSTR (UCASE$(b$),a$) 0 then gosubisim yaznext numaraarama biter:ReturnBiraz önce fuzuli gibi gözüken satırların yararınışimdi gördük. İsim yazmak için aynı satırları kullanmamızgerekmedi. Burada dikkat ederseniz sadeceisim değil, soyismi girilerek de aranan isimbulunabilir. En güzeli bu iş için arananın niteliğininbelirtilmemesi. UCASE$ fonksiyonu bugünikinci kez karşımıza çıkıyor. Büyük ve küçük harflerinkarışmaması için aramalarınızda bu emri kullanmayadikkat edin. Sorunlarımız daha tam olarakçözülmedi. 10000 numara arasından bir numarabulabilmek için, tüm numaralan teker teker okumamızgerekiyor. Bu konu üzerinde biraz sonratartışalım.Şimdi bir diğer mesele, bir kayıt silmek istiyoruz.Bu konu biraz karışık. Size yardımcı olacakbir iki öneri getirmeye çalışayım. Eğer sondan silmekistiyorsak bu sorun değil. Yapacağımız tekşey Son_isim isimli dosyada bulunan değeri okuyup,düşürmek ve tekrar yazmak. Ancak programlarınızözel şartlar dışında da akıllıca davranabilmen.Aşağıdaki harf sırasını göz önüne alalım.A-B-C-D-E-F-G-H-l-J-K-LHer harf, bir kaydı simgelesin. 12 adet kaydımızvar. Ve Son_isim dosyasındaki sayı, yani numaradeğeri 12. İlk olarak sadece bir kayıt silmek isteyelim.Dosya sonda ise yapılacak tek şey Son_isimdosyasında bulunan sayıyı küçültmek. Bu silinmesiistenen kaydı silmeyecek, ancak yeni kayıt yapıldığızaman silinmesi istenen kaydın üzerine kayıt yapılacaktır.Ama bizim kayıt sonda değil de, diyelimE harfi ile gösterilen kayıt olsun. Bu durumda yapabileceğimizen basit ve etkili yol yine son_isimdosyasında bulunan numarayı küçültmek, ne de olsabir kayıt şilince toplam kayıt sayısı düşecektir.Bunun ardından en son kaydımızı silinmesi istenenkaydın üzerine yazarız. Dizi şu şekli alır:A-B-C-D-L-F-G-H-l-J-KAMIGA DÜNYASI 97

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!