Bölüm 8. İfade Seviyesindeki Kontrol Yapıları ISBN

Benzer belgeler
Chapter 8. Komut düzeyi kontrol yapıları ISBN

Bölüm 8. İfade -Seviyeli Kontrol Yapıları ISBN

Bir seçme komutu yürümekte olan programda iki veya daha fazla yoldan birini seçmemizi sağlar. İki sınıfa ayrılır:

BLM210 HAFTA 9 STATEMENT-LEVEL CONTROL STRUCTURES (DEYİMLER DÜZEYİNDEKİ KONTROL YAPILARI)

Nesne Yönelimli Programlama

1. PL/SQL de kontrol yapıları

Bölüm 7. İfadeler ve atamalar ISBN

BİL-142 Bilgisayar Programlama II

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 5. Bölüm Karar ve Çevrim Kontrol Yapıları

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

PASCAL PROGRAMLAMA DİLİ YAPISI

HSancak Nesne Tabanlı Programlama I Ders Notları

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1

Programlama Dilleri 3

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Akış Konrol Mekanizmaları

Nesne Tabanlı Programlama

Program akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n

Internet Programming II

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Java da İşleçler, Ders #3 (4 Kasım 2009)

Nesne Tabanlı Programlama

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

BLGM BÖLÜM. Problem Çözme Kavramları (Algoritma ve Akış Şemaları)

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

YZM 2105 Nesneye Yönelik Programlama

GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

Java da Program Denetimi ve Operatörler

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

Bölüm 9. Altprogramlar ISBN

Bölüm 4 C de Program Kontrolü

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar

Program AkıĢ Kontrol Yapıları

Akış Kontrol Mekanizmaları

TEKRARLAMA DEYİMLERİ BÖLÜM Giriş. 9.2 For-Do

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Bölüm 7. Deyimler ve Atama ifadeleri ISBN

Pascal Programlama Dili (2. hafta)

Döngüler - Loops 4/13/2011. ENF-102 Jeoloji Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

MATLAB de. Programlama. Kontrol Yapıları. Döngü Yapıları. Doç. Dr. İrfan KAYMAZ Matlab Ders Notları

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

PostgreSQL ve PL/pgSQL

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

VERİ TABANI YÖNETİM SİSTEMLERİ II. 3. SQL PROGRAMLAMA BLOKLARI ve AKIŞ DENETİMİ

1 JAVASCRIPT NEDİR? 1

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

Döngüler - Loops 4/9/2010. ENF-102 Jeoloji Giriş. Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Belirli bir iş bir çok kez tekrarlanacaksa, programda bu iş bir kez yazılır ve döngü deyimleriyle istenildiği kadar tekrar tekrar çalıştırılabilir.

Döngü ve Koşul Deyimleri

Mantıksal Kontrol ve Döngü Komutları

Döngüler. Tablo 15.1: Ruby de Başlıca Döngü Yapıları

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

PostgreSQL ve PL/pgSQL

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

BÖLÜM 11: YAPISAL VERİ TİPLERİ

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

KONTROL YAPILARI (CONTROL STRUCTURES)

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

5. Atlama, Karar ve Çevrim Kontrol Deyimleri

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

ÜNİT E ÜNİTE KONTROL DEYİMLERİ KARAR YAPILARI. IF Deyimi GİRİŞ

Veri Yapıları ve Algoritmalar

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

KONTROL YAPILARI JAVADA UC TURLU KONTROL YAPISI VARDIR BUNLAR İF ELSE İF ELSE İF SWİTCH YAPILARIDIR. IF ELSE YAPISI if (deger) { }else {

PROGRAMLAMA DİLLERİ I

Lambda İfadeleri (Lambda Expressions)

ALGORİTMA VE PROGRAMLAMA I

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Bu amaçla, if ve switch gibi karar verme deyimleri, for, while, do..while gibi döngü deyimleri kullanılır.


PROGRAMLAMA DİLLERİ. Programlama Dilleri Programlama Dillerinin Önemi Dilleri Sınıflandırılması Anlambilim BNF Notasyonu Kontrol Deyimleri

GÖRÜNTÜ İŞLEME DERS-3

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

ALGORİTMA VE PROGRAMLAMA I

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

ALGORİTMA VE PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Bölüm 6. Veri Türleri ISBN

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

GÖRÜNTÜ İŞLEME DERS-3

Transkript:

Bölüm 8 İfade Seviyesindeki Kontrol Yapıları ISBN 0-321-49362-1

Bölüm 8 Konular Giriş Seçme İfadeleri Yinelemeli İfadeler Şartsız Dallanma Korumalı Komutlar Sonuçlar

Kontrol Akışının Seviyeleri İfadeler içinde Program birimleri boyunca Program deyimleri boyunca

Kontrol Yapısı Kontrol yapısı bir programın akışını ve yürütülmesini kontrol eden ifadedir

Seçim İfadeleri Bir seçim ifadesi yürütmenin iki ya da daha fazla yolu arasında bir seçim yapma aracı sunar İki genel sınıfı: İki-yollu seçiciler Çok-yollu seçiciler

İki-Yollu Seçim İfadeleri Genel form: if control_expression then clause else clause Tasarım Sorunları: Kontrol ifadesinin formu ve türü ne? then ve else cümleleri nasıl belirtiliyor? İç içe seçicilerin anlamları nasıl belirtilmeli?

İki-Yollu Seçim: Örnekler FORTRAN: IF (boolean_ifade) deyim Problem: yalnızca bir deyim seçebilir; daha fazla seçmek için GOTO kullanılmalı, aşağıdaki örnekte olduğu gibi IF (.NOT. condition) GOTO 20... 20 CONTINUE Negatif mantık okunabilirlik açısından kötü Bu problem FORTRAN 77 de çözüldü Daha sonraki dillerin çoğu tek yollu seçicilerinin seçilebilir parçaları için bileşiklere izin verir

İki-Yollu Seçim: Örnekler ALGOL 60: if (boolean_ifade) then deyimi (then cümlesi) else deyimi (else cümlesi) Deyimler tek ya da bileşik olabilir

Seçicileri İç İçe Yerleştirme Java örneği if (sum == 0) if (count == 0) result = 0; else result = 1; Hangi if, else i alır? Java nın statik anlambilim kuralı: else kendisine en yakın if ile eşleşir

Seçicileri İç İçe Yerleştirme(devam) Alternatif bir semantik olarak bileşik deyimler kullanılabilir: if (sum == 0) { } if (count == 0) result = 0; else result = 1; Üstteki çözüm C, C++ ve C# ta kullanılır Perl tüm then ve else cümlelerinin bileşik olmasını gerektirir

Çok-Yollu Seçim İfadeleri Herhangi bir sayıda deyim veya deyim grubunun seçilmesine izin verir Tasarım sorunları: 1. Kontrol ifadesinin formu ve türü ne? 2. Seçilebilir parçalar nasıl belirtilir? 3. Yapı boyunca, yürütme akışı yalnızca bir seçilebilir parça içerecek şekilde sınırlandırılmış mıdır? 4. Temsil edilmeyen ifade değerleri hakkında ne yapılır?

Çok-Yollu Seçim: Örnekler İlk çok-yollu seçiciler: FORTRAN arithmetic IF (a three-way selector) IF (arithmetic expression) N1, N2, N3 Parçalar GOTO ları gerektirir Kapsüllenmemiş (seçilebilir parçalar herhangi bir yerde olabilir)

Çok-Yollu Seçim: Örnekler Modern çok-yollu seçiciler C switch yapısı switch (expression) { case const_expr_1: stmt_1; case const_expr_n: stmt_n; [default: stmt_n+1] }

Çok-Yollu Seçim: Örnekler C nin switch deyimi için seçenekler 1. Kontrol ifadesi yalnızca tamsayı türünde olabilir 2. Seçilebilir parçalar deyim dizileri, bloklar ya da bileşik deyimler olabilir 3. Herhangi bir sayıdaki parçalar yapının bir yürütmesinde yürütülebilir (seçilebilen parçaların sonunda kapalı/dolaylı dallanma yok) 4. default cümlesi temsil edilmeyen değerler içindir (eğer hiç default yoksa, tüm deyim hiç bir şey yapmaz)

Çok-Yollu Seçim: Örnekler Ada nın case deyimi case expression is when choice list => stmt_sequence; when choice list => stmt_sequence; when others => stmt_sequence; end case; C nin switch inden daha güvenilir (stmt_sequence-ifade dizisi-nin yürütmesi tamamlandığı zaman, kontrol case deyiminden sonraki ilk deyime geçer

if Kullanarak Çok-Yollu Seçim Çok-yollu seçiciler else-if cümleleri kullanarak iki-yollu seçicilerin doğrudan bir uzantısı olarak görünebilirler, örneğin Ada da: if... then... elsif... then... elsif... then... else... end if

Tekrarlı Deyimler Bir deyimin ya da bileşik ifadenin tekrarlanan yürütümü ya tekrarla ya da özyineleme ile başarılır Yineleme kontrol deyimlerinin genel tasarım problemi: 1. Yineleme nasıl kontrol edilir? 2. Döngüdeki kontrol mekanizması nerede?

Sayaç Kontrollü Döngüler Bir sayaçlı tekrarlı deyimin bir döngü değişkeni vardır, ilk ve son ve adım boyu değerlerini belirleyen bir araçtır Tasarım sorunları: 1. Döngü değişkeninin türü ve kapsamı ne? 2. Döngü değişkeninin döngü sonundaki değeri ne? 3. Döngü değişkeni veya döngü parametrelerinin döngü gövdesinde değiştirilmesi legal olmalı mı, eğer öyleyse, değişim döngünün kontrolünü etkiler mi? 4. Döngü parametreleri sadece bir kere mi yoksa her tekrarda bir kere mi değerlendirilir?

Tekrarlı Deyimler: Örnekler FORTRAN 90 sözdizimi DO label var = start, finish [, stepsize] Adım boyu sıfır dışında herhangi bir değer olabilir Parametreler deyimler olabilir Tasarım seçenekleri: 1. Döngü değişkeni INTEGER olmalı 2. Döngü değişkeni her zaman kendi son değerine sahip 3. Döngü değişkeni döngüde değiştirilemez; fakat parametreler değişebilir; çünkü onlar bir kere değerlendirilir, bu da döngü kontrolünü etkilemez 4. Döngü parametreleri sadece bir kere değerlendirilir

Tekrarlı Deyimler: Örnekler FORTRAN 95 : ikinci bir form: [isim:] DO degisgen = baslangic, son [,adimboyu] END DO [isim] Döngü değişkeni INTEGER olmalı

Tekrarlı Deyimler Pascal ın for deyimi for variable := initial (to downto) final do statement Tasarım seçenekleri: 1. Döngü değişkeni olağan kapsamın sıralı bir türü olmak zorunda 2. Normal bitişten sonra döngü değişkeni tanımsızdır 3. Döngü değişkeni, döngü içinde değiştirilemez; döngü parametreleri değiştirilebilir; fakat onlar sadece bir kez değerlendirilir, dolayısıyla döngünün kontrolünü etkilemez 4. Sadece bir kere

Tekrarlı Deyimler: Örnekler Ada for var in [reverse] discrete_range loop... end loop Ayrık aralık bir tamsayı ya da sayma türünün bir alt aralığıdır Döngü değişkeninin kapsamı döngünün aralığıdır Döngü değişkeni, döngünün bitişinden sonra dolaylı olarak beyan edilmemiştir

Tekrarlı Deyimler: Örnekler C nin for deyimi for ([expr_1] ; [expr_2] ; [expr_3]) statement İfadeler deyimler bütünü ya da deyimlerin virgüllerle ayrıldığı deyim dizileri bile olabilirler Çok deyimli bir ifadenin değeri ifadedeki son deyimin değeridir Açık bir döngü değişkeni yok Döngüdeki her şey değişebilir İlk ifade bir kere değerlendirilir; ama diğer ikisi her tekrarda değerlendirilir

Tekrarlı Deyimler: Örnekler C++, C den iki yolla ayrılır: 1. Kontrol ifadeleri de Boolean olabilir 2. Başlangıç ifadesi değişken tanımlarını içerebilir (kapsam tanımlamadan döngü sonuna kadardır) Java ve C# C++ dan kontrol ifadesinin Boolean olma zorunluluğu sebebiyle ayrılır

Tekrarlı Deyimler: mantıksal Kontrollü Döngüler Tekrar kontrolü Boolean tabanlıdır Tasarım sorunları: Ön-test mi, son-test mi? Mantıksal kontrollü döngü, sayaçlı döngü deyiminin özel bir hali mi olmalı? Sayaç yerine ifade Genel formlar: while (ctrl_expr) loop body do loop body while (ctrl_expr)

Tekrarlı Deyimler: Mantıksal Kontrollü Döngüler: Örnekler Pascal ayrı ayrı ön-test ve son-test mantıksal döngü deyimlerine sahip (whiledo and repeat-until) C ve C++ da her ikisine sahip; ama sontestin kontrol deyimi ön-testte olduğu gibi davranır (while-do and do- while) Java, kontrol deyiminin Boolean olma zorunluluğu dışında C gibidir (ve gövdeye yalnızca başlangıçta girilebilir Java nın goto su yok)

Tekrarlı Deyimler: Mantıksal Kontrollü Döngüler: Örnekler Ada nın ön test versiyonu var; ama son-test yok FORTRAN 77 ve 90 ın hiçbiri yok Perl ün iki pre-test mantıksal döngüsü var, while ve until, ama son-test mantıksal döngüsü yok

Tekrarlı Deyimler: Kullanıcı Konumlu Kontrol Mekanizmaları Bazen programcılar için döngü kontrolü açısından konum belirlemek uygun olabilir (döngünün başı ve sonu dışında) Tek döngüler için basit bir tasarım(ör.,break) İç içe döngüler için tasarım sorunları: 1. Şartlı, çıkışın bir parçası olmalı mı? 2. Kontrol birden fazla döngüye iletilebilir olmalı mı?

Tekrarlı Deyimler: Kullanıcı Konumlu Kontrol Mekanizmaları break ve continue C, C++ ve Java: break deyimi Şartsız; herhangi bir döngü ya da switch için; sadece bir seviye Java ve C# ın etiketli break deyimi var: kontrol etikete geçer Bir alternatif: continue deyimi; yinelemenin kalan kısmını atlar; fakat döngüden çıkmaz

Tekrarlı Deyimler: Veri Yapıları Tabanlı Yineleme Bir veri yapısındaki eleman sayısı döngü tekrarını kontrol eder Kontrol mekanizması, eğer varsa seçilen sıradaki bir sonraki elemanı döndüren, yoksa döngüyü sonlandıran yineleyici fonksiyona bir çağrıdır C nin for u kullanıcı tanımlı yineleyici oluşturmak için kullanılabilir: for (p=root; p==null; traverse(p)){ }

Tekrarlı Deyimler: Veri Yapıları Tabanlı Yineleme (devam) C# ın foreach deyimi dizi ya da diğer koleksiyonların elemanları üzerinde tekrarlanır Strings[] = strlist = { Bob, Carol, Ted }; foreach (Strings name in strlist) Console.WriteLine ( Name: {0}, name); {0} gösterimi görüntülenecek string deki pozisyonu belirtir

Şartsız Dallanma Yürütme kontrolünü program içinde belirtilen bir yere iletir 1960 ve 1970 lerde en ateşli tartışmaların birine sebep oldu İyi bilinen mekanizma: goto deyimi En büyük endişe: Okunabilirlik Bazı diller goto deyimini desteklemez (ör., Modula-2 ve Java) C# goto deyimini sunar (switch deyimlerinde kullanılabilir) Döngüden çıkış deyimleri sınırlıdır ve bir şekilde goto larla kamufle edilmişlerdir

Korumalı Komutlar Dijkstra tarafından önerildi Amaç: gelişim boyunca doğrulamayı(onay) destekleyen yeni bir programlama metodolojisini desteklemek Eş zamanlı programlamanın iki dilbilimsel mekanizmasının temeli Ana fikir: eğer değerlendirmenin sırası önemli değilse, program herhangi bir sıra belirlememeli

Seçim Korumalı Komutlar Form if <Boolean exp> -> <statement> [] <Boolean exp> -> <statement>... [] <Boolean exp> -> <statement> fi Anlam: yapıya erişildiği zaman Tüm Boolean ifadeleri değerlendir Eğer birden fazlası doğruysa, deterministik olmayarak birini seç Eğer hiçbiri doğru değilse, bu bir run-time hatadır

Seçim Korumalı Komutlar: Resimli

Döngü Korumalı Komut Form do <Boolean> -> <statement> [] <Boolean> -> <statement>... [] <Boolean> -> <statement> od Anlam: her bir yineleme için Tüm Boolean ifadeleri değerlendir Eğer birden fazlası doğruysa, deterministik olmayarak birini seç; sonra da döngüyü tekrar başlat Eğer hiçbiri doğru değilse, döngüden çık

Döngü Korumalı Komut: Resimli

Korumalı Komutlar: Temel Kontrol deyimleri ile programın doğrulanması arasındaki bağlantı çok yakındır Doğrulama goto deyimleriyle imkansız Doğrulama yalnızca seçim ve mantıksal öntest döngüleriyle mümkün Doğrulama sadece korumalı komutlarla nispeten basit

Sonuç Deyim seviyesindeki yapıların çeşitliliği Seçim ve mantıksal ön-test döngülerinin ötesinde kontrol deyimlerinin seçimi dilin boyutu ve yazılabilirliği arasında bir dengedir Fonksiyonel ve mantıksal programlama dilleri kontrol yapıları bakımından oldukça farklıdır