Bölüm 2 Algoritmalar. 2.1 Giriş



Benzer belgeler
Kısmen insan davranışlarını veya sezgilerini gösteren, akılcı yargıya varabilen, beklenmedik durumları önceden sezerek ona göre davranabilen bir

ALGORİTMA İ VE PROGRAMLAMA

T.C. MALİYE BAKANLIĞI STRATEJİ GELİŞTİRME BAŞKANLIĞI İNOVASYON FİKİRLERİ YÖNETİM PROGRAMI PROJE FORMU

NESNEYE DAYALI PROGRAMLAMA VE C++

İNSAN KIYMETLERİ YÖNETİMİ 4

Gerçekleştirme Raporu

Matematiksel İktisat-I Ders-1 Giriş

Makine Öğrenmesi 1. hafta

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

1. ÜNİTE TAM SAYILAR KONULAR 1. SAYILAR

ATAKÖY CUMHURİYET ANADOLU LİSESİ 9. SINIF MATEMATİK DERSİ YILLIK PLANI

Matematiksel Beceriler (Ortaöğretim Matematik Dersi Öğretim Programı)

Çocuk, Ergen ve Genç Yetişkinler İçin Kariyer Rehberliği Programları Dizisi

Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi Uygulamaları

Onlu Sayılandırmadan Dönüştürme

ANKARA İLİ BASIM SEKTÖRÜ ELEMAN İHTİYACI

KODLAMA SİSTEMLERİNİN TANIMI :

PAPERWORK DOCFLOW Doküman&Form Akış yönetimi

Okunabilir Kod Yazım Standartları: Şiir Gibi Kod Yazmak

Ders Anlatım Föyü Nedir?

PROGRAMLAMA TEMELLERİ DERSİ

Malzeme Gereksinim Planlaması (MRP)

ORTAOKULU ÜNİTİLENDİRİLMİŞ YILLIK BİREYSEL DERS PLANI (BEP)

EKİM twitter.com/perspektifsa

6.6. Korelasyon Analizi. : Kitle korelasyon katsayısı

BOSSA DIŞ GİYİM İŞLETMESİNDE FASON İPLİK İMALATI TERMİN SÜRELERİNE ALTI SIGMA ARAÇLARI İLE İSTATİSTİKSEL YAKLAŞIM

Regresyon ve İnterpolasyon. Rıdvan YAKUT

Kurumsal Yönetim ve Kredi Derecelendirme Hizmetleri A.Ş. Kurumsal Yönetim Derecelendirmesi

Cumhuriyet Halk Partisi

Bölüm 17 Manchester CVSD

Kurumsal Yönetim ve Kredi Derecelendirme Hizmetleri A.Ş. Kurumsal Yönetim Derecelendirmesi

Kurumsal Yönetim ve Kredi Derecelendirme Hizmetleri A.Ş. Kurumsal Yönetim Derecelendirmesi

Kurumsal Yönetim ve Kredi Derecelendirme Hizmetleri A.Ş. Kurumsal Yönetim Derecelendirmesi

Tebliğ. Kapsam Madde 2 Borçlanma maliyetlerine ilişkin Türkiye Muhasebe Standardının kapsamı ekli TMS 23 metninde yer almaktadır.

Teknik Açıklıklar Nasıl Yönetilmeli? Hayretdin Bahşi Uzman Araştırmacı

Bilgisayar Programlamaya Giriş I

SAYILAR TEORİSİ - PROBLEMLER

kpss ezberbozan serisi MATEMATİK GEOMETRİ SORU BANKASI Eğitimde

AYRIK YAPILAR ARŞ. GÖR. SONGÜL KARAKUŞ- FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ, ELAZIĞ

2016 Ocak SEKTÖREL GÜVEN ENDEKSLERİ 25 Ocak 2016

Mühendislik Ekonomisi. Prof.Dr. Orhan TORKUL

DERS 1. ki De i kenli Do rusal Denklem Sistemleri ve Matrisler

8. SINIF ÖĞRETİM PROGRAMI

01/04/ /05/ /06/ /10/1999 TARİHLERİ EMEKLİLİKTE BELİRLEYİCİ ROL OYNAR

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

TEKLİF ALMA ŞARTNAMESİ

ÇOCUKLARDA ÖFKE KONTROLÜ

Ders Notlarının Creative Commons lisansı Feza BUZLUCA ya aittir. Lisans:

BİLGİSAYAR MİMARİSİ. Mimariye Giriş. Özer Çelik Matematik-Bilgisayar Bölümü

GİRESUN KOBİ LERİNİN İHRACAT EĞİTİM İHTİYACI ARAŞTIRMA RAPORU

ISBN NUMARASI: ISBN NUMARASI: ISBN NUMARASI: ISBN NUMARASI:

KORELASYON VE TEKLİ REGRESYON ANALİZİ-EN KÜÇÜK KARELER YÖNTEMİ

matematik sayısal akıl yürütme mantıksal akıl yürütme

Algoritmanın Hazırlanması

Kurumsal Yönetim ve Kredi Derecelendirme Hizmetleri A.Ş. Kurumsal Yönetim Derecelendirmesi

SÜREÇ YÖNETİMİ SİSTEMİ

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Kazanımlar ENF Çukurova Üniversitesi Jeoloji Müh. Böl. 1. Ders Hakkında. Ders Hakkında. Ders Hakkında. Ders Hakkında PROGRAMLAMAYA GĐRĐŞ

Kurumsal Yönetim ve Kredi Derecelendirme Hizmetleri A.Ş.

Türev Kavramı ÜNİTE. Amaçlar. İçindekiler. Yazar Prof.Dr. Vakıf CAFEROV

Algoritmalar ve Programlama. Algoritma

YÖNETİM MUHASEBESİ ve Uygulamaları

ÇOCUK VE KİTAP Çocuk ve kitap, birbirini bütünleyen ve birbirine çok yakışan, iki değerli kelime... Çocuklara okul öncesi çağlarında kitapları tanıtma

... ROBOTİK VE KODLAMA EĞİTİMİ ÇERÇEVESİNDE ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ DERSİ ÜNİTELENDİRİLMİŞ YILLIK DERS PLANI

Uzayın Analitik Geometrisi

Konutta Uygulanan KDV Oranındaki Değişiklik

SİGORTACILIK VE BİREYSEL EMEKLİLİK SEKTÖRLERİ 2010 YILI FAALİYET RAPORU YAYIMLANDI

PROGRAMLAMAYA GİRİŞ VE PROGRAM GELİŞTİRME

MODERN MÜHENDİSLİK HESAPLAMALARI İLE ASANSÖR BİLEŞENLERİNİN GÜVENİRLİKLERİNİN ARTTIRILMASI

Sağlıkta Yılında Başlamıştır. Dönüşüm Programı

ETKİLİ ÖĞRENCİ-ETKİLİ AİLE seminerimize katılımlarınızdan onur duyacağız. Katılım bilginizi numaralı telefona iletmenizi rica ederiz.

Değerlendirme testleri:

Analiz Raporu. Analiz aşamasında projenin içeriği belirlenir. Çözeceğimiz problemin büyük bir problem olup olmadığını değerlendirmek,

Horton'nun (2001) belirttiği üzere web tabanlı öğretim ortamlarında genel olarak kullanılan ders yapıları aşağıdaki gibidir:

Bilgisayarda Programlama. Temel Kavramlar

ANKARA ÜNİVERSİTESİ SENATO KARAR ÖRNEĞİ

RF Entegre Devre Tasarımı (EE 575) Ders Detayları

PROGRAMLAMA TEMELLERİ-ÜNİTE 2 SAYI SİSTEMLERİ, OPERATÖRLER VE İŞLEMLER

SELÇUK ÜNİVERSİTESİ FEN FAKÜLTESİ MATEMATİK BÖLÜMÜ ÖĞRETİM DEĞERLENDİRME ANKETİ

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

Örnek...3 : 8 x (mod5) denkliğini sağlayan en küçük pozitif doğal sayısı ile en büyük negatif tam sa yısının çarpım ı kaçtır?

10. ÜNİTE DİRENÇ BAĞLANTILARI VE KİRCHOFF KANUNLARI

Üstel modeli, iki tarafın doğal logaritması alınarak aşağıdaki gibi yazılabilir.

EĞİTİM ÖĞRETİM YILI 8. SINIF MATEMATİK DERSİ KAZANIMLARININ ÇALIŞMA TAKVİMİNE GÖRE DAĞILIM ÇİZELGESİ

Ders: Konu: TEOG. Yaprak No: Copyright: MİKRO ANLATIM. Kazanım: Üslü sayılar ile ilgili kuralları hatırlar.

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Özel Öğretim Yöntemleri1 YDA

REIDIN KONUT FİYAT ENDEKSLERİ: 2016 TEMMUZ AYI SONUÇLARI 15 AĞUSTOS 2016

REIDIN KONUT FİYAT ENDEKSLERİ: 2016 HAZİRAN AYI SONUÇLARI 22 TEMMUZ 2016

2005 Matematik Programı ve Matematiksel Beceriler. Evrim Erbilgin

1- KONTROL ORTAMI. Eylem Kod No. Öngörülen Eylem veya Eylemler KOS 1.3-E1. verilecektir. İlgili personele eğitim. KOS 1.2-E1 verilecektir.

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

Ders 2: Su Miktarı Hesabı. Su temin şeması tasarımında kentsel kullanım amaçlı su miktarının hesaplanması için aşağıdaki veriler gereklidir:

Programlama Giriş. 17 Ekim 2015 Cumartesi Yrd. Doç. Dr. Mustafa YANARTAŞ 1

Adınız ve Soyadınız: Doğum Tarihiniz: Sorular hakkındaki genel düşünceniz:

Ç.Ü. Sosyal Bilimler Enstitüsü Dergisi, Cilt 19, Sayı 2, 2010, Sayfa Doç. Dr. Songül TÜMKAYA İlknur ÇAVUŞOĞLU

İÇİNDEKİLER. Ön Söz...2. Tam Sayılarda Bölünebilme...3. Kongrüanslar Primitif (İlkel) Kökler ve İndeksler Genel Tarama Sınavı...

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Özel Öğretim Yöntemleri 2 YDA

bunları biliyor muydunuz? primo Bill Gates Mark Zuckerberg oyuncak robot codie code.org bulmacalar NEDIR

Tablo 1 Eğitim Bilimleri Temel Alanı

Performans Modelleri P R O F. D R. M U S T A F A K A R A Ş A H İ N

Transkript:

Bölüm 2 Algoritmalar 2.1 Giriş İnsanlar ilk çağlardan beri istek veya arzularını ifade etmek çeşitli yöntemler ile anlatmaya çalışmışlardır. İlk olarak çeşitli şekil ve simgeler daha sonra ise yazının bulunmasıyla bu istek veya arzularını yazı ile ifade etmeye başlamışlardır. Tüm bu çabaların amacı insanlar birbirleri ile iletişim kurmak, anlatmak istediklerini başkalarına aktarmak veya kalıcılığını sağlamak olabilmektedir. Değişik toplumlarda dil farkı olması bazı durumlarda insanları ortak dil arayışı içerisine itmiştir. Fakat bu durum çok fazlar etkili olmamıştır. Günümüzde ortak konuşma ve yazı dili yerini genel kabul görmüş konuşma ve yazı diline bırakmıştır. Bilgisayar dünyasında durum biraz daha farklıdır. İletişim her geçen gün biraz daha fazla gelişmekte ve uygulama alanları değişiklik göstermektedir. Internet ve bilgisayar ağlarının dünyayı sarması, bilgisayar dünyasında bir devrim olarak kabul edilmektedir. Sanayi devriminin modern toplum oluşmasında bir işaret (mihenk) taşı olduğu gibi Internet bilgisayar dünyasındaki gelişimin bir işaret taşıdır. Ortak haberleşme dilinin gelişimi bu aşamada öne çıkmaktadır. Herkes acaba nasıl ortak anlaşabilecekleri bir dili kullanacak ve kabul edecektir. Bu konu ilerdeki bölümlerde ayrıntılı olarak tartışılacaktır. Algoritma kelime anlamı bu günkü Irak doğumlu matematikçi Muhammet ibni Musa El-Harezmi tarafından M.S. 825 yılında aritmetik hesap yöntemlerinin kurallarının ve aşamalarının gösterildiği Kitab el cebr ve l mukabele adlı kitabında bahsedilmiştir. İlk zamanlar Algorizme olarak kullanılan kelime artık günümüzde algoritma olarak telafuz edilmektedir. Algoritmalar bir işi veya yöntemi simgeler yardımıyla açıklamak için kullanılan işaret dili olarak tarif edilebilir. Bilgisayar dünyasında bu işler bir yazılımın uygulanma veya geliştirilmesi aşamasında tarif edilecek bilgileri simgelemektedir. Bir yazılımcı yeni başlayacağı bir projeyi bilgisayar programlama dili ile yazmaya başlamadan önce bu projenin genel çatısını oluşturur. Oluşturulan bu çatı yazınsal bir dil olabildiği gibi bir simgesel olarak 26

da ifade edilebilir. Yazınsal ifadeler kodları, alt programları veya fonksiyonları gösterirken genelde karmaşıklaşabilmektedir. Sade ve anlaşılabilir bir gösterimden yararlanmak isteyebilirler. Bu durumda bilgisayar yazılımı geliştirenler çeşitli şekillerin olduğu ve herkes tarafından benimsenen bir gösterimi kullanmaktadır. Algoritmalar Harezmi den çok önceleri bilinmekteydi. Eski yunan uygarlığında yaklaşık olarak M.Ö. 300 yıllarında Öklid (Euklides) hesap yöntemi olarak bilinen basit bir algoritma şeklinde tanımlanmakta idi. Bu algoritmada yöntem iki sayının en büyük ortak böleninin bulunduğu hesaptır. Öklid (Euklides) algoritması olarak bahsedebileceğimiz bu yöntemde verilen iki sayıyı beraber bölen en büyük sayının bulunmasıdır. Öklid (Euklides) algoritmasını uygulamak istediğimiz iki sayı için şu şekilde yapılır; Adım 1) Büyük sayı A küçük sayı B ye bölünür Adım 2) Küçük sayı B kalan sayı çifti oluşturulur Adım 3) Küçük sayı B kalan sayıya bölünür Adım 4) Tam olarak bölünme sağlanana kadar Adım 2 ye geri dön. Yukarıdan da anlaşıldığı gibi aslında temel bir algoritma işlemini gerçekleştirmektedir. Bu sayı çiftleri arasıda sistematik olarak uygulanabilen kayıtlı ilk hesap yöntemidir. Sayı çiftlerinin değeri ne kadar yüksek olur ise çözüm süresinin de uzayacağı kesindir. Sonsuz büyüklükte iki sayının bile bu yöntem ile sonlu olarak bölünebileceği bilimsel olarak araştırılması gereken önemli bir konudur. Çözüm süresi sayıların büyüklüğü ile çok yakından ilgili olması bu yönteme daha büyük ilgi uyandırmaktadır. Bu algoritmayı sayısal olarak çözmek yerine belirlenen büyüklükte sayılara uygulanabilirliğini akış seması olarak göstermek akılcı bir yaklaşım olacaktır. Öklid (Euklides) algoritması günümüzde matematik dahil bir çok bilim dalında kullanılan yöntemlerin en basitine bir örnek olarak kabul edilebilir. 20. yüzyıla kadar bilinen pek çok yöntemde algoritma yöntemi içerisinde görülmemiştir. 1950 ve sonrasında ise akış diyagramları ve şekilsel anlatımlarında önem kazanması artık algoritmaları şekilse olarak anlatıma ihtiyaç duyulması da akış diyagramlarının önemini arttırmıştır. Akış diyagramları bu ve benzeri bir çok algoritmayı şekilsel olarak ifade etmekte ve anlaşılırlığını kolaylaştırmaktadır. 27

Şekil 2.1. Öklid (Euklides) Algoritmasının Akış Diyagramı Bilgisayar programlama dilleri ile bilgisayar programlamanın zor olduğu bilinmektedir. Bilimsel çalışmalarda ise bu zorluğun derecesi daha da artmaktadır. Örneğin birinci dereceden bir bilinmeyenli bir denklemi çözmek için kullanılan yöntemin basit olduğunu bilinmektedir. Eğer denklemimiz ikinci dereceden ve üç bilinmeyenli olsaydı ne yapmalıyız veya doğrusal olmayan bir fonksiyonun eğrisinin belirli aralıklardaki değerini hesaplamak istiyorsak ne yapmalıyız. Bu durumlarda bilgisayar programlarından yararlanıyoruz fakat bilgisayarlar bu problemleri nasıl çözüyor. Birkaç bilgisayar kodunu ardışık olarak yazmaya kalksak acaba bize sonuç verir mi. Bu sorunun cevabını az çok hepimiz hayır olarak vermekteyiz. Bilgisayarlara karşılaştığımız problemleri belirli bir yöntem ve sıra ile bilgisayarın anlayabileceği kodlar halinde vermeliyiz. Bu kodların verilmesi mantıksal bir süreç izlenerek yapılmaktadır. Bilgisayar programlama dilleri ile problemleri çözmek için iki aşamadan bahsedebiliriz. Birinci aşamada problemin çözümünün el ile yapıldığı (analitik çözüm) aşamasıdır. Bu aşamada problem her zaman çözülemeyebilir veya çözüm süresi çok uzun zaman alabilir. Genelde bu aşama algoritmanın geliştirilmesinden öncedir ve algoritmanın geliştirilmesine bir hazırlık oluşturur. İkinci aşama uygulama aşamasıdır. Burada algoritma 28

geliştirilmiş artık problem çözülmek üzeredir. Problem adımlara ayrılmış ve parçalı olarak çözüm yöntemleri denenmeye çalışılmaktadır. Ele Alınan Problem Problem Çözüm Aşaması Çözümün Algoritma şekline gelmesi Uygulama Aşaması Bilgisayar programlama dili kodları Şekil 2.2 Algoritma Geliştirme Süreci. 2.2 Algoritma Geliştirme Kılavuzu Bu bölümde algoritmalardan bahsedilirken bilgisayar programlama ile ilgili olan algoritmalardan bahsedilecektir. Geliştirilen algoritmalar ise yalnızca bilgisayar programlama dillerine ait olan kodları içeren algoritmalar olacaktır. Algoritmalar geliştirilirken dikkat edilmesi gereken çeşitli durumlar vardır. Bu durumları şu şekilde açıklayabiliriz; i) Geliştirilen bilgisayar programlama algoritmalar şekil olarak basit ve anlaşılabilir olmalıdır. ii) Bilgisayar programlama kodlarını açıkça ifade edebilmelidir. iii) Genel kabul görmüş olan simgesel gösterimler kullanılmalıdır. iv) Birden fazla bilgisayar programlama diline uygulanabilir olmalı. v) Aşamalar halinde gerçekleştirilecek programlama diline ait gösterimleri içermeli. vi) Bilgisayar programlama dillerine uygulanabilmeli. vii) Bilgisayar programlama kodları yenilendiğinde veya değiştirildiğinde algoritmaya ait şekillerde de değişiklik yapılabilmeli. 2.3 Bilgisayar Programlama Dillerinde Kullanılan Algoritma Şekilleri (Akış Diyagramları) Algoritmaların belirlenen özel şekiller ile ifadesine akış diyagramlarının oluşturulması olarak tanımlanabilir. Akış diyagramları geliştirilen bir algoritmayı şekilsel olarak ifade etmekte ve anlaşılabilirliğini kolaylaştırmaktadır.akış diyagramlarını gösterir çeşitli şekiller vardır. Bu şekiller işlevlerin simgesel gösterimidir. Bilgisayar programlama dilinde kullanılan programlama kodları bu şekiller ile basit olarak gösterilerek programı yazan programcı yanı sıra başka bir programcı tarafından incelendiğinde anlaşılabilirliğini kolaylaştırmak veya programcı uzun süre önce yazdığı program kodunu unutmuş ise hatırlamasına yardımcı olmak 29

amacına da sahiptir. Bilgisayar programlama dillerinde kullanılan ortak simgesel ve şekiller programlama dilinin gerçekleştireceği kodlar vardır. Genel olarak bilgisayar programlama dillerinde programlamaya başlarken kodlar yazılmadan önce belirlenen algoritma akış diyagramları ile ifade edilir. Akış diyagramları belirlenen bilgisayar programlarının kaynak kodlaması yapılır. Bu işlem programın kaynak kodlarının geliştirilmesi için gerekli olan öngörü ve işlem kolaylığını sağlar. Akış diyagramı oluşturulan bilgisayar programında algoritmanın nasıl uygulanacağının bilinmesi veya daha kısa bir yolu var ise bu şekilsel olarak görülmesi konusunda yardımcı olmaktadır. Algoritmalar bir iş veya işlemin nasıl yapılacağını gösteren yazı veya şekillerden oluşur. Tablo 2.1 Akış Diyagramları Sembol Açıklama Program üzerinde işlem yapılacak Program karar durumunda, program karar veriyor Programa doküman giriş/çıkışı Programa veri giriş/çıkışı yapılacak Programdaki veriler kaydedilecek veya okunacak Program bilgisayarın iç hafızasından bilgi alacak veya okuyacak Program işaret edilen cihaza çıktı / sonuç gönderecek Programa El ile veri girişi yapılacak 30

Program değişkeleri döngü işlemine tutacak Programa bağlantı yapılacak veya diğer sayfaya geçiş için bağlantı noktası Bilgisayar ile problem çözmek için birden fazla yöntem olması algoritma kullanılmasını zorunluluk haline getirmektedir. Bazı durumlarda yazı ile algoritmanın geliştirilmesi olanaksız olabilmektedir. Bu durumda şekiller ile anlatmak istediğimiz işlemleri sembolize ederek işlevleri anlatırız. Bir bilgisayar programının en basit hali ile akış diyagramlarında gösterimi Şekil 2.3 deki gibidir. Başla Veri gir K:= i*j K > t Sonuç GÖster Dur Şekil 2.3. En Basit Algoritma Gösterimi 31