PROGRAMLAMA DİLİ

 

 

 

 

(BURADAKİ PROGRAMLARIN YAPIMINDA FREE Pascal KULLANILMIŞTIR)

(Konuların büyük kısmı FREE Pascal Kitabından Türkçeleştirilmiştir)

 

 

 

HAZIRLAYAN
Bu Doküman Sean Dillon Tarafından
6 Şubat 2005 Tarihinde Hazırlanmıştır

                                                     E-mail : [email protected]

                                                     Web    : www.geocities.com/menserr/

 

 

 

 

TURBO PASCAL’ A GİRİŞ VE EDİTÖR KULLANIMI           :

 

GENEL BİLGİLER             :

            PASCAL programlama dili 1968 yılında Niklaus WIRT tarafından geliştirilmiş yüksek seviyeli bir programlama dilidir. Bu dilin Turbo Pascal versiyonu, günümüzde mühendislik, ticari ve bilimsel alanlarda yaygın olarak kullanılmaktadır. Yaygın olarak kullanılmaya başlayan DELPHI programlama dili Turbo Pascal’ ın görsel (visual) şeklidir.

            PASCAL ve günümüzdeki ismiyle TURBO PASCAL, özellikle program yazmada sağladığı büyük kolaylıklardan dolayı çok yaygın olarak kullanılan bir dil haline gelmiştir. Turbo Pascal’ da yazılan programlar daha kısa, anlaşılması kolay ve çok hızlı olarak çalışırlar. Özellikle GOTO komutunun zorunlu olmaması ve bu komuta gerek duyulmamasından dolayı programın okunması kolaylaşmakta ve çalışma hızı artmaktadır.

            Turbo Pascal’ ın programcıya diğer bir önemli özellik: programcı kendisine gerekli olan ve her yerde kullanması gereken program parçalarını (Unit) bir defa hazırladıktan sonra bu program parçalarını başka programlar içerisinde çok kolay bir şekilde kullanabilmekte ve istediği şekilde veri tipleri tanımlayabilmektedir. Bu şekilde programın daha esnek ve daha kısa sürede tamamlanması sağlanmaktadır.

            Turbo Pascal’ ın diğer bir önemli özelliği ise program yazma işlemleri için hazırlanan editör’ ün esnek olması, programların makine diline anında çevrilmesi, hata bulma ve hataları düzeltme işlemlerinin pratik ve hızlı olarak yapılmasına imkan vermesidir.

            TURBO PASCAL dilinin kullanılacağı programlama alanlarına bir sınırlama konulamaz. Her türlü problemin çözümü ve programlanmasında TURBO PASCAL’ dan yararlanılabilir. Çok geniş bir komut kütüphanesine sahip olmasının yanında, kullanıcı kendi komutlarını kendisi yazabilmekte ve istendiği gibi kullanılabilen bir grafik ortamına sahiptir.

 

TURBO PASCAL’ DA PROGRAM YAPISI ve TANIMLAMALAR    :

I- TURBO PASCAL’ DA PROGRAM YAPISI : 

Turbo Pascal dili yapısal bir programlama dilidir. Turbo Pascal ile yazılmış programlara bakıldığında, programı oluşturan komut cümlelerinin bloklar halinde yazıldığı görülür.

 

Belirli bir işlemi yapmak için bir araya getirilmiş bir veya birden fazla komutun oluşturduğu program parçasına blok adı verilir. Diğer dillerde IF-GOTO komutları ile kurulan döngü ve şartlı dallanmalara TURBO PASCAL’ da rastlanılmaz. Turbo Pascal’ da bu yapının kullanılmasına gerek kalmaz.

 

Turbo Pascal’ da yazılan programların en büyük özelliği düzenli okunabilir olmasıdır. Bu özellik yapısal dillerin en büyük özelliğidir. Bu özellik programlar üzerinde düzenlemelerin daha kolay yapılmasını sağlamaktadır.

 

Turbo Pascal’ da bir programın yapısı genel olarak aşağıdaki gibidir.

 

Program prog_adı

Tanımlamalar

Procedure ve Function’ lar

Ana Program Kesimi

 

Yukarıdaki yapıyı biraz daha genişletirsek;

 

 

 

Program ProgramAdı

Uses

            Kullanılacak unit’ ler

Type                                                                  

 Özel veri tipleri

Const

 Sabitler

Var

 Değişkenler

Label

Etiketler (Goto için)

Procedure ProcedureAdı

Type ……

Const……

Label……

Var…..

 

Begin

            : Procedure

            : alt program kesimi

End;

 

Function FunctionAdı

Tyepe…..

Const….

Label….

Var……

 

Begin

            : Function

            : alt program kesimi

End ;

Begin

            :

            : Ana program kesimi

End.

 

Bu yapıda kullanılan işlemleri kısaca açıklayalım.

 

Program           : Bu komut ile program için herhangi bir isim yazılır. Kullanımı zorunlu değildir.

 

Uses                : Pascal’ ın kendi unit’ lerini (CRT,DOS,PRINTER,OVERLAY … vb) ve/veya kullanıcıların kendi hazırladığı unit’ leri kullanmak için kullanılır.

 

Type                : Özel veri tipleri tanımlamak için kullanılır.

 

Const               : Sabit tanımlamak için kullanılır.

 

Label               : Goto komutu ile program akışının gideceği bölümleri tanımlamak için kullanılır.

 

Var                  : İstenen tipte değişken tanımlamak için kullanılır.

 

Program başında tanımlanan Type, Const, Label, ve Var bölümlerindeki tip, sabit, etiket ve değişkenler programın her kesiminde geçerlidir.

 

Procedure        : Amacı, program parçalarının belli isimler altında yazılarak bir komut gibi kullanılmasını sağlamaktır. Bu bölümde Type, Const, Label ve Var tanımlama bölümleri kullanılabilir. Bu bölümlerde tanımlanan tip, sabit, etiket ve değişkenler sadece tanımlandığı Procedure içerisinde kullanılabilir.

 

Function           : Program parçalarının belli isimler altında yazılarak bir fonksiyon gibi kullanılmasını sağlamaktır. Bu bölüme Type, Const, Label ve Var tanımlama bölümleri kullanılabilir. Bu bölümlerde tanımlanan tip, sabit, etiket ve değişkenler sadece tanımlandığı Function içerisinde geçerlidir.

 

II- ÖZEL SEMBOLLER VE PASCAL KELİMELERİ               :

 

Özel Semboller          : Bir Pascal programı içerisinde ;

A’ dan Z’ ye büyük ve a’dan z’ ye küçük, İngiliz alfabesinin harfleri. 0’ dan 9’ a kadar olan rakamlar. Onaltılı sayı sistemindeki sayıları ifade etmek için 0’ dan 9’ a rakamlar ile A’dan F’ ye büyük harfler ve a’ dan f’ ye küçük harfler kullanılır.

 

            Harfler             : İngiliz alfabesinin harfleri A….Z ve a…..z

            Rakamlar         : Rakamlar 0……..9

            Hexadecimal    : A…F, a….f, 0…9

 

Program içersinde tek başına kullanılan özel karakterler:

^  +  /  (  )  =  _  #  $  {  [  ]  }  \  }    <  >   @  . ,   ;  :

 

Beraber kullanılan özel karakterler        :                                                           

<>    <=   >=        =          :=         ..      (*            *)       (.         .)        {$         }

 

+          : toplama işlemi ile string bilgilerin birleşmesini sağlar

 

-*/       : Aritmetik işlemlerin yapılmasını sağlar.

 

=<>     : Karşılaştırma işlemlerinde kullanılır.

 

[] (..)    : Diziye ait indis numarasını göstermekte kullanılır.

 

;           : Pascal komut ve deyimlerini birbirinden ayırmak için kullanılır.

 

{}>        : Program içerisinde programın istenen bölüm veya bölümlerine açıklama yazmak için

(*    *)               kullanılır.

 

:=>         : Değişkenlere değer aktarmak/ atamak için kullanılır.

 

.            : program sonunda ; yerine ve Real sayıların tam ile ondalıklı kesimi arasına yazılır.

 

{$    }  : Complier bildirilerini bildirmek için kullanılır.

 

:            : Değişken tanımlama sırasında değişken listesinin sonunda ve CASE-Of komutunda sabit bilgilerden sonra kullanılır.

 

( )        : Standart veya hazırlanan Procedure / Function’ ların parametrelerini tanımlamak, aritmetik işlemler sırasında öncelik belirtmek için kullanılır.

 

@         : Addr fonksiyonu yerine adres belirtmek için kullanılır.

 

#           : Kod numaraları ile karakter veya tuşu belirtmek için kullanılır .

 

Turbo Pascal Kelimeleri                   : Turbo Pascal’ da kendi işlevleri dışında kullanılamayacak olan kelimeler vardır. Bu kelimeler programcı tarafından bir değişken, sabit, etiket, tip, Procedure veya Function adı olarak kullanılamazlar. Bu kelimeler ‘ Reserved Word’ olarak adlandırılırlar.

 

Absolute                     external                                  Mod                      shr

And                             file                                           nil                          string

Array                          for                                           not                         then

Begin                          forward                                   object                    to

Case                            Function                                  of                           type

Const                          goto                                         or                           unit

Constructor                ıf                                              packed                  until

Destructor                  implementation                       Procedure             uses

Div                              in                                             program                var

Do                               inline                                       record                   virtual

DownTo                      interface                                 repeat                   while

Else                             interrupt                                  set                         with        

End                              Label                                       shl                         xor

 

Tanıtıcı İsimleri          :

Program içerisinde sabit, tip, değişken, etiket, Procedure ve Function isimleri için kullanılan, kullanıcının belirlediği özel isimlerdir. İstenilen uzunlukta olabilirler ama ilk 63 karakter dikkate alınır. Bir tanıtıcının özellikleri :

  1. harf veya altçizgi karakteri ile başlamalıdır.
  2. içerisinde boşluk bulunamaz
  3. ilk karakterden sonra rakam veya alt çizgi karakterleri kullanılabilir.
  4. tanıtıcı bir Pascal kelimesi olamaz.
  5. tanıtıcı ismi içerisinde özel karakter bulunamaz

 

Etiketler (Labels)       :

Goto komutu ile program akışının gideceği program bloklarını belirtmek için kullanılır. Rakam olarak verildiği zaman 0 ile 9999 arasında olmalıdır.

 

 

 

 

Sayılar                        :

Kullanılan sayılar tam sayı ve gerçek (Real) sayı olabilirler. Hexadecimal (onaltılı) sabit tam sayılar’ ın önüne ($) işareti getirilir. Mühendislik notasyonundaki gerçek sayılarda E veya e harfleri bulunur.

 

Örnek                          :

7E-2                            è 7*10-2

12.56e+5                     è 12.56*10+5

 

String İfadeler            :

String ifadeler, ASCII karakter setindeki bütün karakterleri alır. Bu ifadeler iki apostrof 

(‘    ‘) arasına yazılırlar. En fazla 255 karakterlik bilgi olabilir. Bilgiler, # (diyez) işareti yardımı ile kod numaraları verilerek de yazılabilirler.

 

Örnek                          :

‘Turbo Pascal’              ‘Türkiye Cumhuriyeti’#7

#12’pascal öğreniyoruz’#248

‘pascal’ ‘ın’

‘Şanlıurfada’#13’Gaziantep’#13

‘:’

 

Açıklamalar                :

Programın okunabilirliğini arttırmak için programcı, programda gerekli gördüğü yerlere çeşitli açıklamalara yer verebilir. Program içerisinde yapılacak açıklamalar {    } veya (*   *) işaretleri arasına yazılır. Bu işaretler arasına yazılan açıklama ve notlar derleme sırasında dikkate alınmazlar. Programcının program kesimlerinde yaptığı işlemlere ait açıklamalar yazmak için kullanılırlar.

 

{ Bu bölümde maaşlar hesaplanıyor }

 

(* Bordroyu yazıcıya

   döküm bölümü*)

 

yukarıdaki gibi yapılan açıklamalar doğrudur. Ancak aşağıdaki gibi bir açılama yapmak hatalıdır.

{Bu bölümde bilgiler alınıyor

{Kişisel bilgiler alınıyor }  }

 

Program Satırları       :

Pascal programları, editör programları yardımıyla hazırlanırlar. Bunun için Pascal programcısı başka bir editör programı kullanabileceği gibi, çok pratik işlemlere sahip olan Turbo Pascal’ ın kendi editörünüde kullanabilir. Editör içerisinde yazılan bütün komut ve komut cümleleri yazıldıkları sıra ile korunur ve bu sıra ile işlem görürler. Bu nedenler basic’ te olduğu gibi hangi komutun önce geldiğini belirten bir satır numarasına gerek kalmamaktadır. Başka bir deyişle Pascal’ da satır kavramı yoktur. Herhangi bir komut veya deyim bir satır üzerinde olabileceği gibi deyimleri, sabit ifadeleri bölmemek şartı ile birden fazla satır üzerinde de yer alabilir.

 

 

 

A:=B+C; ifade si aşağıdaki gibide yazılabilir.

A

:=

B

+

C

;

Bu yazılım şekli programın okunabilirliğini zorlaştırdığı ve satır sayısını arttırdığı için tavsiye edilmez. Aynı şekilde birden fazla komut veya deyim aynı satır üzerinde yer alabilir. Bu şekilde yazılımlar daha çok tavsiye edilir.

 

If A>B Then Writeln (‘A Büyük’) Else Writeln (‘B Büyük’);

 

Komut grubu aşağıdaki gibide yazılabilir.

 

If A>B then

            Writeln (‘A BÜYÜK’)

Else

            Writeln (‘B BÜYÜK’);

Komut cümlelerini birbirinden ayırmak için noktalı virgül “;” karakteri kullanılır. Bir satırın maksimum uzunluğu 126 karakterdir. Yani bir satır üzerine 126 karakterlik komut veya komutlar yazılabilir. 126. kolonun aşılması durumunda ‘ line too long’ hatasının oluşmasına sebep olur.

 

Atama İşlemleri         :

Turbo Pascal’ da atama işlemleri için := ifadesi kullanılır. Bu ifadenin kullanım şekli aşağıdaki gibidir.

 

Değişken := ifade

 

İfade işlem , sabit veya değişken olabilir. İfade ile değişken aynı tipte olmalıdırlar. Aksi taktirde ‘ type mistmach’ hatasının oluşmasına sebep olur. Sağ tarafta verilen ifadenin sonucu sol taraftaki değişkene aktarılır.

 

A:= 20 ;           A değişkenine 20 değeri aktarılır

B:=A ; B değişkenine A’ nın değeri aktarılır.

D:= A*A+B;    D değişkenine A*A+B işleminin sonucu aktarılır.

 

Örnek;

 

Var

A,B     : integer;

Ad,Soyad : string[10];

Isim     : string[20];

T        : Real;

 

Begin

A:=20 ; B:=12;

T:=A+B;

Ad := 'osman';Soyad:='Akgobek';

Isim := Ad +' '+Soyad;

Writeln ('T=',T);

Writeln ('Ad Soyad =', Isim);

end.

 

III- VERİ TİPLERİ (Data Types)              :

Turbo Pascal’ da program içerisinde kullanılan bütün değişkenler tipleri ile beraber tanımlanmalıdırlar. Değişken, sabit ve tip tanımlamaları için Var, Const, ve Type tanımlama blokları kullanılır. Kullanılan tipler ;

 

Tam Sayı Tipler         :

 

Tamsayı, değişken ve sabitleri tanımlamak için kullanılan tiplerdir. Bu değişken ve sabitlere ondalıklı değer aktarılamaz. Ondalıklı değer aktarılması veya tamsayı değişkene atama sırasında işlem içerisinde  / işaretinin olması veya real bir değişkenin olması durumunda ‘Type Mismatch’ hatası oluşur. Tam sayı tipler.

 

TİP ADI

ALT SINIR

ÜST SINIR

KAPLADIĞI YER

ShortInt

-128

127

1 byte

Byte

0

255

1 byte

Integer

-32.768

32.767

2 byte

Word

0

65.535

2 byte

LongInt

-2.147.483.648

2.147.483.647

4  byte

 

Integer Tipi Veriler   :

Integer tipteki veriler, yukarıdaki tablodan da görüldüğü -32768 ile 32767 arasında değerleri alan tamsayılardır. Bu tür veriler desimal nokta ile temsil edilemezler. Tam  sayı değerler desimal ve hexadecimal notasyonlarla ifade edilebilirler. Hexadecimal notasyondaki bilgileri kullanmak için sayıların sol tarafına $ işareti kullanılır. Hexadecimal sayılar ifade etmek için 0’ dan 9’ a kadar olan rakamlar ve A’ dan F’ ye kadar olan harfler kullanılabilir. Integer sayıların sınırları hexadecimal olarak $0000 ile $FFFF arasındadır.

 

Bütün veri tipleri üzerinde yapılan işlemler sırasında verilen sınırların dışına çıkılması hatadır. Bu nedenle yanlış sonuçlar üretilir. Bu tür hatalar derleyici tarafından programcıya iletilmez. Bu nedenle yapılan işlemlere ve kullanılan sayılara uygun veri tiplerinin kullanılması gerekir. Bunu bir örnek ile açıklarsak eğer ;

 

Var

            D: integer;

            R: real;

Begin

            D:=5000;

            R:=(D*100)/100 ;

            Writeln(R:0:2);

            Readln;

End.

 

Yukarıdaki programa bakıldığı zaman sonuçta 5000 değerini üretmesi beklenir. Çünkü D değişkeninin değeri 5000 ve bu değişken 100 ile çarpılıp tekrar 100’ e bölünüyor. Ama bu programın çalıştırılması sonucunda ekrana -242.88 şeklinde ilgisiz bir sonuç verir. Bu nedenle kullanılan veri tiplerine ve işlem şekillerine dikkat edilmelidir.

 

Byte Tipi Veriler       :

İşaret ve desimal notasyon içermeyen ve 0 ile 255 arasındaki değerlerden oluşan tam sayı bilgilerden oluşur. Bellekten yer tasarrufu sağlamak için, 0-255 arasındaki sayıları tutmak için bu tipin kullanılması daha yararlı olacaktır. Integer tipi sayılarda olduğu gibi bu sayılarda da hexadecimal notasyonlar kullanılabilir. Hexadecimal olarak sınırları $000 ile $FF arasındadır.

 

Gerçek Sayı Tipler    :

Ondalık değişken ve sabitleri tanımlamak için kullanılır. Gerçek sayı tipleri aşağıda verilmişt.r

 

TİP ADI

ALT SINIR

ÜST SINIR

KAPLADIĞI ALAN

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

 

Real dışındaki diğer veri tiplerin çalışması için makinede matematik işlemcinin bulunması gerekir.

 

String Tip       :

Alfasayısal değişken ve sabitleri tanımlamak için kullanılır. Program içerisinde sayısal anlamı olmayan ve isim, adres, şehir… gibi bilgiler String tip kullanılır. String tipte karakter sınırlaması 255 karakterdir. Kapladığı alan ise tanımlanma şekline göre değişir.

String è 255 karakterlik bilgi alır ve hafızada 256 byte’ lık yer kaplar

String[n] è n karakterlik bilgi alır ve n+1 bytlık yer kaplar.

String tipteki bilgiler iki apostrof işareti arasına yazılırlar (‘     ‘). ‘       arasında yazılan bilginin uzunluğu en fazla 255 karakter olabilir. Ancak aynı satır üzerine 126 karakterlik bilgi bulunabilir. Bunun için, bilginin uzun olması durumunda  + operatöründen yararlanılır. Bir String değişkenin uzunluğu, tanımlanacak alanın maksimum uzunluğuna göre belirlenir.

 

Karakter (CHAR) Tip          :

Sadece bir karakterlik bilgi için kullanılır. Sayısal bir anlamı yoktur. Kapladığı alan bir byte’ dır.

 

Boolean Tip                           :

Sadece TRUE(doğru) veya FALSE(yanlış) değerini alan tiptir. Kapladığı alan bir byte’ dır.

Buraya kadar sabit veya değişken tanımlamak için gerekli olan veri tipleri ve makinede kapladıkları alan miktarlarını verdik. Şimdi bu tipler yardımıyla program içerisinde değişken ve sabitler tanımlayalım. (sabit tanımlamak için CONST ve değişken tanımlamak için VAR blok komutları kullanılır).

 

Const

            Max     : Integer =999;

            Min      : Integer = 0;

            Enter    : Char= #13;

            Esc      :Char = #27;

Var

Maas               : LongInt;

Fatura_tut        : Real;

Adres              : String [50]

Telefon : String [12]

Tus                  : Char;

I                      : Byte;

J                      : Boolean;

 

Bu örnekler daha da çoğaltılabilir. Amaç, hafızada tutulacak bilgiye uygun veri tipini seçmektir. Örneğin; bir isim (Ad_Soyad) bilgisi için string değişken kullanılmalı ve uzunluğu belirtilmelidir. Bir maaş bilgisi için string değer kullanılamaz. Maaş için longint veya real tipleri kullanılabilir. Aynı şekilde, bir öğrencinin sınav notunu saklamak için Integer tipi kullanılabilir. Ancak kapladığı alan düşünülürse Byte tipinin kullanılması daha uygun olur. Çünkü bir not bilgisi 0-100 arasında dır. Bunun için LongInt tipinde değişken tanımlamaya gerek yoktur.

 

Dizi (ARRAY) Tip     :

Aynı tipteki birden fazla bilginin tutulduğu değişken ve sabit isimlere dizi denir. Dizileri tanımlamak için ARRAY kullanılır.

 

Array[1..100] Of Real;

Array[1..10,1..5] of Byte;

Array[1..10,1..5,1..3] of string[20];

Dizi tanımlamaları ve örnek programlar için dizinler bölümüne bakın.

 

Record (Kayıt) Tip    :

Alt alan olarak adlandırılan birden fazla ifadenin oluşturduğu yapıdır. Bu tip ile farklı tipte birden fazla alan isim altında tanımlanabilir. Record içerisinde tanımlanan her alanın bir ismi vardır ve bu isimler birbirinden farklı olmak zorundadır. Ancak, bu isimler ile aynı olan başka tanımlamalar bu tip dışında kullanılabilir. Record tipinde veriler TYPE bölümünde RECORD-END bloğu içerisinde tanımlanırlar.

Yazılımı            :

KayıtTipAdı=RECORD

            AlanAdı1: TipAdı;

            AlanAdı2: TipAdı;

END;

Yazılımdan da görüldüğü gibi her RECORD bloğu içerisinde birden fazla alan tanımlanabilir. Her Record tip tanımı End deyimi ile son bulur. Record içerisindeki alan isimlerinin aynı tipte olmaları durumunda aralarına virgül (,) koymak şartı ile arka arkaya yazılabilirler.

Örnek  :

Musteri =RECORD

Ad,Soyad        : String[15];

Adres              : String[40];

Telefon            : String[12];

Borc                : LongInt;

End;

Verilen tip ismi (Musteri) özel bir tip olarak kabul edilir. Bu tip adı, Real, Integer gibi bir tip durumunda ve değişkenleri tanımlamada kullanılır. Tanımlamada kullanılan değişken Record tipi içerisinde belirtilen bütün alt alanları temsil eder. Yukarıda tanımlanan Müsteri tipinde bir değişken tanımlamak için VAR değişken tanımlama bloğu kullanılır.

 

Var

            Mus : Musteri ;

 

Bu tanımlama ile Musteri kayıt yapısı içerisinde yer alan alanların, icra bölümünde işleme alınması sağlanır. Bunun için Mus değişken isminden yararlanılır. Mus değişkenine bağlı olan alt alanları kullanmak için; bu değişken ismi ile alt alan ismi arasına nokta (.) konur. Mesela Ad ve Soyad alanlarına bilgi atamak için;

 

Mus.Ad:=’Zeynep’;

Mus.Soyad:=’AKGÖBEK’;

Şeklinde tanımlamalar yapılır. Record tipindeki veriler daha çok Rasgele Erişimli dosyalarda kullanılır. Dosyalara bilgi girişi ve dosyadan bilgi okuma işlemlerinde kayıt yapısını oluşturan her alanın tek tek yazılması yerine, bütün alanları kapsayan bir değişken isminin yazılması yeterli olacak ve kullanımda büyük bir kolaylık sağlayacaktır. Bir Record tanımı içerisinde daha önce tanımlanmış olan başka bir Record ismi, alt alana ait bir tip ismi olabilir.

 

Örnek  ;

 

TYPE

ISIMKAY= RECORD

AD:STRING[15];

SOYAD:STRING[15];

END;

MUSTERIKAY= RECORD

ISIM               : ISIMKAY;

ADRES           : STRING[40];

SEHIR             : STRING[15];

MESLEK        : STRING[20];

END;

 

VAR

            KAYIT            : MUSTERIKAY;

            INDEX            : ISIMKAY;

{     :       :        :     }

 

BEGIN

            INDEX.AD:=’MEHMET’;

            INDEX.SOYAD:=’GOBEK’;

            KAYIT.ISIM:= INDEX;

            KAYIT.MESLEK:=’MUHENDIS’;

            KAYIT.ADRES:=’GOBEKLI KOYU’;

            KAYIT.SEHIR:=’SANLIURFA’;

            {          :           :           :           }

END.

 

 

With Deyimi              :

            Yukarıdaki atama işlemlerinde görüldüğü gibi Record tipine sahip bir değişkenlerin program içerisindeki kullanımında değişken ismi ile alt alan ismi arasına nokta konduğu görülüyor. Her alt alan isminden önce değişken isminin yazılması hem programı uzatmakta hemde yazılması zaman almaktadır. Bunu engellemek için With deyimi kullanılır.

 

Örnek  ;

BEGIN

            WITH INDEX DO

            BEGIN

            AD:=’MEHMET’;

            SOYAD:=’GOBEK’;

            END;

            WITH KAYIT DO

            BEGIN

            ISIM:=INDEX;

            MESLEK :=’MUHENDIS’;

            ADRES:=’GOBEKLI KOYU’;

            SEHIR:=’SANLIURFA’;

            {          :           :           :           }

END.

 

Set (Küme) Tipleri    :

Küme: Aynı tipte ve birbiriyle ilgili bilgilerin oluşturduğu bütündür. Kümedeki elemanların arasına virgül (,) konur. Eğer kümedeki elemanlar bir birini takip eden değerlerden oluşuyorsa bu değerler arasına iki nokta (..) konur. Aşağıda değişik küme örnekleri verilmiştir.

 

Örnek

[‘X’]

[‘A’..’Z’]

[0..9]

[‘E’,’H’,#27]

[1,2,3,4]

[1..4]

son iki örnekte verilen kümeler bir birine eşittir. Küme tipinde bir tip tanımlamak için TYPE bölümünden yararlanılır. Özel bir tip olan küme tipi verileri için SET OF ifadesi kullanılır.

Yazılımı            ;

            KumeAdi=TipAdi

 

 

 

 

Örnek  ;

TYPE

            Kodlar = set    of         [0..255];

            Harf     =set     of         [‘A’..’Z’];

            Rakam = Set    of         [0..9];

 

Bir kümede bulunan eleman sayısı maksimum 256 olabilir. Bu elemanların numaraları ise 0 ile 255 arasındadır. Herhangi bir karşılaştırma  işlemi sırasında kümedeki elemanların sıralanışı önemli değildir. Mesela ; [‘H’,’E’,’e’,’h’] ve [‘E’,’e’,’h’,’H’,] kümeleri bir birine eşittir. Kümeler üzerinde değişik işlemler yaparak başka kümeler elde edilebilir. Kümeler üzerinde kesişim, birleşim ve fark işlemleri yapılabileceği gibi mantıksal operatörler kullanarak değişik küme işlemleri yapılabilir. Bu işlemler için aşağıdaki operatörler kullanılır. Bu operatörlerleri öncelik sırasına göre verelim;

Kesişim operatörü        : #

Birleşim operatörü        : +

Fark operatörü : -

İlişkisel operatörler       : =, <>,<=,>=, in

 

Kesişim            : kümelerin ortak elemanlarını verir.

 

Birleşim            : kümelerin bütün elemanlarını verir. Yeni kümede her elemandan sadece bir tane bulunabilir.

 

Fark                : bir kümenin diğer kümede olmayan elemanlarını kapsar

 

Küme ifadeleri daha çok belli bir değerin başka değerlere eşit olup olmadığını veya bir değerin verilen bir aralıkta olup olmadığını kontrol etmede yaygın olarak kullanılır.

 

Örnek  :

IF (T=’E’) or (T=’e’) or (T=’H’) or (T=’h’) Then …

 

Komutu ile T değişkeninin değeri E,e,H,h harflerinden birine karşılık gelip gelmediğini kontrol edilmektedir. Bu ifade yerine;

 

IF T in [‘E’,’e’,’h’,’H’] Then ….

Komutu kullanılabilir. Bu iki kullanım şekli aynı anlama gelmektedir.

 

Örnek :

IF (secim>=0) and (Secim <=5) then …..

Komutu ile Secim (Integer) değişkeninin değeri =’ dan büyük eşit ve 5 ten küçük eşit olması durumu tespit ediliyor. Bu komut yerine;

 

IF Secim In [0..5] then …

 

Komutu kullanılabilir.

 

 

 

 

 

Örnek ;

 

Uses Crt;

Var

            Tus : Char ;

Begin

            Repeat

            Clrscr;

            Writeln (‘ 1-ekranda listeleme ‘);

            Writeln (‘ 2-yazicidan listeleme ‘);

            Writeln (‘ 3,esc-CIKIS ‘);      

            Repeat

            Tus:=Readkey;

Until tus IN [‘1’..’3’,#27];

Case Tus Of

            ‘1’ : ;

            ‘2’: ;

            end

until Tus IN [‘3’,#27];

end.

           

IV-TANIMLAMA BLOKLARI      :

Program içerisinde kullanılacak değişken, sabit, etiket ve tip tanımlamak için VAR, CONST, LABEL ve TYPE tanımlama blokları kullanılır. Şimdi tanımlama bloklarını sırasıyla görelim.

 

VAR (Değişken Tanımlama)           :

Turbo Pascal’ da program içerisinde kullanılacak bütün değişkenlerin programın uygun yerlerinde tanımlanmaları gerekir. Değişken tanımlamak için VAR tanımlama bloğu kullanılır.

Yazılımı            :

VAR

            Değişken1[,değişken2…]: Tip ;

 

Genel yazılımdan görüleceği gibi, aynı tipte olan değişkenler aralarına (,) konarak yan yana yazılabilirler. Tip isminden önce (:) kullanılır.

 

Örnek  :

            Var

                        Name                          : string [25];

                        Not1,Not2,Not3         : Byte; 

                        Maas, Borc, Alacak     : LongInt;

                        Number                       : Word;

                        Ortalama                     : Real;

                        Harfler                         : Array [1..26]of Char;

 

Örnektede görüldüğü gibi; aynı tipte olan Not1, Not2 ve Not3 değişkenleri yan yana yazılabilir. Ancak bunlar aşağıdaki gibi ayrı ayrıda yazılabilir.

 

 

 

Var

            Not1    : Byte;

            Not2    : Byte;

            Not3    : Byte;

 

Bir veya birden fazla değişken bir VAR bloğunda kullanılabileceği gibi bütün değişkenler bir VAR bloğunda toplanabilir.

 

Örnek  ;

Var

            Adres              : String [50];

            Telefon : String [10];

Var     

            Not1,Not2       : Byte ;

            Sehir                : String[20];

            Kodno             : Integer;

            X,Y                 : Array [1..10,1..5] Of real;

Bu örneklerde değişkenler düzenli olarak yazılmışlardır. Ancak böyle bir sınırlama yoktur. Değişkenler aşağıdaki gibi rastgelede yazılabilirler.

 

Örnek  :

Var

I,J        : Integer;

A,B,C  : ShortInt;

T          : Real; Tus: Char; Kod : String[12];

Sifre     : String[8];

 

Örneklerde, değişkenlerin ilk harfleri büyük yazılmıştır. Bunun programa hiçbir etkisi yoktur. İstenildiği gibi yazılabilir. Yani bütün harfler büyük küçük veya karışık olarak yazılabilir. Ancak A(büyük A) olarak tanımlanan değişken ile a (Küçük a) değişkeni aynıdır. Bir diğer özellik ise; aynı isimli birden fazla değişken tanımlanamaz.

Turbo Pascal’ da programın çalışmaya başlamasıyla değişken değerleri sıfırlanmaz. Bunun için sıfırlanması gereken değişkenler, program başında veya gerekli yerlerde sıfırlanmalıdır.

 

CONST (Sabit Tanımlama) :

Sabit tanımlamak için kullanılır. Bo bölümde ilk değere sahip değişkenler tanımlanabileceği gibi, program sonuna kadar değeri hiç değişmeyen sabit (değişken)’ lerde tanımlanabilir.

 

Yazılımı            :

 

CONST

            SabitAdı[:tip]=değer;

Buradaki [:tip] ifadesi kullanımının zorunlu olmadığını belirtiyor. Bu ifade kullanılmadığı zaman sabit adı olarak verilen değişkene aktarılan değer program içerisinde değiştirilemez. Kullanılması durumunda ise aktarılan değer bu değişken için “ilk değer” anlamını taşır ve program içerisinde değeri değiştirebilir.

 

 

 

 

Örnek  :

 

Const

            Max     :           Integer = 500;

            Min      :           Integer = 100;

            Artis     :           Real = 0.1;

            Enter    =  #13;

            Esc = #27;

            Sifre : String[9]=’SANLIURFA’;

            Mesaj = ‘ IYI CALISMALAR’;

 

Burada Enter, Esc ve Mesaj değişkenlerinin değeri program içerisinde değiştirlemez. Diğer değişkenlerin değerleri istenilirse değiştirilebilir. Yukarıdaki tanımlamada Max değişkeni 500, Min değişkeni 100, Artis değişkeni 0.1 ve sifre değişkeni SANLIURFA ilk değerlerini almaktadırlar. Bu değerler program içerisinde değiştirilebilir. Bu tanımlama bloğunda sabit veya ilk değer olarak dizilere değer aktarılabilir.

 

Örnek  ;

Type

            Dizi = Array [0..4] Of Byte;

Const

            Sayilar : Dizi=(1,2,3,4,5);

 

Bu tanımlama ile sayılar isimli indisli değişkenin değerleri aşağıdaki gibi olur.

 

            Sayılar[0] = 1

            Sayılar[1] = 2

            Sayılar[2] = 3

            Sayılar[3] = 4

            Sayılar[4] = 5

 

Örnek :

 

Const

            Sayilar : Array [0..1,0..2] of = ((1,2,3),(4,5,6)) ;

 

Bu tanımlama ile

            Sayılar[0,0] =1

            Sayılar[0,1] =2

            Sayılar[0,2] =3

            Sayılar[1,0] =4

            Sayılar[1,1] =5

            Sayılar[1,2] =6 olur.

TYPE              :

 Kullanıcının kendi isteğine göre özel veri tanımlaması için kullanılır.

 

Yazılımı            :

            TYPE

            TipAdı :Tip;

Burada kullanılan ‘ Tip’ Turbo Pascal’ daki herhangi bir tip olabileceğigibi, kullanıcının daha önce veya Uses komutandaki Unit(ler)’ in interface bölümünde tanımladığı bir tipte olabilir.

 

Örnek  :

 

TYPE

            Dizi = Array [0..100] of Integer;

            St20= String[20];

 

Buradaki Dizi ve St20 birer tip isimleridir (Integer gibi). Bu isimler bir değişken olarak kullanılamazlar. Ancak tip adı olarak kullanılabilirler.

 

Örnek  :

 

Var

            Isim =St20; Sayilar =Dizi ;

 

Bu tanımlamalarda da görüldüğü gibi isim veya sayilar isimli değişkenler kullanıcının kendi tanımladığı tipler yardımıyla tanımlanmışlardır.

 

Örnek  :

Type

            Tamsayi           =Integer;

            Notlar              = 0..100;

            Sayi                 =-99..99;

            BilgiTipi           =Array[1..40] of String [30];

            EkranTipi         =Array[1..25,1..80,1..2] of byte;

            Ekran               =Array[1..4000] of char;

 

Burada tanımlanan “sayi” ve “notlar” isimli tipler başka hiçbir tipe ihtiyaç duyulmadan tanımlanan tiplerdir. Notlar tipi 0-100 aralığında ve Sayi tipi ise -99 ile 99 aralığında değerler alabilirler. “notlar” tipi bu haliyle 1 byte lık yer kaplar. Çünkü sınırları BYTE tipi sınırları içerisindedir. Eğer “notlar” tipi

 

Type

            Notlar : -1..100;

Şeklined tanımlanırsa, bu durumda ShortInt sınırları arasında değer alır ve 1 byte’ lık yer kaplar. Şayet;

Type

Notlar = 0..5000;

Olarak tanımlanırsa, bu durumda Word tipi sınırlarına girer ve 2 byte’ lık yer kaplar.

 

Type

            Notlar =-50000..100000;

Olarak tanımlandığı taktirde Longınt tipi sayı sınırına girer ve hafızada 4 byte’ lık yer kaplamış olur. Bu şekilde tanımlanan tipler aşağıda ki sınırlara göre hafızada yer kaplarlar.

 

LABEL                      :

Etiket tanımlamak için kullanılır. Etiketler program içerisinde GOTO komutu ile işlemin gideceği yeri belirtir.

 

Yazılımı            :

 

LABEL

            EtiketAdı1[,EtiketAdı2,….];

 

Yazılımdanda görüldüğü gibi birden fazla etiket adı yazılabilir. Bu durumda aralarına (,) işareti konulur. Etiket isimleri alfasayısal bilgi olabiliceği gibi, sayısal bilgise olabilir. Alfasayısal olması durumunda “tanıtıcı ismi” özelliklerine sahip olması gerekir. Sayısal olması halinde ise 0 ile 9999 aralığında olmalıdır.

 

Örnek ;

LABEL

            Basla,Cikis,20,

            Proc5,Hesaplama;

 

Goto Komutu kullanılarak program akışı bu etiketlerin olduğu bölümlere yönlendirilebilir (Goto komutu özelliklerine göre).

 

Label

            1Basla,45000;

 

Bu iki etiket adı geçersizdir. “1basla” tanıtıcı ismine uygun değil (rakam ile başlamış), “45000” etiket adı ise 0-9999 sınırları dışında kalmaktadır.

 

V- OPERATÖRLER            :

Turbo Pascal’ da operatörler şöyle sınıflandırılırlar;

 

 

Aritmetik Operatörler          : aritmetik işlemlerin yapımlısını sağlayan operatörlerdir.

 

AÇIKLAMA

GÖREVİ

OPERAND TİPİ

SONUÇ

+

Toplama

Integer

Real

Integer

Real

-

Çıkarma

Integer

Real

Integer

Real

*

Çarpma

Integer

Real

Integer

Real

/

Bölme

Integer

Real

Integer

Real

Div

Tamsayı bölme

Integer

Integer

Mod

Kalan

Integer

Integer

 

 

+,-,*,/ operatörlerinde, işleme herhangi bir real sayı veya real tipte bir değişkenin girmesi durumunda işlem sonucunda real sonuç elde edilir. / operatöründe işlemin sonucu real’ dir. Yani sonuçta tamsayı değer veren bir işlem olması durumunda bile sonuç real’ dir. Mesela 6/2 işleminin sonucu 3.0 dır ve 3.0 real tipte bir bilgidir.

 

Örnek  ; C değişkeninin Integer tipte bir değişken olduğunu kabul edersek aşağıdaki işlemleri inceleyiniz.

 

C:=3.5             yanlış. Integer tipteki C değişkenine real değer aktarılıyor.

C:= C+1.0       Yanlış. 1.0 real tipte bir bilgidir. Sonuç real’ dir. Integer tipteki C değişkenine aktarılamaz.

C:=C/2                        Yanlış. Bölme (/) operatörünün sonucu realdir.

 

 

Div ve Mod Operatörleri     :  Div operatörü tam sayılı bölme işlemi için kullanılır. Sonucu Integer tipte bir bilgidir. Aşağıdaki işlemleri inceleyelim. 

3 Div 15 = 0

15 Div 3 = 5

16 Div 3= 5

 

Mod operatörü, bölme işlemi sonucunda kalan değeri verir. Sonucu Integer tipte bir bilgidir. Aşağıdaki işlemleri inceleyelim;

 

3 Mod 4 = 3

4 Mod 4 = 0

10 Mod 3 = 1

 

Mod ve Div işlemleri operatörleri normal işlemleri içinde kullanılabilir. Bunu anlamak için aşağıdaki örneği inceleyelim.

5+3*2-6 Div 2

 

Mantıksal Operatörler         : Logic (mantıksal) işlemlerin yapılmasını sağlayan operatörlerdir.

 

Operatör

Görevi

Operand tipi

Sonuç

Not

Değil

Boolean

Boolean

And

Ve

Boolean

Boolean

Or

Veya

Boolean

Boolean

Xor

Veya değil

Boolean

Boolean

 

Karşılaştırma Operatörleri   :  Karşılaştırma işlemlerinin yapılmasını sağlayan operatörlerdir. Bu operatörler aşağıda verilmiştir.

 

=          : Eşit

<>       : Farklı

<          : Küçük

>          : Büyük

<=       : Küçük Eşit

>=       : Büyük Eşit

Bir karşılaştırma işleminin sonucunun Boolean olduğu unutulmamalıdır.

Matematiksel Formüller      : Normal olarak yazılan formüllerin, Pascal dili içerisinden yazılımında bazı kurallara uyulması gerekir. Matematiksel formüllerin yazılımında dikkat edilmesi gereken ilk nokta, aritmetik operatörlerin işlem önceliklerine göre doğru olarak kullanılmasıdır.

 

İşlem öncelikleri           ;

Parantez içi

Üs alma

Çarpma-Bölme

Toplama-Çıkarma

 

 

 

 

 

TURBO PASCAL KOMUTLARI

GİRİŞ        :

         Bu bölüme kadar sadece tanımlamalar üzerinde duruldu. Buradan başlayarak Turbo Pascal’ da kullanılan komutları birer birer ele alıp inceleyeceğiz. Her komutla beraber bu komutun ait olduğu Unit ve Procedure veya Function’ mı, olduğu beraberinde verilecektir.  Komutun yaptığı işlemden sonra, genel kullanım şekli verilecektir. Genel kullanım (Yazılımı) içerisinde bazı özel işretler kullanılacaktır. Bunlar ;

[  ]       : İki köşeli parantez arasına yazılan bilginin zorunlu olmadığını belirtiyor. İstenilen durumda kullanılabilir. Kullanımı isteğe bağlıdır.

 

|           : Veya anlamına gelir. İki veya daha fazla durumdan herhangi birinin kullanılabileceği anlamını taşır.

Verilen komutların görevlerini anladıktan sonra, ardından verilen örnek programları dikkatlice incelemeniz sonra bilgisayar ile uygulamasını yapmanız, çok yararlı olacaktır. Programcılığı öğrenmenin tek yolu çok sayıda program yazmak ve bunlar üzerinde sık sık değişiklikler yaparak, yapılan değişikliklerin program üzerindeki etkilerini öğrenmektir.

Bir problem çok farklı algoritmalarla çözülebilir. Programcı kendi düşünce şekline veya öğrendiği problem çözme yeteneğine göre çözüme farklı yollarla yaklaşabilir. Bu nedenle kitapta verilen programların normal çözüm şeklini anladıktan sonra, başka yollarla çözmeniz programcılığınız için çok yararlı olacaktır. Turbo Pascal’ da, program herhangi bir forma bağlı kalmadan istenildiği gibi yazılabilir. Yani istenilen kolonlardan başlanabilir. Komutlar alt alta gelebileceği gibi yan yana da gelebilirler. Bunun yanında bazı önemli kuralları da vardır. Her komuttan sonra noktalı virgül kullanılır. Blok başlatan komutların sonunda bulunmaz.  İşlemler Begin-End blokları arasında yapılır. İç içe istenilen sayıda Begin-End bloğu kullanılabilir. Bunu bir örnek ile açıklayalım.

Verilen bir sayının 1’ e eşit olması durumunda 1’ den 100’ e kadar olan sayılarla beraber toplamını hesaplayıp sonucu ekrana yazan programı beraber yazalım.

Uses CRT;

Var

S,I,T : Word;

Begin

     ClrScr;

     Write(‘BIR SAYI GIRIN : ‘); Readln(S);

     If S=1 Then

Begin

     T:=0;

     For I:= 1 TO 100 DO

Begin

T:=T+I;

Write(I:8);

End;

Writeln(‘TOPLAM = ’,T) ;

End ;

Readln;

End.

 

 

Burada verilen sayının bir olması durumunda THEN komutundan sonra verilen Begin-End bloğu içerisindeki bütün komutlar işlem görür. Şartın yanlış, yani S’ in birden farklı olması durumunda durumunda programın bulunan End komutundan sonraki komut veya komutlar işlem görür. Görüldüğü gibi begin-end blokları rastgele kullanılmıyor. Begin-end blokları, for-do, while-do, if-then-else, ve with-do komutları ile birden fazla işlem yapılması gerektiği durumlarda zorunlu olarak kullanılması gerekir. Şayet bu komutlarda şart veya döngü içerisinde işlem görecek komut sayısı tek ise begin-end bloğunun kullanılması zorunlu değildir. Bunun dışında Begin-End blokları kullanılmaz. Daha detaylı bilgi için ilgili komutlar incelenebilir.

Pascal’ da bir diğer önemli nokta ise, büyük küçük harf ayrımının olmamasıdır. Bunu aşağıda verilen iki örnek program yardımıyla görmek mümkündür. Her iki programın yaptıkları iş aynıdır.

 

Program ilkprogram;

Begin

            Writeln(‘Turbo Pascal a hoşgeldiniz’);

End.

 

PROGRAM ILKPROGRAM ;

BEGIN

            WRITELN (‘Turbo Pascal A HOŞGELDİNİZ’);

END.

Program içerisinde kullanılan tanıtıcılar ve Pascal kelimeleri büyük veya küçük harfle yazılabilirler. Hatta bir karakteri büyük diğerleri küçük (karışık olarak) yazılabilir.

Buradan başlayarak komutları ilk önce bölüm bölüm, daha sonra bütün komutları bulundukları unit’ lere göre anlatacağız. Her komuttan sonra verilen açıklama ve örnekleri tam olarak incelemeniz ve örnekleri karalama olarak da olsa birkaç defa çözmeniz konuyu anlamanız için yeterli olacaktır. Bir komutu tam olarak anlamadan diğer bir konuya geçmeyiniz.   Verilen program parçalarının mantıksal olarak çalışma şeklini anladıktan sonra bu programları bilgisayarda uygulamanız ve üzerinde değişiklikler yaparak farklı programlar üretmeniz konuyu pekiştirmeniz açısından çok daha faydalı olacaktır.

 

GİRİŞ-ÇIKIŞ komutları       :

Bilgisayarın belleğine bilgi göndermek ve/veya bilgileri tekrar kullanıcıya yansıtmak için kullanılan komutlardır.

WRITE-WRITELN              :

Sabit, değişken veya işlem sonuçlarının bir dosya veya ekrana yazılmasını sağlar.

 

Yazılımı            ;

Writeln(ifade)

Veya

Write(ifade)

Burada belirtilen ifade; sabit, değişken veya işlem olabilir.

Not: bu komut dosyalardada kullanılır. Bunun için dosyalarla ilgili “DOSYALAMA” bölümüne bakınız.

Bu komutun ilk yazılımında yazılan bilgilerden sonra yazma işlemi bir alt satırdan itibaren devam eder (kursör bir sonraki satıra geçer). İkinci yazılımda, komutun işlevi tamamlandıktan sonra bir sonraki Write veya Writeln komutunun yaptığı işlem aynı satırdan itibaren devam eder (kursör bir alt satıra geçmez). Yani WriteLn ile yazılar yazıldıktan sonra kursör bir sonraki satıra geçer. Write komutunda ise kursör bir alt satıra geçmez, aynı satır üzerinde en son yazılan bilgiden sonra bekler.

Yazılan sabit bilgi ve mesajlar apostrof (‘ ‘) işaretleri arasına yazılırlar.  Buraya yazılan bilgi ve mesajlar doğrudan ekrana çıkarla. Birden fazla sabit bilgi, mesaj, değişken veya işlem olması durumunda aralarına virgül işareti konur. WriteLn komutu tek başına kullanıldığı zaman, yazma işlemine bir sonraki satırdan devam edilir.  Yani kursör bir sonraki satıra geçer.

 

Begin

            Writeln (‘Turbo Pascal öğreniyorum’);

            ReadLn;

End.

 

Not      : başlangıçta yapacağımız örneklerde program sonunda ReadLn komutunu kullanacağız. Bu komut yerine ileriki konularda daha pratik kullanım sağlayan ReadKey komutunun kullanıldığını göreceksiniz. ReadLn komutu Enter tuşuna basılmasını bekler. Yani programın bitiminde çalışma ekranından Pascal editörüne geçiş için   Enter tuşuna basılmasını sağlar. Böylece nelerin ekrana yazıldığı kolayca görülür. Aksi halde editöre döndükten sonra oluşan son görüntüyü görmek için ‘ DEBUG’ menüsündeki  “User Screen” seçeneğinin seçilmesi yada bu bölümün kolay tuşu olan ALT+F5 tuşlarına basılması gerekir.

 

Program içerisinde kullanılacak olan değişkenleri tanımlamak için Var bloğunun kullanıldığını ve atama işlemlerinde “:=” kullanıldığını hatırlatarak yeni bir program örneği yazalım.

 

Örnek  :

Var

A,B : Integer ;

Begin

A:=40;

B:=30;

Writeln(‘A=’,A);

Writeln(‘B=’,B);

Writeln(‘A+B =’,A+B);

Writeln(‘A-B=’,A-B);

ReadLn ;

End.

 

Yukarıdaki programdan da görüldüğü gibi (‘ ’) apostrof arasına yazılan  bilgiler olduğu gibi ekrana yazdırılır. Bu bilgiler açıklama amaçlı bilgilerdir. Ancak Apostrof işaretleri dışına yazılan bilgiler değişken isimlerdir ve bunların sahip oldukları değerler yazdırılır. Ayrıca işlemlerde yapılabilir.

 

Tam Sayılı İfadeler   :

Tam sayılı ifadelerde formatlı yazım için aşağıdaki yazılım şekli kullanılır.

 

İfade : Uzunluk

Burada belirtilen uzunluk, sayısal ifadenin yazılacağı toplam hane sayısını belirtir. Verilen ifade bu alana sağ dayalı olarak yazılır. Sayısal ifadedeki hane sayısı uzunluk değerinden fazla ise fazla karakter sayısı kadar hane sağa doğru kayar .

 

Örnek

Uses CRT;

Begin

ClrScr;

Writeln(123456);

Writeln(1:6);

Writeln(12:6);

Writeln(123:6);

Writeln(1234:6);

Writeln(12345:6);

Writeln(123456:6);

End.

 

Çıkacak sonuç budur ;

123456

          1

        12

      123

    1234

  12345

123456

 

Real İfadeler : Ondalıklı ifadelerde formatlı yazı için aşağıdaki yazılım şekli kullanılır.

İfade:Uzunluk:Ondalık

Burada belirtilen “uzunluk” sayısal ifadenin yazılacağı toplam hane sayısını, “ondalık” ise ondalıklı noktadan sonra yazılacak hane sayısını belirtir. Uzunluk değeri, tam sayı kısmı+ondalıklı nokta+ ondalıklı kısımdaki hane sayısına eşittir. İfade bu alana sağa dayalı olarak yazılır.

 

Uses Crt;

Var

X:Real;

Begin

Clrscr;

X:=469.2763456;

Writeln(x);

Writeln(x:10);

Writeln(x:10:6);

Writeln(x:10:5);

Writeln(x:10:4);

Writeln(x:10:3);

Writeln(x:10:2);

Writeln(x:10:1);

Writeln(x:10:0);

End.

 

Çıkış ;

4.6927634560E+02

4.693E+02

 469.276346

   469.27635

     469.2763

       469.276

         469.28

           469.3

              469

 

 

READ-READLN      (PROCEDURE):

 

Klavye vasıtasıyla bilgisayara bilgi göndermek için kullanılır. Gönderilen bilgiler tanımlanan değişkenlerde tutulurlar.

Yazılım :

            Read ([f,]değişken listesi)

Veya

            ReadLn ([f,]değişken listesi)

f : Bilginin okunacağı dosyayı temsil eden değişkendir.

Değişken listesi : Girilecek olan bilgi sayısı ve tipine göre, bilgilerin tutulacağı değişkenlerdir. Değişken sayısının birden fazla olması durumunda aralarına virgül (,) işareti konur.

 

Örnek  ; Girilen iki sayının toplam ve çarpımını hesaplayan program.

 

var

   X,Y  : Integer;

Begin

     write('1. sayiyi girin   :');

     readln(x);

     write('2. sayiyi girin   :');

     readln(y);

     WriteLn('sayilarin toplami=',X+Y);

     WriteLn('sayilarin carpimi=',X*Y);

     readln;

end.

 

Sonuç ;

 

Turbo Pascal  Version 7.0  Copyright (c) 1983,92 Borland International

1. sayiyi girin   :15

2. sayiyi girin   :35

sayilarin toplami=50

sayilarin carpimi=525

 

 

 

 

Örnek  ; Girilen 3 adet not bilgisini alarak not ortalamasını hesaplayan program.

 

uses crt;

var

n1,n2,n3 :byte;

ort : Real;

Begin

ClrScr;

write('1. not   : ');readln(n1);

write('2. not   : ');readln(n2);

write('3. not   : ');readln(n3);

ort:=(n1+n2+n3)/3;

write('not ortalamasi =',ort:6:2);

readln;

End.

 

Çözüm ;

1. not   : 8

2. not   : 7

3. not   : 10

not ortalamasi =  8.33

 

 

Açıklama : buraya kadar yazılan programlarda ekran temizleme komutu olan CLRSCR komutu hiç kullanılmadı. Programların daha düzenli olması için ‘CRT’ Unit’ ine ait olan CLRSCR komutunu bundan sonraki örneklerde kullanacağız. Bunun için program başında “USES CRT;” komutu kullanılacaktır. Detaylı bilgi için “ekran komutları bölümüne bakınız.

 

Örnek ;

uses crt;

var

ad : string[20];

fiat : real;

Kdv : real;

kdvfiat : real ;

begin

clrscr;

write ('urun adi        : ') ; readln(ad);

write ('fiyat           : ') ; readln(fiat);

write ('KDV orani       : ') ; readln(kdv);

kdvfiat:=fiat+((fiat/100)*kdv);

write ('bu urunun kdv dahil fiyati : ',kdvfiat);

readln;

end.

 

Çalışması ;

urun adi           : halley

fiyat              : 100

KDV orani      : 12

bu urunun kdv dahil fiyati :     112.00

 

Programda kullanılan değişken ve işlemleri kısaca açıklayalım:

 

Var bölümünde, ürün adı alfabetik bilgi olduğundan Ad:String [20] tanımı ile 20 karakterlik string değişken olarak tanımlanmıştır. Ürünün fiyatı ve KDV’ li fiyatı için Fiat, Kdv ve Kdvfiat değişkenleri Real olarak tanımlanmıştır.

 

Örnek  ; ABC Tavukçuluk işletmesi günlük yem, ilaç ve genel giderlerini (su,elektrik, 1 veteriner hekim ve 2 işçi) hesaplamak istemektedir. Giderler ve fiyatları aşağıda olduğu gibidir.

 

-Yem gideri tavuk başına 150 gram/gün                       yem fiyatı 20.000 tl/kg

-İlaç gideri tavuk başına 1000TL/gün              

-elektrik tüketimi 50 kwatt/gün                        Elektrik fiyatı 500 tl/Kwatt

-Su tüketimi 5 ton/gün                                     Su fiyatı 10.000 TL/Ton

-veteriner hekim ücreti 1.000.000 tl/gün ve ek olarak tavuk başına 1000 tl

-İşçi ücreti 750.000 TL/gün

 

girilen tavuk sayısına göre günlük toplam giderleri hesaplayan program

 

uses crt;

 

var

tavuk,yem, ilac, elektrik, su, veteriner, isci, toplam:  real;

 

begin

clrscr;

write('Ciftlikte kac tane tavuk var  : '); readln(tavuk);

yem:=((20000/1000)*150)*tavuk;

ilac:=1000*tavuk;

elektrik:=50*500;

su:=5*10000;

veteriner:=(1000*tavuk)+1000000;

isci:=750000;

writeln('Gunluk Yem Masrafi      : ', yem:15:2);

writeln('Gunluk Ilac Masrafi     : ', ilac:15:2);

writeln('Gunluk Elektrik Masrafi : ', elektrik:15:2);

writeln('Gunluk Su Masrafi       : ', su:15:2);

writeln('Gunluk Veteriner Masrafi: ', veteriner:15:2);

writeln('Gunluk Isci Masrafi     : ', isci:15:2);

toplam:=yem+ilac+elektrik+su+veteriner+isci;

writeln('toplam gunluk masraf    : ',toplam:15:2,' TL');

readln;

end.

 

Çalışma Şekli ;

Ciftlikte kac tane tavuk var  : 134

Gunluk Yem Masrafi          :       402000.00

Gunluk Ilac Masrafi         :       134000.00

Gunluk Elektrik Masrafi     :        25000.00

Gunluk Su Masrafi           :        50000.00

Gunluk Veteriner Masrafi    :      1134000.00

Gunluk Isci Masrafi         :       750000.00

toplam gunluk masraf               :      2495000.00 TL

 

 

 

Örnek  ;

Verilen bir isim bu seneyi ve doğum yılını girerek, isim ve yaş olarak ekrana görüntüleyen programı yazınız.

 

{bu program seneyi girip sonra da dogum yilini, ekrana adinizi ve kac

yasinizda oldugunuzu bildiren program}

 

uses crt;

var

sene, dogum, sonuc: integer;

isim: string[20];

begin

clrscr;

write('adiniz           : ');readln(isim);

write('yili girin       : ');readln(sene);

write('dogum yili       : ');readln(dogum);

sonuc:=sene-dogum;

writeln(isim,' ',sonuc,' yasindadir');

readln;

end.

 

Çalışma şekli ;

 

adiniz           : murat

yili girin       : 2005

dogum yili       : 1982

murat 23 yasindadir

 

 

 

KARŞILAŞTIRMA (KARAR VERME) KOMUTLARI :

Program akışını verilen şartlara göre değiştirmek için kullanılan komutlardır. Program içerisinde şartlara göre farklı farklı işlemler yapılması istenebilir. Hangi durumda hangi işlemlerin yapılıp yapılmayacağını, başka bir ifade ile hangi durumda hangi komutların işlem görüp görmeyeceğini kontrol altında tutmak için bu komutlar kullanılır. Turbo Pascal ‘ da karşılaştırma işlemlerini yapmak için IF-THEN-ELSE ve CASE-OF komutları kullanılır.

 

IF-THEN-ELSE        :

Verilen şartların doğru veya yanlış olması durumunda istenen işlemleri yapmak ve buna göre program akışını değiştirmek için kullanılır.

 

Yazılımı            :

IF Şart THEN komut veya komutlar [ELSE komut veya komutlar]

 

 

IF komutunda verilen şart doğru olursa THEN komutundan sonraki komut veya komutlar işlem görür. ELSE komutunun kullanımı seçimliliktir. Şayet şart yanlış olursa bu durumda; eğer ELSE kullanılmışsa ELSE’ den sonraki komut veya komutlar, ELSE kullanılmamışsa bir sonraki komut veya komutlara geçer. Şartın doğru veya yanlış olması durumunda işlem görecek olan komut sayısı eğer birden fazla ise bu durumda işlemler BEGIN-END blokları arasına yazılırlar. İç içe birden fazla blok kullanılabilir. ELSE komutundan önceki komutun sonunda “;” işareti kullanılmaz. Kullanılması durumunda “Errorin statement” derleme hatası oluşur.

 

IF A>B then A:=A-1 ELSE B:=B-1;

 

Yukarıdaki program satırında A’ nın Değeri B’ den büyük ise A:=A-1 ifadesi işlem görür ve bu ifade ile A’ nın değeri ! azaltılır. A’ nın değeri  B’ den büyük değilse yani küçük veya eşit ise B:=B-1 ifadesi işlem  görür ve bu ifade ile B’ nin değeri 1 azaltılır.

 

Şart olarak verilen ifade sayısı birden fazla olabilir. Bu durumda mantıksal operatörlerden faydalanılır. İfadeler bu operatörler aracılığı ile bir birine bağlanırlar. Bunun için “mantıksal operatörler” bölümüne bakınız.

 

İf (a>b) and (a>c) then Writeln (‘ A BUYUK’) ;

 

Yukarıdaki program satırı ile A’ nın değernini B ve C den daha büyük olması durumunda ekrana “A BÜYÜK” mesajı yazdırılıyor. Bu mesajın ekrana yazdırılması için  A’ nın değerinin hem B’ den  hem C’ den büyük olması gerekir.  Aksi taktirde mesaj ekrana yazdırılmaz.

 

Örnek  ;

Verilen bir sayının pozitif, sıfır veya negatif olduğunu bulan program.

 

 

(*bu program girilen bir sayinin negatif, sifir yada pozitif oldugunu bulur*

uses

crt;

var

sayi: real;

sonuc :string[15];

begin

clrscr;

write('bir sayi girin  :'); readln(sayi);

if sayi<0 then writeln('girdiginiz sayi negatif bir sayidir');

if sayi=0 then writeln('girdiginiz sayi sifira esittir');

if sayi>0 then writeln('girdiginiz sayi pozitiftir');

readln;

end.

Çalışma şekli ;

bir sayi girin  :15

girdiginiz sayi pozitiftir

 

İç içe birden fazla if komutu kullanılabilir. Daha doğrusu Then veya Else’ den sonra yazılan “komut veya komutlar” içerisinde bir veya birden fazla if komutu kullanılabilir. İç içe IF-THEN-ELSE komutu kullanılması durumunda ilk olarak karşılaşılan ELSE seçimlilik komutu kendisinden önceki bloğu başlatan If komutuna aittir.

Yukarıda verilen programı IF-THEN-ELSE komut yapısını kullanarak yazalım.

(*girilen sayinin negatif pozitif yada sifira esit oldugunu if-then-else komut

yapisini kullanarakyapan program*)

Uses crt;

var

sayi : integer;

begin

clrscr;

write('sayi giriniz : '); readln(sayi);

if sayi<0 then write('girdigin sayi negatif bir sayidir')

   else if sayi=0 then write('girdigin sayi sifira esittir')

   else if sayi>0 then write('girdigin sayi pozitif bir sayidir');

   readln;

   end.

sayi giriniz : 15

girdigin sayi pozitif bir sayidir

 

 

Örnektede görüldüğü gibi üç if komutu yerine sadece iki if komutu kullanılmıştır. Her bir Else komutu kendisinden önceki If komutunun yanlış değer üretmesi durumunda işlem görecektir.

 

Örnek  ;

 

 

(*bir ogrencinin bir dersten aldigi 3 adet not bilgisi giriliyor.

  not ortalamasini hesaplayarak "kaldi" veya "gecti" seklinde mesaj veren

  program*)

 

uses crt;

var

nt1, nt2, nt3, ortalama : real;

begin

clrscr;

write('birinci sinav notu     : '); readln(nt1);

write('ikinci sinav notu      : '); readln(nt2);

write('ucuncu sinav notu      : '); readln(nt3);

ortalama:=(nt1+nt2+nt3)/3;

write(ortalama:10:2);

if ortalama<45 then write('  KALDI  ') ELSE write('  GECTI');

READLN;

END.

 

birinci sinav notu     : 60

ikinci sinav notu      : 76

ucuncu sinav notu      : 83

     73.00  GECTI

 

 

Örnek  ;

 

(*BIR MAGAZA MUSTERELERINE YAPTIKLARI ALISVERIS TUTARINA GORE INDIRIM

  YAPMAKTADIR.

  2.000 YTL' YE KADAR OLAN ALISVERISLER ICIN %10

  2.000-4.000 YTL ARASI ALISVERISLER ICIN %15

  4.000 YTL' DEN DAHA FAZLA OLAN ALISVERISLER ICIN %20

BUNA GORE ALISVERIS TUTARI VERILEN BIR KISININ ODEYECEGI NET MIKTARI

HESAPLAYAN PROGRAM*)

 

USES

crt;

 

VAR {atayacagimiz degerler}

tutar    : real; {alisveris tutari degeri}

indirim  : real; {indirim yuzdesi}

nethesap : real; {musterinin odemesi gereken ucret}

 

begin {program baslangici}

clrscr;

write('ALISVERIS TUTARI NE KADAR        : ');READLN(tutar); {alisveris

tutarini girdigimiz satir}

if tutar<2000 then indirim:=10 else

   if (tutar>2000) and (tutar<4000) then indirim:=15 else

   if tutar>4000 then indirim:=20; {burada indirimin hangi aralikta oldugunu

   buldugumuz satirlardir}

 

nethesap:=tutar-((tutar/100)*indirim); {musterinin odemesi gereken miktari

hesaplayan satir}

writeln('size %',indirim:0:2,' uygulanmistir');

writeln('hesabiniz         : ', tutar:10:2);

writeln('odemeniz gereken  : ', nethesap:10:2);

{ekrana dokumlerin verildigi satirlar}

readln;

end.

 

Sonuç ;

ALISVERIS TUTARI NE KADAR        : 1250

size %10.00 uygulanmistir

hesabiniz         :    1250.00

odemeniz gereken  :    1125.00

 

ALISVERIS TUTARI NE KADAR        : 2500

size %15.00 uygulanmistir

hesabiniz         :    2500.00

odemeniz gereken  :    2125.00

 

ALISVERIS TUTARI NE KADAR        : 4500

size %20.00 uygulanmistir

hesabiniz         :    4500.00

odemeniz gereken  :    3600.00

 

 

Örnek;

(*bir kisiye ait cinsiyet, boy ve kilo bilgilerini alarak asagidaki

sartlara gore; kisinin ideal kiloda olup olmadigini, kac kilo almasi veya

kac kilo vermesi gerektigini bulan program

    ideal kilo   : bayanlarda ; boy-110

                   erkekler   ; boy-108

*)

 

uses crt;

var

kilo, boy, fark, ideal        : integer;

cinsiyet                      : Char;

 

begin

 

repeat

clrscr;

       write('cinsiyet   erkek(e) bayan (b)     : ');readln(cinsiyet);

       until cinsiyet in ['B','b','E','e'];

       write('Kilo                              : ');readln(kilo);

       write('Boy                               : ');readln(boy);

if (cinsiyet='b') or (cinsiyet='B') then ideal:=boy-110 else

                                         ideal:=boy-108;

 

if ideal<kilo then   writeln(kilo-ideal,' kilo vermelisiniz') else

  if ideal>kilo then writeln(ideal-kilo,' kilo almalisiniz') else

                     writeln('Bravo ideal kilodasiniz');

  readln;

  end.

cinsiyet   erkek(e) bayan (b)     : e

Kilo                              : 77

Boy                               : 174

11 kilo vermelisiniz

 

cinsiyet   erkek(e) bayan (b)     : b

Kilo                              : 68

Boy                               : 163

15 kilo vermelisiniz

 

 

 

Bu programda ilk olarak cinsiyet bilgisinin girilmesi istenir. Bu bilginin B,b,E,e harflerinden biri olması şartı aranır. Girilecek diğer harfler kabul edilmez. Bu işlem için aşağıda ki bölüm kullanılmıştır.

 

repeat

clrscr;

       write('cinsiyet   erkek(e) bayan (b)     : ');readln(cinsiyet);

       until cinsiyet in ['B','b','E','e'];

 

daha sonra kilo ve boy bilgilerinin girilmesi istenir. Bu bilgiler ışığında kişinin ideal kilosu hesaplanır.

 

Örnek  ;

{girilen 10 adet sayidan

 pozitif sayilarin ortalamasini

 negatif sayilarin sayisini

 100 ila 200 arasindaki sayilarin toplamini veren program}

 

uses crt;

var

pst, pso,pss,  nss, yuz, rakam: real;

i: byte;

begin

clrscr;

pss:=0 ; nss:=0 ;yuz:=0; pst:=0;

 

for i:=1 to 10 do

begin

write(i, '. sayiyi girin        : ');readln(rakam);

if rakam <0 then nss:=nss+1;

if rakam >0 then begin pss:=pss+1; pst:=pst+rakam; end;

if (rakam >100) and (rakam<200) then yuz:=yuz+rakam;

end;

clrscr;

clrscr;

writeln ('pozitif sayilarin ortalamasi  : ', pst/pss:10:2);

writeln ('negatif sayilarin sayisi      : ', nss:10:0);

writeln ('100-200 Arasi Toplam          : ', yuz:10:2);

readln;

end.

 

1. sayiyi girin        : -14

2. sayiyi girin        : 456

3. sayiyi girin        : 134

4. sayiyi girin        : 168

5. sayiyi girin        : 65

6. sayiyi girin        : 34

7. sayiyi girin        : 978

8. sayiyi girin        : 345

9. sayiyi girin        : 532

10. sayiyi girin        : 678

 

pozitif sayilarin ortalamasi  :     376.67

negatif sayilarin sayisi      :          1

100-200 Arasi Toplam          :     302.00

 

 

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. Başka bir ifade ile verilen ifadenin karşılık geldiği sabit değerlere göre istenen işlemleri yapmak için kullanılır.

Yazılımı            :

CASE ifade OF

            Sabit 1: Komut veya Komutlar

            Sabit 2: Komut veya Komutlar

            ….

            ….

            ….

            Sabit N: Komut veya Komutlar

            [ELSE Komut veya Komutlar]

END.

 

CASE komutundan sonra yazılan ifadenin tipi tam sayı, char veya Boolean olabilir. Verilen ifade, sabit değerlerden ilk olarak hangisine uyarsa, sabit değer karşısındaki komut veya komutlar işlem görür. İki sabit ifadeye karşılık gelmesi durumunda ilk sabit değerin karşısındaki komutlar işlem görür. ELSE komutu, verilen ifadenin hiçbir sabit değere karşılık gelmemesi durumunda işlem görür. Kullanımı zorunlu değildir. Her CASE komutu bir END komutu ile son bulur.

 

Örnek  ;

 

            CASE Y OF {y Integer}

1                    : WriteLn(‘adana’);

2                    : WriteLn(‘adiyaman’);

3                    : WriteLn(‘afyon’);

4                    :  WriteLn(‘ağrı’);

END;

 

Bu program parçası ile Y değişkeninin değeri;

 

1 ise ekrana ADANA

2 ise ekrana ADIYAMAN

3 ise ekrana AFYON ve

4 ise ekrana AĞRI

mesajları yazdırılıyor.

Y değişkeninin 1,2,3 ve 4’ den farklı bir değer alması durumunda END komutundan sonraki komuta geçer.

 

 

 

 

 

 

 

Örnek  ;

 

{Girilecek iki sayi ve yapilacak islem turunu belirleyen operator bilgilerini

alarak, bu opratorlere gore işlem sonucu hesaplayip ekrana yazdiran program

program bu operatorlerden baskasinin girilmesi durumunda "yanliz operator"

mesaji verilecektir}

 

uses crt;

var

n1, n2 : LongINt;

sonuc  : Real;

oper   : Char;

Dogru  : Boolean;

Begin

Clrscr;

Dogru:=true;

write('1. sayiyi girin  : '); readln(n1);

write('2. sayiyi girin  : '); readln(n2);

write('islemi secin(+,-,/,*)  : '); readln(oper);

 

case oper of

     '+' : sonuc:=n1+n2;

     '-' : sonuc:=n1-n2;

     '/' : sonuc:=n1/n2;

Else dogru:=false;

end;

if not dogru then writeln('yanlis operator')

else writeln(n1,oper,n2,'=',sonuc:0:2);

readln;

end.

 

1. sayiyi girin  : 12

2. sayiyi girin  : 34

islemi secin(+,-,/,*)  : /

12/34=0.35

 

 

DÖNGÜ KOMUTLAR        :

İstenen işlemin istenilen sayıda veya istenilen şart sağlanıncaya kadar belirtilen işlemlerin yapılmasını sağlayan komutlardır.

 

FOR-DO        :

Belirtilen işlem veya işlemleri istenilen sayıda tekrarlamak veya istenen iki aralıkta değerler elde etmek için kullanılır.

 

Yazılımı            :

FOR değişken := Başlangıç değeri TO|DOWNTO Bitiş Değeri DO

 

FOR  komutundan sonra mutlaka bir tam sayı, Boolean veya char tipinde değişken kullanılmalıdır. Başlangıç ve bitiş değerleri sabit olabileceği gibi değişkende olabilir. TO kullanılması durumunda küçükten büyüğe doğru, DOWNTO kullanılması durumunda ise büyükten küçüğe doğru değerler elde edilir. BASIC dilinde artış miktarını belirtmek için kullanılan STEP ifadesinin yerine geçen bir ifade bulunmamaktadır. Bu durumda, yani istenen aralıkta istenen artış miktarına göre değerler elde etmek için Repeat-Until veya While-Do komutları ile bu komutlar arasında kullanılacak sayaçlardan yararlanılır. Döngünün başlangıç ve bitiş değerlerinin belli ve artış miktarının 1 veya -1 olması durumunda FOR-DO döngüsünün kullanılması tavsiye edilir.

Eğer döngü içerisinde birden fazla komut işlem görecek ise, komutlar Begin… END bloğu arasında yazılmalıdır. Tek komut kullanılması durumunda Begin…END bloğu kullanılmayabilir. Do ifadesinden sonra noktalı virgül (;) kullanılması durumunda döngü boş olarak dönmüş olur. Yani sonraki gelen komut veya bloğa döngü bittikten sonra işlem geçer.

 

FOR I:=1 to 10 DO; WriteLn (‘ Turbo Pascal’) ;

 

Bu program parçasında DO ifadesinden sonra (;) kullanılmıştır. Dolayısıyla döngü 10 defa boş olarak dönecek ve daha sonra WriteLn komutu bir defaya mahsus olmak üzere işlem görecektir.       

 

{ekrana bes defa BESIKTAS yazdiran program kaydirarak}

uses crt;

var

I : integer;

k : byte;

begin

clrscr;

k:=10;

for i:=1 to 5 do

begin

k:=k+1;

writeln('BESIKTAS':K)

END;

READLN;

END.

   BESIKTAS

    BESIKTAS

     BESIKTAS

      BESIKTAS

       BESIKTAS

 

 

{1' den 100' e kadar olan sayilari yan yana ekrana yazan program}

uses crt;

var

i: integer;

begin

clrscr;

for i:=1 to 100 do

write(i:4);

 

readln;

end.

 

 

   1    2    3    4    5    6    7    8    9  10  11  12  13  14  15  16  17  18  19   20

 21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39   40

 41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59   60

 61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79   80

 81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100

{500 den 300 e kadar butun sayilari ekrana yanyana yazdiran program}

uses crt;

var

i: integer;

begin

clrscr;

for i:=500 downto 300 do

write(i:4);

readln;

end.

 

 

500 499 498 497 496 495 494 493 492 491 490 489 488 487 486 485 484 483 482 481

480 479 478 477 476 475 474 473 472 471 470 469 468 467 466 465 464 463 462 461

460 459 458 457 456 455 454 453 452 451 450 449 448 447 446 445 444 443 442 441

440 439 438 437 436 435 434 433 432 431 430 429 428 427 426 425 424 423 422 421

420 419 418 417 416 415 414 413 412 411 410 409 408 407 406 405 404 403 402 401

400 399 398 397 396 395 394 393 392 391 390 389 388 387 386 385 384 383 382 381

380 379 378 377 376 375 374 373 372 371 370 369 368 367 366 365 364 363 362 361

360 359 358 357 356 355 354 353 352 351 350 349 348 347 346 345 344 343 342 341

340 339 338 337 336 335 334 333 332 331 330 329 328 327 326 325 324 323 322 321

320 319 318 317 316 315 314 313 312 311 310 309 308 307 306 305 304 303 302 301 300

{KULLANILAN BUTUN ASCII KARAKTERLERININ LISTESINI VEREN PROGRAM}

 

USES CRT;

 

VAR

I:CHAR;

 

BEGIN

CLRSCR;

FOR I:=#0 TO #255 DO WRITE(I:4);

READLN;

END.

 

 

          [1]  


  
               

  
   ¤                  §                              ­       !

   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5

   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I

   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]

   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q

   r   s   t   u   v   w   x   y   z   {   |   }   ~      Ç   ü   é   â   ä   à

   å   ç   ê   ë   è   ï   î   ı   Ä   Å   É   æ   Æ   ô   ö   ò   û   ù   İ   Ö

   Ü   ø   £   Ø   Ş   ş   á   í   ó   ú   ñ   Ñ   Ğ   ğ   ¿   ®   ¬   ½   ¼   ¡

   «   »   _   _   _   ¦   ¦   Á      À   ©   ¦   ¦   +   +   ¢   ¥   +   +   -

   -   +   -   +   ã   à  +   +   -   -   ¦   -   +   ¤   _   _   Ê   Ë   È    

   Í   Π  Ï   +   +   _   _   ¦   Ì   _   Ó   ß   Ô   Ò   õ   Õ   µ       ×   Ú

   Û   Ù   ì   ÿ   ¯   ´   ­   ±       ¾      §   ÷   ¸   °   ¨   ·   ¹   ³   ²

   _   

 

REPEAT-UNTIL      :

            İstenen şart veya şartlar sağlanıncaya kadar istenen işlemlerin tekrarlanması için kullanılır.

Yazılımı            :

 

            Repeat

                :

                Komut veya komutlar

                :

            Until Şart

 

Program akışı döngüsü içerisine girdiği anda, Until komutunda belirtilen şart sağlanıncaya kadar iki komut arasındaki işlemler sürekli olarak tekrarlanır. Repeat-Until bloğu içerisinde bir veya daha fazla komut yazılabilir. Birden fazla komut kullanılması durumunda Repeat komutundan sonra Begin-END bloğu kullanmaya gerek yoktur.

 

Örnek  ;

uses crt;

 

var

i : byte;

 

begin

clrscr;

i:= 0;

 

repeat

i:=i+1;

writeln('SANLIURFA':i);

until i=5;

readln;

end.

 

SANLIURFA

SANLIURFA

SANLIURFA

SANLIURFA

SANLIURFA

 

Bu programda ilk önce I değişkenine 0 değeri aktarıldı. Döngü içerisinde I:=I+1 ifadesi ile değişkeninin değeri her defasında bir arttırıldı ve ekrana ŞANLIURFA mesajı yazdırıldı. Bu işlem UNTIL komutundaki I=5 şartı sağlanıncaya kadar devam eder. Sonuçta ekrana alt alta 5 adet ŞANLIURFA mesajı yazdırılır. 5 sayısı arttırılarak istenen sayıda mesaj yazdırılabilir ekrana.

 

Örnek ;

{0 dan baslayarak 100' e kadar cift sayilari ekrana yazdiran program}

uses crt;

var

i  :integer;

 

begin

clrscr;

i:=0;

 

repeat

write (i:4);

i:=i+2;

until i=100;

readln;

end.

 

0   2   4   6   8  10  12  14  16  18  20  22  24  26  28  30  32  34  36  38

40  42  44  46  48  50  52  54  56  58  60  62  64  66  68  70  72  74  76  78

80  82  84  86  88  90  92  94  96  98

 

 

 

 

 

 

Örnek  ;

{1 den 100 e kadar olan sayilarin toplamini hesaplayan program}

uses crt;

 

var

i,t : integer;

 

begin

clrscr;

i:=0;

t:=0;

repeat

 

i:=i+1;

t:=t+i;

write(i:4);

until i=100;

writeln('toplam',t);

readln;

end.

   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20

  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40

  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60

  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80

  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100

toplam5050

 

Örnek  ;

{ bir isletmede calisan elemanlara normal ucretlerine ek olarak urettikleri

parca sayisina gore ek ucret verilmektedir. parca basina ucret asagidaki

sartlara gore verilmektedir.

         parca sayisi ( 0-10) arasi icin parca basina 5 ytl

         parca sayisi (10-30) arasi icin parca basina 8 ytl

         parca sayisi  30 ve yukarisi icin parca basina 12 ytl

buna gore normal maasi ve urettigi parca sayisi bilgilerini alarak

elemanin alacagi toplam maasi hesaplayan program}

 

uses crt;

 

var

maas, ekmaas, parca, parbas: longint;

begin

clrscr;

repeat

clrscr;

writeln('programdan cikmak icin sifir girin');

write('normal maasi ne kadar    : ');readln(maas);

if maas=0 then exit;

 

write('kac parca mal uretti     : ');readln(parca);

if parca<10 then parbas:=5;

if (parca>=10) and (parca<30) then parbas:=8;

if (parca>=30) then parca:=12;

 

write('Toplam Maas              : ');writeln(maas+(parbas*parca));

readln;

until false;

end.

programdan cikmak icin sifir girin

normal maasi ne kadar    : 12345

kac parca mal uretti     : 43

Toplam Maas              : 12441

 

 

 

WHILE-DO               :

Belirtilen şart olduğu sürece istenen işlemlerin tekrarlanmasını sağlar.

Yazılım :

While şart Do

:

Komut veya komutlar

:

yazılımda belirtilen ‘ komut veya komutlar birden fazla ise bu durumda Begin-END bloğu kullanılır.

Bu komutta şart döngü başında test edilir. Eğer şart yanlış olursa, program akışı döngü içerisine girmez ve bir sonraki blok veya komuttan itibaren program çalışmaya devam eder. While-do komutunda şart döngü başında, Repeat-until komutunda ise şart döngü sonunda test edilir. Başlangıçta şart yanlış ise program akışı While-do döngüsüne girmez. Repeat-until komutunda ise, şart ister yanlış ister doğru olsun döngüye mutlaka girilir ve işlem en az bir kere yapılır.

 

{VERILEN IKI SAYIYI BOLME OPERATORU KULLANMADAN BIRBIRINE BOLEREK, BOLUM

VE KALAN DEGERLERINI HESAPLAYAN PROGRAMI YAZINIZ (/,mod,div) OPERATORLERI

KULLANILMAYACAK}

 

USES CRT;

VAR

SAYI1, SAYI2, BOLUM      : LONGINT;

BEGIN

clrscr;

bolum:=0;

write('birinci sayiyi girin     : ');readln(sayi1);

write('ikinci sayiyi girin      : ');readln(sayi2);

while sayi1>=sayi2 do

begin

bolum:=bolum+1;

sayi1:=sayi1-sayi2;

end;

writeln('BOLUM          : ',bolum:10);

writeln('KALAN          : ',sayi1:10);

readln;

END.

birinci sayiyi girin     : 109

ikinci sayiyi girin      : 4

BOLUM          :         27

KALAN          :          1

 

 

CONTINUE   :

            FOR, While veya Repeat döngüsünün bir sonraki adıma geçmesini sağlar.

 

BREAK          :

            FOR, While veya Repeat döngülerinden çıkışı sağlar. İşlem akışı döngünün dışına çıkar.

 

 

EKRAN KOMUTLARI

Ekrandaki görüntü tasarımı için kullanılan komutlardır. Turbo Pascal’ da komutların yaptıkları işlemlere göre belli unit’ ler içerisinde toplandığı daha önce belirtilmişti. Ekran, tuş kontrolü ve ses komutları ise CRT Unit’ i içerisinde toplanmışlardır. Burada CRT Unit’ ine ait bütün komutlar anlatılacaktır. Bu komutların kullanılması durumunda, program başında kullanılan ve istenen Unit’ lerin aktif hale gelmesini sağlayan USES komutunda, CRT Unit isminin yazılması gerekir. Aksi taktirde böyle bir komut bilinmiyor “unknown identifier”(geçersiz tanıtıcı) derleme hatası oluşur.

 

CLRSCR                   (PROCEDURE)        :

Ekranı temizlemek için kullanılır. Eğer ekranda bir Window tanımlanmış ise bu durumda tanımlı olan Window’ un içerisini temizler. Komut sonunda kursör ekran veya pencerenin 1.sütun ve 1.satırına gider.

            Yazılımı            :

            CLRSCR;

 

Bu komut CRT Unit’ ine ait bir komut olduğu için program başında mutlaka USES CRT komutunun kullanılması gereklidir. Aksi taktirde derleyici bu komutu tanımaz ve “unknown identifier” hatasının oluşmasına sebep olur.

 

 

GOTOXY                  (PROCEDURE)        :

Kursörü ekranın istenen sütun ve satırına taşımak için kullanılır.  Eğer tanımlı bir Window var ise bu Window’ un istenen sütun ve satırına Kursörü taşır. Normal ekran üzerinde sütun değeri 1-80 ve satır değeri ise 1-25 arasında olmalıdır. Ekrandaki satır ve sütun sayısını ayarlamak için TextMode komutu kullanılır. 

Örnek;

Uses crt;

Begin

ClrScr;

Gotoxy(30,5),

Write(‘Turbo Pascal’);

ReadLn;

END.

Bu program ekranın 30.sütun 5. satırına Turbo Pascal mesajını yazdırır.

 

 

USES CRT;

VAR

S : BYTE;

BEGIN

CLRSCR;

FOR S:=1 TO 10 DO

BEGIN

GOTOXY(S,S);WRITELN('TURBO PASCAL');

END;

READLN;

END.

TURBO PASCAL

 TURBO PASCAL

  TURBO PASCAL

   TURBO PASCAL

    TURBO PASCAL

     TURBO PASCAL

      TURBO PASCAL

       TURBO PASCAL

        TURBO PASCAL

         TURBO PASCAL

ÖRNEK    ;

{EKRANA "PASCAL" MESAJLARI ILE X SEKLINDE YAZI YAZAN PROGRAMI

 YAZINIZ}

 

 USES CRT;

 VAR

 ALT: BYTE;

 

 BEGIN

 CLRSCR;

 FOR ALT:=1 TO 24 DO

 BEGIN GOTOXY(20+ALT,ALT);WRITE('PASCAL'); END;

 FOR ALT:=1 TO 24 DO

 BEGIN GOTOXY(45-ALT,ALT);WRITE('PASCAL'); END;

 READLN;

 

 END.

 

           PASCAL                 PASCAL

            PASCAL               PASCAL

             PASCAL             PASCAL

              PASCAL           PASCAL

               PASCAL         PASCAL

                PASCAL       PASCAL

                 PASCAL     PASCAL

                  PASCAL   PASCAL

                   PASCAL PASCAL

                    PASCAPASCAL

                     PASPASCAL

                      PPASCAL

                      PASCALL

                     PASCALCAL

                    PASCALASCAL

                   PASCAL PASCAL

                  PASCAL   PASCAL

                 PASCAL     PASCAL

                PASCAL       PASCAL

               PASCAL         PASCAL

              PASCAL           PASCAL

             PASCAL             PASCAL

            PASCAL               PASCAL

           PASCAL                 PASCAL

İlk döngüde (20+alt, alt) koordinatına Pascal mesajı yazdırılıyor. ALT değişkeninin değeri 1 den başlayarak 24’ e kadar sırayla birer birer arttığından aşağı ve sağa doğru kayan bir yazı yazdırılıyor. İkinci döngüde ise ALT değişkeninin değeri 1 den 24’ e kadar artmakta, ancak bilgi (45-ALT,ALT)koordinatına yazdırıldığından aşağı ve sola doğru kayan bir yazı yazdırılmaktadır. Sonuçta X şeklinde bir şekil oluşmaktadır.

 

{ekrana carpim tablosunu veren program}

uses crt;

var

sayi1,sayi2,sonuc       :longint;

sat,sut,sutun           :byte;

 

begin

clrscr;

sutun:=1;

for sut:=1 to 5 do

begin

for sat:=1 to 10 do

begin

if sut>1 then sutun:=(sut-1)*16;

gotoxy(sutun,sat);write(sut:2,' x ',sat:2,' = ',sut*sat:3);

end;

end;

GOTOXY(25,13);writeln('========CARPIM TABLOSU========');

sutun:=1;

for sut:=1 to 5 do

Begin

for sat:=1 to 10 do

begin

if sut>1 then sutun:=(sut-1)*16;

gotoxy(sutun,sat+14);write(sut+5:2,' x ', sat:2,' = ',(sut+5)*sat:3);

end;

end;

writeln('');

readln;

 

end.

 1 x  1 =   1   2 x  1 =   2    3 x  1 =   3    4 x  1 =   4    5 x  1 =   5

 1 x  2 =   2   2 x  2 =   4    3 x  2 =   6    4 x  2 =   8    5 x  2 =  10

 1 x  3 =   3   2 x  3 =   6    3 x  3 =   9    4 x  3 =  12    5 x  3 =  15

 1 x  4 =   4   2 x  4 =   8    3 x  4 =  12    4 x  4 =  16    5 x  4 =  20

 1 x  5 =   5   2 x  5 =  10    3 x  5 =  15    4 x  5 =  20    5 x  5 =  25

 1 x  6 =   6   2 x  6 =  12    3 x  6 =  18    4 x  6 =  24    5 x  6 =  30

 1 x  7 =   7   2 x  7 =  14    3 x  7 =  21    4 x  7 =  28    5 x  7 =  35

 1 x  8 =   8   2 x  8 =  16    3 x  8 =  24    4 x  8 =  32    5 x  8 =  40

 1 x  9 =   9   2 x  9 =  18    3 x  9 =  27    4 x  9 =  36    5 x  9 =  45

 1 x 10 =  10   2 x 10 =  20    3 x 10 =  30    4 x 10 =  40    5 x 10 =  50

 

 

                        ========CARPIM TABLOSU========

 

 6 x  1 =   6   7 x  1 =   7    8 x  1 =   8    9 x  1 =   9   10 x  1 =  10

 6 x  2 =  12   7 x  2 =  14    8 x  2 =  16    9 x  2 =  18   10 x  2 =  20

 6 x  3 =  18   7 x  3 =  21    8 x  3 =  24    9 x  3 =  27   10 x  3 =  30

 6 x  4 =  24   7 x  4 =  28    8 x  4 =  32    9 x  4 =  36   10 x  4 =  40

 6 x  5 =  30   7 x  5 =  35    8 x  5 =  40    9 x  5 =  45   10 x  5 =  50

 6 x  6 =  36   7 x  6 =  42    8 x  6 =  48    9 x  6 =  54   10 x  6 =  60

 6 x  7 =  42   7 x  7 =  49    8 x  7 =  56    9 x  7 =  63   10 x  7 =  70

 6 x  8 =  48   7 x  8 =  56    8 x  8 =  64    9 x  8 =  72   10 x  8 =  80

 6 x  9 =  54   7 x  9 =  63    8 x  9 =  72    9 x  9 =  81   10 x  9 =  90

 6 x 10 =  60   7 x 10 =  70    8 x 10 =  80    9 x 10 =  90   10 x 10 = 100

 

READKEY                :

            Klavyeden bir tuşa basılmasını sağlar. Bu fonksiyonun sonucu Char tipinde bir bilgidir.

Örnek              :

uses crt;

var

tus : char;

 

begin

  clrscr;

  writeln('Turbo Pascal');

  repeat

 

  tus:=readkey;

  writeln(tus,' `a bastiniz');

 

  until tus=#122;

  end.

Turbo Pascal

h `a bastiniz

m `a bastiniz

u `a bastiniz

t `a bastiniz

s `a bastiniz

g `a bastiniz

a `a bastiniz

t `a bastiniz

w `a bastiniz

y `a bastiniz

q `a bastiniz

u `a bastiniz

(z ye bastığınızda programdan çıkacaktır)

 

 

KEYPRESSED          (Function)       :

            Klavyeden bir tuşa basılıncaya kadar istenen işlemleri yapmak veya bir tuşa basılıp basılmadığını kontrol etmek için kullanılır. Sonucu Boolean olan bir Function dır.

 

Örnek  ;

{bu program bir tusa basilincaya kadar surekli olarak ekrana `Turbo pascal`

yazisi yazilir. bu tus alt, ctrl, shift gibi tuslar olamaz}

uses crt;

 

begin

clrscr;

repeat

write('Turbo Pascal');

until keypressed;

end.

 

 

TEXTCOLOR (Procudere)              :

            Ekrana yazılacak yazının rengini ayarlamak için kullanılır.

 

Renk No 0 ile 31 arasında tam bir sayı olmalıdır. 0 ile 15 arasındaki renkler normal renkleri ve 16 ile 31 arasındaki renkler ise bu renklerin yanıp sönen (flaşlı) şekillerinin elde edilmesini sağlar. Yani 1 nolu renk mavi, 17 nolu renk ise yanıp sönen mavi rengi temsil eder.

 

program yanipsonenkelimeler;

uses crt;

BEGIN

repeat

textcolor(18);writeln('erkanyilmaz');readln;

until keypressed;

END.

 

Renk Değişkeni                    Renk No

Black              0

Blue               1

Gren               2

Cyan               3

Red                4

Magenta            5

Brown              6

Lightgray          7

Darkgray           8

Lightblue          9

Lightgreen         10

Lightcyan          11

Lightred           12

Lightmagenta       13

Yellow             14

White              15

 

               Renk no yerlerine yukarıda belirtilen Renk adları da kullanılabilir. Yani mavi renginin renk numarası 1, bunun yerine Blue sabit ismi de kullanılabilir. Yani TextColor(1) ile TextColor(Blue) aynı rengi ifade ederler.

 

TEXTBACKGROUND                    :

            Ekrana yazılacak olan yazının zemin rengini ayarlamak için kullanılır.  Renk No 0-15 arasında olabilir. Ancak 0-7 arasındaki renk numaraları ile 8-15 renk numaraları aynı renklere karşılık gelir. Yani ; 0 nolu zemin rengi ile 8 nolu zemin rengi aynı rengi temsil eder.

 

DELAY                                              :

            Programın belirtilen süre kadar beklemesini sağlar.

 

Yazılımı            :

            DELAY(Süre)

 

Süre milisaniye olarak alınır. Yani süre 5000 olarak verildiğinde program 5 saniye bekler.

 

DELLINE                                         :

            Kursörün üzerinde bulunduğu satırı silmek için kullanılır. Alttaki satırlar bir satır yukarı çıkar.

 

Örnek  ;

uses crt;

var

i       : byte;

BEGIN

clrscr;

gotoxy(1,25);writeln('Turbo Pascal');

gotoxy(1,1);

for i:=1 to 23 do

begin

delline;

delay(500);

end;

 

readln;

END.

 

Bu programda, ilk önce ekranın 25. satırına “Turbo Pascal” mesajı yazdırılıyor. Daha sonra kursör ekranın (1,1) pozisyonuna taşınıyor ve 23 defa DelLine komutu kullanılarak yazının aşağıdan yukarıya doğru hareketi sağlanıyor.

 

INSLINE       (Procedure)                :

            Kursörün üzerinde bulunduğu satırdan itibaren ekranı bir satır aşağı kaydırarak boş bir satır açılmasını sağlar.

Örnek  ;

uses crt;

var

i       : byte;

BEGIN

clrscr;

gotoxy(1,1);writeln('Turbo Pascal');

gotoxy(1,1);

for i:=1 to 23 do

begin

insline;

delay(500);

end;

 

readln;

END.

Bu program da ise, ilk önce ekranın 1. satırına “Turbo Pascal” mesajı yazdırılıyor. Daha sonra kursör ekranın (1,1) pozisyonuna taşınıyor ve 23 defa InsLine komutu kullanılarak yazının yukarıdan aşağı doğru hareket etmesi sağlanıyor.

 

HIGHVIDEO            (PROCEDURE)        :

            Ekrana yazılacak yazının parlak olarak yazılmasını sağlar.

 

LOWVIDEO             (PROCEDURE)        :

            Ekrana yazılacak yazının parlak olarak yazılmasını sağlar.

 

NORMVIDEO          (PROCEDURE)        :

            Ekrana yazılacak yazının normal parlaklıkta yazılmasını sağlar.

 

Örnek  ;

uses crt;

begin

highvideo;writeln('TURBO PASCAL');

normvideo;writeln('TURBO PASCAL');

lowvideo; writeln('TURBO PASCAL');

 

highvideo;textcolor(4);writeln('TURBO PASCAL');

normvideo;textcolor(4);writeln('TURBO PASCAL');

lowvideo; textcolor(4);writeln('TURBO PASCAL');

 

readln;

end.

 

 

 

 

 

CLREOL                   (Procedure)    :

Kursörün bulunduğu noktadan başlayarak satır sonuna kadar olan kısmı siler (Clear END OF Line).

 

WHEREX      (Functioın)      :

            Kursörün üzerinde bulunduğu sütun numarasını verir. Bir fonksiyondur ve sonuçta byte tipinde bir değer üretir.

 

WHEREY      (Function)       :

            Kursörün üzerinde bulunduğu satır numarasını verir. Wherex gibi sonuçta byte tipinde değer veren bir fonksiyondur.

 

Örnek  ;

{//Turbo Pascal Yazisini ekranda kaydirirken en son sutun numarasinida //

 //gosteren program. (gotoxy),(cursoroff),(for),(wherex),(clreol)      //

 //komutlarinin kullanilmasina ornekler verilmistir...                 //}

 

uses crt;

var

i, kursor : byte;

 

begin

clrscr;

for i:=80 downto 12 do

begin

cursoroff;

gotoxy(1,13);write('Turbo Pascal':i);kursor:=wherex;

 

gotoxy(20,20);write('Kursor Su Anda ',kursor,'. nolu sutunda');

gotoxy(i+1,13);clreol;

delay(100);

end;

readln;

end.

 

    Turbo Pascal

 

 

 

 

 

 

           Kursor Su Anda 25. nolu sutunda

 

 

SOUND          (Procedure)    :

            Verilen frekansta ses elde etmek için kullanılır.

Kullanım şekli : Sound(Frekans)

            Üretilen sesin kesilmesi için NoSound komutunun kullanılması gerekir. Sesin süresi ise Delay komutu ile ayarlanır.

 

{// Damlayan su sesi                                    //

 // Kullanilan ornekler (sound),(nosound),(delay),(inc) //

 // inc:                                                //

 // kullanimi inc(i,artacak miktar);                    //

 // belirtilen degiskenin miktarini virgulden sonraki   //

 // kadar degistirir...                                 //}

 

 uses crt;

 var

 I: integer     ;

 begin

 repeat

 i:=200;

 repeat

 sound(i);

 delay(12);

 inc(i,80);

 gotoxy(10,10);write(i);

 until i>450;

 nosound;

 delay(1000);

until keypressed;

end.

 

CURSORON                        (Procedure)    :

            Kursoru açık hale getirir…

 

Yazılımı            :

            CursorOn;

 

CURSOROFF                       (Procedure)    :

            Kursörü gizler. Ekranda Kursörü göremeyiz.

 

Yazılımı            :

            CursorOff;

 

CURSORBIG                       (Procedure)    :

            Kursörü büyük bir dikdörtgen haline getirir.  Kursörü tekrar eski haline getirmek için CursorOn komutu kullanılır.

 

Yazılımı            :

            CursorBig;

 

Çalışma Soruları        :

  1. Verilen bir mesajı alarak ekrana bütün renklerle alt alta görüntüleyen programı yazınız.
  2. ENDUSTRI yazısını ekranın 12. satırı üzerinde 1. kolondan başlayarak satır sonuna, oradan tekrar satır başına hareket ettiren ve bu işlemi bir tuşa basılıncaya kadar tekrarlayan programı yazınız.

Cevaplar                    :

1.

{// Verilen bir mesaji ekrana tum renklerle yazdiran program//}

 

uses crt;

var

mesaj : string[80];

i     : byte;

 

begin

clrscr;

cursorbig;

gotoxy(20,13);write('mesajinizi girin :');readln(mesaj);

clrscr;

for i:=1 to 15 do

begin

gotoxy(1,i);textcolor(i);write(mesaj);

 

end;

cursoroff;

readln;

cursoron;

end.

2.

var

i: byte;

 

begin

clrscr;

cursoroff;

for i:=1 to 80 do

begin

gotoxy(i,12);write('_');

end;

repeat

for i:=1 to 71 do

begin

gotoxy(i,12);textcolor(2);write('_ENDUSTRI_');

delay(150);

end;

for i:=71 downto 1 do

begin

gotoxy(i,12);textcolor(4);write('_ENDUSTRI_');

delay(150);

end;

until keypressed;

readln;

cursoron;

end.

 

ALT PROGRAMLAR

GİRİŞ            :

            Bir Pascal programı; ana program ve alt programlardan oluşur. Pascal’ da Procedure ve Function olmak üzere iki farklı alt program çeşidi vardır. Alt programların kullanım amacı; programın yapısal olmasını sağlamak ve birbiriyle ilgili komutları veya programın bir bölümünü istenen isim altında toplamaktır. Bu şekilde programın okunması kolaylaşmakta ve yapısal bir görünüm kazanmaktadır.

            Programların hazırlanması sırasında aynı işlemi yapan program parçalarına programın bir çok noktasında ihtiyaç duyulabilir. Alt program kullanılmadığı zaman bu program parçasının ihtiyaç duyulan bütün kesimlere yazılması gerekir. (on adet çerçeve çizmek için, on adet çerçeve program kesiminin yazılması gibi). Bu işlem programların okunmasını zorlaştırır ve kaynak programın uzamasına neden olur. Bunun için aynı işlemi yapan ve bir çok yerinde ihtiyaç duyulan program kesimleri alt program olarak hazırlanırlar. Böylece aynı program parçasından sadece bir tane hazırlamak yeterli olacaktır. İstenen bölümlere, alt program ismi ve varsa uygun parametrelerle ulaşılabilecektir.

            Herhangi bir alt program çağrıldığı zaman bu alt programda bulunan bütün komutlar işlem görür. Alt programda işlem görecek komutların bitmesi veya bir çıkış komutu (exit) ana programa veya bu alt programın çağrıldığı bölüme tekrar dönüşü sağlanır. Alt programdan çıktıktan sonra işlem, alt programı çağıran komuttan sonraki komuta geçer. İç içe birden fazla alt program kullanılabilir. Bu durumda içteki alt programa ancak bir üstteki alt program içerisinden geçilebilir. Turbo Pascal’ ın kullandığı bütün komut ve fonksiyonların bu şekilde hazırlandığını düşünebiliriz. Bu şekilde programcı kendine özgü işlemlerini kolaylaştırıcı yeni komutlar hazırlayabilir.

            Bir alt programın genel yapısı aşağıdaki gibidir;

Alt program_Başlığı(isim)

            Yerel tanımlamalar

BEGIN

:

icra komutları

:

END;

 

            Ana programda olduğu gibi her alt program; isim(Başlık), tanımlama ve icra bölümlerinden oluşur. Tanımlama bölümünde gerekli tip(Type), sabit(Const), değişken(Var) ve etiket (Label ) tanımlamaları yapılabilir. İcra bölümü ise BEGIN-END bloğu arasına yazılan komutların oluşturduğu bölümdür. Uygulanması istenen bütün komutlar Begin-END içerisine yazılırlar.

PROCEDURE ALTPROGRAMLARI      :

            Procedure alt programları bir komut gibi çalışırlar. Genel yapısı aşağıdaki gibidir;

 

PROCEDURE ProcedureAdı(Parametre Listesi));[FORWARD;]

Tanımlamalar

BEGIN

:

icra görecek komutlar topluluğu

:

END;

 

Genel yazılımdan da görüldüğü gibi PROCEDURE kelimesinden sonra “ProcedureAdı” nın kullanılması yeterlidir. İsteğe bağlı olarak parametreler tanımlanabilir. Genel olarak procedure’ ler çağrıldıkları yerin üst tarafında olmak zorundadırlar. Ancak FORWARD kelimesi yardımıyla Procedure çağrıldığı yerin alt tarafına da yazılabilir. “ProcedureAdı” tanıtıcı ismi özelliklerine sahip olmalıdır. Başka bir değişken ismi ile aynı olamaz. Procedure içerisinde yapılan bütün tip, değişken, sabit ve etiket tanımlamaları sadece ilgili Procedure ve varsa bunun içerisinde yer alan diğer alt programlar içerisinde geçerlidir. Bir Procedure içerisinde başka alt programlarda hazırlanabilir. Bu alt programlara içinde bulunduğu alt program içerisinden erişim sağlanabilir. Yani bir Procedure içerisinde kullanılan bir başka alt programa başka altprogramlardan veya ana program kesiminden erişim sağlanamaz.

 

Örnek  ;

{// Ekransil isimli bir procedure'un hazirlanmasi ve sil komutuyla

 // tum ekranin temizlenmesi}

 

 uses crt;

 procedure EkranSil;

 Begin

 clrscr;

 end;

 {//ana program Kesimi}

 

 Begin

 cursoron;

 Ekransil;

 Writeln('Ekranin Su Anda Temizlenmis Olmasi Lazim');

 readln;

 end.

            Bu programda EkranSil isimli bir Procedure hazırlandı. Bu Procedure programın her yerinden ekransil ismi(komutu) ile çağrılabilir. Artık kullanıcının CLRSCR komutunu kullanmasına gerek kalmamaktadır. Program ilk olarak ana program kesiminden itibaren çalışmaya başlar. Ekransil komutunu gördüğü anda bu procedure’ e gider ve ekranı temizler ve geri dönüp bir sonraki komuttan itibaren çalışmaya devam eder.

            Genel olarak bir Procedure içerisinde tanımlanan değişkenin, sabit, tip ve etiket’ ler sadece bu Procedure ve varsa bu Procedure içerisinde kullanılan diğer alt Procedure ve fonksiyonlar içerisinde geçerli olurlar. Programın diğer kesimlerinden tanınmaz ve kullanılamazlar.

 

 

 

 

 

Örnek  ;

program dairenin_alanını_program ;

uses crt, mustafa;

 

procedure dairenin_alani;

var

dalan001, yaricap : real;

begin

write  ('yaricapi girin :  ');readln(yaricap);

dalan001:=(yaricap*yaricap)*pi;

writeln('Dairenin Alani : ',dalan001:10:2);

repeat

until keypressed;

end;

 

BEGIN

ekransil;

dairenin_alani;

 

END.

 

PROCEDURE’ LERDE PARAMETRE KULLANIMI               :

            Hazırlanan alt programlar hep aynı işlemleri aynı değerlerle yapmayabilirler. Mesela, ekranın farklı yerlerinden bilgi girişi sağlanabilir. Veya ekranın istenen koordinatlarına çerçeve çizmek, farklı koordinatlarda, değişken alan sayısına sahip menu görüntülemek ve bu menu üzerinde oklar yardımıyla seçim yapmak gerekebilir. Yani alt program içerisinde kullanılan değerler değişken olabilir. Bu durumda bu değişken değerlerin alt programa gönderilmeleri gerekebilir. Yani alt program içerisinde kullanılan değerler değişken olabilir. Bu durumda bu değişken değerlerin alt programa gönderilmeleri gerekir. Bunun için parametreler kullanılır.

            Procedure içerisine değer göndermek ve/veya Procedure içerisinde hesaplanan bir değeri dışarı göndermek için parametre kullanılır. Parametre tanımlamasını aşağıdaki gibi gösterebiliriz.

 

PROCEDURE ProcedureAdı([Var]deg1,deg2…….: tip[;……]);

 

Bu tanımlamada [ ] içerisine yazılan ifadeler zorunlu değil anlamındadır. Değişkenlerin değer alma ve değer gönderme işlemleri iki farklı şekilde gerçekleşir.  Sadece değer alan değişkenler tek taraflı, hem değer alan hem de değer gönderen değişkenler ise çift taraflı olarak çalışan değişkenlerdir.

            Değişken isminden önce VAR tanımlama komutunun kullanılması durumunda belirtilen değişkenler çift taraflı olarak çalışırlar.  Yani Procedure içerisinde hem değer alır, hem de Procedure’ den çıkışta dışarıya değer gönderir. Bir VAR komutunun etkisi kendisinden sonra gelen ilk (;) noktalı virgül işaretine kadar. Çift taraflı olarak çalışan değişkenlere karşılık mutlaka değişken kullanılmalıdır. Çünkü Procedure içerisinde değişkenin alacağı son değer dışarı gönderilecek ve bilgi ise ancak bir değişkene aktarılabilir.

FUNCTION ALTPROGRAMLARI

            Pascal’ da kullanılan komutlara benzer komutlar hazırlamak için Procedure ve yardımcı komut dediğimiz fonksiyonlar hazırlamak için ise Function alt programlarından yararlanılır. Function’ lar tek başlarına kullanılamazlar ancak bir yardımcı komut gibi başka komutlar yardımıyla kullanabilirler. Buna Pascal’ da kullanılan TRUNC, ROUND, LENGHT… fonksiyonları örnek olarak verilebilir. Programcı içerisinde istediği gibi fonksiyonlar hazırlayabilir. Function’ ların genel yazılımı aşağıdaki gibidir.

           

            FUNCTION Func.Adı[(parametre listesi)]: Tip;

Dikkat edilirse her Function için func.adi ile belirtilen bir isim ve isteğe bağlı olarak procedure’ lerde olduğu gibi parametre listesi verilebilir. Farklı olarak her function’ ın bir tipi olmalıdır. Function içerisinde hesaplanan veya sabit olarak verilen bilgi Func.Adı’ na aktarılarak function’ ın değer alması sağlanır.

 

Parametre kullanımı Procedure’ lerde olduğu gibidir. Tip, function’ dan çıkan bilginin tipini belirtmek için kullanılır.

Örnek;

{//Function komutu için örnek kaynak kodu//}

 

uses crt;

var

a : integer;

function artir(X:Longint): longint;

begin

artir:=x+1;

end;

 

begin

clrscr;

a:=0;

repeat

a:=artir(A);

writeln('A= ',A);

until a=5;

readln;

end.

A= 1

A= 2

A= 3

A= 4

A= 5

 

 

 

STANDART PROCEDURE VE FUNCTIOUN’ LAR

STRING PROCEDURE VE FUNCTION’ LAR:

 

ABS                (Function)       :

            Verilen her türlü sayisal ifadeyi,  pozitif hale getirir.

Örnek  ;

           

{(ABS) function örneği}

var

r  : integer;

s  : real   ;

 

begin

r:=abs(-23);

s:=abs(-17.9);

writeln(r:5);

writeln(s:4:2);

readln;

end.

   23

17.90

 

 

LENGHT       (Function)      :

Verilen string ifadedeki karakter sayısını verir. Sonucu byte tipinde bir fonksiyondur.

Yazılımı            :

            LENGHT(String)

 

Örnek ;

{

//verilen bir mesajın kaç karakterden oluştuğunu bulan program//

}

uses crt;

var

mesaj : string;

mesajuzunluk: byte;

begin

clrscr;

write('MESAJINIZI GİRİNİZ : ');READLN(MESAJ);

mesajuzunluk:=LENGth(MESAJ);

write('Mesajınızın uzunluğu ',mesajuzunluk,' karakterdir');

readln;

end.

MESAJINIZI GiRiNiZ : sean dillon

Mesajınızın uzunluğu 11 karakterdir

 

 

 

COPY             (FUNCTION)            :

            Verilen string ifadenin belirtilen pozisyonundan itibaren istenilen sayıda karakter almak için kullanılır. Sonucu string tipte bir fonksiyondur.

 

Yazılımı            :

            Copy(string, başlangıç pozisyonu, karakter sayısı)

 

Örnek  :

{//verilen SAKARYA kelimesini ekrana aşağıdaki gibi yazdıran program

   S

   SA

   SAK

   SAKA

   SAKAR

   SAKARY

   SAKARYA //}

 

USES CRT;

VAR

MESAJ: STRING;

I:BYTE;

BEGIN

CLRSCR;

MESAJ:='SAKARYA';

FOR I:=1 TO 7 DO

WRITELN(COPY(MESAJ,1,I));

READLN;

END.

S

SA

SAK

SAKA

SAKAR

SAKARY

SAKARYA

 

INSERT                                (Procedure)    :

            Bir string ifade içerisine başka bir karakter grubu eklemek için kullanılır.

 

Yazılımı :

            INSERT( String ifade, String Değişken, Pozisyon);

Burada ilk parametre hem sabit hem değişken olabilir. İkinci parametre ise mutlaka değişken olmalıdır. Pozisyon, kaçıncı karakterden itibaren yerleştirme işleminin yapılacağını belirtir.

 

Örnek :

Var

S: string;

Begin

            S:=’PAMUK GÜZELDİR’;

            Insert(‘KALE’,s,6);

            WriteLn(S);

            ReadLn;

END.

PAMUKKALE GÜZELDİR

 

Burada S değişkeninin 6.karakterinden itibaren ‘KALE’ mesajı yerleşir. Bu komut sonunda S değişkeninin yeni değeri ‘PAMUKKALE GÜZELDİR’ olur.

 

DELETE                                (Procedure)    :

            Bir string değişken içerisinden, belirtilen pozisyondan itibaren istenilen sayıda karakteri silmek için kullanılır.

Yazılımı            :

            DELETE(String değişken,Pozisyon, Karakter sayısı);

 

POS                                        (FUNCTION):

            Bir string ifade içerisinde başka bir string ifadenin bulunduğu pozisyonu verir. Sonucu byte tipinde bir bilgidir.

Yazılımı            :

            POS(st1,st2);

St1 ile belirtilen string ifadenin st2 string ifadesi içerisinde kaçıncı pozisyonda olduğunu verir. Eğer st1, st2 içerisinde yoksa sonuç 0 olur.

{//GİRİLEN BİR CÜMLEDE KELİME ARAMAK İÇİN KULLANILIR//}

USES CRT;

VAR

A,B :STRING;

BEGIN

CLRSCR;

WRITELN('MESAJINIZI GIRIN : ');READLN(A);

WRITELN('ARADIGINIZ NEDIR : ');READLN(B);

WRITELN(POS(B,A));

READLN;

END.

MESAJINIZI GIRIN :

sean dillon

ARADIGINIZ NEDIR :

dil

6

 

ÖRNEK 2;

{(POS) function örneği bu örnekte girilen bir cumle/kelime grubu içinde aradığımız parçayı renkli olarak gösteren program örneği. Eğer bulamazsa bulunamadı diye hata veriyor}

uses

    crt;

var

    aranacak,kelime    : string[80];

    pozisyon,uzunluk,

    satir              : byte;

 

begin

    clrscr;

    write('Kelimeyi Girin            : ');readln(kelime);

    write('Aranacak Kelime           : ');readln(aranacak);

    pozisyon :=(pos(aranacak,kelime));

    uzunluk  :=length(aranacak);

    satir    :=wherey;

    writeln(kelime);

    if pozisyon>0 then

    begin

    CURSOROFF;

    gotoxy(pozisyon,satir);textcolor(4);write(aranacak);

    end;

    if pozisyon=0 then

    begin

    write('ARADIĞINIZ KELİME BULUNAMAMIŞTIR');

    END;

    READLN;

    CURSORON;

end.

Kelimeyi Girin            : ali bakkala ekmek almaya git

Aranacak Kelime           : ekmek

ali bakkala ekmek almaya git

Kelimeyi Girin            : ali bakkala ekmek almaya git

Aranacak Kelime           : ekmk

ali bakkala ekmek almaya git

ARADIĞINIZ KELİME BULUNAMAMIŞTIR

 

 

UPCASE                    (FUNCTION)            :

            Verilen küçük harfi büyük harfe çevirir.

Yazılımı            :

            UPCASE(karakter)

Karakter Char tipinde bir ifade olabilir. Sonuçta Char tipinde bir bilgi üretir.

Eğer girilen bilgi string tipte bir bilgi ise bilgiyi tamamen büyük harfe çevirir.

 

LOWERCASE          (Function)                   :

            Verilen harfleri küçük harfe çevirir.

Yazılımı            :

            Lowercase(Karakter);

Karakter Char veya string bir ifade olmak zorundadır. Çıkış yine Char veya string türünde bir ifadedir.

 

Örnek;

{lowercase ve upcase functionları için örnek... }

uses

    crt;

var

    adres    : string[80];

 

begin

write('ADRES            : ');readln(adres);

writeln(upcase(adres));

writeln(lowercase(adres));

readln;

 

END.

ADRES            : Ferah MAHallesi Irmak SokaK No: 35 KızılCAHAMAM AnKARA

FERAH MAHALLESI IRMAK SOKAK NO: 35 KıZıLCAHAMAM ANKARA

ferah mahallesi irmak sokak no: 35 kızılcahamam ankara

 

 

CHR                           (Function)                   :

            ASCII kodu verilen karakteri verir. ASCII kod numaraları 0-255 arasında olmalıdır. Bu fonksiyon sonunda Char tipinde bir bilgi elde edilir.

 

Örnek ;

uses crt;

var

I: byte;

begin

clrscr;

for i:=0 to 255 do

write(i:6,' ',chr(i));

readln;

end.

14
    15 ¤    16     17     18     19     20 ¶    21 §    22     23

 24     25     26     27     28     29     30 ‑    31 ­    32      33 !

 34 "    35 #    36 $    37 %    38 &    39 '    40 (    41 )    42 *    43 +

 44 ,    45 -    46 .    47 /    48 0    49 1    50 2    51 3    52 4    53 5

 54 6    55 7    56 8    57 9    58 :    59 ;    60 <    61 =    62 >    63 ?

 64 @    65 A    66 B    67 C    68 D    69 E    70 F    71 G    72 H    73 I

 74 J    75 K    76 L    77 M    78 N    79 O    80 P    81 Q    82 R    83 S

 84 T    85 U    86 V    87 W    88 X    89 Y    90 Z    91 [    92 \    93 ]

 94 ^    95 _    96 `    97 a    98 b    99 c   100 d   101 e   102 f   103 g

104 h   105 i   106 j   107 k   108 l   109 m   110 n   111 o   112 p   113 q

114 r   115 s   116 t   117 u   118 v   119 w   120 x   121 y   122 z   123 {

124 |   125 }   126 ~   127    128 Ç   129 ü   130 é   131 â   132 ä   133 à

134 å   135 ç   136 ê   137 ë   138 è   139 ï   140 î   141 ı   142 Ä   143 Å

144 É   145 æ   146 Æ   147 ô   148 ö   149 ò   150 û   151 ù   152 İ   153 Ö

154 Ü   155 ø   156 £   157 Ø   158 Ş   159 ş   160 á   161 í   162 ó   163 ú

164 ñ   165 Ñ   166 Ğ   167 ğ   168 ¿   169 ®   170 ¬   171 ½   172 ¼   173 ¡

174 «   175 »   176 _   177 _   178 _   179 ¦   180 ¦   181 Á   182    183 À

184 ©   185 ¦   186 ¦   187 +   188 +   189 ¢   190 ¥   191 +   192 +   193 -

194 -   195 +   196 -   197 +   198 ã   199 à  200 +   201 +   202 -   203 -

204 ¦   205 -   206 +   207 ¤   208 _   209 _   210 Ê   211 Ë   212 È   213  

214 Í   215 Π  216 Ï   217 +   218 +   219 _   220 _   221 ¦   222 Ì   223 _

224 Ó   225 ß   226 Ô   227 Ò   228 õ   229 Õ   230 µ   231     232 ×   233 Ú

234 Û   235 Ù   236 ì   237 ÿ   238 ¯   239 ´   240 ­   241 ±   242     243 ¾

244 ¶   245 §   246 ÷   247 ¸   248 °   249 ¨   250 ·   251 ¹   252 ³   253 ²

254 _   255 

 

 

 

 

 

 

 

 

 

Bazı önemli tuşlar ve kod numaraları     :

7          è beep                       0+67               è F9 TUŞU

8          è BACKSPACE       0+68               è F10 TUŞU

9          è TAB

13        è ENTER                  0+71               è HOME

27        è ESC                       0+72               è YUKARI OK TUŞU

32        è SPACE BAR         0+73               è PAGE UP

0+59    è F1 TUŞU               0+75               è SOL OK TUŞU    

0+60    è F2 TUŞU               0+77               è SAĞ OK TUŞU

0+61    è F3 TUŞU               0+79               è END

0+62    è F4 TUŞU               0+80               è AŞAĞI OK TUŞU

0+63    è F5 TUŞU               0+81               è PAGE DOWN

0+64    è F6 TUŞU               0+82               è INSERT(INS)

0+65    è F7 TUŞU               0+83               è DELETE(DEL)

0+66    è F8 TUŞU               0

 

STR                            (PROCEDURE)        :

            Verilen bir sayısal ifadeyi string ifadeye çevirir.

Yazılımı            :

            STR(Sayısal ifade, String Değişken)

 

RANDOMIZE          (PROCEDURE)        :

            Random fonksiyonu tarafından farklı sayıların üretilmesini sağlar.

 

Yazılımı            :

RANDOMIZE;

 

RANDOM                 (Function)                   :

            Rastgele sayı üretmek için kullanılır. Sonuçta tamsayı değer üretir. Üretilen sayı 0 ile belirtilen sayı aralığında bir tam sayı değerdir.

Aşağıdaki sayi tahmin oyunu programını inceleyin;

{//SAYI TAHMIN OYUNU... OYUN ICINDE KAZANDIGINIZ PUANI, TAHMİN ETTİĞİNİZ RAKAMLAR//

 //İÇİNDE AŞAĞI YUKARI DİYEREK YARDIMCI OLAN SAYI TAHMIN OYUNU                   //}

USES CRT, MUSTAFA;

VAR

puan,sayi,ekpuan, seninsayi,deneme : LongInt;

AD1001 : string[20];

SECENEK : CHAR;

begin

tanitim;

randomize;

puan:=0;

deneme:=0;

clrscr;cursorbig;clrscr;

writeln('BU OYUNDA AMAC BILGISAYARIN TAHMIN ETTIGI SAYIYI BULMAKTIR ');

writeln('1 ILE 5  DENEMESI ARASINDA BULURSANIZ = 100 PUAN ');

writeln('5 ILE 10 DENEMESI ARASINDA BULURSANIZ =  50 PUAN ');

writeln('10 DAN DAHA FAZLA DENEMEDE BULURSANIZ =  25 PUAN ');

writeln('KAZANIRSINIZ') ;

writeln('OYUNA DEVAM ETMEK ICIN 1`E CIKMAK ICIN 2` TUSUNA BASINIZ');

repeat

secenek:=readkey;

if secenek=#50 then break;

until secenek=#49;

IF secenek=#49 then

BEGIN

ekransil;

textcolor(19);Writeln('OYUN BASLIYOR');

delay(1000);

write('ADINIZ          : ');READLN(AD1001);

ad1001:=upcase(ad1001);

write('OYUNA HOS GELDIN ',AD1001,' BASARILAR');

DELAY(1500);

ekransil;

 

repeat

deneme:=0;ekransil;sayi:=random(100);

gotoxy(59,1);writeln('²²²²²²²²²²²²²²²²²²²');

gotoxy(59,2);writeln('²PUANINIZ  : ',PUAN:5,'²');

gotoxy(59,3);writeln('²²²²²²²²²²²²²²²²²²²');

repeat

deneme:=deneme+1;

write('SAYIYI TAHMIN EDINIZ   : ');READLN(SENINSAYI);

 

if seninsayi>sayi then begin

kirmizi;

writeln('SAYIYI BULMAK ICIN ASAGI INMEN LAZIM ',AD1001);

end;

 

if seninsayi<sayi then

begin

yesil;

writeln('SAYIYI BULMAK ICIN YUKARI CIKMAN LAZIM ',AD1001);

end;

beyaz;

 

until  sayi=seninsayi  ;

writeln(deneme,' denemede bildiniz');

if deneme<=5 then ekpuan:=100;

if (deneme>5) and (deneme<10)then ekpuan:=50;

if deneme>=10 then ekpuan:=25;

PUAN:=PUAN+EKPUAN;

writeln(ad1001,' ',ekpuan,' PUAN KAZANDINIZ');

writeln('OYUNDAN CIKMAK ICIN ESC TUSUNA, DEVAM ETMEK ICIN ENTER`A BASINIZ');

SECENEK:=READKEY;

until SECENEK=#27;

END;

WRITELN('OYUN BITTI');

tanitim;

 

end.

 

VAL                (Procedure)    :

Verilen string tipteki bir bilgiyi sayısal bir ifadeye çevirmek için kullanılır. Çevirme işlemi string ifadede bulunan sayısal değerler için geçerlidir ve sayısal olmayan bir karaktere rastlandığında işlem kesilir.

Yazılım :

            VAL(String ifade,sayısaldeğişken, kod)

HALT             (Procedure)    :

            Programı sona erdirir. Çalışan programın durmasını sağlar.

Yazılımı            :

            HALT[(KOD)];

Halt komutundan sonra ( ) içerisinde, işletim sistemine bir kod gönderilebilir. Kullanılmadığı zaman 0 olarak alınır. Kod, word tipinde bir ifadedir.

 

ROUND         (Function)       :

            Real olarak girilen değeri, buçuktan büyükse üste, buçuktan küçükse alta tamamlar…

Sonuç longint’ dir…

Yazılışı :

            Round(X: Real)            : LongInt          ;

Örnek ;

 

begin

writeln(round(12345.67):10);

writeln(round(12345.23):10);

writeln(round(-12345.67):10);

writeln(round(-12345.23):10);

readln;

 

END.

     12346

     12345

    -12346

    -12345

 

 

ODD                          (Function)       :

            Girilen bir sayının tek mi çift mi olduğunu bulan function’ dur. Sonucu Boolean tipindedir. Doğru olması durumunda (1) yanlış olması durumunda (0) üretir.

 

Örnek  ;

{ (odd) function' inin kullanımına örnek}

uses

crt;

var

sayi    : longint;

tek     : boolean;

begin

write(' Bir sayi giriniz : '); readln(Sayi);

if odd(sayi) then writeln('bu sayi tektir');

if not odd(sayi) then writeln('bu sayi cifttir');

tek:=odd(sayi);

write('sonuc : ',tek);

readln;

 

end.

Bir sayi giriniz : 16

bu sayi cifttir

sonuc : FALSE

Bir sayi giriniz : 23

bu sayi tektir

sonuc : TRUE

 

 

 

TRUNC                     (Function)       :

            Real olan sayı değişkenini integral sayı değişkenine çevirir. Alta tamamlar sayıyı

Örnek :

{Trunc function örnegi}

begin

writeln(trunc(12.345));

writeln(trunc(12.567));

writeln(trunc(-12.345));

writeln(trunc(-12.567));

readln;

end.

 12

 12

-12

-12

 

           

DİZİLER

 

GİRİŞ                                    :

Dizi      : Aynı tipte ve birbiriyle ilgili bilgilerin oluşturduğu bütün.

 

Program içerisinde aynı anda aynı tür bilgiden oluşan çok sayıda mevcut olması ve bu bilgiler üzerinde toplu işlem yapılmasının gerekmesi durumunda dizilerden yararlanılır. Bütün programlama dillerinde önemli bir yere sahip olan dizilerin Turbo Pascal’ daki yeri tartışılmaz. Dizilerin gerekliliğini iki örnek ile çaıklayalım.

 

Örnek 1: 100 adet isim ve telefon bilgisini saklamak için;

            İsim                 : 100 adet

            Telefon : 100 adet

Toplam 200 adet değişken kullanılır.

 

Örnek 2: bir sınıfta okuyan 40 öğrencinin isim ve her öğrencinin 5 farklı dersten aldıkları 3 farklı not bilgisini aynı anda makine hafızasında tutmak için;

İsim      : 40 adet

Notlar  : 40 öğrenci * 5 ders * 3 not = 600 adet

Toplam 640 adet değişken kullanılmalıdır.

 

Eğer her öğrencinin dersi farklı ve bu ders isimlerinin de tutulmasının gerekmesi durumunda yukarıdaki dizilere ek olarak

Dersler : 40 öğrenci * 5 ders = 200 adet

Toplam 840 adet değişken kullanılmalıdır.

 

Örnek 1 ve 2 de görüldüğü gibi çok sayıda değişken kullanılması gerekir. Bu durumda bilgiler üzerinde işlem yapmak imkansızdır. Bu durumda kolaylaştırmak için dizilerden yararlanılır. Şimdi aynı örnekleri diziler yardımıyla tanımlayalım.

 

Örnek 1 için     :

İsim                 : 100 elemanlı

Telefon : 100 elemanlı

Toplam 200 elemanlı 2 dizi (değişken) tanımlanmalıdır.

 

Örnek-2 için    :

İsim                 : 40 elemanlı

Notlar              : 40*5*3= 600 elemanlı

Dersler             : 40 *5= 200 elemanlı

 

Toplam 840 elemanlı 3 dizi değişken kullanılmalıdır.

 

TEK BOYUTLU DİZİLER              :,

Dizi tanımlama  : Pascal’ da dizi tanımlamak için ARRAY komutu kullanılır. ARRAY komutunun tek boyutlu diziler için genel yazılımı aşağıdaki gibidir.

 

Yazılım :

            ARRAY[x….y] OF TipAdı;

X: alt limit

Y: üst limit

 

Dizinin indis numarası [X,Y] aralığında olmalıdır. X ve Y değerleri negatif sayı olabilir ve X değeri Y’ den küçük olmalıdır.

 

Örnek  :

            Var

            Isım                  : Array[1..100] OF string;

            Notlar              : Array[1..100] OF string;

            Sicaklik            : Array[-100..100] OF string;

 

Yukarıdaki tanımlamada isim ve notlar isimli dizeler 100’ er elemanlı (bilgi) alabilirler. Bu elemanların indis numaraları 1 ile 100 arasındadır. Bu dizilere aşağıdaki gibi bilgi aktarılabilir. Sıcaklık isimli değişkenin indis numaraları ise -100 ile 100 arasında dır. Bu diziye aşağıdaki gibi bilgi aktarılabilir.

 

Örnek  ;

(* girilecek 10 adet sayıyı bir diziye aktararak bu dizideki sayıların ortalamasını

   hesaplayan program *)

   uses crt;

   var

   S: array[1..10] of longint;

   i: byte;

   t:longint;

   ort: real;

 

   begin

   clrscr;

   {diziye bilgi girişi}

   for i:=1 to 10 do

   begin

   write(i,'. sayi : ');readln(s[i]);

   end;

   t:=0;

   {dizideki sayilarin toplamı hesaplanıyor}

   for i:=1 to 10 do t:=t+s[i];

   ort:=T/10; {ortalamanın hesaplanması};

   writeln('ORtalama= ',ORT:0:2);

   readln;

   end.

1. sayi : 12

2. sayi : 432

3. sayi : 54

4. sayi : 6

5. sayi : 5

6. sayi : 76

7. sayi : 78

8. sayi : 87

9. sayi : 89

10. sayi : 789

ORtalama= 162.80

               

 

Örnek ;

(* VERILEN 10 ADET ISIM VE TELEFON BILGISINI BIR DIZIYE AKTARARAK BU BILGILERI

   EKRANA LISTELEYEN PROGRAM *)

 

   USES CRT;

   VAR

   ISIM     : ARRAY[1..10] OF STRING[20];

   TELEFON  : ARRAY[1..10] OF STRING[11];

   I : BYTE;

 

   BEGIN

   CLRSCR;

   FOR I:=1 TO 10 DO

   BEGIN

   WRITE('ADINIZ  : ');READLN(ISIM[I]);

   WRITE('TELEFON : ');READLN(TELEFON[I]);

   CLRSCR;

   END;

   WRITELN('-----------ISIM-----------         ----TELEFON----');

   FOR I:=1 TO 10 DO

   BEGIN

   WRITE(ISIM[I]);

   GOTOXY(36,I+1);WRITELN(TELEFON[I]); END;

   REPEAT UNTIL KEYPRESSED;

   END.

-----------ISIM-----------         ----TELEFON----

Mahmut                             23423423

murat                              2345234

Mustafa                            2342342

caner                              234234

kader                              234234

alev                               2342342

hülya                              3424234

cansu                              324234234

Osman                              234234

alexander                          234234

 

 

Örnek  ;

{// VERILEN 5 ADET ŞEHİR VE BU ŞEHİRLERE AİT NÜFUS BİLGİLERİNİ ALARAK NÜFUSU //

 // EN ÇOK VE EN AZ OLAN ŞEHİRLERİ BULAN PROGRAM                              //

}

 

USES CRT;

VAR

SEHIR: ARRAY[1..5]OF STRING[20];

NUFUS: ARRAY[1..5]OF longint;

MAXNUFUS,MINNUFUS: longint;

MAXSEHIR,MINSEHIR: STRING[20];

I: BYTE;

BEGIN

CLRSCR;

WRITE('SEHIR ADINI GIRINIZ : ');READLN(SEHIR[1]);

WRITE('NUFUSU GIRINIZ       : ');READLN(NUFUS[1]);

MAXSEHIR:=SEHIR[1];MINSEHIR:=SEHIR[1];

MAXNUFUS:=NUFUS[1];MINNUFUS:=NUFUS[1];

 

FOR I:=2 TO 5 DO

BEGIN

clrscr;

WRITE('SEHIR ADINI GIRINIZ  : ');READLN(SEHIR[I]);

WRITE('NUFUSU GIRINIZ       : ');READLN(NUFUS[I]);

IF NUFUS[I]>MAXNUFUS THEN

BEGIN

MAXNUFUS:=NUFUS[I];

MAXSEHIR:=SEHIR[I];

END;

IF NUFUS[I]<MINNUFUS THEN

BEGIN

MINNUFUS:=NUFUS[I];

MINSEHIR:=SEHIR[I];

END;

END;

clrscr;

WRITELN('NUFUSU EN FAZLA OLAN SEHIR ',MAXNUFUS,' ILE ',MAXSEHIR);

WRITELN('NUFUSU EN AZ OLAN SEHIR ',MINNUFUS,' ILE ',MINSEHIR);

 

FOR I:=1 TO 5 DO

WRITELN(SEHIR[I],' : ',NUFUS[I]);

READLN;

 

 

end.

NUFUSU EN FAZLA OLAN SEHIR 43456 ILE c

NUFUSU EN AZ OLAN SEHIR 123 ILE a

a : 123

b : 453

c : 43456

d : 234

e : 2342

 

           

            En büyük veya en küçük bulmak için yapılacak işlem; ilk bilgiyi en büyük ve en küçük kabul edip, geriye kalan bilgileri bununla kıyaslamaktır. Eğer en küçük kabul edilen bilgiden daha küçük bir bilgiye rastlanırsa bu bilgiyi en küçük kabul etmek veya en büyük kabul edilen bilgiden daha büyük bir bilgiye rastlanırsa bu bilgiyi en büyük kabul ederek işlem geriye kalan bütün geriye kalan bilgiler için yapılır. Döngü sonunda en büyük veya en küçük bilgiler bulunmuş olunur.

 

 

 

 

 

 

 

 

Örnek  ;

(*

   Tasarım       : Sean Dillon Tarafından Hazırlanmıştır

   Tarih         : 24.02.05 22:15

   Konu          :

   İstenilen miktarda öğrencinin isimleri ve bir dersten aldıkları iki not

   alarak bilgileri aşağıdaki gibi ekrana listeleyen program...

 

İsim                   Not-1          Not-2       Ortalama      Sonuç

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

XXXX                   XX             XX          XX            XXXXX

 

*)

USES CRT,mustafa;

VAR

OGRENCI: ARRAY[1..1000] OF STRING[20];

NOT1,NOT2: ARRAY[1..1000]OF INTEGER;

I: INTEGER;

ORTALAMA:REAL;

SECENEK: CHAR;

DURUM: STRING[10];

BEGIN

CLRSCR;

I:=1;

GOTOXY(1,10)  ;WRITELN('isim                   Not-1          Not-2       Ortalama      Sonuç  ');

GOTOXY(1,11)  ;WRITELN('-----------------------------------------------------------------------');

REPEAT

TEXTCOLOR(2);

GOTOXY(30,1)  ;WRITELN('OGRENCI DURUM RAPORU');

GOTOXY(1,2)   ;WRITELN('OGRENCI ADI :                       ');

GOTOXY(1,3)   ;WRITELN('NOT1        :                       ');

GOTOXY(1,4)   ;WRITELN('NOT2        :                       ');

gotoxy(1,5)   ;writeln('                                    ');

GOTOXY(14,2)  ;READLN(OGRENCI[I]);

GOTOXY(14,3)  ;READLN(NOT1[I]);

GOTOXY(14,4)  ;READLN(NOT2[I]);

 

 

ORTALAMA:=(NOT1[I]+NOT2[I])/2;

IF ORTALAMA>=60 THEN

begin

durum:='GECTI';

textcolor(3); end;

 if ortalama<60 then

 begin

 textcolor(4);

 DURUM:='KALDI'; end;

 

GOTOXY(1,12)  ;INSLINE;

GOTOXY(1,12)  ;WRITE(UPCASE(OGRENCI[I]));

GOTOXY(26,12) ;WRITE(NOT1[I]);

GOTOXY(40,12) ;WRITE(NOT2[I]);

GOTOXY(52,12) ;WRITE(ORTALAMA:4:2);

GOTOXY(66,12) ;WRITE(DURUM);

 

I:=I+1;

gotoxy(1,5)   ;writeln('YENI KAYIT (E/H)');

SECENEK:=READKEY;

SECENEK:=UPCASE(SECENEK)

 UNTIL SECENEK='H';

 

END.

 

 

                             OGRENCI DURUM RAPORU

OGRENCI ADI :salih

NOT1        :32

NOT2        :45

YENI KAYIT (E/H)

 

 

 

 

isim                   Not-1          Not-2       Ortalama      Sonu 

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

SALIH                    32            45          38.50         KALDI

SERCAN                   67            90          78.50         GECTI

AHMET                    78            67          72.50         GECTI

MUSTAFA                  12            45          28.50         KALDI

 

 

            Bu programı özellikle incelemeniz tavsiye ediyorum. Burada pek çok Pascal komutlarının kullanımını görmekteyiz. Bu yüzden uygulamalı olarak incelemenizi tavsiye ediyorum…

 

ÇOK  BOYUTLU DİZİLER            :

            Şimdiye kadar hep tek boyutlu diziler üzerinde duruldu ve tek boyutlu diziler üzerinde işlem yapıldı. Bu bölümde iki veya üç boyutlu diziler üzerinde durulacaktır.

 

Dizi tanımlama  : İki veya üç boyutlu dizileri tanımlamak için aşağıdaki gibi tanımlamalar yapılır.

 

1) A: array[1..10] OF array [1..5] OF integer;

            veya

    A: array[1..10,1..5] OF integer;

 

2) B: Array[1..20] OF Array[1..10] OF Array[1..5] OF byte;

            veya

    B: Array[1..20,1..10,1..5]OF byte;

 

1. tanımlamada A değişkeni 10x5 boyutunda, 2. tanımlamada ise B değişkeni 20x10x5 boyutunda çok boyutlu birer dizi değişkenlerdir. A dizisine Integer tipinde 10x5=50 eleman ve B dizisine ise Byte tipinde 20x10x5=1000 eleman kaydedilebilir.

 

Dizi tanımlamak için aşağıdaki gibi tanımlama yapılabilir.

Var

A: Array[Boolean] OF Array[1..10] OF integer;

 

Burada tanımlanan A dizisinin ilk indisi Boolean tipinde bir bilgidir. Dolayısıyla ilk indis Boolean tipinde bir sabit (false,true) veya değişken olabilir. İkinci indisi belirtmek için 1-10 arasında değer alan bir tam sayı değişken veya sabit kullanılır. Dolayısıyla bu dizide 20 adet tam sayı tutulabilir.

 

Mesela 40 öğrencinin 3 notunu saklamak için;

 

Var

Not1: array[1..40,1..3]OF byte;

Tanımlaması yapılır. Aynı şekilde 40 öğrencinin, 10 farklı dersten aldıkları 3 not bilgisini tanımlamak için;

 

Var

Not2: array[1..40,1..10,1..3] OF byte;

 

Tanımlaması yapılır. Bu tanımlama ile not2 değişkeninde toplam 40x10x3=1200 adet not bilgisi tutulabilir.

İlk tanımlamada (Not1)120, ikinci tanımlamada(not2)ise 1200 adet not bilgisi saklanabilir.

Bu bilgilere erişmek için;

Not1[1,3] 1. öğrencinin 3. notu;

Not2[1,5,2] 1. öğrencinin 5. dersten aldığı 2. not

 

Şeklinde ifadeler kullanılır. Bu şekilde kullanımların kullanıcıya sağlayacağı fayda fazla değildir. Bunun için indis numarası olarak değişken veya değişkenler kullanılır.

            Not1[i,j] tanımlaması i. Öğrencinin j.notu anlamına gelir.

 

 

 

DOSYALAMA

GİRİŞ                                    :

Dosya  : Aynı yapıdaki kayıtların oluşturduğu bir bütündür. Sürekli olarak saklanması gereken bilgiler ya program içerisinde sabit olarak tanımlanırlar yada dosyalarda saklanırlar. Program içerisine sabit olarak bilgiler yazılabilir. Ancak bir okuldaki öğrenci listesi, bir işletmenin müşteri kayıtları ve bunlara ait hareketler veya muhasebe kayıtları gibi bilgiler program içerisine yazılamazlar. Bu bilgilerin dosyalarda tutulmaları gerekir.

 

Turbo Pascal programlama dilinde üç farklı dosyalama şekli mevcuttur.

1-     Text Dosyalar

2-     Tipli(Typed) dosyalar

3-     Tipsiz (untypes) dosyalar

 

TEXT DOSYALAR              :

            Metin dosyaları olarak adlandırılan bu dosyalarda kayıtlar arka arkaya yazılırlar. Her kaydın sonunda CR(Carriage Return)(EOL=END OF Line) işareti vardır. Dosyaya yazılan ilk kayıt dosyanın başında, son girilen kayıt ise dosyanın en sonunda bulunur. Bir kayıta erişmek için o kayıta kadar olan bütün kayıtların okunması gerekir. Çok kayıtta oluşan dosyalarda kayıtlara erişim yavaş, yani çok zaman gerektirdiğinden Text dosyalar tavsiye edilmez. Bu dosyaların içerikleri herhangi bir editör programı ile görülebileceği gibi DOS’ un TYPE komutu yardımı ile de görülebilir. Text dosyalarda dosyaya kayıt yazmak veya okumak için dosya farklı komutlarla açılmalıdır. Bunun için dosyanın her defasında kapatılıp yeniden açılması gerekir. Okunan kayıtları tekrar okumak için dosyanın kapatılıp yeniden açılması gerekir.

 

Text Dosya Tanımlama : Dosyayı tanımlamak için TEXT veri tipi kullanılır.

 

Örnek                                     :

 

Var

            Dosya: Text;

 

Yukarıdaki tanımlamada ‘Dosya’ olarak kullanılan değişkene ‘ dosya değişkeni’ denir. Dosya ile ilgili bütün işlemler bu değişkene göre yapılır.

 

TEXT DOSYALARDA KULLANILAN KOMUTLAR    :

 

ASSIGN                                (Procedure)    :

Dosya değişkenine dosya isminin atamak için kullanılır.

Yazılımı            :

            ASSIGN(Dosya değişkeni, Dosya Adı)

 

‘Dosya Değişkeni’ yukarıda tanımlandığı gibi Text dosyalar için TEXT veri tipinde olmalıdır. ‘dosya adı’ ise sabit veya değişken olabilir. DOS’ ta dosya ismi en fazla 8 uzantısı ise en fazla 3 karakter olabilir. İsim ile uzantı arasına nokta (.) karakteri konur.

 

Örnek  ;

Assign(Dosya,’MUSTERI.DAT’);

Assign(Dosya,’C:\YAZI\MUSTERI.DAT’);

 

Yukarıdaki örneklerde görüldüğü gibi dosya değişkenine adı ile beraber dosyanın bulunduğu yerde atanabiliyor. Dosya adının değişken olması durumunda aşağıdaki gibi işlem yapılır.

 

Örnek  ;

Var

            DosyaAdi        : String[67];

            Dosya              : Text;

Begin  

Write(‘Dosya Adı                    : ’);ReadLn(dosyaadi);

Assign(dosya,dosyaadi);

(…..)

END.

 

REWRITE                            (Procedure)    :

            Dosyaya bilgi yazılması için dosyanın açılmasını sağlar. Ancak dosyada önceden bilgi bulunması durumunda dosyada bulunan bütün kayıtlar silinir ve ilk kayıttan itibaren dosyaya bilgi girilmesi sağlanır.

Yazılımı            :

            Rewrite(dosya değişkeni);

 

Dosya açılmadan önce dosya değişkenine Assign komutu tarafından dosya isminin atanması gerekir.

{$I-} ve IOResult fonksiyonun değerinin 0(sıfır) olması, işlemin başarılı olarak yapıldığını, farklı bir değer alması işleminin yapılmadığını gösterir.

 

RESET                                  (Procedure)    :

            Mevcut dosyadan bilgilerin okunması için dosyayı açar. Bu komutun kullanılması için dosyanın mevcut olması gerekir.

 

Yazılım :

            RESET(DosyaDeğişkeni);

 

Dosyada kayıt okuma işlemi dosya sonu (EOF=END OF File) işaretine kadar yapılabilir.    {$I-}  ve IOResult  fonksiyonun değerinin 0(sıfır) olması, işlemin başarılı olarak yapıldığını, farklı bir değer alması işlemin yapılamadığını gösterir.

 

APPEND                               (Procedure)    :

            Dosyaya bilgi eklemek için dosyanın açılmasını sağlar. Bu komutla açılan dosyanın sonuna bilgi ilavesi yapılır.

 

Yazılımı            ;

            Append(dosyadeğişkeni)

{$I-} ve IOResult fonksiyonun değerinin 0(sıfır) olması, işlemin başarılı olarak yapıldığını, farklı bir değer alması işlemin yapılamadığını gösterir.

 

EOF                                       (Function)       :

            Okuma işlemi sırasında dosya sonuna gelinip gelinmediğini test etmek amacıyla kullanılır.

 

Yazılım :

            EOF(Dosya değişkeni);

 

EOF=END OF file (dosya sonu), sonucu Boolean tipinde bir bir fonksiyondur. Eğer dosya sonuna gelinmiş ise TRUE, gelinmemiş ise FALSE değerini üretir. 

 

WRITELN                            (Procedure)    :

            Dosyaya bilgilerin yazılmasını sağlar. Bu komutun kullanılabilmesi için dosyanın Rewrite veya Append komutları ile açılmış olması gerekir.

 

Yazılımı            :

            WRITELN(DosyaDeğişkeni, Bilgi veya değişken listesi);

 

Dosya değişkeni, Text dosyalar için TEXT veri tipi ile tanımlanmış olmalıdır.

 

ReadLn                                  (Procedure)    :

            Reset komutu ile açılmış olan dosyadan kayıt okumak için kullanılır. Dosyanın mevcut ve EOF fonksiyonunun sonucunun FALSE olması gerekir.

 

Yazılımı            :

            ReadLn(DosyaDeğişkeni, değişken listesi);

 

Bilgi okuma işleminin EOF (Dosya Sonu) işaretinden sonra yapılması hata oluşmasına neden olur.

 

CLOSE                                  (Procedure)    :

            Açık olan dosyayı kapatmak için kullanılır.

 

Yazılımı            :

            Close(DosyaDeğişkeni);

 

Aşağıdaki program ile Text tipindeki bir dosyaya kayıt işlemi yapılıyor. Dosyaya kayıt işleminin yapılabilmesi için dosyanın Append komutu ile açılmış olması gerekir. Eğer dosya mevcut değilse, dosyanın Rewrite komutu ile açılması gerekir. Dosyaya yazılacak olan bilgiler girildikten sonra bu kayıtların boş kalan karakterleri boşluk ile doldurulmalıdır. Bu işlemden sonra kayıt dosyaya yazılabilir. Programdan çıkmak için bilgi girişi sırasında isim bilgisi boş geçilmelidir.  

Örnek  ;

 

{açıklama: bu program temel pascal dosyalama yöntemi üzerinedir. text bir

 dosyaya kayıt işlemi temel olarak ele alınmıştır.}

uses

    crt;

var

    D     : Text;

    isim  : string[20];

    adres : string[35];

    tel   : string[15];

    kod   : integer;

    B     : String;

 

Procedure Tamla;

begin

     fillchar(b,255,32) ;

     b[0]   :=#255      ;

     isim   :=isim+b    ;

     adres  :=adres+b   ;

     tel    :=tel+b     ;

end;

 

begin

assign(D,'Hesap.DAT');

{assign komutu dosya değişkenine ismini atamak için kullanılır}

{$i-} append(d);Kod:=IOResult;{$i+}

if kod<>0 then rewrite(d);

{append komutu dosyaya bilgi eklemek için açılmasını sağlar. bu komutla

 açılan dosyanın sonuna bilgi eklemesi yapılır}

 

repeat

      clrscr;

      write('isim         : ');readln(isim);

      if isim='' then

      begin

      Close(D);halt;

      {burada close komutu ile açtığımız dosyayı kapatıyoruz ve hata vererek

       programın işleyişini durduruyoruz. bunun sebebide if komutu incelendiği

       zaman isim kısmını eğer boş bırakırsak programı durdur olduğudur}

      end;

      write('Adres        : ');readln(adres);

      write('Telefon      : ');readln(tel);

      tamla;

      Writeln(d,isim,adres,tel);

      {burada dosyaya yazı işlemi gerçekleşiyor}

      until 1=2;

      end.

 

Aşağıdaki program ise yukarıdaki program tarafından dosyaya yazılan bilgilerin okunarak ekrana alt alta listelenmesini sağlar. Listeleme işlemi dosya sonuna kadar yapılmaktadır. Bu işle için “While not EOF(D) do ifadesi kullanılmıştır. Bu komut ‘dosya sonu değilse, döngü içerisindeki işlemleri yap’ anlamındadır. Okuma işlemi bittikten sonra dosya kapatılıyor. Kayıt sayısının ekrandaki satır sayısından fazla olması durumunda ekrandaki bilgiler yukarı doğru kayacaktır. Sayfa sayfa listeleme işlemini size bırakıyoruz.

 

uses crt;

var

   D     : TExt;

   isim  : String[20];

   adres : string[35];

   tel   : string[15];

   kod   : integer;

 

begin

   assign(D,'hesap.dat');

   {assign komutu dosya değişkenine ismini atamak için kullanılır}

   {$i-}reset(d);kod:=ioresult;{$i+}

   {reset komutu Mevcut dosyadan bilgilerin okunması için dosyayı açar.

    Bu komutun kullanılması için dosyanın mevcut olması gerekir. }

    if kod<>0 then exit;

 

    clrscr;

    while not EOF(D) do

    begin

    readln(d,isim,adres,tel);

    writeln(isim,adres,tel);

    end;

    readln;

    close(d);

 

    end.

 

 

 

Hosted by www.Geocities.ws

1