Hackrogroups

PASCAL

     
 
 
 
 
  
 
PASCAL

Pascal programını yapısı üç ana kısımdan oluşur.
1. Program İsmi
2. Tanımlama Bloğu
3. Ana Program Bloğu

**1. Program İsmi: Program ProgramIsmi; biçiminde yazılır.Program ismini yazarken
türkçe karakter
kullanılmaz. (Ç,ç,Ü,ü,Ğ,ğ,İ,ı,Ş,ş,Ö,ö ).Program ismi iki veya daha fazla sözcükten
oluşuyorsa araya
boşluk konulmaz. Kelimeler arasına_(alt çizgi ) yazılır.Program ismi 30 karakterden
fazla olmamalıdır.
Pascal tarafından ayrılmış sözcükler(reserved words ) kullanılmaz.Özel işaretler
kullanılmaz ( ) , . ' ; : [ ] { } v.b. gibi
Örnek:
Program program_adı;

**2.Tanımlama Bloğu
Unit (Kütüphane ): Pascal derleyicisinin hazır kütüphaneleri ile programcı tarafından
tanımlanmış
kütüphanelerin belirtildiği bloktur.
Const : Sabit sayıların tanımlandığı bloktur.
Örnekler
Pi = 3.14;
Maksimum = 15;
Sifre = 'YAKAMOZ'
Type : Özel tanımlı tiplerin belirtildiği bloktur.
Label : Program akışının değiştirileceği atlama adımlarının tanımlandığı bloktur.
Var (variable ): Programda kullanılacak değişkenlerin tanımlandığı bloktur.
Değişken Tipleri
Tam Sayılar
Tip Alt Sınır Üst Sınır Bellekte Kapladığı Alan
ShortInt -128 127 1 Byte
Integer -32768 32767 2 Byte
Byte 0 255 1 Byte
Word 0 65535 2 Byte
LongInt -2.147.483.648 2.147.483.647 4 Byte
Real 2.9 * 10^-39 1.7 * 10^38 6 Byte
Single 1.5 * 10^45 3.4 * 10^38 4 Byte
Double 5.0 * 10^-324 1.7 * 10^308 8 Byte
Extended 3.4 * 10^-4932 1.1 * 10^4932 10 Byte
Comp -2^63+1 2^63-1 8 Byte
string 1 ....255 karakter
char 1 byte
boolean 1 byte
Procedure, Function : Altprogramların tanımlandığı bloktur.Tanımlamada öncelik sırası
yukarıdan aşağıya doğrudur.

**3. Ana Program Bloğu
Begin ile başlayıp End ile biter.
Örnek Program:
Program Ilk; Program Başlığı sonuna ; konulmaldır.
Const Sabit sayı tanımlama
b10 b sabitinin değeri 10 dur.
Var Değişken tanımlama
a : integer; a sayısı tam sayıdır.
b : real; b sayısı ondalıklı sayıdır.
Begin ana program başladı.
Write ('a sayısını giriniz : ' ); Ekrana ' ... ' arasındakileri yaz.
Readln(a ); a değişkenini (klavyeden ) gir. Alt satıra geç. (ln )
c  a + b; a değişkeni ile b sabitini topla, c'ye ata.
Writeln('a + b = ', c ) '...' içindekileri yaz, sonucunu yaz (c'yi ), alt satıra
geç.
Readln Klavyeden herhangi bir karakter oku (Program çalıştırıldığında
sonucu (c ) ekranda bekletmek içindir. (yazılmasa da olur ). Son satırdan bir onceki
satıra ; yazılmasa da olur.
End. Program sonu (Her Begin'in bir End'i vardır.
Programın sonundaki End'in sonuna nokta isareti konulur.
Sabit ve değişkenleri tanımlarken sayı ile başlamazlar ( 2a: integer; tanımlaması
yanlıştır ).
İki sözcük arasında boşluk bırakılmaz. Türkçe karakter kullanılmaz (Ç ç Ö ö Ü ü Ğ ğ
İ ı Ş ş Ç ç ).
Özel işaretler kullanılmaz ( ; : , . ' " + - * / - ? = ......... ) Turbo Pascal'ın
ayrılmış sözcüklerinden
herhangi birisi değişken ya da değişken ismi olmaz. Alt çizgi ( _ ) ile başlayabilir.
Örnekler:
Const
Pi_Sayisi = 3.1415;
Bulundugum_yil = 2000;
Tarih = '11/11/2000';
isim = 'ahmet';
soyad = 'boyraz';
YAS =19;
Örnekler:
Var
Yas : shortint;
SAYI : integer;
secmen_sayısı : integer;
Buyuksayi : longint;
ucret : real;
Pi : real;
Sayac : word;
Nufus : single;
sayi2 : double;
aralik : extended;
SaYI3 : comp;
Yeni : byte;
harf : char;
Atama İşlemlerinde eşitliğin sol tarafına -, + veya sayı yazılmaz.Birden fazla
değişken yazılmaz.
(a+bc )

PASCAL'DA KULLANILAN BAZI KOMUTLAR
Write-writelnabit,değişken,yazdığımız mesajlar veya işlem sonuçlarının bir dosyaya
veya ekrana yazılmasını sağlar.Writeln(writeline )komutu write'dan farklı olarak
yazılar yazıldıktan sonra imleç bir sonraki satıra geçer.
Read-readln:Klavyeden bilgi göndermek için kullanılır.Girilen bilgiler değişkenlerde
tutulur.
Case-of:Verilen ifadenin aldığı değere göre program akışını değiştirmek veya istenen
işlemleri yapmak için kullanılır.
For-do:İstenen işlemleri istediğimiz sayıda tekrarlatmak için veya istenen iki
aralıkta değerler elde etmek için kullanılır.
Repeat-until:İstenen şartlar oluşuncaya kadar işlemleri tekrarlatmak için kullanılır.
While-do:Belirtilen şart doğru olduğu sürece istenen işlemleri tekrarlamak için
kullanılır.
Clrscr:Ekranı temizlemek için kullanılır.
gotoxy:İmleci ekranda herhangi bir satır veya sütuna taşımak için
kullanılır.(goto(sütun,satır ),goto(5,5 ) )
Readkey:Klavyeden bir tuşa basılmasını sağlar.Bu komut program içinde basılan veya
basılacak olan tuşları kontrol etmek için kullanılır.(programı bitirmek için *
tuşuna basınız gibi )
Keypressed:klavyeden bir tuşa basılıncaya kadar işlemleri devam ettirmak veya bir
tuşa basılıp basılmadığını kontrol etmek için kullanılır.
Window:Ekranda bir pencere oluşturmak için kullanılır.
Textcolor:yazının rengini belirlemek için kullanılır.
textbackground:Ekrana yazılacak olan yazının zemin rengini belirlemek için kullanılır.
Delay:programın belirtilen süre kadar bekletilmesini sağlar.
Delline:imlecin üzerinde bulunduğu satırı silmek için kullanılır
insline:imlecin üzerinde bulunduğu satırdan itibaren ekranı bir satır aşağı kaydırarak
boş bir satır açılmasını sağlar
Sound:verilen frekansta ses elde etmek için kullanılır.
nosound:üretilen sesin kesilmesini sağlar.
textmode:ekranın satır ve sütun sayılarını ayarlamak için kullanılır.
Şimdi öğrendiğimiz bilgilerle basit bir program yazalım.
Örnek Program:
program pisagor;
var
a, b: integer;
c: real;
begin
writeln ('a ve b sayılarını giriniz : ' );
readln (a, b );
c  sqrt(sqr(a )+sqr(b ) );
writeln('c = ', c:6:2 );
readln
end.
*************
İşlemler ve Öncelikler
1. Not
2.*, /, Div, Mod, And
3.+, -, Or
4.<, <=, =, <>, >=, >, In
Eğer aynı işlemciden birden fazla varsa işlem soldan sağa doğru yapılır.Eğer
işlemlerde parantez kullandıysak yukarıdaki öncelik sırasına göre daha önce yapılır.

 


Mantıksal İşlemler ve Sonuçları
(1=Doğru=True ) (0=Yanlış=False )

Ve (And ) Operatörü
p q p ve q
1 1 1
1 0 0
0 1 0
0 0 0

Veya (Or ) Operatörü
p q p veya q
1 1 1
1 0 1
0 1 1
0 0 0

AYRILMIŞ SÖZCÜKLER ve STANDART İFADELER
(Reserved Words and Standard Identifiers )

RESERVED WORDS
And ,Else ,Inline ,Procedure, Unit ,Asm, End ,Interface, Program ,Until
Array, Exports ,Label, Record ,Uses ,Begin, File ,Library ,Repeat ,Var
Case ,For, Mod ,Set, While ,Const, Function ,Nil ,Shl, With
Constructor, Goto, Not, Shr, Xor ,Destructor, If ,Object, String
Div ,Implementation ,Of ,Then ,Do ,In ,Or, To ,Downto, Inherited ,Packed, Type

STANDART İFADELER
Sabitler : False, True, MaxInt
Tipler : Integer, Boolean, Real, Char ,Text, String, ShortInt ,LongInt, Byte,Byte
,Word
Single, Double ,Extenteed ,Comp ,WordBool ,LongBool ,Pointer
Program Parameters :Input, Outpuut
Procedures and Functions:
Flow Control :Break, Continue, Exit, Halt, RunError
Transfer : Chr, High, Low, Ord, Round ,Trunc
Arithmetic : Abs, ArcTan, Cos, Exp, Frac, Int, Ln, Pi ,Sin, Sqr, Sqrt
Ordinal : Dec, Inc, Odd, Pred, Succ
String : Concat, Copy ,Delete ,Insert, Length ,Pos , Str, Val
Dynamic Allocation : Dispose, FreeMem, MaxAvail, MemAvail, New
Pointer and Adress :Addr, Assigned ,Cseg, Dseg ,Ofs, Ptr,Seg, SPtr, Sseg
Miscellaneous :Exclude ,FillChar, Hi ,Include, Lo, Move,ParamCount, ParamStr, Random
,Randomize
SizeOf, Swap,TypeOf, UpCase
Input and Output : Append, Assign, BlockRead ,BlockWrite, ChDir ,Close,Eof, Eoln,
Erase, FilePos
FileSize ,Flush,GetDir, IOResult, MkDir ,Read, ReadLn ,Rename,Reset, ReWrite, RmDir,
Seek ,SeekEof
SeekEoln,SetTextBuf ,Truncate ,Write, WriteLn
Units os, Crt, Overlay, Printer, String, Graph

KARAR VERME
IF KOŞUL THEN İŞLEM1 ELSE İŞLEM2
Eğer koşul doğru ise İşlem 1'i yap değilse İşlem 2'yi yap.
Pascalda yazımı:
:
if Koşul Then
Begin
İşlem1;
Else
İşlem 2;
End;
Not: End 'in sonuna sadece programın sonunda .(nokta )konur.Sadece bir işlem değil
birkaç işlem yapılabilir.
if Koşul1 Then
Begin
İşlem1;
İşlem2;
End
Else
if Koşul2 Then
Begin
işlem3;
işlem4
End
Else
İşlem5;
***Şimdide tek sayıları bulan bir programı ve algoritmasını yazalım.
Algoritması:
1. Başla
2. Sayı gir
3. Eğer sayının Mod 2'ye göre sonucu Birse Tek Sayı yaz
Değilse Çift Sayı yaz.
4. Son.
Programın kodu:
Program TekCift_bulma;
Var
a : Integer;
Begin
Write('Bir sayı giriniz: ' ); Readln(a );
If (a mod 2 = 1 Then
Writeln ('Girdiğiniz Sayı Tekdir' )
Else
Writeln ('Girdiğiniz Sayı Çifttir' )
Readln
End.
***Üç kenarı girilen bir üçgenin ne tür bir üçgen (çeşitkenar , ikizkenar, eşkenar )
olduğunu yazan program
Algoritması:
1. Başla
2. a, b ve c'yi gir
3. Eğer a=b ve b=c ise EşKenar Üçgen
Değilse
Eğer a<>b ve a<>c ve b<>c ise Çeşit Kenar Üçgen
Değilse İkiz Kenar Üçgen
4. Son
Programın kodu:
Program Ucgen;
Var
a, b, c : Integer;
Begin
Write('Üçgenin kenarlarını giriniz: ' ); Readln(a, b, c );
If (a>0 ) and (b>0 ) and (c>0 ) Then
if (a=b ) and (a=c ) Then Writeln ('Eşkenar Üçgen' )
Else
if (a<>b ) and (a<>c ) and (b<>c ) Then Writeln ('Çeşitkenar Üçgen' )
Else
Writeln('İkiz Kenar Üçgen' );
Else
Writeln('Yanlış Giriş Yaptınız...' );
Readln
End.
Not'....' )apostrof arasına türkçe karakter yazılabilir
***Üç Sayının En Büyüğünü Bulan Program
Algoritması:
1. Başla
2. a, b ve c'yi gir
3. Eğer a>b ve a>c ise En Büyük Sayı A'dır
Değilse
Eğer b>a ve b>c ise En Büyük Sayı B'dir
Değilse En Büyük Sayı C'dir
4. En Büyük Sayıyı Yaz.
5. Son
Programın kodu:
Program Uc_Sayinin_En_Buyugu;
Var
a, b, c, EnBuyuk : Integer;
Begin
Write('Üç Sayı giriniz: ' );
Readln(a, b, c );
If (a>=b ) and (a>=c ) Then EnBuyuka
Else
If (b>=a ) and (b>=c ) Then EnBuyukb
Else
EnBuyuk  c;
Writeln('En Büyük Sayı = ', EnBuyuk );
Readln
End.

DÖNGÜLER
FOR BAŞLANGIÇ DEĞERİ TO SON DEĞER DO
N kez "İşlem" yap
1'den N'e kadar "İşlem" yap
i = 1 den i = N'e kadar "İşlem" yap

Pascal'da Yazımı:
For i  1 to N do
****1'den N'e Kadar Tam Sayıların toplamını bulan program ve algoritmasını yazalım.
1. Başla
2. N sayısını gir.
3. Toplam'a sıfır ata
4. i=1'den i=N'e kadar tam sayıları topla
5. Toplam'ı yaz.
6. Son
Programın kodu:
Program Toplama;
{Bir den N e kadar tam sayıları toplayan program}
Var
i, N, Toplam : Integer;
Begin
Write('Son sayıyı gir: ' ); Readln (N );
Toplam  0;
For i  1 To N Do
Toplam  Toplam + i;
Writeln('1´den N´e kadar sayıların toplamı = ', Toplam );
Readln;
***N faktöryeli bulan bir program yazalım.
Algoritması:
1. Başla
2. N sayısını gir.
3. Faktöriyel değişkenine 1 ata
4. i=1'den i=N'e kadar tüm sayıları birbiriyle çarp
5. Faktoriyel'i yaz.
6. Son
Programın kodu:
Program Faktoryel;
{N Faktöriyeli Hesaplayan program}
{$N+}
Var
i, N : Integer;
Faktoryel : Extended;
Begin
Write('Son sayıyı gir: ' ); Readln (N );
Faktoriyel  1;
For i  1 To N Do
Faktoriyel  Faktoriyel * i;
Writeln('N Faktoriyel = ', Faktoriyel:5:0 );
Readln;
End.
***ex (e üzeri x ) 'i Hesaplayan Program
Algoritması:
1. Başla
2. X 'i gir.
3. ex değişkenine 1 ata. n değişkenine 10 ata (en fazla 10 kez işlem yapmak için )
4. n kez aşağıdaki işlemleri yap
a ) Fak ve us değerlerine 1 ata
b ) j=1 den i'ye kadar
Us=us*x
Fak=Fak*j
c ) ex =ex + us/fak
5. Ex'i yaz.
6. Son
Programın kodu:
program e_uzeri_x;
var
x, ex, fak, us: real;
i, j, n : integer;
begin
write ('x i gir' ); readln (x );
n 10;
ex  1;
for i 1 to n do
begin
fak1; us1;
for i1 to n do
begin
fak1; us1;
For j1 to i do
Begin
usus*x;
fakfak*j
End;
exex+us/fak;
end;
end;
writeln('e üzeri x´in değeri = ', ex:2:7 );
readln;
end.
***Sıfır (0 ) yazılana kadar girilen sayıların ortalamasını bulan programın
Algoritması:
1. Başla
2. Toplam ve Sayaça 0 ata
3. Sayı gir
3. Aşağıdaki işlemleri 0 girilene kadar tekrarla
a ) Toplam=Toplam+Sayı
b ) Sayaç = Sayaç +1
c ) Sayı gir.
4. Ortalama=Toplam/Sayaç
5. Ortalama yaz.
6. Son.
Programın kodu:
Var
toplam, sayac, sayi:integer;
ortalama: real;
Begin
Writeln('Programdan çıkmak için Sıfır(0 ) yazınız' );
toplam0;
Sayac0;
writeln('Sayı gir ' ); readln(Sayi );
repeat
ToplamToplam+Sayi;
SayacSayac+1;
writeln('Sayı gir ' );readln(Sayi );
until sayi=0;
ortalamaToplam/Sayac;
writeln('Ortalama = ', Ortalama:5:2 );
Readln
End.

Lineer Sort with Counting (Saymalı Sıralama )
Her elemanın dizinin kaçıncı elemanı olduğu bulunup yeni dizide yerlerine konulur.
Program SaymaliSiralama;
Var
i, j, N: integer;
Sirali, Yer, dizi: Array [1..10] of integer;
begin
write('Dizinin eleman sayısını giriniz... : ' );
Readln(N );
for i  1 to N do
begin
write('dizinin ', i, '. elemanını giriniz ' );
readln(Dizi );
end;
For i  1 to N do Yer1;
For i  1 to N-1 do
For j i+1 to N do
if Dizi > Dizi[j] Then
YerYer+1 else Yer[j] Yer[j]+1;
For i 1 to N do Sirali[Yer]Dizi;
Write('Sıralı Diziniz...: ' );
For i 1 to n do Write(Sirali:6 );
Readln
end.


Matrisler (İki Boyutlu Diziler )
Matrisler (İki boyutlu diziler ) aşağıda belirtilen biçimdedirler.
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
Matrisleri Pascal Pascal programında tanımlarken
Matris: Array [1..20,1..20] of integer;
Bir matriste bir elemanın yeri şu şekildedir.
1. Sütun 2. Sütun 3. Sütun 4. Sütun 5. Sütun
1. Sıra M1,1 M1,2 M1,3 M1,4 M1,5
2. Sıra M2,1 M2,2 M2,3 M2,4 M2,5
3.Sıra M3,1 M3,2 M3,3 M3,4 M3,5
4.Sıra M4,1 M4,2 M4,3 M4,4 M4,5
5.Sıra M5,1 M5,2 M5,3 M5,4 M5,5
Matris, birden fazla dizinin bir değişken altında tutulmasıdır.

Matrislerde Veri Girişi
for i 1 to N do
for i  1 to M do readln [i, j]

Matrislerde Veri Yazdırılması
for i 1 to N do
begin
for i  1 to M do write [i, j]
writeln;
end;
***(* 2 x 3 matrisi okur ve yazar* )
var
i,j : integer;
matris: array[1..2,1..3] of integer;
begin
for i1 to 2 do
begin
for j1 to 3 do
begin
write('Matrisin ', i,'.satır ',j,'.sütun elemanını giriniz.' );
readln(matris[i,j] );
End;
end;
for i1 to 2 do
begin
for j1 to 3 do
begin
write (matris[i,j]:5 );
end;
writeln;
end
end.

FUNCTION
Dışarı mutlaka bir sonuç çıkar.Sonuç fonksiyonun üzerinden çıkar.
Parametrelerin
a ) Adetleri
b ) Sıraları
c ) Tipleri
ana programla aynı olmalıdır.
Xn in sonucunu Function olarak yazınız.
Program fonksiyon;
Var
X, N: Integer;
Function us (xx, NN: integer ): Longint;
Us fonksiyonunun tipi Longint
Var
i, sonuc : integer;
Begin
Sonuc  1;
For i  1 to NN do Sonuc  Sonuc * XX;
Us  Sonuc;
End;
Begin
Writeln('Sayı`yı gir' ); Readln (x );
Writeln('Üs`sü gir: ' ); Readln(n );
write('sonuç :', us(X,N ) );
Readln;
End.
*** 10 öğrencinin 4'er sınav notu giriliyor. İstenilen öğrencinin not ortalamasını
ve sınıfın isetnilen yazlısının not ortalamasını hesaplayan program
var
i,j, OgrNo, YaziliNo, OgrNotTop, SinifNotTop : integer;
OgrNotOrt, SinifNotOrt: real;
matris: array [1..20,1..20] of integer;
begin
for i1 to 10 do
for j1 to 4 do readln(Matris[i,j] );
Writeln('Ogrencinin Numarasini giriniz: ' ); Readln(OgrNo );
Writeln('Yazili Numarasini giriniz: ' ); Readln(YaziliNo );
OgrNotTop0;
for i  1 to 4 do
OgrNotTop  OgrNotTop + Matris[OgrNo, i];
OgrNotOrt  OgrNotTop /4;
SinifNotTop0;
for i  1 to 10 do SinifNotTop  SinifNotTop + Matris [i, YaziliNo];
SinifNotOrt  SinifNotTop / 10;
writeln(OgrNo,' Numaralı Öğrencinin Not Ortalaması = ', OgrNotOrt:4:1 );
writeln('Sınıf Not Ortalaması = ', SinifNotOrt:4:1 );
Readln
end. 
 

    
 
  
--------------------------------------------------------------------------------
 


   
   

--------------------------------------------------------------------------------
 
 
   
 

 
 
 
  

UYARI

NOT:

09.05.2010 14:19
 Pascal da asla türkçe karakter kullanılmaz.Desteği yoktur.   Pascal da asla özel karakter kullanılamaz.Desteği yoktur.
>>

Sitede ara

Copyrıght by HACKRO.© 2010-2011 All rıght reserved.