Slayt 1 - Akademik Personel Kişisel Web Sitesi Sistemi

Download Report

Transcript Slayt 1 - Akademik Personel Kişisel Web Sitesi Sistemi

Ders İçeriği:
Algoritma ve akış diyagramları, Pascal ‘da program yapısı,
Giriş/Çıkış komutları, karşılaştırma komutları, döngü
komutları, procedure, function, pointer, yapısal veri tipleri,
unit, dosyalama.
Kitaplar:
1. Pascal Programlama Dili, Murat Tekin, Nahid Tekin,
İstanbul Kültür Üniversitesi, 2003.
2. Turbo Pascal, Prof.Dr. Behiç Çağal, İstanbul Kültür
Üniversitesi.
3. Turbo Pascal ve Programlama Sanatı, Ömer Akgöbek, Beta
yayınları, 1998.
4. Pascal, Prof.Dr. Mustafa Dikici, Beta yayınları, 1998.
GİRİŞ
Blaise Pascal

Pascal 1968 yılında Prof. Dr. Niklaus Wirth
(Zürih Teknik Üniversitesi, İsveç) tarafından
geliştirilmiştir. 17. yüzyılın ünlü matematikçisi
Blaise Pascal ‘a hitaben Pascal olarak
isimlendirilmiştir.Bundan önce benzer özelliklere
sahip bir dil olan ALGOL (Algoritmic Languages)
1950 yılında geliştirilmiştir.

Pascal ‘ın programcıya sunduğu en önemli
özellik; program parçaları hazırlandıktan sonra,
farklı programlar içerisinde kullanılabilmektedir.
Günümüzde turbo pascal geliştirilerek,
programın kullanımında kolaylıklar sağlanmıştır.
Programın yazıldığı editörde, programlar anında
makina diline çevrilir, hata bulma ve
düzeltmeler pratik ve hızlıdır. Borland
tarafından Turbo Pascal gilştirilmiştir, kitap
Turbo Pascal komutlarını içermektedir. Pascal
yapısal bir dildir. Komut cümleleri bloklar
halinde yazılır. Goto kullanılarak
yönlendirilmeler kullanılmaz.

Elektronik ilk dijital bilgisayarlar, Dr. Jhon
Atanasof tarafından, Iowa State Üniversitesi
‘nde lisans üstü matematik öğrencilerinin
ihtiyaçları için tasarlanmıştır. 1946 yılında genel
amaçlı ilk dijital bilgisayar, Pennsylvania
Üniversitesi ‘nde tasarlandı ve ENIAC adı verildi.
30 ton ağırlığında ve boyutları 30X50 fit idi.
Ddaha sonra Princeton Üniversitesi ‘nde Dr.
John Von Neumann sistemi çalıştıran
programları bilgisayarın belleğine
yerleştirilmesini tasarladı, günümüzdeki
bilgisayarların temelleri atılmış oldu.




Programlama dillerini üç ana başlıkta toplayabiliriz.
Makina dili, Assemly dili ve Yüksek seviyeli
programlama dilleri.
Makina dili, bilgisayarların anlayabileceği tekdildir. 0
ve 1 sayılarından oluşur. Makinaya bağımlıdır.
Assembly dili, 0 ve 1 sayılarının yerine kelimeler ve
semboller kullanılır, makinaya bağımlıdır. Makina ve
assamble dillerinde yazılan programlar sadece
yazıldığı bilgisayarda işletebilir. Bilgisayarlar sadece
makina dilinde çalışırlar. Bundan dolayı yüksek
seviyede yazılan programlar derleyiciler ile makina
diline çevrilirler.
Yüksek seviyeli programlama dilleri, kullanımı
kolaydır, taşınabilir. Örneğin; Basic, Cobol ,Fortran,
Pascal, vb. Bunlara; visual C++, delphi, visual basic,
acces, foxpro, vb. çok yüksek seviyeli diller, C, C++,
vb. orta seviyeli dilleri ilave edebiliriz.
Bu dillerin kullanıldığı alanlara örnekler
verirsek: Pascal, fortran, C, C++ dilleri bilim
ve mühendislikte, Dbase, Foxpro, Sql, Access
veri tabanı programcılığında, Prolog, Lisp
yapay zeka kullanımında, C, C++ ve makina
dilleri sistem programcılığında kullanılır.
 Bir bilgisayar programı yazmaya başlamadan
problemin algoritmasını oluşturmamız
gerekir. Algoritma problemin çözümünü
bulabilmek için tasarlanan adımlar,
yöntemlerdir. Algoritma kullanacağımız
programlama dilinin seviyesi ve programın
zorluk derecesine göre farklılıklar
gösterecektir.


Algoritma yazdıktan sonra programlama dilinin
seçiminde, programın kullanım düzeyi, kullnım
süresi ve kullanım amacı dikkate alınmalıdır.
Programda görsellik, veri tabanı aranıyorsa,
kısa sürede sonuca ulaşabilmek için visual
dillerden biri Visual C++, Delphi, Visual Basic,
vb. seçilmelidir. Fakat bilgisayarınızın bir
donanımı için program yazmak istiyorsanız, bu
programı bu visual dillerle yazamazsınız.
Buradaki seçiminiz C, C++, Assamly, vb.
olmalıdır. Programlama dillerini kendi kullanım
alanlarında kullanmalıyız. Yukarıda verilen
örnekteki görsellik ve veri tabanı iletişimi
aranan programı C, C++ veya hatta Assembly
ilede yazabiliriz. Bu verimli olmaz ve çok aşır
uzun süreler alır.

Günümüzde yazılım teknolojisiyle farklı
programlama dillerinde yazılmış program
parçaları birlikte kullanılabilmektedir. Bu
model Component Object Model (COM)
‘dir. Örneğin C++ ‘da yazdığınız bir
parçayı Delphi ‘den çağırarak,
programınıza dahil edebilirsiniz. Bu
teknolojilerin geliştirilmesinde C++
kullanılmıştır.
Turbo Pascal Editörü (TP7.0)
Editörü ilk açtığımızda karşımıza,
NONAME00.PAS isimli dosya gelir. Bu daosya
içerisine kod satırlarını yazmaya başlayabiliriz.
Yazma işlemimiz bittikten sonta Compile
menüsü yardımıyla derleriz, daha sonra Run
menüsü ile programı çalıştırabilirsinizmiz zaman
hatalarımız var ise editör bize hatanın
bulunduğu satırı, hatayı ve kodunu verir. Hatayı
düzelttikten sonra tekrar derleyebilirsiniz. Daha
sonra File menüsünden save ‘e basark programı
kaydedebilirsiniz, istenirse 8 karakterlik yeni bir
isim verilebilir.
Önek 1
program ilk(input, output);
Uses crt;
begin
writeln(‘pascal öğreniyorum.’);
end.
İlk Programımızın çıktısı aşağıdaki gibi olacaktır.
BÖLÜM 1
PASCAL ‘DA PROGRAM YAPISI
Program yapısı
Semboller
DEĞİŞKEN TİPLERİ
OPERATÖRLER
Aritmetik Operatörler
Mantıksal Operatörler
Karşılaştırma Operatörleri
PASCAL ‘DA PROGRAM YAPISI
Pascal programlama dili, yapısal bir dildir. Yazacağımız pascal programı,
program parçalarında oluşur. Ana program parçası çok kısa olur. Programın
büyük bir bölümünü procedure ve function ‘lar oluşturur.
Program yapısı
program program_adı(input,output);
Tanımlamalar
uses
unitler;
type
özel veriler;
const
sabitler;
var
değişkenler;
label
etiketler;
procedure ve functionlar;
Ana program parçası.


İlk olarak program yazılır ve programa bir isim
verilir. Verilecek isimde bir değişken için
uyulacak kurallar geçerlidir. Bunlar; türkçe
karakter, sembol, boşluk olamaz. Sayı ile
başlanamaz. Alt çizgi kullanılabilir. Örnekler;
ogrenci_isleri, soru1, ornek1, gunluk_ver3.
Daha sonra tanımlamalar bölümünde program
içerisinde kullanacağımız unitler, veriler,
sabitler, değişkenler, etiketler bulunur.
Tanımlamalar kısmında program içerisinde
kullanacağımız unitleri, özel veri tiplerini,
sabitleri, değişkenleri ve etiketleri tanımlarız.


Procedure: Alt programdır. Program
parçasını procedure altında yazarak, istenilen
yerde çalıştırabiliriz. Procedure parametre ile
kullanmıyorsak, çalışması için ismini
yazmamız yeterlidir. Procedure ve function
‘larda type, const, var ve label tanımlamaları
kullanılabilir.
Function: Function ‘da alt programdır.
Yazdığımız function doğrultusunda, ana
program parçasından gönderdiğimiz datayı
işleme tabi tutarak, sonucunu gönderir.
Semboller

Harfler
:İngiliz alfabesinin harfleri , A-Z ve küçük harfler.

Sayılar: 0-9

Hexaesimal(Onaltılık) sayılar: A-F , a-f , 0-9

Özel karakterler(Tek olarak kullanılanlar):

+
:aritmetik ve string toplama.
- */ :aritmetik işlemler.
= < > :karşılaştırma.

:
:geğişken tanımlanırken ve case of ‘da kullanılır.

;
:komut satırı bitimi.

@
:adres belirtmede kullanılır.





( ) :aritmetik işlemlerde öncelik için, procedure ve function ‘ların
parametrelerini yazmak için kullanılır.
{}(* *) :açıklama yazmak için kullanılır.
#
:bu sembol ile yazılan kon numaraları ile karakter veya tuş
belirtilebilir.

[]
:indis.

.
:program sonu ve real sayılarda kullanılır.

,
:birden fazla aynı tipte tanımlama yapılırken aralara konulur.

:=
:değişkende değer atamak için kullanılır.

{ $ } :compiler bildirilerinin belirtilmesi için.
Korumlı Pascal kelimeleri
(Reserved Word)
Absolute
And
Array
Begin
Case
Const
Constructor
Destructor
Div
Do
Down to
Else
End
External
File
For
Forward
Function
Goto
If
In
Inline
Interrupt
Label
Mod
Nil
Not
Object
Of
Or
Packed
Set
Shl
Shr
String
Then
To
Type
Unit
Until
Uses
Var
Virtual
While
With
Xor
Sayılar
Tam, gerçel, hexedecimal sayılardır. Hexedecimal sayıların önüne $
sembolü getirilir. On üzeri gösterim için E veya e harfi kullanılır.
Stringler
İki apostrof arasına tüm harf ve sembolleri yazabiliriz. Maksimim 255
karakterlik bilgi yazılabilir.
Program Akışı
Komutların yazım sırası ve satırlar takip edilerek program yürütülür. Komut
satırı bitimleri noktalı virgül (;) sembolü ile belirlenir. Birden fazla komut
satırını aralarına noktalı virgül yazarak tek satırda kullanabiliriz.
Atama
Bir bilgi hafızada değişken vasıtasıyla tutulur. Hafızadaki bu bilgilere
değişken ile ulaşırız. Atama işlemi için := sembolü kullanılır. := sembolünün
soluna değişken, sağ tarafına ise ifade yazılır. Burada kullanacağımız
değişkenin tipi ile ifadenin tipi uyumlu olmalıdır.
değişken := ifade;
DEĞİŞKEN TİPLERİ
Integer (Tamsayı) Tip
Tamsayılardır. Kullanım amaçlarına göre shortint,
integer, longint, byte, word şeklinde
ayrılmışlardır.
var
a, b: integer;
cevre: longint;
Tip
Sınırları
Hafızada
kapladığı
alan (byte)
shortint
-128-127
1
integer
-32768 - 32767
2
-2147483648 – 2147483647
4
0-255
0-65535
1
2
logint
byte (işaretsiz)
word
(işaretsiz)
Real(Gerçel) Tip
Gerçel sayılardır. Örneğin; 2.5674.
Kullanım amaçlarına göre real, single,
double, extended, comp şeklinde
ayrılmışlardır.
var
sayi1, sayi2, alan: real;
cap: single;
Tip
Sınırları
Hafızada
kapladığı alan
(byte)
Real
2.9x10-39-1.7x1038
6
Single
1.5x10-45..3.4x1038
4
Double
5.0x10-524-1.7x10308
8
Extended
3.4x10-4932-1.1x104932
10
comp
-263 +1-263
8
Boolean(Mantıksal) Tip
Değişken true(doğru) veya false(yanlış) değerini
alır. Karar verme ve döngü işlemlerinde kullanılır.
Değişkenin aldığı doğru veya yanlış değere göre program
farklı bir şekilde yürütülür.
var
sonuc, d1, d11: boolean;
Char Tip
ASCI karakterlerinden oluşur. Değişkene bir karakter
tutabilir. Karakter üretmek için chr fonksiyonu kullanılır.
Örneğin chr(#77).
var
karakter1, karakter2: char;
String Tip
Karakter dizisinden oluşur. En fazla 255 karakterlik olabilir. Değişik
sınırlar değişken tanımlanırken belirlenebilir.
var
ogrenci_adi: string[15];
ogrenci_adresi, aciklama: string[30];
Array Tip
Dizi tipidir. Birden fazla aynı tipteki bir kümeyi aynı değişken
kullanarak hafızaya yerleştirebiliriz. Köşeli parantez içerisine dizinin
boyutu yazılır. Çok büyük dataların okunmasında, bize komut
yazımında kolaylık sağlar.
var
ogrenci_adi, ogrenci_soyadı: array[1..50] of string[15];
vize1, vize2: array[1..50] of byte;
Buradaki örnekte 50 kişilik bir sınıftaki oğrencilerin bilgileri birlikte
tutulmuştur. vize1 dizi değişkeninde 50 tane 1.vize notu tutulabilir.
vize2[3] 3.öğrencinin 2.vize notudur.
Birden fazla boyut oluşturulabilir. Örneğin,
var
vize: array[1..2, 1..3] of byte;
Buradaki vize isimli değişken 2 boyutludur. 2X3=6
elemanlıdır. Bu aslında 2 satırlı, 3 sütunlu bir
matrisdir.
vize[1,1]
vize[1,2]
vize[1,3]
vize[2,1]
vize[2,2]
vize[2,3]
:
:
:
:
:
:
1.dersin
1.dersin
1.dersin
2.dersin
2.dersin
2.dersin
1.vize
2.vize
3.vize
1.vize
2.vize
3.vize
notu
notu
notu
notu
notu
notu
Record(Kayıt) Tip
Aynı küme içerisinde birlikte düşünülebilecek değişkenler topluluğudur. Topluluk
elemanları farklı tiplerden oluşabilir.
var
ogrenci_bilgi= record
no: byte;
adi,soyadi: string[15];
adresi: string[30];
end;
sinif1: ogrenci_bilgi;
Burada ogrenci_bilgi isimli topluluğun; no, adi, soyadi, adresi isimli 4 tane elamanı
vardır. sinif1 isimli değişken vasıtasıyla bu topluluk program içinde,
sinif.no=302010029;
readln(sinif.adi);
writeln(‘Soyadı:’, sinif1.soyadi);
şeklinde kullanılır.
Aşağıdaki örnek dizi şeklinde yazılmıştır;
type
var
ogrenci_bilgi= record
no: byte;
adi,soyadi: string[15];
adresi: string[30];
end;
sinif:array [1..3] of ogrenci_bilgi;
i:integer;
begin
for i:=1 to 3 do
readln(sinif[i].no);
writeln;
for i:=1 to 3 do
writeln(sinif[i].no);
readln
end.
var
Değişkenlerin tanımlandığı bölümdür.
var
değişken1, değişken2... :tip_adı;
Aralarına virgül konularak birden fazla değişken bir satırda tanımlanabilir.
var
a, sayi1, c: integer;
isim: string[15];
alan, cevre: real;
b: array[1..2, 1..3, 1..5] of integer;
Pascal ‘da büyük harf, küçük harf duyarlılığı yoktur.
const
Sabit değerlerin tanımlanması için kullanılır. Tanımladığımız değer
program boyunca aynı kalır. Örneğin pi, max, min vb. değerler.
Tanımlamada tip adı belirtilmeyebilir.
const
Sabit_ismi[:tip]=değişken;
const
pi:real=3.14;
max=999;
il:string[6]=’ANKARA’;
vize: array[1..2,1..3] of =((75,80,90),(55,100,80));
type
Programcı kendi isteğine göre özel veri tipi oluşturabilir.
type
tip_ismi = tip;
Buradaki tip pascal tipi veya daha önce programcı tarafından
tanımlanmış bir tip olabilir. Örneğin
type
gercel: real;
tamsayi: integer;
sayilar: 0..50;
giris_tipi: array[1..3, 1..50] of integer;
label
Etiket tanımlanır. Goto komutu ile belirlenen etikete gidilebilir.
Yapısal programlamada kullanılma ihtiyacı duyulmaz.
label
etiket adı1, etiket adı2,.....;
Örneğin,
label
giris, liste, 442;
OPERATÖRLER
Aritmetik Operatörler: Aritmetik işlemleri yapabiliriz.
Operatör
İşlem
Tipi
Sonuç tipi
+
*
/
div
mod
Toplama
Çıkarma
Çarpma
Bölme
Tamsayı bölme
Kalan
İnteger
Real
İnteger
Real
İnteger
Real
İnteger
Real
İnteger
Integer
İnteger
Real
İnteger
Real
İnteger
Real
Real
Real
Integer
Integer
Örnekler
Div Operatörü
Mod Operatörü
16 div 3 = 5
18 div 3 = 6
20 div 5 = 4
2 div 1 = 2
1 mod 4 = 1
10 mod 10 = 0
6 mod 5 = 1
7 mod 5 = 2
3 mod 0 = tanımsız
Mantıksal Operatörler:
Mantıksal işlemler yapmak için bu operatörlerden faydalanılır.
Operatör
Sonucu
And (ve)
Or (veya)
Not (değil)
Xor (veya değil)
Boolean
Boolean
Boolean
Boolean
Karşılaştırma Operatörleri:
Karşılaştırma işlemlerinde kullanılan kullanılan operatörlerinin sonuçları boolean ‘dır.
=
:eşit
<
:küçük
>
:büyük
<> :farklı
<= :küçük eşit
>= :büyük eşit
Pascal ‘da formül yazımı: Formül yazımında ilk olarak aritmetik operatörlerin işlem
önceliğine dikkat etmemiz gerekir.
İşlem öncelik sıralaması: parantez, üs alma, çarpma ve bölme, toplama ve çıkarma dır.
Örneğin, denkleminin kod satırı ;
y:=(a+b)/c
şeklindedir. İşlem önceliğinden dolayı parantez kullanmamız mecburidir. Bu denklemi
y:=a+b/c
şeklinde koda dönüştürseydik karşılığı bizim denklemimizden farklı denklem olacaktı.
Örnekler;
y:=2*x/3
y:=(a+b)/(c+d)
y:=a+b/c+d
BÖLÜM 2
PASCAL KOMUTLARI
Input/Output (Giriş/Çıkış) Komutları
write/writeln
read/readln
Karşılaştırma Komutları
if – then – else
case – of
Döngü Komutları
for – do
repeat - until
while - do
continue
break
EKRAN KOMUTLARI
PASCAL KOMUTLARI
Input/Output (Giriş/Çıkış) Komutları
Data girişlerinin yapılabilmesi, sonuçların ekran veya printer ‘a yazılması için
kullanılırlar.
write/writeln
Ekrana sabit, değişken veya işlem şeklindeki ifadelerin sonuçlarını yazar.
Writeln kullanılırsa yazma işlemi sonucunda cursor bir satır atlar.
Yazdırılmak istenilen ifade parantez içerisinde yazılır, birden fazla ise virgül
ile ayrılır. Bir string yazdırılmak isteniyorsa, iki tırnak arasına yazılır.
Örneğin: write(‘istanbul’); ---writeln(sayi1);
Örnek Program:
program ilk(input, output);
Uses crt;
begin
writeln(‘pascal öğreniyorum.’);
end.
Çıktısı,
pascal öğreniyorum.
İlk Programımızın çıktısı aşağıdaki gibi olacaktır.
Çıktıdaki her kelimeyi alt alta yazdırmak istersek, herbir kelime için writeln komutunu
kullanmamız gerekecektir
program 2(input, output);
Ses crt;
begin
writeln(‘Pascal’);
writeln(‘Öğreniyorum’);
end.
Çıktısı,
Pascal
Öğreniyorum
Değişken kullanarak bir örnek yazalım,
program 3(input,output);
Ses crt;
var
a,b,c: integer;
begin
a:=5; b:=10;
c:=a+b;
writeln(‘c=’,c);
writeln(‘c=’,a+b);
end.
Çıktısı,
c=15
c=15
Her iki writeln aynı sonucu verecektir, writeln komutu içerisinde işlem
yapabiliriz.
write/writeln sonuçlarını ekrana formatlı yazdırabiliriz.
Toplam hane sayısını ve virgülden sonra kaç karakter kullanılacak
belirtebiliriz.
program ekran4(input,output);
var
a:integer;
b:real;
begin
a:=786; b=786.1234;
writeln(a:10); {Bu yazım formatına göre yazdırılmak
istenilen M değeri n karakterlik alanda sağa dayalı olarak
yazılır. M değerini oluşturan dijit veya karakterin uzunluğu n
sayısından küçük ise, aradaki fark kadar sol tarafta boşluk
bırakılır. M değerinin uzunluğu n sayısına eşit veya büyük ise
yazdırma işlemi format belirtilmemiş gibi gerçekleştirilir. }
writeln(b:10:2); {Bu yazım formatı real sayılar üzerinde çalışmaktadır. Bu yazım
formatıyla reel sayılar üssüz notasyonda yazdırılır. Bunu sağlamak için sadece
real sayılar için geçerli olan 2. yazım formatı kullanılır. Yazdırılacak M real değeri
n karakterlik alanda sağa dayalı olarak üssüz yazdırılır, k ise n karakterin
sonundaki kesirli kısmı göstermektedir. Örneğin; A değeri, A:7:2 şeklinde
yazdırılmak istenirse; program real sayı için 7 karakterlik yer ayırır. Bu alanın
son iki hanesi ondalıklı kısım için sondan 3. hanesi ise desimal nokta için
kullanılır. Sayının tamsayı kısmı ayrılan alanın uzunluğundan küçük ise, aradaki
fark kadar sol tarafta boşluk bırakılır. Yazdırılacak sayının tam sayı kısmı bu
alana sığmıyor ise, tamsayı için ayrılan alanın uzunluğu yazdırılan sayının
tamsayı alan uzunluğuna eşit büyüklükte kabul edilir. Kesirli kısmı ayrılan
alandan daha küçük ise aradaki fark kadar sağ tarafa 0 dijiti ilave edilir. Kesirli
kısım alana sığmıyorsa yuvarlatılarak yazılır. Yazım sırasında kesirli alanın
yazılması istenmiyorsa k sayısının “0” yazılması gerekir. K sayısının sıfır olması
desimal noktanın yok olmasını sağlar. }
end.
Çıktısı,
bbbbbbb786
bbbb786.12
read/readln
Klavyeden veya dosyadan bilgi okumak amacıyla kullanırız.
Klavyeden kullanımı;
read(değişken1, değişken2, ...);
Parantez içerisine değişken ismi yazılır, birden fazla ise aralarına virgül konulur. Readln
kullanılırda girişden sora cursor bir satır atlar. Bir readln fonksiyonu ile birden fazla
değişken girişi yapıldıysa, klavyeden aralarına boşluk verilerek veya her değişken
değerinden sonra enter ‘a basılarak giriş yapılır.
Aşağıdaki örnekte klavyeden girilen iki tamsayının toplamı bulunarak ekrana basılmıştır.
program giris1(input,output);
var
a,b,c: integer;
begin
write(‘a değerini girin:’);readln(a);
{ Cursor mesajın hemen bitimine konumlanması için burada writeln yerine write kullanılmıştır.
}
write(‘b değerini girin:’);readln(b);
c:=a+b;
writeln(‘c=’,c);
end.
Çıktısı,
a değerini girin:5
b değerini girin:10
c=15
Klavyeden 5 ve 10 değerleri girildiği kabul edilmiştir.
Aynı programı bir tane readln kullanarak
yazabiliriz.
program giris11(input,output);
var
a,b: integer;
begin
write('a ve b değerlerini girin:');readln(a,b);
writeln('c=',a+b);
readln
end.
Çıktısı;
a ve b değerlerini girin:5 10
c=15
Aşağıdaki örnekte Bir kişinin isim ve il bilgileri girildiğinde, ekrana bir cümle şeklinde yazılmaktadır.
program giris2(input,output);
var
isim:string[15];
il:string[10];
begin
write(‘İsminizi giriniz:’);readln(isim);
write(‘Yaşadığınız ili giriniz:’);readln(il);
writeln(isim,’ ‘,il,‘ da yaşamaktadır.’);
end.
Çıktısı,
İsminizi giriniz: Beril
Yaşadığınız ili giriniz: İstanbul
Beril İstanbul da yaşamaktadır.
Klavyeden Beril ve İstanbul değerleri girildiği kabul edilmiştir.
Aşağıdaki program klavyeden girilen 3 sayının ortalamasını bulmaktadır.
program ornek(input,output);
var
a,b,c:integer;
ort:real;
begin
write('Ortalaması alınacak 3 sayıyı giriniz:');
readln(a,b,c);
ort:=(a+b+c)/3;
writeln('ortalama:',ort:10:3);
readln
end.
Çıktısı;
Ortalaması alınacak 3 sayıyı giriniz:9 14 23
ortalama: 15.333
Karşılaştırma Komutları
Karşılaştırma komutları, programın akışı verilen
koşul veya koşullara göre değiştirilebilir.
Karşılaştırma sonucuna göre istenilen satırlar
çalıştırılabilir. Pascal da 2 tip karşılaştırma komutu
kullanılır. «if-then-else» ve «case-of».
1.) if – then – else
Yazılan koşula göre programda farklı
bloklar yapılır. Birden fazla koşul verilebilir
ve tüm koşullar denendikten sonra aksi
taktirde yapılması istenilen blok varsa else
komutundan sonra yazılır.
if Koşul then Komut/Komutlar;
Koşul doğru ise then komutundan sonraki
Komut veya Komutlar yürütülür.
if Koşul then Komut/Komutlar;
else kullanılırsa,
if Koşul then Komut/Komutlar
else Komut/Komutlar;
Koşul doğru ise then
komutundan sonraki
Komut veya Komutlar
yürütülür, aksi
takdirde else
komutundan sonraki
Komut veya Komutlar
yürütülür.
Birden fazla komut satırı kullanıldığında, bu satırlar begin – end arasında
yazılmalıdır.
if Koşul then
begin
……..
…….
end;
else
begin
……..
…….
end;
Örnegin klavyeden girilen iki sayıdan büyük
olanını bularak ekrana basan programı
yazalım.
program kucbuy;
Uses crt;
var
a,b:integer;
Begin
Clrscr;
writeln(‘İki sayı giriniz: ’); readln(a,b);
if a>b then writeln(a,’ büyük’)
else writeln(b,’büyük’);
Readln; end.
Örneğin klavyeden fiyatı ve miktarı girildiğinde
ödeme turarını aşağıdaki tabloya göre bulan
programı yazalım,
Miktar(X TL)
İndirim Yüzdesi(%)
X<10
Yok
10<=x<20
%20
20<=x<30
%30
X>=30
%50
program hesapla;
Uses crt;
var
f,od,m:real;
begin
Clrscr; Write('Fiyatı:');readln(f);write('Miktar:');readln(m);
if m<10 then od:=f*m
else if(m>=10) and (m<20) then
Begin
Od:=(f*m)-(f*m)*0.20; write (‘Tenzilat
tutarı:’,f*m*0.2:20:5);
End;
else if(m>=20) and (m<30) then od:=(f*m)(f*m)*0.30
else if m>=30 then od:=(f*m)-(f*m)*0.50;
writeln('Ödeme Tutarı:',od:10:3);
readln;
end.
PROBLEMLER
1. Bir süpermarket aşağıdaki şekilde alışveriş tutarına göre
indirim uygulamaktadır. Klavyeden alışveriş tutarı
girildiğinde ödeme miktarını bulan programı yazınız.
Alışveriş Tutarı(Xmilyon TL)
İndirim(%)
50 altında
YOK
50(dahil)-100
5
100(dahil)-200
15
200 (dahil)ve üzeri
20
2. Klavyeden girilen x değeri için aşağıdaki fonksiyonun
sonucunu bulan programı yazınız.
x2
x≤0
f(x)=
(x+1)2
0<x<15
x
x≥15
3. Klavyeden 2 sayı girilmektedir, büyük olanın karesini, küçük
olanın küpünü bulunuz.
2. case – of : Case-of deyimi bazi durumlarda if'e göre çok daha kisa
kod ile ayni isi yapmanizi saglar. Ayrica kullanimi da çok basittir. Mesela
bir degiskenimiz var ve bu degiskenin aldigi 10 tane degisik deger için
10 ayri islem yaptirmak istiyoruz. Bunu if ile yapmak hem çok uzun olur
hem de hata yapma sansimiz yüksek olur. Ama Case of kullanirsak çok
daha anlasilir ve kisa yapabiliriz. Case'in genel kullanimi söyledir:







Case degisken of
deger 1 : islem 1;
deger 2 : islem 2;
deger 3 : islem 3;
...
...
End;
Çok miktarda seçenek varsa case – of tercih edilir. İfadenin alacağı
değere göre istenilen satır/satırlar yürütülür.
Koşul araştırılan değişkenin değerlerine göre program akışının
değiştirilmesini sağlar. Değişkenin değeri ilk olarak hangi
ifadeye uyarsa yalnızca o ifadenin karşısındaki komut veya
komutlar işleme alınacak diğerleri işlenmeyecektir. Eğer
değişkenin değeri tanımlı olan ifadelerin hiç birisine
uymuyorsa ELSE ifadesini karşısındaki komutlar işleme alınır.
ELSE bloğunu kullanmak zorunlu değildir.
CASE secenek OF
{ secenek adındaki değişken değerlendiriliyor }
1:secim:=1;
{ eğer secenek değişkeninin değeri 1 ise secim değişkeninin
değeri de 1 oluyor }
2:secim:=2;
{ eğer secenek değişkeninin değeri 2 ise bir üsteki satır
değerlendirilmiyor ve secimin değeri 2 oluyor }
ELSE writeln(‘Hatalı Secenek’);
{ eğer secenek değişkenin değeri 1 ve 2 den farklı ise ekrana
mesaj yazdırıyoruz }
End;{ case of komut bloğunu end ile bitiriyoruz }
Tabii yine ifade (ve Pascal'in heryerinde) oldugu gibi birden çok islem yaptiracaksak
begin ile and arasina aliriz. Sunun gibi:
Case degisken of
deger 1 : begin
islemler...
end;
deger 2 : begin
islemler...
end;
...
...
end;
Ayrica birden çok deger için bir islem yapilacaksa söyle kullanilir:
Case degisken of
deger 1, deger 2, deger 3 : islem 1;
deger 4 : islem 2;
deger 5, deger 6 : islem 3;
...
...
End;
Case komutunu genelde bir degiskenin birden çok sonucuna göre farkli islemler
yaptirmak istediginizde kullanabilirsiniz. Dikkat etmeniz gereken case degisken of
kalibinda belirttiginiz degisken ile alabilecegi degerlerin ayni tipte olmasidir. Yani
degisken sayi tipindeyse herhalde degeri 'D' olamaz! Ya da char tipindeyse degeri
5 olamaz, '5' olabilir. Ikisinin arasindaki farki anlatmistim. Önceki sayi, sonraki
karakterdir.
ÖRNEK 1
1 ile 5 arasındaki sayıların yazımlarını ekrana basan program.
program yazicevir;
Uses crt;
var
sayi: integer;
Begin
Clrscr;
write(‘1 ile 5 arasında sayı gir:’);readln(sayi);
case sayi of
1:writeln(‘bir’);
2:writeln(‘iki’);
3:writeln(‘üç’);
4:writeln(‘dört’);
5:writeln(‘beş’);
else writeln(‘1 ile 5 arasında girmediniz.’); End;
Readln; end.
ÖRNEK 2. Ekrandan girilen iki sayının taoplam, fark, çarpım ve bölümlerini bulan
basit bir hesap makinası programı yapalım.
program hesapmakinesi;
uses crt;
var
sayi1,sayi2: integer;
islem:char;
Begin
clrscr;
write(‘İşlem yapacağınız sayıları giriniz:’);readln(sayi1,sayi2);
write(‘Hangi işlemi yapacaksınız [/,*,-,+] :’);readln(islem);
case islem of
‘/’:writeln(‘Bölme sonucu:’,sayi1/sayi2);
‘*’:writeln(‘Çarpma sonucu:’,sayi1*sayi2);
‘-’:writeln(‘Çıkarma sonucu:’,sayi1-sayi2);
‘+’:writeln(‘Toplama sonucu:’,sayi1+sayi2);
else writeln(‘yanlış giriş’);
end;
readln;
end.

program deneme;
uses crt;
var
ognotu : word;
harfnotu :char;
begin
write('Öğrencinin notunu giriniz>');readln(ognotu);
case ognotu of
0..44 :harfnotu:='E';
45..54 :harfnotu:='D';
55..69 :harfnotu:='C';
70..84 :harfnotu:='B';
85..100 :harfnotu:='A';
else
writeln('Hatalı giriş yaptınız !');
end;
writeln('Öğrencinin harf notu=‘ ,harfnotu);
readln;
end.
Program ;
Uses crt;
Var
Ch: char;
begin
case Ch of
'A'..'Z', 'a'..'z' : WriteLn('Harf');
'0'..'9' : WriteLn('Rakam');
'+', '-', '*', '/' : WriteLn('Operator');
else
WriteLn('Özel karakter');
End;
Readln;
End.
uses crt;
Const
I : integer = 500;
Var
Sayi : integer;
Begin
Write(‘Bir sayı girin : ‘);readln(Sayi);
If (sayi > 0) and (sayi < 128) then
I := I+1;
If (sayi >= 128) and (sayi < 256) then
I := I+10;
If (sayi >= 256) then
I := I+100;
If (sayi < 0) and (sayi > -127) then
I := I-1;
If (sayi <= -127) and (sayi > -255) then
I := I-10;
If (sayi =< -255) then
I := I-100;
writeln('Islem sonunda I değeri =',I); Readln;
End.

Const
I : integer = 500;
Var
Sayi : integer;
Begin
Write('Bir sayi girin : ');
readln(Sayi);
case Sayi of
0..128: I:= I + 1;
128..256: I := I + 10 ;
256..32767 : I := I + 100;
-127..0 : I := I - 1;
-255..-128 : I := I - 10;
-32768..-256 : I := I - 100;
end;
writeln('Islem sonunda I değeri =',I);
Readln;
end.
uses crt;
var
ads:string[20];
not1:integer;
begin
clrscr;
write(' AD Soyad GİRİNİz '); readln(ads);
write(' Not GİRİNİz '); readln(not1);
case not1 of
85..100: not1:='A';
70..84: not1:= 'B';
55..69: not1:= 'C‘;
45..54: not1:= 'D';
0..44: not1:= 'E';
else
writeln('0 ile 100 arasi not giriniz!');
end;
Writeln(ads,’isimli öğrencinin harf notu,’not1);
readln;
end.
Klavyeden girilen notu beşlik sisteme çeviren program.
uses crt;
var
sayi:integer;
begin
write(‘notunuzu girin:’);readln(sayi);
case sayi of
0..24:writeln(‘0 ile kaldınız’);
25..44:writeln(‘1 ile kaldınız’);
45..54:writeln(‘2 ile geçtiniz’);
55..69:writeln(‘3 ile geçtiniz’);
70..84:writeln(‘4 ile geçtiniz’);
85..100:writeln(‘5 ile geçtiniz’);
else writeln(‘notunuzu 0-100 arasında giriniz’);
end;
readln;
end.
Program FS;
Uses Crt;
var
sayi:longint;
begin clrscr;
write('Bir Sayi Giriniz: ');readln(sayi);
case sayi of
0..9: writeln('Bu sayi 1 basamaklidir');
10..99: writeln('Bu sayi 2 basamaklidir');
100..999: writeln('Bu sayi 3 basamaklidir');
else writeln('Bu sayi 3''den çok basamaklidir');
end;{Case'in sonu}
end.
Burda case ile birlikte else'in de kullanimini gördük. Eger case ile belirttigimiz hiçbir
sart dogru degilse bir islem yapmasini isteyebiliriz. Bu durumda bütün sartlarin
sonuna else.. koyariz. Yine case kullanirken iki nokta üst üste (:) isaretinin soluna
araya virgül koyarak birden çok sart da koyabilirsiniz.

var
sayi:intger;
begin
write('1 ile 10 arasında bir sayı girin');readln(sayi);
Case sayi Of
1:write('I');
2:write('II');
3:write('III');
4:write('IV');
5:write('V');
6:write('VI');
7:write('VII');
8:write('VIII');
9:write(IX');
10:write('X');
Else write('Girdiğiniz sayı 1 ile 10 arasında değil')
end;
end.
Bu örnekte Case - Of komutu kullanılarak, klavyeden girilen 1 ile 10
rasında sayıların romarakamı karşılığı ekrana yazdırılıyor.
Kullanicidan bir sayi istesin ve ekranda bir menü olsun. Seçime göre belirli
islemler yapilsin. Programi yazmaya baslayalim:
Program SF;
Uses Crt;
Label
en_bas;
var
sayi:longint;
secim:char;
cikis:boolean;
begin clrscr;
cikis:=false;
write('1 ile 1000 arasi bir sayi giriniz: ');readln(sayi);
en_bas:
clrscr;
gotoxy(30,8);write('::: Menü :::');
gotoxy(30,10);write('[1] Sayinin Karesini Hesapla ');
gotoxy(30,11);write('[2] Sayinin Karekökünü Hesapla ');
gotoxy(30,12);write('[3] Sayinin Kübünü Hesapla ');
gotoxy(30,11);write('[4] Sayinin Logaritmasını Hesapla');
gotoxy(30,11);write('[5] Sayinin Üstel Fonksiyonunu Hesapla');
gotoxy(30,13);write('[6] Programdan çik');
gotoxy(20,18);write('Seçiminizin önündeki sayiya basiniz');
gotoxy(30,15);write('Seçiminiz: ');
case secim of
'1': begin
clrscr;
gotoxy(30,10); write(sayi,'''nin Karesi= ',sayi*sayi); secim:=readkey;
end;
'2': begin
clrscr;
gotoxy(30,10); write(sayi,'nin Karekökü= ',sqrt(sayi):10:4); secim:=readkey;
end;
'3': begin
clrscr;
gotoxy(30,10); write(sayi,'nin Kübü=',sayi*sayi*sayi); secim:=readkey;
end;
‘4': begin
clrscr;
gotoxy(30,10); write(sayi,'nin Logaritması=',Ln(sayi)); secim:=readkey;
end;
‘5': begin
clrscr;
gotoxy(30,10); write(sayi,'nin Üstel Fonksiyonu=',Exp(sayi)); secim:=readkey;
end;
‘6': cikis:=true;
end; {Case'in sonu}
if (not cikis) then goto en_bas;
clrscr;
writeln('Güle Güle... writen by ????'); end.
Gördügünüz gibi secim:=readkey; komutuyla bir tusa basilmasini bekliyor ve
case secim of ile de bu tusun '1', '2', '3' veya '4' olmasi durumunda yapilacak
islemler belirtiliyor. '4' olmasi durumunda cikis:=true ile cikis isimli boolean
degiseknin degeri true oluyor. if (not cikis) then goto en_bas; ile de eger cikis'in
degeri false ise (ki '4'e basilmadikça hep false olur, çünkü programin basinda
false yaptik) en_nas; labelinin oldugu yere gidiyor. Dolayisiyla da true olunca
programdan çikilmis oluyor. Artik programlarimizda menü yapmaya da bir örnek
vermis olduk.
PROBLEMLER
1. Klavyeden bir dikdörtgenler prizmasının kenar ölçüleri
girilmektedir. Bir menü oluşturarak isteğe göre alan
ve hacim değerlerini bulun.
2. Aşağıdaki menüyü oluşturarak istenilen geometrik
şeklin ölçülerinin girişini isteyerek alan ve çevrelerini
bulan programı yazınız.
Menü
Daire
Dikdörtgen
Kare
Döngü Komutları
İstenildiği kadar yapılması istenen tekrarlı işlemlerde veya belli koşullar
sağlanıncaya kadar tekrar edilmesi gereken işlemlerde döngü komutları
kullanılır.
for – do
İstenildiği kadar yapılması istenen tekrarlı işlemlerde kullanılır. Yani kaç
defa tekrarlanacağı bellidir. Bu başlangıç ve bitiş değerleriyle belirlenir.
for değişken:=başlangış_değeri to bitiş_değeri do
Komut/Komutlar;
Döngüde birden fazla komut satırı varsa begin – end arasına yazılır.
Başlangıç değeri, birtiş değerinden büyükse do yerine downto kullanılır.
Ekrana 10 defa AKU yazdıralım.
program yaz(input,output);
var
i:integer;
begin
for i:=1 to 10 do
writeln(‘AKU’);
end.
Klavyeden girilen 3 sayıdan en büyük olanını bulan programı yazalım.
program ornek(input,output);
var
sayi,enbuyuk,i:integer;
begin
for i:=1 to 3 do
begin
readln(sayi);
if (i=1) then enbuyuk:=sayi;
if (sayi>enbuyuk) then enbuyuk:=sayi;
end;
writeln('Enbuyuk sayı:',enbuyuk);
readln
end.
Çıktısı;
10
20
5
Enbuyuk sayı:20
2 ‘den 100 ‘e kadar çift sayıları ekrana bastıralım.
Aşağıdaki şekilde for do döngüsü içerisinde artım yapamayız. C ‘de döngü
değişkenine müdahale imkanı vardır.
program CiftHata(input,output);
var
i,sayi:integer;
begin
for i:=2 to 100 do
begin
writeln(i);
i:=i+2; //Hata
end;
end.
program cift(input,output);
var
i,sayi:integer;
begin
for i:=1 to 50 do
begin
sayi:=i*2;
writeln(sayi);
end;
readln
end.
1 ‘den 99 ‘a kadar tek sayıların toplamını ve ortalamasını bulan program.
program teksaytoport(input,output);
var
i,j,toplam,say:integer;
ort:real;
begin
toplam:=1;say:=0;
for i:=1 to 97 do
begin
if (i mod 2)=0 then continue; j:=i+2;
say:=say+1;
toplam:=toplam+j;
end;
ort:=toplam/say;
writeln(‘toplamı:’,toplam);
writeln(‘ortalaması:’,ort);
readln
end.
İç içe istenildiği kadar for döngüsü oluşturulabilir. Aşağıdaki programı inceleyelim.
program icicefor(input,output);
var
i,j:integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
writeln(i,j);
end.
Programın çıktısı,
11
12
13
21
22
23
31
32
33
İncelersek; Dıştaki döngü bir kez döndüğünde içerdeki döngüyütamamlamaktadır, 3
kez dönmektedir. 3X3 ‘lük bir matrisin elaman indisleri oluşmuştur.





























ÖRNEKLER
1. 1 den 10 a kadar sayıların karelerini ve küplerini bulunuz.
for i:=1 to 10 do
Writeln(i, i*i, i*i*i);
Çıktısı;
1
1
1
2
4
8
3
9
27
4
16
64
5
25
125
6
36
216
7
49
343
8
64
512
9
81
729
10
100
1000
2. Aşağıdaki şekli oluşturunuz.
**
*
*
*
*
*
*
*
*
for j:=1 to 5 do
writeln(‘*’: 21-j, ‘*’: 2*j-1);
3. (1+R)N denklemini yazınız.
Temel:=1;
For j:=1 to N do
Temel:=Temel*(1+R);
4. 10 dan 5 e kadar sayıları yazdırınız.
For sayi:=10 downto 5 do
Writeln(‘sayı=’, sayi);
PROBLEMLER
1.Aşağıdaki şekilleri oluşturunuz.
a)
b)
c)
***
******
*
***
*****
* *
***
****
*
*
***
***
*
*
***
*
**********
2. Aşağıdaki formülü kullanarak FarenTemp ‘in 50 den 100 e kadar
değerlerine karşılık gelen, CelsTemp ‘in değerlerini bulunuz.
CelsTemp=(5/9)*(FarenTemp-32)
3. Klavyeden 50 tane tam sayı girilmektedir. Bu sayıların pozitif olanlarının
toplamını , negatif olanlarının sayısını bulan programı yazınız.
4. 10! İn sonucunu bulunuz.
5. Klavyeden girilen pozitif tamsayının faktöryelini bulunuz.
6. Aşağıdaki denklemlerin sonuclarını bulunuz.
a)
b)
2
20
10
2
 (1  m )  ?
m 1
(1  n)
?

n!
n 1
repeat - until
Until ifadesinden sonra yazılan koşul
yanlış olduğu sürece döngü devam
eder. Yani koşul sağlanıncaya kadar
döngü devam eder. Önemli bir nokta
ise, döngü ilk çevrimi koşulsuz olarak
mutlaka gerçekleştirir.
repeat
Komut/Komutlar;
until Koşul;
KoşulKomut/
KomutlarDoğruYanlış
ÖRNEKLER
1 ‘den 99 ‘a kadar tek sayıların toplamını ve ortalamasını bulan program.
program teksay_top_ort;
Uses crt;
var
i,toplam,say:integer;
ort:real;
begin
toplam:=0; say:=0;i:=1;
repeat
toplam:=toplam+i;
i:=i+2;
say:=say+1;
until (i>99);
ort:=toplam/say;
writeln('toplamı:',toplam);
writeln('ortalaması:',ort:10:3);
Readln;
end.
Klavyeden girilen 10 dairenin alanlarını bularak ekrana basan program.
program daire_alan_1;
Uses crt;
var
i,r,toplam,say:integer;
alan:real;
Begin
Clrscr;
toplam:=0; say:=0;i:=0;
repeat
write(i+1,'nci dairenin yarıçapını gir:'); readln(r);
alan:=3.14*r*r;
writeln(i+1,'nci dairenin alanı:',alan:10:3);
i:=i+1;
until (i=10);
Readln;
end.
Çıktısı; 1nci dairenin yarıçapını gir:2 , 1nci dairenin alanı: 12.560, 2nci
dairenin yarıçapını gir:3 , 2nci dairenin alanı: 28.260, 3nci dairenin
yarıçapını gir: …
Klavyeden girilen 3 sayının ortalamasını bulan programı repeat until döngüsü ile
yazınız.
program;
Uses crt;
var
a,i,top:integer;
ort:real;
Begin
Clrscr;
writeln('Girilen 3 sayının ortalamasını hesaplar.');
readln;
i:=0;top:=0;
repeat
write(i+1,'.sayıyı gir:');readln(a);
top:=top+a;
i:=i+1;
until(i>2);
ort:=top/3;
writeln('ortalama:',ort:10:3);
readln;
end.
1.sayıyı gir:9, 2.sayıyı gir:14, 3.sayıyı gir:23, ortalama:
15.333
PROBLEMLER

1 den 15 e kadar tek sayıların küplerini bulan programı
yazınız.

100 den 2 ye kadar çift sayıları ekrana basan program.

Klavyeden girilen bir ismi 10 defa ekrana basan programı
yazınız.

A aracının hızı 50 km/saaat, B aracının hızı ise 180
km/saat ‘dir. A aracı hızını saniyede %2 arttırmaktadıri B
aracı ise hızını saniyede %3 azaltmaktadır. Buna göre A
aracının hızı kaç saniye sonra B aracının hızından fazla
olur.
while - do
Koşul doğru olduğu
sürece döngü devam
eder. Koşul döngü
başlamadan sınanır,
doğru ise döngü başlar,
yanlış ise döngüye
girmez. Koşul yanlış
oluncaya kadar döngü
devam eder. Birden fazla
komut satırı var ise begin
– end bloğu arasına
yazılır.
while Koşul do
Komut/Komutlar
ÖRNEKLER
Klavyeden girilen 10 dairenin alanlarını bularak ekrana basan
programı while do döngüsü kullanarak tekrar yazalım.
program daire_alan_2;
var
i,r:integer;
alan:real;
begin
i:=0;
while (i<10) do
begin
write(i+1,'nci dairenin yarıçapını gir:'); readln(r);
alan:=3.14*r*r;
writeln(i+1,'nci dairenin alanı:',alan:10:3);
i:=i+1;
end;
end.
Çıktısı; 1nci dairenin yarıçapını gir:2 , 1nci dairenin alanı: 12.560, 2nci dairenin
yarıçapını gir:3, 2nci dairenin alanı: 28.260, 3nci dairenin yarıçapını gir: _.
Verilen bir x sayısının y. Kuvvetini bulan programı yazınız.
Uses crt;
Var
x,y,i:integer;
f:real;
Begin
Clrscr;
f:=1;i.=1
write('Ussu alınacak sayı:');readln(x);
Write('Kuvvet');readln(y);
while(i<=y) do
Begin
i:=i+1;
f:=f*x;
End;
writeln (f:10:3);
Readln; End.
Klavyeden girilen 3 sayının ortalamasını while do döngüsü ile bulan program
sayiort(input,output);
var
a,i,top:integer;
ort:real;
begin
writeln('Girilen 3 sayının ortalamasını hesaplar.');
writeln;
i:=0;
while (i<3) do
begin
i:=i+1;
write(i,'.sayıyı gir:');readln(a);
top:=top+a;
end;
ort:=top/3;
writeln('ortalama:',ort:10:3);
readln
end.
Çıktısı;
Girilen 3 sayının ortalamasını hesaplar.
1.sayıyı gir:9
2.sayıyı gir:14
3.sayıyı gir:23
ortalama: 15.333
PROBLEMLER

Klavyeden girilen password doğru ise,
dairenin yarıçap değerinin girişine izin
vererek çevresini hesaplayan programı
yazınız. 3 hatalı girişte program sonlansın.

1 ‘den 99 ‘a kadar tek sayıların ortalamasını
bulan program.
Continue, break
Döngü içerisinde continue komutu işlem görürse, döngü bir sonraki
çevrime başlar. Yani continue komutundan sonraki satırlar işlemez.
Döngü içerisinde break komutu işlem görürse döngü sonlandırılır.
Döngü kırılmış olur.
Örneğin 1 ‘den 10 ‘a kadar sayıları yazdıralım. Fakat 5 ‘i yazdırmayalım.
program yaz1(input,output);
var
i :integer;
begin
for i:=1 to 10 do
begin
if i=5 then continue;
write(i);
end;
end.
Çıktısı,
1234678910
Yukarıdaki programda break komutunu kullanırsak,
program yaz2(input,output);
var
i :integer;
begin
for i:=1 to 10 do
begin
if i=5 then break;
write(i);
end;
end.
PROBLEMLER
1. Klavyeden girilen sayıların toplamını bulan program, -1
girildiğinde sonucu ekrana yazsın.
2. Klavyeden girilen pozitif sayıların ortalamasını ve sayısını
bulan program, negatif girildiğinde tekrar giriş istesin, 0
girildiğinde sonucu versin.
Ekran Komutları:
CLRSCR: Ekranın temizlenmesi için kullanılır. Eğer programda window
tanımlanmışsa windowun içini tmizler.clrscr;
GOTOXY: İşlemin yapılması istenilen koordinatları belirtmek için kullanılır.
GotoXY (Sütun,Satır);
Matematiksel Fonksiyonlar:
----------------------------------------Exp(x)
Ln(x)
Sin(x)
Cos(x)
Arctan(x)
pi
Sqr(x)
Sqrt(x)
Mutlak değer
Abs
Mod
Mod
Yuvarlama
Round
Rasgele sayı
Random(x+1)
CLREOL: Kursörün bulunduğu noktadan satır sonuna kadar olan
kısımı silmek için kullanılır.ClrEOL;WHEREX: Kursörün bulunduğu
noktanın x cordinatını öğrenmek için kullanılır.x:=WhereX 'x daha
önce tanımlanmış integer bir değişkendir.WHEREY: Kursörün
bulunduğu noktanın y cordinatını öğrenmek için
kullanılır.y:=WhereY 'y daha önce tanımlanmış integer bir
değişkendir.
Renk Komutları:
TEXTCOLOR: Ekrana yazılan yazının rengini belirtmek için kullanılır.TextColor
(Renk); 'Renk 0-16 arasındabir tamsayı olamalıdır.
TEXTBACKGROUND: Ekrana yazılan yazının zemin rengini belirlemek için
kullanılır.TextBackGround(Renk); 'Renk 0-16 arasındabir tamsayı olamalıdır.Renk
Değer:
Renk:0Siyah,1Mavi,2Yeşil,3Turquaz,4Kırmızı,5Pembe,6Kahverengi,7Parlak Gri,8Koyu
Gri,9Açık Mavi,10AçıkYeşil,11Açık Turquaz,12Açık Kırmızı,13Açık
Pembe,14Sarı,15Beyaz.
Ses Komutları
SOUND: Speakerdan verilen frekansta ses çıkratmak için kullanılır.Sound(frekans);
'frekans herhengi bir sayı değeridir.
NOSOUND: Sound komutu ile oluşturulan ses devamlı olarak çalar. Çalmayı
durudurmak için NoSound komutu kullanılır.NoSound;
Diğer Komutlar:
READKEY: Basılan tuş değerini okumak için kullanılır.Bu komut ile char veri tipinde
bir değer elde edilir.tus:=ReadKey; 'tus değişkeni daha önce tanımmlanmış
olmalıdır.KEYPRESSED: Bir tuşa basılıp basılmadığını algılamak için kullanılır.
Sonuç bir bolean değişkendir.if KeyPressed then....DELAY: Programın akışını
belirtilen süre kadar durdurmak için kullanılır.Delay(Süre); 'Sure milisaniye cinsinden
bir değerdir.TextMode:
TEXTMODE: Ekranın satır ve sütün sayısını ayarlamak için
kullanılır.TextMode(Mod);TextMode Modları:
Değer:
Mod:
BW40 veya 040 X 25 B / W on CGACO40 veya 140 X 25 Color on CGABW80
veya280 X 25 B / W on CGACO80 veya 380 X 25 Color on CGAMono veya 780 X
25B / W on MDA or HGCFont 8x8 veya 25643- / 50 -line mode EGA / VGA
Klavyeden girilen ismi alt alta birerli atlayarak yazan program.
uses crt;
var
isim:string;
i:integer;
begin
clrscr;
gotoxy(30,1);
Textbackground(9);Textcolor(3);
write(‘isminizi_giriniz:’);readln(isim);
for i:=1 to 15 do
begin
gotoxy(i,i);
writeln(isim);
end;
readln;
end.
Ekranın iki yanına ismi alt alta 5 kere yazan program.
uses crt;
var
isim:string;
i:integer;
begin
clrscr;
writeln(‘isminizi_giriniz:’);readln(isim);
for i:=1 to 5 do begin
gotoxy(1,i);
writeln(‘isim’);
gotoxy(70,i);
writeln(‘isim’);
end;
readln;
end.
İsmi ekrana 3 blok halinde ortalı yazan
Saat programı
uses crt;
var
saat,dakika,saniye,salise:integer;
begin
clrscr;
writeln(‘18.02.2011′);
saat:=15;
for dakika:=58 to 59 do
for saniye:=0 to 59 do
for salise:=0 to 59 do
begin
gotoxy(5,10);
delay(10);
writeln(saat,’:',dakika,’:',saniye,’:',salise,’:');
end;
readln;
end.
program.
uses crt;
var
x,y:integer;
begin
clrscr;
for x:=1 to 3 do
for y:=1 to 10 do begin
gotoxy(30*x-25,2*y);
writeln(’sonnur’);
end;
readln;
end.
İsmi ekranda yarısında yazmaya
başlayan program.
uses crt;
var
x,y:integer;
begin
clrscr;
for x:=1 to 3 do
for y:=1 to 5 do
begin
gotoxy(30*x-25,2*y+14);
writeln(‘sonnur’);
end;
readln;
end.
İsmi ekranda sekiz bloklu yazan p
uses crt;
var
x,y:integer;
begin
clrscr;
for x:=1 to 8 do
for y:=1 to 10 do
begin
gotoxy (9*x-3,2*y);
writeln(’sonnur’); end;
readln;
end
DİZİLER
Aynı tipli elamanları küme haline getirerek bir dizide toplayabiliriz. Bellekte dizinin
elemanları arka arkaya sıralanır. Kümenin her elamanı için başka bir değişken tanımlamamız
gerekmeyecektir.
Tek Boyutlu Diziler
Aynı veri tipinde, fakat herbiri birbirinden bağımsız elemanları tek boyutlu dizide saklayabiliriz.
Kullanımı,
var
dizi_değişkeni: array[ilk_indis..son_indis] of elemanların_tipi;
Type olarak tanımlamak istersek,
type
dizi_ismi= array[ilk_indis..son_indis] of elemanların_tipi;
var
dizi_değişkeni:dizi_ismi;
Örnekler,
var
a: array[1..50] of integer; (x1,x2,x3,…,x50)
b: array[1..50] of string[30];
Type olarak tanımlarsak,
var
type
okul= array[1..100] of real;
sinif1, sinif2:okul;
ÖRNEKLER
Klavyeden girilen 10 sayıyı bir diziye atarak daha sonra otalamasını bulalım,
program dizi1(input, output);
var
sayilar: array[1..10] of integer;
toplam, i: integer;
ort: real;
begin
for i:=1 to 10 do
readln(sayilar[i]);
for i:=1 to 10 do
toplam:=toplam+sayilar[i];
ort:=toplam/10;
writeln(ort);readln;
end.
Klavyeden girilen 10 sayının en büyüğünü bulan programı dizi kullanarak çözelim,
program dizi2(input, output);
var
sayilar: array[1..10] of integer;
enbuyuk, i: integer;
begin
for i:=1 to 10 do
readln(sayilar[i]);
enbuyuk:=sayi[1];
for i:=2 to 10 do
if enbuyuk<sayilar[i] then enbuyuk:=sayilar[i];
writeln(enbuyuk); readln;
end.
Çok Boyutlu Diziler
Dizinin bütün elamanlarının birbirleriyle olan benzerliklerinin
yanında, bazı elemanlar dizinin elemanlarına bağımlı olabilir. Örneğin
bir 10 ürünü içeren listede, o ürününlerin fiyatları ve indirimli
fiyatları tutulacaksa, burada iki boyutlu dizi kullanabiliriz. Ürünlerin
isimlerinide başka bir dizide tutabiliriz.
var
tutarlar: aray[1..10, 1..2] of real;
şeklinde tanımlanır. Program içinde,
tutarlar [1,1] 1. ürünün fiyatı,
tutarlar [1,2] 1. ürünün indirimli fiyatı,
tutarlar [2,1] 2. ürünün fiyatı,
tutarlar [2,2] 2. ürünün indirimli fiyatı,
.
.
tutarlar [10,1] 10.ürünün fiyatı,
tutarlar [10,2] 10.ürünün indirimli fiyatı,
ÖRNEK
3 ürün için ürünlerin isimlerini ve fiyatlarını klavyeden alarak, daha sonra en fazla indirim yapılan ürünü bularak ekrana basan programı yazalım,
program enfazla_indirim;
var
tutarlar: array[1..3, 1..2] of real;
urun: array[1..3] of string[15];
i,j :integer;
enfazla: string[15];
yuzde, encokind: real;
begin
encokind:=0;
for i:=1 to 3 do
begin
Writeln(i,‘. Ürünün adını giriniz:’)
readln(urun[i]);
for j:= 1 to 2 do
begin
Textcolor(5);gotoxy(5,j+2);Write(‘Ür
ünün’);
Textcolor(3);gotoxy(13,j+2);Write(j)
;
Textcolor(5);gotoxy(15,j+2);Write(‘.
Fiatını giriniz:’);
End;
readln(tutarlar[i,j]);
end;
for i:=1 to 3 do
begin
yuzde:=(tutarlar[i,1]-tutarlar[i,2])*100/tutarlar[i,1];
if encokind<yuzde then
begin
encokind:=yuzde;
enfazla:=urun[i];
end;
end;
writeln('En fazla indirim yapılan ürün:', enfazla);
writeln('indirim yüzdesi:',encokind);
Readln;
end.
 N 2 N
 N 1
 Xi   Xi 
i 1
i 1
i 1 X i


Son 
N
 Xi
2
i 1
uses crt;
var
x:array[1..100] of real;
n,s:shortint;
son, tx, txk, tbx: real;
begin
clrscr;
tx:=0;txk:=0;tbx:=0;s:=0;
write('N değerini giriniz');
readln(n);
for s:=0 to n do
Begin
Write(s,'. X değerini giriniz
=');Readln(x[s]);
tx:=tx+x[s];
txk:=tXk+sqr(x[s]);
tbx:=tbx+1/x[s];
end;
son :=(txk-tx)*tbx/txk;
writeln('İşlemin sonucu
=',son:8:2);
repeat until keypressed;
end.
Matematik Bölümü 1.sınıf öğrencilerinin Analiz II dersi arasınavı ve final
sınavı notları klavyeden girilerek sınav sonuç çizelgesi oluşturulacaktır. Öğrencinin vize
ve final notları sırasıyla klavyeden girilecektir. Klavyeden girilen notlar 0-100 aralığında
olması sağlanmalıdır, bu koşul sağlanmıyor ise ilgili not klavyeden tekrar girilmelidir.
Notların istenilen aralıkta olmasının sağlanması program tarafından otomatik olarak
yapılmalıdır. Geçme notu olarak Ortalama >=60 ve Min(Final)=50 olarak dikkate alınacaktır. Programın çıktısı şu
şekilde olacaktır;
Öğr. No.
Vize Final
Ortalama DURUMU
-------------------- ----- ----- ------------ --------------090106001
87
87
87
BASARILI
090106002
40
57
50
BASARISIZ
program vize_final_ortalamasi;
uses crt;
Type
Notlar=array[1..50,1..50] of byte;
dersort=array[1..50] of real;
ders=array[1..50] of integer;
var
osay,dsay,tsay,i,j:byte;
ogrort,ogtop:dersort;
ort:ders;
a:Notlar;
cl:string[5];
kl:string;
begin clrscr;
Write('Dersi Alan Öğrenci sayısını
giriniz...=');Readln(osay);
for i:=1 to osay do
begin
for j:=1 to 2 do
begin
if i<10 then kl:='0901060000' else kl:='090106000';
repeat
if j=1 then cl:='Vize ' else cl:='Final';
write(kl,i,' numaralı öğrencinin ',cl,' Notunu giriniz =
');
Readln(a[i,j]);
until (a[i,j]>0) and (a[i,j]<100)
end;
end;
for i:=1 to osay do
begin
ogrort[i]:=round(a[i,1]*0.40+a[i,2]*0.60);
ort[i]:=trunc(ogrort[i]/1);
end;
writeln;
writeln('™§r. No
Vize Final Ortalama DURUMU');
writeln('-----------+-----+------+---------+--------');
for i:=1 to osay do
begin
if i<10 then kl:='9420000' else kl:='942000';
if (ort[i]>=50) and (a[i,2]>=50.0) then
begin
writeln(kl,i,' ',A[i,1]:3,' ',A[i,2]:3,' ',ogrort[i]:6:2,'
BAŞARILI');
end
else
writeln(kl,i,' ',A[i,1]:3,' ',A[i,2]:3,' ',ogrort[i]:6:2,'
BAŞARISIZ');
end;
Repeat until keypressed;
End.
PROBLEMLER
1. Girilen 10 sayının en büyüğünü bularak ekrana basan program.
2. Aşağıdaki ürünler ve fiyatları klavyeden girilmektedir. Fiyatı en düşük ürünü
bularak ekrana basan programı yazınız.
Ürün Kodu
Fiyatı(Xmilyon TL)
120501
15
120502
35
120203
9
120301
20
120302
90
3. Aşağıdaki 2 matrisin toplamı olan c matrisini bulan programı yazınız. (İki matrisin
toplamı her iki matristeki aynı indis numaralı elemanların toplamlarında oluşan
matristir.)
4. Klavyeden 50 öğrencinin isim ve bir dersten aldıkları 3 not bilgisi girilmektedir. Bu
öğrencilerin not ortalamalarını bularak, en yüksek ortalamalı oğrenciyi bulan
programı yazınız.

uses crt
;begin
write('ADINIZ:')
;readln;
write('SOYADINIZ:')
;readln;
write('ANNE ADI:')
;readln;
write('BABA ADI:')
;write(")
;readln;
write('kimlik bilgileri:'); gotoxy(12,10);textcolor(yellow);
;readln;
write('dogdugu yer:')
;readln;
write('MERSIN')
;readln;
write('kimlik numarasi:')
;readln;
write('10858434902')
;readln;
write('Copyright Hüseyin')
;readln;
;begin
gotoxy(12,10);textcolor(red);
readln;
end;
end.
Tabanı ve üssü girilen üslü sayıyı hesaplar.
uses crt;
var
sayi,sayi1:longint;
function us(x,y:integer):longint;
var
i:integer;
j:longint;
begin
j:=1;
for i:=1 to y do j:=j*x;
us:=j;
end;
Begin
Writeln('Tabani giriniz'); readln(sayi);
writeln('Ussu giriniz'); readln(sayi1);
write('Sonuc: ',us(sayi,sayi1));
readln;
End.
Girilen sayının faktoriyelini bulan program.
uses crt;
var
sayi:integer;
function fak(x:integer):real;
var
i:integer;
s:real;
begin
s:=1;
for i:=1 to x do s:=s*i;
fak:=s;
end;
Begin
clrscr;
writeln('Faktoriyeli alinacaak sayiyi giriniz');
Readln(sayi);Writeln('Sayinin faktoryeli: ',fak(sayi):10:2);
readln;
End.
Sabit bir metni ekranda kaydıran Pascal programı.
uses crt;
var
i,j,k,n:integer;
a,c:string;
Begin
clrscr;
repeat
randomize;
n:=random(16);
c:='SAKLA SAMANI CURUSUN';
clrscr;
gotoxy(30,12);write(c);delay(290);
for j:=1 to 20 do
for i:=1 to 20 do
begin
c[i]:=c[i+1];
delay(5);
textcolor(n);
gotoxy(30,12);
write(c);
gotoxy(74,24);
write('Renk ',n);
end;
until keypressed;
readln;
end.
Aşağıdaki program, girilen üç kenarın bir üçgen oluşturup oluşturmayacağını, kenarlar
üçgen oluşturuyorsa bu üçgenin çeşidini ekrana
uses crt; yazar.
var
k1, k2, k3: integer;
begin
clrscr;
writeln('Üç kenar giriniz');
readln(k1, k2, k3);
if (k1 &lt;&gt; k2 - k3)
and (k2 &lt;&gt; k1 - k3)
and (k3 &lt;&gt; k1 - k2) then
begin
writeln('Üçgen olur');
if (k1 = k2) and (k2 = k3) and (k1 = k3) then
writeln('Eşkenar Üçgen ');
if (k1 = k2) or (k1 = k3) or (k2 = k3) then
writeln('İkizkenar Üçgen ');
if (k1 &lt;&gt; k2) and (k1 &lt;&gt; k3) and (k2 &lt;&gt; k3) then
begin
writeln('Çeşitkenar Üçgen ');
if (sqr(k1) = sqr(k2) + sqr(k3)) or (sqr(k2) = sqr(k1) + sqr(k3)) or (sqr(k3) = sqr(k2) +
sqr(k1)) then
writeln('çeşitkenar dik üçgen');
end;
end
else
writeln('Üçgen olmaz');
readln;
end.
7-Döngü Komutları
Döngüler programın akışı sırasında tekrarlanması gereken işlemler için kullanılır.
Tekrarlama işlemi için bir koşul seçilir ve bu koşul sağlanıncaya kadar tekrarlama işlemi
sürer. İç içe birden fazla döngü komutu kullanılabilir.
A) FOR - DO:
FOR koşul:=başlangıç değeri TO/DOWNTO bitiş değeri DO
Begin
komutlar
End;
FOR döngüsünde koşul, başlangıç değeri ve bitiş değeri değişken olabileceği gibi sabit de
olabilir. Eğer döngü azalarak işlem yapacaksa DOWNTO, artarak işlem yapacaksa TO
ifadesi kullanılmalıdır. Ayrıca, döngü başa döndükçe koşul ifadesi birer birer
arttırılacak/azaltılacaktır.
Döngü içinde birden fazla komut kullanılacaksa komutlar Begin – End bloğu içine yazılır.
DO ifadesinden sonra noktalı virgül kullanılmaz. Eğer noktalı virgül kullanırsanız
derleyiciniz bir hata vermez ancak döngünüz hiç işlem yapmaz. Birkaç örnek verelim:
FOR i:=0 TO 10 DO i:=i+1;
{ Döngü, 0 dan 10‘a kadar olan sayıları topluyor }
t:=1;
FOR k:=5 DOWNTO 1 DO t:=k*t;
{ k değişkeni birer birer azalıp 5! değerini buluyor }
t:=1;
k:=100;
FOR i:=1 TO 5 DO
Begin
t:=t+1;
k:=k-15;
End;
{ i değeri 1 den 5’e kadar artıyor ve her seferinde }
{ t değeri 1 artıyor, k değeri 15 azalıyor }
FOR i:=0 TO 1000 DO; i:=i+1;
{ DO ifadesinden sonra noktalı virgül kullanıldığı }
{ için i değeri 1000 oluncaya kadar döngü 1000 kez }
{ dönüyor sonra i değerini 1 artıyor ve sonuç }
{ 1001 oluyor. Aksi halde i değeri 1’den 1000’e }
{ kadar olan sayıların toplamı olacaktı. }
t:=1;
FOR i:=0 TO 11 DO
Begin
t:=i+t;
i:=i+5;
End;
{ Bu döngü iki kez dönüyor. İlkinde i değeri sıfır ve }
{ t değeri 1 olarak işlem yapılıyor, son satırda i }
{ değeri 5 attırılıyor ancak döngü başa döndüğünde }
{ i değeri otomatik olarak 1 arttırılıyor ve böylece }
{ i değeri 6 olarak işlemler yapılıyor. Son satırda i }
{ değeri 5 attırılıyor ve 11 oluyor. Döngü başa }
{ döndüğünde i değeri 1 daha attırılıyor ve 12 }
{ oluyor. Bitiş değeri 11 olduğu için döngü }
{ işlemini bitirmiş oluyor. }
B) REPEAT – UNTIL
Döngü, Until ifadesindeki koşul sağlanıncaya kadar tekrarlanacaktır.
Repeat- Until bloğu içine birden fazla komut yazılabilir ve Begin-End
Repeat
bloğunu kullanmaya gerek yoktur. For-Do döngüsünden farkı,
Komutlar
koşulun artış veya azalış miktarını belirtebilmemizi sağlar. Döngü
Until koşul;
başa döndükçe koşul değerini otomatik olarak değiştirmez. Örnek
verelim;
i:=0;
t:=0;
Repeat
i:=i+2; { artış miktarını biz belirtiyoruz }
t:=t+i;
Until i=100;
{ 0’dan 100’e kadar olan çift sayıların toplamı }
i:=1;
k:=1;
Repeat
i:=i*k;
k:=1+k;
i:=i+1;
Until i=5;
{ 5! değerini bulan döngü }
Karşılaştırma Komutları
Program akışında, belirli şartlara göre, farklı işlemler yapabilmek için kullanılır. Yani,
hangi durumda hangi işlemlerin gerçekleştirileceğini belirleyebilmemizi sağlayan
komutlardır.
A) IF - THEN - ELSE:
IF koşul1,koşul2.... THEN komutlar
[ ELSE komutlar ]
Program akışının IF ile THEN arasındaki koşula göre yönlendirilmesini sağlar. Eğer bu
koşul sağlanırsa THEN ‘den sonraki kısım işlenir. Aksi halde THEN ‘den sonraki kısım
atlanıp ELSE ‘den sonraki bölüm işlenir. Ancak ELSE bloğunu kullanmak zorunda
değilsiniz. Daha doğrusu, denetlenen her koşul için ELSE bloğu gerekmeyebilir.
IF sayac=0 THEN sayac:=sayac+1;
{ Eğer sayac değişkeninin değeri sıfırsa bu değişkenin değerini bir attır }
IF - THEN – ELSE kullanırken dikkat etmeniz gereken birkaç nokta var. İlki, eğer
THEN ‘den sonra birden fazla komut kullanacaksanız bu komutları Begin – End bloğu
içinde kullanmalısınız. Aksi halde sadece THEN ‘den sonra gelen ilk komut koşulla
birlikte işlenecek, diğer komutlar koşula bağlı olmayacaktır. Aşağıdaki iki örnekteki
kodlar aynı olmasına rağmen aynı işi yapmıyor. İlk örnekte, eğer koşul sağlanırsa
(sayac değeri sıfıra eşitse) sayac değeri bir attırılıyor ve sira değeri sıfıra eşitleniyor.
İkinci örnekte, eğer koşul sağlanırsa sayac değeri bir attırılıyor. Koşul sağlansa da
sağlanmasa da sira değeri sıfıra eşitleniyor.
IF sayac=0 THEN
Begin
sayac:=sayac+1;
sira:=0;
end;
IF sayac=0 THEN
sayac:=sayac+1;
sira:=0;
kincisi, eğer ELSE bloğunu da kullanacaksanız THEN ile ELSE arasında kalan son
komuttan sonra (bu komuta End de dahildir) noktalı virgül işareti koymamanız
gerekli.
IF sayac=0 THEN
Begin
sayac:=sayac+1;
sira:=0;
end { Noktalı virgül kullanmadık }
ELSE
Begin
Sayac:=1;
Sira:=1;
End;
IF sayac=0 THEN sayac:=sayac+1 { buraya dikkat }
ELSE sayac:=1;
Koşul olarak tek değişken kullanılacağı gibi birden fazla değişken de kullanılabilir.
Denetlenecek değişkenler mantıksal operatörler (and,or,…) yardımıyla sıralanır.
IF (sayac=0) AND (sira=0) THEN
Begin
sayac:=sayac+1;
sira:=sira+1;
end;
{ sayac ve sira değişkenlerinin değeri sıfıra eşitse sayac değişkeninin değerini ve
sira değişkeninin değerini bir attır. }
Birkaç örnek verelim;
{ Aynı değişken için birden fazla IF kullanabilirsiniz }
IF sayi0 THEN tanim:=’Pozitif Sayı’;
{ İç içe birden fazla IF kullanabilirsiniz }
IF sayi&lt;0 THEN tanim:=’Negatif Sayı’
ELSE
IF sayi=0 THEN tanim:=’Sıfır’;
ELSE tanim:= ’Pozitif Sayı’;
{ Koşul denetlemesinde birden fazla değişken kullanabilirsiniz }
{ Bu değişkenleri farklı mantıksal operatörlerle bağlayabilirsiniz }
IF (A&lt;B OR A=B) AND (sayi=1) THEN ………………
H.Kodu
Mesaj
Açıklama
1
Invalid function number
Geçersiz fonksiyon numarası. Mevcut olmayan DOS fonksiyonu çağırılıyor.
2
File not found
Reset, Append, Rename veya Erase komutlarıyla belirlenen dosya bulunamıyor.
3
Path not found
Reset, Append, Rewrite, Rename, Erase, Chdir, Mkdir veya Rmdir komutlarıyla belirtilen path bulunamıyor.
4
Too many open file
Aynı anda açılan dosya sayısı çok fazla.
5
File access error
Reset, Append, Rewrite, Rename, Erase, Rmdir komutları kullanıldığında ortaya çıkar.
1.Read Only bir dosya silinmeye çalışılıyor.
2.Directory dolu
3.İsim değiştirilirken var olan bir dosya ismi kullanılıyor
4.Var olan bir directory açılmaya çalışılıyor.
5.İçi boş olmayan veya var olmayan bir directory silinmeye çalışılıyor.
6
Invalid file handle
Geçersiz bir dosya isteği DOS sistemine iletilmiş.
12
Invalid file access code
Geçersiz dosya erişim kodu. Reset veya Append komutlarında geçersiz dosya modu değeri kullanılmış
15
Invalid drive number
Getdir komutu ile geçersiz bir sürücü numarası kullanılmamış
16
Cannot remove current directory
Rmdir komutu ile aktif directory silinmeye çalışılıyor.
17
Cannot rename accross drivers
Rename komutu ile aynı sürücüdeki dosyaların ismi değiştirilmeye çalışılıyor.
100
Disk read error
Read komutu ile EOF karakterinden sonraki bir kayıt okunmaya çalışılıyor.
101
Disk write Error
Close, write, writeln komutları ile dolu bir diskete işlem yapılıyor.
102
File not assigned
Assign komutu ile dosya bir temsilci değişkene atanmamış.
103
File not open
Açılmamış bir dosya üzerinde işlem yapılıyor.
104
File not open for input
Text dosyası giriş için açık değil. Bu hata, Read, Readln, Eof, Eoln, SeekEof ve SeekEoln komutlarının açık olmayan
dosyaya kullanılması esnasında çıkar.
105
File not open for
output
Text dosyası çıkış için açık değil. Bu durumdaki dosyaya write ya da writeln komutlarının kullanımı
sırasında ortaya çıkan hatadır.
106 Invalid numeric format
Text dosyasından read veya readln komutu ile sayısal bir veri okunurken uygun olmayan bir sayısal değer ile karşılaş
150 Disk is write protect
Disket yazmaya karşı korumalı
151 Unkown unit
Tanımsız ünite.
152 Drive not ready
Disket sürücüye takılmamış veya sürücü kolu kapalı.açık olmayan dosyaya kullanılması esnasında çıkar.
154 CRC error in data
Diskete kaydedilmemiş datada hata var. Disket yüzeyinde fiziksel hata olabilir.
156 Disk seek error
Disketten data okunurken hataya rastlandı.
157 Unkown media type
Disket DOS tarafından tanınmıyor.
158 Sector not found
Disket bozuk olduğundan data bulunamıyor.
159 Printer out of paper
Printer’e kağıt takılmamış.
160 Device write fault
Hardware hatası nedeniyle disket veya hard disk’e kayıt yapılamıyor.
161 Device read fault
Hardware hatası nedeniyle disket veya hard diskten data okunamıyor.
162 Hardware failure
I/O port’unda arıza tespit edildi.
200 Division by zero
/, div veya mod operatörleriyle yapılan bölme işleminde sayının sıfıra bölümü oluşmakta.
201 Range check error
{$R+} compiler bildirisi kullanıldığında bir değişkene sınırları dışında veri girilmekte veya bir dizi değişkenin boyutları
dışına kalıyor.
205 Floating point overflow
Tanımlanmış bir real değişkene sınırları dışında atanmaya çalışılıyor.