Gürer Özen pardus.org.tr ile Python gibi kod yazma.

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Ayrık Yapılar Algoritma Analizi.
Dersin Adı:ALGORİTMA GELİŞTİME TEKNİKLERİ Dersin Kodu:YBS506 Konu:Kontrol Yapıları(if / if-else) 2.HAFTA.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
JavaScript Birinci Hafta.
BİLEŞİK ATAMA VE DÖNGÜLER
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Kontrol İfadeleri : 2.Kısım
void medyan(int cevap[]) { int j; siralama(cevap);
04/02/10 Django Web Uygulamaları Geliştirmede Çağdaş bir Yaklaşım.
DÖNGÜ İFADELERİ.
KOŞUL İFADELERİ onbirc.com/133.
Kontrol Çevrimleri FOR WHILE DO-WHILE IF-ELSE SWITCH-CASE-DEFAULT
Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT
Bölüm 4 – Kontrol İfadeleri:1.kısım
Bölüm 2: Program Denetimi
EDUTIME Java Day 4 Serdar TÜRKEL.
Karar ifadeleri ve Döngüler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
Java Programlama Koleksiyon(Collection) Sınıfları
DÖNGÜ İFADELERİ.
Yapısal Program Geliştirme – if, if-else
Program Kontrol İfadeleri
Döngü ve Koşul Komutları
C# Metot Overloading (Aşırı yükleme)
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ DERLEYENLER: Ahmet Can ÇAKIL Ali Murat GARİPCAN Özgür AYDIN Şahin KARA KONTROL : Prof. Dr. Asaf VAROL KONU : LİSTELERE.
JAVA İ LE PROGRAMLAMAYA G İ R İ Ş Ekim Dr. Galip Aydın.
.Net teknolojisi ve C# Yasin Gedik Dokuz Eylül Üniversitesi (4. Sınıf) Microsoft Danışman Öğrenci
ŞART İFADELERİ.
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
PROGRAM KONTROL VE DÖNGÜ DEYİMLERİ
Kontrol Yapıları ve Döngüler
Çoklu dallanma seçimi: switch
DÖNGÜLER.
JAVA’DA DÖNGÜLER.
PHP'de Program Denetimi
JAVA’DA DİZİLER Dr.Galip AYDIN.
Ders İçeriği Liste Soyut veri yapısı (ADT)
PROGRAM DENETİM DEYİMLERİ
4. KONTROL VE DÖNGÜ KOMUTLARI
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
String class String karakterler dizisidir
Python Aslı Ergün.
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.
JAVA PROGRAMLAMA ORNEKLER
KOŞUL İFADELERİ.
DÖNGÜ DEYİMLERİ Programın belirli bir kesiminin birden fazla tekrarlanması işlemine DÖNGÜ denir. Bir değişken belirli bir değerden başlayıp, son değeri.
Akış Kontrolü ve Döngüler
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Python Programlama Dili R. Emre Başar 5 Ocak 2005 Guido Van Rossum da kim oluyor?
Özgür Yazılım A.Ş. Al Ruby'i Vur Python'a Python Tutorial'ı Üzerinde Gezintiler Erek Göktürk – Onur Küçük.
P y t h o n Gürer Özen Yüksek düşünceler için yüksek bir dil gerekir. -- Aristophanes Herşeyi optimize edersiniz,
PHP'de Program Denetimi
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H04
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
Python ve Cgi Scripting Giriş
4- OPERATÖR – koşul - döngü Nesne Yönelimli Programlama - i
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Bilgisayar Bilimi Fonksiyon Yazma.
Bilgisayar Programlamasına ve Veri Analizine Giriş - III
Bilgisayar Bilimi Fonksiyonlar-2.
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
Sunum transkripti:

Gürer Özen pardus.org.tr ile Python gibi kod yazma

Liste [ 1, 2, 3, 4 ] Demet ( 1, 2, 3, 4 ) ?

Tek elemanlı demet ( 1, )

int find_cell(char *text, int *row, int *column) {... if (found) { *row = x; *column = y; return 1; } else return 0; } def find_cell(text):... if found: return (row, column) else: return None Birden fazla değeri döndürmek için demet idealdir!

adaylar = [ ( “Ali”, 24 ), ( “Zeynep”, 22 ), ( “Ekin”, 90 ) ] for aday in adaylar: if aday[1] > 20 in aday[1] < 25: print “Adı”, aday[0], “yaşı”, aday[1] for aday, yas in adaylar: if yas in range(21, 25): print “Adı”, aday, “yaşı”, yas Liste içinde demet! Dönüşte demet! Karşılaştırmada demet!

Metin nasıl birleştirilir? “merhaba ” + “dünya” “%s %s” % (“merhaba”, “dünya”) string.join((“merhaba ”, “dünya”)) “ ”.join((“merhaba“, “dünya”))

isimler = ( “ali”, “barış”, “can”, “didem”) metin = “” for isim in isimler: metin += “, %s” % metin “, “.join(isimler) metin == “ “.join( metin.split() )

Temel döngü yapısı for (int i = 0; i < 100; i++) {... } i = 0 while i < 100:... i += 1 for i in range(100):...

a = (1, 2, 3, 4, 5) def cift_mi(x): return x & 1 == 0 def kare(x): return x * x b = [] for x in a: if cift_mi(x): b.append(x) b = filter(cift_mi, a) d = map( kare, filter( cift_mi, a ) ) b = [] for x in a: b.append(a * a) b = map(kare, a)

QListBox dns = [] item = self.dns_widget.firstItem() while item: dns.append(str(item.text())) item = item.next() class Iter: def __init__(self, box): self.item = box.firstItem() def next(self): item = self.item if not item: raise StopIteration self.item = item.next() return item class IterableListBox(QListBox): def __iter__(self): return Iter(self) self.dns = IterableListBox() dns = list(self.dns) API yetersiz!

İçiçe bir kod for yol, dizinler, dosyalar in os.walk(“/home/koray”): for dosya in dosyalar: if dosya.endswith(“.key”): if sha1sum(yol, dosya) != db_get_sha1(yol, dosya): dosya_kurtar(yol, dosya) Bellek harcayan bir kod def get_key_files(path): tmp = [] for yol, dizinler, dosyalar in os.walk(path): if dosya.endswith(“.key”): tmp.append((yol, dosya)) return tmp for dosya, yol in get_key_files(“/home/koray”): if sha1sum(yol, dosya) != db_get_sha1(yol, dosya): dosya_kurtar(yol, dosya)

Üreteç kullanan bir kod def get_key_files(path): for yol, dizinler, dosyalar in os.walk(path): if dosya.endswith(“.key”): yield (yol, dosya) for dosya, yol in get_key_files(“/home/koray”): if sha1sum(yol, dosya) != db_get_sha1(yol, dosya): dosya_kurtar(yol, dosya)

switch(x - 2) { case 0: return y + 1; case 1: return y*y + 5*y – 9 case 2: return y – (y+1) / 3 default: return x*y } t = x - 2 if t == 0: return y + 1 elif t == 1: return y*y + 5*y – 9 elif t == 2: return y – (y+1) / 3 else: return x*y switch... case... yok bu Python'da?

Ya da var! operations = { 0: lambda: y + 1, 1: lambda: y*y + 5*y – 9 2: lambda: y – (y + 1) / 3 } func = operations.get(x – 2, lambda: x*y) func()

Pythonic olmayan bir API örneği: from xml.dom.minidom import getDOMImplementation impl = getDOMImplementation() doc = impl.createDocument(None, “Etiket”, None) top = doc.documentElement text = doc.createTextNode(“Karakter verisi”) top.appendChild(text) Pythonic olan başka bir tasarım: import piksemel doc = piksemel.newDocument(“Etiket”) doc.insertData(“Karakter verisi”)

API ilk uyarlama: def komut_oku(soket):... return (istemci, komut, deger1, deger2) t = komut_oku(s) print t[0]

API gelişmesini sürdürür: class Cevap: def __init__(self, istemci, komut,deger1, deger2): self.istemci = istemci self.komut = komut self.deger1 = deger1 self.deger2 = deger2 def __getitem__(self, key): return (self.istemci, self.komut, self.deger1, self.deger2)[int(key)] def komut_oku(soket):... return Cevap(istemci, komut, deger1, deger2) t = komut_oku(soket) print t[0] print t.istemci

class Cevap: def __init__(self, istemci, komut,deger1, deger2): self.istemci = istemci self.komut = komut self.deger1 = deger1 self.deger2 = deger2 class Struct: def __init__(self, **args): self.__dict__.update(args) class Cevap(Struct): pass Cevap(istemci=istemci, komut=komut,...) Tekrarlı bir kısım!

Standart tipleri de geliştirebiliriz: a = { “en”: “Hello world”, “tr”: “Merhaba dünya” } metin = a.get(language(), None) if not metin: a.get(“en”) print metin class Metin(dict): def __str__(self): txt = self.get(language(), None) if not txt: txt = self.get(“en”) return txt a= Metin(a) print a

Sakın ha! I = 5 l = 8 O = 4 l – I + 0 if aday == “Ali Veli”:... if aday > 30:... print aday.aday if aday_ismi == “Ali Veli”:... if aday_adedi > 30:... print aday.isim Değişken isimleri önemli, çünkü tip bilgisi yok!

dosya.py (Javadan etkilenmiş) TGZ, ZIP, NORMAL = range(3) class def tip(ad): if ad.endswith(“.tar.gz”): return TGZ elif ad.endswith(“.zip”): return ZIP else: return NORMAL... dosya.py (Pythonic) TGZ, ZIP, NORMAL = range(3) def tip(ad): if ad.endswith(“.tar.gz”): return TGZ elif ad.endswith(“.zip”): return ZIP else: return NORMAL class Dosya:...

Boş except çok tehlikeli bir yapı! try: asdf except: pass

Doğru yanlış kime göre... dogru_ahmet = True if dogru_ahmet is True:... if dogru_ahmet == True:... if dogru_ahmet:... Singleton: if deger is None:... Berbat Kötü Pythonic

Sorularınız...