Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Ders İçeriği : Algoritma ve akış diyagramları, Pascal ‘da program yapısı, Giriş/Çıkış komutları, karşılaştırma komutları, döngü komutları, procedure, function,

Benzer bir sunumlar


... konulu sunumlar: "Ders İçeriği : Algoritma ve akış diyagramları, Pascal ‘da program yapısı, Giriş/Çıkış komutları, karşılaştırma komutları, döngü komutları, procedure, function,"— Sunum transkripti:

1 Ders İçeriği : Algoritma ve akış diyagramları, Pascal ‘da program yapısı, Giriş/Çıkış komutları, karşılaştırma komutları, döngü komutları, procedure, function, pointer, yapısal veri tipleri, unit, dosyalama. Kitaplar: 1. Pascal Programlama Dili, Murat Tekin, Nahid Tekin, İstanbul Kültür Üniversitesi, Turbo Pascal, Prof.Dr. Behiç Çağal, İstanbul Kültür Üniversitesi. 3. Turbo Pascal ve Programlama Sanatı, Ömer Akgöbek, Beta yayınları, Pascal, Prof.Dr. Mustafa Dikici, Beta yayınları, 1998.

2 GİRİŞ Pascal 1968 yılında Prof. Dr. Niklaus Wirth (Zürih Teknik Üniversitesi, İsveç) tarafından geliştirilmiştir. 17. yüzyılın ünlü matematikçisi Blaise Pascal ‘a hitaben Pascal olarak isimlendirilmiştir.Bundan önce benzer özelliklere sahip bir dil olan ALGOL (Algoritmic Languages) 1950 yılında geliştirilmiştir. Pascal 1968 yılında Prof. Dr. Niklaus Wirth (Zürih Teknik Üniversitesi, İsveç) tarafından geliştirilmiştir. 17. yüzyılın ünlü matematikçisi Blaise Pascal ‘a hitaben Pascal olarak isimlendirilmiştir.Bundan önce benzer özelliklere sahip bir dil olan ALGOL (Algoritmic Languages) 1950 yılında geliştirilmiştir. Blaise Pascal

3 Pascal ‘ın programcıya sunduğu en önemli özellik; program parçaları hazırlandıktan sonra, farklı programlar içerisinde kullanılabilmektedir. Günümüzde turbo pascal geliştirilerek, programın kullanımında kolaylıklar sağlanmıştır. Programın yazıldığı editörde, programlar anında makina diline çevrilir, hata bulma ve düzeltmeler pratik ve hızlıdır. Borland tarafından Turbo Pascal gilştirilmiştir, kitap Turbo Pascal komutlarını içermektedir. Pascal yapısal bir dildir. Komut cümleleri bloklar halinde yazılır. Goto kullanılarak yönlendirilmeler kullanılmaz. Pascal ‘ın programcıya sunduğu en önemli özellik; program parçaları hazırlandıktan sonra, farklı programlar içerisinde kullanılabilmektedir. Günümüzde turbo pascal geliştirilerek, programın kullanımında kolaylıklar sağlanmıştır. Programın yazıldığı editörde, programlar anında makina diline çevrilir, hata bulma ve düzeltmeler pratik ve hızlıdır. Borland tarafından Turbo Pascal gilştirilmiştir, kitap Turbo Pascal komutlarını içermektedir. Pascal yapısal bir dildir. Komut cümleleri bloklar halinde yazılır. Goto kullanılarak yönlendirilmeler kullanılmaz.

4 Elektronik ilk dijital bilgisayarlar, Dr. Jhon Atanasof tarafından, Iowa State Üniversitesi ‘nde lisans üstü matematik öğrencilerinin ihtiyaçları için tasarlanmıştır yılında genel amaçlı ilk dijital bilgisayar, Pennsylvania Üniversitesi ‘nde tasarlandı ve ENIAC adı verildi. 30 ton ağırlığında ve boyutları 30X50 fit idi. Ddaha sonra Princeton Üniversitesi ‘nde Dr. John Von Neumann sistemi çalıştıran programları bilgisayarın belleğine yerleştirilmesini tasarladı, günümüzdeki bilgisayarların temelleri atılmış oldu. Elektronik ilk dijital bilgisayarlar, Dr. Jhon Atanasof tarafından, Iowa State Üniversitesi ‘nde lisans üstü matematik öğrencilerinin ihtiyaçları için tasarlanmıştır yılında genel amaçlı ilk dijital bilgisayar, Pennsylvania Üniversitesi ‘nde tasarlandı ve ENIAC adı verildi. 30 ton ağırlığında ve boyutları 30X50 fit idi. Ddaha sonra Princeton Üniversitesi ‘nde Dr. John Von Neumann sistemi çalıştıran programları bilgisayarın belleğine yerleştirilmesini tasarladı, günümüzdeki bilgisayarların temelleri atılmış oldu.

5 Programlama dillerini üç ana başlıkta toplayabiliriz. Makina dili, Assemly dili ve Yüksek seviyeli programlama dilleri. Programlama dillerini üç ana başlıkta toplayabiliriz. Makina dili, Assemly dili ve Yüksek seviyeli programlama dilleri. Makina dili, bilgisayarların anlayabileceği tekdildir. 0 ve 1 sayılarından oluşur. Makinaya bağımlıdır. Makina dili, bilgisayarların anlayabileceği tekdildir. 0 ve 1 sayılarından oluşur. Makinaya bağımlıdır. Assembly dili, 0 ve 1 sayılarının yerine kelimeler ve semboller kullanılır, makinaya bağımlıdır. Makina ve assamble dillerinde yazılan programlar sadece yazıldığı bilgisayarda işletebilir. Bilgisayarlar sadece makina dilinde çalışırlar. Bundan dolayı yüksek seviyede yazılan programlar derleyiciler ile makina diline çevrilirler. Assembly dili, 0 ve 1 sayılarının yerine kelimeler ve semboller kullanılır, makinaya bağımlıdır. Makina ve assamble dillerinde yazılan programlar sadece yazıldığı bilgisayarda işletebilir. Bilgisayarlar sadece makina dilinde çalışırlar. Bundan dolayı yüksek seviyede yazılan programlar derleyiciler ile makina diline çevrilirler. Yüksek seviyeli programlama dilleri, kullanımı kolaydır, taşınabilir. Örneğin; Basic, Cobol,Fortran, Pascal, vb. Bunlara; visual C++, delphi, visual basic, acces, foxpro, vb. çok yüksek seviyeli diller, C, C++, vb. orta seviyeli dilleri ilave edebiliriz. Yüksek seviyeli programlama dilleri, kullanımı kolaydır, taşınabilir. Örneğin; Basic, Cobol,Fortran, Pascal, vb. Bunlara; visual C++, delphi, visual basic, acces, foxpro, vb. çok yüksek seviyeli diller, C, C++, vb. orta seviyeli dilleri ilave edebiliriz.

6 Bu dillerin kullanıldığı alanlara örnekler verirsek: Pascal, fortran, C, C++ dilleri bilim ve mühendislikte, Dbase, Foxpro, Sql, Access veri tabanı programcılığında, Prolog, Lisp yapay zeka kullanımında, C, C++ ve makina dilleri sistem programcılığında kullanılır. Bu dillerin kullanıldığı alanlara örnekler verirsek: Pascal, fortran, C, C++ dilleri bilim ve mühendislikte, Dbase, Foxpro, Sql, Access veri tabanı programcılığında, Prolog, Lisp yapay zeka kullanımında, C, C++ ve makina dilleri sistem programcılığında kullanılır. Bir bilgisayar programı yazmaya başlamadan problemin algoritmasını oluşturmamız gerekir. Algoritma problemin çözümünü bulabilmek için tasarlanan adımlar, yöntemlerdir. Algoritma kullanacağımız programlama dilinin seviyesi ve programın zorluk derecesine göre farklılıklar gösterecektir. Bir bilgisayar programı yazmaya başlamadan problemin algoritmasını oluşturmamız gerekir. Algoritma problemin çözümünü bulabilmek için tasarlanan adımlar, yöntemlerdir. Algoritma kullanacağımız programlama dilinin seviyesi ve programın zorluk derecesine göre farklılıklar gösterecektir.

7 Algoritma yazdıktan sonra programlama dilinin seçiminde, programın kullanım düzeyi, kullnım süresi ve kullanım amacı dikkate alınmalıdır. Programda görsellik, veri tabanı aranıyorsa, kısa sürede sonuca ulaşabilmek için visual dillerden biri Visual C++, Delphi, Visual Basic, vb. seçilmelidir. Fakat bilgisayarınızın bir donanımı için program yazmak istiyorsanız, bu programı bu visual dillerle yazamazsınız. Buradaki seçiminiz C, C++, Assamly, vb. olmalıdır. Programlama dillerini kendi kullanım alanlarında kullanmalıyız. Yukarıda verilen örnekteki görsellik ve veri tabanı iletişimi aranan programı C, C++ veya hatta Assembly ilede yazabiliriz. Bu verimli olmaz ve çok aşır uzun süreler alır. Algoritma yazdıktan sonra programlama dilinin seçiminde, programın kullanım düzeyi, kullnım süresi ve kullanım amacı dikkate alınmalıdır. Programda görsellik, veri tabanı aranıyorsa, kısa sürede sonuca ulaşabilmek için visual dillerden biri Visual C++, Delphi, Visual Basic, vb. seçilmelidir. Fakat bilgisayarınızın bir donanımı için program yazmak istiyorsanız, bu programı bu visual dillerle yazamazsınız. Buradaki seçiminiz C, C++, Assamly, vb. olmalıdır. Programlama dillerini kendi kullanım alanlarında kullanmalıyız. Yukarıda verilen örnekteki görsellik ve veri tabanı iletişimi aranan programı C, C++ veya hatta Assembly ilede yazabiliriz. Bu verimli olmaz ve çok aşır uzun süreler alır.

8 Günümüzde yazılım teknolojisiyle farklı programlama dillerinde yazılmış program parçaları birlikte kullanılabilmektedir. Bu model Component Object Model (COM) ‘dir. Örneğin C++ ‘da yazdığınız bir parçayı Delphi ‘den çağırarak, programınıza dahil edebilirsiniz. Bu teknolojilerin geliştirilmesinde C++ kullanılmıştır. Günümüzde yazılım teknolojisiyle farklı programlama dillerinde yazılmış program parçaları birlikte kullanılabilmektedir. Bu model Component Object Model (COM) ‘dir. Örneğin C++ ‘da yazdığınız bir parçayı Delphi ‘den çağırarak, programınıza dahil edebilirsiniz. Bu teknolojilerin geliştirilmesinde C++ kullanılmıştır.

9 Turbo Pascal Editörü (TP7.0) Turbo Pascal Editörü (TP7.0) Editörü ilk açtığımızda karşımıza, NONAME00.PAS isimli dosya gelir. Bu daosya içerisine kod satırlarını yazmaya başlayabiliriz. Yazma işlemimiz bittikten sonta Compile menüsü yardımıyla derleriz, daha sonra Run menüsü ile programı çalıştırabilirsinizmiz zaman hatalarımız var ise editör bize hatanın bulunduğu satırı, hatayı ve kodunu verir. Hatayı düzelttikten sonra tekrar derleyebilirsiniz. Daha sonra File menüsünden save ‘e basark programı kaydedebilirsiniz, istenirse 8 karakterlik yeni bir isim verilebilir. Editörü ilk açtığımızda karşımıza, NONAME00.PAS isimli dosya gelir. Bu daosya içerisine kod satırlarını yazmaya başlayabiliriz. Yazma işlemimiz bittikten sonta Compile menüsü yardımıyla derleriz, daha sonra Run menüsü ile programı çalıştırabilirsinizmiz zaman hatalarımız var ise editör bize hatanın bulunduğu satırı, hatayı ve kodunu verir. Hatayı düzelttikten sonra tekrar derleyebilirsiniz. Daha sonra File menüsünden save ‘e basark programı kaydedebilirsiniz, istenirse 8 karakterlik yeni bir isim verilebilir.

10 Önek 1 program ilk(input, output); Uses crt; begin writeln(‘pascal öğreniyorum.’); writeln(‘pascal öğreniyorum.’);end.

11

12 İlk Programımızın çıktısı aşağıdaki gibi olacaktır.

13 BÖLÜM 1 PASCAL ‘DA PROGRAM YAPISI Program yapısı Semboller DEĞİŞKEN TİPLERİ OPERATÖRLER Aritmetik Operatörler Mantıksal Operatörler Karşılaştırma Operatörleri

14 PASCAL ‘DA PROGRAM YAPISI Pascal programlama dili, yapısal bir dildir. Yazacağımız pascal programı, program parçalarında oluşur. Ana program parçası çok kısa olur. Programın büyük bir bölümünü procedure ve function ‘lar oluşturur. Program yapısı program program_adı(input,output); Tanımlamalaruses unitler; type özel veriler; const sabitler; var değişkenler; label etiketler; procedure ve functionlar; Ana program parçası.

15 İlk olarak program yazılır ve programa bir isim verilir. Verilecek isimde bir değişken için uyulacak kurallar geçerlidir. Bunlar; türkçe karakter, sembol, boşluk olamaz. Sayı ile başlanamaz. Alt çizgi kullanılabilir. Örnekler; ogrenci_isleri, soru1, ornek1, gunluk_ver3. Daha sonra tanımlamalar bölümünde program içerisinde kullanacağımız unitler, veriler, sabitler, değişkenler, etiketler bulunur. İlk olarak program yazılır ve programa bir isim verilir. Verilecek isimde bir değişken için uyulacak kurallar geçerlidir. Bunlar; türkçe karakter, sembol, boşluk olamaz. Sayı ile başlanamaz. Alt çizgi kullanılabilir. Örnekler; ogrenci_isleri, soru1, ornek1, gunluk_ver3. Daha sonra tanımlamalar bölümünde program içerisinde kullanacağımız unitler, veriler, sabitler, değişkenler, etiketler bulunur. Tanımlamalar kısmında program içerisinde kullanacağımız unitleri, özel veri tiplerini, sabitleri, değişkenleri ve etiketleri tanımlarız. Tanımlamalar kısmında program içerisinde kullanacağımız unitleri, özel veri tiplerini, sabitleri, değişkenleri ve etiketleri tanımlarız.

16 Procedure: Alt programdır. Program parçasını procedure altında yazarak, istenilen yerde çalıştırabiliriz. Procedure parametre ile kullanmıyorsak, çalışması için ismini yazmamız yeterlidir. Procedure ve function ‘larda type, const, var ve label tanımlamaları kullanılabilir. Procedure: Alt programdır. Program parçasını procedure altında yazarak, istenilen yerde çalıştırabiliriz. Procedure parametre ile kullanmıyorsak, çalışması için ismini yazmamız yeterlidir. Procedure ve function ‘larda type, const, var ve label tanımlamaları kullanılabilir. Function: Function ‘da alt programdır. Yazdığımız function doğrultusunda, ana program parçasından gönderdiğimiz datayı işleme tabi tutarak, sonucunu gönderir. Function: Function ‘da alt programdır. Yazdığımız function doğrultusunda, ana program parçasından gönderdiğimiz datayı işleme tabi tutarak, sonucunu gönderir.

17 Semboller Harfler :İngiliz alfabesinin harfleri, A-Z ve küçük harfler. Harfler :İngiliz alfabesinin harfleri, A-Z ve küçük harfler. Sayılar: 0-9 Sayılar: 0-9 Hexaesimal(Onaltılık) sayılar: A-F, a-f, 0-9 Hexaesimal(Onaltılık) sayılar: A-F, a-f, 0-9 Özel karakterler(Tek olarak kullanılanlar): Özel karakterler(Tek olarak kullanılanlar): +:aritmetik ve string toplama. +:aritmetik ve string toplama. - */:aritmetik işlemler. - */:aritmetik işlemler. = :karşılaştırma. = :karşılaştırma. ::geğişken tanımlanırken ve case of ‘da kullanılır. ::geğişken tanımlanırken ve case of ‘da kullanılır. ;:komut satırı bitimi. ;:komut satırı belirtmede belirtmede kullanılır.

18 ( ):aritmetik işlemlerde öncelik için, procedure ve function ‘ların parametrelerini yazmak için kullanılır. ( ):aritmetik işlemlerde öncelik için, procedure ve function ‘ların parametrelerini yazmak için kullanılır. {}(* *):açıklama yazmak için kullanılır. {}(* *):açıklama yazmak için kullanılır. #:bu sembol ile yazılan kon numaraları ile karakter veya tuş belirtilebilir. #:bu sembol ile yazılan kon numaraları ile karakter veya tuş belirtilebilir. [ ]:indis. [ ]:indis..:program sonu ve real sayılarda kullanılır..:program sonu ve real sayılarda kullanılır.,:birden fazla aynı tipte tanımlama yapılırken aralara konulur.,:birden fazla aynı tipte tanımlama yapılırken aralara konulur. :=:değişkende değer atamak için kullanılır. :=:değişkende değer atamak için kullanılır. { $ }:compiler bildirilerinin belirtilmesi için. { $ }:compiler bildirilerinin belirtilmesi için.

19 Korumlı Pascal kelimeleri (Reserved Word) Absolute And Array Begin Case Const Constructor Destructor Div Do Down to Else End External File For Forward Function Goto If In Inline Interrupt Label Mod Nil Not Object Of Or Packed Set Shl Shr String Then To Type Unit Until Uses Var Virtual While With Xor

20 Sayılar Tam, gerçel, hexedecimal sayılardır. Hexedecimal sayıların önüne $ sembolü getirilir. On üzeri gösterim için E veya e harfi kullanılır. Tam, gerçel, hexedecimal sayılardır. Hexedecimal sayıların önüne $ sembolü getirilir. On üzeri gösterim için E veya e harfi kullanılır.Stringler İki apostrof arasına tüm harf ve sembolleri yazabiliriz. Maksimim 255 karakterlik bilgi yazılabilir. Program Akışı Komutların yazım sırası ve satırlar takip edilerek program yürütülür. Komut satırı bitimleri noktalı virgül (;) sembolü ile belirlenir. Birden fazla komut satırını aralarına noktalı virgül yazarak tek satırda kullanabiliriz. Atama Bir bilgi hafızada değişken vasıtasıyla tutulur. Hafızadaki bu bilgilere değişken ile ulaşırız. Atama işlemi için := sembolü kullanılır. := sembolünün soluna değişken, sağ tarafına ise ifade yazılır. Burada kullanacağımız değişkenin tipi ile ifadenin tipi uyumlu olmalıdır. değişken := ifade;

21 Integer (Tamsayı) Tip Integer (Tamsayı) Tip Tamsayılardır. Kullanım amaçlarına göre shortint, integer, longint, byte, word şeklinde ayrılmışlardır. var a, b: integer; cevre: longint; DEĞİŞKEN TİPLERİ

22 TipSınırları Hafızada kapladığı alan (byte) shortint integer logint byte (işaretsiz) word (işaretsiz) –

23 Real(Gerçel) Tip Gerçel sayılardır. Örneğin; Kullanım amaçlarına göre real, single, double, extended, comp şeklinde ayrılmışlardır. var sayi1, sayi2, alan: real; cap: single;

24 TipSınırları Hafızada kapladığı alan (byte) Real Single Double Extended comp 2.9x x x x x x x x

25 Boolean(Mantıksal) Tip Boolean(Mantıksal) Tip Değişken true(doğru) veya false(yanlış) değerini alır. Karar verme ve döngü işlemlerinde kullanılır. Değişkenin aldığı doğru veya yanlış değere göre program farklı bir şekilde yürütülür. Değişken true(doğru) veya false(yanlış) değerini alır. Karar verme ve döngü işlemlerinde kullanılır. Değişkenin aldığı doğru veya yanlış değere göre program farklı bir şekilde yürütülür. var sonuc, d1, d11: boolean; Char Tip ASCI karakterlerinden oluşur. Değişkene bir karakter tutabilir. Karakter üretmek için chr fonksiyonu kullanılır. Örneğin chr(#77). var karakter1, karakter2: char;

26 String Tip Karakter dizisinden oluşur. En fazla 255 karakterlik olabilir. Değişik sınırlar değişken tanımlanırken belirlenebilir. Karakter dizisinden oluşur. En fazla 255 karakterlik olabilir. Değişik sınırlar değişken tanımlanırken belirlenebilir. var ogrenci_adi: string[15]; ogrenci_adresi, aciklama: string[30]; Array Tip Dizi tipidir. Birden fazla aynı tipteki bir kümeyi aynı değişken kullanarak hafızaya yerleştirebiliriz. Köşeli parantez içerisine dizinin boyutu yazılır. Çok büyük dataların okunmasında, bize komut yazımında kolaylık sağlar. var ogrenci_adi, ogrenci_soyadı: array[1..50] of string[15]; vize1, vize2: array[1..50] of byte; Buradaki örnekte 50 kişilik bir sınıftaki oğrencilerin bilgileri birlikte tutulmuştur. vize1 dizi değişkeninde 50 tane 1.vize notu tutulabilir. vize2[3] 3.öğrencinin 2.vize notudur.

27 Birden fazla boyut oluşturulabilir. Örneğin, var vize: array[1..2, 1..3] of byte; Buradaki vize isimli değişken 2 boyutludur. 2X3=6 elemanlıdır. Bu aslında 2 satırlı, 3 sütunlu bir matrisdir. Buradaki vize isimli değişken 2 boyutludur. 2X3=6 elemanlıdır. Bu aslında 2 satırlı, 3 sütunlu bir matrisdir. vize[1,1]: 1.dersin 1.vize notu vize[1,2]: 1.dersin 2.vize notu vize[1,3]: 1.dersin 3.vize notu vize[2,1]: 2.dersin 1.vize notu vize[2,2]: 2.dersin 2.vize notu vize[2,3]: 2.dersin 3.vize notu

28 Record(Kayıt) Tip Aynı küme içerisinde birlikte düşünülebilecek değişkenler topluluğudur. Topluluk elemanları farklı tiplerden oluşabilir. var ogrenci_bilgi= record no: byte; adi,soyadi: string[15]; adresi: string[30]; end; sinif1: ogrenci_bilgi; Burada ogrenci_bilgi isimli topluluğun; no, adi, soyadi, adresi isimli 4 tane elamanı vardır. sinif1 isimli değişken vasıtasıyla bu topluluk program içinde, sinif.no= ; readln(sinif.adi); writeln(‘Soyadı:’, sinif1.soyadi); şeklinde kullanılır.

29 Aşağıdaki örnek dizi şeklinde yazılmıştır; type ogrenci_bilgi= record ogrenci_bilgi= record no: byte; no: byte; adi,soyadi: string[15]; adi,soyadi: string[15]; adresi: string[30]; adresi: string[30]; end; end;var sinif:array [1..3] of ogrenci_bilgi; sinif:array [1..3] of ogrenci_bilgi; i:integer; i:integer;begin for i:=1 to 3 do readln(sinif[i].no); readln(sinif[i].no);writeln; for i:=1 to 3 do writeln(sinif[i].no); writeln(sinif[i].no);readlnend.

30 var Değişkenlerin tanımlandığı bölümdür. Değişkenlerin tanımlandığı bölümdür. var değişken1, değişken2... :tip_adı; Aralarına virgül konularak birden fazla değişken bir satırda tanımlanabilir. var a, sayi1, c: integer; isim: string[15]; alan, cevre: real; b: array[1..2, 1..3, 1..5] of integer; Pascal ‘da büyük harf, küçük harf duyarlılığı yoktur.

31 const Sabit değerlerin tanımlanması için kullanılır. Tanımladığımız değer program boyunca aynı kalır. Örneğin pi, max, min vb. değerler. Tanımlamada tip adı belirtilmeyebilir. Sabit değerlerin tanımlanması için kullanılır. Tanımladığımız değer program boyunca aynı kalır. Örneğin pi, max, min vb. değerler. Tanımlamada tip adı belirtilmeyebilir.constSabit_ismi[:tip]=değişken;constpi:real=3.14;max=999;il:string[6]=’ANKARA’; vize: array[1..2,1..3] of =((75,80,90),(55,100,80)); vize: array[1..2,1..3] of =((75,80,90),(55,100,80));

32 type Programcı kendi isteğine göre özel veri tipi oluşturabilir. type Programcı kendi isteğine göre özel veri tipi oluşturabilir. type tip_ismi = tip; Buradaki tip pascal tipi veya daha önce programcı tarafından tanımlanmış bir tip olabilir. Örneğin type type tip_ismi = tip; Buradaki tip pascal tipi veya daha önce programcı tarafından tanımlanmış bir tip olabilir. Örneğin type gercel: real; tamsayi: integer; sayilar: 0..50; giris_tipi: array[1..3, 1..50] of integer;

33 label Etiket tanımlanır. Goto komutu ile belirlenen etikete gidilebilir. Yapısal programlamada kullanılma ihtiyacı duyulmaz. Etiket tanımlanır. Goto komutu ile belirlenen etikete gidilebilir. Yapısal programlamada kullanılma ihtiyacı duyulmaz. label etiket adı1, etiket adı2,.....; label etiket adı1, etiket adı2,.....;Örneğin, label giris, liste, 442; label giris, liste, 442;

34 OPERATÖRLER Aritmetik Operatörler: Aritmetik işlemleri yapabiliriz. OperatörİşlemTipiSonuç tipi + - * / div mod Toplama Çıkarma Çarpma Bölme Tamsayı bölme Kalan İnteger Real İnteger Real İnteger Real İnteger Real İnteger Integer İnteger Real İnteger Real İnteger Real Integer

35 Örnekler Div Operatörü Mod Operatörü 16 div 3 = 5 18 div 3 = 6 20 div 5 = 4 2 div 1 = 2 1 mod 4 = 1 10 mod 10 = 0 6 mod 5 = 1 7 mod 5 = 2 3 mod 0 = tanımsız

36 Mantıksal Operatörler: OperatörSonucu And (ve) Or (veya) Not (değil) Xor (veya değil) Boolean Mantıksal işlemler yapmak için bu operatörlerden faydalanılır.

37 Karşılaştırma Operatörleri: Karşılaştırma işlemlerinde kullanılan kullanılan operatörlerinin sonuçları boolean ‘dır. Karşılaştırma işlemlerinde kullanılan kullanılan operatörlerinin sonuçları boolean ‘dır. =:eşit :büyük <>:farklı =:büyük eşit Pascal ‘da formül yazımı: Formül yazımında ilk olarak aritmetik operatörlerin işlem önceliğine dikkat etmemiz gerekir. İşlem öncelik sıralaması: parantez, üs alma, çarpma ve bölme, toplama ve çıkarma dır. İşlem öncelik sıralaması: parantez, üs alma, çarpma ve bölme, toplama ve çıkarma dır. Örneğin, denkleminin kod satırı ; y:=(a+b)/c şeklindedir. İşlem önceliğinden dolayı parantez kullanmamız mecburidir. Bu denklemi y:=a+b/c şeklinde koda dönüştürseydik karşılığı bizim denklemimizden farklı denklem olacaktı. Örnekler;y:=2*x/3y:=(a+b)/(c+d)y:=a+b/c+d

38 BÖLÜM 2 PASCAL KOMUTLARI Input/Output (Giriş/Çıkış) Komutları write/writeln read/readln Karşılaştırma Komutları if – then – else case – of Döngü Komutları for – do repeat - until while - do continue break EKRAN KOMUTLARI

39 PASCAL KOMUTLARI Input/Output (Giriş/Çıkış) Komutları Data girişlerinin yapılabilmesi, sonuçların ekran veya printer ‘a yazılması için kullanılırlar. write/writeln Ekrana sabit, değişken veya işlem şeklindeki ifadelerin sonuçlarını yazar. Writeln kullanılırsa yazma işlemi sonucunda cursor bir satır atlar. Yazdırılmak istenilen ifade parantez içerisinde yazılır, birden fazla ise virgül ile ayrılır. Bir string yazdırılmak isteniyorsa, iki tırnak arasına yazılır. Örneğin: write(‘istanbul’); ---writeln(sayi1); Örnek Program: program ilk(input, output); Uses crt; begin writeln(‘pascal öğreniyorum.’); writeln(‘pascal öğreniyorum.’);end.Çıktısı, pascal öğreniyorum.

40

41 İlk Programımızın çıktısı aşağıdaki gibi olacaktır.

42 Çıktıdaki her kelimeyi alt alta yazdırmak istersek, herbir kelime için writeln komutunu kullanmamız gerekecektir program 2(input, output); Ses crt; beginwriteln(‘Pascal’);writeln(‘Öğreniyorum’);end.Çıktısı,PascalÖğreniyorum Değişken kullanarak bir örnek yazalım, program 3(input,output); Ses crt; var a,b,c: integer; begin a:=5; b:=10; c:=a+b;writeln(‘c=’,c);writeln(‘c=’,a+b);end.Çıktısı,c=15c=15

43 program ekran4(input,output); vara:integer;b:real;begin a:=786; b= ; writeln(a:10); {Bu yazım formatına göre yazdırılmak istenilen M değeri n karakterlik alanda sağa dayalı olarak yazılır. M değerini oluşturan dijit veya karakterin uzunluğu n sayısından küçük ise, aradaki fark kadar sol tarafta boşluk bırakılır. M değerinin uzunluğu n sayısına eşit veya büyük ise yazdırma işlemi format belirtilmemiş gibi gerçekleştirilir. } Her iki writeln aynı sonucu verecektir, writeln komutu içerisinde işlem yapabiliriz. write/writeln sonuçlarını ekrana formatlı yazdırabiliriz. Toplam hane sayısını ve virgülden sonra kaç karakter kullanılacak belirtebiliriz.

44 writeln(b:10:2); {Bu yazım formatı real sayılar üzerinde çalışmaktadır. Bu yazım formatıyla reel sayılar üssüz notasyonda yazdırılır. Bunu sağlamak için sadece real sayılar için geçerli olan 2. yazım formatı kullanılır. Yazdırılacak M real değeri n karakterlik alanda sağa dayalı olarak üssüz yazdırılır, k ise n karakterin sonundaki kesirli kısmı göstermektedir. Örneğin; A değeri, A:7:2 şeklinde yazdırılmak istenirse; program real sayı için 7 karakterlik yer ayırır. Bu alanın son iki hanesi ondalıklı kısım için sondan 3. hanesi ise desimal nokta için kullanılır. Sayının tamsayı kısmı ayrılan alanın uzunluğundan küçük ise, aradaki fark kadar sol tarafta boşluk bırakılır. Yazdırılacak sayının tam sayı kısmı bu alana sığmıyor ise, tamsayı için ayrılan alanın uzunluğu yazdırılan sayının tamsayı alan uzunluğuna eşit büyüklükte kabul edilir. Kesirli kısmı ayrılan alandan daha küçük ise aradaki fark kadar sağ tarafa 0 dijiti ilave edilir. Kesirli kısım alana sığmıyorsa yuvarlatılarak yazılır. Yazım sırasında kesirli alanın yazılması istenmiyorsa k sayısının “0” yazılması gerekir. K sayısının sıfır olması desimal noktanın yok olmasını sağlar. } end.Çıktısı,bbbbbbb786bbbb786.12

45 read/readln Klavyeden veya dosyadan bilgi okumak amacıyla kullanırız. Klavyeden kullanımı; read(değişken1, değişken2,...); Parantez içerisine değişken ismi yazılır, birden fazla ise aralarına virgül konulur. Readln kullanılırda girişden sora cursor bir satır atlar. Bir readln fonksiyonu ile birden fazla değişken girişi yapıldıysa, klavyeden aralarına boşluk verilerek veya her değişken değerinden sonra enter ‘a basılarak giriş yapılır. Aşağıdaki örnekte klavyeden girilen iki tamsayının toplamı bulunarak ekrana basılmıştır. Aşağıdaki örnekte klavyeden girilen iki tamsayının toplamı bulunarak ekrana basılmıştır. program giris1(input,output); var a,b,c: integer; begin write(‘a değerini girin:’);readln(a); { Cursor mesajın hemen bitimine konumlanması için burada writeln yerine write kullanılmıştır. } write(‘b değerini girin:’);readln(b); c:=a+b;writeln(‘c=’,c);end.Çıktısı, a değerini girin:5 b değerini girin:10 c=15 Klavyeden 5 ve 10 değerleri girildiği kabul edilmiştir.

46 Aynı programı bir tane readln kullanarak yazabiliriz. program giris11(input,output); var a,b: integer; begin write('a ve b değerlerini girin:');readln(a,b); writeln('c=',a+b);readlnend.Çıktısı; a ve b değerlerini girin:5 10 c=15

47 Aşağıdaki örnekte Bir kişinin isim ve il bilgileri girildiğinde, ekrana bir cümle şeklinde yazılmaktadır. program giris2(input,output); varisim:string[15];il:string[10];begin write(‘İsminizi giriniz:’);readln(isim); write(‘Yaşadığınız ili giriniz:’);readln(il); writeln(isim,’ ‘,il,‘ da yaşamaktadır.’); end.Çıktısı, İsminizi giriniz: Beril Yaşadığınız ili giriniz: İstanbul Beril İstanbul da yaşamaktadır. Klavyeden Beril ve İstanbul değerleri girildiği kabul edilmiştir. Aşağıdaki program klavyeden girilen 3 sayının ortalamasını bulmaktadır. program ornek(input,output); var a,b,c:integer; a,b,c:integer; ort:real; ort:real;begin write('Ortalaması alınacak 3 sayıyı giriniz:'); write('Ortalaması alınacak 3 sayıyı giriniz:'); readln(a,b,c); readln(a,b,c); ort:=(a+b+c)/3; ort:=(a+b+c)/3; writeln('ortalama:',ort:10:3); writeln('ortalama:',ort:10:3); readln readlnend.Çıktısı; Ortalaması alınacak 3 sayıyı giriniz: ortalama:

48 Karşılaştırma Komutları Karşılaştırma Komutları Karşılaştırma komutları, programın akışı verilen koşul veya koşullara göre değiştirilebilir. Karşılaştırma sonucuna göre istenilen satırlar çalıştırılabilir. Pascal da 2 tip karşılaştırma komutu kullanılır. «if-then-else» ve «case-of».

49 1.) if – then – else Yazılan koşula göre programda farklı bloklar yapılır. Birden fazla koşul verilebilir ve tüm koşullar denendikten sonra aksi taktirde yapılması istenilen blok varsa else komutundan sonra yazılır. if Koşul then Komut/Komutlar; if Koşul then Komut/Komutlar; Koşul doğru ise then komutundan sonraki Komut veya Komutlar yürütülür.

50 if Koşul then Komut/Komutlar;

51 else kullanılırsa, if Koşul then Komut/Komutlar else Komut/Komutlar; Koşul doğru ise then komutundan sonraki Komut veya Komutlar yürütülür, aksi takdirde else komutundan sonraki Komut veya Komutlar yürütülür.

52 Birden fazla komut satırı kullanıldığında, bu satırlar begin – end arasında yazılmalıdır. if Koşul then if Koşul thenbegin …….. ……..…….end; else else begin begin …….. ……..…….end;

53 Örnegin klavyeden girilen iki sayıdan büyük olanını bularak ekrana basan programı yazalım. program kucbuy; Uses crt; vara,b:integer;BeginClrscr; writeln(‘İki sayı giriniz: ’); readln(a,b); writeln(‘İki sayı giriniz: ’); readln(a,b); if a>b then writeln(a,’ büyük’) else writeln(b,’büyük’); Readln; end.

54 Örneğin klavyeden fiyatı ve miktarı girildiğinde ödeme turarını aşağıdaki tabloya göre bulan programı yazalım, Miktar(X TL) İndirim Yüzdesi(%) X<10 Yok 10<=x<20 %20 20<=x<30 %30 X>=30 %50

55 program hesapla; Uses crt; varf,od,m:real;begin Clrscr; Write('Fiyatı:');readln(f);write('Miktar:');readln(m); if m<10 then od:=f*m if m<10 then od:=f*m else if(m>=10) and (m =10) and (m<20) thenBegin Od:=(f*m)-(f*m)*0.20; write (‘Tenzilat tutarı:’,f*m*0.2:20:5); End; else if(m>=20) and (m =20) and (m<30) then od:=(f*m)- (f*m)*0.30 else if m>=30 then od:=(f*m)-(f*m)*0.50; else if m>=30 then od:=(f*m)-(f*m)*0.50; writeln('Ödeme Tutarı:',od:10:3); writeln('Ödeme Tutarı:',od:10:3); readln; readln;end.

56 PROBLEMLER 1. Bir süpermarket aşağıdaki şekilde alışveriş tutarına göre indirim uygulamaktadır. Klavyeden alışveriş tutarı girildiğinde ödeme miktarını bulan programı yazınız. Alışveriş Tutarı(Xmilyon TL)İndirim(%) 50 altındaYOK 50(dahil) (dahil) (dahil)ve üzeri20 2. Klavyeden girilen x değeri için aşağıdaki fonksiyonun sonucunu bulan programı yazınız. x 2 x≤0 f(x)= (x+1) 2 0

57 2. case – of : Case-of deyimi bazi durumlarda if'e göre çok daha kisa kod ile ayni isi yapmanizi saglar. Ayrica kullanimi da çok basittir. Mesela bir degiskenimiz var ve bu degiskenin aldigi 10 tane degisik deger için 10 ayri islem yaptirmak istiyoruz. Bunu if ile yapmak hem çok uzun olur hem de hata yapma sansimiz yüksek olur. Ama Case of kullanirsak çok daha anlasilir ve kisa yapabiliriz. Case'in genel kullanimi söyledir: Case degisken of Case degisken of deger 1 : islem 1; deger 1 : islem 1; deger 2 : islem 2; deger 2 : islem 2; deger 3 : islem 3; deger 3 : islem 3; End; End; Çok miktarda seçenek varsa case – of tercih edilir. İfadenin alacağı değere göre istenilen satır/satırlar yürütülür. Çok miktarda seçenek varsa case – of tercih edilir. İfadenin alacağı değere göre istenilen satır/satırlar yürütülür.

58 Koşul araştırılan değişkenin değerlerine göre program akışının değiştirilmesini sağlar. Değişkenin değeri ilk olarak hangi ifadeye uyarsa yalnızca o ifadenin karşısındaki komut veya komutlar işleme alınacak diğerleri işlenmeyecektir. Eğer değişkenin değeri tanımlı olan ifadelerin hiç birisine uymuyorsa ELSE ifadesini karşısındaki komutlar işleme alınır. ELSE bloğunu kullanmak zorunlu değildir.

59 CASE secenek OF { secenek adındaki değişken değerlendiriliyor } 1:secim:=1; { eğer secenek değişkeninin değeri 1 ise secim değişkeninin değeri de 1 oluyor } 2:secim:=2; { eğer secenek değişkeninin değeri 2 ise bir üsteki satır değerlendirilmiyor ve secimin değeri 2 oluyor } ELSE writeln(‘Hatalı Secenek’); { eğer secenek değişkenin değeri 1 ve 2 den farklı ise ekrana mesaj yazdırıyoruz } End;{ case of komut bloğunu end ile bitiriyoruz }

60 Tabii yine ifade (ve Pascal'in heryerinde) oldugu gibi birden çok islem yaptiracaksak begin ile and arasina aliriz. Sunun gibi: Case degisken of deger 1 : begin islemler... end; deger 2 : begin islemler... end;... end; Ayrica birden çok deger için bir islem yapilacaksa söyle kullanilir: Case degisken of deger 1, deger 2, deger 3 : islem 1; deger 4 : islem 2; deger 5, deger 6 : islem 3;... End;

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

62 ÖRNEK 1 1 ile 5 arasındaki sayıların yazımlarını ekrana basan program. 1 ile 5 arasındaki sayıların yazımlarını ekrana basan program. program yazicevir ; Uses crt; var sayi: integer; BeginClrscr; write(‘1 ile 5 arasında sayı gir:’);readln(sayi); case sayi of 1:writeln(‘bir’);2:writeln(‘iki’);3:writeln(‘üç’);4:writeln(‘dört’);5:writeln(‘beş’); else writeln(‘1 ile 5 arasında girmediniz.’); End; Readln; end. Readln; end.

63 ÖRNEK 2. Ekrandan girilen iki sayının taoplam, fark, çarpım ve bölümlerini bulan basit b ir hesap makinası programı yapalım. program hesapmakinesi; uses crt; var sayi1,sayi2: integer; islem:char;Begin clrscr; clrscr; write(‘İşlem yapacağınız sayıları giriniz:’);readln(sayi1,sayi2); write(‘Hangi işlemi yapacaksınız [/,*,-,+] :’);readln(islem); case islem of ‘/’:writeln(‘Bölme sonucu:’,sayi1/sayi2); ‘*’:writeln(‘Çarpma sonucu:’,sayi1*sayi2); ‘-’:writeln(‘Çıkarma sonucu:’,sayi1-sayi2); ‘+’:writeln(‘Toplama sonucu:’,sayi1+sayi2); else writeln(‘yanlış giriş’); end;readln;end.

64 program deneme; uses crt; var ognotu : word; harfnotu :char; begin write('Öğrencinin notunu giriniz>');readln(ognotu); case ognotu of :harfnotu:='E'; :harfnotu:='D'; :harfnotu:='C'; :harfnotu:='B'; :harfnotu:='A'; else writeln('Hatalı giriş yaptınız !'); end; writeln('Öğrencinin harf notu=‘,harfnotu); readln; end. program deneme; uses crt; var ognotu : word; harfnotu :char; begin write('Öğrencinin notunu giriniz>');readln(ognotu); case ognotu of :harfnotu:='E'; :harfnotu:='D'; :harfnotu:='C'; :harfnotu:='B'; :harfnotu:='A'; else writeln('Hatalı giriş yaptınız !'); end; writeln('Öğrencinin harf notu=‘,harfnotu); readln; end.

65 Program ; Uses crt; Var Ch: char; begin case Ch of 'A'..'Z', 'a'..'z' : WriteLn('Harf'); '0'..'9' : WriteLn('Rakam'); '+', '-', '*', '/' : WriteLn('Operator'); else WriteLn('Özel karakter'); End;Readln;End.

66 uses crt; uses crt; Const I : integer = 500; Var Sayi : integer; Begin Write(‘Bir sayı girin : ‘);readln(Sayi); If (sayi > 0) and (sayi = 128) and (sayi = 256) then I := I+100; If (sayi -127) then I := I-1; If (sayi -255) then I := I-10; If (sayi = 0) and (sayi = 128) and (sayi = 256) then I := I+100; If (sayi -127) then I := I-1; If (sayi -255) then I := I-10; If (sayi =< -255) then I := I-100; writeln('Islem sonunda I değeri =',I); Readln; End.

67 Const I : integer = 500; Var Sayi : integer; Begin Write('Bir sayi girin : '); readln(Sayi); case Sayi of : I:= I + 1; : I := I + 10 ; : I := I + 100; : I := I - 1; : I := I - 10; : I := I - 100; end; writeln('Islem sonunda I değeri =',I); Readln; end. Const I : integer = 500; Var Sayi : integer; Begin Write('Bir sayi girin : '); readln(Sayi); case Sayi of : I:= I + 1; : I := I + 10 ; : I := I + 100; : I := I - 1; : I := I - 10; : I := I - 100; end; writeln('Islem sonunda I değeri =',I); Readln; end.

68 uses crt; var ads:string[20]; ads:string[20]; not1:integer; not1:integer;begin clrscr; clrscr; write(' AD Soyad GİRİNİz '); readln(ads); write(' AD Soyad GİRİNİz '); readln(ads); write(' Not GİRİNİz '); readln(not1); case not1 of case not1 of : not1:='A'; : not1:='A'; : not1:= 'B'; : not1:= 'B'; : not1:= 'C‘; : not1:= 'C‘; : not1:= 'D'; : not1:= 'D'; 0..44: not1:= 'E'; 0..44: not1:= 'E'; else else writeln('0 ile 100 arasi not giriniz!'); writeln('0 ile 100 arasi not giriniz!'); end; end; Writeln(ads,’isimli öğrencinin harf notu,’not1); readln; readln; end.

69 Klavyeden girilen notu beşlik sisteme çeviren program. uses crt; var sayi:integer; begin write(‘notunuzu girin:’);readln(sayi); case sayi of 0..24:writeln(‘0 ile kaldınız’); :writeln(‘1 ile kaldınız’); :writeln(‘2 ile geçtiniz’); :writeln(‘3 ile geçtiniz’); :writeln(‘4 ile geçtiniz’); :writeln(‘5 ile geçtiniz’); else writeln(‘notunuzu arasında giriniz’); end; readln; end.

70 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'); : writeln('Bu sayi 2 basamaklidir'); : 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.

71 var sayi:intger; begin write('1 ile 10 arasında bir sayı girin');readln(sayi); Case sayi Of 1:write('I'); 2:write('II'); 3:write('III'); 4:write('IV'); 5:write('V'); 6:write('VI'); 7:write('VII'); 8:write('VIII'); 9:write(IX'); 10:write('X'); Else write('Girdiğiniz sayı 1 ile 10 arasında değil') end; end. Bu örnekte Case - Of komutu kullanılarak, klavyeden girilen 1 ile 10 rasında sayıların romarakamı karşılığı ekrana yazdırılıyor. var sayi:intger; begin write('1 ile 10 arasında bir sayı girin');readln(sayi); Case sayi Of 1:write('I'); 2:write('II'); 3:write('III'); 4:write('IV'); 5:write('V'); 6:write('VI'); 7:write('VII'); 8:write('VIII'); 9:write(IX'); 10:write('X'); Else write('Girdiğiniz sayı 1 ile 10 arasında değil') end; end. Bu örnekte Case - Of komutu kullanılarak, klavyeden girilen 1 ile 10 rasında sayıların romarakamı karşılığı ekrana yazdırılıyor.

72 Kullanicidan bir sayi istesin ve ekranda bir menü olsun. Seçime göre belirli islemler yapilsin. Programi yazmaya baslayalim: Program SF; Uses Crt; Label en_bas; var sayi:longint; secim:char; cikis:boolean; begin clrscr; cikis:=false; write('1 ile 1000 arasi bir sayi giriniz: ');readln(sayi); en_bas: clrscr; gotoxy(30,8);write('::: Menü :::'); gotoxy(30,10);write('[1] Sayinin Karesini Hesapla '); gotoxy(30,11);write('[2] Sayinin Karekökünü Hesapla '); gotoxy(30,12);write('[3] Sayinin Kübünü Hesapla '); gotoxy(30,11);write('[4] Sayinin Logaritmasını Hesapla'); gotoxy(30,11);write('[5] Sayinin Üstel Fonksiyonunu Hesapla'); gotoxy(30,13);write('[6] Programdan çik'); gotoxy(20,18);write('Seçiminizin önündeki sayiya basiniz'); gotoxy(30,15);write('Seçiminiz: '); secim:=readkey;

73 case secim of '1': begin clrscr; gotoxy(30,10); write(sayi,'''nin Karesi= ',sayi*sayi); secim:=readkey; end; '2': begin clrscr; gotoxy(30,10); write(sayi,'nin Karekökü= ',sqrt(sayi):10:4); secim:=readkey; end; '3': begin clrscr; gotoxy(30,10); write(sayi,'nin Kübü=',sayi*sayi*sayi); secim:=readkey; end; ‘4': begin clrscr; gotoxy(30,10); write(sayi,'nin Logaritması=',Ln(sayi)); secim:=readkey; end; ‘5': begin clrscr; gotoxy(30,10); write(sayi,'nin Üstel Fonksiyonu=',Exp(sayi)); secim:=readkey; end; ‘6': cikis:=true; end; {Case'in sonu} if (not cikis) then goto en_bas; clrscr; writeln('Güle Güle... writen by ????'); end.

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

75 PROBLEMLER 1. Klavyeden bir dikdörtgenler prizmasının kenar ölçüleri girilmektedir. Bir menü oluşturarak isteğe göre alan ve hacim değerlerini bulun. 2. Aşağıdaki menüyü oluşturarak istenilen geometrik şeklin ölçülerinin girişini isteyerek alan ve çevrelerini bulan programı yazınız. Menü Daire Daire Dikdörtgen Dikdörtgen Kare Kare

76 Döngü Komutları İstenildiği kadar yapılması istenen tekrarlı işlemlerde veya belli koşullar sağlanıncaya kadar tekrar edilmesi gereken işlemlerde döngü komutları kullanılır. for – do İstenildiği kadar yapılması istenen tekrarlı işlemlerde kullanılır. Yani kaç defa tekrarlanacağı bellidir. Bu başlangıç ve bitiş değerleriyle belirlenir. for değişken:=başlangış_değeri to bitiş_değeri do for değişken:=başlangış_değeri to bitiş_değeri doKomut/Komutlar; Döngüde birden fazla komut satırı varsa begin – end arasına yazılır. Başlangıç değeri, birtiş değerinden büyükse do yerine downto kullanılır. Ekrana 10 defa AKU yazdıralım. program yaz(input,output); vari:integer;begin for i:=1 to 10 do writeln(‘AKU’);end.

77 Klavyeden girilen 3 sayıdan en büyük olanını bulan programı yazalım. program ornek(input,output); var sayi,enbuyuk,i:integer; sayi,enbuyuk,i:integer;begin for i:=1 to 3 do for i:=1 to 3 do begin begin readln(sayi); readln(sayi); if (i=1) then enbuyuk:=sayi; if (i=1) then enbuyuk:=sayi; if (sayi>enbuyuk) then enbuyuk:=sayi; if (sayi>enbuyuk) then enbuyuk:=sayi; end; end; writeln('Enbuyuk sayı:',enbuyuk); writeln('Enbuyuk sayı:',enbuyuk); readln readlnend.Çıktısı;10205 Enbuyuk sayı:20

78 2 ‘den 100 ‘e kadar çift sayıları ekrana bastıralım. Aşağıdaki şekilde for do döngüsü içerisinde artım yapamayız. C ‘de döngü değişkenine müdahale imkanı vardır. program CiftHata(input,output); vari,sayi:integer;begin for i:=2 to 100 do begin writeln(i); writeln(i); i:=i+2;//Hata end; end;end. program cift(input,output); vari,sayi:integer;begin for i:=1 to 50 do beginsayi:=i*2; writeln(sayi); writeln(sayi); end; end;readlnend.

79 1 ‘den 99 ‘a kadar tek sayıların toplamını ve ortalamasını bulan program. program teksaytoport(input,output); vari,j,toplam,say:integer;ort:real;begintoplam:=1;say:=0; for i:=1 to 97 do begin if (i mod 2)=0 then continue; j:=i+2; if (i mod 2)=0 then continue; j:=i+2; say:=say+1;toplam:=toplam+j; end; end;ort:=toplam/say;writeln(‘toplamı:’,toplam);writeln(‘ortalaması:’,ort);readlnend.

80 İç içe istenildiği kadar for döngüsü oluşturulabilir. Aşağıdaki programı inceleyelim. program icicefor(input,output); vari,j:integer;begin for i:=1 to 3 do for j:=1 to 3 do writeln(i,j);end. Programın çıktısı, İncelersek; Dıştaki döngü bir kez döndüğünde içerdeki döngüyütamamlamaktadır, 3 kez dönmektedir. 3X3 ‘lük bir matrisin elaman indisleri oluşmuştur.

81 ÖRNEKLER ÖRNEKLER 1. 1 den 10 a kadar sayıların karelerini ve küplerini bulunuz den 10 a kadar sayıların karelerini ve küplerini bulunuz. for i:=1 to 10 do for i:=1 to 10 do Writeln(i, i*i, i*i*i); Writeln(i, i*i, i*i*i); Çıktısı; Çıktısı; Aşağıdaki şekli oluşturunuz. 2. Aşağıdaki şekli oluşturunuz. * * * * for j:=1 to 5 do for j:=1 to 5 do writeln(‘*’: 21-j, ‘*’: 2*j-1); writeln(‘*’: 21-j, ‘*’: 2*j-1); 3. (1+R)N denklemini yazınız. 3. (1+R)N denklemini yazınız. Temel:=1; Temel:=1; For j:=1 to N do For j:=1 to N do Temel:=Temel*(1+R); Temel:=Temel*(1+R); dan 5 e kadar sayıları yazdırınız dan 5 e kadar sayıları yazdırınız. For sayi:=10 downto 5 do For sayi:=10 downto 5 do Writeln(‘sayı=’, sayi);

82 PROBLEMLER 1.Aşağıdaki şekilleri oluşturunuz. a)b)c) ********* * *** **** * * *** **** * *** * ********** 2. Aşağıdaki formülü kullanarak FarenTemp ‘in 50 den 100 e kadar değerlerine karşılık gelen, CelsTemp ‘in değerlerini bulunuz. CelsTemp=(5/9)*(FarenTemp-32) 3. Klavyeden 50 tane tam sayı girilmektedir. Bu sayıların pozitif olanlarının toplamını, negatif olanlarının sayısını bulan programı yazınız ! İn sonucunu bulunuz. 5. Klavyeden girilen pozitif tamsayının faktöryelini bulunuz. 6. Aşağıdaki denklemlerin sonuclarını bulunuz. a) b)

83 repeat - until Until ifadesinden sonra yazılan koşul yanlış olduğu sürece döngü devam eder. Yani koşul sağlanıncaya kadar döngü devam eder. Önemli bir nokta ise, döngü ilk çevrimi koşulsuz olarak mutlaka gerçekleştirir. repeatKomut/Komutlar; until Koşul; KoşulKomut/KomutlarDoğruYanlış

84 ÖRNEKLER 1 ‘den 99 ‘a kadar tek sayıların toplamını ve ortalamasını bulan program. program teksay_top_ort; Uses crt; vari,toplam,say:integer;ort:real;begin toplam:=0; say:=0;i:=1; repeattoplam:=toplam+i;i:=i+2;say:=say+1; until (i>99); ort:=toplam/say;writeln('toplamı:',toplam);writeln('ortalaması:',ort:10:3);Readln;end.

85 Klavyeden girilen 10 dairenin alanlarını bularak ekrana basan program. program daire_alan_1; Uses crt; vari,r,toplam,say:integer;alan:real;BeginClrscr; toplam:=0; say:=0;i:=0; repeat write(i+1,'nci dairenin yarıçapını gir:'); readln(r); alan:=3.14*r*r; writeln(i+1,'nci dairenin alanı:',alan:10:3); i:=i+1; until (i=10); Readln;end. Çıktısı; 1nci dairenin yarıçapını gir:2, 1nci dairenin alanı: , 2nci dairenin yarıçapını gir:3, 2nci dairenin alanı: , 3nci dairenin yarıçapını gir: …

86 Klavyeden girilen 3 sayının ortalamasını bulan programı repeat until döngüsü ile yazınız. program; Uses crt; var a,i,top:integer; a,i,top:integer; ort:real; ort:real;BeginClrscr; writeln('Girilen 3 sayının ortalamasını hesaplar.'); writeln('Girilen 3 sayının ortalamasını hesaplar.'); readln; readln; i:=0;top:=0; i:=0;top:=0; repeat repeat write(i+1,'.sayıyı gir:');readln(a); write(i+1,'.sayıyı gir:');readln(a); top:=top+a; top:=top+a; i:=i+1; i:=i+1; until(i>2); until(i>2); ort:=top/3; ort:=top/3; writeln('ortalama:',ort:10:3); writeln('ortalama:',ort:10:3); readln; readln;end. 1.sayıyı gir:9, 2.sayıyı gir:14, 3.sayıyı gir:23, ortalama:

87 PROBLEMLER 1 den 15 e kadar tek sayıların küplerini bulan programı yazınız. 1 den 15 e kadar tek sayıların küplerini bulan programı yazınız. 100 den 2 ye kadar çift sayıları ekrana basan program. 100 den 2 ye kadar çift sayıları ekrana basan program. Klavyeden girilen bir ismi 10 defa ekrana basan programı yazınız. Klavyeden girilen bir ismi 10 defa ekrana basan programı yazınız. A aracının hızı 50 km/saaat, B aracının hızı ise 180 km/saat ‘dir. A aracı hızını saniyede %2 arttırmaktadıri B aracı ise hızını saniyede %3 azaltmaktadır. Buna göre A aracının hızı kaç saniye sonra B aracının hızından fazla olur. A aracının hızı 50 km/saaat, B aracının hızı ise 180 km/saat ‘dir. A aracı hızını saniyede %2 arttırmaktadıri B aracı ise hızını saniyede %3 azaltmaktadır. Buna göre A aracının hızı kaç saniye sonra B aracının hızından fazla olur.

88 while - do Koşul doğru olduğu sürece döngü devam eder. Koşul döngü başlamadan sınanır, doğru ise döngü başlar, yanlış ise döngüye girmez. Koşul yanlış oluncaya kadar döngü devam eder. Birden fazla komut satırı var ise begin – end bloğu arasına yazılır. while Koşul do Komut/Komutlar

89 ÖRNEKLER Klavyeden girilen 10 dairenin alanlarını bularak ekrana basan programı while do döngüsü kullanarak tekrar yazalım. Klavyeden girilen 10 dairenin alanlarını bularak ekrana basan programı while do döngüsü kullanarak tekrar yazalım. program daire_alan_2; vari,r:integer;alan:real;begini:=0; while (i<10) do begin write(i+1,'nci dairenin yarıçapını gir:'); readln(r); alan:=3.14*r*r; writeln(i+1,'nci dairenin alanı:',alan:10:3); i:=i+1;end;end. Çıktısı; 1nci dairenin yarıçapını gir:2, 1nci dairenin alanı: , 2nci dairenin yarıçapını gir:3, 2nci dairenin alanı: , 3nci dairenin yarıçapını gir: _.

90 Verilen bir x sayısının y. Kuvvetini bulan programı yazınız. Uses crt; Varx,y,i:integer;f:real;BeginClrscr;f:=1;i.=1 write('Ussu alınacak sayı:');readln(x); Write('Kuvvet');readln(y); while(i<=y) do Begini:=i+1;f:=f*x;End; writeln (f:10:3); Readln; End.

91 Klavyeden girilen 3 sayının ortalamasını while do döngüsü ile bulan program sayiort(input,output);var a,i,top:integer; a,i,top:integer; ort:real; ort:real;begin writeln('Girilen 3 sayının ortalamasını hesaplar.'); writeln('Girilen 3 sayının ortalamasını hesaplar.'); writeln; writeln; i:=0; i:=0; while (i<3) do while (i<3) do begin begin i:=i+1; i:=i+1; write(i,'.sayıyı gir:');readln(a); write(i,'.sayıyı gir:');readln(a); top:=top+a; top:=top+a; end; end; ort:=top/3; ort:=top/3; writeln('ortalama:',ort:10:3); writeln('ortalama:',ort:10:3); readln readlnend.Çıktısı; Girilen 3 sayının ortalamasını hesaplar. 1.sayıyı gir:9 2.sayıyı gir:14 3.sayıyı gir:23 ortalama:

92 PROBLEMLER Klavyeden girilen password doğru ise, dairenin yarıçap değerinin girişine izin vererek çevresini hesaplayan programı yazınız. 3 hatalı girişte program sonlansın. Klavyeden girilen password doğru ise, dairenin yarıçap değerinin girişine izin vererek çevresini hesaplayan programı yazınız. 3 hatalı girişte program sonlansın. 1 ‘den 99 ‘a kadar tek sayıların ortalamasını bulan program. 1 ‘den 99 ‘a kadar tek sayıların ortalamasını bulan program.

93 Continue, break Döngü içerisinde continue komutu işlem görürse, döngü bir sonraki çevrime başlar. Yani continue komutundan sonraki satırlar işlemez. Döngü içerisinde break komutu işlem görürse döngü sonlandırılır. Döngü kırılmış olur. Örneğin 1 ‘den 10 ‘a kadar sayıları yazdıralım. Fakat 5 ‘i yazdırmayalım. program yaz1(input,output); var i :integer; begin for i:=1 to 10 do begin if i=5 then continue; write(i);end;end.Çıktısı,

94 Yukarıdaki programda break komutunu kullanırsak, program yaz2(input,output); var i :integer; begin for i:=1 to 10 do begin if i=5 then break; write(i);end;end.PROBLEMLER 1. Klavyeden girilen sayıların toplamını bulan program, -1 girildiğinde sonucu ekrana yazsın. 2. Klavyeden girilen pozitif sayıların ortalamasını ve sayısını bulan program, negatif girildiğinde tekrar giriş istesin, 0 girildiğinde sonucu versin.

95 Ekran Komutları: Ekran Komutları: CLRSCR: Ekranın temizlenmesi için kullanılır. Eğer programda window tanımlanmışsa windowun içini tmizler.clrscr; GOTOXY: İşlemin yapılması istenilen koordinatları belirtmek için kullanılır. GotoXY (Sütun,Satır); Matematiksel Fonksiyonlar: Exp(x) Ln(x) Sin(x) Cos(x) - Arctan(x) pi Sqr(x) Sqrt(x) Mutlak değerAbs Mod YuvarlamaRound Rasgele sayıRandom(x+1)

96 CLREOL: Kursörün bulunduğu noktadan satır sonuna kadar olan kısımı silmek için kullanılır.ClrEOL;WHEREX: Kursörün bulunduğu noktanın x cordinatını öğrenmek için kullanılır.x:=WhereX 'x daha önce tanımlanmış integer bir değişkendir.WHEREY: Kursörün bulunduğu noktanın y cordinatını öğrenmek için kullanılır.y:=WhereY 'y daha önce tanımlanmış integer bir değişkendir.

97 Renk Komutları: TEXTCOLOR: Ekrana yazılan yazının rengini belirtmek için kullanılır.TextColor (Renk); 'Renk 0-16 arasındabir tamsayı olamalıdır. TEXTBACKGROUND: Ekrana yazılan yazının zemin rengini belirlemek için kullanılır.TextBackGround(Renk); 'Renk 0-16 arasındabir tamsayı olamalıdır.Renk Değer: Renk:0Siyah,1Mavi,2Yeşil,3Turquaz,4Kırmızı,5Pembe,6Kahverengi,7Parlak Gri,8Koyu Gri,9Açık Mavi,10AçıkYeşil,11Açık Turquaz,12Açık Kırmızı,13Açık Pembe,14Sarı,15Beyaz. Ses Komutları SOUND: Speakerdan verilen frekansta ses çıkratmak için kullanılır.Sound(frekans); 'frekans herhengi bir sayı değeridir. NOSOUND: Sound komutu ile oluşturulan ses devamlı olarak çalar. Çalmayı durudurmak için NoSound komutu kullanılır.NoSound;

98 Diğer Komutlar: READKEY: Basılan tuş değerini okumak için kullanılır.Bu komut ile char veri tipinde bir değer elde edilir.tus:=ReadKey; 'tus değişkeni daha önce tanımmlanmış olmalıdır.KEYPRESSED: Bir tuşa basılıp basılmadığını algılamak için kullanılır. Sonuç bir bolean değişkendir.if KeyPressed then....DELAY: Programın akışını belirtilen süre kadar durdurmak için kullanılır.Delay(Süre); 'Sure milisaniye cinsinden bir değerdir.TextMode: TEXTMODE: Ekranın satır ve sütün sayısını ayarlamak için kullanılır.TextMode(Mod);TextMode Modları: Değer: Mod: BW40 veya 040 X 25 B / W on CGACO40 veya 140 X 25 Color on CGABW80 veya280 X 25 B / W on CGACO80 veya 380 X 25 Color on CGAMono veya 780 X 25B / W on MDA or HGCFont 8x8 veya / 50 -line mode EGA / VGA

99 Klavyeden girilen ismi alt alta birerli atlayarak yazan program. uses crt; var isim:string; i:integer; begin clrscr; gotoxy(30,1); Textbackground(9);Textcolor(3); write(‘isminizi_giriniz:’);readln(isim); for i:=1 to 15 do begin gotoxy(i,i); writeln(isim); end; readln; end.

100 Ekranın iki yanına ismi alt alta 5 kere yazan program. uses crt; var isim:string; i:integer; begin clrscr; writeln(‘isminizi_giriniz:’);readln(isim); for i:=1 to 5 do begin gotoxy(1,i); writeln(‘isim’); gotoxy(70,i); writeln(‘isim’); end; readln; end.

101 Saat programı uses crt; var saat,dakika,saniye,salise:integer; begin clrscr; writeln(‘ ′); saat:=15; for dakika:=58 to 59 do for saniye:=0 to 59 do for salise:=0 to 59 do begin gotoxy(5,10); delay(10); writeln(saat,’:',dakika,’:',saniye,’:',salise,’:'); end; readln; end. İsmi ekrana 3 blok halinde ortalı yazan program. uses crt; var x,y:integer; begin clrscr; for x:=1 to 3 do for y:=1 to 10 do begin gotoxy(30*x-25,2*y); writeln(’sonnur’); end; readln; end.

102 İsmi ekranda yarısında yazmaya başlayan program. uses crt; var x,y:integer; begin clrscr; for x:=1 to 3 do for y:=1 to 5 do begin gotoxy(30*x-25,2*y+14); writeln(‘sonnur’); end; readln; end. İsmi ekranda sekiz bloklu yazan program. uses crt; var x,y:integer; begin clrscr; for x:=1 to 8 do for y:=1 to 10 do begin gotoxy (9*x-3,2*y); writeln(’sonnur’); end; readln; end

103 DİZİLER Aynı tipli elamanları küme haline getirerek bir dizide toplayabiliriz. Bellekte dizinin elemanları arka arkaya sıralanır. Kümenin her elamanı için başka bir değişken tanımlamamız gerekmeyecektir. Tek Boyutlu Diziler Aynı veri tipinde, fakat herbiri birbirinden bağımsız elemanları tek boyutlu dizide saklayabiliriz. Kullanımı,var dizi_değişkeni: array[ilk_indis..son_indis] of elemanların_tipi; Type olarak tanımlamak istersek, type Type olarak tanımlamak istersek, type dizi_ismi= array[ilk_indis..son_indis] of elemanların_tipi; vardizi_değişkeni:dizi_ismi;Örnekler,var a: array[1..50] of integer; (x1,x2,x3,…,x50) b: array[1..50] of string[30]; Type olarak tanımlarsak, type okul= array[1..100] of real; var sinif1, sinif2:okul;

104 ÖRNEKLER ÖRNEKLER Klavyeden girilen 10 sayıyı bir diziye atarak daha sonra otalamasını bulalım, Klavyeden girilen 10 sayıyı bir diziye atarak daha sonra otalamasını bulalım, program dizi1(input, output); var sayilar: array[1..10] of integer; toplam, i: integer; ort: real; begin for i:=1 to 10 do readln(sayilar[i]); toplam:=toplam+sayilar[i];ort:=toplam/10;writeln(ort);readln;end. Klavyeden girilen 10 sayının en büyüğünü bulan programı dizi kullanarak çözelim, Klavyeden girilen 10 sayının en büyüğünü bulan programı dizi kullanarak çözelim, program dizi2(input, output); var sayilar: array[1..10] of integer; enbuyuk, i: integer; begin for i:=1 to 10 do readln(sayilar[i]);enbuyuk:=sayi[1]; for i:=2 to 10 do if enbuyuk

105 Çok Boyutlu Diziler Dizinin bütün elamanlarının birbirleriyle olan benzerliklerinin yanında, bazı elemanlar dizinin elemanlarına bağımlı olabilir. Örneğin bir 10 ürünü içeren listede, o ürününlerin fiyatları ve indirimli fiyatları tutulacaksa, burada iki boyutlu dizi kullanabiliriz. Ürünlerin isimlerinide başka bir dizide tutabiliriz. var tutarlar: aray[1..10, 1..2] of real; şeklinde tanımlanır. Program içinde, tutarlar [1,1] 1. ürünün fiyatı, tutarlar [1,2] 1. ürünün indirimli fiyatı, tutarlar [2,1] 2. ürünün fiyatı, tutarlar [2,2] 2. ürünün indirimli fiyatı,.. tutarlar [10,1] 10.ürünün fiyatı, tutarlar [10,2] 10.ürünün indirimli fiyatı,

106 ÖRNEK 3 ürün için ürünlerin isimlerini ve fiyatlarını klavyeden alarak, daha sonra en fazla indirim yapılan ürünü bularak ekrana basan programı yazalım, program enfazla_indirim; var tutarlar: array[1..3, 1..2] of real; urun: array[1..3] of string[15]; i,j :integer; enfazla: string[15]; yuzde, encokind: real; begin encokind:=0; for i:=1 to 3 do begin Writeln(i,‘. Ürünün adını giriniz:’) readln(urun[i]); for j:= 1 to 2 do begin Textcolor(5);gotoxy(5,j+2);Write(‘Ür ünün’); Textcolor(3);gotoxy(13,j+2);Write(j) ; Textcolor(5);gotoxy(15,j+2);Write(‘. Fiatını giriniz:’); readln(tutarlar[i,j]); End; end; for i:=1 to 3 do begin yuzde:=(tutarlar[i,1]-tutarlar[i,2])*100/tutarlar[i,1]; if encokind

107 uses crt; var x:array[1..100] of real; n,s:shortint; son, tx, txk, tbx: real; begin clrscr; tx:=0;txk:=0;tbx:=0;s:=0; write('N değerini giriniz'); readln(n); for s:=0 to n do Begin Write(s,'. X değerini giriniz =');Readln(x[s]); tx:=tx+x[s]; txk:=tXk+sqr(x[s]); tbx:=tbx+1/x[s]; end; son :=(txk-tx)*tbx/txk; writeln('İşlemin sonucu =',son:8:2); repeat until keypressed; end.

108 Matematik Bölümü 1.sınıf öğrencilerinin Analiz II dersi arasınavı ve final sınavı notları klavyeden girilerek sınav sonuç çizelgesi oluşturulacaktır. Öğrencinin vize ve final notları sırasıyla klavyeden girilecektir. Klavyeden girilen notlar aralığında olması sağlanmalıdır, bu koşul sağlanmıyor ise ilgili not klavyeden tekrar girilmelidir. Notların istenilen aralıkta olmasının sağlanması program tarafından otomatik olarak yapılmalıdır. Geçme notu olarak Ortalama >=60 ve Min(Final)=50 olarak dikkate alınacaktır. Programın çıktısı şu şekilde olacaktır; Öğr. No. Vize Final Ortalama DURUMU BASARILI BASARISIZ

109 program vize_final_ortalamasi; uses crt; Type Notlar=array[1..50,1..50] of byte; dersort=array[1..50] of real; ders=array[1..50] of integer; var osay,dsay,tsay,i,j:byte; ogrort,ogtop:dersort; ort:ders; a:Notlar; cl:string[5]; kl:string; begin clrscr; Write('Dersi Alan Öğrenci sayısını giriniz...=');Readln(osay); for i:=1 to osay do begin for j:=1 to 2 do begin if i<10 then kl:=' ' else kl:=' '; repeat if j=1 then cl:='Vize ' else cl:='Final'; write(kl,i,' numaralı öğrencinin ',cl,' Notunu giriniz = '); Readln(a[i,j]); until (a[i,j]>0) and (a[i,j]<100) end; for i:=1 to osay do begin ogrort[i]:=round(a[i,1]*0.40+a[i,2]*0.60); ort[i]:=trunc(ogrort[i]/1); end; writeln; writeln('™§r. No Vize Final Ortalama DURUMU'); writeln(' '); for i:=1 to osay do begin if i<10 then kl:=' ' else kl:='942000'; if (ort[i]>=50) and (a[i,2]>=50.0) then begin writeln(kl,i,' ',A[i,1]:3,' ',A[i,2]:3,' ',ogrort[i]:6:2,' BAŞARILI'); end else writeln(kl,i,' ',A[i,1]:3,' ',A[i,2]:3,' ',ogrort[i]:6:2,' BAŞARISIZ'); end; Repeat until keypressed; End.

110 PROBLEMLER 1. Girilen 10 sayının en büyüğünü bularak ekrana basan program. 2. Aşağıdaki ürünler ve fiyatları klavyeden girilmektedir. Fiyatı en düşük ürünü bularak ekrana basan programı yazınız. Ürün KoduFiyatı(Xmilyon TL) Aşağıdaki 2 matrisin toplamı olan c matrisini bulan programı yazınız. (İki matrisin toplamı her iki matristeki aynı indis numaralı elemanların toplamlarında oluşan matristir.) 4. Klavyeden 50 öğrencinin isim ve bir dersten aldıkları 3 not bilgisi girilmektedir. Bu öğrencilerin not ortalamalarını bularak, en yüksek ortalamalı oğrenciyi bulan programı yazınız.

111 uses crt ;begin write('ADINIZ:') ;readln; write('SOYADINIZ:') ;readln; write('ANNE ADI:') ;readln; write('BABA ADI:') ;write(") ;readln; write('kimlik bilgileri:'); gotoxy(12,10);textcolor(yellow); ;readln; write('dogdugu yer:') ;readln; write('MERSIN') ;readln; write('kimlik numarasi:') ;readln; write(' ') ;readln; write('Copyright Hüseyin') ;readln; ;begin gotoxy(12,10);textcolor(red); readln; end; end. end. uses crt ;begin write('ADINIZ:') ;readln; write('SOYADINIZ:') ;readln; write('ANNE ADI:') ;readln; write('BABA ADI:') ;write(") ;readln; write('kimlik bilgileri:'); gotoxy(12,10);textcolor(yellow); ;readln; write('dogdugu yer:') ;readln; write('MERSIN') ;readln; write('kimlik numarasi:') ;readln; write(' ') ;readln; write('Copyright Hüseyin') ;readln; ;begin gotoxy(12,10);textcolor(red); readln; end; end. end.

112 uses crt; var sayi,sayi1:longint; function us(x,y:integer):longint; var i:integer; j:longint; begin j:=1; for i:=1 to y do j:=j*x; us:=j; end; Begin Writeln('Tabani giriniz'); readln(sayi); writeln('Ussu giriniz'); readln(sayi1); write('Sonuc: ',us(sayi,sayi1)); readln; End. Tabanı ve üssü girilen üslü sayıyı hesaplar.

113 Girilen sayının faktoriyelini bulan program. uses crt; var sayi:integer; function fak(x:integer):real; var i:integer; s:real; begin s:=1; for i:=1 to x do s:=s*i; fak:=s; end; Begin clrscr; writeln('Faktoriyeli alinacaak sayiyi giriniz'); Readln(sayi);Writeln('Sayinin faktoryeli: ',fak(sayi):10:2); readln; End.

114 Sabit bir metni ekranda kaydıran Pascal programı.Pascal uses crt; var i,j,k,n:integer; a,c:string; Begin clrscr; repeat randomize; n:=random(16); c:='SAKLA SAMANI CURUSUN'; clrscr; gotoxy(30,12);write(c);delay(290); for j:=1 to 20 do for i:=1 to 20 do begin c[i]:=c[i+1]; delay(5); textcolor(n); gotoxy(30,12); write(c); gotoxy(74,24); write('Renk ',n); end; until keypressed; readln; end.

115 Aşağıdaki program, girilen üç kenarın bir üçgen oluşturup oluşturmayacağını, kenarlar üçgen oluşturuyorsa bu üçgenin çeşidini ekrana yazar. uses crt; var k1, k2, k3: integer; begin clrscr; writeln('Üç kenar giriniz'); readln(k1, k2, k3); if (k1 <> k2 - k3) and (k2 <> k1 - k3) and (k3 <> k1 - k2) then begin writeln('Üçgen olur'); if (k1 = k2) and (k2 = k3) and (k1 = k3) then writeln('Eşkenar Üçgen '); if (k1 = k2) or (k1 = k3) or (k2 = k3) then writeln('İkizkenar Üçgen '); if (k1 <> k2) and (k1 <> k3) and (k2 <> k3) then begin writeln('Çeşitkenar Üçgen '); if (sqr(k1) = sqr(k2) + sqr(k3)) or (sqr(k2) = sqr(k1) + sqr(k3)) or (sqr(k3) = sqr(k2) + sqr(k1)) then writeln('çeşitkenar dik üçgen'); end; end else writeln('Üçgen olmaz'); readln; end.

116 7-Döngü Komutları Döngüler programın akışı sırasında tekrarlanması gereken işlemler için kullanılır. Tekrarlama işlemi için bir koşul seçilir ve bu koşul sağlanıncaya kadar tekrarlama işlemi sürer. İç içe birden fazla döngü komutu kullanılabilir. A) FOR - DO: FOR koşul:=başlangıç değeri TO/DOWNTO bitiş değeri DO Begin komutlar End; FOR döngüsünde koşul, başlangıç değeri ve bitiş değeri değişken olabileceği gibi sabit de olabilir. Eğer döngü azalarak işlem yapacaksa DOWNTO, artarak işlem yapacaksa TO ifadesi kullanılmalıdır. Ayrıca, döngü başa döndükçe koşul ifadesi birer birer arttırılacak/azaltılacaktır. Döngü içinde birden fazla komut kullanılacaksa komutlar Begin – End bloğu içine yazılır. DO ifadesinden sonra noktalı virgül kullanılmaz. Eğer noktalı virgül kullanırsanız derleyiciniz bir hata vermez ancak döngünüz hiç işlem yapmaz. Birkaç örnek verelim:

117 FOR i:=0 TO 10 DO i:=i+1; { Döngü, 0 dan 10‘a kadar olan sayıları topluyor } t:=1; FOR k:=5 DOWNTO 1 DO t:=k*t; { k değişkeni birer birer azalıp 5! değerini buluyor } t:=1; k:=100; FOR i:=1 TO 5 DO Begin t:=t+1; k:=k-15; End; { i değeri 1 den 5’e kadar artıyor ve her seferinde } { t değeri 1 artıyor, k değeri 15 azalıyor }

118 FOR i:=0 TO 1000 DO; i:=i+1; { DO ifadesinden sonra noktalı virgül kullanıldığı } { için i değeri 1000 oluncaya kadar döngü 1000 kez } { dönüyor sonra i değerini 1 artıyor ve sonuç } { 1001 oluyor. Aksi halde i değeri 1’den 1000’e } { kadar olan sayıların toplamı olacaktı. } t:=1; FOR i:=0 TO 11 DO Begin t:=i+t; i:=i+5; End; { Bu döngü iki kez dönüyor. İlkinde i değeri sıfır ve } { t değeri 1 olarak işlem yapılıyor, son satırda i } { değeri 5 attırılıyor ancak döngü başa döndüğünde } { i değeri otomatik olarak 1 arttırılıyor ve böylece } { i değeri 6 olarak işlemler yapılıyor. Son satırda i } { değeri 5 attırılıyor ve 11 oluyor. Döngü başa } { döndüğünde i değeri 1 daha attırılıyor ve 12 } { oluyor. Bitiş değeri 11 olduğu için döngü } { işlemini bitirmiş oluyor. }

119 B) REPEAT – UNTIL Repeat Komutlar Until koşul; Döngü, Until ifadesindeki koşul sağlanıncaya kadar tekrarlanacaktır. Repeat- Until bloğu içine birden fazla komut yazılabilir ve Begin-End bloğunu kullanmaya gerek yoktur. For-Do döngüsünden farkı, koşulun artış veya azalış miktarını belirtebilmemizi sağlar. Döngü başa döndükçe koşul değerini otomatik olarak değiştirmez. Örnek verelim; i:=0; t:=0; Repeat i:=i+2; { artış miktarını biz belirtiyoruz } t:=t+i; Until i=100; { 0’dan 100’e kadar olan çift sayıların toplamı } i:=1; k:=1; Repeat i:=i*k; k:=1+k; i:=i+1; Until i=5; { 5! değerini bulan döngü }

120 Karşılaştırma Komutları Program akışında, belirli şartlara göre, farklı işlemler yapabilmek için kullanılır. Yani, hangi durumda hangi işlemlerin gerçekleştirileceğini belirleyebilmemizi sağlayan komutlardır. A) IF - THEN - ELSE: IF koşul1,koşul2.... THEN komutlar [ ELSE komutlar ] Program akışının IF ile THEN arasındaki koşula göre yönlendirilmesini sağlar. Eğer bu koşul sağlanırsa THEN ‘den sonraki kısım işlenir. Aksi halde THEN ‘den sonraki kısım atlanıp ELSE ‘den sonraki bölüm işlenir. Ancak ELSE bloğunu kullanmak zorunda değilsiniz. Daha doğrusu, denetlenen her koşul için ELSE bloğu gerekmeyebilir. IF sayac=0 THEN sayac:=sayac+1; { Eğer sayac değişkeninin değeri sıfırsa bu değişkenin değerini bir attır }

121 IF - THEN – ELSE kullanırken dikkat etmeniz gereken birkaç nokta var. İlki, eğer THEN ‘den sonra birden fazla komut kullanacaksanız bu komutları Begin – End bloğu içinde kullanmalısınız. Aksi halde sadece THEN ‘den sonra gelen ilk komut koşulla birlikte işlenecek, diğer komutlar koşula bağlı olmayacaktır. Aşağıdaki iki örnekteki kodlar aynı olmasına rağmen aynı işi yapmıyor. İlk örnekte, eğer koşul sağlanırsa (sayac değeri sıfıra eşitse) sayac değeri bir attırılıyor ve sira değeri sıfıra eşitleniyor. İkinci örnekte, eğer koşul sağlanırsa sayac değeri bir attırılıyor. Koşul sağlansa da sağlanmasa da sira değeri sıfıra eşitleniyor. IF sayac=0 THEN Begin sayac:=sayac+1; sira:=0; end; IF sayac=0 THEN sayac:=sayac+1; sira:=0;

122 kincisi, eğer ELSE bloğunu da kullanacaksanız THEN ile ELSE arasında kalan son komuttan sonra (bu komuta End de dahildir) noktalı virgül işareti koymamanız gerekli. IF sayac=0 THEN Begin sayac:=sayac+1; sira:=0; end { Noktalı virgül kullanmadık } ELSE Begin Sayac:=1; Sira:=1; End; IF sayac=0 THEN sayac:=sayac+1 { buraya dikkat } ELSE sayac:=1;

123 Koşul olarak tek değişken kullanılacağı gibi birden fazla değişken de kullanılabilir. Denetlenecek değişkenler mantıksal operatörler (and,or,…) yardımıyla sıralanır. IF (sayac=0) AND (sira=0) THEN Begin sayac:=sayac+1; sira:=sira+1; end; { sayac ve sira değişkenlerinin değeri sıfıra eşitse sayac değişkeninin değerini ve sira değişkeninin değerini bir attır. } Birkaç örnek verelim;

124 { Aynı değişken için birden fazla IF kullanabilirsiniz } IF sayi0 THEN tanim:=’Pozitif Sayı’; { İç içe birden fazla IF kullanabilirsiniz } IF sayi<0 THEN tanim:=’Negatif Sayı’ ELSE IF sayi=0 THEN tanim:=’Sıfır’; ELSE tanim:= ’Pozitif Sayı’; { Koşul denetlemesinde birden fazla değişken kullanabilirsiniz } { Bu değişkenleri farklı mantıksal operatörlerle bağlayabilirsiniz } IF (A<B OR A=B) AND (sayi=1) THEN ………………

125 H.KoduMesajAçıklama 1Invalid function numberGeçersiz fonksiyon numarası. Mevcut olmayan DOS fonksiyonu çağırılıyor. 2File not foundReset, Append, Rename veya Erase komutlarıyla belirlenen dosya bulunamıyor. 3Path not foundReset, Append, Rewrite, Rename, Erase, Chdir, Mkdir veya Rmdir komutlarıyla belirtilen path bulunamıyor. 4Too many open fileAynı anda açılan dosya sayısı çok fazla. 5File access error Reset, Append, Rewrite, Rename, Erase, Rmdir komutları kullanıldığında ortaya çıkar. 1.Read Only bir dosya silinmeye çalışılıyor. 2.Directory dolu 3.İsim değiştirilirken var olan bir dosya ismi kullanılıyor 4.Var olan bir directory açılmaya çalışılıyor. 5.İçi boş olmayan veya var olmayan bir directory silinmeye çalışılıyor. 6Invalid file handleGeçersiz bir dosya isteği DOS sistemine iletilmiş. 12Invalid file access codeGeçersiz dosya erişim kodu. Reset veya Append komutlarında geçersiz dosya modu değeri kullanılmış 15Invalid drive numberGetdir komutu ile geçersiz bir sürücü numarası kullanılmamış 16Cannot remove current directoryRmdir komutu ile aktif directory silinmeye çalışılıyor. 17Cannot rename accross driversRename komutu ile aynı sürücüdeki dosyaların ismi değiştirilmeye çalışılıyor. 100Disk read errorRead komutu ile EOF karakterinden sonraki bir kayıt okunmaya çalışılıyor. 101Disk write ErrorClose, write, writeln komutları ile dolu bir diskete işlem yapılıyor. 102File not assignedAssign komutu ile dosya bir temsilci değişkene atanmamış. 103File not openAçılmamış bir dosya üzerinde işlem yapılıyor. 104File not open for input Text dosyası giriş için açık değil. Bu hata, Read, Readln, Eof, Eoln, SeekEof ve SeekEoln komutlarının açık olmayan dosyaya kullanılması esnasında çıkar.

126 105 File not open for output Text dosyası çıkış için açık değil. Bu durumdaki dosyaya write ya da writeln komutlarının kullanımı sırasında ortaya çıkan hatadır. 106Invalid numeric formatText dosyasından read veya readln komutu ile sayısal bir veri okunurken uygun olmayan bir sayısal değer ile karşılaşıldı. 150Disk is write protectDisket yazmaya karşı korumalı 151Unkown unitTanımsız ünite. 152Drive not readyDisket sürücüye takılmamış veya sürücü kolu kapalı.açık olmayan dosyaya kullanılması esnasında çıkar. 154CRC error in dataDiskete kaydedilmemiş datada hata var. Disket yüzeyinde fiziksel hata olabilir. 156Disk seek errorDisketten data okunurken hataya rastlandı. 157Unkown media typeDisket DOS tarafından tanınmıyor. 158Sector not foundDisket bozuk olduğundan data bulunamıyor. 159Printer out of paperPrinter’e kağıt takılmamış. 160Device write faultHardware hatası nedeniyle disket veya hard disk’e kayıt yapılamıyor. 161Device read faultHardware hatası nedeniyle disket veya hard diskten data okunamıyor. 162Hardware failureI/O port’unda arıza tespit edildi. 200Division by zero/, div veya mod operatörleriyle yapılan bölme işleminde sayının sıfıra bölümü oluşmakta. 201Range check error {$R+} compiler bildirisi kullanıldığında bir değişkene sınırları dışında veri girilmekte veya bir dizi değişkenin boyutları sınır dışına kalıyor. 205Floating point overflowTanımlanmış bir real değişkene sınırları dışında atanmaya çalışılıyor.


"Ders İçeriği : Algoritma ve akış diyagramları, Pascal ‘da program yapısı, Giriş/Çıkış komutları, karşılaştırma komutları, döngü komutları, procedure, function," indir ppt

Benzer bir sunumlar


Google Reklamları