4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

Transkript

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları
Şart yapıları bir bilgisayar programının olmazsa olmazlarındandır. Şart
yapıları günlük hayatımızda da çok fazla karşılaştığımız belirli durumlar
karşısında hangi seçenekleri tercih edeceğimizi belirleyen kurallardır. Bu
kural
ve
seçenek
olanakları
istek
ve
arzularımıza,
karşılaştığımız
durumların değerlendirme kriterlerindeki sınırlara veya bunlara bağlı olan
ve gerçekleşmesini istediğimiz olaylara doğrudan bağlıdır.
Bir değişkenin belirli aralıklarda alabileceği değer kümesi, bir akışkan
mekaniğinde
sonuç
için
kullandığımız
fonksiyon,
mukavemet
problemlerinde karşı kuvvet değeri, dağıtım ve şebeke modellerinde
kurulan matematiksel modeller gibi verebileceğimiz bir çok örnekte
istenen veya istenmeyen aralıklar vardır. bu gibi aralıkların istediğimiz
aralık değerlerindeki uygun aralıkların seçilmesi veya değerlendirilmesi
sırasında göz önüne alınacak aralığın belirlenmesi işlemini bilgisayar
programlamada şart yapıları ile oluşturuyoruz.
4.1 IF – THEN Şart Yapıları
Şart yapılarında bir şart gerçekleşiyor ise yap yok gerçekleşmiyor ise
yapma gibi düşünülen yapılardır. Eğer x değişkenini alacağı değer 0’dan
küçük ise ekrana negatif yaz. Bu bir şarttır ve şart yapısı için temel örnek
olarak verilebilir. Bu ifadeyi bilgisayar programlama dilinde yazacak
olursan şu şekilde yazabiliriz;
IF x < 0 then writeln(‘ x değeri 0 dan küçük ’);
Şart yapılarına karar kontrol sistemleri de diyebiliriz. Karar vermek
zorunda olduğumuz hedeflenen veya istem duyulan değer veya değerler
kümesidir. Turbo pascal bilgisayar programlama dilinde üç farklı karar
yapısından bahsedilebilir. Genel olarak karar yapısı aşağıdaki gibidir;
IF mantıksal_değişken/karar then
duruma/komuta
Else
33
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
Durumb/komutb
Mantıksal değişken veya durum karşılaştırılacak şartı sağlamasına göre
karar oluşturulur. Bir değişken veya durumun belirli bir değerden küçük
veya büyük olması, bir değere eşit olması, bir veya birden fazla eşitlik
veya
mantıksal
karşılaştırma
gibi
bir
çok
önem
derecelerine
göre
gruplanabilen şart yapıları olabilir. IF komutundan sonra karşılaştırma
işlemi yapılır bu işlemin sonucunda işlem doğru ise duruma/komuta satırı
çalıştırılır. Bu satırın doğru olmaması haline else ile başlayan satır altında
yazanlar işletilir.
Şart yapılarında bazı yazım şekilleri kurallara uymadığı için yanlış kabul
edilir. Yazım kurallarına göre karşılaştırma yapılacak olan durumların
operatörlerin
yanlış
kullanımından
gelmektedir.
Karşılaştırma
yapacak
kaynaklanan
operatörler
nedenler
başta
yerine
atama
operatörlerinin kullanılması, mantıksal karşılaştırma tablosu kullanmak
gerekirken kullanmamak veya yerine değişken operatörlerini kullanmak
sayılabilir.
IF x := 0 then writeln(‘ x değeri 0 a eşit değil ’);
Şeklinde kod yazılması yanlış yazım kurallarına bir örnek olarak verilebilir.
Buradaki hata karşılaştırma yapılması gereken yerde atama işlemi
yapılmıştır. Programlama kodunu doğru hale getirmek için aradaki atama
işlemini karşılaştırma işlemi haline getirmemiz gerekir. Sonuç olarak
programda kullanacağımız kod aşağıdaki gibi olur.
IF x = 0 then writeln(‘ x değeri 0 a eşit değil ’);
Bu yazım birinci tür şart yapısına örnektir. Değişken değerinin sıfırdan
büyük olması durumunda ne yapacağız. Az önce değişkenin alacağı
değerin
sıfırdan
yapacağız.
küçük
Yazdığımız
olması
bilgisayar
veya
büyük
programının
olması
böyle
durumunda
ne
bir
ile
durum
karşılaştığında ne yapması gerektiğini nasıl belirleyeceğiz. Bu sorunun
34
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
cevabı istenmeyen durumlu şart yapısında verilmektedir. Şart yapısında
istenmeyen bir durum ile karşılaşıldığında başka bir işlem yap gibi
seçeneğin olduğu yazım kuralı vardır. İkinci tip şart yapısı olarak bilinen
bu
yazım
bilgisayar
şeklinde
istenmeyen
programına
yapmanız
durumlarında
gerekeni
tarif
gerçekleşmesi
halinde
edebileceğimiz
veya
yapmasını isteyeceğimiz bir komut düzeni yazmamızı sağlar. Bir şart veya
gerçekleşmesi istenen durum gibi işlenecek olan veriler için birden fazla
olay ortaya çıkabilir. Bu olayların hangisinin ne şekilde seçileceği ve
değerlendirileceğini ikinci tür şart yapılarında oluştururuz. Buna en iyi
örnek x değişkenin değerinin pozitif veya negatif olması durumu verilebilir.
X değişkeni bir aralık değeri veya klavyeden girilen değeri pozitif ise
ekrana x değişkeninin pozitif olduğunu yazsın;
IF x < 0 then writeln(‘ x değeri pozitiftir ’);
Değişkenin alacağı değer eğer negatif ise ne olacaktır. Kullanıcı acaba bu
verinin negatif olduğunu ve değerinin ne olduğunu nasıl anlayacaktır. İşte
bu gibi karşılaşılan olaylarla ilgili olarak değişkenin değerinin negatif
olduğunu belirten diğer sonucu veya dallanmayı gösteren işlem için else
kullanarak sorunu çözeriz. Yazacağımız kod artık aşağıdaki gibi olur.
IF x < 0 then writeln(‘ x değeri pozitiftir ’);
else writeln(‘ x değeri negatiftir ’);
Else ifadesi birinci durumun oluşmaması veya gerçekleşmemesi halinde
oluşacak olaylar veya yapılacak olan işlemleri belirler. Değişkenin değeri
eğer sıfırdan küçük ise ekrana artık x değişkeninin değerinin negatif
olduğunu yazan bir yazı gerecektir. Mantıksal operatörler kullanarak
birden fazla olayın aynı anda gerçekleşmesini veya bir olayın başka bir
olaya bağlı olması halinde gerçekleşecek olan işlemlerin kümesini nasıl
tanımlarız. Bu konuyu biraz açacak olursak, bir olay gerçekleşecek ve bu
olay gerçekleşirken önemli bir başka olayında gerçekleşerek beraber anyı
35
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
anda olması gerekliliği vardır. Aynı olayların beraber diğer bir deyiş ile
birbirine
bağlı
ise
mantıksal
operatörleri
kullanarak
bu
işlemleri
gerçekleştirebiliriz.
IF ( sayi_1 >= sayi_2 ) AND ( sayi_1 >= sayi_3 )
then buyuk:= sayi_1;
writeln(‘ sayi1 diğerlerinden büyüktür degeri ise ’,
buyuk,’dir’ );
IF ( sayi_2 >= sayi_1 ) AND ( sayi_2 >= sayi_3 )
then buyuk:= sayi_2;
writeln(‘ sayi2 diğerlerinden büyüktür degeri ise ’,
buyuk,’dir’ );
IF ( sayi_3 >= sayi_2 ) AND ( sayi_3 >= sayi_1 )
then buyuk:= sayi_3;
writeln(‘ sayi3 diğerlerinden büyüktür degeri ise ’,
buyuk,’dir’ );
Mantıksal operatörler yardımı ile bu karmaşık karşılaştırma işlemini
yapabiliriz. Karşılaştıracağımız işlemler eğer ikiden fazla veya daha çok
karşılaştırma işlemi yapmak istiyorsak nasıl yapmalıyız. Yukarıdaki örnekte
üç sayımız vardır, biz bu sayıların hangisinin diğerinden büyük olduğunu
anlamaya ve ekrana yazdırmaya çalışıyoruz. Daha büyük karşılaştırma
sayıları ile karşılaştığımızda değişken sayılarının artması ile karşılaşmasını
istediğimiz değişkelerin sayısı da artacaktır. Böyle olaylar karşısında
üçüncü durum şart yapılarını kullanırız.
Üçüncü tip şart yapılarında arka arkaya gerçekleşecek olaylar veya
birbirine
bağlı
olaylar
daha
kolay
ifade
edilerek
problemler
çözülebilmektedir. Üçüncü tip şart yapılarında olayların birbiri ile olan
ilgileri veya ilintileri birden fazla olduğundan birkaç olasılık veya mantıksal
bağlantı daha rahat kurulabilmektedir.
IF mantıksal_değişken/karar then
duruma/komuta
36
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
Else
Durumb/komutb
Else If
Durumc/komutc
Üçüncü tip şart yapısının ikinci tip şart yapısına ek olarak yazılan son
satırda Else
If belirteci vardır. bu genel gösterimde ilk iki şartın
sağlanamaması durumunda en son Else If
ifadesinden sonra gelen
satırdaki komutlar işlenir. Üçüncü tip şart yapısını bir örnek üzerinde
inceleyelim. Bu örnekte klavyeden girilen bir sayının işaretinin ne
olduğunu ekrana yazan bir program olsun .
Program isaret;
Var
sayi : real;
Begin
Writeln(‘Klavyeden bir sayı girin Æ’);
Readln(sayi);
if sayi > 0 then
writeln(‘
klavyeden
girilen
sayının
işareti
girilen
sayının
işareti
pozitiftir ’);
else sayi < 0
writeln(‘
klavyeden
negatiftir ’);
else if sayi= 0 then
writeln(‘ klavyeden girilen sayı sıfırdır ’);
end.
İlk IF
ifadesinden sayı değişkeni sıfırdan büyük ise ekrana sayınını
sıfırdan büyük olduğunu yazar. Else ifadesi sayının sıfırdan küçük olması
durumunda
sayının
işaretinin
negatif
açıklamaktadır. En son olarak Else
olduğunu
yazan
şart
yapısını
If ise yukarıdaki iki durumun
olmaması halinde en son olarak ekrana yazılan komuttur. Burada en
37
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
önemli ve unutulmaması gereken else ifadelerini kullandıktan sonra en son
olarak Else If ifadesini kullanmak gerekliliğidir. Programda yazacağımız
diğer tüm şart ile ilgili olan karşılaştırmaları oluşturup daha sonra en son
bir önceki yazılanları gerçekleşmemesi durumunda işletilecek komutları
Else If altına yazılması gerekir. Üçüncü tip şart yapılarında Else If en
son yazılmalıdır.
4.2 Case-Durum-Of Şart ve Dallanma Yapıları
Şart yapılarında önemli diğer yapı case türünden olan yapılardır. Bu tür
şart yapılarında ortaya çıkan şartlar bir aralık değerine tekabül ediyor ise
şartın gerçekleşmesini sağlayan bir aralık değeri var ise veya şart
yapısının çok karmaşık hale gelecek ise case yapısını kullanırız. Bu yapının
if yapısından bir farkı tekrarlı olan olayların geliştirilebilmesine olanak
tanımaktadır.
Genel yazım şekli aşağıdaki gibidir.
Case şart/durum of
Değer_listesi_1 : komut;
Değer_listesi_2 : komut;
Değer_listesi_3 : komut;
Değer_listesi_4 : komut;
…..
Değer_listesi_n : komut;
End;
Bütün n tane olan bu durumların gerçekleşmemesi karşısında ne yapılır.
Yapıya ek olarak en son n durumundan sonra else durum/komut eklentisi
yapılarak karşılaşılan şart yapısı sonuçlandırılmaya çalışılır.
Case şart/durum of
Değer_listesi_1 : komut;
Değer_listesi_2 : komut;
Değer_listesi_3 : komut;
Değer_listesi_4 : komut;
…..
38
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
Değer_listesi_n : komut;
else durum/komut
End;
Değer listesi içerisine sayısal bir değer yazılabildiği gibi bir aralık değeri de
yazılabilir. Liste değeri tam sayı veri tipi olmalıdır. Eğer kullanacağımız
değer listesinin alabileceği karşılık karakter veya karakter aralığı ise liste
değerini karşılığını ‘karakter’ veya ‘karakter..aralığı’ şeklin de vermemiz
gerekir. Liste değeri 1, 3423, 44343 olabildiği gibi, 1..44, 99..201,
3133..556565 gibi değerlerde alabilmektedir.
Başlangıç örneği olarak öğrencileri aldığı notlara göre ekrana mesaj
yazdıran pascal bilgisayar programı yazalım.
Program not_yazdir;
var
not_gir, not_yaz: integer;
Begin
Writeln(‘Öğrencinin notunu girin Æ’);
Readln(not_gir);
Case not_gir of
91..100: not_yaz:=’A’;
81..90: not_yaz:=’B’;
71..80: not_yaz:=’C’;
61..70: not_yaz:=’D’;
51..60: not_yaz:=’FD’;
0..50: not_yaz:= ‘Kaldı’;
writeln(‘Öğrencinin Notu’,notyaz,’ dir’);
end;
End.
Yukarıdaki
Pascal
bilgisayar
programında
klavyeden
girilen
sayısal
değerdeki notu harf skalasındaki yere göre ekrana yazdırır. Kullanıcı
klavyeden bilgisayara bir not girer, girilen not not_gir değişkeni ile
39
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
karşılaştırmak
için
klavyeden
alınır
İrfan MACİT
ve
case
n
of
yapısına
göre
karşılaştırılacak değer listesi ile karşılaştırılır. Değişkenin aldığı değerler
hangi aralıkta ise o aralığa uygun seçim aralığındaki komut seti çalıştırılır.
Değişkenin alacağı değerler bazen karakter veya karakter aralığı da
olabilir.
Program karakter;
var
karak: char;
Begin
Writeln(‘Klavyeden bir karakter girin -> ’);
readln(karak);
Case karak of
‘A..D’:
writeln(‘Girilen
karakter
A
ve
D
karakter
E
ve
K
aralığındadır ’);
‘E..K’:
writeln(‘Girilen
aralığındadır ’);
else
writeln(‘Girilen
karakter
A
ile
K
arasında
değildir ’);
end;
End.
Bu programda klavyeden girilen karak değişkenine atanan karakterin
aldığı
değere
göre
veya
karaktere
göre
aralıktaki
komut
seti
çalıştırılacaktır. Eğer girilen karakter A ile K arasında değil ise en sonda
yer alan else sonra gelen komutlar çalıştırılır. Bu tip kontroller komutları
çalışması sırasında oluşan diğer durumların veya olayların belirlenmesinde
programcıya yardımcı da olmaktadır.
Mühendislik çözümlerinde karşılaşılan bir çok problem sayısal olmasına
rağmen çözümlerin bazıları sözel olabilmektedir. Bu yüzden karakter
kümelerinin gruplanması veya küme çözümlerinde karakter kullanmak
zorunlu hale gelmektedir. Bu zorunluluğu aşmak için yukarıdaki gibi
yazılabilecek kodlar üretilir.
40
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
Program case_orn;
var
k: String(10);
n: Integer;
Begin
writeln ('Klavyeden herhangi bir karakter girin-> ');
readln (k);
for Bar := 1 to Length (k) do
begin
writeln (k[n], ' bir ');
case k[n] of
'A' .. 'Z','a' .. 'z':
writeln ('karakterdir');
'0' .. '9':
writeln ('sayıdır');
otherwise
writeln ('tanımlanamayan karakterdir')
end
end
end.
Genellikle klavyeden girilenlerin sayı veya karakter olduğu bilinmektedir.
Bilinmediği
durumlarda
nasıl
ayırım
yapılır
gibi
bir
problem
ile
karşılaştığımızda nasıl program kodu yazılır. Önceki bölümlerde sadece
büyük küçük ayrımı olmayan karakter veya sayı girilen örnekler verilmişti.
Yukarıdaki örnekte klavyeden sayı veya karakterin büyüklüğü ayrımı
yapılmış girilen sayı veya karakterin tanımına göre ayrım yapılmıştır.
Döngü yapısının kullanıldığı bu bilgisayar programında sayı katarı olarak
belirlenen bir değişken tanımlaması yapılmıştır. Karakter katarı k:
String(10);
tanımlaması on haneli bir karakter içeren dizi (katar)
tanımlanmıştır. Bu dizinin alabileceği elemanlar herhangi bir karakter
olabilmektedir. Klavyeden olkunan bu dizielemanları hangi aralığa geliyor
ise olan ait olan case yapısındaki komutlar çalıştırılacaktır.
Yukarıdaki programda bir değişiklik otherwise komutudur. Bu komut ISO
10206 Uluslararası standart tanımlama ile belirlenen else ile aynı anlama
(eş anlamlı- synonym) gelen komuttur. Yukarıdaki programı aşağıdaki gibi
yazabiliriz. Aralarındaki tek fark
Pascal
bilgisayar
programlama
otherwise yerine else
aracı
üreticilerinden
kullanılmıştır.
bazılarının
bu
tanımlamayı standartları içerisine almayışından dolayı bazı derleyiciler bu
41
Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
İrfan MACİT
komutta hata verebilmektedir. Böyle durumlarda programcı otherwise
yerine else komutunu kullanmalıdır.
Program case_orn;
var
k: String(10);
n: Integer;
Begin
writeln ('Klavyeden herhangi bir karakter girin-> ');
readln (k);
for Bar := 1 to Length (k) do
begin
writeln (k[n], ' bir ');
case k[n] of
'A' .. 'Z','a' .. 'z':
writeln ('karakterdir');
'0' .. '9':
writeln ('sayıdır');
else
writeln ('tanımlanamayan karakterdir')
end
end
end.
Geliştirilen bir çok algoritmanın karşılaşılan mühendislik çözümleri değişik
olabilmektedir. Değişik algoritmalar bu gibi çözümlerin uygulanmasını
zorunlu kılmaktadır.
42

Benzer belgeler

23 3- Turbo Pascal Programlamada Giriş – Çıkış İşlemleri 3.1 Turbo

23 3- Turbo Pascal Programlamada Giriş – Çıkış İşlemleri 3.1 Turbo Dosya değişkenlerinin tanımlanmasından sonra değişkene girilecek değer aşağıdaki komut yardımı ile atanır. Readln(değişken); Read(değişken); Bu iki komut aslında aynıdır. Aralarındaki temel fark re...

Detaylı

15 2. Veri Tipleri Turbo Pascal bilgisayar programlama dili ile

15 2. Veri Tipleri Turbo Pascal bilgisayar programlama dili ile aşabilmek için değişkenin tipini tam sayı değerini uzun tamsayı (longint) değeri ile değiştirmemiz gerekir. Uzun tam sayı tipinin alabileceği değişken değeri -2147483648 ile 2147483647 aralığındadı...

Detaylı

5- Turbo Pascalda Kullanılan Döngü Yapıları

5- Turbo Pascalda Kullanılan Döngü Yapıları gerçekleşmesi istenen durum gibi işlenecek olan veriler için birden fazla olay ortaya çıkabilir. Bu olayların hangisinin ne şekilde seçileceği ve değerlendirileceğini ikinci tür şart yapılarında ol...

Detaylı