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

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

Chapter 8. Komut düzeyi 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

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

BİL-142 Bilgisayar Programlama II

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

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

1. PL/SQL de kontrol yapıları

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

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

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

ALGORİTMA VE PROGRAMLAMA I

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Programlama Dilleri 3

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

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

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

Bölüm 4 C de Program Kontrolü

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

Nesne Tabanlı Programlama

Akış Kontrol Mekanizmaları

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

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

İç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

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

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

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

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

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

Internet Programming II

Java da Program Denetimi ve Operatörler

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

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

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

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

Karşılaştırma İşlemleri ve Koşullu İfadeler

PASCAL PROGRAMLAMA DİLİ YAPISI

Akış Konrol Mekanizmaları

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

YZM 2105 Nesneye Yönelik Programlama

5. Atlama, Karar ve Çevrim Kontrol Deyimleri

Nesne Tabanlı Programlama

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

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

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

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

PostgreSQL ve PL/pgSQL

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

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

Mantıksal Kontrol ve Döngü Komutları

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

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

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

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

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

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

Kontrol Yapıları (2)

Veri Yapıları ve Algoritmalar

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.

Programlamaya Giriş Karar Yapıları, Tekrarlı İfadeler(Döngüler)

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

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

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.

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

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

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

MAT213 Bilgisayar Programlama I

Program AkıĢ Kontrol Yapıları

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

KONTROL YAPILARI (CONTROL STRUCTURES)

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

1 JAVASCRIPT NEDİR? 1

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN

PostgreSQL ve PL/pgSQL

Algoritma ve Akış Şemaları

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

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

PROGRAMLAMA DİLLERİ I

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

Bağlama (Binding) Kavramı

HSancak Nesne Tabanlı Programlama I Ders Notları

BM202 SAYISAL ÇÖZÜMLEME

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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

Program Akış Kontrol Yapıları

B tekrarlama kontrol komutları 7. do-while döngüsü 8. while döngüsü 9. for döngüsü

1. LabVIEW ile Programlama

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

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

BÖLÜM 2 C PROGRAMLAMADA AKIŞ KONTROLÜ. GOTO: C programında programın herhangi bir yerinden bir yerine şartsız olarak atlanmasını sağlayan komuttur.

Transkript:

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

Bölüm 8 Konular Giriş Seçim İfadeleri Tekrarlı İfadeler Şartsız Dallanma(Unconditional Branching) Korumalı Komutlar Sonuçlar Wesley. All rights reserved. 1-2

Kontrol Akışının Seviyeleri İfadeler içinde Program birimleri arasında Program ifadeleri arasında Wesley. All rights reserved. 1-3

Kontrol İfadeleri: Gelişim FORTRAN I kontrol ifadeleri direkt olarak IBM 704 donanımı temelliydi Birçok araştırmacı ve 1960 larda bu konular üzerinde tartıştı Bir önemli sonuç: Şu kanıtlanmıştır akış diyagramı hazırlanmış olan algoritmalar sadece ikiyollu seçim ve ön koşullu tekrarlanan ifadeler ile gerçekleştirilebilir. Wesley. All rights reserved. 1-4

Kontrol Yapıları Bir kontrol yapısı ve ifadesi çalışmayı kontrollü hale getirir. Tasarım sorusu Kontrol yapısının birden fazla girdisi olmalı mıdır? Wesley. All rights reserved. 1-5

Seçim İfadeleri Bir seçim ifadesi iki veya daha fazla çalışma yolları arasından seçim yapar. İki genel kategorisi vardır: İki-yönlü seçiciler Çok yönlü seçiciler Wesley. All rights reserved. 1-6

İki yönlü seçici ifadeleri Genel biçim: if control_expression then clause else clause Tasarım Konuları: Kontrol deyimlerinin biçimi ve tipi ne olmalıdır? then ve else cümlecikleri nasıl belirtilecek? İç içe seçim elemanları nasıl belirtilecek? Wesley. All rights reserved. 1-7

İki Yönlü Seçim: Örnekler FORTRAN: IF (boolean_expr) ifadesi Sorun: seçim tek bir ifadedir daha fazla seçim için bir GOTO kullanılmalıdır: IF (.NOT. condition) GOTO 20... 20 CONTINUE Okunabilirlik için olumsuz mantık kötüdür. Bu sorun FORTRAN 77 de çözülmüştür Daha sonraki diller daha fazla seçim için birleşik seçimlere izin vermiştir. Wesley. All rights reserved. 1-8

İki Yönlü seçim : Örnek ALGOL 60: if (boolean_expr) then ifade(statement ) (then clause) else statement (else clause) İfadeler tek Ya da birden fazla olabilir Wesley. All rights reserved. 1-9

İç içe seçimler Java örneği if (sum == 0) if (count == 0) result = 0; else result = 1; Hangi if, else in sahibidir? Java'nın statik anlamsal kuralı(static semantics rule): else kendisine en yakın olan if e aittir. Wesley. All rights reserved. 1-10

İç içe seçimler Alternatif bir anlamı zorlamak için birleşik ifadeler kullanılabilir: if (sum == 0) { } if (count == 0) result = 0; else result = 1; Yukarıdaki çözüm C, C++ ve C# tarafından kullanılır. Perl tüm then ve else kelimelerinin bileşik olamasını zorunlu kılar. Wesley. All rights reserved. 1-11

Çok yönlü seçim deyimleri Birden fazla sayıda seçim ifadesine izin verir. Tasarım Konuları: 1. Kontrol deyimlerinin biçimi ve tipi nasıl olacaktır? 2. Seçilebilir alanlar nasıl belirtilir? 3. Çalışma akışında sadfece tek bir seçim kısımı mı olabilir? Wesley. All rights reserved. 1-12

Çok yönlü seçim deyimleri İlk çıkan çoklu seçimler: FORTRAN aritmetik IF (üç yönlü seçim) IF (arithmetic expression) N1, N2, N3 GOTO lara ihtiyaç duyar. Seçilebilen kısımlar her yerde olabilir. Wesley. All rights reserved. 1-13

Çok yönlü seçim deyimleri Modern çoklu seçimler C deki switch ifadesi switch (expression) { case const_expr_1: stmt_1; case const_expr_n: stmt_n; [default: stmt_n+1] } Wesley. All rights reserved. 1-14

Çok yönlü seçim deyimleri C nin switch ifadesi için seçtiği tasarım 1. Kontrol ifadeleri sadece integer tipli olabilir 2. Seçilebilen kısımlar ifadeler, bloklar Ya da birleşik ifadeler olabilir 3. Bu yapıdaki seçimde birden fazla kısım çalışabilir. 4. default temsil edilmeyen değerler için kullanılır. Wesley. All rights reserved. 1-15

Çok yönlü seçim deyimleri The Ada case ifadesi 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üvenlidir( stmt_sequence tamamlandıktan sonra kontrol case ifadesine geçer) Wesley. All rights reserved. 1-16

Çok yönlü seçim deyimlerinde if Çoklu seçimler else-if cümlecikleri gibi görünür, örneğin Ada: if... then... elsif... then... elsif... then... else... end if Wesley. All rights reserved. 1-17

Tekrarlama İfadeleri İfadenin ya da birleşik ifadenin tekrarlamalı olarak çalıştırılmasını sağlar. Genel tasarım konuları 1. iterasyon(tekrarlama nasıl kontrol edilecek?) 2. döngüdeki kontrol mekanizması nerede olacak? Wesley. All rights reserved. 1-18

Sayaç kontrollü döngüler Sayaç temelli döngülerde bir sayaç değişkeni bulunur,ve ilk değeri ile sayacın son değeri ve artış miktarı belirlenir. Tasarım Konuları: 1. Döngü değişkeninin etki alanı(scope) ve tipi ne olmalıdır? 2. Döngü sonlandırmadaki döngü değişkeninin değeri ne olmalıdı? 3. Döngü değişkeni, döngü içinde yapılacak ifadelerce değiştirilmeli midir ve bu döngüyü etkiler mi? 4. Döngü parametreleri birkez mi işlenir yoksa her döngüde tekrar işlenilmeli midir? Wesley. All rights reserved. 1-19

Tekrarlamalı İfadeler:Örnek FORTRAN 90 sözdizimi DO label var = start, finish [, stepsize] Stepsize 0 hariç herşey olabilir Parametreler ifadeler olabilir Tasarım seçimleri: 1. Döngü değişkeni INTEGER dır 2. Döngü değişkeni her zaman son değerini alır 3. döngü değişkeni döngüde değiştirilemez, fakat parametreler değiştirilebilir; 4. Döngü parametreleri sadece birkez çalıştırılır. Wesley. All rights reserved. 1-20

Tekrarlamalı İfadeler:Örnek FORTRAN 95 : ikinci biçim: [name:] DO variable = initial, terminal [,stepsize] END DO [name] Döngü değişkeni INTEGER olmalıdır Do Count =1,10 End Do Wesley. All rights reserved. 1-21

Tekrarlamalı İfadeler:Örnek Pascal ın for ifadesi for variable := initial (to downto) final do statement Tasarım seçimleri: 1. Döngü değişkeni sıradan bir tip olabilir 2. Normal sonlanmadan sonra döngü değişkeni yoktur. 3. Döngü değişkeni döngü içinde değiştirilmez; döngü parametreleri değiştirilebilir, fakat birkez hesaplanırlar, bu nedenle kontrolü etkilemezler Wesley. All rights reserved. 1-22

Tekrarlamalı İfadeler:Örnek Ada for var in [reverse] discrete_range loop... end loop discrete range integer ın Ya da enumeration tipinin bir alt aralığıdır. Döngü değişkenin etki alanı döngü içidir. Bu değişken döngü sonunda tanımsız olur Wesley. All rights reserved. 1-23

Tekrarlamalı İfadeler:Örnek Count: Float :=1.33; for Count in 1..10 loop Sum:=Sum+Count end loop; Wesley. All rights reserved. 1-24

Tekrarlamalı İfadeler:Örnek C nin for ifadesi for ([expr_1] ; [expr_2] ; [expr_3]) statement Deyimlerin(expr1) tamamı ifade olabilir Ya da virgülle ayrılmış ifadeler olabilir Çoklu ifadelerde kabul edilen değer en sonuncusunun değeridir. Açık bir döngü değişkeni yoktur. Döngü içinde herşey değişebilir. İlk ifade birkez hesaplanır, diğerleri her döngüde tekrar hesaplanır. Wesley. All rights reserved. 1-25

Tekrarlamalı İfadeler:Örnek C++ C den iki yönle farklıdır: 1. Kontrol deyimleri Mantıksal(Boolean) olabilir. 2. İlk deyim bir değişken tanımlamaya izin verebilir, bu değişkenin etki alanı döngü içidir. Java ve C# C++ dan farklı olarak kontrol deyimleri Boolean olmalıdır. Wesley. All rights reserved. 1-26

Tekrarlamalı İfadeler:Mantıksal Kontrollü Tekrarlama kontrolü mantıksal(boolean) dır. Tasarım Konuları: Ön sınama ya da son-sınama? Mantıksal kontrollü döngü sayaç kontrollü ile aynı mıdır? Genel biçimleri: while (ctrl_expr) do loop body loop body while (ctrl_expr) Wesley. All rights reserved. 1-27

Tekrarlamalı İfadeler:Mantıksal Kontrollü Paskalda hem ön sınamalı hem de son sınamalı döngü vardır(while-do ve repeatuntil) C ve C++ da her ikisi vardır. Java C gibidir, sadece kontroller mantıksal(boolean) olmalıdır. -- Java da goto yoktur. Wesley. All rights reserved. 1-28

Tekrarlamalı İfadeler:Mantıksal Kontrollü Ada da ön sınama yöntemi vardır fakat son sınama yoktur FORTRAN 77 ve 90 da her ikiside vardır. Perl de iki ön-sınama mantıksal döngü vardır., while ve until, fakat sonsınamalı döngü yoktur. Wesley. All rights reserved. 1-29

Tekrarlamalı İfadeler:Kullanıcı belirtimli döngü Bazen döngü kontrolünün nerede yapılacağı kullanıcı tarafından belirtilebilir Tek döngüler için basit ifade (örn., break) Tasarım konuları Kontrol ifadesi dışarıda olabilir mi? 1. Kontrol birden fazla döngü dışına çıkabilir mi? Wesley. All rights reserved. 1-30

Tekrarlamalı İfadeler:Kullanıcı belirtimli döngü outherloop: for (row=0;row<numrows;row++) for (col=0;col<numcols;col++) sum+=mat[row][col]; if ( sum>1000.0) break outherloop; } Wesley. All rights reserved. 1-31

Tekrarlamalı İfadeler:Kullanıcı belirtimli döngü (break ve continue) C, C++, ve Java: break ifadesi Şartsız olarak herhangi döngü veya switch den bir seviye atlar Java ve C# da break ifadesi etiketli olabilir ve kontrolü etiketin olduğu yere kaydırır Bir alternatif: continue ifadesi; tekrarlanan yerin kalan kısmı atlanır ve döngü şartlarının olduğu kısma gidilir. Wesley. All rights reserved. 1-32

Tekrarlamalı ifadeler: Tekrarlama Veri yapıları temelli Bir veri yapısı içindeki eleman sayısı döngünün tekrar sayısını belirtir. Kontrol mekanizması bir tekrarlayıcı (iterator) fonksiyonun çağırımıdır; belirtilen sırada bir sonraki elemanı geri döndürür,eğer eleman yoksa döngü sonlanır. C'nin for u bu işlem için kullanılabilir: for (p=root; p==null; traverse(p)){ } Wesley. All rights reserved. 1-33

Tekrarlamalı ifadeler: Tekrarlama Veri yapıları temelli C# daki foreach ifadesi dizi veya diğer kolleksiyonlar içinde tekrarlama sağlar: Strings[] = strlist = { Bob, Carol, Ted }; foreach (Strings name in strlist) Console.WriteLine ( Name: {0}, name); {0} notasyonu gösterilecek string in pozisyonunu gösterir. Wesley. All rights reserved. 1-34

Kontrolsüz dallanma Çalışmayı program içerisinde istenilen yere aktarır. 1960 ların ve 1970 lerin en çok tartışılan konusudur Bilinen mekanizma: goto ifadesidir. En büyük sorun: okunabilirlik Bazı diller goto ifadesini desteklemez(örn., Module-2 ve Java) C# da goto ifadesi vardır ( switch ifadeleri içinde kullanılabilir) goto lar ile döngüden çıkışlar gizlenir ve belirgin olmaz. Wesley. All rights reserved. 1-35

Korumalı Komutlar(Guarded Commands) Dijkstra tarafından önerilmiştir. Amaç: geliştirme aşamasında (doğru çalışma) doğrulama temelli yeni programlama metedolojisini desteklemek için önerilmiştir. (CSP ve Ada) dillerinin dilsel mekanizmalarının temelidir. Temel fikir: Eğer hesaplamanın sırası önemli değilse program bu sırayı belirtmemelidir. Wesley. All rights reserved. 1-36

Seçim korumalı komut Biçim if <Boolean exp> -> <statement> [] <Boolean exp> -> <statement>... [] <Boolean exp> -> <statement> fi Anlamı: yapıya gelindiğinde Tüm mantıksal(boolean) ifadeler değerlendirilir Eğer birden fazlası doğruysa, birisini deterministik olmayan bir şekilde seçer Hiçbiri doğru değilse, bir çalışma zamanı hatasıdır. Wesley. All rights reserved. 1-37

Seçim korumalı kontrol grafiği Wesley. All rights reserved. 1-38

Seçim korumalı kontrol if x>=y ->max:=x [ ] y>=x ->max:=y fi Wesley. All rights reserved. 1-39

Döngü korumalı komutlar Form do <Boolean> -> <statement> [] <Boolean> -> <statement>... [] <Boolean> -> <statement> od Anlamı: her iterasyonda Tüm mantıksal ifadeleri hesapla Birden fazla doğruysa, birini seç ve döngü başına gel Hiçbiri doğru değilsedöngüden çık Wesley. All rights reserved. 1-40

Döngü korumalı komutlar do q1>q2 -> temp:=q1;q1:=q2;q2:=temp; [] q2>q3 -> temp:=q2;q2:=q3;q3:=temp; [] q3>q4 -> temp:=q3;q3:=q4;q3:=temp; od Wesley. All rights reserved. 1-41

Döngü korumalı komut Wesley. All rights reserved. 1-42