Bedava forum kurmak | ©phpBB | Bedava yardımlaşma forumu | Suistimalı göstermek | Bir bloga sahip olmak
ForumAlem

ForumAlem
 
AnasayfaAnasayfa  SSSSSS  AramaArama  Üye ListesiÜye Listesi  Kullanıcı GruplarıKullanıcı Grupları  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

Paylaş | 
 

 PASCAL DERSLERI 9

Önceki başlık Sonraki başlık Aşağa gitmek 
YazarMesaj
ToPrAk
Admin
Admin
avatar

Mesaj Sayısı : 457
Kayıt tarihi : 05/08/08
Yaş : 28
Nerden : KONYA

MesajKonu: PASCAL DERSLERI 9   Cuma Ağus. 08, 2008 5:57 pm

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:



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
Sayfa başına dön Aşağa gitmek
Kullanıcı profilini gör
 
PASCAL DERSLERI 9
Önceki başlık Sonraki başlık Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ForumAlem :: Programlama Dilleri :: PascaL-
Buraya geçin: