Ertan TÜRKMEN

2- SABİT VE DEĞİŞKENLER
 
1.Sabitler
 
A)Sayısal Sabitler:
 
Sayısal sabitler,programın çalışması esnasında gereken sayısal sabit değerlerdir. Perl 8 ve 16 tabanlı
sayısal değerlerin kullanımını da  sağlar.
               1245
               100.45
               .000034
               043
               0x23       ...gibi
 
 
B)String Sabitler:
 
String sabitler,programın çalışması esnasında gereken alfasayısal sabit değerlerdir. Alfabetik ve
Alfabetik/sayısal/özelkarakter karışımı olabilirler. Tırnak içindeki ifadelerdir.
Perl stringlerde; Tek, çift, geri tırnak kullanır. Bunlar birlikte de kullanılabilirler.
Kurallarını göreceğiz.
 
Örnek:
'Ertan Türkmen'
"Ertan Türkmen"
"Dedi ki, "O Ankara'dan geldi.""
'Ahmet Trabzon'ludur'
                ...gibi
 
stringlerde EscapeSequence denilen özel işlevli karakterlerde kullanılır.
 
Escape  SequeNCe karakterlerinden bazıları ve anlamları:
                                 
a                Alarm             
b                Backspace -geri-          
e                Escape    -çıkış-         
f                Form Feed     -form besleme -
n                Newline          -yeni satır-  
r                Carriage  return  -satır sonu-
t                Tab    - x karakter atla -       
v                Vertical Tab    - dikey atla  -               
                             
ilerleyen derslerde konuyla ilgili örnekler görecek ve daha iyi anlayacağız.
                            
2.Değişkenler
 
a)Skalar değişkenler : İçersinde değişebilen değerler bulunduran birimlerdir. İlk karakteri $ işaretidir.Bu karakterden sonra en az 1
alfabetik karakter bulunmalıdır. Değişken adında kural olarak bu karakterlerden hemen sonra alfabetik, sayısal karakterler ve _ 
karakteri kullanılabilir. Değişken uzunluğu serbesttir.
 
Örneğin;
 
$ad, $ad_soyad, $a1    gibi değişken adlari geçerli olup aşağıdakiler geçersizdir.
 
 
    ad       #  $   karakteri olmadığından 
    $         # $    dan sonra en az 1 alfabetik karakter gerektiğinden 
    $47x   #       2.karakter sayısal olamaz
    $_ad   #       2.karakter alfabetik olmalı
    $ad!     # !    karakteri kullanılamaz 
 
Not : Küçük ve büyük harf kullanımı önemlidir ve farklı değişkenleri temsil ederler. Bu demektir ki; $AD ile $Ad ve $ad farklı
değişkenlerdir.
 
Değişkenlere değer atama:
Eşitliğin bize göre sağındaki değer (sayısal/alfabetik/karışık olabilir) solundaki değişkenin içine konur. Aşağıdaki ifadeyi inceleyiniz. 
 
$ADI_SOYADI = "Ertan TURKMEN";
$ADI_SOYADI değişkeni içindeki değer "Ertan TURKMEN" dir.
benzer şekilde,
$MAAS = 125000;
$MAAS değişkeni içeriği 125000 dir.
 
Not : Değişkenin içinde önceden bir değer varsa,önceki değer silinir, son atanan değer geçerli olur.
 
Aritmetik Operatörler:
 
Perl de kullanılan TEMEL aritmetik operatörler;
Toplama +
Çıkartma               -
Çarpma  *
Bölme    /       dir.
 
Örnek program : Verilen değerin Km ve Mil cinsinden çevirimini yapar.
Adı milkm.pl olsun.
 
#!/usr/local/bin/perl
print ("Mesafeyi giriniz: n");
$mesafe = ;
chop ($mesafe); 
 
# chop fonksiyonu giriş sonundaki karakteri atar
# programımızda son karakter Enter tuşuna bastığımız için
# yeni satır (n) karakteri
# olduğundan onu atar(siler).
 
$mil = $mesafe * 0.6214;
$km = $mesafe * 1.609;
print ($mesafe, " km = ", $mil, " miln");
print ($mesafe, " mil = ", $km, " kmn");
 
Not : Program satırlarında kullanılan "n" göstergesi alt satıra geçişi sağlayan yeni satır karakteridir.
 
Çalışması:
               >milkm
               >Mesafeyi giriniz:
               >10
               >10 km = 6.2139999999999995 mil
               >10 mil = 16.09 km
               >
 
 
a.1)Tamsayi (integer) Skalar değişkenler:
 
İçerisinde tamsayı sabit ve literal bulundurabilirler. integerlar kayar noktalı (floating-point--birazdan inceleyeceğiz--)değerler gibi
işlem görürler.
 
Örnek program:  adı prg.pl olsun...
 
#!/usr/local/bin/perl
$deger = 1234567890;
print ("1.değer: ", $deger, "n");
$deger = 1234567890123456;
print ("2.değer: ", $deger, "n");
$deger = 12345678901234567890;
print ("3.değer: ", $deger, "n");
 
Çalışması : 
   > prg
   >1.değer: 1234567890
   >2.değer: 1234567890123456
   >3.değer: 12345678901234567168
 
çıktısı verir. Görüldüğü gibi ilk 2 değerde sorun yoktur.3.değer yanlış sonuç üretir. Çünkü tamsayı için fazla değer içermektedir. 
 
a.1)Kayar Noktalı (floating-point) Skalar değişkenler:    
 
En fazla 16 rakam kabul edebilirler. Bu değişkenler tamsayı, ondalıklı, exponent(e üzeri) ve -/+ işaretli değerleri saklayabilirler. 
 
Örneğin, aşağıdaki değerlerle işlem yapabilirler.
 
11.4 , -275 , -0.3 ,  .3 ,  3. , 5.47e+03 ,    ...v.b.
 
Örnek program : Adı prgsk1.pl olsun,
 
#!/usr/local/bin/perl
$deger = 34.0;
print ("1. deger ", $deger, "n");
$deger = 114.6e-01;
print ("2. deger ", $deger, "n");
$deger = 178.263e+19;
print ("3. deger ", $deger, "n");
$deger = 123456789000000000000000000000;
print ("4. deger ", $deger, "n");
$deger = 1.23e+999;
print ("5. deger ", $deger, "n");
$deger = 1.23e-999;
print ("6. deger ", $deger, "n");
    
 
Programın Çalışması :
>  prgsk1.pl
>  1. deger 34
>  2. deger 11.460000000000001
>  3. deger 1.7826300000000001e+21
>  4. deger 1.2345678899999999e+29
>  5. deger Infinity
>  6. deger 0
>
 
b)String değişkenler:
 
String (karakter/karakterler içeren dizi) içerirler. Bu değerler alfabetik ve sayısal sabit veya değişken olabilirler.
 
Ör1: $AD_SOYAD = "Ertan TURKMEN";
komutuyla "Ertan TURKMEN" stringi $AD_SOYAD string değişkenine atanır.
 
Ör2: $number = 11;
$text = "Bu text sayı içerir.İçerdiği sayı $number.";
 
komutlarının icrası sonucu $number'a 11 sayısı atanır. $text değişkenine ise "Bu text sayı içerir. İçerdiği sayı $number." Stringi atanır.
Sonuçta $text'in içeriği şudur.
               
               "Bu text sayı içerir.İçerdiği sayı 11."
 
Stringlerde de Escape Sequence karakterler kullanılır.
 
Bunlar aşağıdadır :
 
a               Zil sesi 
b               Backspace 
cn             Ctrl+n karakteri 
e               Escape 
E               L, U or Q  etkisini sonlandır 
f               Form feed 
l                Sonraki harfi küçüğe çevirir 
L               Sonraki tüm harfleri küçüğe çevirir 
n               newline - Yeni Satır
r               Carriage return 
Q              Özel örnek karakterleri arama
t               Tab 
u               Sonraki harfi büyüğe çevir
U              Sonraki tüm harfleri büyüğe çevir
v               vertical tab
                        
 
Tek ve Çift tırnaklı string farkı:
Bunu örnekle inceleyelim.
                                 
Ör1:
$string = "Bir stringdir";
$text = "Bu $string";
# $text'in içeriği "Bu Bir stringdir"
 
Ör2:
$text = 'Bu bir $string'; 
#$text'in içeriği 'Bu bir $string'
 
İki örnek arasında fark açıkça görülmektedir. Tek tırnak içindeki string aynen saklanır. Değişken ve hatta n gibi karakterlerde kendi
özelliklerini icra eder şekilde kullanılamaz. (sadece  ve ' karakterleri hariç)
 
Ör3:
$text = 'Bu string.n';
$text içeriği:   
Bu string .n  şeklindedir.
 
Ör4:
$text = 'Burada ', tek tırnak karakteri var';
$text içeriği:    Burada ', tek tırnak karakteri var
 
Ör5:
$text = 'Stringin son karakteri backslash \';
$text içeriği: 
Stringin son karakteri backslash      şeklindedir.
 
 
String ve Sayısal değerlerde değiştirilebilirlik:
 
Örnekle inceleyelim.
$string = "43";
$Sayı = 28;
$result = $string + $Sayı;
$result içeriği 71 dir.
 
Bir de şu örneği inceleyelim:
$number = ; #klavyeden giriş bekler 22 girdik diyelim
                   # $number içeriği 22n  dir (n enter tusu)
chop ($number);    # $number içeriği su anda 22
$result = $number + 1;  #$result içeriği 23
 
Şöyle bir atama sonucunda ise :
$result = "hello" * 5; 
$result içeriği 0 dır.
çünkü hello sayısal olmadığı için sayısal değeri 0 dır 
 
Eğer string ifadede sayısal ve alfabetik değer varsa, $result = "12o34"; gibi.. Bu durumda ortadaki o
harfi öncesi geçerlidir. $result içeriği 12’dir.
 

ALTERNATİF STRİNG AYRAÇLARI

Aşağıdaki örneğe bakalım;

$say = 5;

print ("$sayn"); # 5 basar

print ('$sayn'); # $varn basar

örnekte ' ve " ayraçlarını görüyoruz. Perl başka ayraç elemanları da sunar.

Bu işlev için, q kullanıp sonraki ayraç elemanını belirleyebiliriz.

q!merhaba $kim! gibi...

bu ifade ile aşağıdaki ifade aynıdır.

'merhaba $kim'

String sınırlayıcı olarak qq kullanırız.

qq/This string contains $var./

Burada / karakteri stringi ayırır(sınırlar).

Stringi kelimelere ayırma-kesme- işlevini qw ile yaparız.

Aşağıdaki iki satır aynıdır.

@kelimeler = qw/Bu bir cümledir/;

@kelimeler = split(' ', q/Bu bir cümledir/);

her iki durumda da @kelimeler ' e şu liste atanır;

("Bu ", " bir ", " cümledir")

<< KULLANARAK STRİNG TANIMLAMA

<< işareti ile string başı tanımlanır. Bu string boş satır görene kadar devam eder.

Örnek:

$A = <<

here is the string

bu ikinci satır } $A içeriği yandaki ilk iki satırdır.

üçüncü satır

dördüncü satır

<< sonra konacak string, string sonunu belirler.

Örnek:

$str = < (veya şu şekilde <<'END' )

bu birinci satır

bu ikinci satır

END (string sonu)

Şu da doğrudur.

$end = "END";

$str = <<"$end"

bu ilk satır

bu ikinci satır

END

Şu kullanıma bakın;

print <

Merhaba!

Iyi calışmalar!

END

çıktısı

Merhaba!

Iyi calışmalar!

print <

Merhaba!

END

Çıktısı

 

© 2014 Bilgi İşlem Dairesi Başkanlığı