700 likes | 1.36k Vues
Temel Kavramlarla Python’da Programlama. Çağın Dönmez -Gamze Orhon- Göktuğ Serez-Mert Kılıç-Merve Tok. Programlama. Programlama dili , makinalara özellikle de bilgisayarlara verilen yönergeler bütünüdür . Makinaların nasıl davranması gerektiğini programlama dilleri aracılığıyla yaparız .
E N D
TemelKavramlarlaPython’daProgramlama ÇağınDönmez-Gamze Orhon-GöktuğSerez-MertKılıç-MerveTok
Programlama • Programlamadili, makinalaraözellikle de bilgisayarlaraverilenyönergelerbütünüdür. • Makinalarınnasıldavranmasıgerektiğiniprogramlamadilleriaracılığıylayaparız. • Kısacasıprogramlama, insanınbilgisayarlailetişimkurmasınıntekyoludur
DerdimiziNasılAnlatırız? • Bilgisayaraderdimizianlatmanın 2 yoluvardır; • Direktolarak ( DüşükSeviyeliProgramlamaDilleri) • Dolaylıolarak(YüksekSeviyeliProgramlamaDilleri)
DüşükSeviyeliProgramlamaDilleri • Sadeceilkelişlemlermevcuttur. • Bilgisayarlarınmimarilerideğişiklikgösterdiğinden her ayrımimariiçinayrıprogramlamadillerimevcuttur. • Yani ‘A’ bilgisayarıiçinyazılmışbirdüşükseviyeliprogramlamadili ‘B’ bilgisayarınataşınamaz. • Makina Dili ve Assembly
Makina Dili • Yapılanbütünişlemlerikilikdüzendeyazılansayılaradayanır. (binary sistem) • Binary sistemde 2 durum vardır: 0 ve 1 • Akımvarveakımyok • Bilgisayarıntercümeolmadananlayabildiğitekdildir.
Assembly • Makinadilindeki 0 ve 1’lerin yerinisayılarvekarakterleralıyor. • Kodunyenidenkullanılabilmesiözelliğinigetiriyor. • Assembler adıverilenbirçevirmensayesindebilgisayarınanlayacağıbirbiçimeyaniMakinadilineçevrilir.
YüksekSeviyeliProgramlamaDilleri • Düşükseviyeliprogramlamadillerinininsanlartarafındankullanılmasıgüçlüğünedeniylegeliştirilmiştir. • Bütünyüksekseviyeliprogramlamadilleribilgisayarmimarisindenbağımsızdır. • Dahakolayanlaşılırvegeliştirilir. • Düşükseviyeliprogramlamadillerinegöre, bilgisayartarafındandahauzunsüredeişlenir. • C, C#, Java, Python….
NesneYönelimliProgramlama • Yapılaneylemedeğil, kullanılannesneyedayanır. • Olayınmantığıyladeğil, verininyapısıylailgilenir. • Örnek: • Nesne -> Araba • Özellikleri : • Renk -> kırmızı • Motor hacmi -> 1300 lt • Beygir -> 90 HP • Yakıttürü -> dizel • …
NesneYönelimliProgramlama CLASS: • Birnesneye ait bütünözelliklerintaslakolaraktanımlandığıbirimdir. • Öyleysenesnebirsınıfa ait özelbirörnektir, yanideğişkenleryerine gerçekdeğerlertutar.
Neden python’u tercih ederiz ? • Platform bağımlı değildir dolayısıyla Windows, Linux ve Mac’te kolaylıkla çalıştırılabilir. • Kullanımı kolay. • Öğrenimi kolay. • Kullanılabilecek kaynak çok fazla. • Bir çok Fortran kütüphanesinin python dili arayüzüvardır.
Neden python’u tercih ederiz ? • Python’da soyutlama işlemi yüksek seviyede kullanılır. • Örnek: intGMP kütüphanesi büyük sayılar. • Syntax kuralları diğer programlama dillerine göre kolaydır.(C/C++/C# veya Java). • Satırların hizalı olması gerekir. Böylece kodları daha anlaşılabilirdir. • Açık kaynak kodlu!
Python IDLE • IDLE, kurulum sırasında python ile birlikte gelir ve kod yazmak için iyi bir düzenleyicidir. • IDLE, Windows, Linux ve Mac’te çalışır. • IDLE için gerekli dökümantasyonları aşağıdaki linkte bulabilirsiniz. http://docs.python.org/library/idle.html
Örnekler : Hello Worldgirdi & çıktı • Print“Helloworld” • ad= raw_input(“Adınız ne?”) Print(ad)
Sayılar • Integers:1, –3, 42, 355, 888888888888888, -7777777777 • Floats: 3.0, 31e12, –6e-4 • Complex numbers : 3 + 2j, –4- 2j, 4.2 + 6.3j • Booleans : True, False • Operators: + (addition), – (subtraction), * (multiplication), / (division), ** (exponentiation), and % (modulus)
Strings • s = “helloworldpython” print s[0] • String’ler sabit objelerdir. • String’lerçevrili olabilir ‘<string>’, “<string>”, ‘’’<string>’’’ . • String’ler+ karakteri ile birbirine eklenebilir ve * karakteri iletekrar edilebilir.
Bölünmüş Stringler >>> word = ‘Help’ >>> word[:2] # İlk iki karakter 'He' >>> word[2:] # İlk iki karakter dışındaki her şey 'lp‘ >>> word[:2] + word[2:] # returns s >>> word[1:100] >>> word[10:] >>> word[2:1] >>> word[-1] # Son karakter 'A' >>> word[-2] >>> word[-2:] # Son iki karakter‘lp' >>> word[:-2] # Son iki karakter dışındaki her şey.
Ayırmak(split) ve yerine koymak(replace) • x = “x.yz.tk.g” • x.split() • x.split(“.”) • x.replace(“x”, ”y”)
Kümeler • Küme yapısı, python’da bir objenin tekliğini ve o kümenin bir elemanı olduğunu belirtmek için kullanılan sıralanması önemli olmayan bir veri tipidir. >>>x = set([1,2,3,1,5,3,2,4,1]) >>>print(x) >>>1 in x • Methods of sets: issubset(), union(), intersection(), difference(), copy(), add(), remove(), discard()
Listeler • Bir liste, string’ler de dahil, tuple’lar, listeler, sözlükler, fonksiyonlar, dosya işlemleri ve her hangi bir sayı türünü içerebilir. >>>[] >>>[1] >>>[1, 2, 3, 4, 5, 6, 7, 8, 12] >>>[1, "iki", 3L, 4.0, ["a", "b"], (5,6)]
Bölünmüş veİndekslenmiş Listeler x = [‘first’, ‘second’, ‘third’, ‘fourth’] >>> x[0] 'first' >>> x[2] 'third' >>> x[-1] 'fourth' >>> x[-2] 'third' >>> x[1:-1] ['second', 'third'] >>> x[0:3] ['first', 'second', 'third'] >>> x[-2:-1] ['third'] >>> x[:3] ['first', 'second', 'third'] >>> x[-2:] ['third', 'fourth'
Liste Fonksiyonları • Bazı fonksiyonlar: • (len, max, and min) • (in, +, and *) • the del statement • the list methods (append, count, extend, index, insert, pop, remove, reverse, and sort) will operate on lists.
Tuple’lar • Tuple’lar değiştirilemeyen listelere benzerler, yani oluşturulduktan sonra değiştirilemezler. • (1, "iki", 3L, 4.0, ["a", "b"], (5, 6)) • Functions are: • (in, +, and *) • len, max, min • index, count • Tuple’larfunctionlist()’i kullanarak listeleri dönüştürebilir.
Sözlükler • Key:value pairs • x = {1:"a", 2:"b", 3:"c", 4:"d"} • (len, del, clear, copy, get, has_key, items, keys, update, and values)
Dosya işlemleri f = open("myfile", "w") >>> f.write("Gerekirse yeni satır karakteri ile ilk satır\n") 44 >>> f.write("Dosyayayazmak için ikinci satır\n") 33 >>> f.close() >>> f = open("myfile", "r") >>> line1 = f.readline() >>> line2 = f.readline() >>> f.close() >>> print(line1, line2)
Fonksiyonlar def function(x, y, z,…): //Operations //.. Return result
Akış Denetimi – if, else if(elif),else x = 5 if x < 5: y = -1 z = 5 elif x > 5: y = 1 z = 11 else: y = 0 z = 10 print(x, y, z)
Akış Denetimi – Basit Döngüler u, v, x, y = 0, 0, 100, 30 while x > y: u = u + y x = x - y if x < y + 2: v = v + x x = 0 else: v = v + y + 2 x = x - y - 2 print(u, v)
Tek satırda takas – Multiple Assignments var1, var2 = 3, 5 var2, var1 = var1, var2
Example: Öklid GCD Algoritması #In python def gcd(a,b): while a: a, b = b%a, a return b //In C intgcd(int a, int b) { int m; while (b != 0) { m = a % b; a = b; b = m; } return a; }
Modüller nelerdir? • Modül,Python tanımlamavecümleleriniiçerenbirdosyadır. • Dosyaadısonekiilemodüladıdır (.py) . • Fibonacci örneği, • http://docs.python.org/tutorial/modules.htmldaha fazlası için...
HesapMakinası • ToplamaÇıkarmaÇarpmaBölmeişlemleriniyapanbirhesapmakinasitasarlayınız • Bu hesapmakinasındakullanıcıdanhangiişlemiyapacağıbilgisialınacak • Alınanbilgileregöre if-else ‘lerleişlemtamamlanacak
Fonksiyonlar • Recursive Fonksiyonlar • FibonnacciSayıları
En çok bilinen GUI kütüphaneleri • Tkinter • wxPython • PyQt • Pygame • PyGTK
Tkinter ile wxPython • Sabittir, python kurulumu ile birlikte gelir. • Öğrenmesi kolay • Kötü görünüm • Bazı durularda ekstra kütüphane indirmek gerekebilir. (PMW gibi) • Çok karmaşık işler için uygun değildir. • Araçları(Widget) çok olan büyük • bir kütüphanedir. • Güzel bir görünüme sahiptir. • Esnek bir yapıya sahiptir. • Arada buglar yaratabilir. • İndirilip kurulması gereklidir. • Python 2.7 nin üzerini • desteklememektedir.
Tkinter fromTkinterimport * root = Tk() #Program bu kısma yazılır root.mainloop()
Tkinter fromTkinterimport * root = Tk() myContainer1 = Frame(root) myContainer1.pack() button1 = Button(myContainer1) button1["text"]= "Hello, World!" button1["background"] = "green" button1.pack() root.mainloop()
Tkinter fromTkinterimport * classMyApp: def __init__(self, myParent): self.myContainer1 = Frame(myParent) self.myContainer1.pack() self.button1 = Button(self.myContainer1) self.button1["text"]= "Bir" self.button1.pack(side=LEFT) self.button2 = Button(self.myContainer1) self.button2.configure(text="Iki") self.button2.pack(side=LEFT)
Tkinter self.button3 = Button(self.myContainer1) self.button3.configure(text="Uc", background = "blue") self.button3.pack(side=LEFT) self.label1 = Label(self.myContainer1,text = "Bes") self.label1.pack(side=RIGHT) self.button4 = Button(self.myContainer1) self.button4.configure(text="Dort", background = "green", command=self.Neriman) self.button4.pack()
Tkinter def Neriman(self): print "Neriman" root = Tk() myapp = MyApp(root) root.mainloop()
Tkinter fromTkinterimport * classMyApp: def __init__(self, myParent): self.myContainer1 = Frame(myParent) self.myContainer1.pack() self.labelSayi1 = Label(self.myContainer1, height=5) self.labelSayi1.configure(text="Sayi 1:") self.labelSayi1.pack(side = LEFT) self.entrySayi1 = Entry(self.myContainer1) self.entrySayi1.pack(side = LEFT) self.entrySayi2 = Entry(self.myContainer1) self.entrySayi2.pack(side = RIGHT) self.labelSayi2 = Label(self.myContainer1) self.labelSayi2.configure(text="Sayi 2:") self.labelSayi2.pack(side = RIGHT)
Tkinter self.buttonsum = Button(self.myContainer1) self.buttonsum.configure(text="OBEB Hesapla", background = "green", command=self.OBEB_Hesapla) self.buttonsum.pack(side = BOTTOM, fill=X) def OBEB_Hesapla(self): #Entry den gelen degerler otomatik stringolduguicinint e ceviririz sayi1 = int(self.entrySayi1.get()) sayi2 = int(self.entrySayi2.get()) while sayi1: sayi1,sayi2 = (sayi2%sayi1),sayi1 sonuc = sayi2 printsonuc root = Tk() myapp = MyApp(root) root.mainloop()
Soru • Tkinter kullanarak iki sayının aritmetik ortalamasını hesaplayan uygulamayı yazınız. • Programda bulunması gereken elemanlar, bir Frame, iki Entry, iki Label ve bir Button.
Referanslar • https://wiki.python.org/moin/TkInter • http://thinkingtkinter.sourceforge.net/ • http://wiki.wxpython.org/Choosing%20wxPython%20over%20Tkinter
Soru – Sezar Şifreleme (CeaserCipher) CeaserCipher bilinen en ilkel şifreleme metodudur. Verilen şifrelenecek yazının (plaintextin) her harfini verilen değer kadar kaydırıyoruz. (shift) Bu sayının 255i geçtikten sonra başa dönmesini sağlamak için mod(256) sını alıyoruz ve şifrelenmiş yazıyı elde ediyoruz.(ciphertext)
Örnek • Plaintext: neriman kaydırma sayısı = 2 • Ciphertext: pgtkocp