Naive Bayes Sınıflandırıcısı

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Naive Bayes Sınıflandırıcısı"

Transkript

1 Naive Bayes Sınıflandırıcısı Basit haliyle bir sınıflandırma-kategorilendirme algoritmasıdır. İsmini 17.yy da yaşamış Thomas Bayes adında bir matematikçiden alır. Verilerin sınıflandırılmasından daha çok nasıl sınıflandırıldığı önemlidir bu algoritmada. En sade hali ile bir olayın herhangi bir kategoriye ait olmasinin olasılığını hesaplamada kullanilir. En önemli kuralı niteliklerin birbirinden bağımsız olduğudur çünkü nitelikler birbirini etkiliyorsa burada olasılık hesabı zordur.niteliklerinin hepsinin aynı derecede önemli olduğu kabul edilir. Sonucun çıkma olasılığı o sonuca etkiyen tüm niteliklerin olasılıklarının çarpımıdır. Koşullu Olasılık ve Naive Bayes Olasılık Gösterimi Naive Bayes teoremine girmeden önce koşullu olasılık kavramını anlamak gerekir. Koşullu olasılık ise daha önce olmuş bir olaya bakarak bir sonraki olayın gerçekleşme olasılığını bulur. Örneğin bir demokrat senatörün kadın olma olasılığını hesaplayalım. Bir senatör ya demokrat ya da cumhuriyetçi olabiliyor. Yani demokrat olma olasılığı 1/2. Bir insan da erkek veya kadın olabildiğine göre 1/2 olasılığımızda buradan gelir. Sonuçları çarptığımızda da cevabımız olan 1/4 ü elde etmiş oluruz. Naive Bayes için kullanacağımız formül ise P ( A B )= P ( B A ) x P(A) / P(B) yani B olayı gerçekleştiğinde A nın olma olasılığı demektir. Açıklamalı hali ise : (Kategorinin olma olasılığı * elimizdeki niteliklerin olma olasılığı) / küme sayısı). Naive Bayes in tam olarak nasıl kullanıldığına bir örnekle bakalım.

2 Rüzgar Tenis oynanıyor mu Şiddeti? Yüksek Zayıf Hayır Sıcak Yüksek Güçlü Hayır Bulutlu Sıcak Yüksek Zayıf Evet 4.Gün Yağmurlu Ilık Yüksek Zayıf Evet 5.Gün Yağmurlu Soğuk Normal Zayıf Evet 6.Gün Yağmurlu Soğuk Normal Güçlü Hayır 7.Gün Bulutlu Soğuk Normal Güçlü Evet 8.Gün Güneşli Ilık Yüksek Zayıf Hayır 9.Gün Güneşli Soğuk Normal Zayıf Evet 10.Gün Yağmurlu Ilık Normal Zayıf Evet 11.Gün Güneşli Ilık Normal Güçlü Evet 12.Gün Bulutlu Ilık Yüksek Güçlü Evet 13.Gün Bulutlu Sıcak Normal Zayıf Evet 14.Gün Yağmurlu Ilık Yüksek Güçlü Hayır Günler Hava Durumu Sıcaklık Nem Oranı 1.Gün Güneşli Sıcak 2.Gün Güneşli 3.Gün Bizden istenen koşullar şunlar : 15.günde ; Hava durumu : Güneşli Sıcaklık : Soğuk Nem : Yüksek Rüzgar : Güçlü Tenis oynanıyor mu : Evet İşlemleri yaparken her niteliğin kendi olasılık kümesinin büyüklüğüne bölündüğüne dikkat etmeliyiz. Önce toplam sayılarımızı yazalım. Toplam veri sayısı : 14 Toplam Evet sayısı : 9 Toplam Hayır sayısı : 5

3 Evet çıkma olasılığı P(y) = 9/14 x 2/9 x 3/9 x 3/9 x 3/9 = 0,0053 Hayır çıkma olasılığı P(n) = 5/14 x 3/5 x 1/5 x 4/5 x 3/5 = 0,0205 Yani tenis oynanmama olasılığı daha yüksek. Örneğin Weka Üzerinde Gösterimi Şekil 1. Datasetimiz

4

5

6

7 Ve sonucumuz karşımıza çıkıyor. Sıfır-Frekans Nedir? (Zero Frequency) Yani kayıtlarımız arasında 0 olsaydı? Burada Laplace Correction yöntemini kullanarak sorunu çözeriz. Her değere 0-1 arasında bir değer eklenerek bu sorun çözülüyor ve bu sorunun sonucuna pek etki etmeyecektir yani çok değiştirmeyecektir. Bununla ilgili Sadi Evren Şeker in videosunda bahsettiği kısmı buraya tıklayarak izleyebilirsiniz.

8 Naive Bayes günlük yaşantımızda nerelerde kullanılıyor? Makine öğrenmesindeki temel sınıflandırıcılardandır. Spam filtrelemede çoğunlukla kullanılır. Robotik çalışmalar,görüntü işleme,veri Madenciliği,Metin ayrıştırılması ve Ürün sınıflandırma gibi alanlarda kullanılır. Naive Bayes in Dezavantajları Avantajları ve Avantajları Nispeten de olsa kolay anlaşılabilir ve yapılandırılabilir. Küçük bir veri kümesiyle bile kolayca eğitilir yapıdadır. Rakiplerine göre hızlı çalışır. Dezavantajları Her niteliğin birbirinden bağımsız olduğunu kabul eder ama bu her durum karşısında geçerli değildir. Değişkenler arası ilişki gösterilemiyor. Referanslar : /naif-bayes-siniflandiricisi-naive-bayes/ 2. oritmasi/ goritmas.html 7.

9 8. yazilimcorbasi.blogspot.com.tr/2012/02/naive-bayesclassifier.html 9. planation-of-naive-bayes-classification 10. Veri Madenciliği Yöntemleri by Dr. Yalçın Özkan sf bayes-classifier/ XUUnJQwxrZq/wiki/Naive_Bayes_sınıflandırıcı.html Yazılım Design) Tasarımı(Software Yazılım Nedir? Hem bilgisayar sistemini oluşturan donanım parçalarının yönetimini hem de kullanıcıların işlerini yapmak için gerekli olan konular topluluğuna yazılım denir. Tasarım ise herhangi bir mühendislik sürecindeki ilk adım sayılabilir. ürünü geliştirme Bir kodlayıcı, ne kadar iyi olursa olsun, bir tasarım yapıp onu yeterli bir şekilde yazılı hale getirmedikten sonra

10 verimli bir geliştirme yapamaz. Yazılım tasarımı, Bir binanın temeline benzetilebilir yeteri kadar sağlam olmayan bir temel üzerine plansızca inşa edilen katlardan inşa edilen katlardan oluşan bir binanın depreme dayanıklı olması da beklenemez. Ayrıca üzerine başka katlarda çıkmak da mümkün olmayabilir. Tasarımın temel amacı, ziyaretçi ile içerik arasında gerçekleşen iletişimi kolaylaştırmaktır. Ziyaretçilerin içeriği özgürce keşfedebilecekleri arayüz geliştirmek öncelikli prensip olmalıdır. çalışmasını Tasarım Aşaması (Design stage) Tasarım, yazılımın testine kadar her şeyi etkilediğinden nitelik unsurunun öne çıktığı ilk aşama olma özelliğini taşımaktadır. Yazılım geliştirme sürecinin ana aşamalarından ilki olan isterler çözümlemesi daha kuramsal iken, tasarım, kodlama ve test daha tekniktir. Tasarım aşaması bir tür süreç şeklindedir. Aşamalar halinde sürdürülen bu süreç sonunda ortaya çıkan tasarım, kodlamanın ve testin temelini oluşturduğu için mutlaka yeterli dikkat ve zaman ayrılmalıdır. Tasarımcılar, sistem tasarımının yapılması, sisteminin yazılım öğelerinin tasarlanması, öğeler de yer alacak standart yazılım birimlerinin belirlemesi ve bu uygulama için hazırlanması, iç yapılarının tasarlarken sıfırdan başlamak

11 zorunda değildir. Daha önce benzer bir iş yapılmış ve başarılı olduğu görülmüş bir tasarım tekrar kullanılabilir. Tasarımın birinci amacı her zaman basitlik olmalıdır. Çünkü anlaşılır ve basit bir tasarım hem kodlamada hem de sonraki değişikliklerde kolaylık sağlar. Sistem öyle tasarlanmalıdır ki bir dizi değişiklik yapılsa bile sistem hala basit kalabilmelidir. Bunun için veri yapılarında esneklik sağlanmalı, Programlama dilinin sağladığı kolaylıklar göz önüne alınmalıdır. Basit tasarım, yetenekleri ve özellikleri kısıtlı tasarım olarak algılanmamalıdır. Tasarım Attributes) Nitelikleri(Design İşlevselliği, başarımı ve güvenilirliği yüksek, nitelikli bir ürün oluşturmak ana hedef olmalıdır. Öğrenim ve kullanım kolaylığı göz önünde tutulmalıdır. Tasarımın isterler ile izlenebilirliği olmalıdır. Geliştirilen birimin kodu ve testleri ile izlenebilirliği olmalıdır. Tasarım programlama dilinden olabildiğince bağımsız, kolay anlaşılabilir kolay değiştirilebilir Ve tekrar kullanılabilir olmalıdır. Yazılım projelerinde tasarım, projenin büyüklüğüne göre yazılım tasarım uzmanları tarafından kullanılır. veya yazılım mimarları

12 Yazılım Tasarım Design Process) Süreci(Software Genelde bir bütün olarak düşünülmesine rağmen yazılım tasarım aşaması da adımlar halinde gerçekleştirilir. En önemli adımlardan biri veri tasarımı olup, çözümleme sırasında toplanan bilgilerin ve bilgi yapılarının yazılımda kullanılacak veri yapılarına dönüştürülmesini içerir. Tasarım sırasında isterlerin yazılım geliştirmede kullanılacak ifadelere dönüştürülmesi ana amaçtır. Teknik olarak, süreç başında, bu ifadeler ve gösterim tarzı ile yazılımın genel görünüşünü oluşturulurken, süreç sonunda tasarım kaynak koda yakın bir hale gelir. Veri Tasarımı(Data Design) Veri, Bilgilerin işlenmemiş halidir. Örnek Verecek olursak Öğrenci bilgi Sistemindeki(Obis) öğrencininadi, ÖğrenciniSoyadi, ÖğrencininNumarasi Veya şirkette çalışan personeladı, PersonelSoyadi,PersonelCalistigi Departman bunların hepsi veriye örnektir.

13 Veri yapısı, Bilgisayar ortamında verilerin,etkin olarak saklanması ve işlenmesi için kullanılan yapıya denir. Veri modelleme, bir işletmenin, kurumun hatırlamaya değer bulduğu verilerin şekil ve metin olarak ifade edilmesidir. Veri Yapıları ve veri modelleri, Birbirleriyle mantıksal olarak ilişkili olan verileri yönetilebilir şekilde bir arada tutmaya yararlar. Bu yapı ve modeller, veriler arasındaki sıradüzensel ilişkileri ve erişim yöntemlerini de belirler. Yapıların düzenlemesi ve karmaşıklık düzeyi tamamen tasarımcı belirler. Tasarımcı, veriye erişim yöntemi, hız, etkinlik, büyüklük, işlev bakımından çözümlenmesini yaparak türlerini ve yapılarını belirler. en uygun veri Veri yapısı ile veri modeli, iç içe geçmiş iki ayrı kavramdır. Birisi verinin bellekte tutulması veya saklanmasıyla ilgilenirken diğeri veriler arasındaki ilişki ve bağıntılar konusuyla ilgilenir. İşlevsel çözümlemeye verilen önem kadar veri çözümlemesi ve tasarımı da önem verilmelidir.

14 İyi Bir Veri Tasarımı Nasıl Olmalı?(How to Design a Good Data) Veri Yapıları ve modelleri yanında bu yapılar üzerinde yapılacak işlemlerin de tanımlanması gereklidir. Bu tanımlama, nesneye yönelik tasarımda doğal olarak yapılır. Ancak tasarımda ayrı dikkat edilmelidir. Kullanılacak veri yapılarını oluşturan birimlerin türleri, sınırları ve birbirleri ile olan ilişkileri bir Veri Sözlüğü içinde toplanmalıdır. Bu sözlükte kullanılacak karmaşık yapıların ve algoritmaların tasarımında kolaylık sağlanır. Veri yapıları yalnızca kullanan modüllere görünür olmalıdır. Bu şekilde Bilgi Gizleme ilkesine uyulmuş olur. Çok kullanılacak veri yapıların soyut veri türleri şeklinde önceden geliştirilerek bir kütüphane haline getirilirse, tasarım sırasında bunlarla ilişkilendirilir ve kodlama test için zaman ayrılmasına gerek kalmaz. C, C++ dillerindeki kütüphaneler örnek verilebilir. Tasarım sırasında, kodlamada kullanılacak programlama dilinin özellikleri dikkate alınarak veri yapıları tanımlanır. Karmaşık veri yapılarının kullanımı gerekiyorsa kullanılacak programlama dili soyut veri türlerini(abstract data types) destekleyecek şekilde seçilmelidir.

15 Mimari Design) Tasarım(Architectural Mimari Tasarım, Sistemin tüm yapısının tasarımı ve sistemin nasıl kurulduğunu anlamayla ilgili aşamadır. Daha net olarak ifade edecek olursak, bu aşamada, sistemin nasıl bir yapı üzerine oturması gerektiği hakkında karar verilir. Uygulama yazılımı bir problemin çözümünü çeşitli parçalara bölerek sağlayabilir. Bu parçaların yazılımdaki karşılığı modüllerdir. Modüllerin sıradüzensel ilişkilerini gösteren yapıya uygulama yazılımı mimarisi denir. Yazılım içindeki modüller birer nesne olabileceği gibi, tasarım veya gerçekleştirme yönteminin özelliğine göre, birer programi birer paket, birer nesne veya birer yordam olabilirler. Yapının çıkış yelpazesi, genişliği ve derinliği modüler yapı hakkındaki önemli ölçütlerdir. Uygulama Yazılım Tasarımı Uygulama alanının özellikleri

16 Yazılımın kullanılacağı alanın gereksinimine göre yazılım birimlerini fiziksel olarak belirli donanım ögeleri üzerinde çalıştırmak gerekebilir. Sistemin merkezi yada dağınık olması, açık sistem olması, belirli bir amaçla kullanmak üzere tahsis edilmesi veya gömülü sistem olması mimari seçimine etki eder. Uygulama yazılımının karmaşıklık derecesi Basit uygulamalar, tek program içinde, her türlü arayüz ve bilgi işlemeyi kapsayacak şekilde geliştirilebilirler. Daha karmaşık uygulamalarda, hem geliştirme hem de yürütme bakımından yazılımı ögelere, ögeleri bileşenlere, onları da birimlere bölmek, daha kolay şekilde geliştirme, test ve bakım olanağı sağlar. Kullanıcı arayüz kısıtlamaları Geliştirilen yazılımın sonradan başka işletim sistemi veya donanım ile kullanılmak üzere farklı ortamlara taşınması gerekiyorsa, katmanlı bir yaklaşımla, asıl yazılımı olası taşıma işinden etkilenmeyecek şekilde tasarlamak gerekir. Bu nedenle, yazılım mimarisi içine uygun katmanlar yerleştirilebileceği gibi iletişimin zorluklarını gidermek üzere bir ara katman mantığı da kullanılabilir. Yordamsal Design) Tasarım(Procedural Yordam(procedure, function), bilgi işlemeyi gerçekleştirmek üzere yazılım modülünün iç yapısında bulunan ve belirli işlevleri olan kod parçalarıdır. Bir yordam, veri yapıları, döngüler, karşılaştırmalar, dallanmalar yardımıyla tüm bilgi işleme özelliklerini tanımlamalıdır.

17 Veri ve program yapılarının tasarımı tamamlandıktan sonra yordamsal tasarım başlar. Yordamsal tasarım, modüllerin iç yapılarındaki algoritmik ayrıntıların tanımlanmasıdır.tasarım,konuşma diline yakın bir anlatımla yapılabileceği gibi çeşitli şekilsel gösterimlelr de yapılabilir. Yordamsal Tasarım Nasıl Yapılır?(How to Do Procedural Design) A-)Yapısal Programlama Gösterimi: Yazılım tarihinin en eski tasarım yöntemlerinden biri işlevleri metinsel bir şekilde anlatmaktır. Bu anlatım için genellikle ingilizce kullanılmaktadır. Program tasarım dili(programming design language) adı verilen bir dil de tasarım için tanımlanmıştır. Sözde Kod(Psodue) adı verilen yöntem, Gerçek programlama dili yapılarına benzer şekilde,ancak daha serbest bir sözdilimiyle her yapı ve her yordam tanımlanır. Program tasarım dilleri genellikle ADA veya Pascal gibi yüksek düzey bir dili andırırlar. Özel bir yazılım paketi getirmeksizin normal bir metin yazıcı kullanılabilir. Tasarım dili ile yazılmış metin dosyalarını grafiksel bir tasarım yöntemine dönüştürülebilen araçlar da bulunmaktadır. Yordamsal Tasarım Özellikler Dillerinin Sahip Olduğu Ortak Her türlü yapıyı destekleyebilen sabit bir anahtar sözcük listesi Veri yapıları ve veri tipleri tanımlama yeteneği Alt program tanımlama ve çağırma düzeneği Bilgi işlemeyi serbest bir dille anlatabilme yeteneği Arayüz tanımlama yeteneği Giriş/Çıkış yapıları Zaman belirtimleri Bilinen yapıların kullanımı nedeniyle okunması ve takibi

18 kolaydır. Programlama diline yakın olduğu için kodlayıcının işi daha kolaydır. Ancak, bu anlatımda aşırıya kaçılır. ve gereksiz ayrıntıya girilirse tasarım uzar (örneğin anlaşılır olmasına rağmen bir veri yapısının tüm alanlarına tek tek veri atamayı göstermek gibi), ayrıntıya boğulur ve amacı dışına çıkılır. B-) Grafiksel Gösterimi: Bazen bir resim birçok satırdan oluşan bir anlatımın yerine geçebilir. Bu gerçekten hareketle, çeşitli grafiksel gösterim yöntemleri bulunmuş,bu yöntemleri kullanan yazılım tasarım araçları geliştirilmiştir.ancak bir şeklin eksik yada yanlış çizilmesi okuyucunun gösterim simgelerini iyi bilmemesi sınucu tasarımı yanlış anlaması hatalı kodlamaya neden olabilir. Bu nedenle grafiksel gösterimlerinin iyi öğrenilmesi ve iyi anlaşılması gereklidir. Yapısal çözümleme ve tasarım yapmak için veri akış diyagramları ve durum geçiş diyagramları kullanılır. Unified Modelling Language(UML) : Nesneye yönelik çözümleme ve tasarımın hem metinsel hem de grafiksel olarak yapılanilmesine yardımcı olan uluslararası çevrelerce kabul edilmiş, Standart ve yaygın bir tanımlama dilidir. UML Diyagram Türleri (Tr)

19 UML Diyagram Türleri (ENG) Akış Diyagramları (Flow Charts):En Eski ve en yaygın program tasarım yöntemlerinden biri akış diyagramları(flow Chart) kullanılmaktadır. Günümüzde bir program çok sayıda modülden veya yordamdan oluştuğundan, çok sayıda akış diyagramı kullanmak gerekebilir. Basit Flow Chart Kullanımı (Eng)

20 Basit Flow Chart Kullanımı (Tr) Arayüz Tasarımı(interface design) Arayüz tasarımı, kullanıcının faydalanması amacıyla sunmuş olduğunuz çeşitli yazılımsal ürünlerde onların işini kolaylaştırmak ve dilediklerini yapabilmelerini sağlamak amacıyla gerçekleştirilir. Arayüz tasarımlarının genel prensibi kullanıcı odaklı olmalarıdır. Kullanıcı odaklı arayüzün mutlaka sahip olması gereken üç nitelik bulunmaktadır. Etkileşimli arayüz, görsel tasarım ve bilgi mimarisi bu üç niteliği oluşturmaktadır. Kullanıcı odaklı arayüzün mutlaka sahip olması gereken üç nitelik bulunmaktadır. Etkileşimli arayüz, görsel tasarım ve bilgi mimarisi bu üç niteliği oluşturmaktadır.

21 Bileşen Arayüz Tasarımı Büyük Yazılımlar birkaç ana ögeden, her bir öge birkaç bileşenlerden ya da birimden oluşabilir. Bu bileşenler arasında mutlaka tanımlı bir arayüz vardır. Bileşenler ya da birimler birer yürütülebilir program olabilecekleri gibi, bir program grubu da olabilirler. Sistem- Altsistem Arayüz Yazılım Tasarımı Bilgi sistemlerinin bazıları, başka sistemleri, altsistem veya aygıtları tümleştirerek daha büyük sistemler elde etmek üzere tasarlanırlar.tümleştirme için özel olarak tasarlanan altsistem arayüz yazılımları kullanılır. Kullanıcı Arayüz Tasarımı Bilgi Sistemleri, insanların denetiminde çalıştıkların için kullanımı kolay, etkin ve açık arayüzlere sahip olmalıdırlar. Arayüz tasarımı gerçekleştirmek istiyorsanız öncelikli olarak kullanıcıyı merkeze yerleştirmelisiniz. Kullanıcının beklentilerini karşılayabilmeli, ihtiyaçlarına cevap verebilmeli ve onların eğilimlerini tahmin edebilmelisiniz. Referanslar(Kaynakçalar) Erhan SARIDOĞAN Yazılım Mühendisliği Kitabı Papatya Yayıncılık, rme#.we-ey2i0piu

22 Hazırlayan:Necmi Altuk Rifai Kuçi The Big O Notation The Big O Notation Yazdığımız bir algoritmanın doğru çalıştığından emin olmakla birlikte bu algoritmayı, daha önce yazılmış ve aynı sonucu veren başka algoritmalarla karşılaştırmak isteyebilirsiniz. Burada teknik olarak değerlendirilecek başlıca iki başlık söz konusudur. Birincisi algoritmaların bellek kullanım miktarı, ikincisi ise algoritmaların hesaplama yapmak için harcadığı süredir. Mesela yazdığınız bir algoritma aynı işi yapan diğer bir algoritmadan daha hızlı çalışmasına rağmen çoğu bilgisayar için bellek aşımı gerçekleştiriyorsa bu pek uygun olmayacaktır. Elbette diğer algoritmalarla karşılaştırma yapmak yerine, yazdığınız bir algoritmanın tek başına analizini yapmak da isteyebilirsiniz. Bunun için yazdığınız algoritmaları ve varsa karşılaştıracağınız algoritmaları tek tek çalıştırıp hız ve bellek testi yapabilirsiniz. Ama bu tahmin edebileceğiniz gibi hem zaman açısından sıkıntı yaratır hem de elde edeceğiniz veriler donanımsal ve sistemsel değişikliklerden dolayı bilimsel olmaz.(bu gibi işlemleri performans testi olarak da düşünebiliriz). Bu durumda matematiksel olarak ifade edebileceğimiz, donanımsal ve sistemsel bağımlılığı olmayan bir yönteme ihtiyacımız olacaktır. Bu yöntemle algoritmamıza girdi olarak verilen verilerin miktarına bağlı olarak sonuçlar üretiriz. İşte elde edilen bu sonuçlar ilgili algoritmanın

23 karmaşıklığı olarak tanımlanır. Bir algoritmanın karmaşıklığı performansını etkiler ama karmaşıklık ile performans farklı kavramlardır görüldüğü gibi. Karmaşıklık hesabı yapacağımız asimptotik notasyonlardan en çok kullanılanını açıklamaya çalışayım. Big O notasyonu, programlama dünyasında, algoritma ve program parçalarının kıyaslanması amacıyla tanımlanan bir zaman kompleksliği açıklama biçimidir. O notasyonu ilk olarak 1894 yılında Alman matematikçi Bachmann tarafından kullanılmış ve Landau tarafından da yaygınlaştırılmıştır. Bu yüzden adına Landau notasyonu veya Bachmann Landau notasyonu da denmektedir. Algoritmanın en kötü durum analizini yapmak için kullanılan notasyondur. Matematiksel olarak şöyle tanımlanır: (x) ve g(x) reel sayılarda tanımlı iki fonksiyon olmak üzere, x > k olacak şekilde bir k vardır öyle ki, f(x) < C* g(x) dir ve f(x) O(g(x)) şeklinde gösterilir. Burada C ve k sabit sayılardır ve x ten bağımsızdırlar. Bu tanımı bir örnekle daha açık hale getirmeye çalışayım: Burada k = 1 (x in 1 den büyük olduğu tüm durumlarda) ve C = 10 olarak alınmıştır. Aşağıda O fonksiyonu ile karmaşıklık hesaplamadaki bazı ana konuları madde madde açıklamaya çalışayım: Sabit zamanlı ifadeler O(1) ile gösterilirler. Örnek, atama işlemleri.

24 if else ifadelerinde, ifadenin if veya else bloğundaki hangi ifade karmaşıklık olarak daha büyükse O fonksiyonu o değeri döndürür. (Çünkü biliyorsunuz ki O fonksiyonu her zaman en kötü durumu analiz eder) Yani bunu şöyle ifade edebiliriz: Maks (if ifadesinin çalışma zamanı, else ifadesinin çalışma zamanı) Örneğin if bloğu içi O(1) else bloğunun içi O(n) ise if else bloğu O(n) olarak ele alınır. [crayon-5a37a44f40df /] Bir döngü ifadesinin içindeki bir ifade, döngünün dönme sayısı kadar çalışacağı için, eğer döngü N kez dönüyorsa ve döngü içindeki ifadenin çalışma zamanı C ise, toplam çalışma zamanı N*C dır. [crayon-5a37a44f40e /] İç içe döngülerde içteki döngü N kez, dıştaki döngü ise K kez dönüyorsa ve iç döngünün içindeki ifadenin çalışma zamanı C ise, toplam çalışma zamanı N*K*C dir. [crayon-5a37a44f40e0c /] O(1) : Sabit zaman / Constant time Girdi sayısına yani n e bağlı olmayan işlerdir. Sabit zamanlı gösterim izah edilirken genel olarak atama operasyonları ile örneklenmektedir. [crayon-5a37a44f40e /] Yukarıdaki atama operasyonu örneğin, Big O çerçevesinde O(1) olarak değerlendirilir. O(1) Big O çerçevesinde olası en iyi kıyas birimidir. Çünkü en az zamanı o alır. O(n) : Lineer

25 Koşturulacak operasyonun alacağı zaman eğer girdi sayısına bağlı olarak lineer olarak değişecekse, bu O(n) olarak değerlendirilir. Bunun meali, operasyonun alacağı zaman n e bağlıdır olacaktır. O(n) değerlendirmesine örnek için, döngü yapısı biçilmiş kaftandır. [crayon-5a37a44f40e1d /] Burada döngü içerisindeki atama operasyonun alacağı zaman O(1) dir. Fakat bu operasyon döngüdeki girdi sayısına bağlı olarak n kere tekrar edeceği için, alacağı zaman n e bağlıdır denir. Bu yüzden zaman kompleksliği burada O(n) dir. O(n) > O(1) dir çünkü girdi boyutuna bağlı olduğu için daha fazla zaman alacağı kabul edilir. O(log n): Logaritmik Burada girdi ve alacağı zaman logaritmik olarak ilerler. O(n) e göre daha az zaman alacağı kabul edilir. Örnek olarak girdi sayısı olarak n = 100 düşünülürse, O(n) için zaman kompleksliği 100 e bağlı olacaktır. log 100 = 2 olacağı için, O (log n) burada 2 ye bağlı olacaktır. Bu sebeple O(n) > O(log n) > O(1) dir. O(log n) için ideal örnek binary search algoritmasıdır. binary search algoritmasında dizi elemanları sıralı olduğu için, arama operasyonu her denemede kalan eleman sayısının yarısı kadar elenecektir. Bu sebeple binary search için O (log n) denilebilir. O(n log n) : Doğrusal Logaritmik Bir önceki örnek üzerinden girdi sayısı olarak n = 100 düşünülürse, O(n) için zaman kompleksliği 100 e bağlı olacaktır. log 100 = 2 olacağı için, O (n log n) burada 100* 2 = 200 e bağlı olacaktır. Bu sebeple O(n log n) > O (n) > O(log n) > O(1) dir.

26 O(n2) : Karesel Operasyon/ algoritma nın zaman kompleksliği n*n e bağlı olan durumlarda geçerlidir. Örneğin iç içe iki döngü operasyonun alacağı zaman n kere n kadardır. yani n*n e bağlıdır. Bu yüzden O(n 2 ) sonucuna varılır. Yine, iç içe üç döngü için zaman kompleksitesi gibi.. O(n3) olacaktır, çünkü n*n*n bağlıdır, Yeni kıyaslama şu biçimdedir. O(n 2 ) > O(n log n) > O(n) > O(log n) > O(1) O(n2) den daha ağır durumlar da olabilir, O(n!) ve O(cn) gibi. Big O ve Eleme Bir kod parçasının Big O analizi yapılırken tek tek Big O çıktıları hesaplanır ve en son sadeleştirmeye gidilir. Çünkü Big O çerçevesinde zaman kompleksliği olarak en büyük çıktı sonuç olarak kabul edilir. Katsayılardan ve diğer küçük Big O çıktılarından feragat edilir. Analizini Yapalım Aşağıda yer alan kod parçasının Big O gösterimi ise, O(n) dir. Ara sonuçlar matematiksel olarak birbirine eklenir ve eleme yapılarak sonuca ulaşılır. [crayon-5a37a44f40e /] Bilgisayar bilimlerinde bir algoritmanın incelenmesi sırasında sıkça kullanılan bu terim çalışmakta olan algoritmanın en kötü ihtimalle ne kadar başarılı olacağını incelemeye yarar.

27 Bilindiği üzere bilgisayar bilimlerinde yargılamalar kesin ve net olmak zorundadır. Tahmini ve belirsiz karar verilmesi istenmeyen bir durumdur. Bir algoritmanın ne kadar başarılı olacağının belirlenmesi de bu kararların daha kesin olmasını sağlar. Algoritmanın başarısını ise çalıştığı en iyi duruma göre ölçmek yanıltıcı olabilir çünkü her zaman en iyi durumla karşılaşılmaz. Algoritma analizinde kullanılan en önemli iki ölçü hafıza ve zaman kavramlarıdır. Yani bir algoritmanın ne kadar hızlı çalıştığı ve çalışırken ne kadar hafıza ihtiyacı olduğu, bu algoritmanın performansını belirleyen iki farklı boyuttur. En iyi algoritma en hızlı ve en az hafıza ihtiyacı ile çalışan algoritmadır. İşte en kötü durum analizi olayın bu iki boyutu için de kullanılabilir. Yani en kötü durumdaki hafıza ihtiyacı ve en kötü durumdaki hızı şeklinde algoritma analiz edilebilir.

28 Limit teorisindeki master teoremde büyük O ile gösterilen (big-oh) değer de bu en kötü durumu analiz etmektedir. Bu yüzden en kötü durum analizine, büyük O gösterimi (Big-O notation) veya algoritmanın sonsuza giderken nasıl değiştiğini anlatmak amacıyla büyüme oranı (growth rate) isimleri verilmektedir. Big O ya neden ihtiyaç duyarız? Hemen hemen her programlama dilinde çeşitli veri yapıları yer almaktadır. Bu veri yapıları üzerindeki operasyonlarda Big O ile yapılan kıyaslamaları incelemek, hangi durumda hangi veri yapısının tercih edileceği hususunda geliştiricilere fayda sağlamaktadır. Yazar: Oğuzhan Yılmaz (notation3)

29 BUBLESORT ALGORİTMASI Bublesort Algoritması (Kabarcık Sıralama Algoritması) C Programlama Dili Bubble Sort Algoritması ile kullanıcının girdiği sayıları küçükten büyüğe sıralayan program kodu. Sıralama algoritmaları arasında en çok bilinen Bubble Sort (Kabarcık Sıralama) algoritmasını bulabilirsiniz. 1. Kullanıcıdan gireceği sayı adedi öğrenilir. 2. Kullanıcıdan sayılar alınır. 3. Girilen sayılar ekrana yazdırılır. 4. Bubble Sort algoritması ise sayılar küçükten büyüğe sıralandırılır ve dizinin yeni hali ekrana yazdırılır. Sıralama algoritmalarının anlaşılması en kolay olanı Bubble Sorttur. Bubble Sort sayı dizisindeki ilk sayıyı alır ve kendisinden sonra gelen sayıyla karşılaştırır. İkinci sayı büyükse başa alır. Küçükse değişiklik yapmaz.

30 Örnek : 6, 4, 8, 12, 7 sayı dizisi veriliyor ve bu sayıları büyükten küçüğe doğru sıralamamız isteniyor. 1adım : 6 yı 4 ile karşılaştırırz. 4 < 6 olduğu için sıralamada değişiklik olmaz. 2.adım : 4 ile 8 karşılaştırılır. 8 > 4 olduğundan 6, 8, 4, 12, 7 yeni sayı dizimiz olur. 3.adım : 4 ile 12 karşılaştırılır. 12 > 4 olduğundan 6, 8, 12, 4, 7 yeni sayı dizimiz olur. 4.adım : 4 ile 7 karşılaştırılır. 7 > 4 olduğundan 6, 8, 12, 7, 4 yeni sayı dizimiz olur. 5.adım : Başa dönüyoruz. 8 > 6 olduğundan 8, 6, 12, 7, 4 yeni sayı dizimiz olur. 6.adım : 12 > 6 olduğundan 8, 12, 6, 7, 4 yeni sayı dizimiz olur. 7.adım : 7 > 6 olduğundan 8, 12, 7, 6, 4 yeni sayı dizimiz olur. 8.adım : 4 < 6 olduğundan sayı dizimiz değişmez. 9.adım : Tekrar başa dönüyoruz. 12 > 8 olduğundan 12, 8, 7, 6, 4 yeni sayı dizimiz olur. 9.adımda sıralamamız sonra erer.

31 Bubble Sort C Kodu Kaynak Kod: #include int main() static int k,dizi[100],i,x,boyut,temp; printf( Dizinin boyutunu giriniz : ); scanf( %d,&boyut); for(i=;i<boyut;i++) printf( Dizinin %d. elemanini giriniz :,i+1); scanf( %d,&dizi[i]); for(i=;i<boyut;i++) printf( %d\t,dizi[i]); while(x<boyut) for(i=;i<boyut 1;i++) if(dizi[i]<dizi[i+1]) temp=dizi[i]; dizi[i]=dizi[i+1]; dizi[i+1]=temp; x=; else x++; printf( \n\n ); for(k=;k<boyut;k++) printf( %d\t,dizi[k]);

32 return ; #include int main() static int k,dizi[100],i,x,boy ut,temp; printf( Dizinin boyutunu giriniz : ); for(i=0;i<boyut; i++) printf( Dizinin %d. elemanini giriniz for(i=0;i<boyut; i++) printf( %d\t,dizi[ i]); while(x<boyut) for(i=0;i<boyut1;i++) if(dizi[i]<dizi[ i+1])

33 temp=dizi[i]; dizi[i]=dizi[i+1]; dizi[i+1]=temp; x=0; else x++; printf( \n\n ); for(k=0;k<boyut; k++) printf( %d\t,dizi[ k]); return 0; Kod Analiz:

34 İlk olarak kullanıcıdan dizinin boyutunu ve dizinin elemanlarını teker teker aldık. Daha sonra aldığımız diziyi 1 sefer ekrana yazdırdık. While döngüsünün içerisindeki for döngüsünde dizinin her bir elemanını bir sonraki elemanla karşılaştırıp duruma göre yer değiştirdik. Karşılaştırma işleminde en son olarak son eleman ve ondan bir önceki karşılaştırılacağından for döngüsü dizinin boyutunun bir eksiği kadar döner. Büyükten küçüğe sıraladığımızı varsayalım. Eğer baktığımız eleman bir sonraki elemandan büyükse o zaman değişme işlemi yapılmayacak ve else kısmında x değişkeni 1 artacak. Eğer değişme olursa x değişkeni 0 olacak. Burada dikkat edilmesi gereken yer, eğer hiç bir değişme işlemi yapılmazsa x değişkeni boyut değişkenine eşit olacak ve while döngüsünden çıkılacak. Yani hiç bir yer değiştirme işleminin yapılmaması demek dizi zaten sıralı halde demektir. Bu durumda dizi sıralı olduğu durumda while döngüsünden çıkılacak. Ekran Görüntüsü:

35 C Dilinde Bubble Sort Algoritma Kodlaması Sayarak Sıralama Sort) algoritması (Counting Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından (sorting algorithms) bir tanesidir. Basitçe sıralanacak olan dizideki her sayının kaç tane olduğunu farklı bir dizide sayar. Daha sonra bu sayıların bulunduğu dizinin üzerinde bir işlemle sıralanmış olan diziyi elde eder. Sıralanmak istenen verimiz: 5,7,2,9,6,1,3,7 olsun. Bu verilerin bir oluşumun(composition) belirleyici alanları olduğunu düşünebiliriz. Yani örneğin vatandaşlık numarası veya öğrenci numarası gibi. Dolayısıyla örneğin öğrencilerin numaralarına göre sıralanması durumunda

36 kullanılabilir. Bu dizi üzerinden bir kere geçilerek aşağıdaki sayma dizisi elde edilir: Dizi indisi: Değeri (sayma): Yukarıdaki tabloda da gösterildiği üzere dizide bulunan en büyük eleman sayısı kadar eleman içeren bir sayma dizisi oluşturulmuş ve bu dizinin her elemanına, sıralanmak istenen dizideki her elemanın sayısı girilmiştir. Bu sayma işleminden sonra sıralı dizinin üretilmesi yapılabilir. Bu işlem de dizinin üzerinden tek bir geçişle her eleman için kaç tekrar olduğu yazılarak yapılabilir. buna göre örneğin sıralanmış dizide 0 hiç olmayacak 1 den 1 tane, 2 den 1 tane olacak şeklinde devam eder ve sonuç: 1,2,3,5,6,7,7,9 şeklinde elde edilir. Bu sıralama algoritmasının JAVA dilindeki kodu verilmiştir: public static void countingsort(int[]a, int[]b, int k) int C[]=new int[k]; // sayma dizisi oluşturuluyor int i; int j; for(i=0; i<k; i++) C[i]=0; for(j=0; j<a.length; j++) C[A[j]]=C[A[j]]+1 ; aşağıda

37 for(i=1; i<k; i++) C[i]=C[i]+C[i-1]; for(j=0; j<a.length; j++) B[C[A[j]]]=A[j]; C[A[j]]=C[A[j]]-1; Yukarıdaki fonksiyon bir adet sıralanacak dizi, bir adet sıralanmış hali geri döndürecek atıf ile çağırma (call by reference ile) boş dizi ve dizideki en büyük sayının değerini alır. Sonuç ikinci parametre olan boş diziye döner. Bu sıralama algoritmasının karmaşıklığı (complexity) hesaplarnısa. Dizideki her elemanın üzerinden bir kere geçilerek sayıları hesaplanır. Bu geçiş n elemanlı dizi için n zaman alır. Ayrıca dizideki en büyük elemanlı sayı kadar (bu örnekte k diyelim) büyük olan ikinci bir sayma dizisinin üzerinden de bir kere geçilir bu işlem de k zaman alır. Dolayısıyla toplam zaman n+k kadardır. Bu durumda zaman karmaşıklığı O(n) olur. Hafıza karmaşıklığına baklırsa (memory complexity) hafızada mevcut verilerin saklandığı bir dizi (yukarıdaki örnek kodda A dizisi). Sonuçların saklandığı ikinci bir dizi (yukarıdaki örnekte B dizisi) ve her elemanın kaçar tane olduğunun durduğu bir dizi (yukarıdaki örnekte C dizisi) tutulmaktadır. Bu durumda A ve B dizileri n, C dizisi ise k boyutundadır ve toplam hafıza ihtiyacı 2n+k kadardır. HAZIRLAYAN: CANSU KARAKUŞ KAYNAK:

38 QUICK SORT (HIZLI SIRALAMA) ALGORİTMASI Quick sort algoritması türkçe adıyla hızlı sıralama algoritması, günümüzde hala sıklıkla kullanılan bir algoritmadır. Sıralanması istenen dizi, dizi içerisinden belirlenen bir nokta (pivot noktası) yardımıyla iki alt diziye ayrılır. Pivot noktasından küçük olan elemanlar soldaki birinci alt diziye, büyük olan elemanlar ise sağdaki ikinci alt diziye taşınır. Daha sonra, yine aynı algoritma rekürsif olarak çağrılarak bu alt dizilerin sıralanması istenir. Bu işlem diziler parçalanamayacak duruma gelene kadar sürdürülür. Örneğin sıralanacak dizi A=9,5,12,7,3,21 olsun. Şimdi bir pivot noktası belirleyelim. Pivot noktası seçimi algoritmanın çalışma prensibini etkilemese de, dizinin ortanca değerini pivot noktası olarak belirlemekte fayda var. Dizinin ilk indisi 0 ve son indisi 5 i toplayıp int türünde bir değişkene attığımızda, 2. indis numaralı dizi elemanını yani 12 değerini pivot noktası olarak belirleriz. Bu noktayı baz alarak 12 değerinden küçük sayıları soldaki diziye, büyük sayıları ise sağdaki diziye atalım. Alt dizilerimizin son durumu A1=9,5,3,7 ve A2=12,21 şeklinde oluştu. Pivot noktasını da sağdaki yada soldaki diziye dahil edebilirsiniz. Daha sonra sıralama algoritması rekürsif olarak tekrar çağrılır ve yukarıdaki işlemler tekrarlanır. Böylece dizinin öğeleri küçükten-büyüğe doğru sıralanmış olur. Aşağıda quick sort sıralama algoritmasının java ile yazılmış örnek kodlarını inceleyebilirsiniz. public class HizliSiralama public static void main(string[] args)

39 int []dizi=9,5,12,7,3,21; hizlisirala(dizi, 0, dizi.length-1); for (inti = 0; i < dizi.length; i++) System.out.print(dizi[i]); public static int[] hizlisirala(intdizi[], intsol, intsag) intpivot, gecici, i,j; i=sol; j=sag; pivot=dizi[(sol+sag)/2]; do while(dizi[i]<pivot&& i<sag) i++; while(pivotsol) j ; if(i<=j) gecici=dizi[i]; dizi[i]=dizi[j]; dizi[j]=gecici; i++; j ; while (i<=j); if (sol<j) hizlisirala(dizi, sol, j); if (i<sag) hizlisirala(dizi, i, sag); returndizi; Yukarıda java kodları verilen hızlı sıralama algoritmasına üç adet parametre gelmektedir; biri dizi, diğer ikisi de dizinin sıralamaya koyulacak parçasının sol ve sağ taraflarının indis değerleridir. Algoritma ilk çağrıldığında, n elemanlı bir dizi için sol=0, sağ=n-1 olur. Rekürsif çağırmalar sırasında sol değeri büyürken sağ değeri küçülecektir; ne zaman ki, sol

40 değeri sağdan büyük olursa dizide bölünecek eleman kalmadığı anlaşılır ve rekürsif çağırmaların geri dönüşü başlar. Hızlı sıralama algoritmasının ortalama zaman karmaşıklı O(nlog2n), en kötü durumda ki zaman karmaşıklığı ise O(n2) olarak çıkmaktadır. HAZIRLAYAN: CANSU KARAKUŞ KAYNAK; MERGE SORT(birleştirme sıralaması)algoritması Merge Sort (Bileştirme Sıralaması) Algoritması Merge Sort (Birleştirme Sıralaması), diziyi ardışık olarak en küçük alt dizilerine kadar yarılayan sonra da onları sıraya koyarak bireştiren özyineli bir algoritmadır. Yarılama işlemi en büyük alt dizi en çok iki öğeli olana kadar sürer. Sonra Merge (Birleştirme) işlemiyle altdiziler ikişer ikişer bölünüş sırasıyla sıralı olarak bir üst dizide bireşir. Süreç sonunda en üstte sıralı diziye ulaşılır. Algoritmanın çalışması kavramsal olarak şöyledir: Sıralı olmayan diziyi ortadan eşit olarak iki alt diziye ayırır. Bu ayırma işlemi, alt diziler en çok iki elemanlı olana kadar devam eder. Alt dizileri kendi içinde sıralar. Sıralı iki alt diziyi tek bir sıralı dizi olacak şekilde birleştirir. Merge Sort algoritması ile Heap Sort algoritması aynı zaman

41 aralığına sahip olmalarına rağmen Heap Sort algoritması bellekte Merge Sort algoritmasına göre daha az yer tutar ve bu algoritmalar gerçeklendiğinde Heap Sort algoritması daha hızlı çalışır. Quick Sort algoritması da bellek tabanlı dizilerde Merge Sort a göre daha hızlı çalışmaktadır. Ancak bağlı liste sıralamasında seçilebilecek en performanslı algoritma Merge Sort algoritmasıdır. Çünkü bağlı listelerin yapısı gereği mergesort bellekte fazladan sadece 1 birim yer tutar ve bağlı listelerin yavaş ve rastgele erişim performansı nedeniyle quicksort gibi diğer algoritmaların çalışma performansı düşer, Heap Sort gibi algoritmalar için ise imkansızdır. Algoritmanın C# Programlama Diliyle Gerçeklenmesi Aşağıdaki Sırala metodu ASP sayfasındaki Sırala düğmesine tıklandığı zaman çalıştırılacak kodları içermektedir. Bu metodda ilk olarak metin kutusuna girilen sayı kadar eleman alabilecek int türünden bir dizi tanımlanmıştır. Dizinin elemanları ise 1 den metin kutusuna girilen sayıya kadar olacak şekilde rastgele verilmiştir. protected void Sırala(object sender, EventArgs e) int n = Convert.ToInt32(tb.Text); int[] A = new int[n]; Random r = new Random(); Stopwatch stopwatch = new Stopwatch(); for (int i = 0; i < n; i++) A[i] = r.next(1, int.parse(tb.text.trim())); stopwatch.start(); MergeSort(A, 0, n 1); stopwatch.stop(); TimeSpan timespan = stopwatch.elapsed; string elapsedtime = String.Format("0:00.1:000", timespan.seconds, timespan.milliseconds);

42 Response.Write("Gecen Zaman: " + elapsedtime); Aşağıdaki "Merge Sort" metodu tanımlanan diziyi, sadece iki elemanlı altkümeleri kalacak şekilde rekürsif olarak ayırır ve "Merge" metodu çağrılır. static void MergeSort(int[] A, int p, int r) if (p < r) int q = (p + r) / 2; MergeSort(A, p, q) MergeSort(A, q + 1, r); Merge(A, p, q, r); Aşağıdaki "Merge" metodu sıralama işlemini gerçekleştiren metoddur. "MergeSort" metodu ile ayrılan dizi parçalarının elemanlarını, iki elemanlı en küçük dizilerden başlayarak sıralama işlemini gerçekleştirir. Daha sonra bir yanındaki iki elemanlı dizi ile birleştirerek sıralama işlemine devam eder ve sonunda tanımlanan dizi sıralanmış olur. static void Merge(int[] A, int p, int q, int r) int n1 = q p + 1; int n2 = r q; int[] L = new int[n1 + 1]; int[] R = new int[n2 + 1]; for (int i = 0; i < n1; i++) L[i] = A[p + i]; for (int j = 0; j < n2; j++) R[j] = A[q + j + 1]; L[n1] = Int32.MaxValue;

43 R[n2] = Int32.MaxValue; int x = 0, y = 0; for (int k = p; k <= r; k++) if (L[x] <= R[y]) A[k] = L[x]; x++; else A[k] = R[y]; y++; Bu uygulamanın çıktısı aşağıdaki gibi olacaktır. HAZIRLAYAN;atiye nur özpınar KAYNAK: shell sort(kabuk sıralama) Bilgisayar kullanılan bilimlerinde sıralama

44 algoritmalarından birisi de kabuk sıralamadır (shell sort). İsmi Türkçeye kabuk sıralaması olarak çevrilsede aslında Donald Shell isimli algoritmayı ilk bulan kişinin isminden gelmektedir. Algoritma performansı O(n2) dir. Çalışması aşağıdaki örnek üzerinde anlatılmıştır: Sıralayacağımız sayılar: [crayon-5a37a44f422ad /] olarak verilmiş olsun. Sıralama işlemi için öncelikle bir atlama miktarı belirlenir. Atlama miktarının belirlenmesi için çok çeşitli yollar bulunmasına karşılık en basit yöntem elimizdeki sayıların yarısından başlamaktır. Yani yukarıdaki örnekte elimizde 7 sayı olduğuna göre 3 atlama miktarı ile başlanabilir. Sırasıyla her sayı kendinden 3 sonraki sayı ile karşılaştırılır ve bu sayılar kendi aralarında sıralanır. Bu sıralamayı daha rahat göstermek için aşağıdaki kolon gösterimi kullanılabilir: 5,7,2

45 9,6,1 3***** Her kolon kendi içinde sıralanınca aşağıdaki sayılar elde edilir: 3,6,1 5,7,2 9 Yukarkıdaki örnekte de görüldüğü üzere sayıları sıralama işleminin 3te biri bitirilmiştir. Ardından atlama miktarı yarıya indirilir (bu örnek için 3/2 = 1 olur) Bu durumda bütün sayılar tek bir doğrultuda sıralanır. 3,6,1,5,7,2,9 1,2,3,5,6,7,9 Yukarıdaki sıralamada örneğin kabarcık sıralaması (bubble sort) kullanılırsa dizinin orjinal haline göre (yani kabuk sıralamasının 3 atlamalı sıralama işlemi yapılmamış haline göre) çok daha başarılı olduğu görülür. [crayon-5a37a44f422ba /] Yukarıdaki örnek kodda bir dizinin (p) içerisindeki sayıları kabuk sıralamasına göre sıralayan fonksiyon verilmiştir. Fonksiyon girilen sayıları 5/11 oranında küçülen atlama miktarları ile kabarcık sıralaması kullanarak sıralamaktadır. Okuyucu döngünün içerisinde yapılan ve temp değişkeni kullanılan işlemin bir yer değiştirme (swap) işlemi olduğuna dikkat edebilir. HAZIRLAYAN:ATİYE NUR ÖZPINAR KAYNAK :

46 Tarak Sıralama Algoritması(Comb Sort) Comb Sort yani Tarak Sıralaması adından da anlaşılacağı gibi karşılaştırmalı bir sıralama algoritmasıdır. Aslına bakarsak kabarcık sıralaması ile hızlı sıralama karışımı diyebiliriz.nisan 1991 de Stephen Lacey ve Richard Box tarafından duyurulmuştur. Tarak sıralaması tıpkı kendisi gibi karşılaştırmalı bir sıralama algoritması olan Kabarcık sıralamasından daha iyidir. Kabarcık sıralamasında sayılar bir yanındaki sayı ile karşılaştırılır ve ona göre yer değişimi yapılır.karşılaştırma mesafesi 1 dir. Tarak sıralaması da aynı bu mantıkla çalışır ama yer değişimi yanındaki sayılar ile değilde daha uzaktaki sayılar ile yapılır.bu uzaklık büyük bir sayı ile başlar ve her seferinde shrink factor dediğimiz çoğunlukla daha kolay olsun diye 1.3 e yuvarlanır- sayısı oranınca ta ki algoritma basitçe kabarcık sıralamadaki uzaklığa yani 1 olana kadar küçültülür. Tarak sıralamasının bu şekilde olmasının ana fikri ise listenin sonundaki küçük değerli öğeleri önce bularak listeden çıkarıp daha hızlı çalışmaktır. Kabarcık sıralamanın en büyük sorunu listenin sonunda olan küçük sayıları bulması için çok zaman harcamasıdır. Tarak sıralaması ile daha hızlı sonuç elde edilir. Aşağıdaki gibi bir dizimiz olduğunu varsayalım ve küçükten büyüğe doğru sıralamaya çalışalım. İşte başlıyoruz

47 İlk önce dizinin boyutunun shrink factor dediğimiz sayısına bölünmesi gerekir biz yuvarlayıp 1.3 sayısına böleceğiz. Bölümün tam kısmını alırız. 5/1,3 = 3,8. Tam kısmı 3. İlk elemanı seçeriz ve 3 fazlası olan eleman ile karşılaştırırız. Sonra ikinci elemanı seçeriz ve +3 fazlası olan eleman ile karşılaştırırız. Ardından üçüncü elemanı seçeriz. +3 fazlası dizinin uzunluğunu aştığı için işlem yapılamaz. Boşluk sayısını tekrar 1,3 e böler ve tam kısmını alırız. 3 / 1,3 = 2,3 Tam kısmı 2 olarak alırız. Birinci elemanı seçer ve +2 fazlası olan elemanla

48 karşılaştırırız. İkinci elemanı seçeriz ve +2 fazlası olan elemanla karşılaştırırız. Sonra diğer elemanları seçer +2 fazlası olan elemanlar ile dizinin sonuna kadar karşılaştırırız. Dizinin sonuna geldiğimizde tekrar boşluk sayısını 1,3 e böleriz.. 2 / 1,3 = 1,5 tam kısmı alırız. 1. elemanı seçer ve 1 fazlası olan yani bir sonraki elemanla karşılaştırırız.sonra ikinci elemanı sonraki elemanla. Diğer elemanları da bir sonraki elemanlarla karşılaştırırız.

49 Ve nihayetinde dizimiz sıralanmış olur. [crayon-5a37a44f429a /] Hazırlayan: Ömer Koyuncu Kaynakça: 1.

50 Dereceden Denklemin Köklerini Bulan Program [crayon-5a37a44f4302c /] C++ 2.dereceden denklemin köklerini bulan program

51 [crayon-5a37a44f /] ÇIKTI; C++ 2. dereceden denklemin köklerini bulan program [crayon-5a37a44f /] YAZAR:Fatma AKTAŞ

Yazılım Tasarımı(Software Design)

Yazılım Tasarımı(Software Design) Yazılım Tasarımı(Software Design) Yazılım Nedir? Hem bilgisayar sistemini oluşturan donanım parçalarının yönetimini hem de kullanıcıların işlerini yapmak için gerekli olan konular topluluğuna yazılım denir.

Detaylı

f(x) ve g(x) reel sayılarda tanımlı iki fonksiyon olmak üzere, x > k olacak şekilde bir k vardır öyle ki,

f(x) ve g(x) reel sayılarda tanımlı iki fonksiyon olmak üzere, x > k olacak şekilde bir k vardır öyle ki, Algoritma Karmaşıklığı ve Büyük O Gösterimi (Big O Notation) Yazdığımız bir algoritmanın doğru çalıştığından emin olmakla birlikte bu algoritmayı, daha önce yazılmış ve aynı sonucu veren başka algoritmalarla

Detaylı

Yazılım Tasarımı(Software Design)

Yazılım Tasarımı(Software Design) Yazılım Tasarımı(Software Design) Yazılım Nedir? Hem bilgisayar sistemini oluşturan donanım parçalarının yönetimini hem de kullanıcıların işlerini yapmak için gerekli olan konular topluluğuna yazılım denir.

Detaylı

The Big O Notation. The Big O Notation

The Big O Notation. The Big O Notation The Big O Notation The Big O Notation Yazdığımız bir algoritmanın doğru çalıştığından emin olmakla birlikte bu algoritmayı, daha önce yazılmış ve aynı sonucu veren başka algoritmalarla karşılaştırmak isteyebilirsiniz.

Detaylı

BLG4146 - Sistem Analizi ve Tasarımı. Öğr. Grv. Aybike ŞİMŞEK

BLG4146 - Sistem Analizi ve Tasarımı. Öğr. Grv. Aybike ŞİMŞEK BLG4146 - Sistem Analizi ve Tasarımı Öğr. Grv. Aybike ŞİMŞEK Tasarım Evresi Analiz evresinde sorulan NE sorusuyla elde edilen bilgilerin NASIL yapılacağı, NASIL gerçekleştirileceğinin ortaya konulduğu

Detaylı

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN 0904.01036. atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN 0904.01036. atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN 0904.01036 atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİŞKEK 2012 Ahmet Atakan

Detaylı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 SIRALAMA ALGORİTMALARI Sunu Planı Büyük O Notasyonu Kabarcık Sıralama (Bubble Sort) Hızlı Sıralama (Quick Sort) Seçimli Sıralama (Selection Sort) Eklemeli Sıralama (Insertion

Detaylı

C dilinde For döngüsü ve örnekleri

C dilinde For döngüsü ve örnekleri C dilinde For döngüsü ve örnekleri Döngü (loop) deyimleri, bir kümenin belli bir koşul altında tekrar edilmesi için kullanılır. C programlama dilinde, while, do while ve for olmak üzere üç tip döngü deyimi

Detaylı

Merge Sort Bireşen Sıralama

Merge Sort Bireşen Sıralama Merge Sort Bireşen Sıralama Merge sort (bireşen sıralama), diziyi ardışık olarak en küçük alt dizilerine kadar yarılayan sonra da onları sıraya koyarak bireştiren özyineli bir algoritmadır. Yarılama işlemi

Detaylı

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği Yrd. Doç. Dr. A. Burak İER Bilgisayar Mühendisliği Algoritma Analizi İçerik: Temel Kavramlar Yinelemeli ve Yinelemesiz Algoritma Analizi Asimptotik otasyonlar Temel Kavramlar Algoritma: Bir problemin çözümüne

Detaylı

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1 Algoritmalar Doğrusal Zamanda Sıralama Bahar 2017 Doç. Dr. Suat Özdemir 1 Sıralama Özet - Insertion sort Kodlaması kolay Küçük veri setleri için hızlı (~50 element) Neredeyse sıralı veri setleri için en

Detaylı

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K); 2009-2010 BAHAR DÖNEMİ MC 689 ALGORİTMA TASARIMI ve ANALİZİ I. VİZE ÇÖZÜMLERİ 1. a) Böl ve yönet (divide & conquer) tarzındaki algoritmaların genel özelliklerini (çalışma mantıklarını) ve aşamalarını kısaca

Detaylı

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu

Detaylı

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1 Algoritmalar Sıralama Problemi ve Analizi Bahar 2017 Doç. Dr. Suat Özdemir 1 Sıralama Problemi ve Analizi Bu bölümde öncelikle bir diğer böl-ve-yönet yöntemine dayalı algoritma olan Quick Sort algoritması

Detaylı

C++ Dilinde Bazı Temel Algoritmalar

C++ Dilinde Bazı Temel Algoritmalar C++ Dilinde Bazı Temel Algoritmalar Bazı eşyalar için her eve lazım derler. Az sonra bahsedeceğimiz algoritmalar da her kodcuya lazım cinsten. Sayının tek mi çift mi olduğuna karar veren programdan, çarpım

Detaylı

Algoritmalar ve Karmaşıklık

Algoritmalar ve Karmaşıklık Algoritmalar ve Karmaşıklık Ders 11 Algoritma Ayrık matematikte karşılaşılan bir çok problem sınıfı mevcuttur. Örneğin, verilen tamsayı grubu içindeki en büyük olanının bulunması, verilen bir kümenin bütün

Detaylı

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1 Algoritmalar Arama Problemi ve Analizi Bahar 2016 Doç. Dr. Suat Özdemir 1 Arama Problemi Sıralama algoritmaları gibi arama algoritmaları da gerçek hayat bilgisayar mühendisliği problemlerinin çözümünde

Detaylı

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü ALGORİTMA ANALİZİ Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü 2 Temel Kavramlar Algoritma: Bir problemin çözümünü belirli bir zamanda çözmek için sonlu sayıdaki adım-adım birbirini takip eden

Detaylı

Alıştırma 1: Yineleme

Alıştırma 1: Yineleme Alıştırma 1: Yineleme Alıştırma 2: Yineleme H10->H2 çevrimini yapınız 7 2 1 3 2 1 1 1 2 0 Hafta 3: Yineleme Alıştırmaları(1) E1. (44/174) S değerini yineleme kullanarak hesap ediniz S = 1 + 2 + 3 + n Hafta3:

Detaylı

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Ders 4: Diziler (Arrays( Arrays) barisgokce.com Ders 4: Diziler (Arrays( Arrays) Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Diziler Aynı tipteki bir veri gurubunun bir değişken içinde saklanmasıdır. Veriler Hafızada

Detaylı

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür. SEQUENCE ALGORİTMASI Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür. Bir dizi yapısı içinde, bir eylem ya da bir olay, geçmiş

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği BÖLÜM - 2 Bu bölümde, Algoritma Analizi, Çalışma Zamanı Analizi

Detaylı

Yazılım Mühendisliği 1

Yazılım Mühendisliği 1 Yazılım Mühendisliği 1 HEDEFLER Yazılım, program ve algoritma kavramları anlar. Yazılım ve donanım maliyetlerinin zamansal değişimlerini ve nedenleri hakkında yorum yapar. Yazılım mühendisliği ile Bilgisayar

Detaylı

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama Bölüm 39 Binary Search (Yarılama) 39.1 Dizide Bir Öğe Arama İkil aramayı (yarılama yöntemi) sıralı veri kümelerinde sık sık kullanırız. Örneğin, sözlükte bir sözcüğü ararken, sözlüğün bütün sayfalarını

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

YMT219 VERİ YAPILARI ÖDEV-1

YMT219 VERİ YAPILARI ÖDEV-1 YMT219 VERİ YAPILARI ÖDEV-1 1. İkiliBul yordamı aşağıda verilmiştir. İkiliBul yordamı A dizisi içerisinde 2 tane eşit sayı bulursa true bulamazsa false döndürmektedir. public boolean ikilibul(int[] A){

Detaylı

C++ Dilinde Bazı Temel Algoritmalar

C++ Dilinde Bazı Temel Algoritmalar C++ Dilinde Bazı Temel Algoritmalar Bazı eşyalar için her eve lazım derler. Az sonra bahsedeceğimiz algoritmalar da her kodcuya lazım cinsten. Sayının tek mi çift mi olduğuna karar veren programdan, çarpım

Detaylı

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü ALGORİTMA ANALİZİ Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü 2 Özyinelemeler veya artık teknik Türkçeye girmiş olan rekürsiflik en çok duyulan fakat kullanımında zorluklar görülen tekniklerdendir.

Detaylı

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi Bu hafta? İki değişken değerinin yer değiştirilmesi (swapping) selection sort sıralama algoritması bubble sort

Detaylı

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI C programlama dilinde, diğer programlama dillerinde olduğu gibi, işlemler, ilk satırdan başlamak üzere sırayla çalışır. Program kontrol yapıları ise, programın

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ Öğrenci Adı Soyadı: Öğrenci Numarası: S1 S2 S3 S4 S5 Toplam HACETTEPE ÜNİVERSİTESİ 2013-2014 BAHAR DÖNEMİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BBM202 Algoritmalar 1. Ara Sınav 18.03.2014 Sınav Süresi: 50 dakika

Detaylı

VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ. Yard. Doç. Dr. Deniz KILINÇ

VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ. Yard. Doç. Dr. Deniz KILINÇ VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ Yard. Doç. Dr. Deniz KILINÇ CELAL BAYAR ÜNİVERSİTESİ, YAZILIM MÜHENDİSLİĞİ 2015-2016 1. ALGORİTMA TANIMI Verilen herhangi bir sorunun çözümüne ulaşmak

Detaylı

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1 Algoritmalar Heap Sort Bahar 2017 Doç. Dr. Suat Özdemir 1 Heap Sort Heap Sort algoritması Merge Sort ve Insertion Sort algoritmalarının iyi özelliklerini bir arada toplar. Algoritma Insertion Sort gibi

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ YZM 3207- ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ Algoritma Analizi Çerçevesi Algoritma Analizinde Göz Önünde Bulundurulması Gerekenler Neler? Algoritmanın Doğruluğu (Correctness) Zaman

Detaylı

Algoritma ve Akış Diyagramları

Algoritma ve Akış Diyagramları Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir 1 Akış diyagramları

Detaylı

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 İşaretçiler ve Diziler Fonksiyon

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

Yrd. Doç. Dr. Ümit ATİLA

Yrd. Doç. Dr. Ümit ATİLA Yrd. Doç. Dr. Ümit ATİLA Sıralama Bir grup veriyi azalan veya artan şekilde yerleştirme. Bilgisayar sistemleri için veri sıralama çok önemlidir. Sıralama işlemi, hem arama işlemlerini hem de bir grup veriyi

Detaylı

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod) 2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 3 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod) Yrd. Doç. Dr. İbrahim Küçükkoç Web: ikucukkoc.baun.edu.tr

Detaylı

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan Karmaşıklık Giriş 1 Algoritma Analizi Neden algoritmayı analiz ederiz? Algoritmanın performansını ölçmek için Farklı algoritmalarla karşılaştırmak için Daha iyisi mümkün mü? Olabileceklerin en iyisi mi?

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi Dizilere Başlangıç Değeri Verme Dizilerde Arama

Detaylı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları BLM-112 PROGRAMLAMA DİLLERİ II Ders-7 Sıralama Algoritmaları Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Sıralama Bir grup veriyi azalan veya artan şekilde yerleştirme.

Detaylı

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 KONU BAŞLIKLARI 1. Yazılım Mimarisi nedir? 2. Yazılımda Karmaşıklık 3. Üç Katmanlı Mimari nedir? 4. Üç Katmanlı Mimari

Detaylı

Klavyeden Basit Giriş/Çıkış İşlemleri

Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden veri girilmesi, girilen verilere çeşitli işlemler uygulandıktan sonra ekrana yazdırılması ya da herhangi bir yazıcıdan çıktı alınması gibi işlemlerdir. Javada

Detaylı

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI YZM 3207- ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI Algoritma Nedir? Algoritma Bir problemin çözümü için geliştirilmiş özel metot Girdileri çıktılara dönüştüren sıralı hesaplama adımları Tanımlanmış

Detaylı

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2 YZM 3207- ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2 Özyineli Olmayan (Nonrecursive) Algoritmaların Matematiksel Analizi En büyük elemanı bulma problemi En Büyük Elemanı Bulma Problemi Girdi

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği BAŞLAMADAN ÖNCE Bu dersi alan öğrencilerin aşağıdaki konuları bildiği

Detaylı

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

Detaylı

Algoritma ve Programlamaya Giriş

Algoritma ve Programlamaya Giriş Algoritma ve Programlamaya Giriş Algoritma Bir sorunu çözebilmek için gerekli olan sıralı ve mantıksal adımların tümüne Algoritma denir. Doğal dil ile yazılabilir. Fazlaca formal değildir. Bir algoritmada

Detaylı

Algoritmalar ve Programlama. Algoritma

Algoritmalar ve Programlama. Algoritma Algoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 5 Veri Tipleri (Devam) Yrd. Doç. Dr. Melike Şah Direkoğlu Konular Dizi Tipleri Kayıt Tipleri Birleşik Tipler Küme Tipleri İşaretçi ve Referans Tipleri Alındığı

Detaylı

Veri Yapıları. for(i=1;i<n;i++) { ekle=d[i]; for (k=i 1; k>=0 && ekle<=d[k] ;k ) D[k+1]=D[k]; /* Geriye kaydırılıyor*/

Veri Yapıları. for(i=1;i<n;i++) { ekle=d[i]; for (k=i 1; k>=0 && ekle<=d[k] ;k ) D[k+1]=D[k]; /* Geriye kaydırılıyor*/ Program çalışma hızı; Belirlenen bir problemin çözümü için tasarlanan program kodunun görevini yerine getirmesi için gerekli zaman bilgisini veren bir ifadededir. Bellek Gereksinimi; Programın yürütülmesi

Detaylı

Bölüm 9. Altprogramlar ISBN

Bölüm 9. Altprogramlar ISBN Bölüm 9 Altprogramlar ISBN 0-321-49362-1 Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda

Detaylı

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma C de Detaylı Üs Alma Programı Bu uygulama yazısında C de pow() fonksiyonunu kullanmadan üs hesabı yapan programı yazmaya çalıştım. Başta tanımladığım float tipinde 2 fonksiyon sayesinde + lı ve li üs değerleriyle

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Diziler Dizi Tanımlama ve İlk Değer Atama Dizi Elemanlarının Kullanılması Dizi İşlemleri Java da Diziler JAVA DA DİZİLER 4 Dizi; tek bir veri tipinde,

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 9 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Dizileri Fonksiyonlara Dizileri Fonksiyonlara Bir dizi argümanını fonksiyon içinde bir değer olarak kullanabilmek

Detaylı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

2. Dereceden Denklemin Köklerini Bulan Program

2. Dereceden Denklemin Köklerini Bulan Program 2. Dereceden Denklemin Köklerini Bulan Program [crayon-5bb74e5b18b15225541464/] C++ 2.dereceden denklemin köklerini bulan program [crayon-5bb74e5b18b25989362529/] ÇIKTI; C++ 2. dereceden denklemin köklerini

Detaylı

BLG 1306 Temel Bilgisayar Programlama

BLG 1306 Temel Bilgisayar Programlama BLG 1306 Temel Bilgisayar Programlama Öğr. Grv. M. Mustafa BAHŞI WEB : mustafabahsi.cbu.edu.tr E-MAIL : mustafa.bahsi@cbu.edu.tr Bilgisayar ile Problem Çözüm Aşamaları Programlama Problem 1- Problemin

Detaylı

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları Veri yapısı, bilginin anlamlı sırada bellekte veya disk, çubuk bellek gibi saklama birimlerinde tutulması veya saklanması şeklini gösterir. Bilgisayar

Detaylı

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ DÖNEM SONU SINAVI GÜZ 2009-2010 13 Ocak 2010, Sınav Süresi: 120 dakika. İsim

Detaylı

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1 İsimler ve Kapsam Tanım: Bir değişkenin kapsamı (scope) değişkenin görülebilir olduğu komutların alanıdır. Görülebilir olduğu alan, bir komut içinde belirlenen değerle kullanılabildiği alandır. Tanım:

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu Öğr. Gör. M. Ozan AKI r1.0 Algoritmalar (Algorithms) Algoritma, bir problemin çözümünü sağlayan ancak deneme-yanılma ve sezgisel çözüme karşıt bir

Detaylı

DİZİLER. Bu ünitede yapılan örnekler Visual Studio 2010 programındaki Visual Basic programlama diliyle çözülmüştür.

DİZİLER. Bu ünitede yapılan örnekler Visual Studio 2010 programındaki Visual Basic programlama diliyle çözülmüştür. DİZİLR GİRİŞ Bu ünitede, akış diyagramlarının yardımıyla birçok veriyi tek bir alanda nasıl saklayabileceğimiz, işleyebileceğimiz ve çağırabileceğimiz konusundaki bilgiler anlatılacaktır. Teknolojinin

Detaylı

Programlama Dilleri 1. Ders 4: Diziler

Programlama Dilleri 1. Ders 4: Diziler Programlama Dilleri 1 Ders 4: Diziler Genel Bakış Tanım Dizilerin tanımlanması Dizilere ilk değer verilmesi Yerel ve Global diziler Dizilerin birbirine atanması Diziler ile ilgili örnekler Çalışma soruları

Detaylı

BIL222 Veri Yapıları ve Algoritmalar

BIL222 Veri Yapıları ve Algoritmalar BIL222 Veri Yapıları ve Algoritmalar 1. ĠKĠLĠ AĞAÇLAR (BIARY TREES) Bütün düğümlerinin derecesi en fazla iki olan ağaca ikili ağaç denir. Yani bir düğüme en fazla iki tane düğüm bağlanabilir ( çocuk sayısı

Detaylı

VERİ YAPILARI DATA STRUCTURE GİRİŞ

VERİ YAPILARI DATA STRUCTURE GİRİŞ VERİ YAPILARI DATA STRUCTURE GİRİŞ Veri Yapısı Nedir O Verinin ve bilginin bellekte nasıl organize edildiğini, bellekte tutulma biçimini ifade eder. O Tüm programlama dillerinin, genel olarak, tamsayı,

Detaylı

Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları Giriş 1) Algoritma geliştirme üzerine temel kavramlar 2) Veri modelleri 3) Veri yapıları 4) Algoritma veya yazılım şekilsel gösterimi

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 6 Sıralama(Sort) Algoritmaları 1. Bubble Sort

Detaylı

O NOTASYONU. Abdullah Gazi Emre DAĞLI 0804.01026

O NOTASYONU. Abdullah Gazi Emre DAĞLI 0804.01026 O NOTASYONU Abdullah Gazi Emre DAĞLI 0804.01026 Program Çalışma Hızı ve Bellek Gereksinimi Programın çalışma hızı karmaşıklıkla ifade edilir; bu kavram zaman birimiyle ifade edilmeyip doğrudan işlem adedi

Detaylı

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne

Detaylı

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach() (LOOPS) while(), do-while(), for(), foreach() Döngüler (loops) while do-while for foreach while ( koşul ) işlemler; do işlemler; while (koşul ); for (başlangıç ; koşul ; arttırma) işlemler; foreach ( tip

Detaylı

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO while(), do-while(), for() Döngü (loop) : Bir koşul sağlandığı (true olduğu) sürece bir veya birden çok komutun tekrarlanması işlemidir. Java Döngüler (loops) While() do-while() for ( ) while ( koşul )

Detaylı

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur. SİSTEM VE YAZILIM o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur. o Yazılım, bilgisayar sistemlerinin bir bileşeni olarak ele alınmalıdır. o Yazılım yalnızca

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Koşul Karşılaştırma Operatörleri Mantıksal

Detaylı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır. Yazılım Mimarisi 1.Yazılım Mimarisi Nedir? Yazılım mimarisi geliştirilen uygumaların maliyetlerinin azaltılmasında önemli bir yer tutar. Örneğin MVC modeli kullanarak bir uygulama geliştiriyoruz ve arayüz

Detaylı

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler: Veri Yapıları Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz İçindekiler: Giriş Temel Veri Yapıları Tanımlamalı Veri Yapıları Veri Modeli ve Türleri

Detaylı

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ Yard. Doç. Dr. Deniz KILINÇ CELAL BAYAR ÜNİVERSİTESİ, YAZILIM MÜHENDİSLİĞİ 2015-2016 1. DERS İÇERİĞİ VE KAYNAKLAR Veri Yapıları (VY) dersinde görülmesi muhtemel

Detaylı

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

Ders 8: Metotlar. barisgokce.com

Ders 8: Metotlar. barisgokce.com Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı

Detaylı

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır. GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.

Detaylı

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1 BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı