• Sonuç bulunamadı

Algoritma. Veri yapıları ve algoritmalar. Dr.Öğr.Üyesi Hüseyin Bilal MACİT

N/A
N/A
Protected

Academic year: 2022

Share "Algoritma. Veri yapıları ve algoritmalar. Dr.Öğr.Üyesi Hüseyin Bilal MACİT"

Copied!
21
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

Veri yapıları ve algoritmalar

2021 ©

www.hbmacit.com

Algoritma

Dr.Öğr.Üyesi Hüseyin Bilal MACİT

02

(2)

İçerik

Al go rit ma

è Problem è Algoritma

è Düz yazı ile gösterim è Sözde kod

è Akış şeması

è Nassi-Schnederman şeması è Warnier-Orr diyagramı

è Özyineleme

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(3)

Problem

è Fransızca kökenli bir sözcük olan problem, Türk Dil Kurumu’na göre "matematik teoremler veya kurallar yardımıyla çözülmesi istenen soru, mesele" olarak tanımlanmıştır. Matematik ve fizikte ise problem; içinde bulunulan şartları ve eldeki mevcut verileri kullanarak bir olguya, sonuca ya da yasaya ulaşmak için sorgulanması gereken durumları tanımlamakta kullanılır.

è Problemle mücadele etme sürecine problem çözme denir. Problemin çözümü için çeşitli

parametrelere ihtiyaç duyulabilir. Örneğin "Bugün dışarı çıkarken ne giymeliyim?" probleminin çözümü için hava durumu ve nereye gidileceği gibi parametrelere ihtiyaç duyulabilir.

Al go rit ma

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(4)

Problem

è Fransız filozof Descartes’ a göre bir problemi çözmek için hızlı ve plansızca çözüme ulaşmaya çalışmak yerine dikkatli ve sistematik şekilde çözüm aranmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara ayrılmalıdır. Descartes’in "Discourse on Method" isimli kitabında problem çözme teknikleri şu dört madde ile özetlenir:

1. Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin.

2. Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün.

3. Anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyiniz.

4. Olaya bakışınız genel, hazırladığınız ayrıntılı liste ise her şeyi kapsayacak kadar kusursuz ve eksiksiz olsun.

Al go rit ma

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(5)

Problem

è Bilgisayar dünyasında bir problemin çözümü için iki yaklaşım vardır.

1. Sezgisel yaklaşım (heuristic); problemin çözümü için bir tasarım kullanılmadan, o anki düşüncelere göre plansız olarak ilerlenmesidir. Sezgisel yaklaşım genellikle eğitimsiz

programcılar tarafından tercih edilir. Sezgisel yaklaşım uygulayan programcı genellikle gerekli veri yapıları ve veri modelleri hakkında bilgi sahibi değildir.

2. Algoritmik yaklaşım; çözüm için olası yöntemlerden en uygun olanın seçilmesi ve yapılması gerekenlerin adım adım ortaya konulmasıdır.

Al go rit ma

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(6)

Problem

è Bilgisayar dünyasında problem çözme süreci dört aşamada gerçekleşir.

è Problem ilk önce analiz edilerek mümkünse alt problemlere bölünür. Her alt problemin çözümü için farklı yöntemler tasarlanır. Seçilen yöntemler ile problemin bütününü çözebilecek veya her alt

problemi tek tek çözebilecek algoritmalar geliştirilir. Geliştirilen algoritma çok sayıda girdi ile test edilerek istenen çözüme ulaşılıp ulaşılamadığı kontrol edilir. Eğer istenen çözüme ulaşılamadıysa analiz aşamasına geri dönülür. Bu süreç problemin kesin çözümüne ulaşana kadar devam eder.

Al go rit ma

analiz tasarım algoritma

geliştirme test

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(7)

Algoritma

è Algoritma kelimesi, IX. yüzyıl ünlü Türk bilgini matematikçi "Ebu Abdullah Muhammed İbn Musa el- Harezmi" nin isminin kısaltılmasından türetilmiştir. "El–Harezmi" kelimesinin İngilizce'deki

telaffuzundan kaynaklı "algorithm" olarak dile yerleşmiştir.

è Algoritma; belli bir problemi çözmek veya belirli bir amaca ulaşmak için tasarlanan adımlar kümesidir. Matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç

durumundan başlayıp açıkça belirlenmiş bir son durumunda sonlanan sonlu işlemler kümesidir.

Al go rit ma

ATM'ye bankamatik kartını tak Dört haneli müşteri şifresini yaz Giriş tuşuna bas

Para çekme menüsüne gir Tutarı gir

Giriş tuşuna bas Parayı al

Kartı al

örnek algoritma

0201 03 04 0506 07 08

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

è Bir yemeğin yapılmasındaki adımları içeren yemek tarifi, yerini bilmediğimiz bir restoranı bulmamıza yardımcı olan yol tarifi, bir elektronik cihazın

kullanım kılavuzu algoritmaların günlük hayattaki kullanımına örnek olarak gösterilebilir.

(8)

Algoritma

è Bir algoritmanın sahip olması gereken altı temel özellik vardır.

1. Girdi ve Çıktı Bilgisi: Girdi bilgisi algoritmaya dışarıdan verilir ve çıktı bilgisi algoritma içerisinde girdi bilgisi kullanılarak üretilir. Bu bilgiler, algoritma için tanımlı veri kümesine ait olmalıdır.

2. Açıklık: Algoritmayı oluşturan adımlar doğru ve kesin bir şekilde tanımlanmalıdır. Doğru anlaşılamayan bir adım doğru biçimde kodlanamaz.

3. Doğruluk: Farklı girdi bilgileri ile çalışabilen algoritmalar, her girdi için doğru bir çıktı üretmelidir. Algoritmanın doğruluğu test aşamasında kontrol edilmelidir.

4. Sonluluk: Algoritmanın daima bir sonu olmalıdır. Girilen veri boyutundan bağımsız bir şekilde algoritma adımları farklı bir aşamaya geçebilmeli veya algoritma sonlanmalıdır. Algoritma

adımları gerçekleştirilirken algoritma sonsuz döngüye girmemelidir.

5. Verimlilik: Algoritmayı oluşturan adımlar, yapılan iş için kabul edilebilir bir süre içerisinde tamamlanmalıdır.

6. Genellik: Bir algoritma, aynı türdeki problemlerin hepsine uygulanabilir olmalıdır.

Al go rit ma

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(9)

Algoritma

è Algoritmanın gösterimi için farklı yöntemler kullanılır. En sık kullanılan beş algoritma gösterim yöntemi aşağıdakilerdir.

1. Düz yazı ile gösterim 2. Sözde kod

3. Akış şeması

4. Nassi-Schnederman şeması 5. Warnier-Orr diyagramı

è Geliştirilen sistemin gösterimi için algoritma gösterim yöntemlerinin dışında nesneye yönelik analiz ve tasarımda ORM (Object Rule Model) yöntemi, ilişkisel veri tabanlarında veri modeli

diyagramlarının gösterimi için Bachman notasyonu, kavramsal veri modelleri ve veri tabanlarında Crow's Foot Spec dili gibi farklı yöntemler kullanılmaktadır. Ayrıca, sistem tasarımını bütünüyle ele alan ve standartlaşmış bir modelleme dili olan UML (Unified Modelling Language) ile 13 farklı tür diyagram çizilebilir. Bunlar arasında sınıf diyagramı, nesne diyagramı, kullanıcı senaryosu diyagramı ve durum geçiş diyagramı en çok kullanılanlarıdır.

Al go rit ma

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(10)

Düz yazı ile gösterim

è Algoritmanın düz yazı ile gösterimi, çözümün her adımının maddeler halinde alt alta günlük

konuşma dilinde yazılmasıdır. Algoritma mutlaka başlatma ifadesi ile başlar ve bitirme ifadesi ile biter. Her ne kadar günlük konuşma dili kullanılacak olsa da çözümün açıkça anlaşılabilir olması gerekir.

è Örneğin vize, final ve ödev notları girilen öğrencinin dersten geçip geçmediğini gösteren algoritmanın düz yazı ile gösterimi:

Al go rit ma

Başla Oku(vize) Oku(final) Oku(ödev)

ortalama = (vize*0,3) + (final*0,6) + (ödev*0,1) Eğer ortalama >= 60 ise Yaz("Geçtiniz.")

değilse Yaz ("Kaldınız.") Bitir

Düz yazı ile gösterim

01 02 03 0405 06 07 08

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(11)

Sözde kod

è Sözde kod (pseudocode), düz yazı ile gösterimden farklı olarak algoritmadaki adımları normal bir programlama dilinin yapısal kurallarını kullanarak açıklar, ancak makine okumasından ziyade insan okuması için tasarlanmıştır. Sözde kodun kabul görmüş bir standart gösterimi yoktur. Genellikle değişken bildirimleri gibi algoritmanın makine tarafından anlaşılması için gerekli olan ayrıntıları içermez.

è Sözde kod kullanmanın amacı, algoritmayı hem programlama bilmeyen birinin anlayabileceği hem de kaynak koda dönüştürülme işleminin hızlıca yapılabileceği bir yapı oluşturmaktır. Sözde kod, ders kitaplarında ve bilimsel yayınlarda algoritmaları göstermek amacıyla yaygın olarak kullanılır.

Al go rit ma

hesapla(vize, final, odev) input(vize)

input(final) input(odev)

ortalama = (vize*0,3) + (final*0,6) + (odev*0,1) if (ortalama >= 60)

print("Geçtiniz.") else

print("Kaldınız.")

Sözde kod ile gösterim

0201 03 0405 0607 08 09

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

è Örneğin vize, final ve ödev notları girilen öğrencinin dersten geçip geçmediğini gösteren algoritmanın sözde kod ile gösterimi:

(12)

Akış şeması

è Algoritmanın, görsel olarak simge ya da sembollerin birbirlerine ok işaretleri ile bağlanması ile ifade edilmiş şekline akış şeması (flowchart) adı verilir. Akış şeması sembolleri ANSI (American National Standards Institute) standardı olarak belirlenmiş ve tüm dünyada kullanılmaktadır.

è Bazı akış şeması sembolleri aşağıdaki şekildedir.

Al go rit ma

Başla Bitir

klavye kart kağıt ekran

işlem Fonksiyon

çağırma koşul döngü

veritabanı kaydet dış

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(13)

Akış şeması

è Vize, final ve ödev notları girilen öğrencinin dersten geçip geçmediğini gösteren

algoritmanın akış şeması ile gösterimi:

Al go rit ma

è Birden yüze kadar sayıları ekrana yazdıran algoritmanın akış şeması ile gösterimi:

Başla

Bitir

vize, final, ödev

Geçtiniz ortalama =

(vize*0,3) + (final*0,6) + (ödev*0,1)

ortalama ≥ 60

Kaldınız

E H

Başla sayı = 0

sayı < 100

sayı = sayı + 1

Bitir

sayı

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(14)

Akış şeması

è Örneğin mxn boyutlu matrisin elemanlarının toplamını gösteren bir algoritmanın sözde kod ve akış şeması ile gösterimi aşağıdaki şekildedir. Bu algoritmada iç içe döngü kullanılır.

Al go rit ma

Başla

toplam = 0 i = 0 i < m

i++

toplam = toplam + matris[i,j]

Bitir topla(matris[ ], m, n)

toplam = 0

for (i = 0; i < m; i++) for (j = 0; j < n; j++)

toplam = toplam + matris[i,j]

print(toplam)

Sözde kod ile mxn matrisin elemanları toplamı

0201 03 0405 06

j = 0 j < n j++

toplam

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(15)

Nassi-Schnederman şeması

è Kısaca N-S şeması olarak bilinen yöntemde algoritma üst üste yığılmış dikdörtgenler ile gösterilir.

İşlemler sırasıyla en üstteki dikdörtgenden başlayarak en alttakine doğru ilerler. Koşul ve döngü işlemleri için dikdörtgenler kendi içinde parçalara ayrılabilir.

è Bu gösterimde bir noktadan geriye dönüş olmadığı için yalnızca yapısal program tasarımları için uygundur. Bu özelliğinden dolayı N-S şemaları, yapısal akış şemaları olarak da adlandırılmaktadır.

Al go rit ma

işlem

işlem

işlem

işlem

koşul

işlem

true false

işlem işlem koşul

işlem işlem işlem işlem

Ardışık işlemler Koşul ifadesi Döngü ifadesi

işlem

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(16)

Nassi-Schnederman şeması

è Örneğin vize, final ve ödev notları girilen öğrencinin dersten geçip geçmediğini gösteren algoritmanın N-S şeması ile gösterimi:

Al go rit ma

print("geçtiniz")

Ortalama ≥ 60

print("kaldınız")

true false

hesapla(vize, final, odev) input(vize)

input(final) input(odev)

ortalama = (vize*0,3) + (final*0,6) + (odev*0,1) if (ortalama >=60)

print("Geçtiniz.") elseprint("Kaldınız.")

Sözde kod ile gösterim

01 02 0403 05 06 07 0809

ortalama =

(vize*0,3) + (final*0,6) + (ödev*0,1) input(ödev)

input(final) input(vize)

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(17)

Nassi-Schnederman şeması

Al go rit ma

è Örneğin birden yüze kadar sayıları ekrana yazdıran algoritmanın N-S şeması ile gösterimi:

sayı = 0 sayı < 100

sayı = sayı + 1 print(sayı)

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

Başla sayı = 0

sayı < 100

sayı = sayı + 1

Bitir

sayı

(18)

Warnier-Orr diyagramı

è Kısaca W-O diyagramı olarak bilinen bu algoritma gösterim yöntemi Jean Dominique Warnier ile Kenn Orr tarafından geliştirilmiştir. Bu gösterim, kendi içinde dallanan küme parantezleri ile ilerler.

İşlemler ve veriler arasındaki ilişkiyi göstermek ve kullanılan veri yapısının ifadesi için kullanışlı bir yöntemdir.

Al go rit ma

işlem işlem

işlem

Ardışık işlemler

işlem koşul

işlem

Koşul ifadesi

işlem

işlem E

H

işlem döngü

işlem

Döngü ifadesi

işlem

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(19)

Warnier-Orr diyagramı

è Örneğin vize, final ve ödev notları girilen öğrencinin dersten geçip geçmediğini gösteren algoritmanın W-O diyagramı ile gösterimi:

Al go rit ma

hesapla(vize, final, odev) input(vize)

input(final) input(odev)

ortalama = (vize*0,3) + (final*0,6) + (odev*0,1) if (ortalama >=60)

print("Geçtiniz.") elseprint("Kaldınız.")

Sözde kod ile gösterim

01 02 0304 05 06 07 0809

ortalama = (vize*0,3) + (final*0,6) + (odev*0,1) input(ödev)

input(final) input(vize)

ortalama ≥ 60

E print("Geçtiniz")

H print("Kaldınız")

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

(20)

Özyineleme

è Özyineleme (recursion) işlemi, algoritmanın kendisini doğrudan ve dolaylı olarak tekrar

çağırmasıdır. Bu işlem programlamada fonksiyonlar kullanılarak gerçekleştirilir ve bu fonksiyonlara özyinelemeli fonksiyon (recursive) denir.

è Özyinelemeli fonksiyon, özyinelemeli tasarıma uygun olabilecek büyük problemi çözmek için böl ve yönet mantığını kullanır ve genel yapısı şekildeki gibidir.

è Özyineleme işlemi kod yazımı ve çözümünde avantajlı olsa da, çoğu zaman iteratif (döngü kullanan) fonksiyonlara göre daha fazla bellek alanı kullanır.

Al go rit ma

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

fonksiyon()

if (sonlandirma degeri) return

else

fonksiyon()

Sözde kod

0201 0403 05

(21)

Özyineleme

è Örneğin n faktöriyel değerini hesaplayan bir algoritmanın hem iteratif hem de özyinelemeli tasarımları aşağıdaki şekildedir.

Al go rit ma

Dr.Öğr.Üyesi Hüseyin Bilal MACİT www.hbmacit.com

faktoriyel(n) f = 1

for(i = 2; i <= n; i++ ) f *= i

return f

İteratif fonksiyon sözde kodu

0201 0304 05

faktoriyel(n) if (n = 1)

return 1

elsereturn n * faktoriyel(n - 1)

Özyinelemeli fonksiyon sözde kodu

0201 03 0405

Referanslar

Benzer Belgeler

Günümüzde Bilgisayar Mühendisliği, Matematik-Bilgisayar veya Ġnformatik adı altında eğitim yapılan tüm bölümlerde Veri Yapıları ve Algoritmalar dersi artık omurga

Algoritma Akış Diyagramı Programlama Araçları, Değişkenler ve Sabit Giriş- Çıkış İşlemleri, Operatörler Karar Yapıları Döngü Kontrolleri Tek Boyutlu Diziler Çok

Bu çalışmada Ege Bölgesi’nde 7 farklı yöreden kurutma aşamasında 2003 ve 2004 yıllarında temin edilen 115 adet kuru incir örneğinde mikoflora, küflerin toksin

Yani metin içeren bir değişken için metin değişken, sayı içeren bir değişken için sayı değişken, tarih ya da zaman içeren bir değişken içinse tarih ya da zaman

 Bilinen ve çözümlerde sıkça başvurulan veri modelleri, genel olarak, bağlantılı liste (link list), ağaç (tree), graf (graph), durum makinası (state machine), ağ

Üniversitelerin çoğu ANKOS, ULAKBİM ya da Üniversite ve Araştırma Kütüphanecileri Derneği (ÜNAK) aracılığıyla elektronik dergi ve veri tabanlarına erişmelerine

– Verinin bellekte en etkin nasıl depolanacağı, erişileceği ve yönetileceği konularını inceler. – Hangi veri yapısının kullanılacağı, bir algoritmanın

ì Algoritma; belli bir problemi çözmek veya belirli bir amaca ulaşmak için tasarlanan adımlar kümesidir3.