• Tidak ada hasil yang ditemukan

Kontrol pada mesin bor Ifadeleri

N/A
N/A
Protected

Academic year: 2018

Membagikan "Kontrol pada mesin bor Ifadeleri"

Copied!
42
0
0

Teks penuh

(1)

ISBN 0-321-49362-1

Bölüm 8

(2)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-2

Bölüm 8 Konular

• Giriş

• Seçim İfadeleri • Tekrarlı İfadeler

• Şartsız Dallanma(Unconditional Branching) • Korumalı Komutlar

(3)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-3

Kontrol Akışının Seviyeleri

İfadeler içinde

(4)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-4

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

(5)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-5

Kontrol Yapıları

• Bir kontrol yapısı ve ifadesi çalışmayı kontrollü hale getirir.

• Tasarım sorusu

(6)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-6

Seçim İfadeleri

• Bir seçim ifadesi iki veya daha fazla çalışma yolları arasından seçim yapar.

• İki genel kategorisi vardır:

(7)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-7

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

(8)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-8

İ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

(9)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-9

İki Yönlü seçim : Örnek

• ALGOL 60:

if (boolean_expr)

then ifade(statement ) (then clause)

else statement (else clause)

(10)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-10

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

(11)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-11

İç içe seçimler

• Alternatif bir anlamı zorlamak için birleşik ifadeler kullanılabilir:

• Yukarıdaki çözüm C, C++ ve C# tarafından kullanılır.

(12)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-12

Ç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?

(13)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-13

Çok yönlü seçim deyimleri

• İlk çıkan çoklu seçimler:

– FORTRAN aritmetik IF (üç yönlü seçim)

IF (arithmetic expression) N1, N2, N3GOTO lara ihtiyaç duyar.

(14)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-14

Ç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]

(15)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-15

Ç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.

(16)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-16

Ç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

(17)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-17

Çok yönlü seçim deyimlerinde if

• Çoklu seçimler else-if cümlecikleri gibi görünür, örneğin Ada:

(18)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-18

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?)

(19)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-19

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?

(20)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-20

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;

(21)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-21

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

(22)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-22

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ü

(23)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-23

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.

(24)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-24

Tekrarlamalı İfadeler:Örnek

Count: Float :=1.33;

for Count in 1..10 loop

Sum:=Sum+Count

(25)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-25

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.

(26)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-26

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#

(27)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-27

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

(28)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-28

Tekrarlamalı İfadeler:Mantıksal

Kontrollü

• Paskalda hem ön sınamalı hem de son

sınamalı döngü vardır(while-do ve repeat-until)

• C ve C++ da her ikisi vardır.

• Java C gibidir, sadece kontroller

mantıksal(boolean) olmalıdır. -- Java da

(29)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-29

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ü

(30)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-30

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?

(31)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-31

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;

(32)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-32

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

(33)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-33

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:

(34)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-34

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);

(35)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-35

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)

(36)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-36

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.

(37)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-37

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

(38)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-38

(39)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-39

Seçim korumalı kontrol

(40)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-40

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

(41)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-41

Döngü korumalı komutlar

(42)

Copyright © 2007

Addison-Wesley. All rights reserved. 1-42

Referensi

Dokumen terkait

Kebijakan ( policy ) merupakan suatu kumpulan keputusan yang diambil oleh seseorang atau kelompok politik dalam memilih tujuan dan cara mencapai tujuan itu.. Dasar pemikirannya

PERBANDINGAN KETERAMPILAN PROSES SAINS SISWA PADA MATERI TUMBUHAN BIJI MELALUI PEMBELAJARAN MENGGUNAKAN FENETIK DAN PRAKTIKUM BERBASIS VERIFIKASI.. Universitas Pendidikan Indonesia |

Setelah perbaikan seluruh bodi selesai dilakukan, termasuk rangka maupun pintu, engine hood, atap, fender atau apapun yang mengalami kerusakan, yang diperbaiki melalui

Manometer merupakan alat untuk mengukur tekanan gas, yang masuk ke regulator (tekanan di dalam tabung) dan tekanan yang akan keluar dari regulator (tekanan kerja). Jadi

Contoh dari praktik perilaku sosial organisasi adalah perusahaan agribisnis yang tidak hanya mengembangkan perkebunan namun juga menjadi pembina para petani

[r]

Penelitian ini berfokus kepada peningkatan kemampuan membaca kritis siswa menengah atas dengan menggunakan model pembelajaran kooperatif tipe spearhead of

Dan ini dapat juga dilakukan pada kertas gambar yang sudah ada gambarnya dipasang pada papan gambar kemudian agar garisnya berimpit tetap dengan mistar maka menggunakan