34 - Dngler Kodumuzu irdelemeye devam edersek, karmza kan...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Dngler Kodumuzu irdelemeye devam edersek, karmza kan deyimin bir dng ifadesi olduunu gryoruz. Dng (loop) programcln varolma sebebidir! Herhangi bir programn bir kerede yapt ii nasl olsa herkes elle kendisi yapabilir. Fakat ayn i defalarca tekrar edecekse, bilgisayara ve bilgisayarn bi ii yapmasn salayacak olan programa ihtiya var demektir. Perle bir ii sonulanncaya kadar yaptran, yani baa dnerek, ayn ii yeniden yapmasn salayan bir ka dng deyimi vardr. Bunlar while, next..last, for ve foreach deyimleridir. Bir programn icras srasnda deikenlerin deeri deiebilir. (Bouna deiken demiyoruz, deil mi?) while karlatrma deyimi, tpk yukarda ele aldmz if gibi bir deikenin deerinin belirli bir deere eit kalmas halinde dorudur; ve snama sonucu doru ise sonraki, deilse while blokunu izleyen ilk deyim icra edilir. Bir rnek verelim: $sayac = 0; while($sayac < 10) { print Saya deikenin deeri: $sayac\n; $sayac += 1; } print saya deikeni $sayac oldu!; Burada Perl, $sayacn deeri 10un altnda olduu srece ekrana saya deikeninin deeri: kelimelerini ve deikenin o andaki deerini yazdracak ve deikenin deerini 1 arttracaktr. (Aritmetik ilemlere sonra daha yakndan bakacaz!) while blokunun sonu olan ssl paranteze ulatnda Perl, bu blokun bana dnecek ve verdiimiz koulu yeniden snayacaktr. $sayac deikeni eer hal 10un altnda ise, Perl while deyimini yeniden icra edecek yani ekrana saya deikeninin deeri: kelimelerini ve deikenin o andaki deerini yeniden yazdracak ve deikenin deerini 1 arttracaktr. Ta ki, snama sonucu $sayac deikeninin deerinin 10 olduunu gsterinceye kadar. Perl bunu belirledii anda while blokunun dna kacak ve son deyimi icra edecektir. Bu arada, while() fonksiyonu ile dngnn yazlna dikkat edin: dng bloku, yani while() iin ileri srdnz koulu ieren parantez kapandktan sonraki blm, ssl parantez iinde ve bu bloku kapatan ssl parantezden sonra noktal virgl yok. while blokunda sonsuz-dng denen hataya dmek ok kolaydr. Perl, bir trl gereklemeyen while koulu ile karlat zaman sonsuza kadar bu blokun iinde kalr. Bu durumda ne olur? Yukardaki kodda u deiiklii yapn ve sonucu grn: $sayac = 0; Dikkat! Bu sonsuz-dngden kmann tek yolu, Browser kapatmaktr! while ne kadar kullanl olursa olsun, bir programda karlaabileceimiz her trl koulu snamaya yetmez. onun eksik brakt durumlar, for ve foreach ile karlayabiliriz. for deyimi snadnz koul gerekleinceye kadar devam eder. Yukardaki saya rneini for iin yazalm: for ($sayac = 0 ; $sayac < 10 $sayac += 1) { print Saya deikeni: $sayac; } print Saya deikeni: $sayac oldu!; Bu kodun yapt ilem yukardaki while ile ayn olduu iin for deyiminin ne kadar kullanl olduu grlemeyebilir. Fakat aadaki kodu Not Defteri ile yazar ve mesela hex.pl adyla kaydederek, altrrsanz; 255e kadar ondalk saylar 16 tabanl say sistemine (Heksadesimal) evirebilirsiniz. (imdilik ele almadmz fonksiyonlara ve deyimlere aldrmayn!) #!/usr/local/bin/perl #hex.pl print "HTTP/1.0 200 OK\n"; print "Content-Type: text/html\n\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>HEX</TITLE>\n"; print "<meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-9\">\n"; print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1254\">\n"; print "</HEAD>\n"; print "<BODY>\n"; print "<H4>Desimal - Heksadesimal evirmeni</H4>\n"; @Heksadesimal = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); for($i = 0; $i <= 255; $i++) { print sprintf("%3s", $i), "=", $Heksadesimal[int($i / 16)], $Heksadesimal[$i % 16], " "; if(($i % 8) == 7) { print "\n" } print "<br>\n"; } print "</BODY>\n"; print "</HEAD>\n"; print "</HTML>\n"; ...
View Full Document

Ask a homework question - tutors are online