Aytaç Kalıncı – Sabit ve Değişkenler

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 veAlfabetik/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 beslemen Newline –yeni satır- r Carriage return -satır sonut 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 1alfabetik 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/perlprint (“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 gibiiş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ırr Carriage return Q Özel örnek karakterleri aramat Tab u Sonraki harfi büyüğe çevirU Sonraki tüm harfleri büyüğe çevirv 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 oharfi ö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ı

Yorum bırakın