GiRİŞ Perl Komutları Nasıl Yazılır?



Yüklə 0,83 Mb.
səhifə2/7
tarix02.11.2017
ölçüsü0,83 Mb.
#26951
növüYazı
1   2   3   4   5   6   7

Alt ifadelerle Kullanım :

($a = $b) += 3;

bu örnekte işleyiş şöyledir. Önce parantez içi işlenir. Bu durumda $a = $b; ve $a += 3; işlemleri yapılır

Otomatik Arttırma ve eksiltme:

$a = $a + 1;

$a += 1;

Her iki örnekte de $a değeri 1 artırılmaktadır. $a değerini otomatik arttırma kullanımı ise şöyledir

$a++; veya ++$a;

1. ve 2. ifadedeki fark şudur. 1.de arttırma işlemi atama işleminden önce 2. de sonra yapılmasını belirler. Otomatik eksiltmede buna benzer.Aynı mantıkla çalışır. Sadece işlem eksiltme şeklinde gerçekleşir.

$a--; veya --$a;

Örnek program : Program adı preprg.pl olsun

#!/usr/local/bin/perl
$sayi = 0;
while (++$sayi <= 5) {
print("Deger: $sayi\n");
}
print("Son !\n");

Çalışması :

>preprg.pl
Deger: 1
Deger: 2
Deger: 3
Deger: 4
Deger: 5
Son !
>

Örnek program : Program adı preprg2.pl olsun

#!/usr/local/bin/perl
$sayi = 0;
while ($sayi++ <= 5) {
print(" Deger: $sayi\n");
}
print("Son !\n");

Çalışması :

>prepprg2.pl
Deger: 1
Deger: 2
Deger: 3
Deger: 4
Deger: 5
Deger: 6
Son !
>

Bu örneğin çalışmasını anlamak için şu tabloyu inceleyelim.



$valueTest anında

Sonuç

$value Testten sonra

0

true (0 <= 5)

1

1

true (1 <= 5)

2

2

true (2 <= 5)

3

3

true (3 <= 5)

4

4

true (4 <= 5)

5

5

true (5 <= 5)

6

6

false (6 <= 5)

7 (while döngüsü çıkışı)

STRiNGLERDE OTOMATİK ARTTIRMA

$string1 = "abc";


$string1++;

Şu anda $string1 içindeki değer "abd" dir.

Stringlerde otomatik eksiltme olmaz ($string1--). Böyle bir durumda string içindeki değer -1 olur.

$string1 = "aBC";


$string1++;

Şu anda $string1 içindeki değer "aBD" dir.

$string1 = "abz";
$string1++; # $string1 içi "aca" dır.

$string1 = "AGZZZ";


$string1++; # $string1 içi "AHAAA" dır.

$string1 = "bc999";


$string1++; # $string1 içi "bd000" dır

STRİNG BİRLEŞTİRME VE TEKRARLAMA:

  1. . operatorü, string birleştirir .

  2. x operatorü, string tekrarlar.

  3. .= operatorü, string birleştirir ve atama yapar.

Birleştirme :

$yenistring = "tas" . "kafa";

satırı sonucu olarak $newstring değişkeninin içeriği "taskafa" olur.

. operatörü değişkenlerle de kullanılır. Örn:

$string1 = "tas";
$string2 = "kafa";
$yenistring = $string1 . $string2;

$yenistring değişkeninin içeriği " taskafa " olur.

Tekrarlama:

$yenistring = "t" x 5;

$yenistring değişkeninin içeriği "ttttt" olur.

x operatörü değişkenlerle de kullanılır. Ör:

$string1 = "t";
$tekrar = 5;
$yenistring = $string1 x $tekrar;

$yenistring değişkeninin içeriği "ttttt" olur.

x operatörü kullanırken x etrafında boşluk bulunmalıdır.

$yeni = $eski x 5; #Doğru kullanım


$yeni = $eskix 5; # Yanlış "
$yeni = $eski x5; # Yanlış "

BİRLEŞTİRME ve ATAMA:

$a = "Ata";


$a .= "türk"; # $a nın değeri şimdi "Atatürk" dir.

Aşağıdaki kullanımda aynı sonucu verir.

$a = "Ata";
$a = $a . "türk";

Örnek Program : Program adı strcon.pl olsun

#!/usr/local/bin/perl
$sonuc = "";
print("Kelimeler giriniz çıkış için sadece enter basınız\n");
$gir = ;
chop ($gir);
while ($gir ne "") {
$sonuc .= $gir;
$gir = ;
chop ($gir);
}
print ("Girilen kelimeler:\n");
print ("$sonuc \n");

Çalısması:

>strcon.pl
Kelimeler giriniz çıkış için sadece enter basınız
ben
sen
o
Girilen kelimeler: benseno
>

DİĞER OPERATÖRLER:

, (virgül) operatörü; ifadeyi parçalara ayırır. Ör:

$a1 += 1;
$a2 = $a1;

satırları virgül kullanımı ile şu şekilde kodlanır,

$a1 += 1, $a2 = $a1;

, operatörü atama işlemlerinde sıkça kullanılır, Ör:

$val = 26;
$result = (++$val, $val + 5);

ilkönce ++$val işlenir çünki virgülden öncedir $val,27 olur. Sonra 5 eklenir 32 olur bu değer,$result 'e atanır.



ŞART(Koşul) operatörleri:

Bunlar ? ve : operatörleridir. Ör:

$sonuc = $a == 0 ? 14 : 7;

çalışmasını inceleyerek anlayalım;eğer $a == 0 ise , $sonuc değişkenine 14 atanır, değilse 7 atanır.Yani koşul doğru ise ? sonrası, yanlış ise : sonrası atanır.,eğer bu işlemi if else ile yapmak isteseydik şöyle kodlayacaktık.

if ($a == 0) {
$sonuc = 14;
} else {
$sonuc = 7;
}

Bir de şunu inceleyelim;

$kosul == 43 ? $a1 : $a2 = 14;

Buradaki işleyiş ise şöyledir; Eğer $kosul içindeki değer 43 ise, $a1 'e 14 atanır. Değilse $a2'ye 14 atanır..

Örnek Program : program adı pwdprg.pl olsun

#!/usr/local/bin/perl


print ("Parola giriniz:\n");
$parola = "ertan";
$giris = ;
chop ($giris);
$sonuc = $giris eq $parola ? "Dogru parola!\n" : "Yanlis parola.\n";
print ($sonuc);

Çalışması:

>pwdprg.pl
Parola giriniz:
abc
Yanlis parola.

>

Koşul ve Kontrol Deyimleri -- Dallanma ve Yönlendirme



1. if Deyimi :

if ($sayı) {


print ("Sayı sıfır değil..\n");

}

Yukarda bir if deyimli perl program parçası görüyorsunuz. if deyimi yanında () parentez içersindeki değer veya değişken sınanır.Parantezler arası bu kısım şart ifadesidir (Örneğimizde ($sayı). Bu ifadenin içerdiği sonuç doğru ise oklu parentezler (Blokbaşı ve sonunu ifade eder ki kullanılması şarttır) içerisindeki kısım blok olarak icra edilir. Sonuç yanlış ise Blok dışına geçilir. Sonucun doğru(true)olması demek parentez içi değerin 0 olmaması demektir. Değer 0 ise sonuçyanlıştır (false).



Örnek Program : Program adı ifprg.pl olsun

#!/usr/local/bin/perl


print ("Bir sayı giriniz:\n");
$sayi = ; #Program calıştığında burada 7 girelim
chop ($sayi);
if ($sayi) {
print ("Girilen sayı sıfır değil.\n");
}
print ("Program sonu...\n");

Çalışması:

>ifprg
>Bir sayı giriniz:
>7
>Girilen sayı sıfır değil.
>Program sonu...

if deyiminin koşul ifadesi kısmında karşılaştırmalarda yapılır.Örnek :

if ($sayi == 5)
{
....
}

Yukarıdaki ifadede $sayı değişkenindeki değerin 5'e eşit olup olmadığı sınanmaktadır. == göstergesi eşitlik anlamındadır. Buna benzer şekilde büyük ve küçüklük sınamaları da yapılır. Ör:

if ( $sayi > 5 ) ..

Bu kullanımda sınama sonucu ne ise ona göre işlem yapılır.

Örneğin, sonuç doğru ise oklu parantez içindeki blok icra edilir. Aksi takdirde doğrudan blok dışına atlanır.

Örnek program : Program adı ifprg2.pl olsun,

#!/usr/local/bin/perl
print ("Sayı gir:\n");
$sayi1 = ;
chop ($sayi );
print ("Başka bir sayı gir:\n");
$sayi2 = ;
chop ($sayi2);
if ($sayi1 == $sayi2) {
print ("Girilen iki sayı eşit.\n");
}
print ("Program sonu.\n");

Çalışması :

>ifprg2
>Sayı gir:
>17
>Başka bir sayı gir:
>17
>Girilen iki sayı eşit.
>Program sonu.

IF ve ELSE kullanarak dallanma:

Genel format :

if (koşul)

{

Koşul doğruysa icra edilen kısım;



}

else{


Koşul yanlışsa icra edilen kısım;

}

Örnek program : program adı ifprg3.pl olsun



#!/usr/local/bin/perl
print ("Bir sayı giriniz:\n");
$sayi1 = ;
chop ($sayi1);
print ("Baska bir sayı giriniz:\n");
$sayi2 = ;
chop ($sayi2);
if ($sayi1 == $sayi2)
{
print ("Iki sayı eşittir.\n");
}
else
{
print ("Iki sayı eşit değildir.\n");
}
print ("Program sonu.\n");

Çalışması ;

>ifprg3
>Bir sayı giriniz:
>17
>Baska bir sayı giriniz:
>18
>Iki sayı eşit değildir.
>Program sonu.
>

ÇOKLU DALLANMA if-elsif-else kullanımı:

Genel Formatı :

if (koşul1)
{
koşul1 dogru ise icra edilir
}
elsif (koşul2)
{
koşul2 dogru ise icra edilir
}
elsif (koşul3)
{
koşul3 dogru ise icra edilir
...
}

else
{


Hiçbir koşul doğu değil ise icra edilir
}

Örnek program: Program adı ifprg4.pl olsun

#!/usr/local/bin/perl
print ("Bir sayı giriniz:\n");
$sayi1 = ;
chop ($sayi1);
print ("Baska bir sayı giriniz:\n");
$sayi2 = ;
chop ($sayi2);
if ($sayi1 == $sayi2) {
print ("Sayılar eşit.\n");
} elsif ($sayi1 == $sayi2 + 1) {
print ("Birinci sayi 1 buyuk.\n");
} elsif ($sayi1 + 1 == $sayi2) {
print ("Ikinci sayi 1 buyuk.\n");
} else {
print ("Sayilar eşit değil.\n");
}
print ("Program sonu.\n");

Çalışması:

>ifprg4
>Bir sayı giriniz:
>17
>Baska bir sayı giriniz:
>18
>Ikinci sayi 1 buyuk.
>Program sonu.
>

Tek satırlı şart ifadesi

Daha evvel if ifadesini şöyle kullanmıştık,

if ($var == 0) {
print ("Bu sıfırdır.\n");
}

Bu ifadeyi tek satırda gösterme özelliği de vardır.

print ("Bu sıfırdır.\n") if ($var == 0);

her iki örnekte aynı işleve sahiptir.Bu biçim unless,until,while gibi şart ifadelerinde de kullanılır. Ör:

print ("Bu sıfırdır.\n") unless ($var != 0);
print ("Henüz sıfır değil.\n") while ($var-- > 0);
print ("Henüz sıfır değil.\n") until ($var-- == 0);

Tek satırlı komut kullanımlarında özellikle döngü değeri artış ifadelerinde hata yapma ihtimali olduğundan bu tip ifadeler de dikkatli kullanılmalıdır. Örneğin,

$count = 1;
print ("$say\n") while ($say++ < 5);

ifadelerinde ekrana basılan ilk değer 2 dir.1 değildir. v.b.... Örnek program : Adı:whprg1.pl olsun

#!/usr/local/bin/perl
$say = 0;
print ("$say\n") while ($say++ < 5);

Çalışması :

>whprg1.pl
1
2
3
4
5
>

FOR DÖNGÜSÜ KULLANIMI

For döngüsü kullanımını bildiğiniz bir döngü çeşididir. Genel format:

for (ilk değer ataması; koşul; sayac arttırma) {
komut satırları bloğu
}

Örnekle inceleyelim program adı forprg1.pl olsun

Çalışması :

#!/usr/local/bin/perl


for ($sayi=1; $sayi <= 5; $sayi++) {
print ("$sayi\n");
}
# 1.ilk değer atanır
# 5 ten kucuk veye eşit mi? sorusunun cevabı evet ise döngüye girilir
# sayı yazdırılır
# sayac 1 arttırılır ve tekrar koşul sınanır.
# koşul sonucu evet ise işlem bir önceki gibi devam eder,hayır ise döngü dışına çıkılır.

For dögülerinde bazen her bir değer artışından(döngü sayacı) evvel birden fazla komut uygulamak gerekebilir. Bu durumda for döngüsünde , (virgül) kullanılır. Örneğin aşağıdaki program parçasını inceleyelim ve aynı işlemleri for ile nasıl kullandığımızı görelim.

$satir = ;
$say = 1;
while ($say <= 3) {
print (satir);
satir = ;
$say++;
}

Bu satırlarla yapılanı for ile gerçekleştiren programın kodu aşağıdadır.

#!/usr/local/bin/perl
for ($satir = , $say = 1; $say <= 3;
$satir = , $say++) {
print ($satir);
}

FOREACH döngüsü ---- Liste ve Dizi elemanlarını okuma

Genel formatı:

foreach localdeğişken (liste-dizi) {
deyimler grubu;
}

foreach dizilerden kolaylıkla eleman almak amacıyla kullanılan, perl'e has bir zenginliktir. Diziden liste elemanı local değişkene atanır.Her dönüşte sıradaki liste elemanı alınır. Bu deyim programlarda çok kullanılır.Örnek program : Program adı forprg2.pl olsun

#!/usr/local/bin/perl
@words = ("Bu", "bir", "liste", "dir.");
foreach $word (@words) {
print ("$word\n");
}

Çalışması:

>forprg2.pl

Bu
bir


liste
dir.
>

Bir başka örnek program : forprg3.pl program ekrandan girilen satırdaki kelimeleri sıralar ve ters sıraya sokar ve basar.

#!/usr/local/bin/perl
$line = ;
$line =~ s/^\s+//;
$line =~ s/\s+$//;
foreach $word (reverse sort split(/[\t ]+/, $line)) {
print ("$word ");
}
print ("\n");

Çalışması:

>
test icin bir satir girdim
test satir icin girdim bir
>

Çalışmanın Açıklaması:Önce split ile satirdaki kelimeler bölünür.

("test", "icin", "bir", "satir" , "girdim")

sonra bunlar sıralanır.(hazır fonksiyon olan sort ile) sıralama sonucu listenin durumu:

("bir", "girdim" , "icin", "satir" , "test")

Bir sonraki aşama da liste ters sırada sıralanır.(reverse hazır fonk.) listenin son durumu: ("test", "satir" , "icin", "girdim" , "bir") olur. Bu durumdaki liste ekrana basılır.



DO DEYİMİ:

genel format:

do{
deyimler bloğu
} while_veya_until (şart_ifadesi);

biçimindedir.

Örnek kullanım:

do {
$line = ;


} while ($line ne "");

satır sonu değilse döngü devam eder. Aynı sonucu aşağıdaki kodlama da verir.

do {
$line = ;
} until ($line eq "");

Buradaki şart ifadesinde ise satır içeriği boş olana(giriş yok) kadar döngüyü uygular. Örnek program : doprg.pl

#!/usr/local/bin/perl
$sayac = 1;
do {
print ("$sayac\n");

$sayac++;


} until ($sayac > 5);

>doprg.pl


1
2
3
4
5
>

LAST deyimi:Döngüden çıkışı sağlar.

Örnek program: lastprg.pl

#!/usr/local/bin/perl
$toplam = 0;
while (1) {
$satir = ;
if ($satir eq "") {
last;
}
chop ($satir);
@sayilar = split (/[\t ]+/, $satir);
foreach $sayi (@sayilar) {
if ($$sayi =~ /[^0-9]/) {
print STDERR ("$sayi sayi degil\n");
}
$toplam += $sayi;
}
}
print ("Toplam: $toplam.\n");

Çalışması:

>lastprg.pl
4 5 7
2 11 6
^D
Toplam: 35.
>

NEXT deyimi : Döngüde, Bir sonraki dönüşe atlatır.

Örnek Program: nex.pl

#!/usr/local/bin/perl
print ("Toplam için son sınır sayısını gir:\n");
$limit = ;
chop ($limit);
$say = 1;
$toplam = $cifttoplam = 0;
for ($say = 1; $say <= $limit; $say++) {
$toplam += $say;
if ($say % 2 == 1) {
# sayı tek ise sonraki dönüşe atla
next;
}
$cifttoplam += $say;
}
print(" 1 den $limit ye kadar olan sayıların toplamı: $toplam\n");
print("Bu sınırdaki çift sayıların toplamı ise: $cifttoplam\n");

Çalışması:

>nex.pl
Toplam için son sınır sayısını gir:
7
1 den 7 ye kadar olan sayıların toplamı: 28
Bu sınırdaki çift sayıların toplamı ise: 12
>

Bir başka next örneği içeren program: nex2.pl. Bir kelime sayma programıdır.

#!/usr/local/bin/perl
$toplam = 0;
while ($satir = ) # kelime girişi yap, ctrl+d ye basılırsa döngüden çıkılır
{
$satir =~ s/^[\t ]*//; # baştaki boşluk ve tabları at
$satir =~ s/[\t ]*\n$//; # sondaki boşluk,tab ve \n karakterlerini(yeni satır) at
next if ($satir eq ""); #satır boşsa sonraki dönüşe atla
@kelimeler = split(/[\t ]+/, $satir); # kelimeleri aralarındaki
# boşluk ve tab'lardan
# ayırarak diziye yerleştir
$toplam += @kelimeler; # dizi boyutundan elde edilen eleman (kelime)
# sayısı değerini tut
}
print ("Toplam kelime sayısı: $toplam\n");

Çalışması:

>nex2.pl
Bir kac kelime girelim
program kelime sayısını versin.
^D
Toplam kelime sayısı: 8

REDO DEYİMİ : Döngüdeki bir dönüşü yeniden başlat

Örnek programla inceleyelim. redoprg.pl

#!/usr/local/bin/perl
$toplam = 0;
for ($say = 1; $say <= 3; $say++) {
$satir = ;
last if ($satir eq "");
$satir =~ s/^[\t ]*//;
$satir =~ s/[\t ]*\n$//;
redo if ($satir eq "");
@kelimeler = split(/[\t ]+/, $satir);
$toplam += @kelimeler;
}
print ("Toplam kelime sayısı: $toplam\n");

Çalışması:

>redoprg.pl
Test satırı.
Bu da ikincisi.
^D
Toplam kelime sayısı: 5
>

VERİLEN ETİKETE GİTME :

Bazen dallanmalarda programın herhangi bir bölümüne atlamamız gerekir. Bu bölümlere ulaşmak için bölüme ait etiket adı veriler.Aşağıda kullanılan

DONE: sintaksı bir etiketi belirler. next ve redo ile de etiket kullanılır. (redo etiket; gibi) .

Örnek program : etprg.pl

#!/usr/local/bin/perl
$toplam = 0;
$ilksayac = 0;
DONE: while ($ilksayac < 10)
{
$ikincisayac = 1;
while ($ikincisayac <= 10)
{
$toplam++;
if ($ilksayac == 5 && $ikincisayac == 9)
{
last DONE;
}
$ikincisayac++;
}
$ilksayac++;
}
print ("$toplam\n");

Çalışması:

>etprg.pl
59

>

CONTİNUE bloğu:

Örnek görerek anlamaya çalışalım:

$i = 1;
while ($i <= 10) {


print ("$i\n");
}
continue { # continue bir blokla kullanılır ({ } arasında)
$i++;
}

Yukardaki örnekte continue bloğundaki $i++ aşağıda for bloğundaki görevi yapar.

for ($i = 1; $i <= 10; $i++) {

print ("$i\n");

}

Her iki örnekteki çalışma aynıdır.continue genelde while ve until ile kullanılır. for da buna gerek yoktur.



GO TO etiket deyimi:

go to yanında belirtilen etikete program akışını yönlendirir. etiket, do veya altyordam(sub) içinde tanımlı olmamalıdır. Ör:

#!/usr/local/bin/perl
NEXTLINE: $line =

;
if ($line ne "") {


print ($line);
goto NEXTLINE;
}

Çalışması:

bu bir satırdır.
bu da bir satırdır.
^D

>
DÖNGÜLER



While Döngüsü:

Koşul ifadesi doğru (true) ise blok içi uygulanır. Değilse blok dışına(sonrasına) çıkılır.

while ($sayi == 5) {

print ("Sayı 5!\n");

}

Yukarıdaki örnekte koşul ifadesi $sayı değişkeninin 5’e eşitliğini test ediyor. Eğer 5 ise (true) oklu parantez içine (bloğa) geçilerek icra edilir. % değilse (false) blok dışına çıkılır.



Örnek Program : Program adı wh_dongu1.pl olsun.

#!/usr/local/bin/perl


$sayi = 0;
$sayac = 1;
print ("Bu satır döngü başlamadan evvel yazıldı.\n");
while ($sayi == 0) {
print ("Dongu sayac değeri ", $sayac, "\n");
if ($sayac == 3) {
$sayi = 1;
}
$sayac = $sayac + 1;
}
print ("Döngüden çıktık.\n");

Çalışması :

>wh_dongu1
>Bu satır döngü başlamadan evvel yazıldı.
>Dongu sayac değeri 1
>Dongu sayac değeri 2
>Dongu sayac değeri 3
>Döngüden çıktık.
>

Until Döngüsü :

Genel formatı :

until (koşul ifadesi) {
koşul ifadesi sonucu yanlış(true) ise
blok içi uygulanır
koşul doğru olunca blok dışına çıkılır
}

Örnek Program : Program adı untilprg.pl olsun

#!/usr/local/bin/perl
print ("17 ARTI 26 SONUCU KACTIR.?\n");
$dogru_cevap = 43; # Doğru cevap atandı
$girilen_deger = ;
chop ($girilen_deger);
until ($girilen_deger == $dogru_cevap) {
print ("Yanlis! Yeniden dene!\n");
$girilen_deger = ;
chop ($girilen_deger);
}
print ("Bravo..Dogru cevap!!!\n");

Çalışması :

>untilprg
>17 ARTI 26 SONUCU KACTIR.?
>39
>Yanlis! Yeniden dene!
>43
> Bravo..Dogru cevap!!!
>
LİSTE ve DİZİLER

Listeler:

Listeler:

Listeler parantezlerle sınırlandırılmış skalar değerler dizisidir.

(1, 5.3, "hello", 2)

Bu listenin 4 elemanı vardır. 1 , 5.3 , hello , ve 2. Elemanı olmayan liste boş listedir

Ör : ()


Ör : (17, 26 << 2) listesi 2 elemanlıdır. 17 ve 104.

Ör : (17, $var1 + $var2)

Bu örnekte 2 elemanlıdır. 17 ve $var1 ve $var2 toplamı.Aşağıdaki kullanımlar listeler için geçerli diğer örneklerdir.

("string", 24.3, " string2")


($cevap, "cevap $cevap")

Liste elemanlarını Dizilere yerleştirme:

Öncelikle dizilerin tanımını görelim. Dizi değişkeni tanımı için o değişkenin başına @ karakteri konur.

Geçerli Adlandırma Örnekleri:

@my_array


@list2
@uzun_isim_de_ kullanılabilir

Geçerli olmayan adlandırma Örnekleri:

@1dizi # rakamla başlayamaz
@_dizi # alt-tire ile başlayamaz
@a.son.dizi # . kullanılamaz

Aşağıdaki örneği inceleyelim

$deger = 1;
@deger = (11, 27.1, "bir string");

Burada var isimli değişkenler tamamen farklı değişkenlerdir. $var skalar değişken olup,@var ise dizi değişkenidir.

Aşağıdaki örnekte, @array bir dizidir ve sırasıyla elemanlarına 1,2,ve 3 atanmıştır.

@array = (1, 2, 3);



Dizi elemanlarına erişim:

Erişim için o elemanın indisi(numarası) verilir.

Ör: $var = @array[0];

burada @array dizisinin 1.elemanının indis'i verilerek(Dizilerde ilk eleman numarası 0 dır) o elemanın değerine ulaşılıyor ve değer $var değişkenine atanıyor.D izilerde

@array[0], 1.elemanı
@array[1], 2.elemanı
@array[2], 3.elemanı

temsil eder ve sıralama bu şekilde devam eder. Örnek:

@array = (1, 2, 3, 4);

yukarda @array elemanlarına, liste elemanlarının atanmasını görüyoruz. dizi elemanları şu değerleri taşır:

@array[0], değeri 1
@array[1], değeri 2
@array[2], değeri 3
@array[3], değeri 4

Bu aşamada aşağıdaki atamayı yapalım.

$array[3] = 5;

Şimdi dizi elemanları dizilişi şu şekildedir;

@array[0], değeri 1
@array[1], değeri 2
@array[2], değeri 3
@array[3], değeri 5
yani (1, 2, 3, 5).

Eğer olmayan dizi elemanı atanmak istenirse veya negatif (-) değer verilirse atanacağı değişken değeri null stringidir ki 0 a eşittir.Ör:

@array = (1, 2, 3, 4);
$skalar = $array[4];

dizide 5.eleman yani $array[4] yoktur dolayısıyla $skalar değeri null ("") dir. benzer şekilde $skalar = $array[-1]; sonucu da aynıdır. Bir de şu örneği inceleyelim.

@array = (1, 2, 3, 4);
$array[6] = 17;

Dizinin görünümü şu şekildedir,

(1, 2, 3, 4, "", "", 17)

İndis olarak değişken de kullanılır, Ör:

$index = 1;
$skalar = $array[$index]; gibi...

Dizi elemanlarına erişimde dizi değişkeninin başında $ olduğuna dikkatinizi çekerim. Çünkü dizinin her bir elemanı skalar değişken olarak işlem görür. Ör:

$sebze[0] doğru
@sebze[0] ise yanlış kullanımdır.

Örnek program: Program adı dizprg.pl olsun

#!/usr/local/bin/perl
@dizi = (1, "tavuk", 1.23, "\"Tamam mi?\"", 9.33e+23);
$say = 1;
while ($count <= 5) {
print ("$say . eleman @dizi[$say-1]\n");
$say++;
}

Çalısması :

>dizprg.pl
1 . eleman 1
2 . eleman tavuk
3 . eleman 1.23
4 . eleman "Tamam mi?"
5 . eleman 9.3300000000000005+e23
>

Örnek program: program adı randiz.pl

# rand() fonksiyonu ile 1- 10 arası random sayı üreten program
#!/usr/local/bin/perl
$say = 1;
while ($say <= 100) {
$randnum = int( rand(10) ) + 1;
$randtoplam[$randnum] += 1;
$say++;
}
# Herbir sayı için toplamı yaz
$say = 1;
print ("Herbir sayı için toplam:\n");
while ($say <= 10) {
print ("\tsayi $say: $randtoplam[$say]\n");
$say++;
}

Çalısması:

>randiz.pl
Herbir sayı için toplam:
sayi 1: 11
sayi 2: 8
sayi 3: 13
sayi 4: 6
sayi 5: 10
sayi 6: 9
sayi 7: 12
sayi 8: 11
sayi 9: 11
sayi 10: 9
>


Yüklə 0,83 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin