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

Slides:



Advertisements
Benzer bir sunumlar
NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Yazılım Geliştirme ve Java
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
C# İsim uzayları(namespace)
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
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İ
Veri ve Veri Yapıları Genel olarak bilgisayarlar.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Problemi Çözme Adımları
NESNEYE YÖNELİK PROGRAMLAMA
Bilgi Teknolojisinin Temel Kavramları
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ KONTROL : Prof. Dr. Asaf VAROL
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
HAZIRLAYANLAR HATİCE MERVE ÜNAL AYŞE ESKİCİ HİLAL POLAT NURŞAH ERDOĞAN
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
RAID Nedir?.
BENZETİM Prof.Dr.Berna Dengiz 4. Ders Modelleme yaklaşımları
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
NESNEYE YÖNELİK PROGRAMLAMANIN TEMEL İLKELERİ GENEL BİR BAKIŞ
Nesneye Dayalı Programlama
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.
Görsel C# ile Windows Programlama
Bilgisayar Programlama
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.
TBF - Genel Matematik I DERS – 8 : Grafik Çizimi
Algoritmalar (Algoritms)
KÜMELER.
Görsel Programlama Dr. Muhammet Balcılar
Algoritmalar (Algoritms)
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Bilişim Teknolojileri Okuryazarlığı
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
STiL ŞABLONU (CSS) TEMELLERİ
NESNEYE-YÖNELİK PROGRAMLAMA
JAVA’DA DÖNGÜLER.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Tamsayılı Programlama
Ders İçerik Sunusu Maltepe Üniversitesi
BİLGİSAYAR DESTEKLİ EĞİTİM UYGULAMALARI
KÜMELER.
Bilgi Teknolojisinin Temel Kavramları
Programlama Dilleri Visual Basic C# C++ Pascal Delphi.
SİSTEM Sistem, bir hedef veya amacı gerçekleştirmek üzere bir arada çalışan birbiriyle ilişkili parçalardan oluşan ve girdi-çıktıları olan sınırları.
PROJENİN ADI “Doğrusal Konumlandırıcılar” için Profesyonel Kontrol Ara yüz Tasarımı ve İmalatı.
RASYONEL SAYILAR.
BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi.
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Algoritmalar II Ders 6 Açgözlü Algoritmalar.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
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.
ANKARA ÜNİVERSİTESİ SAĞLIK BİLİMLERİ FAKÜLTESİ SOSYAL HİZMET BÖLÜMÜ
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
PROGRAMLAMA TEMELLERİ
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Problemi Çözme Adımları
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
Nesneye Dayalı Programlama 1
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Sunum transkripti:

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ KONU : KNAPSACK PROBLEMİNİN ANALİZİ, NESNE TABANLI PROGRAMLAMAYA GİRİŞ DERLEYENLER: Ahmet Can ÇAKIL Ali Murat GARİPCAN Özgür AYDIN Şahin KARA KONTROL : Prof. Dr. Asaf VAROL

Sırt Çantası Problemi (Knapsack Problem) Sırt çantası problemi ( Knapsack Problem- SÇP) tam sayılı programlamada en çok uğraşılan problemlerden birisidir. 1950 yılından beri bu türde problemlerin artması sonucu bilgisayar teknolojisi ile çözüm aranan ve çözüm sürelerinin iyileştirmeye çalışılan problemdir. Bilgisayar kullanımı ile birlikte karşılaşılan problemlerin bir çoğu çözüme ulaşmıştır. Bu tip problemleri incelersek en önemlisinin çözüm sürelerinde görülen uzamalardır.

Bu durumda her eşyanın ; Pahası; pi Ağırlığı; ai Torba problemi basitçe bir torbanın içerisine en fazla eşyanın yerleştirilmesini hedefler. Problem hırsız örneğinden daha iyi anlaşılabilir. Buna göre bir hırsız çantasına ağırlıkça en az, pahaca en çok eşyayı doldurmak ister. Bu durumda her eşyanın ; Pahası; pi Ağırlığı; ai Çantanın taşıyabileceği azamî kapasite; ci olarak tanımlansın.

0-1 Torba problemi Bu problem tipinde eşyalar ya tamamen alınır ya da tamamen bırakılır. Alınacak olan eşyanın bir kısmını almak mümkün değildir. Dolayısıyla bir eşyanın alınıp alınmamasını xi ile gösterecek olursak problem aşağıdaki şekilde modellenebilir: Bu modelde görüldüğü üzere, xi değeri, 0 veya 1 olabilmektedir. 0 olması durumunda i elemanından alınmıyor, 1 olduğunda ise i elemanının tamamı alınıyor demektir.

Örnek: ÜRÜN AĞIRLIK DEĞER 1.Saat 0,2 Kg 100 TL 2.Fotoğraf Makinası 0,5 Kg 300 TL 3.Kamera 0,7 Kg 700 TL 4.Cep Telefonu 0,3 Kg 500 TL 5.Anahtar 0,1 Kg 10 TL Şimdi elimizdeki 1 Kg kapasiteli bir torbaya yukarıdaki eşyaları en fazla para edecek şekilde yerleştirelim. Bu durumda ci=1kg olarak tanımlamış oluyoruz.

Örnek Çözümler; i = { 1,2,4} 100+300+500=900 TL i = { 1,3,5} 100+700+10=810 TL i = { 3,4} 700+500=1200 TL Çözümde ise i = { 3,4} kümesi alınıyor. Yani kamera ve cep telefonunu aldığımızda 1200 TL ile en pahalı ve torbamıza sığan kümeyi almış oluyoruz.

Sınırlı Torba Problemi (Bounded Knapsack Problem) Bu problem tipinde ise her eşyadan alınabilecek miktarda sınır vardır. Bu problemin modeli aşağıda verilmiştir: bi=Üründen alınabilecek maksimum miktar

Örnek: ÜRÜN KG FİYATI MEVCUT 1.Elma 2 TL 100 Kg 2.Armut 5 TL 300 Kg 3.Kiraz 4 TL 700 Kg 4.Portakal 3,5 TL 500 Kg Şeklinde verilen ürünlerden 10kg’lık bir fileye en pahalı nasıl bir seçim yapılmalıdır sorusu sorulabilir.

PYTHON PROGRAMLAMA DİLİ Bu durumda her üründen değişik miktarlarda var. Örneğin en fazla 4kg elma alabiliyoruz bu değer modelimizdeki bi ile gösterilen ve bir üründen en fazla alınabilen değerdir. Toplamda en fazla alabileceğimiz değer ise hala ci‘dir. Bu problem tipinde her üründen alınan miktar ise değişmektedir ve bu miktar xi ile gösterilir. Örneğin yukarıdaki problemin çözümünde 1kg portakal fileye konulacaksa, bu durumda x4 = 1, b4 = 5 , p4 = 3.5 olarak alınmalıdır.

Nesne Tabanlı Programlama (NTP) (Object Oriented Programming) Temelde NTP belirli bir problemin çözüm adımlarını parçalara bölerek bunları objeler haline dönüştürmektir. Buradaki temel amaç ileriki zamanlarda aynı problem ile karşılaşıldığında bu objelerin kullanılması. Tabii çözümü bir bütün olarak değil de bir parçalar olarak ele alındığından dolayı müdahalesi ve değişimi de daha hızlı olmaktadır. Nesne Tabanlı Programlama dillerinden ; Simula, Smalltalk, C++, Object Pascal, Objective-C, Eiffel, Python, Java, C Sharp programlama dili, Visual Basic .NET ve REALbasic'i sayabiliriz.

PYTHON PROGRAMLAMA DİLİ Nesne Tabanlı Programlama Örnek vermemiz gerekirse ; Mesela bir araba üreticisinin yeni bir araba serisi üretmek istediğini düşünün. Bu araba serisinin belirli özellikleri olduğu gibi birbirinden farklı özellikleri de olacaktır. Yapılacak araba serisi: A10, A11, A12 diye adlandırıldığını farz edelim. Her üç araba serisi içinde klima, merkezi kilit, müzik sistemi olacaktır. A11 serisinde ekstra olarak yol bilgisayarı, yağmur sensörü olacaktır. A12 serisinde ise yol bilgisayarı, yağmur sensörü, hava yastığı, sesli kontrol sistemi yer alıyor.

Nesne Tabanlı Programlama Her üç araba serisi içinde kullanılan ortak materyaller klima, merkezi kilit, müzik sistemi, camlar, kapılar, farlar, direksiyon, vb materyallerdir. Firma bu materyallerin tasarımı ve üretimini bir sefer yapmaktadır. Ama aynı materyalleri üç farklı araba serisinde kullanmaktadır. NTP’daki ana mantık da budur. Problemimiz araba yapmaktır, problemin çözümü için gerekli olan yol belirlenir. Daha sonra bu çözüm yolu parçalara bölünür. Bütün parçalar birer objedir. Ve objeler birleşimi problemin çözümüdür.

Nesne Tabanlı Programlamanın Ortaya Çıkışı ve Faydaları NTP aslında bir mecburiyetten ortaya çıkmıştır. NTP nın en büyük avantajı büyük çaplı projelerdeki zaman ve para kaybını önlemesidir. 1960 ların sonuna doğru programların git gide büyümesi ve programlardaki değişikliklerin çok uzun zaman alması ve maliyetinin yüksek olması ile ortaya çıkmış bir programlama yaklaşımıdır. Prosedürel Programlama (sınıf yapısı olmadan) ile kodlanan yazılımlardaki değişiklikler çok uzun zaman alır. Mesela değiştirmek istediğiniz bir işlev için binlerce satır kod arasına girip saatlerce belki günlerce uğraşmanız gerekmektedir. NTP da ise bu mantık farklıdır. Değiştirmek istediğiniz işlevi sınıf yapısı içerisinde değiştirip hemen güncelleyebilirsiniz. Bu hem kodların daha derli toplu olmasını sağlar. Hem yapılacak olan değişiklikler için zaman kaybı olmaz ve maliyeti düşürür. Ayrıca yazılan sınıf yapılarını tekrar tekrar kullanabilirsiniz. Yani bir proje içerisinde yer alan sınıf yapısını farklı bir projede kullanabilirsiniz.

Nesne Tabanlı Programlamanın Kullanımı NTP kullanmadaki temel amaç iş gücünü düşürtmek ve aynı işlemleri tekrar tekrar yapmamaktır. Diyelim ki sıklıkla kullandığınız bir animasyonun temel işlevlerini bir sınıf haline dönüştürmek istiyorsunuz. Böylece her seferinde aynı kodları yazmak zorunda kalmadan sorununuzu çözmüş olursunuz. Ancak sırf şaşalı olsun diye de her zaman sınıf yapılarını kullanmak mantıklı değildir. Yani sadece bir sefer yapacağınız bir işlem için oturup sınıflar yazmanızın bir anlamı yoktur. Çünkü işlemi sadece bir sefer yapıyorsunuzdur.

Sonuç Olarak; Nesne Yönelimli Programlama (Object Oriented Programming) önce ne yapacağınıza karar veririsiniz sonra bunları oluşturmaya başlarsınız. Her bir parça ayrı ayrı sınıf (class) yapılarından oluşur. Bu yapılara istediğiniz zaman müdahale edebilir istediğiniz zaman değiştirebilirsiniz. Tabii bu yapıları farklı projeler için kullanabilirsiniz. Buradaki ana mantık bir sefer oluşturduğunuz sınıfı farklı projelerde kullanabilmenizdir. Tabii zaman ve maliyette düşmektedir.

KAYNAKLAR MIT Üniversitesinin ders notları http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/lecture-videos/ http://www.python.org/ http://www.cyber-warrior.org/FORum/display_topic_threads.asp?ForumID=124&TopicID=394638&light=1&ThreadPage=1 http://www.istihza.com