PASCAL ile Programlamaya Giriş Şartlı ifadeler (If ... Then ... Else) ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Şartlı (koşullu) işlemler Tek şartımız varsa if (şart) then begin : end; if şartı gerçekleştiğinde aşağıdaki begin ... end arasındaki işlemleri yapar, yoksa bir alt satıra geçer. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Şartlı (koşullu) işlemler Şart gerçekleşmiyorsa bir başka işlemi yapması için if ... then ... else yapısı kullanılır. if (şart) then begin : end <--burada “;” kullanılmaz ! Else end; ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
IF .... THEN... yapısı Basit Boolean ifadesi, ilişki gösteren işlemcilerin (relational operator) (=, <, >, <=, >=,< >) doğru (true) veya yanlış (false) olmasıdır. İfade 1 Doğru Boolean ifadesi İfade 2 Boolean ifadeler İfade 2 İfade1 İfade2 i1 ve i2 i1 veya i2 Doğru doğru doğru doğru Doğru yanlış yanlış doğru Yanlış doğru yanlış doğru Yanlış yanlış yanlış yanlış ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Boolean yapısı Basit Boolean işlemciler (relational operator) (=, <, >, <=, >=,< >) = < if a>n then writeln (‘pozitif’) else writeln (‘negatif’); ifade1 ifade2 > <= >= < > if (ifade1) Boolean (ifade2) then işlemler else işlemler ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
If ... Then yapısı Konu: İki sayı alacak, büyük olanı belirleyecek ve yazacak. Program ifthenkullanimi; uses crt; var say1,say2,gec: integer; begin writeln (‘İki sayı gir ve Enter'); read (say1,say2); if say1<say2 then gec:=say1; say1:=say2; say2:=gec; end; writeln; writeln ('Büyük sayı',' ','Küçük Sayı'); writeln (say1:7,' ',say2:7); readln; end. Sayıları al Büyük olanı belirle Ve yaz Burada büyüğü belirlemede geçici sayıya aktarma kullanılabilir. Gecici=sayı1 Sayı1=sayı2 Sayı2=gecici ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
IF .... THEN... yapısı Program Pozitifnegatif; uses wincrt; Başla Program Pozitifnegatif; uses wincrt; var sayi:integer; begin writeln('Bir tamsayı giriniz :'); read (sayi); if sayi >=0 then write ('Sayınız pozititir.'); if sayi <0 then write ('Sayınız negatitir.'); end. sayi Oku Evet Sayi>=0 ? Pozitif yaz Sayi<0 ? Negatif yaz Son ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
If ... Then yapısı – 1 (ifthen3.pas) Program ifthenProgram1; Uses winCrt; Label 1; {goto komutunun gideceği etiket noktası} Var Sel: String; N1,N2, Sonuc : integer; YN : Char; {sadece tek harf alan değişken tipi} Begin 1:Clrscr; Sonuc := 0; {her zaman integer/real değişkenleri sıfırla} GotoXy (4,3); Writeln ('1.Toplama'); GotoXy (4,4); Writeln ('2.Çıkarma'); GotoXy (4,5); Writeln ('3.Çıkış'); GotoXy (6,8); Write ('Seç : '); Sel := Readkey; İki “goto” var. Birisi label ile etiketlenen program noktasına gitmek, diğeri de kursörü ekranın istenen koordinatlarına götürmek. “readkey” bir tuşa basılıncaya kadar programın işleyişini bekletir, sonra basılan tuşa göre işlem yapar. 1/3 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
If ... Then yapısı - 2 2/3 If Sel = '1' {eylem} then Begin {bir program başlıyor} ClrScr; Write ('İlk sayı : '); Readln (N1); Write ('İkinci sayı : '); Readln (N2); Sonuc := N1 + N2; Writeln ('Toplama: ',N1:8,' + ',N2:8,' = ',Sonuc:8); Write ('Devam etmek için bir tuşa bas...'); Readkey; Goto 1; {programın başına götürüyor} End; {if ile başlayan program sonu} If Sel = '2' then {2 basılmış ise alttaki program başlıyor} Begin 2/3 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
If ... Then yapısı 3/3 Write ('İkinci sayı : '); Readln (N2); Sonuc := N1 - N2; Write ('Çıkarma : '); Writeln (N1:8,' - ',N2:8,' = ',Sonuc:8); Write ('Devam etmek için bir tuşa bas...'); Readkey; Goto 1; End; {if cümlesi kapatılıyor} If Sel = '3' then Begin ClrScr; Write ('Emin misin?(E/H)'); YN := Readkey; If YN = 'e' then Halt; {Programı durduruyor, sona gidiyor} If YN = 'h' then Goto 1; {geri başa gidiyor} End; End. “Halt” programı durdurur ve işletim sistemine döner, “exit” o programdan çıkar ve ana programda devam eder. 3/3 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
If ... Then ... Else yapısı then if then then program ifthenelse; uses wincrt; var p:integer; derece: char; begin write ('Puanı giriniz : ');readln (p); if p>=80 then derece:='A' else {79 veya altı } if p>=70 then derece:='B' else {69 veyaaltı } if p>=60 then derece:='C' else {59 veya altı} if p>=50 then derece:='D' else {49 veya altı} derece:='E'; writeln (p,' puanın harf karşılığı ',derece) end. İfade 1 then if Doğru Şart1 İfade 1 Else if Yanlış then Doğru Şart2 İfade 2 Else if then Yanlış Doğru Şart3 İfade 3 Else İfade 4 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
If içinde if (nested if) Şart içinde şart kontrolleri de yapabiliriz. if i<10 then begin writeln('i, 10 dan küçük.'); if j>3 then writeln('j, 3 den büyük.'); end; Boolean ifadeleri kullanarak şartları çeşitlendirebiliriz. if (fiyat>=7000) and (yil>=3) then ... Bazen daha karmaşık şartlar da yazılabilir: if ((i>3) and (j>4)) or (k>5) then ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Case of Çok uzun şartlar arasından seçim yapmak zorunda kalırsak, uzun uzun “if”li cümleler yazmak yerine case ... of komutunu kullanırız. if puan>=80 then derece:='A‘ else {79 veya altı } if puan>=70 then derece:='B' else {69 veyaaltı } if puan>=60 then derece:='C' else {59 veya altı} if puan>=50 then derece:='D' else {49 veya altı} derece:='E'; case puan of 80..100: grade:='A'; 70..79: grade:='B'; 60..69: grade:='C'; 50..59: grade:='D'; else grade:='E'; end; ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Case of Case of, if ... then komutunun sadeleştirilmiş şeklidir. Orada sunulan seçeneklerin hepsinin dışında bir seçeneğe yöneltmek için “case ... of ... else” şekli de kullanılır. Seçenek 1 İşlem 1 Seçenek 2 İşlem 2 Case ... Of .. Seçenek 3 İşlem 3 ........... ................... Seçenek n İşlem n Else ........... ................... Seçenek x İşlem x ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Girdi-Çıktı (input-output) Read – Write (oku-yaz) Program DaireAlanCevre; uses wincrt; const pi=3.14; var r,alan,cevre: real; begin write ('Dairenin yarıçapını giriniz : '); readln (r); alan:= pi*r*r; cevre:= 2*pi*r; writeln ('Dairenin alanı : ', alan:0:2); writeln ('Dairenin çevresi : ',cevre:0:2); end. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Girdi-Çıktı (input-output) Read – Write (oku-yaz) F=(9/5)c+32 formülünü kullanarak celcius (santigrad) sıcaklık derecesini Fahrenheit sıcaklık derecesine çeviren algoritma ve programı yazınız. Bir otomobilde harcanan benzin ve katedilen mesafe bilgileri hazır olduğunda, o ana kadar 100 km’de ortalama kaç litre benzin yaktığını, buna göre kalan benzin ile kaç km gidilebileceğini hesaplayan algoritma ve programı yazınız. Bilgisayarın kullanabileceği en büyük (maxint) sayıyı yazan program: Program enler; uses ctr; Begin writeln (‘Pascalda en büyük tamsayı : ‘,maxint); writeln (‘Pascalda en küçük tamsayı : ‘,-maxint);readln; end. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN