25 - Tekil Deikenler, Listeler, Ekleme, kartma Peki,...

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: Tekil Deikenler, Listeler, Ekleme, kartma Peki, yukarda erken davranp yazdmz $ (Dolar) iareti ne anlama geliyor? Bu, Perle bu bu deikenin trn anlatyor. Veriler, ilendikleri srada bilgisayarn belleinde bir yere yazlr. Perl, her veriye belirli bir boyutta bellek alan ayrmak zorundadr. Dolaysyla bir deiken tanmlarken, Perle bu veriye ne kadar yer ayracan belirtebilmek amacyla, deikenin adnn nne koyduumuz iaretle deikenin iinde ne tr bilgi olacan da sylemek zorundayz. Perl iin gerekte bir tr deiken vardr: Scalar. Veya Trke baka kaynaklarda grebileceiniz yaz ekliyle Skalar. Scale, matematikte, bir cetvel (scale) zerinde bir nokta demektir; scalar kelimesi, Unix programlama dillerine matematikten gemi bir terimdir: burada bu kelimeyi tek bana duran, bir nokta, bir adet, tekil gibi anlamak, Perln veri iskeletini kavramay kolaylatrr. Perlde btn deiken trleri, tekil bir veri parac denen Scalar deikenden tretilir. Vildan adl teyzenizi dnn. Tandnz sadece bir teyzeniz var ve onun ad da Vildan. Yani Teyze = Vildan. Peki, bunu Perl terimleriyle yazalm: $teyze = Vildan Benim de bir kardeim var diyelim: Karde = Mustafa. Bunu Perl terimleriyle ifade edelim: $kardes = Mustafa Yani yek bana duran, bir yn veri arasnda tek bana ele aldmz tekil (Scalar) deikenleri Perle adlarnn nne $ iareti koyarak bildiriyoruz. Bu deikenin iine sadece karakter-dizesi (String) deil, say da koyabiliriz. Perl, baka diller gibi verilerinin tr konusunda zorluk kartmaz programcya. Devam edelim: Sizin Vildan Teyzenizle, benim kardeim Mustafa ve asker arkada Kudret hep birlikte, Osmann arkadalar ise, bu Osman asndan nasl bir durum arzeder: Arkadalar = Vildan, Mustafa, Kudret Peki bunu Perle nasl syleyebiliriz? imdi artk Osmann arkadalar tek bana deerler deil, bir liste. Bu kelimeye dikkat edin: Liste. Bylece Scalar deikenden listeye geiyoruz. Liste, veya programclk diliyle Array (Dizilmi deikenler, Dizi), birden fazla deer ierir. Veya ierebilir; ii bo dizi de olabilir Perlde. Bunu, ngilizce adyla at [et okunur] iareti (@) ile yazarz: @arkadas = (Vildan, Mustafa, Kudret) Perl, bu ifadeyi grnce, iinde yesi bulunan bir dizi oluturur; adn arkada2 koyduu bu dizinin iine deer yazar: Vildan, Mustafa ve Kudret. Perl asndan @arkadas dizisinin 1 numaral yesi Vildan mdr, Mustafa mdr? Perln Cden tretildiini ve Cnin gereinden uzun zaman ayn odada ve bilgisayarya babaa kalm kiiler tarafndan retildiini sylemi miydik? Evet, bakaca bir aklama tarz olmayan ekilde, Perl iin 1 numaral ye, Vildan deil, Mustafadr. nk Perl de C gibi, saymaya 0dan balar. Yani 0 numaral arkadas dizisi yesi Vildandr. Mesela Perle u komutu versek: @arkadas = (Vildan, Mustafa, Kudret); print $arkadas[0]; Nasl bir sonu alrz? yle: Vildan Parantezin keli parantez olduuna dikkat edin. Peki print $arkadas[2]; nasl bir sonu verir: Kudret Burada bir gariplik dikkatinizi ekmiyor mu? Array (Dizi) deikenin adnn nne @ iareti koyduumuz halde, yelerinin adlarn tek tek yazdrrken, neden tek bana duran deikenler iin kullandmz $ iaretini kullanyoruz! Tabi, sorumuzun cevab sorunun iinde var. Dizinin iindeki her bir ye, tek bana ele alnd zaman tekil deiken demektir, yani Scalar deiken. Tekil (Scalar) deikenlerin iareti ne? Dolar iareti. Bir dizinin bir yesinin deerini bakan bir deikene almaya, Perl argosunda Sclalar dilim kartmak denir! Sclalar dilimler, Scalar iaretiyle belirtilir. Sclalar dilimin deeri, Diziden bamsz Scalar bir deikene verilebilir mi? Evet. Mesel: $dost = $arkadas[1] Hatta kelime haznesine kran girdii gibi bir durumla kar karya iseniz, u bile olabilir: $arkadas = $arkadas[1] Perl, Sclalar arkadas ile bir Dizinin dilimi olan arkadas[1]i ayrt edebilir. Ama bu elinizle hatay davet etmek olur. (Tekrar: parantezin keli olduuna dikkat.) Dizinin yesini de deitirmek mmkndr. Osman, arkadas dizisinin birinci yesinin Vildan teyzesi deil de baka bir kii olmasn isterse, u komutu verebilir: $arkadas[0] = Tlay Bu durumda arkadas dizisinin yeleri yle sralanr: Tlay, Mustafa, Kudret. Peki, Tlay listenin bana eklemek istiyoruz; fakat Vildan da listede kalsn! Bunu Perln unshift() fonksiyonu ile yapabiliriz: unshift (@arkadas, Tlay); Bu durumda arkadas dizisi Tlay Vildan Mustafa Kudret eklini alr. Tlay deerini dizinin bana deil de sonuna eklemek isterseniz, bunu push() fonksiyonu ile yapabilirsiniz: push (@arkadas, Tulay); imdi diziniz Vildan Mustafa Kudret Tulay eklini ald. ...
View Full Document

This note was uploaded on 02/23/2012 for the course CS CS281 taught by Professor Özgürulusoy during the Winter '12 term at Bilkent University.

Ask a homework question - tutors are online