Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Komut düzeyi kontrol yapıları

Benzer bir sunumlar


... konulu sunumlar: "Komut düzeyi kontrol yapıları"— Sunum transkripti:

1 Komut düzeyi kontrol yapıları
Chapter 8 Komut düzeyi kontrol yapıları

2 8. bölüm konuları Giriş Seçme komutları Tekrarlayan komutlar
Şartsız dallanma Korumalı komutlar Sonuç Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

3 Kontrol komutları Akış şemaları ile temsi edilebilen tüm algoritmalar sadece iki taraflı seçim (ör: if-then-else) ve ön-şartlı döngüler (ör: while) kullanılarak kodlanabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

4 Kontrol yapısı Kontrol komutu ve kontrol ettiği komutlar
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

5 Seçme komutları İki veya daha çok çalışma alternatifi arasından seçme olanağı tanır İki genel kategori İkili seçme komutları (ör: if-then-else) Çoklu seçme komutları (ör: case) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

6 İkili seçme komutları Genel şekli: if control_expression then clause
else clause Tasarım problemi: İç içe seçme komutunun anlamı nedir? Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

7 Kontrol ifadesi C, Python, ve C++ dillerinde kontrol ifadesi sayısal olabilir Ada, Java, Ruby, C# gibi dillerde Boolean olmalı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

8 Içiçe seçiciler Java örneği Soru: else deyimini hangi if sahiplenir?
if (sum == 0) if (count == 0) result = 0; else result = 1; Soru: else deyimini hangi if sahiplenir? Cevap: En yakındaki if Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

9 Içiçe seçiciler ... Daha değişik davranış için, bileşik komut kullanın: if (sum == 0) { if (count == 0) result = 0; } else result = 1; Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

10 Çok yönlü seçici örneği
C, C++, ve Java switch (expression) { case const_expr_1: stmt_1; case const_expr_n: stmt_n; [default: stmt_n+1] } Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

11 Çok yönlü seçici örneği...
Tasarım tercihleri Kontrol ifadesi sadece tamsayı olabilir Seçilebilen kısımlar komut serisi, blok veya bileşik komut olabilir Kısım bittiğinde eğer break yoksa bir sonraki kısıma devam eder. Default: belirtilmemiş değerler için (default yoksa ve kontrol ifadesi hiçbir seçeneğe uymuyorsa, case hiçbirşey yapmaz) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

12 If kullanarak çok yönlü seçim
Python dilinde else-if kullanarak if count < 10 : bag1 = True elsif count < 100 : bag2 = True elsif count < 1000 : bag3 = True Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

13 Yineleme komutları Komutun birden çok kez tekrarlanmasının yöntemleri
Yineleme (iteration) Özyineleme (recursion) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

14 Sayaç kontrollü döngüler
Sayıcı yineleyen komutta, döngü değişkeni bulunur. Bu değişkenin İlk değeri Son değeri, ve Basamak artırımı değeri olur. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

15 Yineleyen komutlar: Örnek
C-tabanlı diller for ([başlangıc_ifadesi] ; [bitiş_şarti] ; [artirma_ifadesi]) - İfadeler komut olabilir, hatta virgül ile ayrılan komut dizisi de olabilir Çoklu komuttan oluşan ifadenin değeri, ifadedeki son komutun değeridir İkinci ifade yoksa, sonsuz döngü Tasarım tercihleri: - Açıkça verilen döngü değişkeni yok - Döngü içinde herşey değiştirilebilir - İlk ifade bir kez değerlendirilir, diğer ikisi her yinelemede Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

16 Yineleyen komutlar: Örnek ...
C++, C’den iki şekilde ayrılır: Kontrol ifadesi Boolean olabilir Birinci ifadede yeni değişken tanımı olabilir (etki alanı tanımdan başlayın döngünün sonuna kadar uzanır) Java ve C# Kontrol ifadesi Boolean olmak zorunda Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

17 Yineleyen komutlar: Mantık kontrollü döngüler
Tekrarlama kontrolü Boolean ifadeye bağlı Tasarım problemi: Önce-test, sonra-test? Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

18 Yineleyen komutlar: Mantık kontrollü döngü örnekleri
C ve C++: hem önce-test hem sonra-test döngüler, kontrol ifadesi aritmetik olabilir while (ctrl_expr) do loop body loop body while (ctrl_expr) Java: C ve C++ gibi, ancak kontrol ifadesi Boolean olmalı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

19 Yineleyen komutlar: break ve continue
C , C++, C# dillerinde şartsız, etiketlenmemiş (unlabeled) çıkışlar (break) Java dilinde şartsız etiketlenmiş (labeled) çıkış (break) C, C++ dillerinde etiketlenmemiş continue, komutu: o anki yinelenen kısmın geri kalanını atlar, ama döngüden çıkmaz Java dilinde continue komutunun etiketli versiyonu var Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

20 Yineleyen komutlar: veri yapılarına dayalı yineleme
Veri yapısındaki eleman sayısı yinelemeyi kontrol eder Kontrol mekanizması, veri yapısındaki bir sonraki elemanı veren bir yineleme (iterator) fonksiyonuna çağrıdır C dilindeki for yapısını kullanarak yineleyici (iterator) yapabiliriz: for (p=root; p!=NULL; traverse(p)){ } Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

21 Yineleyen komutlar: veri yapılarına dayalı yineleme…
C#’ dilinin foreach komutu dizilerin ve diğer kolleksiyonların elemanları üzerinde “yineler” : Strings[] = strList = {"Bob", "Carol", "Ted"}; foreach (Strings name in strList) Console.WriteLine ("Name: {0}", name); Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

22 Şartsız dallanma (branching)
Çalışma kontrolünü programın herhangi bir yerine götürür goto komutu En büyük endişe: okunabilirlik Bazı dillerde goto yok (ör: Java) C# dilinde switch komutu içinde var Döngü çıkış komutları (break vs.) bir çeşit sınırlandırılmış “gizli” goto’lar Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

23 Korunan (Guarded) komutlar
Dijkstra tarafından tasarlandı Amaç: Program doğrulanmasını (verification) program geliştirme aşamasında desteklemek CSP ve ADA’da paralel programlama için temel oluşturdu Ana fikir: hesaplama sırası (order of evaluation) önemli değilse, program bir sıra belirtmemeli Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

24 Seçme korumalı komutu Şekli: Anlamı:
if <Boolean exp> -> <statement> [] <Boolean exp> -> <statement> ... fi Anlamı: Tüm Boolean ifadeleri hesapla Birden çoğu doğru ise, bir tanesini tesadüfen seç (non-deterministically) Hiçbiri doğru değilse, çalışma zamanı (runtime) hatası Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

25 Seçme korumalı komutu görseli
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

26 Döngü korumalı komutu Şekli: Anlamı: her yinelemede
do <Boolean> -> <statement> [] <Boolean> -> <statement> ... od Anlamı: her yinelemede Tüm Boolean ifadeleri hesapla Birden çoğu doğru ise, bir tanesini tesadüfen seç (non-deterministically), sonra döngüyü yeniden başlat Hiçbiri doğru değilse, döngüden çık Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

27 Döngü korumalı komutu görseli
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

28 Sonuç Çeşitli komut düzeyinde yapılar
Seçme ve öncetest döngüler: zorunlu. Diğer yapılar seçmeli. Daha çok yapı = kolay yazılabilirlik ama daha büyük/karmaşık dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ


"Komut düzeyi kontrol yapıları" indir ppt

Benzer bir sunumlar


Google Reklamları