790 likes | 1.17k Views
MIT503 Veri Yapıları ve algoritmalar A lgoritma temsilleri. Y. Doç. Yuriy Mishchenko. Algoritma temsilleri. Ders planı Algoritma temsili ne giriş Kaba veya Sözde Kod (PseudoCode) A kış şemaları (Flow Diagrams). Algoritma temsilleri.
E N D
MIT503 Veri Yapıları ve algoritmalarAlgoritma temsilleri Y. Doç. Yuriy Mishchenko
Algoritma temsilleri Ders planı • Algoritma temsiline giriş • Kaba veya Sözde Kod (PseudoCode) • Akış şemaları (Flow Diagrams)
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 • 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 17 22 23 30 hedef
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 • 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) ve akış şemaları (flow diagrams) kullanılır
Sözde Kod • Sözde kod, günlükdili ve aynı zamanda programlamadillerine 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 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şkenlerolarak 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 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 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 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 • Bu talimatlar daha kolay adım adım gerçekleştirilebilir
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: • 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 atama atama atama atama
Sözde Kod • Döngü eylemlerin örnekleri: • 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 Çeşit döngü Koşullu döngü Koşullu döngü
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’yuekleyin • SU tadı pişmemiş İKEN bekleyin • servis yapın
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’yuekleyin • 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 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 ve değerleri bütün zamanlarda kesin • Değer atanma, koşul işlemler ve döngü işlemler (tekrarlama) gibi tipik eylemleri belirli formatlar kullanarak belirtiriz • S:=kullanılacak sebzeleri • T:=kullanılacak tencere • TUZ:=BİRAZ miktarlı 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 • SU’ya TUZ’yuekleyin • 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 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ş 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 • O, D dizisinin ortasındaki değeri • HO’ya eşit değil ve D boş dizi değil İKEN, • EĞER OH’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 • H, hedef • D, giriş dizi • O, D dizisinin ortasındaki değeri • HO’ya eşit değil ve D boş dizi değil İKEN, • EĞER OH’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 atama atama atama atama atama
Sözde Kod • Koşullu işlem • H, hedef • D, giriş dizi • O, D dizisinin ortasındaki değeri • HO’ya eşit değil ve D boş dizi değil İKEN, • EĞER OH’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 eğer-ise koşul
Sözde Kod • Döngü işlem • H, hedef • D, giriş dizi • O, D dizisinin ortasındaki değeri • HO’ya eşit değil ve D boş dizi değil İKEN, • EĞER OH’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 Koşullu döngü
Sözde Kod ATAMALAR • İ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 İSED:=D’nin sağa yarısıDEĞİLSE D:=D’nin sağa yarısı • O:= D’nin ortadaki değeri
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 İSED:=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 KOŞULLU DÖNGÜ • İ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 İSED:=D’nin sağa yarısıDEĞİLSE D:=D’nin sağa yarısı • O:= D’nin ortadaki değeri
Sözde Kod • İkiye bölme algoritmasının sözde kodu: • H:=hedef değeriD:= verilen sayı dizisiO:= 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ĞİLSED:=D’nin sağ yarısı O:= D’nin ortadaki değeri
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şlemlerELSE 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 doğru ise işlemlerEĞ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 doğru ise işlemlerELSE İ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şlemlerDÖNGÜ SONU • Koşul doğrudur iken belirli işlemleri tekrar tekrar işletilir
Sözde kod yapıları • KOŞULLU DÖNGÜ • WHILE (koşul) DO doğru iken işlemlerEND WHİLE • Koşul doğru iken belirli işlemleri tekrar tekrar işletilir
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şlemlerUNTIL 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 döngü işlemleriDÖNGÜ SONU • Belirli operasyonları tekrar tekrar yapmak demektir
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şlemiEND FOR • Belirli işlemi tekrar 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ü işlemleriDÖNGÜ SONU • Bütün “değer listesi” için belirli işlemi tekrar tekrar yapmak demektir
Sözde kod yapıları • ÇEŞİT DÖNGÜ (2. form) • FOR değişken İN değer_listesi DO döngü işlemleriEND FOR • Bütün “değer listesi” için belirli işlemi tekrar tekrar yapmak demektir
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şlemSEÇ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 işlem 2. değeri: doğru ise işlem ...OTHERS: aksi halde işlemEND 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Ç 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 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)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)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 • 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 işlem UNTIL koşul DO • FOR iteratör değişkeni FROM ilk_değer TO son_değer DO işlemEND 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