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

Slides:



Advertisements
Benzer bir sunumlar
Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
JavaScript Birinci Hafta.
Kontrol İfadeleri : 2.Kısım
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
Visual Basic 6.0 Ders Notları
Bölüm 4 – Kontrol İfadeleri:1.kısım
Bölüm 5 – Kontrol İfadeleri : 2.Kısım
Javascript Oğuz İNAL.
SQL de Değişken Tanımlama
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Karar ifadeleri ve Döngüler
Fonksiyonlar ve Alt Programlar
NESNEYE DAYALI MODELLEME VE TASARIM
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR, NESNE DİZİLERİ Yılmaz Kılıçaslan.
Java Programlama Koleksiyon(Collection) Sınıfları
Nesne Tabanlı Programlama
Diziler.
NESNEYE YÖNELİK PROGRAMLAMA
Nesneye Dayalı Programlama
Yapısal Program Geliştirme – if, if-else
Erişim Denetimi, Fonksiyon
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
NESNE TABANLI PROGRAMLAMA -METOTLAR-
SQL de Değişken Tanımlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Görsel C# Programlama Güz 2009 (6. Hafta).
Ses Kontrol Metodlar ile ilgili son birkaç söz Tekrar: Programlama için başlıca 3 model.
Metotlar.
FONKSİYONLAR.
Akış Kontrol Mekanizmaları
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Bilgisayar Programlama
JAVA’DA DÖNGÜLER.
Kalıtım , Sınıf Asli Ergün.
Nesneye Dayalı Programlama
Ders İçeriği Liste Soyut veri yapısı (ADT)
C#’TA DÖNGÜLER onbirc.com/133.
Python Aslı Ergün.
Bölüm 7 - Diziler İçerik 7.1 Giriş 7.2 Diziler 7.3 Dizileri Tanımlama 7.4 Dizileri Kullanan Örnekler 7.5 Referanslar ve Referans Parametreler.
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
Görsel C# ile Windows Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
flex Sözcüksel Analiz İçin Bir Araç
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Kompozisyon Bir Sınıf diğer sınıf nesne referanslarını içinde barındırabilir. Bu referanslar sınıfın üyeleridir.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
BİLGİSAYAR programlama II
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
KALITIM(INHERITANCE) Öğr.Gör. Murat ASLANYÜREK. KALITIM KAVRAMINA GİRİŞ  Kalıtım, sınıflardan yeni sınıflar türetmeyi sağlar.  Türetilen yeni sınıflar,
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
PHP'de Program Denetimi
Fonksiyonlar ve Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
Bilgisayar Programlamasına ve Veri Analizine Giriş - IV
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Excel’de VBA Programlama (Visual Basic Application)
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
Bilgisayar Bilimi Problem Çözme Süreci-2.
Tasarım: Ali Topal.
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Fonksiyonlar-2.
C ile Programlamaya Giriş
Sunum transkripti:

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

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

 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”

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

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

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

 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

 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

 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;

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

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

 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:

 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. 1den 10 a kadar sayıları tutan dizi  foreach değişkeni  $number **=2;#** operatoru karesini alır ve kontrol elamanının # oldugu indexteki değeri değiştirir 

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

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

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

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

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

 Perl dilinde dizi yaratmanın bir çok yolu vardır.  Bunlardan çok kullanılan bir yol olarak list ataması ile oluşturma örnek verilebilir. (“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

 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  {  ……..  }

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

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

 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;  }

 Üç 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.

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

 #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();

 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”;  }

 KODDA DIKKAT ÇEKEN ŞEY NEDIR?

 PERL dilinde main adı verilen bir fonksiyon yoktur.

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

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

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

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

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

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

 Inheritence perl dilinde özel bir array ile yapılmaktadır.  = (“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.  = (“Employee”);  Söz dizimi ile employee sınıfından hourly sınıfını türetmiş oluruz

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

 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

TEŞEKKURLER SORULAR??

 Deithel & Deithel Perl How to Program    E-bergi bilgisayar topluluğu elektronik dergisi :     %C3%B6zellikleri,3215..html