Upcoming SlideShare
×

# Phyton Programlama Dili

1,867 views

Published on

Neslih

Published in: Education
1 Like
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total views
1,867
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
42
0
Likes
1
Embeds 0
No embeds

No notes for slide
• Eg identifier is a token that can have lexemes such a s sum and total Examples of tokens and lexemes on p 106 of statement (on previous page) index = 2 * count + 17;
• Explain meta symbols used “ ::=“ - “consists of “ “is the same as” “ |” - “or” Explain the process of derivation starting with the goal symbol of the language The multiple sentential forms are shown on next slide Further examaple on p 109 of text “Grammar for a small language”
• in this derivation the leftmost non terminal is replaced - this is called a leftmost derivation the sentential form consisting of only terminals (lexemes) is the generated sentence. Most languages are infinite so cannot generate all sentences Conversely could start with a sentence “the apple eats the man” and work backward through the derivation to arrive at &lt;sentence&gt; and so have shown that the sentence is legal in the language. Louden p,67 Articles at the beginning of sentence should have capital Such ‘positional properties’ not easy in context-free grammars
• Grammars naturally describe the hierarchical syntactic structure of sentences The parse tree is labeled by nonterminals at interior nodes and terminals at leasves All terminals and nonterminals in a derivation are included Every Subtree of a parse tree describes one instance of an abstraction in a grammar statements Not all terminals and nonterminals may be necessary to determine the structure Abstract syntax trees abstract the essential structure of the parse tree
• ### Phyton Programlama Dili

1. 1. PYTHON
2. 2. GİRİŞPython ilk olarak 1990’ların başında Guido van Rossumtarafından ABC adlı bir dilin devamı olarak geliştirilmeyebaşlanmıştır. İlk olarak CWI bünyesinde geliştirilenPython daha sonra sırasıyla CNRI ve BeOpen Labs.bünyesinde geliştirilmiştir. Günümüzde isegeliştirilmesine Python Software Foundation tarafındandevam edilmektedir. 1.6.1 sürümünden beri GPL uyumlubir lisans olan Python Lisansı altında dağıtılmaktadır
3. 3. NEDEN PYTHON?Pyhtonun Genel Özellikleri:1- Nesneye Yönelik Bir Dildir Pythonda herşey bir nesnedir Fonksiyonlar, Değişkenler, Sabitler, Sınıflar ve Modüller birer nesnedir. En basit bir karakter sabiti bile nesnedir2- Özgürdür Python kaynak kodu açık, özgür bir dildir Kaynağı C ile yazılmıştır Eğer C biliyorsanız kendinize has bir python yorumlayıcısı yazabilir ve bu yeni yorumlayıcıyı dağıtabilirsiniz
4. 4. 3- Yorumlamalı / DerlemeliPythonda yazdığınız kodlar yorumlayıcı tarafından önce ara koda(byte-code) çevrilir Daha sonra yine yorumlayıcı tarafındanyorumlanarak çalıştırılır Ara Koda çevirme işi oldukça hızlıdır Ve eğerkodda bir değişiklik yapılmadıysa tekrar ara koda çevirmek yerinedoğrudan daha önceki ara koddan yorumlanır Böylece ara kodaçevirme işlemi atlanarak çalıştırma işlemine hızla geçilir Hattaprogramınızı bir başka yerde çalıştırmak için kaynak kod yerine direktolarak ara kodu götürebilirsiniz Ancak şunu da belirtmek gerekir Arakodu çalıştırmak için yine de python yorumlayıcısının kurulu olmasıgerekirNet platformuna özgü Python derleyicileri mevcut Bu derleyicilersayesinde Python yorumlayıcısı olmadan derlenen programlar netortamında çalıştırılabilmektedir Bu da taşınabilirlik olarak önemlidir
5. 5. 4- TaşınabilirlikPythonda yazılmış bir programı Windows, Unix ve Türevleri, MacOs gibi pekçok işletim sisteminde çalıştırabilirsiniz Python programlarının işletim sistemive donanım bağımlılığı olmadığından taşınabilirliği oldukça yüksektir Ancakyine de belli bir işletim sistemine özel modül kullandığınızda bu taşınabilirliközelliğini ortadan kaldırabilir Eğer belli bir platforma özel bir programyazmıyorsanız o platforma özgü modülleri kullanmamalısınız
6. 6. 5- GüçlüdürPythonda aradığınız hemen hemen her şeyi bulabilir, her türlüuygulamayı geliştirebilirsiniz Unix tabanında C/C++kütüphanelerini kullanabilir, güçlü COM desteği sayesindewindowsta Visual C++ın gücünü kullanabilirsiniz COM desteği ilewindows uygulamalarına erişip her istediğinizi yaptırabilirsiniz6- HızlıdırPython bir alt benzeri olan Javaya oranla oldukça hızlıdırPythonda modüller bağımsız olduklarından istemediğiniz Hiçbirmodül hafızaya yüklenmez Böylelikle hem bellek kullanımı düşer,hemde uygulamanıza daha hakim olursunuz Ayrıca tanımlınesnelerle işiniz bittiğinde hafızadan silinecek ve hafıza gereksizyere meşgul edilmeyecektir
7. 7. 7- Yazımı Kolaydır Kullanımı ve yazımı oldukça kolay bir dildir Kod yazım kuralları çok sıkı olduğundan sizi düzenli kod yazmaya itecektir Bu da bugün yazdığınız bir kodu 5 yıl sonra bile rahatça anlayabilmenize olanak tanır Ayrıca pek çok dile göre aynı işi daha az kod yazarak yapabilirsiniz
8. 8. 8- Kullanım AlanıPythonu Veritabanı programcılığı ve Internet programcılığındakullanabilirsiniz Yani Pythonla hem ticari uygulamalar geliştirebilir hem dedinamik internet sayfaları hazırlayabilirsinizPython programlama dili son dönemlerde oldukça popülerlik kazandıÖrneğin Pardus Linux işletim sisteminin çok büyük bir desteği mevcut Pekçok uygulama Pythonda yazılmış durumda Yine aynı şekilde RedHatınkurulum arabirimi ve diğer pek çok program pythonla yazılmış durumdaGoogle, Nasa, Yahoo gibi pek çok firma python kullanıyorYanlış anlamaPython kelimesi aslında çoğu kişinin zannettiği gibi "Piton Yılanı" anlamınagelmiyor. "Python“ ismi Guido Van Rossumun çok sevdiği, "MontyPython" adlı altı kişilik bir İngiliz komedi grubunun "Monty Pythons FlyingCircus" adlı gösterisinden geliyor. Guido Van Rossum Pythonugeliştirmeye 1990 yılında başlamış... Yani aslında Python için nispeten yenibir dil deneb
9. 9. GENEL ÖZELLİKLERPython her ne kadar bir script dili olsa da diğer scripting dillerinde olan bazıözellikleri içermez.Python’da küçük-büyük harf ayrımı mevcuttur. Bu nedenle foobar, fooBar veFooBar birbirinden farklı nesnelerdir.Python’da değişkenler kullanılmadan önce mutlaka ilklendirilmelidir(initialization). Python yorumlayıcısı değişkenlere kullanıldığı yere göre otomatikbir değer atamayacaktır.İlklendirilmemiş bir değeri kullanmaya kalktığınızda bir NameError ilekarşılaşırsınız. Ancak buna rağmen değişkenlerin tiplerinin herhangi bir özel yerdetanımlanması gerekmez, örneğin kirkiki=42 yazdığımızda kirkiki adlı değişkenotomatik olarak integer veri tipine sahip olacaktır.Son olarak Python’da herşey bir nesnedir. Bu nedenle mesela bir değişkeneatamadan doğrudan kullanacağımız bir string de bir string değişkenle aynıözelliklere sahiptir.
10. 10. KOD YAZMAK İÇİN Python kodlarını yazmak için iki seçeneğimiz var. Birincisi kodlarımızı doğrudan Python komut satırına yazabiliyoruz. Python komut satırını açmak için ALT+F2 tuşlarına basıp çıkan ekrana "konsole" yazmamız, ardından da konsolda "python" komutunu vermemiz gerekiyor. Bu ekranda komutlarımızı ">>>" işaretinden hemen sonra yazacağız.  İkinci seçeneğimiz ise bir metin düzenleyici kullanmaktır. Bazı ufak kodları denemek için komut satırı yeterli olsa da hem kodlarımızı kaydetmek hem de büyük programlarda rahat hareket edebilmek için mutlaka bir metin düzenleyici kullanmamız gerekiyor. Şu aşamada kullanım kolaylığı nedeniyle "kwrite" metin düzenleyici önerilebilir. ALT+F2 tuşlarına basıp "kwrite" yazarak boş bir kwrite belgesi açabiliriz. Python kodlarını yazmaya başlamadan önce, boş belgenin ilk satırına #!/usr/bin/env python yazmamız gerekiyor. Bu satır sayesinde sistemimiz, yazdığımız kodların hangi program tarafından çalıştırılacağını anlıyor.
11. 11. İşte Python’ca Hello World!: print "Hello world!“Yorum SatırlarıPython’da iki tip yorum satırı mevcuttur. Tek satırlık yorumlar #karakteri ile başlarlar. Birden fazla satıra sahip yorumlar ise ”””karakterleri ile başlayıp aynı şekildekapanırlar.
12. 12. KULLANICIYLA İLETİŞİM: VERİ ALIŞ- VERİŞİ Pythonda kullanıcıdan birtakım veriler alabilmek, yanikullanıcıyla iletişime geçebilmek için ikitane fonksiyondanfaydalanılır. Bunlardan öncelikle ilkine bakalım:1.raw_input() fonksiyonu#!/usr/bin/env python# -*- coding: utf-8 -*-a=raw_input("Lütfen parolanızı girin:")print "Teşekkürler!“Şimdi bu belgeyi "deneme.py" ismiyle kaydediyoruz. Dahasonra bir konsol ekranı açıp,programımızın kayıtlı olduğu dizine geçerek şu komutlaprogramımızı çalıştırıyoruz:python deneme.py
13. 13. Şimdi raw_input fonksiyonuna bir ara verip, kullanıcıdan bilgi almak için kullanabileceğimiz ikinci fonksiyondan biraz bahsedelim.2.input() fonksiyonuTıpkı raw_input fonksiyonunda olduğu gibi, bu komutla da kullanıcılardanbazı bilgilerialabiliyoruz. Şu basit örneğe bir bakalım:#!/usr/bin/env python# -*- coding: utf-8 -*-a = input("Lütfen bir sayı girin:")b = input("Lütfen başka bir sayı daha girin:")print a + braw_input() fonksiyonunun, girilen verileri "karakter dizisi" (string) olarak;input() fonksiyonunun ise "tamsayı" (integer) olarak algılanır.
14. 14. PYTHONDA KOŞULA BAĞLI DURUMLARBu iş için kullanacağımız üç tane ifade var: if..., else: ve elif...#!/usr/bin/env python#-*- coding: utf-8 -*-meyve = raw_input("Bir meyve adı yazınız: ")if meyve = = "elma":print "elma bir meyvedir"elif meyve = = "armut":print "armut bir meyvedir"else:print meyve, "bir meyve değildir!"
15. 15. PYTHONDA DÖNGÜLER1.while döngüsü#!/usr/bin/env python#-*- coding: utf-8 -*-a=0while a < 100: a=a+1 print a#!/usr/bin/env python#-*- coding: utf-8 -*-soru = raw_input("Arkadaşım sen deli misin?")while soru != "hayır": print "delisin sen deli! Kulakları küpeli!“Dikkat ederseniz burada da işleçlerimizden birini kullandık. Kullandığımızişleç "eşit değildir“ anlamına gelen "!=" işleci...
16. 16. 2.For döngüsü#!/usr/bin/env python#-*- coding: utf-8 -*-for zombi in range(1, 100): print zombiBen burada değişken adı olarak zombi kelimesini kullandım,siz istersenizOsman da kullanabilirsiniz #!/usr/bin/env python#-*- coding: utf-8 -*-for kelimeler in "linux": print kelimelerGördüğünüz gibi, for döngüsüyle yalnızca sayıları değil, karakter dizilerininöğelerini de dökebiliyoruz ekrana.
17. 17. 3.range() fonksiyonuBu fonksiyon Pythonda sayı aralıklarını belirtmemizi sağlar. print range(100)komutu 0 ile 100 arasındaki sayıları yazdırmamızı sağlar.Başka bir örnek daha verelim: print range(100,200)komutu 100 ile 200 arasındaki sayıları döker.Bir örnek daha: print range(1,100,2)Bu komut ise 1 ile 100 arasındaki sayıları 2şer 2şer atlayarak yazdırmamızı sağlar...
18. 18. 4.len() fonksiyonuBu fonksiyon, karakter dizilerinin uzunluğunu gösterir.#!/usr/bin/env python#-*- coding: utf-8 -*-a = "Afyonkarahisar"print len(a)Bu kod, "Afyonkarahisar" karakter dizisi içindeki harflerinsayısını ekrana dökecektir.
20. 20. 6.continue ifadesi Bu ifade ise döngü içinde bir bloğun es geçilip ondan sonraki bloğunçalıştırılmasını sağlar. Çok bilindik bir örnek verelim:#!/usr/bin/env python#-*- coding:utf-8 -*-while True: s = raw_input("Bir sayı girin: ") if s = = "iptal": break if len(s) <= 3: continue print "En fazla üç haneli bir sayı girebilirsiniz."
21. 21. PYTHONDA LİSTELER, DEMETLER, SÖZLÜKLERListeler Pythonda herhangi bir liste oluşturmak için önce listemize bir ad vermemiz, ardından da köşeli parantez kullanarak bu listenin öğelerini belirlememiz gerekiyor.liste = ["Hale", "Jale", "Lale", 12, 23]Python komut satırında şu ifadeyi yazın: type("Hale")Bu komutun çıktısı: <type str>Şimdi aynı komutu şu şekilde deniyoruz: type(123)Bu komut bize şu çıktıyı verecektir: <type int>Şimdi komut satırında liste yazdığımızda tanımladığımız "liste" adlı listenin öğeleri ekrana yazdırılacaktır.Tanımladığımız bu listenin öğe sayısını len() fonksiyonu yardımıyla öğrenebiliriz: len(liste) 5
22. 22. append parçacığı İlk parçacığımız "append". Bu kelime Türkçede "eklemek, iliştirmek“anlamına geliyor...Oluşturduğumuz listeye yeni bir öğe eklemek için"append" parçacığından faydalanıyoruz: liste.append("Mehmet")"Python, liste içindeki öğeleri sıralarken, listenin ilk öğesini 0dan başlatır."insert parçacığı İşte bu "insert" parçacığı yardımıyla listenin herhangi bir noktasına öğeekleyebiliyoruz. Bu kelime Türkçede "yerleştirmek, sokmak" anlamınageliyor... insert parçacığı yardımıyla listenin 1. sırasına (Dikkat edin, 0ıncısıraya demiyoruz) "Ahmet"i yerleştirebiliriz: liste.insert(1, "Ahmet")Burada parantez içindeki ilk sayı, "Ahmet" öğesinin liste içinde yerleştirile-ceği sırayı gösterir. Bu komutun çıktısı şöyle olur:["Hale", "Ahmet", "Jale", "Lale", 12, 23, "Mehmet"]
23. 23. extend parçacığıyeni_liste = ["Simovic", "Prekazi", "Jardel", "Nouma"] liste.extend(yeni_liste)Bu komutun çıktısı şöyle olacaktır:[Veli, Hale, Ahmet, Jale, Lale, 12, 23, Mehmet, Simovic, Prekazi, Jardel, Nouma]remove parçacığıliste.remove("Nouma")listeden nouma silinir.pop parçacığı liste.pop()Gördüğünüz gibi, Python bu pop parçacığı yardımıyla listenin sonöğesini çıkaracak, üstelik çıkardığı öğeyi ekrana yazdıracaktır. Eğerbu komutu şöyle verirsek ne olur? liste.pop(0)Bu komut ise listedeki "ilk" yani "0ıncı" öğeyi çıkarır ve çıkardığıöğeyi ekrana yazdırır.reverse parçacığıBu parçacık listedeki öğelerin sırasını ters yüz eder. Şöyle ki: liste.reverse()Bu komutu üst üste iki kez verirseniz listeniz ilk haline dönecektir.
24. 24. count parçacığıListelerle birlikte kullanabileceğimiz başka bir parçacık dabudur. Görevi ise liste içinde bir öğenin kaç kez geçtiğinisöylemektir: liste.count("Prekazi")index parçacığıDiyelim ki listedeki "Jardel" öğesinin listenin kaçıncı sırasında olduğunumerak ediyorsunuz. İşte bu index parçacığı sizin aradığınız şey! Buparçacığı şöyle kullanıyoruz: liste.index("Jardel")sort parçacığıBazen listemizdeki öğeleri alfabe sırasına dizmek isteriz. İşte yüreğimizdeböyle bir istek hasıl olduğunda kullanacağımız parçacığın adı "sort": liste.sort()
25. 25. Demetler Demetler (tuples) listelere benzer. Ama listeler ile aralarında çok temel bir farkvardır. Listeler üzerinde oynamalar yapabiliriz. Yani öğe ekleyebilir, öğe çıkarabiliriz.Demetlerde ise böyle bir şey yoktur... Demeti şu şekilde tanımlıyoruz: demet = "Ali", "Veli", 49, 50Gördüğünüz gibi, yaptığımız bu iş değişken tanımlamaya çok benziyor. İstersek demetinÖğelerini parantez içinde de gösterebiliriz. demet2 = ("Ali", "Veli", 49, 50)Peki boş bir demet nasıl oluşturulur? Çok basit: demet = ()Peki tek öğeli bir demet nasıl oluşturulur? O kadar basit değil. Aslında basit ama biraztuhaf: hede = ("inek",)Yukarıda anlattığımız şekilde bir demet oluşturma işine "demetleme" (tuple packing)adı veriliyor. Bunun tersini de yapabiliriz. Buna da "demet açma" deniyor (sequenceunpacking):Önce demetleyelim: aile = "Anne", "Baba", "Kardesler"Şimdi demeti açalım: a, b, c = aileBu şekilde komut satırına "a" yazarsak, "Anne" öğesi; "b" yazarsak "Baba" öğesi; cYazarsak "Kardesler" öğesi ekrana yazdırılacaktır.
26. 26. Sözlüklersozluk = {"elma": "meyve", "domates": "sebze", 1: "sayi"}telefon_defteri = {"Ahmet": "0533 123 45 67", "Kezban": "0532 321 54 76", "Feristah": "0533 333 33 33"} Burada örneğin, "elma" bir "anahtar", "meyve" ise bu anahtarın"değeri"dir. Aynı şekilde "sebze“ değerinin anahtarı "domates"tir.Dolayısıyla Pythonda sözlük; "anahtar" ve "değer" arasındaki ilişkiyigösteren bir veri tipidir! Şimdi gelelim bu sözlükleri nasıl yöneteceğimize... Diyelim kisözlüğümüze yeni bir öğe eklemek istiyoruz:telefon_defteri["Zekiye"] = "0544 444 01 00“ Eğer biz sözlükteki bütün öğeleri silmek istersek şu komut kullanılıyor:telefon_defteri.clear()
27. 27. FONKSİYON TANIMLAMA Fonksiyonları tanımlarken "def" adlı bir parçacıktan yararlanacağız. Bu "def" parçacığının hemen ardından ise fonksiyonumuzun adını belirleme- miz gerekiyor... def ilk_fonksiyonumuz(): print "Ben Python! Monty Python!“ Fonksiyonlarda Parametreler Args=demet ve kwargs=sözlük def foobar(foo, bar="42", *args, **kwargs): ... Dikkat etmemiz gereken kural parametrelerin sıraının önce normal parametreler, ardından öntanımlı değere sahip parametreler, ardından geri kalan parametreleri toplamak üzere *args ve **kwargs tanımlarını kullanmaktır. Python’un fonksiyon tanımlarında içerdiği en önemli kolaylık değişken uzunluktaki parametre listeleridir. Bu sayede bir fonksiyonun sınırsız sayıda parametre alması sağlanabildiği gibi bir demet, liste veya sözlük içerisindeki veriler de kolayca bir fonksiyona parametre olarak geçirilebilir.( args adlı bir demet kwargs adlı bir sözlükten önce gelir)