Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

“ THERE IS MORE THAN ONE WAY TO DO IT” Hazırlayan: Cemal İNANÇ.

Benzer bir sunumlar


... konulu sunumlar: "“ THERE IS MORE THAN ONE WAY TO DO IT” Hazırlayan: Cemal İNANÇ."— Sunum transkripti:

1 “ THERE IS MORE THAN ONE WAY TO DO IT” Hazırlayan: Cemal İNANÇ

2  Perl, bir dil bilimci olup, NASA’da sistem yöneticisi olan Larry Wall tarafından geliştirilmiş bir programlama dilidir.  Yoğun şekilde görüntü tanıma ve metin işlemede kullanılabilecek en güçlü dillerden birisidir.  1987 yılında Wall, yeni dilinin 0. sıfırıncı versiyonunu açık kaynak kod olarak yayınladı.  Açık kaynak kod camiasının desteğini giderek kazanan Perl, bir çok uygulamada kullanım bulmaya başladı.  Daha çok kullanıcıyı etkilemek için Perl 3 “GNU General Public License” ile Perl4 “Artistic License” ile uyarlanmıştır.  Perl 5 ise diğer dillerdeki kısıtlamaları düzelterek daha güçlü, daha okunabilir, ve daha daha esnek bir dil haline getirilmiştir.

3  Perl 6, Perl5 te var olan iki ana problemi giderilmesi ile sunulmuştur. Bunlar:  Karmaşık iç yapısı  Eskiye bağlılık  Aynı zamanda Perl6 threading, signal handling, UNİCODE karakter desteği ile daha esnek ve güçlü bir dil haline gelmiştir.  Larry Wall geliştirilmiş olduğu bu dili şu sözlerle ifade etmiştir:  “Should make easy thing stay easy, hard things easier, and imposibble things hard”

4  Perl dilinin sloganı ise:  “There is more than one way to do it”

5  Görüntü tanıma ve metin işlemede üstünlük.  Nesneye dayalı tasarım için uygunluk  Daha az kod daha fazla iş.  Genellikle yorumlanan bir dildir. Ancak hem derleyici(perlcc) hem yorumlayıcı ile kullanılabilir.  Dil tasarımı güzel yerine pratik olarak yapılmıştır.  Özçağrı derinliğinde sınır yoktur.  Performası bozmamak için hash tabloları gerektiği kadar büyütülebilir.

6  C, sed, awk, sh ve birçok başka dilin önemli ve güçlü özelliklerini bünyesinde barındırmıştır.  Görüntü tanıma ve metin işlemede oldukça güçlüdür.  Açık kaynak kodlu olup hemen hemen tüm sistemlerde çalışmaktadır.  İfadelerin söz dizimleri c diline benzemektedir.  Setuid programları, veri akışı izleme mekanizması ile c diline göre daha fazla güvenlik sağlamaktadır.

7  Diğer dillere göre daha karmaşık bir dil yapısı vardır.  Günümüzde bağlamsal ifadelere sahip belkide tek populer programlama dilidir.  Dosyalar öncelikle Perl bayt koduna derlenir.  en iyi duruma getirilir ve daha sonra çalıştırılır.  Yorum satırları # işareti ile başlar

8  Diğer dillerin aksine, değişkenleri kullanmadan önce tanımlama zorunluluğu yoktur.  Kullanmak istediğiniz yerde tanımlayarak program içinde kullanabilirsiniz.  Skaler değişkenler ve değerler:  “Scalar” kelimesi bilimsel ve matematiksel içerikler için kullanıldığında, daha küçük parçalara bölünemeyen bileşenler olarak düşünülür.  Scalar değerler ise en basit yapı blokları olarak düşünülür.  Genel olarak sayılar(numbers) ve string olarak sınıflandırılır

9  Scalar değişkenler için hangi veri tipine bağli oldukları belirtilmelidir.  Değişkenler sayı veya string cinsinden veri içerebilir.  Aynı değişkenlerin değişik satırlarda sayı veya string içermesi mümkündür.  Örnek: $var=1224; print $var; $var="Mehmet"; print $var;

10  Bir değişkeni standart input’a bağlarmak için  $number=

11  İf yapısı:  C dilindeki if yapısı ile aynı şekildedir.  Unless yapısı:  İf yapısının tam tersi özelliğe sahiptir.  unless ($sales <= 50) do something  Elsif yapısı:  c dilindeki else if ile eş değerdir.

12  While yapısı:  C dili ile aynı yapıya sahiptir  Until yapısı:  While yapısının karşıt anlamlısıdır.  Şart koşulu yanlış yanlış iken devam eder.  Örnek:  $counter =10;  do{  print “$counter”; } until(--$counter==0) EKRAN GORUNTUSU: 10 9 8 7 6 5 4 3 2 1

13  for yapısı:  C dilindeki ile aynı yapıda olup ekstra özelllikleri de vardır.  Foreach yapısı:  Bir liste üzerindeki tüm elemenlar üzerinde dolaşmayı sağlar.  @array=(1..10)# 1den 10 a kadar sayıları tutan dizi  foreach $number(@array)#kontrol değişkeni  $number **=2;#** operatoru karesini alır ve kontrol elamanının # oldugu indexteki değeri değiştirir  print @array\n;

14  Perl dilinin bir takım fonksiyonları sağladığı bir takım özel değişkenler vardır.  $_ değişkeni perl dilinin bir çok fonksiyonu için varsayılan(default) bir argumandır.  Bu şekilde $_ özel değişkeni:  Fonksiyon çağırmalarında kayıp parametreler yerine  Foreach yapısındaki gibi kontrol değişkenleri yerine kullanılabilir.  Örneğin:  foreach(list)  Statements;  İfadesinde anlık değişken $_ değişkeninde tutulur.

15  foreach (‘amanda’, ‘jeff’)  Print “$_”;  Program sıra ile amanda ve jeff’i ekrana yazar.  Next komutu: c dilinde ki continue komutu ile aynıdır.  last komutu: c dilindeki break komutu ile aynıdır.  and, or, not mantıksal operatorleri: &&, || ve ! Operatorleriden tek farkı daha düşük önceliği olmasıdır.

16  redo yapısı: genellikle kontrol amaçlı olarak and, or gibi ifadelerle kullanılır.  Sıfıra bölmeyi önlemek için kullanıabilir. Örneğin:  ….  print “enter denominator:”;  Chomp($denominator= );  $deneminator!=0 or  Print “cannot divide by zero\n” and redo  Die komutu: programi sonlandirir.

17  Perl dilinde list bir veri tipidir. Ve değerlerin oluşturduğu bir tiptir.  List oluşturuken () kullanılır:  (“dog”, “cat”, “horse”);  Listler Perl dilinde dizilierin ilklendirilmesinde kullanılabilir.

18  Perl de dizileri ifade ederken @ işareti kullanılır. Örneğin bir c dizisi için:  @c  c isimli bir diziyi ifade etmektedir.  Dizinin belirli bir elemanını ifade ederken ise [] operatoru kullanılır.  Ancak dizinini isminin başında @ işareti yerine $ kullanılır. çünkü dizinin herhangi bir elemanı scalar durumdadır. $c[1]  c dizisinin ilk elemanını ifade eder

19  Perl dilinde dizi yaratmanın bir çok yolu vardır.  Bunlardan çok kullanılan bir yol olarak list ataması ile oluşturma örnek verilebilir.  @array= (“hello”, 2283, “there”, 16.56);  Yukarıda listeki 4 elemanı içeren bir dizi oluşturulmuştur.  Bir ilginç özellik ise  $array[-1]  dizinin son elemanını verir  $array [-4]  sondan 4. elemanı veriir

20  Perl dilinde kullanıcının tanımladığı fonksiyonlar “subroutine” adı verilmektedir.  Genel olarak;  Perl tarafından tanımlananlara fonksiyon  Kullanıcı tarafından tanımlananlara subroutine adı verilir.  Tanımlama:  Perl de bir subroutine tanımlarken kullanılması gereken anahtar kelime sub baş kısma yazılmalıdır.  sub subroutine1  {  ……..  }

21  Kullanıcı tanımlamış olduğu fonksiyonlara parametre göndermek isteyebilir.  Gönderilen bu argumanlar özel bir dizi değişkeni olan “@_ “ içerisinde tutulur.  Gönderilen bu elemanlara erişmek için ;  “$_[$i] “, @_ dizisinin elemanlarına erirşir.

22  displayArguments(“Sam”, “Jones”, 2, 15, 73.2);  sub displayArguments  {  print “All arguments : @_\n”;  for( $i=0; $i < @_; ++$i)  {  print “Argument $i: $_[ $i ]\n”;  }  }

23  Perl dilinde fonksiyonlardan değer döndürmek için diğer dillerdeki gibi return kelimesi kullanılır.  Örnek  Print subroutine($_),” ”;  Sub subroutine  {  …  return something;  }

24  Üç tip scope kuralı içermektedir.  Global scope  Lexical scope  Dynamic scope  Global Scope:  Global scope kapsamındaki değişkenler programın her yerinden erişilebilir ve kullanılabilir.  C dilindeki global scope ile aynıdır.  “our ” bu scope kavramında değişken tanımlamak için kullanılır.

25  Lexical Scope:  Değişken tanımlandığı scope içerisinden erişilebililir.  “my” bu scope kavramında bir değişken tanımlarken kullanılır  Dynamic Scope:  Tanımlandığı zamandan itibaren var olan blok içerisinde geçerlidir.  Lexical scope ‘tan farkı aynı blok içerisinden diğer ir blokta olsa bile çağrılabilir.  “local” bu scope kavranmını belirlemek için kullanılır.

26  #global değişkenler tanımlanmadan  Subroutine1();  #global değişkenlerin tanımı  our $x=7;  our $y=17;  #global değişkenlerin yazdırılması ve subroutine1’in çağırılması  Print “\nglobal \$x: $x”;  Subroutine1();

27  sub subroutine1  {  my $x=10;#lexical scope  Local $y=5;#dynamic scope  Print “\lexical to subroutine1 $x : $x”;  print “dynamic to subroutine1\$y: $y”;  subroutine2(); }  sub subroutine2  {  print “global \$x $x”;  print “dynamic to subroutine 1\$y $y”;  }

28  KODDA DIKKAT ÇEKEN ŞEY NEDIR?

29  PERL dilinde main adı verilen bir fonksiyon yoktur.

30  Perl programlama dili nesneye dayalı tasarıma izin veren bil dil olup yeni sınıflar yazabilir, türetilerbilir.  Perl programlama dilinde tüm objeler referanstır.  Multiple inheritence perl dilinde var olan kavramdır.  Private, public gibi kavramlar yoktur.

31  package Date;  use strict;  use warnings;  # date sınıfı için constructor  Sub new  {  #deiğişkenleri default string değerlerine set ediyor  my $date = ($the_year=>1000, the_moth=>1, the_day=>1,);  bless($date);  return $date;  }  # sınıf the_day, the_month, the_year değişkenlerini hash ile tutuyor.

32  sub year  {  my $self = shift();  $self->{the_year}=shift() if (@_);  return $self->(the_year);  }  sub month  {  my $self=shift();  $self->{the_day} =shift() if(@_)  Return $self->{the_month};  }

33  sub day  { ……  }  sub setDay  {  İf(@_==4)  {  my $self =shift();  $self->month($_[0]);  $self->day($_[1]);  $self->year($_[2]);  }  else  Print (“reuires tthree argument”);  }

34  sub print  {  my $self =shift();  print($self->month);  print (“/”);  print($self->day);  print($self->year);  }  return 1

35  use Date;  use strict;  use warnings;  my $today =new Date;  $today->setDate(7,14,2000);  print($today->month());  today->print();

36  Inheritence perl dilinde özel bir array olan @ISA ile yapılmaktadır.  Our @ISA = (“base class name”);  Somut bir örnek verecek olursak; Employee isimli bir sınıfımız olsun ve bu sınıftan Hourly isimli bir sınıf türelmek isteyelim.  our @ISA = (“Employee”);  Söz dizimi ile employee sınıfından hourly sınıfını türetmiş oluruz

37  package Hourly;  …  Our @ISA = (Employee);  sub new  {  my $object =shift();  my $class=ref($object) || $object;  My $self= $class->SUPER::new();  $self->(rate)=undef;  bless($self, $class);  return $self;  }

38  C++, java gibi dillerde var olan private, public kavramları perl dilinde yoktur.  Perl bu konuda kullanıcılarına güvenmeyi tercih etmiştir ve sadece arayüz ile çalışacalarını düşünmüştür. Aksi taktride ise ne yaptıklarını bildiklerini varsayarak sınırlama yapmamıştır.  Perl bu konuda kullanıcılarına güvenmesine rağmen verileri gizlemek için bir takım alternatif yollar sunmuştur.  Closure methodu

39 TEŞEKKURLER SORULAR??

40  Deithel & Deithel Perl How to Program  www.perl.org  www.perl.com  E-bergi bilgisayar topluluğu elektronik dergisi :http://e-bergi.com/2009/Mayis/Gelisim-Sureci-ve-Yenilikler  http://tr.wikipedia.org/wiki/Perl  http://tr.wikibooks.org/wiki/Perl_PDG/0._%C3%96ns%C3%B6z  http://www.mutasyon.net/makaleoku.asp?id=183  http://www.barbetto.com/perl/perl-dilinde-kullan%C4%B1lan-de%C4%9Fi%C5%9Fkenlerin- %C3%B6zellikleri,3215..html


"“ THERE IS MORE THAN ONE WAY TO DO IT” Hazırlayan: Cemal İNANÇ." indir ppt

Benzer bir sunumlar


Google Reklamları