+ Konu Cevaplama Paneli
Gösterilen sonuçlar: 1 ile 2 ve 2

Konu: Pascal ile Programlama

  1. #1
    Ehil Üye zeet06 - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    Jul 2008
    Mesajlar
    1.022

    Lightbulb Pascal ile Programlama

    Pascal'da Programlama
    İçindekiler:
    -Algoritma
    -Pascal'a Giriş
    -İlk Adımlar
    -Pascal Editörü
    -lk Örnek
    -Değişkenler
    -Gerçek Sayı Tipleri
    -String Degişken Tipi
    -Char Degişken Tipi
    -Set (Küme) Tipi
    -WRITE / WRITELN
    -READLN / READKEY
    -Gotoxy
    -If ...Then ...
    -IfOrnekleri
    -Case ... Of
    -Repeat-Until Döngüsü
    -While Döngüsü
    -For Döngüsü
    -Oyun


    Pascal programlama dili ilk olarak 1968 yilinda Niklaus Wirth tarafindan gelistirilmis yüksek seviyeli bir programlama dilidir. Bu dilin Turbo Pascal versiyonu günümüzde mühendislik çalismalarinda/hesaplamalarinda, ticari uygulamalarda, bilim ve egitim alanlarinda yaygin olarak kullanilir.
    Turbo Pascal özellikle program yazmada ve okumada sagladigi kolaylilikla çok kullanilan dillerden biridir. Su anda en son olarak 7.0 sürümü bulunan Pascal'in program yapisi çok gelismistir. Programcinin kendi komutlarini yapmasi ve hatta komutlarini toplu halde bir dosyada saklayarak heryerden ulasabilmesi, çok gelismis program yazim editörü, genis yardimi, genis grafik kütüphanesi, çok sayida hazir kütüphanesi, Nesne Tabanli Programlamayi (Object Oriented Programming-OOP) desteklemesi, hata bulma kolayligi ve daha sayamayacagim birçok özelligi ile Pascal güçlü bir dil olma ünvanini tasiyor.
    Ayrica Pascal'in Borland Pascal for Windows versiyonuyla windows tabanli program yazmaya olanak vermesi ve su anki en yaygin web tabanli programlama dilleriyle benzerligi ve Delphi'nin temelini olusturmasi onun diger dillerden farklarindan bazilari.
    Pascal hakkinda internetten de sayamayacagimiz kadar fazla kaynak ve örnek program kodlari bulabilirsiniz. Pascal'in daha birçok özelligi var ancak bunlarin hepsini burda sayacak degilim. Artik sabirsizlandiginizi biliyorum. O zaman yavas yavas Pascal ögrenmeye baslayalim..
    Pascal'da Programlama
    Bazi kisiler bilgisayarin insanlardan daha zeki oldugunu düsünse de aslinda ve kesinlikle bilgisayar en ufak bir zekasi olmayan, kendi kendine düsünemeyen ama buna karsi çok hizli islem yapabilen bir makinadir. Bilgisayar kendisine en ince ayrintisina kadar anlatmadiktan sonra hiçbirsey yapamaz ve kesinlikle düsünemez. Eger kullandiginiz programlar size akilli geliyorsa bu bilgisayardan degil, onu programlayan programcidan kaynaklaniyordur. Bilgisayarin en önemli ve insanda olmayan tek özelligi aritmetik ve karsilastirma islemlerinde çok hizli olmasidir. Insanlar bilgisayarla kendilerinin çok daha uzun zamanda yapabilecegi ve hata yapabilecekleri islemleri çok daha hizli ve hatasiz olarak yaparlar. Istedikleri ya da bilgisayarin yapmasi gereken islemlerin ne oldugunuysa ona programlama dilleri araciligiyla anlatirlar. Bir islemi bilgisayara bir defa anlattiktan (programladiktan) sonra o isi bilgisayardan istedigimiz her zaman, bilgiayar sadece daha önceden yaptigimiz programi çalistirir ve orada yapilmasi istenilen isleri sirasina uygun olarak yapar.
    Programin ne oldugunu hepimiz biliyoruz. Programlama ise bir programlama dili vasitasiyla (ya da direk makine kodlariyla) bilgisayarin çalistirabilecegi programlar yapmaktir. Bu programlari yapan kisiye programci, kullanan kisiye ise kullanici denilir. Simdiye kadar hep baskalarinin yaptigi programlari kullandik. Bundan sonra biz de kendi programlarimizi yazabilecegiz ve istersek (ki isteriz) bu yazdigimiz (baska bir tabirle yaptigimiz) programlari baskalarinin da kullanmasina izin verebilecegiz.
    Bu yazilari okumaya basladiginiza göre artik programlama ögrenmeye karar vermissiniz demektir. Yani benim size programlamanin faydalarini anlatmama gerek yok. Bundan sonra yapacaginiz, bütün dersleri uygulayarak anlamak ve programlamanin zevkini kesfetmek. Artik hazirsaniz algoritmalara geçebiliriz...
    Algoritma
    Bir programi programlama dillerinde yazdigimizi ögrendik. Programlama dilinin ne oldugunu daha sonra anlatacagim. Programlama dillerinde bir program yazarken yapilan her isleme komut ve bu komutlarin bütününe de programin kodu denilir. Yani biz bir programi kodlariz. Ancak bu kodlari belirli sirada ve düzende vermek zorundayiz. Yoksa pek de akilli olmayan bilgisayarimiz bunlari kendine göre siraya koyamaz. Biz ona hangi islemi ne zaman yapacagini söyleriz. Gerekirse bazi komutlari hiç isleme sokmamasini, bir komutu birden çok defa icra etmesini ya da belirli sartlarda ne yapmasi gerektigini bilgisayara anlatmak için bir düzen içinde kodlarimizi yazmaliyiz. Iste bu düzene programin akisi ve bu akisin tamamina da programin algoritmasi denilir.
    Çok akilli bir robot düsünelim. Bu robot sesle çalissin. O zaman her sözümüz robot için bir komuttur. Robota egil dersek egilir. Bu onun için bir komuttur. Ancak robottan yerdeki kalemi size vermesini isteyecekseniz belki birden fazla komut kullanmak zorundasiniz. Mesela bu örnek için robota 4 tane komutu söyle verebilirsiniz:

    1. Egil.
    2. Kalemi al.
    3. Ayaga kalk.
    4. Kalemi bana ver.
    Bu seklide verdiginiz 4 komutun tümüne birden program diyebiliriz. Mesela bu robotun programlanabilir özelligi de olsun. Siz bu robota bu 4 komutu birden ögretip de bundan sonra her "kalemi ver" dediginizde bu isi yapmasini saglayabilirsiniz. Bundan robot, sonra siz "kalemi ver" komutunu söyleyince hemen daha önceki programi çalistirir ve bu 4 islemi yaparak sonuçta kalemi size verir. Peki programdaki 3. satirla 2. satiri yer degistirirseniz robot ne yapar. Egilir kalkar ve kalemi almaya çalisir ama kalem yerde oldugundan alamaz ve komutunuz dogru çalismaz. Dogru çalismasi için yukardaki sirada verilmelidir. Iste bu robotunuzun kalem verme algoritmasidir.
    Daha anlasilir ve günlük hayatta çok kullandigimiz bir örnek verelim. Mesela kis ayindayiz ve evden disari çikacagiz. Pencereden bakiyoruz. Hava yagmurluysa semsiyemizi alalim, degilse almayalim ve disari çikalim. Bu isin algoritmasini örnegin 2 yolla kurabiliriz. 1.'si:

    1. Pencereden disari bak.
    2. Eger hava yagmurluysa semsiyeni al.
    3. Disari çik.
    Bir kisiye bu üç komutu verirseniz hemen pencereden disari bakar ve eger hava yagmurluysa semsiyesini alir ve sonra disari çikar. Dikkat ettiyseniz "Eger hava yagmurlu degilse" gibi bir sart yok. Zaten 2. sart yanlissa 3. adima geçeceginden semsiyesiz olarak disari çikmis olur. Bu olayi birde su algoritma ile yapalim:

    1. Pencereden disari bak.
    2. Eger hava yagmurlu degilse 4. adima geç.
    3. Semsiyeni al.
    4. Disari çik.
    Gördügünüz gibi ayni isi 2 farkli algoritma ile yaptik. Dikkat ederseniz iki islemin de ayni sonucu verecegini görürsünüz. Bu sefer tersten yaptik isi. 2. adim bir karar verme adimidir ve eger hava yagmurlu degilse 4. adima geçmeye karar veriyor, 3. adim yapilmamis (atlanmis) oluyor ve semsiye alinmadan disari çikiliyor. Eger 2. adimdaki sart yanlissa, yani hava yagmurluysa 4. adima geçmiyor ve 3. adimdan devam ediyor islemlere. Bu durumda semsiye de alinmis oluyor.
    Buraya kadar okuduklarimiza göre programciyi "Problemi analiz eden ve onu bir programlama dili ile bilgisayara anlatan, yazan, programlayan kisi" olarak tanimlayabiliriz. Algoritma ise "Programcinin Problemi analiz ettikten sonra onu en kisa ve en hizli çözmek için gelistirdigi yoldur".
    Artik genel olarak algoritmayi anlamis olduk. Pascal'da Programlamayi anlatirken de yeri geldikçe algoritmalardan yararlanacagiz. Sunu unutmayalim ki iyi bir program önceden tasarlanmis ve bütün kullanim amaçlari belirlenmis programdir. Aksi takdirde isimiz hizlanacagina yavaslayabilir de..

    Pascal'a Giriş

    Pascal Dersleri'ne baslamadan önce bilgisayariniza Turbo Pascal Derleyicisini kurmamiz gerekiyor.Eger bilgisayarinizda Turbo Pascal kurulum paketi yoksa DOWNLOAD bölümümüzden gerekli dosyalari çekebilirsiniz. Eger TurK Pascal(c)'dan download ettiyseniz.Bilgisayarinizda tp70.zip ismindeki sikistirilmis dosya bulunmasi gerekiyor.Bunu Winzip programi vasitasiyla tp70 isminde bir klasöre unzipleyin.Ilgili klasörü açin ve Install.exe programini çalistirin.Eger çalistirdiginizda bir hata verirse.Ms-Dos modunda ilgili klasöre girip install yazin.Böylece kurulum programi çalisacaktir.Simdi asagidaki listeyi takip edin.

    -Giris ekranini Enter tusuna basip geçin. -Size kaynak sürücüyü soracaktir.Normalde install.exe programinin bulundugu sürücü otomatik olarak yazilmis olacaktir.Enter tusuna basin. -Size kaynak sürücüyü soracaktir.Eger gerekli dosyalar install.exe programinin bulundugu klasördeyse degistirmeden Enter tusuna basin. -Install Turbo Pascal on a Hard-Drive i seçip Turbo Pascali Hard Diske yükleyecegimizi belirtelim. -Otomatik olarak C:\Tp klasörünü ayarlayacaktir.Degistirmeden Start Installation a basin. -Dosyalarin yüklenmesini bekletin.Mavi bir mesaj kutusu çikacak.Herhangi bir tusa basin. -Turbo Pascal'in Ingilizce Readme yazisi çikacaktir.Çikmak için Esc'ye basin. -Turbo Pascal hard diskinizin belirtilen dizinine kurulmus olacaktir.

    Simdi isimizi daha da kolaylastirmak için Not Defteri programini çalistirin ve Windows'un kurulu oldugu hard diskin içindeki Autoexec.bat dosyasini açin ve dosyanin sonuna asagidaki kodu ekleyin.
    Set Path=%PATH%;C:\Tp\Bin;
    Yalniz bunu yaparken dikkat edin.Baska bir kodu silmeyin.
    Bu islemleri tamamladiysaniz bilgisayarinizi yeniden baslatin.Böylece kodlarinizi programa(exe) çevirecek olan Turbo Pascal Derleyicisi bilgisayariniza kurulmus olacaktir.
    Bir sonraki yazi Programlama Mantigi ile ilgili.Daha önceden Qbasic,TurboC veya farkli bir programlama dili ile ugrastiysaniz,bu bölümü atlayabilirsiniz.

    İlk Adımlar

    Artik bilgisayarimizda Turbo Pascal Derleyicisi ve bizde programlama mantigi olduguna göre yavas yavas örneklerle Turbo Pascal'i ve Pascal dilini ögrenmege baslayabiliriz. Kodumuzu iki türlü yazabiliriz.Birinci yöntem kodu Not Defteri gibi bir programda yazip kaydettikten sonra derleyici ile derlemek.Ikinci yöntem ise Turbo Pascal'in editörünü kullanarak kodu yazip derlemek.Eger elinizde bu derslerin yazili dökümü varsa ikinci yöntemi kullanabilirsiniz.Eger derslerin yazili dökümü yoksa,onlari bilgisayar ortaminda okuyup farkli bir Windows programiyla yazmaniz daha kolay olacaktir.Çünkü Turbo Pascal'in orijinal editörü Dos ortaminda çalisiyor ve buda size çok vakit kaybettirebilir.Yinede her sartta birinci yöntemi öneririm.Böylece ikide bir Windows'tan çikmaniza gerek kalmaz.

    Pascal Kaynak Kodlarinin(Derlenmemis) uzantisi ".pas"dir.Turbo Pascal degisik uzantili dosyalari derleyebilir(Pascal kodu içermek sartiyla),fakat ".pas" uzantisi yayginlik kazanmis ve benimsenmistir.Bu yüzden Windows'a .pas uzantisini tanitmamiz gerekebilir.Notepad ile bir seyler yazip 1.txt ismi ile kaydedin.Daha sonra bunu Yeniden Adlandirarak(Rename) .txt yerine .pas yazin.Dosya türünü degistirmek istiyor musunuz diyaloguna Evet cevabini verdikten sonra dosyayi çift tiklayin "Birlikte Aç" penceresi açilacaktir.Dosya tanimina Pascal Kaynak Kodu yazin.Program listesinden de Notepad'i bulup seçin."Bu dosyayi açmak için her zaman bu programi kullan" kutusunun seçili olduguna dikkat ederek "Tamam" butonuna basin.Böylece bilgisayariniz .pas uzantili dosyalara ne isim verecegini ögrenmis olur.
    Baslat(Start)-->Çalistir(Run) ile çikan kutucuga notepad yazin.Böylece Windows'un klasik Not Defteri programi çalisacaktir.Asagidaki kodu yazin.

    Program ilk;
    begin
    end.


    Bu kodu ilk.pas olarak Masaüstü(Desktop)'ne kaydedin.Daha sonra tüm klasör pencerelerini kapatip.Masaüstünde iken Baslat-->Çalistir deyip kutucuga tpc ilk.pas yazin.
    Turbo Pascal Version 7.0 Copyright (c) 1983,92 Borland International

    ILK.PAS(3)

    3 lines, 1472 bytes code, 668 bytes data.

    yazisini görürseniz programiniz derlenmis demektir.Masaüstünde ilk programiniz olan Ilk.exe bulunuyorsa basardiniz demektir.Eger bu asamaya gelemediyseniz korkarim daha önceden bir hata yapmissiniz.Kurulum yazisini tekrar inceleyin. Ilk.exe'yi hevesle çalistirdiniz ama bir sey olmadi degil mi?Olmamasi çok dogal çünkü programin sadece ismi,basi ve sonu var.Ama hiçbir islem yok.Bu arada yapilacak islemler begin ile end komutlari arasina yazilir.End komutunun sonundaki nokta(.) ise programin bittigini gösterir.Unutmayin bir programda birden fazla begin ve end bulunabilir.Programi bitiren end nokta ile program içerisindeki endler ise noktali virgül( ile sonlandirilmalidir. Genelde pascal kod satiri noktali virgül( ile sonlandirilir.Fakat bazi istisnai kodlarda noktali virgül kullanilmaz.Bunlar begin,repeat gibi degisik sekilde sonlandirilan komutlardir.Endise etmenize gerek yok zamani gelince her seyi daha net anlayacaksiniz.
    Yukaridaki kodu yorumlamak gerekirse "Program ilk;" satiri programin isminin ilk oldugunu bildirir."begin" komutu programin baslangicini "end" komutu ise programin sonunu belirtir.
    Pascal ile yazilabilecek en basit program budur.Bir sonraki derste daha kullanisli programlar yazmaya baslayacagiz.

    Pascal Editörü

    Artik Pascal'i çalistirdigimiza göre Editörün nasil kullanildigini ögrenmeliyiz. Pascal editörü Ingilizce olmasi sebebiyle Ingilizce bilenler tarafindan daha kolay kullanilir ama Ingilizce'yi hiç bilmeseniz de burda anlatacagim birkaç seyi bilerek rahatlikla kullanabilir ve program yazip çalistirabilirsiniz. Burda isinize yarayacak hemen hemen bütün özellikleri anlatacagim. Ilerdeki konularda bazi islemler için tekrar bu sayfaya dönerek yardim alabilirsiniz. Turbo Pascal editörünü ilk açtiginizda karsiniza söyle bir ekran gelir:

    Tabii ki bu ekranda yazan yazilar olmayacaktir! Ediörün kullanimi çok kolay demistik. En üstte gördügünüz "File Edit Serch Run Compile.." diye giden menü çubugu Pascal editöründe yapacaginiz bütün islemleri yapabileceginiz komutlari bulundurur. Yanlis anlamayin, bu menüde yazacaginiz program kodlari yok! Bu menüdeki birçok komutun kisayol tuslari da var. Bu menüyü ayrintili olarak tanitacagim. Onun altinda programlarinizi yazdiginiz mavi ekran var. Dedigim gibi buraya kodlarinizi yaziyorsunuz. Pascal editöründe bütün renkleri degistirebileceginiz gibi bu rengi de (maviyi) degistirebilirsiniz ama bence mavi güzel renktir. Bu pencerenin altinda ve yaninda Windows'takine benzer kaydirma çubuklari vardir. Mouse'unuzlar bunlari hareket ettirebilirsiniz. Alttaki kaydirma çubugunun solunda yazan iki sayi o anda imlecin bulundugu kordinatlari verir. Örnek resimde imleç gördügünüz gibi 11. satirin 5. sutunundadir. Onun hemen solunda bu ekranda tam ne olarak gözükmese de * (yildiz) isareti var. Eger dosyayi en son kaydettiginizden bu yana birseyler degistirmisseniz bu isaret gözükür. Kaydettiginde tekrar kaybolur. Bu sayede dosyayi kaydetmeniz gerektigini anlamis olursunuz. Yine bu mavi pencerenin en üstünde ortada programinizin adi ve uzantisi (uzantisi PAS olur) yazar. Eger dosyayi kaydetmediyseniz bu isim noname01.pas gibi birsey olur. Kaydettikden sonra gerçek ismi gözükür. Pascal editöründe ayni anda birden fazla programla çalisirken hangi programda oldugunuzu görmeniz açisinda faydalidir. Ayrica Mouse'unuzla pencerenin sag üst kösesindeki kare isarete tiklarsaniz pencere kapanir ve eger kaydetmediyseniz uyari mesaji çikar. Sag üst kösedeki "1" sayisi (ki bu sayi degisebilir) kaçinci pencerede/programda oldugunuzu gösterir. Son olarak onun yanindaki isaret ise küçük olan pencereleri tam ekran yapmak içindir. Yine eger isterseniz pencerenin kenarlarindan tutarak (mouse ile) boyutlarini ayarlayabilir ve en üstüne tiklayip basili tuarak pencereyi tasiyabilirsiniz. En son olarak en alttaki "F1 Help F2 Save.." seklindeki çubuga da durum çubugu deniliyor. Buradaki yazilar duruma göre degisir ve programin (Turbo Pascal'in) size mesajlar iletmesini saglar. Simdi menü'ye bir göz atalim bakalim neler var.
    File Menüsü:

    TP (Turbo Pascal, bundan sonra TP diye bahsedecegim) editörünün üstteki menülerinin ilkidir. En çok kullanacagimiz menü bu menü olacak. Bu menüyü açmak için alt tusuna basili tutarak F tusuna basin. Tüm menüleri için aslinda bu böyledir. Ya da F10 tusuna basarak da menü çubuguna geçebilirsiniz. Ayrica mouse kullanarak da bu menüyü açabilirsiniz. Simdi bu menüde yapabilecegimiz islemlere bakalim:
    New:
    Bu komutla yeni ve bos bir sayfa açariz. Open: Daha önceden kaydettigimiz dosyalari tekrar açip düzenlemek ya da görmek gibi amaçlarla açmak için kullanilir. Açilan program yeni bir pencerede açilir. Kisayol tusu F3'dür.
    Save:
    Yazdiginiz programlari bilgisayariniza kaydetmeniz lazim. Bu seçenegi seçerek ya da kisayol olarak F2 tusuna basarak programlarinizi kaydedebilirsiniz. Kaydetme isiniz çi sik yapmanizi tavsiye ederim. Yoksa bütün emekleriniz bir elektrik kesilmesi yada yanlis bir-iki tusa basmakla gidebilir.
    Save as:
    Üstünde çalistiginiz program kodunu farkli bir dosya olarak kaydetmek için kullanilir.
    Save all:
    O anda üstünde çalistiginiz bütün programlari birden kaydtmenizi saglar. Isinize yarayacak bir komut.
    Change dir:
    TP'i çalistirdiginizda otomatikmen turbo.exe dosyasinin bulundugu dizin esas alinir. Yani bir dosya kaydedrken veya açarken hep o dizin ilk olarak karsiniza gelir. Baska sebeplerden dolayi da eger yeni bir program yazmaya basliyorsaniz ilk önce bir klasör açin ve pascal'i açinda bu seçenekle o klasörü seçip bütün islemlerinizi orada yapin. Yani bu seçenek aktif klasörü degistirmeye yarar.
    Print:
    Yazdiginiz programi yazicidan çikartmak için bunu kullanabilirsiniz. Eger yaziciniz dogru çalisiyor ve açiksa yaptiginiz programlari yazicidan düzgün bir sekilde çikarir.
    Printer Setup:
    Yazici ayarlarini yapmak için. Eger yaziciniz dogru oldugu halde yazicidan programi çikaramiyorsaniz buradan gerekli ayarlari yapabilirsiniz.
    Dos Shell:
    Geçici olarak MS-DOS'a çikmak için kullanilabilir. Tekrar TP'a dönmek için Exit yazmaniz gerekir. Ama bu komut artik pek ise yaramiyor. Çünkü dos degil Windows var. Yine de dos kullanmayi biliyorsaniz yeni dizin açmak gibi ufak islerinizde kullanabilirsiniz.
    Exit:
    Pascal editöründen çikmak için. Alt tusu ve x'e birlikte basarak da ayni isi yapilir.
    Edit Menüsü:

    En çok kullanilan menülerden birisi de Edit menüsüdür. Ancak genelde direk menüyü kullanmayiz, onun yerine kisayol tuslarini kullaniriz. Gördügünüz gibi neredeyse herseyin bir kisayol tusu var. Undo: En son yaptiginiz degisikligi iptal eder, geri alir. TP'da çok fazla sayida (neredeyse sinirsiz) geri al yapabilirsiniz. Bu sekilde yaptiginiz yanlisliklari görmek ve iptal etmek çok kolaydir. Kisayol için Alt tusu ile birlikte Backspace tusu kullanilir. Redo: Yanlislikta Undo yaparak iptal ettiginiz islemleri terkar düzeltir, yani bu da ileri alir. Cut: Kes manasindadir. Bir yaziyi isaretleyip bu seçenegi seçer ya da Shift tusuyla beraber Delete tusuna basarsaniz isaretli yazi silinir ve hafizaya alinir. Daha sonra bunu istediginiz biryere yapistirabilirsiniz. TP'da bir metini isaretlemeyi ya mouse ile ya da shift tusuna basili tutarak yön tuslariyla yapabilirsiniz.
    Copy:
    Bir yaziyi isaretledikten sonra bu komutu çalistirisaniz ya da kisayolu olarak Crtl ile birlikte Insert tusuna basarsaniz yaziya birsey olmaz ama bir kopyasi hafizaya alinir.
    Paste:
    Kopyaladiginiz ya da kestiginiz metinleri herhangi biryere yapistirmak/eklemek için kullanilir. Koplayanlis ya da kesilmis yazi imlecin bulundugu yerden itibaren ekrana yazilir. Shift ile birlikte Insert tusuna basarsaniz da ayni isi yapabilirsiniz.
    Clear:
    Bir yaziyi isaretleyip tamamen silmek için kullanilir. Kisayolu Ctrl+Delete.
    Show Clipboard:
    Kopyaladiginiz ve kestiginiz tüm yazilar clipboard denilen ve hafizada biryerde tutulur. Bunlarin hepsini birden görmek için kullanabileceginiz bu seçenek yeni bir pencere açar ve bunlari gösterir.
    Search Menüsü:

    Bu menü ile programlarinizin içerisinde bir kelime ya da bir metini aratip, bulup degistirebilirsiniz. Özellikle çok uzun programlarinizda çok faydali. Otomatik degistirme ile ayni anda programdaki bütün ayni metinleri istediginiz bir metin ile degistirebilirsiniz.
    Find:
    Gireceginiz yaziyi programin içinden bulur. Replace: Program içindeki bir kelimeyi ya da kelime gurubunu (ya da bir parçasini) bulup istediginiz bir yazi ile degistirmek için.
    Search Again:
    En son aradiginizi tekrar aramak için kullanilir. Bunlarin haricindeki seçenekler çok fazla kullanilmiyor ama deneyerek ne ise yaradigini bulabilirsiniz.
    Run Menüsü:

    File menüsü ile birlikte en çok kullanilan menüdür.
    Run:
    Yazdiginiz programi çalistirmak için kullanilir. Eger programinizda yazim hata varsa çalismaz ve bu hatayi olusturan satira gidilip beklenir. Kisayolu Ctrl+F9.
    Step over:
    Programi satir satir çalistirmayi saglar. Procedure ve Functionlari satir satir degil toplu halde çalistirir. Kisayol tusu F8.
    Trace Into:
    Programin tamamini satir satir çalistirmak içindir. Bu sekilde hata yapilan yeri görebilirsiniz ama özellikle büyük programlarda pek ise yaramaz. Kisayol tusu F7.
    Go to Cursor:
    Programi imlecin (Cursor'un) bulundugu yere kadar çalistirir ve oraya gelindiginde programin koduna geri döner. Devam etmek için yukardakilerden birisini kullanabilirsiniz. Kisayolu F4.
    Program reset:
    Pascal'da bir programda hatali bir is yaptiysaniz ve program sona ermiyorsa Ctrl ve Pause tuslarina birlikte basarak programi durdurabilirsiniz. Durdurdugunuz programi tekrar çalistirirsaniz kaldigi yerden devam eder. Eger en bastan baslamasini istiyorsaniz programi resetlemenize lazim. Bu islem onu yapar. Kisayol tusu olarak Ctrl'ye basarken F2'ye basabilirsiniz.
    Paramaters:
    Bazi programlar çalisirken parametre ile beraber çalisir. Eger böyle bir parametreli program yaptiysaniz o zaman buraya istediginiz parametreleri girebilirsiniz. Bu konuya daha sonra deginiriz.
    Compile Menüsü:

    Programizini yaptiktan sonra veya yaparken sik sik hatalarinizin olup olmadigini kontrol etmek istersiniz. Bu menü de bu ise yarar. Iyi bir programci olmak için her birkaç satir yaziminin sonunda F9 tusu ile hatalarinizi kontrol etmeniz gerekir! Compile: O anda aktif olan programi derlemek, yani hatalari kontrol etmek için kullanilir. Kisayol için Ctrl tusuna basarken F9'a basabilirisiniz.
    Make:
    Üzerinde çalistiginiz programi degisen unitleriyle beraber derler. Unitin ne oldugunu daha ögrenmedik. En iyi derleme yöntemi budur. Sik sik F9 tusuna basarak programinizi derleyin.
    Build:
    Üzerinde çalistiginiz programi degisen unitleriyle beraber derler. Make komutu bundan daha kullanisli ve hizlidir.
    Destination Memory/Disk:
    Bu seçenegin üzerine gelip entera basarsaniz ve tekrar menüyü açarsaniz "Memory" yerine "Disk" yazdigini görürsünüz. Disk aktif durumdayken programi (F9 ile) derlerseniz harddiskinizde de (O anki aktif dizinde) programin .EXE hali olusturulur. Programlarinizi bu sekilde exe haline dönüstürebilirsiniz. Eger bu seçenekte "Disk" yerine "Memory" yaziyorsa bu durumda programi derlediginizde exe dosyasi olusturulmaz. Sadece exe dosyasi olusturmak istediginiz zaman bu seçenegi disk yapin. Diger durumlarda ve zamanlarda Memory kalmasi programin daha kisa sürede derlenmesini saglar.
    Primary File:
    Bu seçenegi seçip bir dosya adi girerseniz artik hangi programin üzerinde çalisirsaniz çalisin F9 ile programi derlemek isterseniz buraya yazdiginiz dosya derlenir ya da çalistirilir. Bunun avantajini Unit'leri ögrendikten sonra görecegiz. Programa bagli olan unitlerin üstünden programi çalistirmaniz çok yararli olacak.
    Clear Primary File:
    Primary file'i iptal etmek için kullanilir.
    Information:
    Programiniz hakkinda kisa bir bilgi verir.
    Buraya kadar isimize yarayacak ve en çok kullanilan menüleri anlattik. Ama TP'da daha baska menüler de var. Bunlari simdilik anlatmayalim ama yeri geldikçe ve lazim oldukça deginiriz. Ayrica Help menüsü de çok isinize yarayabilir. Burayi kurcalayarak birseyler ögrenebilirsiniz.
    Ama ben isinize yarayacak birsey daha söylemek istiyorum. Debug menüsünden User Screen seçenegini seçerek ya da alt ile birlikte F5'e basarak son ekran görüntüsünü görebilrisiniz.
    Artik Pascal editörünü de tanidigimiza göre Pascal komutlarini ve program yapisini anlatmaya baslayabiliriz.
    İlk Örnek
    Genelde bir programlama dili ögrenilirken ilk yazilan aktif program ekrana "Merhaba Dünya" yazdiran programdir.Bu o kadar klasiklesmistir ki neredeyse bir standart haline gelmistir.Bende bu kurali bozmak istemiyorum.Iste "Merhaba Dünya" programinin kodlari...

    Program merhaba;
    begin;
    write ('Merhaba Dunya');
    readln;
    end.
    Derleyip çalistirin sonucu göreceksiniz.Burada write komutu parantez ve tirnak isaretleri arasindaki stringi(sayi olmayan-alfanümerik) yazdirmaya yarar.Bu da ayni sonucu veren fakat kodu farkli olan bir program.


    begin
    write ('Merhaba ');
    write ('Dunya');
    end.


    Gördügünüz gibi tirnak isaretleri içindeki boslukta programa yansiyor.Isterseniz o boslugu kaldirip programi derlemeyi deneyin.Merhaba ve Dunya kelimelerinin bitisik yazildigini göreceksiniz."write" komutu tek satira yazi yazmak için kullanilir."writeln" komutu ise stringi yazip imleci bir alt satira atlatir.Asagidaki örnegi inceleyin.
    Program merhaba3;
    begin
    writeln('Merhaba Dunya');
    writeln('Merhaba Mars');
    writeln('Merhaba Saturn');
    end.
    "readln"

    komutu kullanicinin programa girdi girmesine izin verir.Girdi girisi Enter tusuyla sonlandirilir.Bu girdi bir degiskene atanabilir yada hiçbirsey yapmadan kullanicinin Enter tusuna basmasi beklenebilir.Asagidaki örnegi incleyin.
    Program readln1;
    begin
    writeln('Programi sonlandirmak icin Enter tusuna basiniz.');
    readln;
    end.

    Değişkenler
    Her programlama dilinde degiskenler vardir. Degiskenler programlamada hayati önem tasir. Degiskeni program içinde bir degeri ya da bilgiyi tutan bir birim olarak ifade edebiliriz. Bu bölümde degiskenleri tüm tipleriyle çok ayrintili ve bol örnekli anlatacagim. Ayrica sabitler, tipler ve labelleri de ögrenecegiz. Adindan da anlasilabilecegi gibi degiskenlerin degeri program içinde istenildigi kadar degistirilebilir. Bir degiskenin bir adi, tipi ve degeri vardir. Degisken adi olarak istediginiz ismi verebilirsiniz. Degiskenin tipini ise programinizin basinda var deyimi ile tanimlamak zorundasiniz.
    Var Deyimi:
    Programda kullanacagimiz bütün degiskenleri programin basinda tanimlamak ve cinsini (sayi mi, yazi mi.. gibi) belirtmek zorundayiz. Her programlama dilinde buna gerek olmayabilir ama Pascal'da bu is mecburidir. Degiskenlerimizi Var deyiminde sonra tanimlamamiz gerekir. Var deyimi bir komut olmadigindan sonuna noktali virgül konulmaz. Genel kullanim sekli:
    Var
    degisken: degisken_tipi;
    seklindedir ve Pascal'da program yapisi dersinde gördügümüz yerde kullanilir. Degisken tiplerini görürken bu deyimin kullanilisini görecegiz. Merak edenler için söyleyim: Var kelimesi Ingilizce Variable kelimesinin kisaltilmisidir ve degisken ya da kisaltma anlamindadir.
    Değişken Tipleri
    Pascal'da her degiskenin bir tipi olmak zorundadir. Bir degisken programin basinda hangi tipte tanimlandiysa programin sonuna kadar o tipte bilgi saklayabilir ve o degiskene o tipten baska bir tipte veri atanamaz, eklenemez. Yani mesela sayi tipinde bir degiskene "kalkan" degeri atanamaz. Bu durumda program hiç çalismaz ve Pascal editörü hata verip o yanlisligin yapildigi degiskene imleci getirip hata uyarisi yapar. Simdi Pascal'da kullanabilecegimiz degisken tiplerine bakalim.
    Sayisal Degiskenler:
    Adindan da anlasilacagi gibi degeri bir sayi olabilen degiskenlerdir. Bu degiskenler bir sayiyi tutarlar. Ayrica matematiksel islemlerde de kullanilabilirler. Birkaç çesidi vardir. Öncelikle sayisa degiskenleri ikiye ayirmak gerekir. Birncisi tasayilar ve ikincisi gerçek (ondalikli) sayilar. Tam sayilarin ve ve gerçek sayilarin da kendi aralarinda siniflari vardir. Ilk önce tamsayi tiplerinden baslayalim. Tamsayi tiplerini hemen bir tabloda verelim:
    Tip adi Sinirlari Kapladigi alan
    Shortint -128..127 1 byte
    Byte 0..255 1 byte
    Integer -32768..32767 2 byte
    Word 0..65535 2 byte
    Longint -2147483648..2147483647 4 byte

    Tabloda tip adi dedigimiz sey var deyimiyle kullanacagimiz ad, sinirlari o sayisal degikenin alabilecegi degerlerin siniridir. Yani byte tipinde bir degiskenin degeri 256 olamaz. Buna göre bizim isimize hangisi yariyorsa onu kullanabiliriz. Kapladigi alan ise bu degisken için hafizada kullanilan alanin byte cinsinden degeridir. Programlarimizin hafizada (hard-disk'te degil) az yer kaplamasi daha iyidir. Bunun için gereksiz yere longint degiskenini kullanmamamiz iyi olur. Çünkü pascalda en fazla 64 kilobyte'lik (yaklasik 64000 byte) degisken kullanabiliriz. Hemen bunlarla ilgili birkaç örnek program yapalim.

    Örnek 1: Bu program 2 sayiyi toplar ve sonucu ekrana yazar. Simdilik ekrana nasil yazdigimizin üzerinde durmayalim ama zaten sizin de anlayacaginizi düsünüyorum.


    Toplama_Denemesi;
    Uses Crt;

    sayi1,sayi2: integer;
    toplam: integer;
    clrscr;
    sayi1:=19;
    sayi2:=81;
    toplam:=sayi1+sayi2;
    write('Bu sayilarin toplami=',toplam);
    readln;


    Bu program ekrana 100 yazar. Çünkü toplam isimli degiskenimizin son degeri 100'dür. Burada readln komutu enter'a basilmasini bekler. Bunu daha sonra görecegiz. Write ise ekrana birseyler yazar. Bunu da ayrintili olarak inceleyecegiz. Clrscr ise ekrani temizler. Simdilik görmemiz gereken atama islemleri, yani bir degiskenin degerini degistirme ve degiskenleri tanimlama. Gördügünüz gibi 3 tane degiskenimiz var ve bunlari iki satirda tanimliyoruz. Hepsinin tipi de ayni oldugu için üç degiskenimizi birden

    Var
    sayi1, sayi2, toplam: integer;
    seklinde topluca ya da üçünü de ayri ayri tanimlayabiliriz. Bu sizin keyfinize kalmis.
    Örnek 2:
    Bu program da kullanicidan (yani sizden) aldigi iki sayiyi çarpip ekrana yazar:
    Program Carpma_Denemesi;
    Uses Crt;
    Var
    a, b, c: integer;
    Begin clrscr;
    write('Birinci sayiyi giriniz:');
    readln(a);
    write('Ikinci sayiyi giriniz:');readln(b);
    c:=a*b;
    writeln('Sonuç=',c);
    readln;
    End.
    Gördügünüz gibi ilk önce a ve b degiskenlerinin degeri kullanicidan aliniyor, sonra c degiskeninin degeri a ile b'nin çarpimi olacak sekilde hesaplanip ekrana yazdiriliyor. Burada readln(degisken_adi); komutunu daha sonra anlatacagiz. Simdilik kullanicidan bir bilgi almak amaciyla kullanildigini bilseniz yeter. Pascal'da ayni satira birden çok komut yazilabilecegini ve büyük-küçük harf ayrimi olmadigini tekrar hatirlatiyim.
    Örnek 3:
    Son olarak sizin kaç yasinda oldugunuzu bulan basit bir program yapalim:

    Program Yas_Bul;
    Uses Crt;
    Var
    simdiki_yil, dogum_yili: integer;
    yas: byte;
    Begin clrscr;
    write('Kaç yilinda dogdunuz: ');readln(dogum_yili);
    write('Simdi hangi yildayiz: ');readln(simdiki_yil);
    yas := simdiki_yil - dogum_yili;
    writeln('Siz su anda ',yas,' yasindasiniz!');
    Readln;
    End.


    Gördügünüz gibi simdiki_yil ve dogum_yili degiskenlerini integer yaparken yas degiskenini byte yaptik. Çünkü 255 yasindan daha büyük insan olamaz. Bu durumda bosyere onu da integer yapip hafizada yer isgal etmeyelim. Iyi bir programci olmak için bunlara dikkat etmeliyiz. Yine iyi bir programci olarak degiken isimlerimizi anlamli ve mümkün oldugunca kisa ve o degiskenin içerigi ile alakali yapalim. Program içinde hata yapmamak için bunlar gerekli. Çünkü degiskenlerimize d1, d2, d3, d4... gibi isimler verirsek sonra hangisinin içerigi ne onu karistirabiliriz. Degisken isimlerinin uzunlugu yanilmiyorsam 50 karekter kadar olabilir ve bosluk içeremez, sayi ile baslayamaz. Bu arada crt uniti ise clrscr komutunu kullanmak için gereklidir ve Pascal'in hazir unit'lerindendir (Unit'in ne oldugunu simdilik bosverin!).
    Gerçek Sayı Tipleri
    Tabii bunlara gerçek diyorsak digerleri sahte degil. Gerçekten kastimiz virgüllü ya da ondalikli ya da kesirli demektir. Bu tip sayilarin da tipki tamsayilarda oldugu gibi çesitleri var. Bu çesitliligin temel sebebi gereksiz hafiza kullanmaya engel olmaktir. Gerçek sayi tipleri sunlardir:
    Tip adi Sinirlari Kapladigi alan
    Real 2.9 x 10^-39..1.7 x 10^38 6 byte
    Single 1.5 x 10^-45..3.4 x 10^38 4 byte
    Double 5.0 x 10^-324..1.7 x 10^308 8 byte
    Extended 3.4 x 10^-4932..1.1 x 10^4932 10 byte
    Comp -2^63+1..2^63-1 8 byte
    Burada Real'den baska tiplerin de oldugunu bilmeniz için hepsini gösterdim ama gerçekte sadece Real tipini kullanmaniz yeterlidir. Html'de bir sayinin üstünü göstermek olmadigindan tablo biraz kötü gözüktü. Ben birisini yazi ile yazarsam siz digerlerini anlarsiniz. Real'in sinirlari "2.9 çarpi 10 üzeri -39'dan 1.7 çarpi 10 üzeri 38'e kadardir". Real tipinin disindaki tipleri kullanabilmeniz için prograinizin en basina {$N+} yazmaniz gerekebilir. Bunu bilmeniz gerekmiyor, real size yeter. Simdi biraz da bu tip gerçek degiskenlerle örnek yapalim.
    Örnek 1:
    Bu program girilen sayinin karekökünü bulur. sqrt(); komutunu sonra anlatiriz. Simdilik bu komutun bir sayinin karekökünü bulmaya yaradigini bilmeniz yeter.
    Program Karekok;
    Uses Crt;
    Var
    sayi:integer;
    karekoku:real;
    Begin clrscr;
    write('Bir tamsayi giriniz: ');readln(sayi);
    karekoku:=sqrt(sayi);
    write('Bu sayinin karekökü: ',karekoku:16:5);
    readln;
    end.

    Burda kullanilan write komutunun özel bir sekli. Sayiyi düzgün yazdirmayi sagliyor. Daha sonra ayrintili görecegiz. Bunlari kaldirip direk olarak
    write('bu sayinin karekökü:',karekoku);
    seklinde yazip deneyin. Sayiyi bilimsel olarak sonuna E falan koyarak yazar.
    Örnek 2:
    Bu program kullanicidan 3 dersinin notunu ister ve ortalamasini bulup ekrana yazar.
    Program ortalama_bul;
    Uses crt;
    Var
    not1, not2, not3: integer;
    ort: real;
    Begin Clrscr;
    Write('Matematik Notunuz (0..100 arasi): ');readln(not1);
    Write('Fizik Notunuz (0..100 arasi): ');readln(not2);
    Write('Kimya Notunuz (0..100 arasi): ');readln(not3);
    ort:=(not1 + not2 + not3)/3;
    write('Ortalamaniz: ',ort:5:2);
    Readln;
    End.
    Burada dikkat etmeniz gereken birsey daha var. ortalamayi hesaplarken yaptigimiz isleme dikkat edin. Tipki matematik dersinde gördügümüz gibi parantezlerin islem önceligi var. Sayilarla yapabileceginiz aritmetik islemleri ilerde görecegiz.
    Buraya kadar yapilan ve bundan sonra yapilacak bütün örnekleri kendi elinizle Pascal editöründe yazmanizi tavsiye ederim. Yoksa ögrenemezsiniz. Ama eger kodlari direk olarak Pascal editörüne aktarmak istiyorsaniz kodu isaretleyip sag tiklayin ve kopyala yapin. Daha sonra Not defterini (notepad) açip oraya yapistirin kodlari ve kaydedin. ama kaydederken dosya isminin sonuna .pas yazin. Mesela deneme.pas gibi. Kaydettikten sonra daha önce anlattigimiz sekilde üstüne çift tiklayarak açabilirsiniz. Sonra istediginiz gibi düzeltebilir veya çalistirabilirsiniz.
    String Degişken Tipi
    String Degişken Tipi
    Programci diliyle bu tip degiskenler alfasayisal degerler alabilir. Halk dilinde ise bunlara yazi ya da sayisal olmayan veri diyebiliriz. Yani sizin yasiniz sayisal bir deger ise isminiz alfasayisal bir degerdir. Alfasayisal ifadeler iki tirnak içerisinde gösterilir. Yani isminizi 'Halil Ibrahim Kalkan' seklinde gösterirsiniz. Ancak sayi degil dekik diye içerisinde sayi geçmeyecek diye birsey yoktur. Yeni 'Beim yasim 17.' cümlesi ve '392' sayisi da tirnak içerisinde yazildigindan string tiplerdir ve matematiksel islemlerde kullanilamazlar. Ya da mesela telefon numaraniz bir sayi oldugu halde bunu tutmak için sayisal degisken kullanilmaz, onun yerine string degisken kullanilir. Çünkü telefon numaranizin üstünde çikartma, kök alma gibi matematiksel islem yapmayacaksiniz. Ama tabii ki bu size kalmis. Isterseniz telefon numarasi için longint degisken tanimlayabilirsiniz.
    String degiskenlerin içerisinde maksimum 255 karekterlik bilgi bulunabilir. Bu karekter her türlü harf, sayi, isaret, bosluk... olabilir. Mesela 'a=2x5+3/62' diye bir string ifade yazilabilir. Anlayacaginiz tirnak içerisinde ne varsa sabittir. Örnek bir program yazalim:
    Program String_tip_ornegi;
    Uses crt;
    Var
    isim: string;
    yas: byte;
    begin clrscr;
    write('Adinizi yaziniz: ');readln(isim);
    write('Yasinizi yaziniz: ');readln(yas);
    clrscr;
    writeln('Merhaba ',isim);
    writeln('Sizin yasiniz ',yas);
    readln;
    end.
    Bu programi pascal'da yazip çalistirirsaniz sizin isminizi ve yasinizi alip ekrana geri yazar. Simdi dikkat ettiyseniz 'Adinizi yaziniz: ' ifadesi de aslinda string ifadedir. Bu ifade degisken degil, sabit oldugundan iki apostrof isareti arasina yazilir. Peki bu ifadeleri de bir degiskenin degeri yapalim ve öyle yazdiralim:
    Program String_tip_ornegi;
    Uses crt;
    Var
    isim, ad_iste, yas_iste, yas_yaz, ad_yaz: string;
    yas: byte;
    begin clrscr;
    ad_iste:='Adinizi yaziniz: ';
    yas_iste:='Yassinizi yaziniz: ';
    write(ad_iste);readln(isim);
    write(yas_iste);readln(yas);
    clrscr;
    yas_yaz:='Sizin yasiniz ';
    ad_yaz:='Merhaba ';
    writeln(ad_yaz,isim);
    writeln(yas_yaz,yas);
    readln;
    end.
    Bu programi yazip çalistirinca bir önceki program ile tamamen ayni isi yaptigini göreceksiniz. Ama burada gereksiz yere fazla degiken kullanip fazla islem yaptik. Ama amacimiz ögrenmek. Gördügünüz gibi string tipdeki bir degiskene veri aktarimi sayisal tipli bir degiskene veri aktarimi ile ayni ama burada verileri iki apostrof isareti arasina yaziyoruz ( '.....' gibi ). Bu arada eger programlari kopyala/yapistir yolu ile pascal'a aktariyorsaniz (ki bunu yapmasaniz daha iyi ögrenirsiniz) Türkçe karakterlerde sorunlar vuku bulmus olabilir(!). Bu windows ile ms-dos'un ascii karakterlerinin farkli olmasindan kaynaklaniyor ve telafisi zor. En iyisi elle yazmak. Bu arada ilerde ascii'nin de ne olduguna deginecegimiz için "bu ascii de ne demek" diye düsünmenize gerek yok.
    Bir string ifade aksi belirtilmedikçe maksimum 255 karakter uzunlugunda olur ve hafizada 256 byte alan isgal eder. Aksi belirtilmedikçe diyince hemen aksini belirtip daha uzun olabileceginiz sanmayin. Tersine daha az olabilir. Peki nasil aksini belirtecegiz.
    Var
    isim: string[40];
    seklinde. Artik isim adli string degiskenimiz en fazla 40 karakter uzunlugunda olabilir ve 41 byte yer kaplar (Neden mi 41 byte? Unutmazsak sonra anlatiriz onu da!). Bir insanin ismi de 40 harften fazla olamayacagindan (ya da olsa bile kisa yazsin sayin kullanicilarimiz!) gereksiz yere 256 bytelik yer isgal etmeyip 215 byte kar edelim. Artik bu degskene 40 harften daha uzun bilgi girilmek istenirse sadece ilk 40 karakterini alir ve gerisini yok sayar.
    String tipin çok özelligi var. Bunlari ilerdeki konularda görecegiz. Ancak simdi String tiplerde çok isinize yarayacak (ilk etapta gereksiz gözükebilir ama döngüleri ve karar deyimlerini gördükten sonra daha iyi anlayacaksiniz) bir özellige gözatalim. Bir string degiskenin x. karakterini elde etmek için string_ifade[x] seklinde kullanilir. Yani isim adli bir string degiskenimizi isim='www.kalkan.cjb.net' olarak tanimlayiip sonra da write(isim[5]); komutunu verirsek ekrana sadece k harfi yazilir. Bununla ilgili çok örnek yapacagimizdan simdilik üzerinde durmayalim ve örnek yapma isini size birakalim.

    Char Degişken Tipi
    String degiskenler 255 karakterlik veri alabiliyordu. Char ise tahmin edeceginiz gibi daha fazla karakter almiyor! Char tipinde bir degisken yanlizca bir adet karakter alabilir ve bir byte yer kaplar hafizada. Yine string tipindeki gibi deger atamasinda iki apostrof isareti arasina en fazla 1 karakter olabilecek sekilde yazilir. Örnek bir program yapalim daha iyi anlariz.
    Program Char_Tipinde_alistirma;
    Uses crt;
    var
    c: char;
    isim: string;
    a: byte;
    begin
    clrscr;
    write('Yine adinizi girin bakalim....: ');readln(isim);
    write('Simdi en fazla ',length(isim),' olacak sekilde sifindan büyük bir sayi giriniz: '); readln(a);
    c:=isim[a];
    writeln('Sizin isminizin ',a,'. harfi "',c,'"');readln;
    end.
    Bu örnek simdiye kadar yaptiklarimizin en karisigi gibi gözükebilir ama biraz dikkat ederseniz anlayacaginiz kesin. clrscr; komutuna kadar olan yeri biliyorsunuz. Ondan sonra isim adli degiskene ekrandan (daha sonra ayrintili olarak anlatacagimiz sekilde) bilgi girilmesi isteniyor. Ondan sonra yazilan write ifadesinde bilmedigimiz birsey var. Length fonksyonu bir string tipli ifadenin kaç karakter uzunlugunda oldugunu verir. Bunu da daha sonra anlatacagiz. Ondan sonra c:=isim[a]; ifadesinde c adli char degiskene isim degikeninin a. karakterini atiyoruz. Mesela isminiz "Osman" ise ve a degerine de 3 girdiyseniz c:= ifadesinin karsisindaki deger 'm' olur. Yani c degiskeninin degerine 'm' harfini (karakterini) atamis oluruz. Programi birkaç defa çalistirarak daha iyi anlayabilirsiniz.
    Tabii bu sekilde bizim pek isimize yaramayabilir ama özellikle bir char tipindeki degiskeni readkey komutuyla kullanilarak faydalanabiliriz. Bunlara ilerde deginecegiz.
    Bunlarin disinda su anda hemen kullanamayacak olsak da diger tiplere de kisaca deginelim.
    Boolean Tipli degiskenler:
    Degeri ya TRUE (dogru) ya da FALSE (yanlis) olabilen degiskenlerdir. Mantiksal karsilastirmalarda kullanilabilir. Hafizada 1 byte alan kaplar.
    Bundan sonraki tipdeki olan dizi ve record tipleri için sonraki derslerde özel bir bölüm açip anlatacagi çünkü kullanim alanlari çok genis.
    Dizi (Array) tipli degiskenler:
    Dizi degisken genelde benzer bilgileri bulunduran degiskenlerdir. Örnek verirsek daha iyi anlasilir. Önceki programlarimizin birisinde hatirlarsaniz bir ögrencinin üç notunun ortalamasini bulmustuk. Peki 1 degil de 100 ögrenci varsa ne olacak. Her birisi için üç not ve bir ortalama olmak üzere 4 degisken tanimlarsak toplam 400 degisken tanimlamamiz lazim. Bu hem çok uzun zaman alir, hem de degisken isimlerini birbirine karistirmamiz olasidir. Bunun yerine 100 ögrencinin 3'er notunu ve ortalamasini sadece 2 degisken kullanarak kolayca tutabiliriz. Bunun için degisken tanimlarimiz
    Var
    notlar: Array[1..100,1..3] of byte;
    ortalama: Array[1..100] of real;
    seklinde olmalidir. Simdilik bunlari nasil kullanacagimiz fazla deginmeden geçelim çünkü diziler diye ayri bir bölümde hepsini anlatacagim.
    Kayit (Record) tipli degiskenler:
    Simdiye kadar bir ögrencinin adi, notlari ve ortalamasi için ayri degiskenler kullandik. Peki bunlarin hepsini bir ana degiskenin alt degiskenleri olarak tutsak daha kolay ve anlasilir olmaz mi? Özellikle bu tip degiskenler dosyalama konusunda çok isimize yarayacak. Genel olarak tanimlamasi su sekildedir:
    Type
    kayit_tipi=Record
    degiskenler...
    end;
    Var
    kayit_adi = kayit_tipi;
    Gördügünüz gibi bu tip bir degiskeni tanimlamak için type etiketini kullaniyoruz ve yeni bir tip olusturuyoruz ilk önce. Sonra bir degiskeni tipi bu olacak sekilde tanimliyoruz. Hemen örnek bir program yazalim. Bunu kendi ellerinizle yazmalisiniz (ben de hep öyle yapiyorum):
    Program Filiz;
    uses crt;
    type
    ogrenci_tipi=Record
    isim: string[40];
    not1: byte;
    not2: byte;
    not3: byte;
    orta: real;
    end;
    Var
    ogrenci: ogrenci_tipi;
    Begin clrscr;
    write('Isminiz:');readln(ogrenci.isim);
    write('1. Sinavin sonucu:');readln(ogrenci.not1);
    write('2. Sinavin sonucu:');readln(ogrenci.not2);
    write('3. Sinavin sonucu:');readln(ogrenci.not3);
    ogrenci.orta:=(ogrenci.not1+ogrenci.not2+ogrenci.n ot3)/3;
    write('Ortalamaniz: ');write(ogrenci.orta);
    readln;
    end.

    Gördügünüz gibi kayit tipindeki bir degiskenin alt degiskenini nokta ile ayirarak kayit_degiskeni.alt_degisken seklinde yaziyoruz. Isterseniz with deyimini kullanarak alt degisken isimlerini direk de kullanabilirsiniz:
    yastik;
    uses crt;
    type
    ogrenci_tipi=Record
    isim: string[40];
    not1: byte;
    not2: byte;
    not3: byte;
    orta: real;
    end;
    Var
    ogrenci: ogrenci_tipi;
    Begin clrscr;
    with ogrenci do begin
    write('Isminiz:');readln(isim);
    write('1. Sinavin sonucu:');readln(not1);
    write('2. Sinavin sonucu:');readln(not2);
    write('3. Sinavin sonucu:');readln(not3);
    orta:=(not1+not2+not3)/3;
    write('Ortalamaniz: ');write(orta:5:2);
    end;
    readln;
    end.
    Bu iki program de birbirinin aynisi islemleri yapar. With Türkçe'de "ile, beraber" demektir. Simdilik bu record tipinin üzerinde fazla durmayalim. Dosyalar konusunda ayrintili olarak görecegiz zaten.
    Set (Küme) Tipi
    Set (Küme) Tipi:
    Ayni tipte ve birbiriyle ilgili bilgilerin, verilerin olusturdugu topluluga küme denir. Mesela 0 ile 9 sayilarindan bir küme olusturabiliriz. Ama bu kümenin içinde "A" harfi geçemez. Çünkü "A" sayi degildir. Kümenin elemanlari birbirinden virgül yardimiyla ayrilir. Mesela birkaç küme örnegi verelim:
    ['Ali', 'Ahmet', 'Süleyman', 'Halil Ibrahim']
    [0,1,2,3,4,5,6,7,8,9]
    ['E', 'e', 'H', 'h', #27]
    gibi kümeler olabilir. Eger kümenin elemanlari birbirini takip eden cinsten ise aralarina virgül koymak yerine ilkini yazip ardindan .. koyup sonuncusunu yazabiliriz. Mesela
    [0..9]
    ['A'..'Z', 'a'..'z']
    gibi. Ilki olan [0..9] ile bir önceki örneklerde olan ve 0'dan 9'a kadar olan bütün tamsayilarin yazildigi örnegin hiçbir farki yoktur. Kümeler böyle ama bunlari Type blogunda söyle tanimlariz:
    Type
    harfler = Set of ['A'..'Z', 'a'..'z'];
    rakamlar = Set of [0..9];
    cevaplar = Set of ['EVET', 'HAYIR']
    Bu sekilde tanimlanan kümelerin nasil kullanilacagini sonraki konularda örneklerin içerisinde görecegiz. Ayrica kümeler üzerinde kesisim (*), Birlesim (+), Fark (-) ve iliski (=, <>, <=, >=, in) islemleri yapilabiir. Özellikle 'in' isleminden çok faydalanacagiz. Kümelerin içerisinde ayni eleman yanlizca bir kez kullanilabilir ve öncelik sirasi yoktur. Simdi küme ile ilgili bir program yapalim. Simdilik bunda anlamayacaginiz yerler olabilir:
    Program Kume_Denemesi;
    Uses Crt;
    Label
    en_bas;
    var
    tus:char;
    Begin
    en_bas:
    tus:=readkey;
    Clrscr;
    if tus in ['0'..'9'] then begin
    writeln('Bastiginiz Rakam: ',tus);
    goto en_bas;
    end else begin
    clrscr;
    writeln(tus,' bir rakam degil!');
    end;
    readln;
    End
    .
    Bu programi TP'da yazip çalistirdigin ve klavyenizde rakamlara basin. Bastiginiza rakam ekranda gözükecektir. Çikmak için rakam hariç bir tusa (herhangi bir harfe) basmalisiniz. Programda daha ögrenmedigimiz komutlar var. Ama kalin yazili olan yere dikkat ederseniz küme'nin en sik kullanildigi yer göreceksiniz. Burada basilan tusun 0 ile 9 arasinda bir rakam olup olmadigi, baska bir degisle basilan tusun 0'dan baslayip 9'da biten elemanlardan olusan bir kümenin içinde olup olmadigi kontrol ediliyor. Eger dogru ise ekrana bu rakam yaziliyor degilse (yani bu sart yanlis ise) basilan tusun bir rakam olmadigi yaziliyor ve enter'a basilmasi bekleniyor.
    WRITE / WRITELN
    WRITE / WRITELN
    Programlamanin en genel amaci kullanicidan bazi degerleri alip birtakim -önceden programci tarafindan belirlenmis- islemlerden geçirilip sonuçta bulunan degeri ekrana yazmak oldugu için her programlama dilinde kullanicidan veri alma ve ekrana veri yazma deyimleri vardir. Pascal'da kullanicidan read ya da readln komutlariyla veri alinir ve ekrana write ya da writeln komutlariyla yazilir.
    Write/Writeln:
    Ekrana bir seyler yazmak için kullanilir. Bu sey sabit bir yazi olabilecegi gibi bir degisken de olabilir. Bu durumda degiskenin kendisinin adi degil, degeri yazilir. Ya da direkmen bir islemin sonucu da yazdirilmak istenebilir. Hatta bunlardan iki ya da daha fazlasini da birlikte yazdirabiliriz. Ilk önce ekrana sabit bir yazi (yazi diyoruz ama sayi ya da isaret de olabilir) yazdirmak için kullanimina bakalim. Bu durumda Write(ifade); gibi kullanilir. ifade yerine iki apostrof isareti arasinda bir seyler yazilabilir. Örnegin write('www.kalkan.cjb.net'); gibi. writeln(www.kalkan.cjb.net); gibi degil! Çünkü www.kalkan.cjb.net bir degisken adi degildir (ve olamaz da..). Bununla ilgili küçük bir uygulama yapalim:
    Proram uygulama01;
    uses crt;
    begin clrscr;
    writeln('Seckin YASTIKÇILAR');
    write('Web Sitesi:');
    writeln('www.seckin.canavari');
    write('E-mail adresi: hackersezi@yahoo.com');
    readln;
    end.


    Bu program her zaman ayni sonucu verir. Burada belki fark etmissinizdir write ile writeln'in farkini. Write istenen ifadeyi yazip en sonunda bekler, writeln ise bir alt satirin basina gider ve orada bekler. Bekler dedigim sey imleçtir. Siz yazi yazarken yanip sönen o seye imleç denilir ve Pascal'da bir sey yazmak istediginizde imlecin bulundugu yerden itibaren yazilir. Ekranin istedigimiz bir yerine yazi yazdirmayi da anlatacagiz. write ve writeln komutlarinda bir degil de birden fazla ifade de verebilirsiniz:
    Program uygulama02;
    uses crt;
    begin clrscr;
    writeln('Seckin YASTIKCILAR');
    writeln('Benim sitem:','www.seckin.canavari.com');
    readln;
    end.
    ..gibi. Gerçi burada pek isimize yaramiyor. Direkt olarak da yazdirabiliriz. Simdi de bir degiskenin degerini yazdiralim. Bunu da write(degisken); seklinde yapariz. Eger write(degisken1, degisken2, degisken3); seklinde 3 adet degiskeni yazdirirsak hepsi ard arda ve bosluk birakilmadan yazilir.
    Örnek:
    program uygulama03;
    uses crt;
    var
    ad, site: string;
    sayi, karesi:longint;
    begin clrscr;
    sayi:=13;
    karesi:=sayi*sayi;
    ad:='Halil Ibrahim';site:='www.kalkan.cjb.net';
    writeln(ad);
    writeln('web sitesi ', site);
    writeln(sayi,'->', karesi);
    readln;
    end.
    Gördügünüz gibi sabit ifade ile degisken de ayni write komutuyla kullanilabiliyor. Bu arada write('web sitesi ',site); ile write('web sitesi ', site); komutunun Pascal için hiçbir farki yoktur. Yani -ilk baslarda da anlattigim gibi- Pascal'da bosluklar önemli degildir (tirnak içindekiler hariç). Mesela a:=b+c; ya da a := b + c; yazabilirsiniz. Bu sizin keyfinize kalmis. Ikisi de ayni isi apar. Hatta
    a:=
    b
    +
    c;
    olarak 4 satir halinde yazsaniz da ayni isi yapar ve hiçbir hata olmaz. Bir de write komutuyla bir islem de yaptirabilirsiniz. Mesela yukaridaki programda karesi degiskenini kullanmadan programi söyle yazabiliriz:
    program uygulama04;
    uses crt;
    var
    ad, site: string;
    sayi:longint;
    begin clrscr;
    sayi:=13;
    ad:='SeckinYASTIKCILAR';
    site:='www.seckin.canavari.com';
    writeln(ad);
    writeln('web sitesi ', site);
    writeln(sayi,'->',sayi*sayi);
    writeln('15 x 3 = ', 15*3);
    readln;
    end.
    Programa bir writeln daha ekledik. Gördügünüz gibi writeln komutuyla islemin sonucunu da yazdirabiliyoruz. Bunu da inceleyin. Eger write ile bir sayi yazdiracaksaniz sayilara özel olarak write(82); ile write('82'); ayni isi yapar ve sorun çikartmaz. Ama write('Ahmet'); ile write(Ahmet); ayni degildir. Birincisinde ekrana Ahmet yazar ama ikincisinde Ahmet adli bir degiskenin olup olmadigina bakar, eger varsa degerini ekrana yazar, ancak böyle bir degisken
    READLN / READKEY
    Read/Readln Komutu
    Ekrana yazi yazdirmayi gördük. Simdi de ekrandan (daha dogrusu ekran vasitasiyla kullanicidan) bir veri (isim, yas, telefon numarasi gibi..) almaya bakalim. Bu islem için Read ya da Readln (genellikle readln) komutu kullanilir. Read komutunu kullanirsaniz kullanici çok hata yapar. En iyisi readln kullanmak. Ben bunu anlatayim. Kullanim sekli Readln(degisken); seklindedir ve kullanildigindan kullanicidan bir seyler yazip enter'a basmasini bekler. Enter'a basilinca kullanicinin yazdigi verileri parantez içerisine yazilan degiskene aktarir ve artik bu degiskenin degeri bu olur. Yani üstüne falan eklenmez. Eski degeri silinir ve yeni degeri kullanici ne girdiyse o olur. Genellikle write komutuyla yan yana (daha dogrusu ar arda) kullanilir. Çünkü kullanicinin ne girmesi gerektigini ona söylememiz lazim. Örnek için basit program:
    Program Oku_bakiim;
    uses crt;
    var
    a:integer;
    isim:string[40];
    begin clrscr;
    write('Bu program verilen bir sayinin karesini ve kubunu bulur');
    writeln;
    write('Bir Sayi Giriniz: ');readln(a);
    write(a,' sayisinin karesi ',a*a,' ve kubu ',a*a*a,' olur.');
    writeln;
    write('Adinizi giriniz: ');
    readln(isim);
    clrscr;
    Writeln('Gule gule ',isim);
    Writeln('Programi bitirmek icin Entera basiniz...');
    readln;
    end.
    Programi TP'da yazip çalistirin ve sonucuna bakin. Bu program write/writeln ve readln komutlarinin anlasilmasina yeterlidir. Zaten ilerde bu iki komutu çok kullanacagiz. Belki fark etmissinizdir bu readln komutunun bazi yetersizlikleri var. Mesela kullanicidan bir sayi girmesini istiyoruz. Ama kullanici sayi olmayan buraya bir seyler de yazabilir ve biz bunu engelleyemeyiz. Bu durumda program hata verir. Bunu önlemek için kendi readln komutumuzu kendimiz olusturmaliyiz. Bunu ilerde görecegiz.
    GotoxyGotoxy:
    Simdiye kadar yaptigimiz programlarda hep ekranin sol üst kösesinden baslayarak bilgileri yazdirdik. Ancak sizin de akliniza "Yahu bu ekranin istedigimiz yerine bir seyler yazdiramaz miyiz?" sorusunuz geldigini tahmin ediyorum. Pascal'da ekranin istenilen yerine gitmek için gotoxy komutu kullanilir. "Gitmek" ten kastim imleci istenilen yere götürmektir. Zaten ekrana write ile bir seyler yazarken imlecin bulundugu yerden itibaren yazildigini söylemistik. Bu komutun kullanimi
    gotoxy(X,Y);seklindedir. Burada X yerine kaçinci kolona gidilmesi isteniyorsa o kolonun numarasi, Y yerine ise kaçinci satira gidilmesi isteniyorsa o satirin numarasi yazilir. Normal bir ekranda 80 kolon ve 24 satir (25'e çikartilabilir) vardir. Gotoxy komutunu kullanirken buna dikkat etmelisiniz. Yani gotoxy(83,12); komutunu yazarsaniz büyük olasilikla istediginiz görüntüyü elde edemezsiniz! Bu komut genelde write ifadesinden önce kullanilir. Zaten amaci da ekranin istenilen yerine yazi yazdirmak degil mi? Bir örnek yapalim:
    Program git_bakalim;
    uses crt;
    begin clrscr;
    gotoxy(30,13);write('www.kalkan.cjb.net');
    readln;
    end.

    gotoxy(X,Y); komutunda X ve Y yerine degisken de koyabiliriz. Tabii ki bir tam sayi tipli degisken (byte, integer, longint.. gibi). Bu durumda degiskenin degeri neyse ona göre islem yapilir. Mesela küçük bir program yapalim:
    Program citir;
    uses crt;
    var
    x,y:byte;
    ad:string;
    begin clrscr;
    write('Adiniz: ');readln(ad);
    write('X kordinati: ');readln(x);
    write('Y kordinati: ');readln(y);
    clrscr;
    gotoxy(10,23);
    write('Bu program Seckin YASTIKCILAR tarafindan yapildi!');
    gotoxy(x,y);
    write(ad);
    readln;
    end.

    If ...Then ...
    If ...Then ... koşul yapısı
    Programlamanin en zevkli yani bir seyleri karsilastirip sonucuna göre bir islem yapmak ya da yapmamaktir diyebilirim. Aslinda programlama da zaten budur. Programlamaya ilk baslarken algoritmalar konusunda bir örnek vermistik. Orada "Eger hava yagmurluysa semsiyeni al" demistik. Bu islemi simdiye kadar ögrendigimiz komutlarla yaptirmamiz olanaksizdir.
    Karsilastirma ve karar verme islemleri olmasa program ilk satirindan itibaren satir satir çalisir ve en sonunda "End." komutuyla biter. Yani program içerisinde belirli sartlarda programin akisi degistirilemez. Pascal'da (ve neredeyse bütün programlama dillerinde ve scriptlerinde) kontrol deyimi if..then..else seklindedir. Ayrica Pascal'da baska kontrol deyimleri de vardir. If...then...else deyiminin genel kullanimi:
    if (sart ya da sartlar) then
    sart dogruysa yapilacak islem
    else
    sart yanlissa yapilacak islem
    gibidir. Tabii ki hepsi bir satirda da kullanilabilir. Ayrica sartin dogru olmasi (ya da yanlis olmasi) durumunda birden çok islem yaptirilmak isteniyorsa bu islemlerin hepsi begin ile end arasina su sekilde yazilir:
    if (sart ya da sartlar) then begin
    sart dogruysa yapilacak islemler
    end else
    sart yanlissa yapilacak islemler
    end;
    begin ve end;'i birazdan anlatacagim. Simdi çok basit bir örnek yapalim:
    Program Deneme;
    Uses Crt;
    Var
    notu:integer;
    Begin Clrscr;
    write('Matematik Dersinden Aldiginiz Notu Giriniz: ');Readln(notu);
    clrscr;
    if notu>69 then write('Aferin Geçtiniz!') else write('Malesef Kaldiniz!');
    write(readkey);
    end.
    Bu program sinavdan aldiginiz notu belirli bir islemden geçiriyor ve sonucuna göre bir seyler yazdiriyor. Simdi biraz daha ayrintili görelim. if komutuna kadar olan her seyi daha önce gördük. Readln komutuyla sayisal bir bilgi olan sinav sonucu notu degiskenine aktariliyor. Ondan sonra ekran siliniyor. Sonra su komut var:
    if notu>69 then write('Aferin Geçtiniz!') else write('Malesef Kaldiniz!');
    Ilk önce bu komutla ne yapilmak istendigine bakalim. Amaç eger notu degiskeninin degeri 69'dan büyükse ekrana 'Aferin Geçtiniz!', eger degilse (yani notu degiskeninin degeri 69'a esit ya da daha küçükse) ekrana 'Maalesef Kaldiniz' yazdirmaktan ibarettir. Yani bu komutun Türkçe meali:
    Eger notu degiskeninin degeri 69'dan büyük ise Aferin Geçtiniz! yaz,
    degilse Malesef Kaldiniz! yaz.
    notu>69 ifadesini parantez içerisine de yazabilirsiniz. Zaten birden fazla sart varsa parantez kullanmak mecburidir. Dikkat edin write('Aferin Geçtiniz!') ifadesinde noktali virgül yok. Neden? Çünkü komut daha bitmedi. Derslerin basinda "Pascal'da her komutun sonuna noktali virgül konulur" demistim.
    Programlamada notu>69 ifadesinin degeri ya TRUE (dogru) olur ya da FALSE (yanlis). Burada notu'nun degeri 69'dan büyükse bu sart TRUE, degilse FALSE olur. Eger Sart true ise THEN ifadesinden sonraki islemler, eger sartin sonucu false ise ELSE ifadesinden sonraki islemler yapilir. Biraz düsünürseniz burada aslinda else deyimi kullanilmadan da program yapilabilir. Nasil mi? Iste böyle:
    Program Deneme;
    Uses Crt;
    Var
    notu:integer;
    Begin Clrscr;
    write('Matematik Dersinden Aldiginiz Notu Giriniz: ');Readln(notu);
    clrscr;
    if notu>=70 then write('Aferin Geçtiniz!');
    if notu<70 then write('Malesef Kaldiniz!');
    write(readkey);
    end.
    Burada sarti 69 yerine 70 yaptik. Bir sey fark etmez. Maksat degisiklik olsun. Bu arada eger write(readkey); de ne diyorsaniz bir önceki konuya göz atin. Gördügünüz gibi
    if (notu>=70) then write('Aferin Geçtiniz!');
    if (notu<70) then write('Malesef Kaldiniz!');
    ile
    if (notu>=70) then write('Aferin Geçtiniz!') else write('Malesef Kaldiniz!');
    ifadeleri ayni isi yapiyorlar. Tabii ki else kullanmak daha mantikli. if deyimine genel olarak anladiysak (ve kendimiz de biraz örnek yaptiysak) simdi karsilastirma islemlerine bir göz atalim:
    Islem Anlami
    = Esit. Sagindaki ve solundaki degerler birbirine esit ise sonuç dogru, degilse yanlis olur.
    <> Esit degil. Sagindaki ve solundaki degerler esit degilse sonuç dogru, esitse sonuç yanlis olur. Bu islem sayisal olmayan (yani alfasayisla olan) ifadelerde de kullanilabilir.
    > Büyüktür. Solundaki deger Sagindaki degerden büyükse sonuç dogru, degilse yanlis olur.
    < Küçüktür. Solundaki deger Sagindaki degerden küçükse sonuç dogru, degilse yanlis olur.
    >= Büyük esit. Solundaki deger sagindaki degerden büyükse ya da esit ise dogru, degilse yanlis olur.
    <= Küçük esit. Solundaki deger sagindaki degerden küçük ya da esit ise dogru, degilse yanlis olur.
    in Içerisinde. Solundaki deger sagindaki kümenin içerisinde mevcut ise degeri dogru, degilse yanlis olur.
    Buradaki dogru (True) ya da yanlis (False) kavramlarini belirtmistim. Program akisi bunlara göre belirlenir. Simdiye kadar ögrendiklerimizle bir ögrencinin Matematik dersinden 100 üzerinden aldigi sinav notunu 5'lik sisteme çeviren programi yapalim. Beslik sistemin ne oldugunu biliyorsunuzdur:
    0-44 arasi 1 45-54 arasi 2 55-69 arasi 3 70-84 arasi 4 85-100 arasi 5
    seklindedir. Buradan ögrencilerin 5 alamamasina kizan velilere duyurulur. Simdi programimizi yazalim:
    Program Denemedir;
    Uses Crt;
    Var
    yuzluk, beslik:byte;
    Begin Clrscr;
    write('Matematik sinavinin sonucu (0 ile 100 arasi)..: ');readln(yuzluk);
    if yuzluk<=44 then beslik:=1;
    if (yuzluk>=45) and (yuzluk<=54) then beslik:=2;
    if (yuzluk>=55) and (yuzluk<=69) then beslik:=3;
    if (yuzluk>=70) and (yuzluk<=84) then beslik:=4;
    if yuzluk>=85 then beslik:=5;
    clrscr;
    writeln('Yüz üzerinden.....: ',yuzluk);
    writeln('Bes üzerinden.....: ',beslik);
    readln;
    end.
    Gördügünüz gibi artik ögrenciler her sinavdan sonra aldiklari notun 5'lik sistemde kaça denk geldigini kara kara düsünmeyecekler. Açacaklar programi yazacaklar notlarini, bilgisayar hesaplayacak Bu arada bu and kelimesinin nereden ve neden geldigini anlatacagim, simdiden panige kapilmayin. Bu arada simdiye kadar yaptigimiz programlarimizi EXE yaptiniz mi bilmiyorum. Eger hala denemediyseniz bunu yapin mesela. Açin programinizi ve ilk derslerde anlattigi gibi exe yapin. Muhtelemen exe dosyaniz pascal'in bulundugu dizinde olusacaktir. Ordan bulabilirsiniz. Exe dosyaniz olustugu halde bulamiyorsaniz Baslat menüsünden Bul/Dosya ve Klasörler seçeneginden dosya adini yazarak arayabilirsiniz. Dosyanizi nasil exe yapacaginizi unuttuysaniz "Pascal editörü'nün kullanimi" adli derse bakin. Programi exe yapmayi basardiysaniz Windows'ta çift tiklayarak çalistirabilirsiniz artik. If then else kalibina genel bir giris yaptik. Sidmi devam edelim..
    if then else kalibinin genel olarak "if (sart ya da sartlar) then begin islemler.. end else begin islemler.. end;" seklinde oldugunu söyledik. Yani if ile birden çok sarti da sinayabiliriz. Aslinda basta if kalibinin mantiksal karsilastirma oldugunu söylemek gerekirdi ama zaten sizin anladiginizi saniyorum. Yani siz bu if kalibini kullaninca bilgisayara bir mantiksal karsilastirma yaptiriyorsunuz. Bir önceki örnegimizde if ile birlikte iki sart kullandik. Sartimiz söyle idi:
    if (notu>=55) and (notu<=69) then beslik:=3;
    Burada and kelimesiyle (Türkçe'si "ve" demektir) yanlizca iki sartin da dogru oldugu durumlarda bu islemi yapmasini söylüyoruz. (Bu arada tahmin ettiginiz gibi else'in kullanimi zorunlu degil.) Yukardaki sartin Türkçesi söyledir:
    Eger notu degiskeninin degeri 55'ten büyük ya da 55'e esit VE notu degiskeninin degeri 69'dan küçük ya da 69'a esit ise beslik degiskeninin degerini 3 yap.
    Burada >= ve <= kullandigimizdan cümle biraz karisik oldu. Baska bir örnegi Türkçe'ye çevirelim. Örnegin;
    if (notu>54) and (notu<70) then beslik:=3;
    Kalibinin Türkçe'si daha sade olur ve yukardaki örnekle aslinda ayni isi yapar (Sayilara dikkat ederseniz bunu görürsünüz):
    Eger notu 54'den büyük VE 70'den küçük ise beslik degiskeninin degerini 3 yap.
    Yani burada aslinda bilgisayara notu degiskeninin degerinin 55 ile 69 arasinda oldugu durumlardan bahsediyoruz. Zaten notu degiskeninin degeri 54'den büyükse ve 70'den küçükse bunlardan baska bir sayi olamaz. Peki ilk derslerimizde ögrendigimiz Set (yeni Küme) tipinde bir veri kullanarak bunu daha kisa ve anlasilir olarak yapamaz miyiz. Mesela bilgisayara direk olarak "Eger notu 55 ile 69 arasindaysa beslik degiskeninin degerini 3 yap" diyemez miyiz? Deminki örnekte And kullanmistik, burdada Türkçesi içerisinde, içinde anlaminda olan in kelimesini kullanacagiz. Yani notu degiskeninin degerinin "55 ile 69 arasindaki tüm sayilari kapsayan bir küme" içerisinde olup olmadigini kontrol edecegiz. Nasil mi? Iste böyle:
    if notu in [55..69] then beslik:=3;
    Gördünüz mü ne kadar kisa ve anlasilir oldu! Burada kümemiz [55..69] 'dur. Bunu daha önce anlatmistik. Ama birazdan in ifadesiyle kullanimini özel olarak ele alacagiz. Simdi and ve in gibi diger ifadelerin hepsine bir göz atalim:
    Ifade Anlami
    AND Ve demektir. Arasina konuldugu iki (ya da daha fazla) sartin hepsinin dogru oldugu durumlarda sonuç dogru, aksi halde yanlis olur.
    OR Veya anlamindadir. Arasina konuldugu iki (ya da daha fazla) sartin en az birisinin dogru oldugu durumlarda sonuç dogru, aksi halde, yani hepsi yanlis ise sonuç yanlis olur.
    NOT Degil manasindadir. Bir ya da daha fazla sartin soluna konuldugunda sartlarin sonucunun tersini yapar. Yani sonuç true ise false, false ise true olur.
    In ifadesi bunlarin içerisine girmiyor. Zaten onu bir önceki sayfadaki tabloda vermistik. Ayrica bir de az kullanilan xor var ama ben simdiye kadar onu hiç kullanmadim. Gerekirse ilerde anlatiriz. Anlami "veya degil"dir.
    Case ... Of
    Eger simdiye kadar anlamadiginiz birsey yoksa ve kendiniz de biraz örnek yaptiysaniz artik baya bir Pascal biliyorsunuz demektir. Simdiye kadar iyi bir program yapamamamizin sebebi daha döngülere girmememizden kaynaklaniyor. if kalibini anlattik ama Pascal'da sadece karar verme komutu if degildir. Bir de Case-of deyimi var ki bazi durumlarda if'e göre çok daha kisa kod ile ayni isi yapmanizi saglar. Ayrica kullanimi da çok basittir. Mesela bir degiskenimiz var ve bu degiskenin aldigi 10 tane degisik deger için 10 ayri islem yaptirmak istiyoruz. Bunu if ile yapmak hem çok uzun olur hem de hata yapma sansimiz yüksek olur. Ama Case of kullanirsak çok daha anlasilir ve kisa yapabiliriz. Case'in genel kullanimi söyledir:
    Case degisken of
    deger 1 : islem 1;
    deger 2 : islem 2;
    deger 3 : islem 3;
    ...
    ...
    End;
    Tabii yine if'de (ve Pascal'in heryerinde) oldugu gibi birden çok islem yaptiracaksak begin ile and arasina aliriz. Sunun gibi:
    Case degisken of
    deger 1 : begin
    islemler...
    end;
    deger 2 : begin
    islemler...
    end;
    ...
    ...
    end;
    Ayrica birden çok deger için bir islem yapilacaksa söyle kullanilir:
    Case degisken of
    deger 1, deger 2, deger 3 : islem 1;
    deger 4 : islem 2;
    deger 5, deger 6 : islem 3;
    ...
    ...
    End;
    Simdi güzel bir program yapalim. Kullanicidan bir sayi istesin ve ekranda bir menü olsun. Seçime göre belirli islemler yapilsin. Programi yazmaya baslayalim:
    Program SF;
    Uses Crt;
    Label
    en_bas;
    var
    sayi:longint;
    secim:char;
    cikis:boolean;
    begin clrscr;
    cikis:=false;
    write('1 ile 1000 arasi bir sayi giriniz: ');readln(sayi);
    en_bas:
    clrscr;
    gotoxy(30,8);write('::: Menü :::');
    gotoxy(30,10);write('[1] Sayinin Karesini yaz');
    gotoxy(30,11);write('[2] Sayinin Karekökünü yaz');
    gotoxy(30,12);write('[3] Sayinin Kübünü yaz');
    gotoxy(30,13);write('[4] Programdan çik');
    gotoxy(20,18);write('Seçiminizin önündeki sayiya basiniz');
    gotoxy(30,15);write('Seçiminiz: ');
    secim:=readkey;
    case secim of
    '1': begin
    clrscr;
    gotoxy(30,10);
    write(sayi,'''nin Karesi= ',sayi*sayi);
    secim:=readkey;
    end;
    '2': begin
    clrscr;
    gotoxy(30,10);
    write(sayi,'''nin Karekökü= ',sqrt(sayi):10:4);
    secim:=readkey;
    end;
    '3': begin
    clrscr;
    gotoxy(30,10);
    write(sayi,'''nin Kübü= ',sayi*sayi*sayi);
    secim:=readkey;
    end;
    '4': cikis:=true;
    end; {Case'in sonu}
    if (not cikis) then goto en_bas;
    clrscr;
    writeln('Güle Güle... writen by www.seckin.canavari.com.net');
    end.
    Gördügünüz gibi secim:=readkey; komutuyla bir tusa basilmasini bekliyor ve case secim of ile de bu tusun '1', '2', '3' veya '4' olmasi durumunda yapilacak islemler belirtiliyor. '4' olmasi durumunda cikis:=true ile cikis isimli boolean degiseknin degeri true oluyor. if (not cikis) then goto en_bas; ile de eger cikis'in degeri false ise (ki '4'e basilmadikça hep false olur, çünkü programin basinda false yaptik) en_nas; labelinin oldugu yere gidiyor. Dolayisiyla da true olunca programdan çikilmis oluyor. Artik programlarimizda menü yapmaya da bir örnek vermis olduk. Tabii hareketli menü yapmayi da anlatacagiz ama o daha çok ilerde.. Bu örnek karisik geldiyse konunun daha iyi anlasilmasi için basit bir örnek daha yapalim:
    Program FS;
    Uses Crt;
    var
    sayi:longint;
    begin clrscr;
    write('Bir Sayi Giriniz: ');readln(sayi);
    case sayi of
    0..9: writeln('Bu sayi 1 basamaklidir');
    10..99: writeln('Bu sayi 2 basamaklidir');
    100..999: writeln('Bu sayi 3 basamaklidir');
    else writeln('Bu sayi 3''den çok basamaklidir');
    end;{Case'in sonu}
    end.

    Burda case ile birlikte else'in de kullanimini gördük. Eger case ile belirttigimiz hiçbir sart dogru degilse bir islem yapmasini isteyebiliriz. Bu durumda bütün sartlarin sonuna else.. koyariz. Yine case kullanirken iki nokta üst üste ( isaretinin soluna araya virgül koyarak birden çok sart da koyabilirsiniz.
    case sayi of
    13, 17, 4, 10, 9: writeln('Bu sayi benim sevdigim sayilardan birisidir!');
    else writeln('Bu sayilari hiç sevmem ');
    end;
    gibi.. Case komutunu genelde bir degiskenin birden çok sonucuna göre farkli islemler yaptirmak istediginizde kullanabilirsiniz. Dikkat etmeniz gereken case degisken of kalibinda belirttiginiz degisken ile alabilecegi degerlerin ayni tipte olmasidir. Yani degisken sayi tipindeyse herhalde degeri 'D' olamaz! Ya da char tipindeyse degeri 5 olamaz, '5' olabilir. Ikisinin arasindaki farki anlatmistim. Önceki sayi, sonraki karakterdir.
    Pascal'da (ve diger bütün programlama dillerinde) iç içe istediginiz kadar if kullanabilirsiniz. Mesela:
    if a>b then begin
    if a=0 then writeln('B 0''dan küçük');
    if b=0 then writeln('A 0''dan büyük');
    end;
    gibi olabilir. Ya da asagidaki 3 if deyimi ayni isi yapar:
    1)
    if a>1 then begin
    if a<7 then writeln('A degiskeninin degeri 1 ile 7 arasindadir.');
    end;

    2)if a>1 then if a<7 then writeln('A degiskeninin degeri 1 ile 7 arasindadir.');3)
    if (a>1) and (a<7) then writeln('A degiskeninin degeri 1 ile 7 arasindadir.');
    Programci siz oldugunuza göre (ve amaç problemi en basit ve kisa yoldan çözmek olduguna göre) hangisini kullanacaginiza karar vermek size kalmis. 2. örnekte if a>1 then ifadesinden sonraki mavi yazili yerin tamami bir komuttur. Bunu daha önceden söylemistik. Öyleyse then'den sonraki komut bu olabilir. Burada iç içe iki if kullanilmistir.
    Repeat-Until Döngüsü
    Repeat Türkçe olarak "Tekrar" (burada "Tekrar et" amacindadir), Until ise "-e kadar" demektir (bir sey oluncaya kadar.. gibi). Repeat Until döngüsü de tahmin ettiginiz gibi sizin belirteceginiz bir sert dogru oluncaya kadar Repeat ile Until arasina yazacaginiz bütün komutlari tekrar tekrar basa giderek çalistirir. Ta ki until ile belirttiginiz sart dogru oluncaya kadar. Genel kullanimi:
    Repeat
    Islem 1
    Islem 2
    Islem 3
    ...
    ...
    Until (sart);
    sart olarak yine sonucu true ya da false olabilen her seyi verebilirsiniz. Mesela "Until 1=2" derseniz 1 hiçbir zaman 2'ye esit olmayacagina göre (ve dolayisiyla da sart yanlis olacagina göre) döngü sonsuza kadar gider. Simdi basit bir örnek program yapalim:
    Program Repeat_dongusu;
    Uses crt;
    var
    a:=longint;
    begin clrscr;
    a:=0;
    repeat
    a:=a+1;
    writeln(a);
    until a=100;
    readln;
    end.
    Gördügünüz gibi programimiz (goto ile yaptigimiza göre) birhayli kisaldi ve kolaylasti. Repeat..Until döngüsünü bir (ya da birkaç) sart gerkeçlesinceye kadar olan bir döngü kurmak için kullanacagimizi söylemistik. Mesela bir program yapalim. Bu program girilen sayinin karesini ekrana yazsin. Ta ki sayi yerine 1 girilene kadar. Yani 1 yazarsaniz program biter. Iste kodlari:
    Program Filiz;
    uses crt;
    var
    sayi:longint;
    begin clrscr;
    repeat
    write('Bir Sayi Giriniz: ');Readln(sayi);
    writeln('Karesi: ', sayi*sayi);
    until sayi=1;
    end.
    Yavas yavas döngülerin avantajlarini görüyoruz. Döngüsüz bu basit programi yapmak imkansizdir. Çok daha iyi örnekler verecegim ama bilmedigimiz komutlari kullanmak istemiyorum. En iyisi ögrendigimiz zaman kullanalim. Peki bir de 1 ile 10 arasindaki sayilarin karesini yazalim:
    Program KARAKARTAL;
    uses crt;
    var
    sayi:longint;
    begin clrscr;
    sayi:=1;
    repeat
    writeln('Sayi: ',sayi,' Karesi: ', sayi*sayi);
    sayi := sayi + 1 ;
    until sayi > 10;
    end.
    Ayrica iç içe yine istediginiz kadar döngü kurabilirsiniz. Zaten Pascal'da (ve diger bütün programlama dillerinde) bu tip iç içe istediginiz her seyi yapabilirsiniz. Mesela iç içe 2 repeat until döngüsü kurarak 1 ile 10 arasindaki sayilarin birbirleri ile çarpimini yazdiralim. Yani ekrana çarpim tablosunu yazdiralim. Tabii alt alta yazinca ekrana sigmayacagindan her 10 sayida bir enter'a basilmasi gerekiyor:
    Program canavar;
    uses crt;
    var
    a,b:byte;
    begin clrscr;
    a:=0;
    repeat
    a:=a+1;
    b:=0;
    repeat
    b:=b+1;
    writeln(a:2,' x ',b:2,' = ',(a*b):3);
    until b=10;
    readln;
    clrscr;
    until a=10;
    end.

    Gördügünüz gibi tam 100 tane çarpma ve sonucunu yazdirma islemini bu kadar kisa bir programla yapabiliyoruz. For döngüsünü anlatinca bundan daha da kisa olacak. Burada a'nin ve b'nin ilk degerleri 0 oluyor ve her döngüde bir artiriliyor. Ama 0 iken birsey yazilmiyor dikkat ederseniz. Ayrica a'nin degerinin her 1 artiriminda b'ninki 10 defa artirilip yaziliyor. a da 10 defa artirildigina göre toplam 100 islem yapiliyor. until b=10; komutundan sonraki readln; ve clrscr; ise a'nin her deger degistirmesinde enter'a basilmasini bekliyor ve ekrani temizliyor. Program ekrana çarpma islemlerini yazarken dikkat edin her ekranda a sabit, be degisiyor. Ama her ekran degistirilmesinde bu sefer a degisiyor ve b yine 1'den 10'a kadar degerler aliyor. Bu programin görsel olarak pek iyi olmadigini düsünüyorsaniz ve ilkokuldaki defterlerinizin arkasindaki çarpim tablolari gibi sütun sütun ve bütün çarpmalarin ayni ekranda olmasini istiyorsaniz biraz daha ugrasmaniz gerekecek. Bunun için (yani ekranda istedigimiz yere yazdirmak için) gotoxy komutunu kullanacagiz. Bu arada 10 sütunun da ekrana sigmayacagini göz önünde tutarsak bir de if kullanabiliriz. Neyse, iste program, yazin ve çalistirin:
    Program Carpim_Tablosu;
    uses crt;
    var
    a,b:byte;
    begin clrscr;
    gotoxy(27,1);write('Ç A R P I M T A B L O S U');
    a:=0;
    repeat
    a:=a+1;
    b:=0;
    repeat
    b:=b+1;
    if a<=5 then gotoxy(a*16-15,b+2) else gotoxy((a-5)*16-15,b+13);
    write(a:2,' x ',b:2,' = ',(a*b):3);
    until b=10;
    until a=10;
    readln;
    end.
    Programimiz bir öncekine göre uzunluk olarak degismedi. Eminim siz çok daha uzun bir program bekliyordunuz. 2 komut çikardi, 1 komut ekledik. Ekledigimiz komut olan
    if a<=5 then gotoxy(a*16-15,b+2) else gotoxy((a-5)*16-15,b+13);
    komutuna bakalim. Eger diyor a 6'dan küçükse (yani 5'e esit veya 5'ten küçükse) a*16-15 numarali kolona, ve b+2 numarali satira, degilse (yani 5'den büyükse) (a-5)*16-15 numarali kolon ve b+13 numarali satira git. Bundan sonra da write ile oraya gerekli islemi yaziyoruz. Peki bu sayilari nasil belirledim? Ekranin 80 kolon ve 24 satir oldugunu söylemistik. Buna göre hesapladim. Birinci islem için kolon 1 olacak sekilde her islemde kolon numarasi 16 artsin dedim. Zaten a'nin 1 oldugu durumda a*16-15 sonucu 1, 2 oldugu durumda 17, 3 oldugu durumda 33... oluyor. a'nin ve b'nin bütün degerleri için yerine koyunca da ortaya düzgün bir tablo çikiyor. Eger tam olarak anlamadiysaniz elinize bir kagit ve kalem alin ve kendinizi bilgisayar, kagidi da ekran yerine koyun ve programin dedigi her seyi tek tek yapin. Çizdiginiz tablo ekrandaki ile ayni olacaktir.
    Repeat döngüsüne son olarak digerlerinden daha basit bir örnek verelim ve diger döngülere geçelim:
    Program dongumuz;
    uses crt;
    var
    basilan_tus: char;
    begin
    clrscr;
    repeat
    writeln('Merhaba!!!! Çikmak için Escape tusuna basin...');
    basilan_tus:=readkey;
    until basilan_tus=#27;
    end.
    Burada program çalisinca Esc hariç bir tusa basarsaniz ekrana sürekli ayni mesaj çikar. Esc'ye basinca da program sona erer. #27, ESC demektir. Klavyedeki her tusun (alt, ctrl ve shift hariç) bir kodu vardir. Mesela A'nin kodu #65, C'nin kodu #67, Enter tusunun kodu #13'tür. Bir programda writeln(#65); yazarsaniz ekrana A yazar. Yani basilan_tus:='A'; ile basilan_tus:=#65; aynidir. Bu repeat until döngüsünde de until'e sart olarak tusun escape'e (yani #27'ye) esit olup olmadigi kontrol ediliyor. Diger özel tuslarin (ok tuslari, delete, backspace, home.. vb) kodlarini toplu olarak verecegiz.
    While Döngüsü
    While döngüsünün mantigi da aslinda Repeat'a benzer. Repeat'a "Su sart olana kadar döngüyü sürdür" diyorsak While'a da "Su sart oldugu sürece döngüyü sürdür" diyoruz. While kelimesinin anlami "iken", do kelimesinin anlami ise "yap" demektir. Bu durumda "While sart do" ise "sart dogru iken yap" anlamindadir. While döngüsünün Genel Kullanimi;
    while (sart ya da sartlar) do islem...
    seklinde olup birden çok islem yaptirilmak istendiginde begin-end blogu kullanilir
    while (sart ya da sartlar) do begin
    islem 1
    islem 2
    islem 3
    ...
    ...
    end;
    Simdi repeat ile yaptigimiza 1'den 10'a kadar sayilari yazdirma islemini while ile yapalim:
    Program while_denemesi;
    uses crt;
    Var
    sayi:byte;
    begin clrscr;
    sayi:=1;
    while (sayi<=10) do begin
    writeln(sayi);
    sayi:=sayi+1; {Sayi'nin degeri 1 artiriliyor}
    end;{While dongusunun sonu}
    readln;{Enter'a basilmasi bekleniyor...}
    end.{Programin Sonu}
    Bu progarmdaki döngü Türkçe'ye "sayi 10'dan küçük ya da 10'a esit oldugu sürece begin ile end arasindaki islemleri yap" ya da "sayi 11'den küçük iken su islemleri yap.." diye tercüme edilebilir.
    For Döngüsü

    For - to [downto] - do Döngüsü:
    Eger bir sayinin degerini belirli bir degerden baslayip yine belirli bir degere kadar 1'er 1'er artirmak ve her artirma isleminde de istenilen islemleri yapmak isterseniz bu döngüyü kullanabilirsiniz. Cümle biraz karisik olmus olabilir ama komutun kullanimi gayet basit:
    For degisken:=baslangiç_degeri to bitis_degeri do islem...
    ya da birden çok islem yapacaksaniz:
    For degisken:=baslangiç_degeri to bitis_degeri do Begin
    islem 1
    islem 2
    islem 3
    ...
    ...
    End;
    seklinde kullanabilirsiniz. Burada her seferinde sayi:=sayi+1 isleminden kurtulmus oluyoruz. For döngüsü (bitis_degeri - baslangiç_degeri+1) kadar yapilacaktir. Mesela baslangiç degeri 3, bitis degeri 7 ise döngü (7-3) 5 defa yapilir. Çünkü döngü 3'den basliyor ve 3,4,5,6,7 olmak üzere 5 deger aliyor. Bu durumda 5 defa yapilir ve her seferinde degiskenin degeri degisir. Lafi uzatmadan 1'den 10'a kadar olan sayilari ekrana yazdiralim:
    Program GercekDongu;
    Uses crt;
    var
    a:integer;
    begin clrscr;
    for a:=1 to 10 do writeln(a);
    readln;
    end.
    Iste size çok kisa bir program. Repeat ile daha uzun yazdigimizi hatirlayin. Peki bir de bu sayilarin karesini de yazalim:
    Program GercekDongu2;
    Uses crt;
    var
    a,kare:integer;
    begin clrscr;
    for a:=1 to 10 do begin
    kare:=a*a;
    writeln(a,' -> ',kare);
    end; {For döngüsünün sonu}
    readln;
    end.

    hatta buna bile gerek duymadan
    Program GercekDongu3;
    Uses crt;
    var
    a:integer;
    begin clrscr;
    for a:=1 to 10 do writeln(a,' -> ',a*a);
    readln;
    end.
    yapabilirsiniz. Peki simdi de bir sayinin faktoriyelini bulalim. Faktoriyel'i biliyorsunuzdur herhalde. Mesela 3 faktoriyel demek 1x2x3 demektir ve sonucu 6 olur. 5 faktoriyel ise 1x2x3x4x5 demektir ve sonucu 120 olur. Simdi girilen bir sayinin faktoriyelini bulalim:
    Program GercekDongu_FaktoriyelBul;
    Uses crt;
    var
    a, sayi:integer;
    fakt:longint;
    begin clrscr;
    write('Kaç faktoriyel olsun: ');readln(sayi);
    fakt:=1;
    for a:=1 to sayi do fakt:=fakt*a;
    writeln(sayi,'! = ',fakt);
    end.
    Simdiye kadar neredeyse hep matematiksel islemler yaptik. Simdi de görsel birsey yapalim. Mesela bir yaziyi ekranin sol üst kösesinden baslayarak saga dogru kaydiran bir program yapalim:
    Program Yaziyi_Kaydir;
    Uses crt;
    var
    a:byte;
    yazi:string;
    begin clrscr;
    yazi:='www.seckin.canavari.com';
    for a:=1 to 50 do begin
    gotoxy(a,1);write(yazi);delay(50);clrscr;
    end;
    end.

    Eger yazi çok hizli kayiyorsa delay(50); degerini artirin, yavas kayiyorsa azaltin. Delay'i sonra anlatiriz. Simdi de bir yaziyi çapraz olarak ekrana yazalim. Ama yazi en fazla 24 harf olsun:
    Program Yazdir_Bakalim;
    Uses crt;
    var
    a:byte;
    yazi:string;
    uz:byte;
    begin clrscr;
    write('Bir yazi yazin (En fazla 24 harf): ');readln(yazi);
    uz:=length(yazi);
    clrscr;
    for a:=1 to uz do begin
    gotoxy(a,a);write(yazi[a]);
    gotoxy(80-a,a);write(yazi[a]);
    gotoxy(40,a);write(yazi[a]);
    end;
    readln;
    end.
    Yaziyi ekrana üç farkli sekilde yazdiriyoruz. Burada kullandigimiza yazi[a] 'yi önceden anlatmistik. mesela yazi[5] o yazinin 5. harfidir. Örnegin yazi:='Seckin'; ise yazi[2]='e' olur.
    For döngüsünün ikinci kullanimi da to yerine downto iledir. Bu sekilde sayi 1'er 1'er artacaginza 1'er 1'er azalir. Bunun için baslangiç degeri bitis degerinden büyük olmalidir. Simdi de 200'dan 1'e kadar olan sayilari yan yana yazalim.
    Program asagigit;
    uses crt;
    var
    a:byte;
    begin clrscr;
    for a:=200 downto 1 do write(a:4);
    readln;
    end.

    Bir de girilen 10 tane sayidan 10'dan büyük olan sayilar ile 10'dan küçük olan sayilarin sayisini bulan programi yapalim:
    Program bul_bakalim;
    Uses crt;
    var
    b,k,o:byte;
    a:byte;
    sayi:byte;
    begin clrscr;
    k:=0;b:=0;o:=0;
    for a:=1 to 10 do begin
    write('Bir sayi giriniz: ');readln(sayi);
    if sayi<10 then k:=k+1;
    if sayi>10 then b:=b+1;
    if sayi=10 then o:=o+1;
    end;
    clrscr;
    writeln('10''dan küçük olanlar: ',k,' tane.');
    writeln('10''dan büyük olanlar: ',b,' tane.');
    writeln('Girilen 10 sayisi: ',o,' tane.');
    readln;
    end.
    Oyun
    Evet, simdi, simdiye kadar yaptigimiz en iyi programi yapacagiz. Bir oyun yapacagiz. Bu oyunda bilgisayar ekranin rastgele biryerine * isareti koyacak. Biz de kolon numarasini ve satir numarasini (yani *'in kordinatlarini) tahmin etmeye çalisacagiz. Dogru kordinati bulana kadar oyun devam edecek. Bulunca da kaç tahminde buldugumuzu ekrana yazacak. Size bir ipucu: Kolon numarasi 2 ile 79 arasi, Satir numarasi 2 ile 20 arasi bir deger. Asagidaki programi yazip çalistirin. Iyi eglenceler:
    Program Hedefi_bul;
    Uses crt;
    Label
    tekrar_gir;
    var
    x,y:byte;
    satir,sutun:byte;
    a,ts:byte;
    begin
    {ekranda rastgele bir kordinat seçiliyor...}
    randomize;
    x:=random(78)+2;
    y:=random(19)+2;
    {..rastgele korditanlar Seçildi}
    ts:=0; {Tahmin Sayisi}
    tekrar_gir:
    clrscr;
    {Çerçeve çizlmeye basliyor...}
    for a:=1 to 80 do begin
    gotoxy(a,1);write('.');
    gotoxy(a,21);write('.');
    end;
    for a:=1 to 21 do begin
    gotoxy(1,a);write('.');
    gotoxy(80,a);write('.');
    end;
    {...Çerçeve çizildi}
    gotoxy(1,23);write('Tahmininizi Giriniz->');
    gotoxy(30,23);write('Sutun No...:');
    gotoxy(50,23);write('Satir No...:');
    gotoxy(x,y);write('*');
    gotoxy(43,23);readln(sutun);
    gotoxy(63,23);readln(satir);
    if (not (satir in [2..20])) or (not (sutun in [2..79])) then goto tekrar_gir;
    ts:=ts+1; {Tahmin sayisi artiriliyor}
    if (satir=y) and (sutun=x) then begin
    gotoxy(30,12);write('Aferin Bildiniz!');
    gotoxy(30,13);write('Tahmin Sayisi: ',ts);
    end else begin
    gotoxy(sutun,satir);write('X');
    delay(1000);
    gotoxy(sutun,satir);write(' ');
    goto tekrar_gir;
    end;
    readln;
    end.

    Programi çalistirdiginizda yanlis tahmin yapinca ekrana bir X koyar, biraz bekler ve geri sile bu X harfini. Eger bunu göremiyorsaniz ya da çok kisa süreli görebiliyorsaniz delay(1000); degerini artirin. Programda kullandigim ve simdiye kadar ögrenmedigimiz ikinci komut da randomize ve random. Diger bütün komutlari ve deyimleri biliyorsunuz. Bu programi iyi inceleyin. Çünkü benim Pascal ögrenmek istememdeki ilk vesile bu program olmustu. Döngülerle ilgili olarak da ekrana nasil noktalar ile çerçeve çizdigimize bakin. Programi belki daha güzel yapabilirdik ama elimden geldigince bilmedigimiz komutlari kullanmamaya çalistim.
    - godoro.com dan yararlanılmıştır.
    Konu zeet06 tarafından (06.11.08 Saat 17:53 ) değiştirilmiştir.

  2. #2
    Ehil Üye Piri Reis - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    Jul 2008
    Bulunduğu yer
    İstanbul
    Mesajlar
    1.662

    Standart

    Paylaşım için sağol... ben de bi ara pascal borland kullanmıştım... kullanışlı bir programlama dili...
    ''Hazret-i Eyyüb Aleyhisselâmın zâhirî yara hastalıklarının mukabili, bizim bâtınî ve ruhî ve kalbî hastalıklarımız vardır.” (Lem’alar, İkinci Lem’a)

+ Konu Cevaplama Paneli

Konu Bilgileri

Users Browsing this Thread

Şu an 1 kullanıcı var. (0 üye ve 1 konuk)

     

Benzer Konular

  1. C# Programlama - (Si Şarp)
    By zeet06 in forum Bilişim Haberleri ve Bilimsel Makaleler
    Cevaplar: 10
    Son Mesaj: 03.06.15, 17:22
  2. Ruby Programlama
    By zeet06 in forum Bilgisayar ve İnternet Sorunları
    Cevaplar: 1
    Son Mesaj: 16.01.09, 15:26
  3. C Programlama
    By zeet06 in forum Bilişim Haberleri ve Bilimsel Makaleler
    Cevaplar: 13
    Son Mesaj: 14.01.09, 13:59
  4. Python Programlama
    By zeet06 in forum Bilgisayar ve İnternet Sorunları
    Cevaplar: 3
    Son Mesaj: 14.01.09, 12:47
  5. C++ Programlama
    By zeet06 in forum Bilgisayar ve İnternet Sorunları
    Cevaplar: 4
    Son Mesaj: 28.11.08, 14:12

Bu Konudaki Etiketler

Yetkileriniz

  • Konu Acma Yetkiniz Yok
  • Cevap Yazma Yetkiniz Yok
  • Eklenti Yükleme Yetkiniz Yok
  • Mesajınızı Değiştirme Yetkiniz Yok
Google Grupları
RisaleForum grubuna abone ol
E-posta:
Bu grubu ziyaret et

Search Engine Friendly URLs by vBSEO 3.6.0