Ana Sayfa | Eğitim CD 'leri | Bilgisayar Kitapları | İletişim --->  0 212 428 23 21 Fax: 0 212 428 23 39

                                               

                                                              CGI/Perl Dersleri Perl'de Mantıksal Sınama 


Perl'de Mantıksal Sınama : 

Perl ile formdan gelen ya da bir şekilde elde ettiğimiz veriyi mantıksal sınamaya tabi tutabilir ve programı buna göre yönlendirebiliriz. Perl'de mantıksal sınamalar şu şekildedir:

Sayısal değerlerde mantıksal sınama :

İşlem Anlamı 
x > y x büyüktür y'den 
x < y x küçüktür y'den 
x >= y x büyük eşittir y'ye 
x <= y x küçük eşittir y'ye 
x == y x eşittir y'ye 
x != y x eşit değildir y'ye 


Sayısal olmayan değerlerde mantıksal sınama:

İşlem Anlamı 
a eq b a eşittir b'ye 
a ne b a eşit değildir b'ye 
a lt b a küçüktür b'den 
a gt b a büyüktür b'den 
a le b a küçük eşittir b'ye 
a ge b a büyük eşittir b'ye 


Buna göre perl'ile bir veri ya da değişken üzerinde mantıksal sınama yapmak için bu verinin ya da değişkenin içeriğinin sayısal olup olmadığını bilmemiz gerekiyor. 

Mantıksal sınama if, elsif, else fonksiyonları :

Yukarıda sayısal değerlerde ve sayısal olmayan değerlerde (string) karşılaştırma operatörlerini gördünüz ama ne işe yaradıklarını bilmiyorsunuz. Bu operatörler perl'de karşılaştırma yapmaya olanak verir ve bunu da if(), elsif() ve else() komutlarıyla sağlarız. Kullanımı şu şekildedir: 

if (koşul) {
koşul sonunda yapılacak işlem
}
elsif(koşul) {
koşul sonunda yapılacak işlem
}
else {
bu iki (ya da daha fazla) koşulun gerçekleşmemesi durumunda yapılacak işlem
}

Buna göre iki rakamı form vasıtasıyla programa gönderelim, program bize bu iki rakamı karşılaştırıp sonucunu ekrana yazsın :



#!/usr/bin/perl

# if1.cgi

use CGI qw(:standard);

print "Content-type:text/html\n\n";

$query = new CGI;

$ilksayi = $query -> param('ilksayi');
$sonsayi = $query -> param('sonsayi');

print "<html><body>";

if ($ilksayi ne "" or $sonsayi ne "") {

if ($ilksayi == $sonsayi) {

print "ilksayı($ilksayi) ile ikinci sayı($sonsayi) eşit!";

}

elsif ($ilksayi != $sonsayi) {

print "ilksayı ($ilksayi) ile ikinci sayı($sonsayi) eşit değil!";

}
}


print "<br>";
print "<form action=if1.cgi method=post>";
print "Birinci sayı: <input type=text name=ilksayi><br>";
print "İkinci sayı: <input type=text name=sonsayi>";
print "<input type=submit value=Karşılaştır>";


print "</body></html>";


İlk "if" karşılaştırması dikkatinizi çekti mi? Bu ilk karşılaştırma sayesinde eğer formdan veri gelmemişse sadece form görünüyor, formdan veri gelmişse karşılaştırma yapılıyor ve altında yine form gösteriliyor böylece programın saçmalamasını önlüyoruz.

Aynı şeyi bir de sayısal olmayan değerlerle, yani harflerle yapalım. Mesela formdan gönderilen veriler bizim ismimize eşitse ekrana "Senin isminle benim ismim aynı, biz adaşız" yazdıralım, değilse "isimlerimiz aynı değil, biz adaş değiliz" yazdıralım :



#!/usr/bin/perl

# if2.cgi

$benim_ismim = "hakan";

use CGI qw(:standard);

print "Content-type:text/html\n\n";

$query = new CGI;

$isim = $query -> param('isim');

print "<html><body>";

if ($isim ne "") {

if ($isim eq $benim_ismim) {

print "Bizim isimlerimiz aynı, biz adaşız!";

}

elsif ($isim ne $benim_ismim) {

print "İsimlerimiz aynı değil, biz adaş değiliz";

}

}



Yukarıdaki örnekte $benim_ismim değişkenini kendi adınızla ya da başka adlarla değiştirerek sınama yapabilirsiniz.


 

                                                               CGI/Perl Dersleri Matematiksel İşlemler 



Perl'de matematiksel işlemler :

Matematik ile aranız nasıl bilmiyorum ama gerçek CGI programları yazmaya başladığınızda programlarınızın içinde mutlaka matematiksel işlemler yapmak zorunda kalacaksınız. Bu işlemler çok karmaşık işlemler olabileceği gibi değişkenleri toplama, çıkarma, döngü sırasında bir değer arttırma şeklinde de olabilir. Bu derste perl ile yapabileceğimiz matematiksel işlemleri ele alacağız.

Perl ile dört işlem :

Perl ile sayıları ya da sayı içerikli değişkenleri toplayabilir, çıkarabilir, bölebilir ya da çarpabiliriz. Örneğin elimizde şu değişkenler var :

$a = 1;
$b = 2;
$c = 3;
$d = 4;

Önce $a ile $b'yi toplayalım :

$sonuc = $a + $b;

print $sonuc;

Bu kod ekrana $sonuc değişkenin değerini yani "3" yazdıracaktır. $b değişkeninden $a değişkenini çıkarmak için ise şöyle bir kod yazmamız gerekir :

$sonuc = $b - $a;

print $sonuc;

Bu kod da ekrana "1" yazdıracaktır. Çarpma işlemi ise şu şekilde :

$sonuc = $b * $d;

print $sonuc;

Bu kod da $b değişkeni ile $d değişkenlerinin değerlerini çarpıp sonucu $sonuc değişkenine atar ve ekrana "8" yazdırır. Bölme işlemi ise şu şekilde :

$sonuc = $d / $b;

print $sonuc;

Bu kod da $d değişkeninin değerini $b değişkeninin değerine böler (4 / 2), sonucu $sonuc değişkenine atar ve ekrana yazdırır. Eğer birden fazla işlem yapmak istiyorsak, mesela önce $a, $b, ve $c değişkenlerini toplayıp sonuçtan $d değişkenini çıkarmak istiyorsak şu şekilde bir kod kullanmamız gerekir :

$sonuc = ($a + $b + $c) - $d;

print $sonuc;

Bu kodla program önce $a, $b ve $c değişkenlerinin değerlerini toplar, sonra çıkan sonuçtan $d değişkeninin değerini çıkarır ve sonucu (6-4 = 2) ekrana yazar. 

Dört işlem için bu kadar örnek fazla bile. Şimdi öğrendiğimiz bilgilerden daha "işe yarar" bir örnek yapalım. Örneğimiz formdan gelen iki sayı üzerinde işlem yapsın. Bu işlem yine ziyaretcinin (yani bizim) seçtiğimiz işlem olsun. Yani kısaca dört işlem yapabilen basit bir hesap makinası yapalım :



#!/usr/bin/perl

# hesapla.cgi

use CGI qw(:standard);

print "Content-type:text/html\n\n";

$query = new CGI;

$sayi1 = $query -> param('sayi1');
$sayi2 = $query -> param('sayi2');
$islem = $query -> param('islem');

print "<html><body>";

if ($islem ne "") {

if ($islem eq "topla") {

$sonuc = $sayi1 + $sayi2;
print "İşlem sonucu : $sonuc";

}

elsif ($islem eq "cikar") {

$sonuc = $sayi1 - $sayi2;
print "İşlem Sonucu : $sonuc";

}

elsif ($islem eq "bol") {

$sonuc = $sayi1 / $sayi2;
print "İşlem Sonucu : $sonuc";

}

elsif ($islem eq "carp") {

$sonuc = $sayi1 * $sayi2;
print "İşlem Sonucu : $sonuc";

}
}

print "<form action=hesapla.cgi method=post>";
print "<input type=text name=sayi1> sayısı ile ";
print "<input type=text name=sayi2> sayısını ";
print "<select name=islem>";
print "<option value=topla>Topla<br>";
print "<option value=cikar>Çıkar<br>";
print "<option value=bol>Böl<br>";
print "<option value=carp>Çarp<br>";
print "</select>";
print "<input type=submit value=YAP!>";
print "</form>";

print "</body></html>";



Perl ile ileri matematik işlemleri de yapabilirsiniz. Mesela :

$sayi = 12;

$karekok = sqrt($sayi);

print $karekok;

Bu kod sqrt() fonksiyonu ile $sayi değişkeninin değerini $karekok değişkeninin değerine atar ve ekrana 12'nin karekökünü yazdırır. 

$sayi = 12;

$log = log($sayi);

print $log;

Bu kod log() fonksiyonunu kullanarak $sayi değişkeninin logaritmasını alır, $log değişkenine atar ve ekrana yazdırır. Aynı şekilde exp() fonksiyonu ile sayının exponensiyelini, int() fonksiyonu ile sayının integerini, abs() fonksiyonu ile sayının mutlak değerini bulabilirsiniz.