You are on page 1of 3

DELPHI'DE ARTLI ALIMA VE BLOK KONTROL LEMLER

IF THEN KONTOL DEYM= stenilen artn ger eklemesiyle, arta bal olan kodlar iletilir. Ne dediimi imdi anlarsnz :) If-then deyiminin kalb yledir. If art Then begin . . end else //-> uanlk kullanmayacaz. begin . . end; rnek: Yazdmz programda bir butona tklanldnda daha n ce vediimiz ifrenin doru olup olmadn sylesin. ifre abc12 3 olsun. Buton'umuz iin yukarda bulanan Standart sekmesinde OK yazan dikdrtgen eklindeki butona tklayn ve daha sonra baka hi bir yere tklamadan direk formun zerine tklayn. Formun zerinde bir buton olutuunu grecek siniz. Bu butonun zerine ift tklayn, ve nnze kod pencer es i gelecektir. procedure TForm1.Button 1Click(Sender: TObject) ; //-> Buton1 tklanldnda buna ait olan kodlar ala cak. begin //-> Kodlarn yazlmas iin bunun yazlmas arttr . Kodlarn artk baladn belirtir. end; //-> Buna en yakn begin hangisiyse, o begin ile buradaki end arasndaki kodlar son bulmu anmana gelir. Begin gibi bunun da yazlmas gerekir. end. //-> Buradaki end' le bundan n ceki end' i kartrmayn. Buradaki end ise programn tamamiyle son bulduunu anlatr. Ve dolayl olarakta projede sadece ve sadece 1 kez ve en sonda olarak kullanlr. Birisinin sonu ";" ile birisinin sonuda "." ile biter. procedure TForm1.Button 1Click(Sender: TObject) ; begin //-> Balyoruz. If Edit1.T ext=' abc12 3' then //-> Eer ki Edit1'in iinde abc12 3 kelimesi yazyorsa (veya iideki abc12 3' yazsna eitse) bunlar ile... ShowMes sage('ifre Doru' ); //-> ifre doruysa ekranmza ifre Doru diye bir mesaj kartacak. end; //-> Button1 tklanldnda yapaca grevler bylece bitiyor. end. //-> Program sonu. Birde if-then kontrol'ne ek olarak bir deyim daha kullanlr bu da else 'dir anlam: deilse? Sart ger eklemez ise? procedure TForm1.Button 1Click(Sender: TObject) ; begin //-> Balyoruz. If Edit1.T ext=' abc12 3' then //-> Eer ki Edit1'in iinde abc12 3 kelimesi yazyorsa bunlar ile... ShowMes sage('ifre Doru' ) //-> ifre doruysa ekranmza ifre Doru diye bir mesaj kartacak. else -> //-> Ya edit' in iinde abc12 3 yazmyorsa? ShowMes sage('ifre Yanl' ); //-> Bu sefer ifre Yanl diye bir mesaj karmza gelecek. end; //-> Button1 tklanldnda yapaca grevler bylece bitiyor. end. //-> Program sonu. Burada dikkat etmemiz gereken birka nokta var onlara deyineyim. Her kod satrn n sonuna ; gelmelidir. Bunun anlam o satrdaki kodun artk sona erdiini ve dolayl olarak bundan sonraki kodun ileyeceini belirtir. Siz imdi diyeceksiniz ki programa els e eklediiniz zaman ShowMessage('ifre Doru'); buradaki ; kalkt niye? Bunun anlam demitik ; o satrdaki kodlar bitirir. Ama aslnda burada kodlar bitmiyor halen devam ediyor. yani else If Edit1.T ext=' abc12 3' then komutunun bir par as ve ondan n ce bir ; gelirse bu onun ileyiini engelleyecektir. Bu da onun anlamsz yere yazld anlama gelecektir, ve program hata verektir. Deyinmek istediim baka bir konu ise Edit1.T ext='abc12 3 ' burada abc12 3 ' n bana ve sonuna niye '(trnak) iareti geldiidir. Bunun sebebi abc12 3 bir string' dir yani bir karekter katardr. Mesela oraya ' 123' yazsaydnz bu bir rakam deil sadece yaz olcakt eer ki sadece 12 3

yazsaydnz rakam ola cakt. Niye byle olmak zorunda olduunu sora cak olursanz belli bir zaman getikten sonra, bunu sizde olmazsa olmaz olarak kabul edeceksiniz. imdi gelelim bir sonraki blok-kontrol deyimine... CASE OF DEYM= Her eyi ile if-then deyimine benzemektedir. Baz zamanlarda if-then'den daha pratiktir. ie gemi bir if-then deyimleri gibidir. Fakat pratik olmasnn sebebi defalarca if-then deyimini yazmak yerine bir tek komutla hepsini birden kontol etmei salamaktadr. Kalbn yazmadm aadaki rnekte ak a belli. rnek: Bu programda ise bir butona tkladmzda edit1' de yazdmz notumuzu, bizim zayf orta gibi durumumuzu syleyen bir mesaj kars n... procedure TForm1.Button 1Click(Sender: TObject) ; var //-> Deiken yazmak iin kullanr. Bu koddan sonra deikenler atanmaya balar. notum : integer; //-> notum isminde bir tamsay(integer ) deikeni atyoruz. Sadece iirisinde say tutabilir. Bu deikenleri Deiik branlardaki retmenler gibi dne bilirsiniz. Hepside farkl farkl iler yapar. Ve biz ona gre onun dersinden faydalanrz. Mesela yukarda bir string' den bahsetmitim, bu da bir deikendir ve ierisinde yaz katarlar tutabilir. Ne istiyorsak ona gre deikenimizi doru belirlemeliyiz. Aksi taktirde program abuk sabuk ilemler yapar veya hata verip almaz bile. Neyse konuya dnelim. begin //-> Bayoruz. notum:=strtoint(Edit1.Text) ; //-> te buras ok nemli buradaki notum'un sadece rakamlar tutabileceini renmitik. Fakat edit' in iinde hi bir zaman rakam deil yaz vardr. Edit iine yazdnz rakamlar rakam gibi gzksede aslnda onlar bir rakam deildir daha n ce dediim gibi onlar bir string(karakter katar)dir. te bundan dolay notum bir rakam edit1.t ext(edit' in iindeki yaz) bir yazdr . Bundan dolay Edit1.t ext' in iinde yeralan rakamlar gerektende birer rakam yapmamz gerekiyor. Yukarda olduu gibi Edit1.t ext'i iki parantez iine almak zorundayz () . Ve daha sonra bunu strtoint ile string' den integer e evirmeliyiz. Yani yazdan rakama. Zaten ad zerinde String to Integer, StrToInt olmu. Bunu tam tersi ise IntToStr' dir. Peki bu ne demektir dnn bakalm? Sonu olarak birini birine mutlaka benzetmeliyiz aksi takdirde elma ile armut toplanmaz. Program gereyi yazdan karaktere dtrmek zorundayz. Case notum of //-> notum deikeni attakilerden hangisine eitse onu yap. 0..44: Showmessage(' Zayf Not Aldnz' ) ; //-> Eer Edit'de 0 ile 44 aras bir rakam girilmise Zayf not aldnz diye bir mesaj kutusu kar . Dierleride ayns. 45..59 : Showmes sage('Baars z Not Aldnz' ) ; 60..69: Showmessage('Orta Not Aldnz' ) ; 70..84: Showmessage(' yi Not Aldnz' ) ; 85..100: Showmessage(' Pekiyi Aldnz tebrikler!' ) ; else Showmes sage('Ltfen 0 ile 100 aras bir not girin' ); //-> Eerki girdiiniz say 0 ile 100 aras deilse bu mesaj kartyor. Zaten 0 ile 100 aras bir rakam olsayd oktan yukardakilerden biridi uygulamt. end; //-> Case-of deyimini sonlandryor. end; //-> Buton Basldnda yapacak olduu iler artk bitti. lk bataki begin ile en sondaki end; i yazmanza gerek yok zaten Delphi onlar kendisi koyar. Yukarda anlattm gibi, eer Case-of kullanmasaydk her durum iin yani 0 ile 44, 45 ile 59 vs.. farkl farl diyecektik ki unla unun arasndaysa unlar yap, unla unun arasndaysa unlar yap gibi bir ok if-then deyimi kullanacaktr. Balangta pratik dememin sebebi buydu. rnekte maksimum ve minumum saylar yanl olabilir nk %85' inde yazllardan 5 alyorum da :) sylemesi ayp. :) Neyse bir sonda ki... FOR TO DO DNGS= erisindeki komutlar istenilene gre tekrar tekrar iler. For-to-Do dngs kalp olarak yle kullanlr. For balang deeri to biti deeri Do Begin . . end; rnek: Program yazamaya balamadan n ce yukardaki Standart s ekmesinden ListBox(Liste kutusu) isimli bileeni formun zerine yerletirin. Bu arada btn rneklerimizde bir tana buton kullanyoruz. Her zamanki gibi onuda koymay unutmayn. Bu programla verilen saylar arasndaki saylar ListBox'a ekleyeceiz .

procedure TForm1.Button 1Click(Sender: TObject) ; var ilkdeger : integer ; //-> Tam say deikenimiz. begin //-> Balyoruz. For ilkdeger :=1 to 20 do //-> 1' de balayarak bu komutlar 20 kere tekrarla eer i'ye 5 verseydik 5'den balayacakt yani bu olay 15 kere tekrarlayacakt. Burada bilmeniz gerek nemli bir husus daha var fakat bunu biraz sonra aklayaym. begin //-> Dngnn balangc. ListBox1.I tems.Add(inttostr(ilkdeger)) ; -> Burayla uzun bir sre ilgileneyim. Bu komut "ilkdeger" integer' n her seferinde her seferinde listbox(liste)a ekliyor. peki bu nasl oluyor. imdi programn en bana dnelim for-to-do dngsnn balag deerini 1 olarak atamtk. ve progarmmz geldi geldi geldi. lk deerimiz o anlk 1' di ve Listbox'a 1' i yazd. Daha sonra dng tekrar baa dnd bu sefer balangc (bir anlamda saya deniliyor, counter) 1 arttd ve sayacmz 2 oldu ve geldi geldi geldi Bu sefer sayac yani ilkdeger 1 arttr lp 2 olduu iin Listbox'a bu sefer 2 eklendi. Bu byle devam edecek . Fakat nereye kadar? Tabiki 20'ye kadar nk dngnn biti noktasn 20 olarak daha nce belirlemitik. Sonu olarak program Listbox'a 1' den 20'ye kadar sralayacak. end; //-> For-to-Do dngs sona eriyor. end; //-> Button1 tklanldnda yapaca grevler bylece bitiyor. end. //-> Program sonu. Birde if-then dngsndeki else gibi for-to-do 'nun bir bir de break diye bir deyimi vardr. Bunu da Dngy n ceden neler yapacan ne kadar devam edeceini belirtiyorduk, bu komut ile istenilen zamanda daha dnnn ii bitmeden dngden k labilinir. Mesela dngnn iine bir if-then art koyarsnz eer dng ilenirken bu arta uyulduu grldyse ve if-then artnn iinde de break komutu yer alyorsa o arta bal olarak dng ierisinden klm olur. Baka bir konu ise For ilkdeger :=1 to 20 do 'da ortada bulunan to eer downto olarak deitirilirse bu sefer geriye doru saym yaplr . Mesela bu sefer 100' de 20'ye kadar sayar. Yani dng 80 kere dnm olur. Gelelim bir sonraki dngye... WHILE DO DNGS= Bu dng aslnda For-to-Do dngsnn tpatp aynsdr. Tek fark while-do dngsnde n ceden bir balang veya biti boktas gibi kstlamalar yoktur. Yani bu dngnn ierisindeki art ger eklemediyi srece dng sonsuza kadar srecektir. Kalb yledir. While koul1 do begin . . if koul2 then Break; //-> Yukarda anlald gibi, koul2 gereklemedike dng devaml dnecektir. end; SON NOTLAR: Eer bu bilgilerle size yardmc olabilmisem ne mutlu bana. Eer Delphi konusunda ok yeniyseniz, Ve baz sorunlarnz varsa bana aytekin@altavista.com adresinden ulaabilirsiniz. Kendinize iyi bakn. Bu text herhangi bir kaynaa baklmadan Aytekin tarafndan yazlmtr .

You might also like