FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
MIT503 Veri Yapıları ve algoritmalar
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Web 2.0 Nedir Eğitimde Nasıl Kullanılır?
IT503 Veri Yapıları ve algoritmalar
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
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İ
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Web 2.0 Araçları Rıdvan Gezici
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
KONTROL ÖZELLİKLERİ.
Numbers of Opcodes Nihal Güngör.
İşletİM SİSTEMİ NEDİR? İşletim sistemi bilgisayar donanımlarının birbirleri ile uyumlu bir biçimde çalışmasını sağlayan bir yazılımdır. İşletim sistemi;
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ KONTROL : Prof. Dr. Asaf VAROL
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Bu sunum Akdeniz Üniversitesi öğrencisi tarafından Bilgisayar 2 dersi için hazırlanmıştır. KONU: WEB 2.0 ARAÇLARI.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Algoritmalar DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama
İŞLETİM SİSTEMLERİ KONTROL: PROF.DR.ASAF VAROL DÖNE KARAOĞLAN BİLGİSAYAR SİSTEMLERİ Bilgisayar Öğretmenliği (Gece) - 4.
BBY Bilgi Teknolojisi ve Yönetimi
Özyineli Sıralama Algoritmaları
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
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 : KAPSÜLLEME.
HESAP TABLOSU PROGRAMLARI
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.
EXCEL DE VERİ TABANI (DATABASE) İŞLEMLERİ
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 8: Windows Formları
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Metod Aşırı Yükleme (Overloading). İzle
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
BİT’ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme
HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)
EDUTIME Java Day 8 Serdar TÜRKEL.
Chapter 11: Exception Handling
BTP205 – Görsel Programlama I
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
DÖNGÜLER.
C#’TA DÖNGÜLER onbirc.com/133.
CANSU ALTIN TÜRKÇE ÖĞRETMENLİĞİ 2. SINIF 1. ÖĞRETİM
BİLGİSAYAR DESTEKLİ EĞİTİM UYGULAMALARI
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi.
Sistem Analizi ve Tasarımı
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
T.C. ÖMER HALİSDEMİR ÜNİVERSİTESİ EĞİTİM FAKÜLTESİ BİLGİSAYAR VE ÖĞRETİM TEKNOLOJİLERİ ÖĞRETMENLİĞİ EĞİTİMDE BİLİŞİM TEKNOLOJİLERİ – 2 DERSİ ALGORİTMALAR.
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
İleri Algoritma Analizi
SONLU ELEMANLAR YÖNTEMİ
Bilgisayar Programlamasına ve Veri Analizine Giriş
İleri Algoritma Analizi
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
Fırat Üniversitesi Mühendislik Fakültesi Elektrik-Elektronik Müh.
NİŞANTAŞI ÜNİVERSİTESİ
İleri Algoritma Analizi
NİŞANTAŞI ÜNİVERSİTESİ
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
1 EXCEL DE VERİ TABANI (DATABASE) İŞLEMLERİ Excel de bir veritabanı oluşturulabilir veya başka programlarda (Access gibi) oluşturulmuş olan Veri Tabanları.
Sunum transkripti:

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ KONU : BÖLME VE KONKUER YÖNTEMLERİ, BİRLEŞTİRME SIRALAMALARI, İSTİSNALAR DERLEYENLER: Ahmet Can ÇAKIL Ali Murat GARİPCAN Özgür AYDIN Şahin KARA KONTROL : Prof. Dr. Asaf VAROL

Konu Başlıkları Bölme ve Konkuer Yöntemleri(Böl ve İşgal Et) Birleştirme Sıralamaları(Merge Methods) İstisnalar (Hata Yakalama) ValueError ZeroDivisionError finally Örnekler Kaynaklar finally

Giriş Bilgisayar bilimlerinde böl ve işgal et (D&C) önemli bir algoritma tasarım tekniğidir. Bir problemin iki veya daha fazla benzer alt probleme parçalanarak özyinelemeli olarak çözülmesine dayanmaktadır. Daha sonra bu alt problemlerin çözümleri arasından çözüm seçilir. Arama (Mergesort, Quicksort), "Discrete Fourier Transforms" (FFTs) dahil olmak üzere bir çok algoritma bu yöntemi kullanmaktadır. D&C algoritmaları özyinelemeli yordamlar şeklinde gerçekleştirilmektedir. Dilerseniz sonuçların bir veri tipinde saklandığı özyinelemeli olmayan şekilde de kullanabilirsiniz.

Giriş Örnek vererek ne olduğunu anlamaya çalışalım… Problemimiz bir dizi içerisindeki en büyük sayıyı bulmak. Bunu aşağıdaki çok kolay algoritma yardımıyla tek geçişte bulabilirsiniz…

Giriş Ancak listeyi büyükten küçüğe sıralayınız şeklinde bir soru ile karşılaşmış olsaydık bunun için belli başlı algoritmalar geliştirmiş veya geliştirilmiş olan algoritmalardan bir kütüphane kullanmamız gerekecekti. Örneğin biz Python kütüphanelerinden sıralama için sort methodunu kullanıyorduk. Bu bölümde sıralama yöntemleri içerisinde kullanılan bir yöntem olan Bölme ve Konkuer yöntemini anlamaya çalışacağız.(D&C)

Bölme ve Konkuer Yöntemleri Basitçe anlatacak olursak D&C; Sıralanacak olan diziyi(listeyi) ikişer elemanı kalacak şekilde sürekli olarak ikiye böler. (Bölme Yöntemi) Sonra bu parçaları kendi içlerinde sıralar.(Konkuer Yöntemi) Sonra bu sıraladığı parçaları diğer parçalar ile karşılaştırarak tekrar birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımı elde edilmiş olur. Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır.

Örnek Yaklaşım Elimizde ki liste 5 , 2 , 20 , 4 , 45 , 8 , 7 , 3 sayılarından oluşsun. 5 , 2 , 20 , 4 45 , 8 , 7 , 3 5 , 2 20 , 4 45 , 8 7 , 3 Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır. Bu adıma kadar yapılan işlemler Bölme işleminin adımlarıydı… Şimdi Sıralı Birleştirme(Merge) işlemini gerçekleştiriyoruz.

Örnek Yaklaşım Elimizde ki liste 5 , 2 , 20 , 4 , 45 , 8 , 7 , 3 sayılarından oluşsun. 5 , 2 , 20 , 4 45 , 8 , 7 , 3 5 , 2 20 , 4 45 , 8 7 , 3 Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır. 2 , 5 4 , 20 8 , 45 3 , 7 2 , 4 , 5 , 20 3 , 7 , 8 , 45 2 , 3 , 4 , 5 , 7 , 8 , 20 , 45

Hata Yakalama Programın çalışması sırasında oluşabilecek hataların ele alınması ve kimi zaman giderilmesi, kimi zaman da uygun bir hata mesajına çevirilmesi için kullanılan yapılardır. Hatırlarsanız ilk konularımızda input komutu ile kullanıcıdan iki sayı girilmesi istenmiş, ancak kullanıcı sayı yerine harf veya başka bir işleç girdiğinde programlarımız hata ile durdurulmuştu. Bu gibi durumlarda hatasız programlar oluşturabilmek için komut satırlarımızın kontroller ile çoğaldığını biliyoruz. Hata yakalama komutları olan try…except blokları dene…kabul_et mantığı ile çalışan yapılardır ve bugün hemen hemen bütün önemli ve büyük projelerde kullanılmak zorundadır. Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır.

Hata Yakalama Örnek verecek olursak ; A bankasının bankamatiğine gittiniz ve para çekeceksiniz. Tüm işlemleri gerçekleştirdiniz ve en son adımda paranızı çekmek için düğmeye bastınız. Düğmeye bastıktan sonra bankamatik paranızı size teslim etmek için saydığı anda elektrik kesildiğini düşünün. Bu durumda paranız, siz komutu verdiğiniz anda hesabınızdan düşecektir ama elinize para geçmemiş olacaktır. Şayet try…except yapısı kullanılmasaydı bu gibi durumların yaşanması kaçınılmazdı. Ancak bu bloklar sayesinde paranın en son para haznesinden çıkısına kadar tüm işlemler sistem ile kontrol ediliyor. Her hangi bir hata ile karşılaşılması durumunda tüm işlemler sistem tarafından otomatik olarak iptal ediliyor. Böylece güvenlik maksimum seviyede sağlanmış oluyor. Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır.

Hata Yakalama Yapı ; try: except: ...hata vereceğini bildiğimiz kodlar... except: ...hata geldiğinde kullanıcıya gösterilecek mesaj veya yapılacak işlemler… Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır.

Hata Yakalama Örnek bir program; İki sayı girişi yapılsın ve bu iki sayıyı bir birine bölelim; Oluşabilecek Hatalar : Sıfıra bölme hatası Alfanumerik bilgi girişi Bu nedenle yukarıdaki programı try…except blokları ile tasarlayacağız. Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır.

Eski yöntem ile bu örneği programlayacak olursak ; Örnek 1 Doğru giriş… Eski yöntem ile bu örneği programlayacak olursak ; Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır. Sıfıra bölme hatası… Yanlış değer giriş hatası…

try…except ValueError yöntem ile bu örneği programlayacak olursak ; Örnek 2 Doğru giriş… Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır. try…except ValueError yöntem ile bu örneği programlayacak olursak ; Yanlış değer giriş hatası… Sıfıra bölme hatası…

Örnek 2 Doğru giriş… Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır. try…except ZeroDivisionError yöntem ile bu örneği programlayacak olursak ; Yanlış değer giriş hatası… Sıfıra bölme hatası…

try…except…finally yöntem ile bu örneği programlayacak olursak ; Örnek 3 Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır. try…except…finally yöntem ile bu örneği programlayacak olursak ;

KAYNAKLAR http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/video-lectures/lecture-10/ http://tr.wikipedia.org/wiki/Birle%C5%9Ftirmeli_s%C4%B1ralama http://en.wikipedia.org/wiki/Divide_and_conquer_algorithm http://www.istihza.com/py3/hata.html http://kodveus.blogspot.com/2007/04/bl-ve-igal-et-divide-conquer.html http://members.comu.edu.tr/kadayif/algoritmaanalizi/algoritmaanalizi.htm