MIT 503 Veri Yaplar ve algoritmalar Algoritma temsili

  • Slides: 78
Download presentation
MIT 503 Veri Yapıları ve algoritmalar Algoritma temsili Y. Doç. Yuriy Mishchenko

MIT 503 Veri Yapıları ve algoritmalar Algoritma temsili Y. Doç. Yuriy Mishchenko

Algoritma temsilleri Ders planı • Algoritma temsiline giriş • Kaba veya Sözde Kod (Pseudo.

Algoritma temsilleri Ders planı • Algoritma temsiline giriş • Kaba veya Sözde Kod (Pseudo. Code) • Akış şemaları (Flow Diagrams)

Algoritma temsilleri • Algoritmalar, bir problemin çözümü olarak bir talimat listesiyle belirtilir • Bu

Algoritma temsilleri • Algoritmalar, bir problemin çözümü olarak bir talimat listesiyle belirtilir • Bu talimat listesini temsil etmek için birkaç opsiyon var: – Doğal dil – Bilgisayar kodu – Akış şeması veya sözde kod

Algoritma temsilleri • Bir veri deposunda arama problemi, iki örnek

Algoritma temsilleri • Bir veri deposunda arama problemi, iki örnek

Algoritma temsilleri • Sıralanmamış veri deposu ise, Birinci eleman ile başlayarak hedefi bulana kadar

Algoritma temsilleri • Sıralanmamış veri deposu ise, Birinci eleman ile başlayarak hedefi bulana kadar bütün elemanlara bakmak • Sıralanmış veri deposu ise, Ortadaki elemana hemen bakıp, eğer o eleman hedeften büyük ise, daha önce, değilse, daha sonra aynı şekilde devam etmek • Bunlar doğal dil kullanarak tanımlanmış algoritmaların örneği 2 5 7 11 12 13 hedef 17 22 23 30

Algoritma temsilleri • Bu tanımlamalar algoritmaların ana fikrini genel şekilde açıklayabilmesine rağmen çok kesin

Algoritma temsilleri • Bu tanımlamalar algoritmaların ana fikrini genel şekilde açıklayabilmesine rağmen çok kesin değil ve bir program şekline çevirmek için programcıdan baya iş gerektirebilir • Algoritma daha kesin şekilde belirtmek için farklı yöntemleri kullanılmalı

Algoritma temsilleri • Birçok durumda algoritma, bilgisayar program kullanarak direkt olarak temsil edilir •

Algoritma temsilleri • Birçok durumda algoritma, bilgisayar program kullanarak direkt olarak temsil edilir • Bu yaklaşımın ana problemi –programlama dilini bilmeyen kişi böyle algoritmaları okuyamaz ve algoritmanın yapısı ve süreçleri programlama dilinin yapıları ve süreçleriyle (mesela değişken tanımları) gereksizce karıştırılır

Sözde Kod • Algoritmalar daha genel olarak belirtmek için kama veya sözde kod (pseudocode)

Sözde Kod • Algoritmalar daha genel olarak belirtmek için kama veya sözde kod (pseudocode) ve akış şemaları (flow diagrams) kullanılır

Sözde Kod • Sözde kod, günlük dili ve aynı zamanda programlama dillerine benzer bir

Sözde Kod • Sözde kod, günlük dili ve aynı zamanda programlama dillerine benzer bir algoritma tanımlama yöntemidir

Sözde Kod • Sözde kod, birkaç temel yapı kullanır ve işlemlerin çoğu için doğal

Sözde Kod • Sözde kod, birkaç temel yapı kullanır ve işlemlerin çoğu için doğal dil kullanır • Sözde kodla verilen algoritmaların önemli amacı, doğal dil ile belirtilmiş algoritmayı daha kesin şekilde tanımlamak, algoritmada kullanılacak tüm verileri değişkenler olarak kesin şekilde tanımlamak, ve tipik eylemler için (değişkene değer atanması, koşullu ve döngü eylemleri) belirli formatı kullanmaktır

Sözde Kod • En basit bir örnek - çorba pişirme tarifi: – Kullanılacak malzemeler

Sözde Kod • En basit bir örnek - çorba pişirme tarifi: – Kullanılacak malzemeler bu durumda değişkenler oluyor, yani • • • Kullanılacak sebzeler – sebze çeşiti (S) Kullanılacak tencere – tencere (T) Kullanılacak su – su (SU) Kullanılacak tuz – tuz (TUZ) Kullanılacak tuz miktarı – bir sayı • Bu şekilde değişkenlerin türleri ve doğaları algoritmanın başında tanımlanınca gerçekleştirilecek iş de daha kesin oluyor

Sözde Kod • Çorba pişirme tarifi, değişkenleri kullanarak: – – – – – Sebzeleri

Sözde Kod • Çorba pişirme tarifi, değişkenleri kullanarak: – – – – – Sebzeleri alın (S olsun) S’yi yıkayıp kesin Tencereyi alın (T olsun) T’ye su eklein (SU olsun) T’yi ateşe koyun SU kaynamasını bekleyin T’ye S’yi ekleyin BİRAZ miktarı tuz alın (TUZ olsun) TUZ’yu SU’ya ekleyin SU tadına bakın; pişmişse servis yapın

Sözde Kod • Çorba pişirme algoritması (değişkenler): – – – – – Sebzeleri alın

Sözde Kod • Çorba pişirme algoritması (değişkenler): – – – – – Sebzeleri alın (S olsun) S’yi yıkayıp kesin Tencereyi alın (T olsun) Bu talimatlar daha kolay adım T’ye su eklein (SU olsun) adım gerçekleştirilebilir T’yi ateşe koyun SU kaynamasını bekleyin T’ye S’yi ekleyin BİRAZ miktarı tuz alın (TUZ olsun) TUZ’yu SU’ya ekleyin SU tadına bakın; pişmişse servis yapın

Sözde Kod • Sözde kodda algoritmadaki tipik eylemler için özel formatlar kullanılır • Genellikle

Sözde Kod • Sözde kodda algoritmadaki tipik eylemler için özel formatlar kullanılır • Genellikle şu formatlar için ingilizce kelimeler kullanılır ama türkçe de olabilir – sözde kodun amacı, algoritmanın doğal diline yakın şekilde tanımlamak • • • Değişkene değeri atama ( : = veya SET, OLSUN) Koşul (IF-THEN-ELSE, EĞER-İSE-DEĞİLSE) Döngü, çeşit (FOR veya FOR ALL, BÜTÜN İÇİN) Döngü, koşula bağlı (WHILE, İKEN) Seçme (CASE, SEÇME) Ayrı alt-işlem veya fonksiyon (FUNCTION, FONKSİYON)

Sözde Kod • Atama işlemlerin örnekleri: – – – – – atama Sebzeleri alın

Sözde Kod • Atama işlemlerin örnekleri: – – – – – atama Sebzeleri alın (S olsun) S’yi yıkayıp kesin atama Tencereyi alın (T olsun) atama T’ye su eklein (SU olsun) T’yi ateşe koyun SU kaynamasını bekleyin T’ye S’yi ekleyin atama BİRAZ miktarı tuz alın (TUZ olsun) TUZ’yu SU’ya ekleyin SU tadına bakın; pişmişse servis yapın

Sözde Kod • Döngü eylemlerin örnekleri: – – – – – Sebzeleri alın (S

Sözde Kod • Döngü eylemlerin örnekleri: – – – – – Sebzeleri alın (S olsun) Çeşit döngü S’yi yıkayıp kesin Tencereyi alın (T olsun) T’ye su eklein (SU olsun) T’yi ateşe koyun Koşullu döngü SU kaynamasını bekleyin T’ye S’yi ekleyin BİRAZ miktarı tuz alın (TUZ olsun) TUZ’yu SU’ya ekleyin SU tadına bakın; pişmişse servis yapın Koşullu döngü

Sözde Kod • Çorba pişirme tarifinin sözde kodu: – – – S: =kullanılacak sebzeleri

Sözde Kod • Çorba pişirme tarifinin sözde kodu: – – – S: =kullanılacak sebzeleri T: =kullanılacak tencere TUZ: =BİRAZ miktarda tuz DÖNGÜ bütün S’deki s İÇİN, s yıkayın ve kesin T’ye su ekleyin SU: =T’deki su T’yi ateşe koyun SU kaynamamış İKEN bekleyin T’ye S’yi ekleyin T’ye TUZ’yu ekleyin SU tadı pişmemiş İKEN bekleyin servis yapın

Sözde Kod • Çorba pişirme tarifinin sözde kodu (ingilizce): – – – S: =kullanılacak

Sözde Kod • Çorba pişirme tarifinin sözde kodu (ingilizce): – – – S: =kullanılacak sebzeleri T: =kullanılacak tencere TUZ: =BİRAZ miktarda tuz FOR ALL s in S, s yıkayın ve kesin T’ye su ekleyin SU: =T’deki su T’yi ateşe koyun WHILE SU kaynamamış, bekleyin T’ye S’yi ekleyin T’ye TUZ’yu ekleyin WHILE SU tadı pişmemiş, bekleyin servis yapın

Sözde Kod • Özetleme, sözde kodu kullanarak – Doğal dilinden daha kesin ve biçimsel

Sözde Kod • Özetleme, sözde kodu kullanarak – Doğal dilinden daha kesin ve biçimsel algoritmanın temsili sağlarız – Bütün kullanılacak nesneler kesin değişken olarak belirtiriz – Kullanılacak değişkenlerin türleri S: =kullanılacak sebzeleri T: =kullanılacak tencere ve değerleri bütün zamanlarda TUZ: =BİRAZ miktarlı tuz DÖNGÜ bütün S’deki s İÇİN, s kesin yıkayın ve kesin – Değer atanma, koşul işlemler ve T’ye su ekleyin su döngü işlemler (tekrarlama) gibi SU: =T’deki T’yi ateşe koyun SU kaynamamış İKEN bekleyin tipik eylemleri belirli formatlar T’ye S’yi ekleyin kullanarak belirtiriz SU’ya TUZ’yu ekleyin SU tadı pişmemiş İKEN bekleyin servis yapın

Sözde Kod • İkiye bölme algoritması (doğal dil): – Sıralanmış veri deposunda ilk önce

Sözde Kod • İkiye bölme algoritması (doğal dil): – Sıralanmış veri deposunda ilk önce orta elemanına bakıp, eğer o eleman hedeften büyükse, daha önce, değilse, daha sonra, hedef buluna kadar devam ediyoruz

Sözde Kod • İkiye bölme algoritması: – Kullanılacak veriler değişkenler olarak atıyoruz • Giriş

Sözde Kod • İkiye bölme algoritması: – Kullanılacak veriler değişkenler olarak atıyoruz • Giriş veri deposu – D, bir dizi • Hedef – H, bir şey • D’nin ortasındaki eleman – O, bir şey

Sözde Kod • İkiye bölme algoritması – H, hedef – D, giriş dizi –

Sözde Kod • İkiye bölme algoritması – H, hedef – D, giriş dizi – O, D dizisinin ortasındaki değeri – H O’ya eşit değil ve D boş dizi değil İKEN, • EĞER O H’dan büyük İSE, D’nin sol yarısı yeni D olsun, DEĞİLSE, D’nin sağ yarısı yeni D olsun • O, (yeni) D dizisinin ortasındaki değeri

Sözde Kod • Değişken atama işlemleri atama – H, hedef atama – D, giriş

Sözde Kod • Değişken atama işlemleri atama – H, hedef atama – D, giriş dizi – O, D dizisinin ortasındaki değeri atama – H O’ya eşit değil ve D boş dizi değil İKEN, • EĞER O H’dan büyük İSE, D’nin sol yarısı yeni D olsun, DEĞİLSE, D’nin sağ yarısı yeni D olsun atama • O, (yeni) D dizisinin ortasındaki değeri atama

Sözde Kod • Koşullu işlem – H, hedef – D, giriş dizi – O,

Sözde Kod • Koşullu işlem – H, hedef – D, giriş dizi – O, D dizisinin ortasındaki değeri – H O’ya eşit değil ve D boş dizi değil İKEN, eğer-ise koşul • EĞER O H’dan büyük İSE, D’nin sol yarısı yeni D olsun, DEĞİLSE, D’nin sağ yarısı yeni D olsun • O, (yeni) D dizisinin ortasındaki değeri

Sözde Kod • Döngü işlem – H, hedef – D, giriş dizi – O,

Sözde Kod • Döngü işlem – H, hedef – D, giriş dizi – O, D dizisinin ortasındaki değeri – H O’ya eşit değil ve D boş dizi değil İKEN, Koşullu döngü • EĞER O H’dan büyük İSE, D’nin sol yarısı yeni D olsun, DEĞİLSE, D’nin sağ yarısı yeni D olsun • O, (yeni) D dizisinin ortasındaki değeri

Sözde Kod • İkiye bölme algoritması: – – H: =hedef değeri D: = verilen

Sözde Kod • İkiye bölme algoritması: – – H: =hedef değeri D: = verilen sayı dizisi O: = D’nin ortadaki değeri (O!=H ve O boş değil) İKEN • EĞER O H’dan büyük İSE D: =D’nin sağa yarısı DEĞİLSE D: =D’nin sağa yarısı • O: = D’nin ortadaki değeri ATAMALAR

Sözde Kod • İkiye bölme algoritması: – – H: =hedef değeri D: = verilen

Sözde Kod • İkiye bölme algoritması: – – H: =hedef değeri D: = verilen sayı dizisi O: = D’nin ortadaki değeri (O!=H ve O boş değil) İKEN • EĞER O H’dan büyük İSE D: =D’nin sağa yarısı DEĞİLSE D: =D’nin sağa yarısı • O: = D’nin ortadaki değeri EĞER-ISE KOŞULLAR

Sözde Kod • İkiye bölme algoritması: – – H: =hedef değeri D: = verilen

Sözde Kod • İkiye bölme algoritması: – – H: =hedef değeri D: = verilen sayı dizisi O: = D’nin ortadaki değeri (O!=H ve O boş değil) İKEN • EĞER O H’dan büyük İSE D: =D’nin sağa yarısı DEĞİLSE D: =D’nin sağa yarısı • O: = D’nin ortadaki değeri KOŞULLU DÖNGÜ

Sözde Kod • İkiye bölme algoritmasının sözde kodu: – H: =hedef değeri D: =

Sözde Kod • İkiye bölme algoritmasının sözde kodu: – H: =hedef değeri D: = verilen sayı dizisi O: = D’nin ortadaki değeri (O!=H ve O boş değil) İKEN EĞER O>H İSE D: =D’nin sol yarısı DEĞİLSE D: =D’nin sağ yarısı O: = D’nin ortadaki değeri

Sözde kod yapıları

Sözde kod yapıları

Sözde kod yapıları • KOŞUL İŞLEM – EĞER koşul İSE doğru ise işlemler DEĞİLSE

Sözde kod yapıları • KOŞUL İŞLEM – EĞER koşul İSE doğru ise işlemler DEĞİLSE aski halde işlemler EĞER SONU • Eğer koşul doğru ise, belirtilen işlemleri işletilir

Sözde kod yapıları • KOŞUL İŞLEM – IF koşul THEN doğru ise işlemler ELSE

Sözde kod yapıları • KOŞUL İŞLEM – IF koşul THEN doğru ise işlemler ELSE aski halde işlemler END IF • Eğer koşul doğru ise, belirtilen işlemleri işletilir

Sözde kod yapıları • KOŞULLU İŞLEM, birkaç koşul formu – EĞER 1. koşul İSE

Sözde kod yapıları • KOŞULLU İŞLEM, birkaç koşul formu – EĞER 1. koşul İSE doğru ise işlemler EĞER 2. koşul İSE doğru ise işlemler. . . AKSİ HALDE aski halde işlemler EĞER SONU

Sözde kod yapıları • KOŞULLU İŞLEM, birkaç koşul formu – IF 1. koşul THEN

Sözde kod yapıları • KOŞULLU İŞLEM, birkaç koşul formu – IF 1. koşul THEN doğru ise işlemler ELSE İF 2. koşul THEN doğru ise işlemler. . . ELSE aski halde işlemler END IF

Sözde kod yapıları • KOŞULLU DÖNGÜ – (koşul) İKEN doğru iken işlemler DÖNGÜ SONU

Sözde kod yapıları • KOŞULLU DÖNGÜ – (koşul) İKEN doğru iken işlemler DÖNGÜ SONU • Koşul doğrudur iken belirli işlemleri tekrar işletilir

Sözde kod yapıları • KOŞULLU DÖNGÜ – WHILE (koşul) DO doğru iken işlemler END

Sözde kod yapıları • KOŞULLU DÖNGÜ – WHILE (koşul) DO doğru iken işlemler END WHİLE • Koşul doğru iken belirli işlemleri tekrar işletilir

Sözde kod yapıları • KOŞULLU DÖNGÜ (2. form) – DÖNGÜ doğru iken işlemler (koşul)

Sözde kod yapıları • KOŞULLU DÖNGÜ (2. form) – DÖNGÜ doğru iken işlemler (koşul) İKEN • Önceki döngü gibi ama koşulu döngünün işlemlerinden sonra kontrol edilir

Sözde kod yapıları • KOŞULLU DÖNGÜ(2. form) – REPEAT doğru iken işlemler UNTIL koşulu

Sözde kod yapıları • KOŞULLU DÖNGÜ(2. form) – REPEAT doğru iken işlemler UNTIL koşulu DO • Önceki döngü gibi ama koşulu döngünün işlemlerinden sonra kontrol edilir

Sözde kod yapıları • ÇEŞİT DÖNGÜ (1. form) – BÜTÜN değişken ilk_değeri’NDEN son_değeri’NE KADAR

Sözde kod yapıları • ÇEŞİT DÖNGÜ (1. form) – BÜTÜN değişken ilk_değeri’NDEN son_değeri’NE KADAR döngü işlemleri DÖNGÜ SONU • Belirli operasyonları tekrar yapmak demektir

Sözde kod yapıları • ÇEŞİT DÖNGÜ (1. form) – FOR değişken FROM ilk_değeri TO

Sözde kod yapıları • ÇEŞİT DÖNGÜ (1. form) – FOR değişken FROM ilk_değeri TO son_değeri DO döngü işlemi END FOR • Belirli işlemi tekrar yapmak demektir

Sözde kod yapıları • ÇEŞİT DÖNGÜ (2. form) – BÜTÜN değer_listesi’NDEKİ değişken İÇİN döngü

Sözde kod yapıları • ÇEŞİT DÖNGÜ (2. form) – BÜTÜN değer_listesi’NDEKİ değişken İÇİN döngü işlemleri DÖNGÜ SONU • Bütün “değer listesi” için belirli işlemi tekrar yapmak demektir

Sözde kod yapıları • ÇEŞİT DÖNGÜ (2. form) – FOR değişken İN değer_listesi DO

Sözde kod yapıları • ÇEŞİT DÖNGÜ (2. form) – FOR değişken İN değer_listesi DO döngü işlemleri END FOR • Bütün “değer listesi” için belirli işlemi tekrar yapmak demektir

Sözde kod yapıları • SEÇME İŞLEMİ – SEÇME ifade 1. değeri: doğru ise işlem

Sözde kod yapıları • SEÇME İŞLEMİ – SEÇME ifade 1. değeri: doğru ise işlem 2. değeri: doğru ise işlem. . . ASKİ HALDE: aksi halde işlem SEÇME SONU • İfadeye göre değer listesinden bir değeri seçip uyan işlem yapmak demektir

Sözde kod yapıları • SEÇME İŞLEMİ – CASE ifade OF 1. değeri: doğru ise

Sözde kod yapıları • SEÇME İŞLEMİ – CASE ifade OF 1. değeri: doğru ise işlem 2. değeri: doğru ise işlem. . . OTHERS: aksi halde işlem END CASE • İfadeye göre değer listesinden bir değeri seçip uyan işlem yapmak demektir

Sözde kod yapıları • ALT-İŞLEM veya FONKSİYON – FONKSİYON fonksiyon_adı (argumanlar) yapılacak işlem SONUÇ

Sözde kod yapıları • ALT-İŞLEM veya FONKSİYON – FONKSİYON fonksiyon_adı (argumanlar) yapılacak işlem SONUÇ sonuç FONKSİYON SONU • Daha sonra algoritmada kullanılacak ve bir sonucu verecek ayrı alt-işlem veya fonksiyon demektir

Sözde kod yapıları • AYRI ALT-İŞLEM veya FONKSİYON – FUNCTION fonksiyon_adı (argumanlar) yapılacak işlem

Sözde kod yapıları • AYRI ALT-İŞLEM veya FONKSİYON – FUNCTION fonksiyon_adı (argumanlar) yapılacak işlem RETURN sonuç END FUNCTION • Daha sonra algoritmada kullanılacak ve bir sonucu verecek ayrı alt-işlem veya fonksiyon demektir

Sözde kod yapıları • ALT-İŞLEM veya FONKSİYON (kullanma) – ÇAĞIR fonksiyon_adı (argumanlar) (1. form)

Sözde kod yapıları • ALT-İŞLEM veya FONKSİYON (kullanma) – ÇAĞIR fonksiyon_adı (argumanlar) (1. form) fonksiyon_adı (argumanlar) (2. form) • Alt-işlemi işletmek ve sonucunu elde etmek

Sözde kod yapıları • ALT-İŞLEM veya FONKSİYON (kullanma) – CALL fonksiyon_adı (argumanlar) (1. form)

Sözde kod yapıları • ALT-İŞLEM veya FONKSİYON (kullanma) – CALL fonksiyon_adı (argumanlar) (1. form) fonksiyon_adı (argumanlar) (2. form) • Alt-işlemi işletmek ve sonucunu elde etmek

Sözde kod yapıları Koşullu işlemleri • IF koşul THEN işlem ELSE işlem END IF

Sözde kod yapıları Koşullu işlemleri • IF koşul THEN işlem ELSE işlem END IF • CASE (ifade) değer-işlem listesi OTHERS işlem END CASE

Sözde kod yapıları Döngü işlemleri • WHILE koşul DO işlem END WHILE • REPEAT

Sözde kod yapıları Döngü işlemleri • WHILE koşul DO işlem END WHILE • REPEAT işlem UNTIL koşul DO • FOR iteratör değişkeni FROM ilk_değer TO son_değer DO işlem END FOR • FOR iteratör değişkeni İN liste DO işlem END FOR • CASE (ifade) değer-işlem listesi OTHERS aksi halde işlem END CASE

Sözde kod yapıları Fonksiyonlar/içinde kullanılan diğer algoritmalar • FUNCTION fonksiyon_adı (paremetreler) yapılacak işlem RETURN

Sözde kod yapıları Fonksiyonlar/içinde kullanılan diğer algoritmalar • FUNCTION fonksiyon_adı (paremetreler) yapılacak işlem RETURN sonuç END FUNCTION • Fonksiyon işletme: CALL fonksiyon_adı(paremetreler)

Sözde kod yapıları Koşullu işlemler • EĞER koşul İSE işlem DEĞİLSE işlem EĞER SONU

Sözde kod yapıları Koşullu işlemler • EĞER koşul İSE işlem DEĞİLSE işlem EĞER SONU • SEÇME (ifade) “değer: işlem” listesi AKSİ HALDE işlem SEÇME SONU

Sözde kod yapıları Döngü işlemleri • (koşul) İKEN işlem DÖNGÜ SONU • DÖNGÜ işlem

Sözde kod yapıları Döngü işlemleri • (koşul) İKEN işlem DÖNGÜ SONU • DÖNGÜ işlem (koşul) İKEN • BÜTÜN iteratör değişkeni ilk_değer’DEN son_değer’E KADAR işlem DÖNGÜ SONU • BÜTÜN liste’DEKİ iteratör değişkeni İÇİN işlem DÖNGÜ SONU

Sözde kod yapıları Fonksiyonlar/içinde kullanılan diğer algoritmalar • FONKSİYON fonksiyon_adı (paremetreler) yapılacak işlem SONUÇ

Sözde kod yapıları Fonksiyonlar/içinde kullanılan diğer algoritmalar • FONKSİYON fonksiyon_adı (paremetreler) yapılacak işlem SONUÇ sonuç FONKSİYON SONU • Fonksiyon çağırma: ÇAĞIR fonksiyon_adı(paremetreler)

Örnekler • Sıralanmamış dizide arama – H: =hedef değeri D: =verilen dizi N: =D’nin

Örnekler • Sıralanmamış dizide arama – H: =hedef değeri D: =verilen dizi N: =D’nin boyutu pozisyon: = 0 DÖNGÜ pozisyon : = pozisyon + 1 O : = D[pozisyon] (O!=H ve pozisyon <N) İKEN

Örnekler • Sıralanmış dizide arama – H: = hedef değeri D: = verilen dizi

Örnekler • Sıralanmış dizide arama – H: = hedef değeri D: = verilen dizi (D’nin boyutu>1) İKEN O: = D([D’nin boyutu/2]) EĞER O = H İSE dur EĞER O<H İSE D: = D’nin sağ yarısı AKSİ HALDE D: = D’nin sol yarısı İSE SONU DÖNGÜ SONU

Örnekler • Ellerimizde var olan algoritmayı anlamak için onu okuyabilmemiz gerekiyor • Algoritmayı okumak,

Örnekler • Ellerimizde var olan algoritmayı anlamak için onu okuyabilmemiz gerekiyor • Algoritmayı okumak, o algoritmada belirtilen işlemleri sırayla kafamızda işletmek ve o sırada gerçekleştirilecek verileri evrimi ve sonuçları anlayabilmek demektir

Örnekler • Sıralanmış dizide arama – H, hedef değeri D, verilen dizi (D’nin boyutu>1)

Örnekler • Sıralanmış dizide arama – H, hedef değeri D, verilen dizi (D’nin boyutu>1) İKEN O: = D([D’nin boyutu/2]) EĞER O = H İSE dur EĞER O<H İSE D: = D’nin sağ yarısı AKSİ HALDE D: = D’nin sol yarısı İSE SONU DÖNGÜ SONU

Örnekler • Sıralanmış dizide arama – H, hedef değeri D, verilen dizi (D’nin boyutu>1)

Örnekler • Sıralanmış dizide arama – H, hedef değeri D, verilen dizi (D’nin boyutu>1) İKEN O, D’nin orta değeri EĞER O = H İSE dur EĞER O<H İSE D: = D’nin sağ yarısı AKSİ HALDE D: = D’nin sol yarısı İSE SONU DÖNGÜ SONU

Örnekler • Sıralanmış dizide arama – H, hedef değeri D, verilen dizi (D’nin boyutu>1)

Örnekler • Sıralanmış dizide arama – H, hedef değeri D, verilen dizi (D’nin boyutu>1) İKEN O, D’nin orta değeri EĞER O = H İSE dur EĞER O<H İSE D, D’nin sağ yarısı oluyor AKSİ HALDE D, D’nin sol yarısı oluyor İSE SONU DÖNGÜ SONU

Örnekler • Sıralanmış dizide arama – H, hedef değeri D, verilen dizi D’nin boyutu

Örnekler • Sıralanmış dizide arama – H, hedef değeri D, verilen dizi D’nin boyutu 1’den büyük veya O H’ya eşit değilken devam edilir, O, D’nin orta değeri EĞER O<H İSE D, D’nin sağ yarısı oluyor AKSİ HALDE D, D’nin sol yarısı oluyor İSE SONU

Akış şemaları • Akış şemaları, algoritmanın grafik olarak genel işlem sırasının bir gösterimidir •

Akış şemaları • Akış şemaları, algoritmanın grafik olarak genel işlem sırasının bir gösterimidir • Bloklar ve oklar kullanarak algoritmanın işletme şekli gösterilir • Bloklar, algoritmanın işlemlerini temsil eder • Oklar, algoritmanın işlem sırasını temsil eder • Bir bloktan birkaç çıkan ok, algoritmadaki seçimleri temsil eder

Akış şeması: Naif arama Başlangıç p: = dizi başı evet bitiş hedef = dizi(p)

Akış şeması: Naif arama Başlangıç p: = dizi başı evet bitiş hedef = dizi(p) hair p: =p+1

Akış şeması yapıları Başlangıç/sonuç Bir işlem Koşullu işlem

Akış şeması yapıları Başlangıç/sonuç Bir işlem Koşullu işlem

Akış şeması yapıları Başlangıç/sonuç Bir işlem Koşullu işlem İşlemleri genellikle bloklar içerisinde yazılır

Akış şeması yapıları Başlangıç/sonuç Bir işlem Koşullu işlem İşlemleri genellikle bloklar içerisinde yazılır

Örnek: ikiye bölme İkiye bölme sözde kodu H: = hedef değeri D: = verilen

Örnek: ikiye bölme İkiye bölme sözde kodu H: = hedef değeri D: = verilen dizi (D’nin boyutu>0 ve O!=Р) İKEN O: = D’nin orta elemanı EĞER O<H İSE // hedef sadece sağda olabilir D: = D’nin sağ yarısı DEĞİLSE // hedef sadece solda olabilir D: = D’nin sol yarısı

Akış şeması: ikiye bölme başlangıç D: = giriş dizisi Bitiş, bulmadı hair D ‘nin

Akış şeması: ikiye bölme başlangıç D: = giriş dizisi Bitiş, bulmadı hair D ‘nin boyutu> 0 D: = D’nin sol yarısı D(orta) > hedef evet D(orta) ? hedef eşit D(orta) < hedef D: = D’nin sağ yarısı Bitiş, buldu

Örnek: kabarcık algoritması Kabarcık sıralama algoritması, basit bir sıralama algoritmadır • Diziyi ilk sayı’dan

Örnek: kabarcık algoritması Kabarcık sıralama algoritması, basit bir sıralama algoritmadır • Diziyi ilk sayı’dan son sayı’ya inceleyin, yanlış sırada bir çift görürseniz, çiftteki sayıların yerlerini değiştirin, yanlış sırada çift olmayacağına kadar tekrarlayın Diziyi ilk sayı’dan son sayı’ya inceleyip yanlış sırada çiftler varsa sayılarını yerlerini değiştirin. . . 2 5 7 11 17 13 15 18 Yanlış sırada çift vardı. . . 23 30

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak =

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak = 1) İKEN p: = 1 D(p) < D(p+1) İKEN p: =p + 1 DÖNGÜ SONU EĞER p = D’nin boyutu İSE bayrak: =0 AKSİ HALDE p ve p+1 ‘deki D elemanlarının yerleri değiştirilir İSE SONU DÖNGÜ SONU

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak =

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak = 1) İKEN p: = 1 D(p) < D(p+1) İKEN p: =p + 1 DÖNGÜ SONU Bayraklar (veya “flags”) algoritmanın bir durumu belirtip tutmak için çok sık kullanılır; burada bayrak, dizide yanlış sırada çiftler varmış diye durumu belirtmek için kullanılır EĞER p = D’nin boyutu İSE bayrak: =0 AKSİ HALDE p ve p+1 ‘deki D elemanlarının yerleri değiştirilir İSE SONU DÖNGÜ SONU

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak =

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak = 1) İKEN p: = 1 D(p) < D(p+1) İKEN p: =p + 1 DÖNGÜ SONU Yani döngü, dizide yanlış sırada çiftler varken tekrarlanması gerekiyor EĞER p = D’nin boyutu İSE bayrak: =0 AKSİ HALDE p ve p+1 ‘deki D elemanlarının yerleri değiştirilir İSE SONU DÖNGÜ SONU

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak =

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak = 1) İKEN p: = 1 D(p) < D(p+1) İKEN p: =p + 1 DÖNGÜ SONU Döngüdeki işlem 1. dizinin elemanıyla başlıyor EĞER p = D’nin boyutu İSE bayrak: =0 AKSİ HALDE p ve p+1 ‘deki D elemanlarının yerleri değiştirilir İSE SONU DÖNGÜ SONU

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak =

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak = 1) İKEN p: = 1 D(p) < D(p+1) İKEN p: =p + 1 DÖNGÜ SONU p’deki D çiftleri doğru sıradayken p dizide ilerletiliyor EĞER p = D’nin boyutu İSE bayrak: =0 AKSİ HALDE p ve p+1 ‘deki D elemanlarının yerleri değiştirilir İSE SONU DÖNGÜ SONU

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak =

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak = 1) İKEN p: = 1 D(p) < D(p+1) İKEN p: =p + 1 DÖNGÜ SONU Bu döngüden sonra iki durum var EĞER p = D’nin boyutu İSE bayrak: =0 AKSİ HALDE p ve p+1 ‘deki D elemanlarının yerleri değiştirilir İSE SONU DÖNGÜ SONU

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak =

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak = 1) İKEN p: = 1 D(p) < D(p+1) İKEN p: =p + 1 DÖNGÜ SONU Eğer D bitmişse demek yanlış sırada çiftler yokmuş – bu durumda “bayrak”ı sıfıra koyup döngüden çıkması lazım – yanlış sırada çiftler yok olması D sıralanmış olmasını demektir EĞER p = D’nin boyutu İSE bayrak: =0 AKSİ HALDE p ve p+1 ‘deki D elemanlarının yerleri değiştirilir İSE SONU DÖNGÜ SONU

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak =

Örnek: kabarcık sıralama Kabarcık sıralama algoritması D: =giriş dizi bayrak: = 1 (bayrak = 1) İKEN p: = 1 D(p) < D(p+1) İKEN p: =p + 1 DÖNGÜ SONU Aksi halde p’deki çiftin elemanlarının yerlerini değiştirip inceleme baştan tekrarlanması gerekiyor EĞER p = D’nin boyutu İSE bayrak: =0 AKSİ HALDE p ve p+1 ‘deki D elemanlarının yerleri değiştirilir İSE SONU DÖNGÜ SONU

Kabarcık sıralamanın akış şeması başlangıç p: =dizi başı Bitiş dizi bitti p çifti yanlış

Kabarcık sıralamanın akış şeması başlangıç p: =dizi başı Bitiş dizi bitti p çifti yanlış sırada ? hair evet çift sayıların yerleri değiştirin p: =dizi başı p: =p+1

Ev çalışması • Önce incelediğimiz bütün algoritmaları sözde kod şeklinde yazın • 2 -3

Ev çalışması • Önce incelediğimiz bütün algoritmaları sözde kod şeklinde yazın • 2 -3 algoritmalar için akış şemalarını çizin http: //scinetcentral. com/~mishchenko/MIT 503. html