|
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. |