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ı