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
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...
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ı...
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...