Yetkinforum.com | ©phpBB | Bedava yardımlaşma forumu | Suistimalı göstermek | Yetkinblog.com
ForumAlem

ForumAlem
 
AnasayfaAnasayfa  SSSSSS  AramaArama  Üye ListesiÜye Listesi  Kullanıcı GruplarıKullanıcı Grupları  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

Paylaş | 
 

 PASCAL ORNEK PROGRAM

Önceki başlık Sonraki başlık Aşağa gitmek 
YazarMesaj
ToPrAk
Admin
Admin
avatar

Mesaj Sayısı : 457
Kayıt tarihi : 05/08/08
Yaş : 28
Nerden : KONYA

MesajKonu: PASCAL ORNEK PROGRAM   Cuma Ağus. 08, 2008 5:49 pm

Örnek Program Bir sınıftaki öğrencilerin tamamının Ad,Soyad ve Nosunu tutabilen ve istendiğinde ekrana dökebilen bir program yapalım. Örneği 10 öğrenci için yaptım çünkü 10 kişinin bilgilerini girmek bile sıkıcı.

10 rakamını değiştirerek daha az/fazla öğrenci kaydı yapabilirsiniz. Yada indeks değerini 100 yapıp sadece 10 tanesi için bilgi girişi yapabilirsiniz.


1. Type
2. Ogr_kaydi = record
3. No : integer;
4. Ad : String[30];
5. Soyad : String[30];
6. end; (* of record *)
7. int = integer;
8. Var
9. Ogrenci : array [1..10] of Ogr_Kaydi;
10. i,n : int;
11. Begin (* Program Body *)
12. write('Kaç ogrenci bilgisi girilecek (max 10) : ');
13. readln(n);
14. for i := 1 to n do
15. begin
16. write(I,'.Ogrenci Nosu : '); readln(Ogrenci[i].No);
17. write(I,'.Ogrenci Adı : '); readln(Ogrenci[i].Ad);
18. write(I,'.Ogrenci Soyadı : '); readln(Ogrenci[i].Soyad);
19. end; {of for}
20. writeln('Girilen kayıtlar :');
21. for i := 1 to n do
22. begin
23. write(i,'-',Ogrenci[i].No);
24. write(' ',Ogrenci[i].Ad);
25. writeln(' ',Ogrenci[i].Soyad);
26. end; {of for}
27. End. (* program sonu *)


Açıklamalar :

Örnek programımızın açıklamalarını satır satır size gösterebilmek için satır başlarını numaraladım.

Şimdi açıklamalar başlıyor. Aman dikkatli takip edin. Eğer bu örneği anlayabilirseniz Type bloğu ve record tanımlamalarını da aynı şekilde anlamışsınız demektir.
Type bloğu tanımlamasına başladığımı bildiriyorum.
İsmi Ogr_Kaydı olan bir record tanımlamasına başlıyorum. Arada eşittir kullandığıma dikkat edin.
Artık record yapısının içindeki elemanlar tanımlanmaya başlandı. Bu kısımda sanki Var bloğunda imişiz
gibi değişkenin adı'ndan sonra iki nokta üstüste ( ve değişken tipiverilir ve noktalı virgülle ( o tanım
sona erdirilip bir sonraki tanıma geçilir. Biz basit bir sınıf listesi hazırlayacağımıza göre No, Ad ve Soyad bizim için yeterli olacaktır.
record tanımlamamızın sona erdiğini belirten end; deyimi.

Her record deyimi bir end ile bitmelidir.
integer tipinde int diye bir değişken tanımladım. Bu özellikle C kullanıcılarının yaptığı bir triktir. C de integer tanımlamaları int deyimi ile yapılır. Burda da bundan sonraki integer tanımlamalarımızı int ile yapabileceğiz. Eğer ilk olarak bu komutu kullanmış olsaydık record içinde bile kullanmamız mümkün olabilirdi. Bunu siz deneyebilirsiniz.
Artık Type bloğunda işimiz bitti. Var bloğuna geçiyoruz.
İlk iş olarak tanımladığımız record tipini hemen bir değişkende kullanıyoruz.Hem de dizi olarak tanımlıyoruz.

Unutmayın ki Type bloğunda yaptığımız tip nımlamasıydı. Şimdi bu tanımladığımız tipi değişken tanımlamada kullanıyoruz.

Tip tanımlarınızı değişkenmiş gibi kullanamazsınız.
i ve n adında ve int (!!) tipinde 2 değişken tanımladık.
Artık programımıza başlayabiliriz. (* *) açıklama parantezleri. İhtiyaç duydukça ama programın okunabilirliğini bozmadan bolca kullanabilirsiniz.
En fazla kaç kayıt yapılacağını kullanıcıya soruyoruz. En fazla 10 olabileceğini de belirtiyoruz ki kullanıcı uçup absürd değerler yazmasın.
Tabii ben kontrol ettirmedim ama siz 10'dan fazla girmeyi bir deneyin bakalım ne olacak. Öncelikle F2'ye basıp programınızı save etmeyi unutmayın tabii ki.
readln deyimi ile kaç kayıt yapılacağını n değişkeninin içine okuttuk. Eğer aynı satırda bir şeyler yazdırıp sonunda soru soracaksanız. write - readln çiftini kullanın.
Neden Acaba ??
Bir döngü başlattık. 1'den başlayacak ve n içinde kaç varsa o kadar dönecek.
döngü içinde birden fazla işlem yapılacağından hepsini begin - end bloğu içine alıyoruz.
İşte az evvel bahsi geçen write - readln çiftleri... Write deyiminde i'yı ne güzel kullanmışım değil mi? Ama daha önemlisi readln deyimi içinde neler olduğu :
readln( Ogrenci[i].No );
Ogrenci dizisinin i. elemanının No'sunu klavyeden oku . Tipi ne olursa olsun bizim dizimizin adı Ogrenci. Dolayısı ile indisi onun yanında belirtiyoruz. Sonra bir nokta (.) ve No yazıyoruz ki bu değişkenin alt seviyesinde bulunan No değişkenine ulaşabilelim.
aynı mantıkla i değişmediği için hala aynı değişkenin değişik alt değişkenlerine değerler okutuyoruz.
İşte for döngüsü bitti. Bir begin ile blok başladığı için de bir end; ile bloğu kapattık.
Şimdi de girdiğimiz kayıtları ekrana listeleyeceğiz. Bir başlıktan sonra işimize başlıyoruz.
Yine i değişkenini döngümüze indis olarak kullanabiliriz. Başka bir işe yaramıyor zaten. Yine dizinin n'e kadar olan bilgilerinin dökümünü yapacağız.
Hmm demek blok gerekiyor. Begin ile bir blok başlangıcı yapalım.
yine i'yi çok akıllıca kullanmışım. Helal bana. Onun dışında değişkene erişmek için aynı yolu kullandığımızı söyleyebiliriz. Önce değişken ve indisi Nokta altdeğişken.write(i,'-',Ogrenci[i].No);
Bu seferki write'ın ilk elemanı 3 boşluk. Amaç ekran çıktısı okunabilir olsun. Onun yerine tab karakteri de kullanılabilirdi. Ama numarasını hatırlayamadım. Eğer ne olduğunu bulabilirseniz chr(#numarası) şeklinde kullanabilirsiniz. Mesela 9 ise writechr(#9)),'Ogrenci[i].Ad);
Son olarak ise writeln kullandım. Çünkü bundan sonraki değerin alt satırdan çıkmasının istiyorum.
For döngüsü bitti. End; ile kapattık.
Program da bitti. Onu de End. ile kapattık.
Record tanımı içinde yeni record tanımları yapılabilir. Mesela:

Stk_har=record
Stk_NO : integer;
Har_tipi : char;

Har_tarihi=record
Yil : byte;
Ay : byte;
Gün : byte;
end;

Miktar : real;
end;
Sayfa başına dön Aşağa gitmek
Kullanıcı profilini gör
 
PASCAL ORNEK PROGRAM
Önceki başlık Sonraki başlık Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ForumAlem :: Programlama Dilleri :: PascaL-
Buraya geçin: