• Sonuç bulunamadı

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

N/A
N/A
Protected

Academic year: 2022

Share "İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu"

Copied!
12
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

PROGRAM AKIŞ DENETİMİ

Program akış denetimi konusu temel olarak 2’e ayrılır. Bunlar;

1)Koşul Deyimleri 2)Döngü Deyimleri KOŞUL DEYİMLERİ

Koşul deyimleri temel olarak programı kontrol etmeye yararlar. Bunlara kontrol deyimleri de denir.İki tür koşul deyimi vardır.Bunlar:

1)if deyimi

2)switch-case deyimi IF DEYİMİ

IF deyimi C dilinde en önemli kontrol deyimidir. Genel kullanım biçimi şöyledir:

if(ifade) {

deyim1;

} else {

deyim2;

}

Deyim1 ve deyim2 birer yalın deyim olabileceği gibi başka bir kontrol deyimi de olabilir.

İf deyiminin çalışma mekanizmasını anlamak istersek şunları bilmeliyiz. derleyici önce if deyiminin içindeki ifadeyi hesaplar ve bunun sayısal değerini çıkarır. Sayısal değer 0’dan farklı bir değer çıkarsa mantıksal doğru olarak kabul edilir ve deyim1 icra edilir. Eğer sayısal değer 0 çıkarsa ki bu mantıksal yanlış demektir, derleyici deyim1’i atlar ve deyim2’e geçer.

if(ifade) deyim1;

deyim2;

else deyim3;

Yukarıdaki örnek düzgün çalışmaz.Çünkü bloklama yapmak gerekir diğer tüm deyimlerde olduğu gibi.

(2)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

Bu örneğin doğrusu şöyle olmalıdır:

if(ifade) {

deyim1;

deyim2;

} else

deyim3;

Eğer deyim3 ün yanında bir de deyim4 olsaydı deyim3 ü de bloklama yapmak gerekecekti

if(ifade) {

Deyim1;

Deyim2;

} else {

Deyim4;

Deyim5;

}

Deyim6;

Yukarıdaki örnekte eğer ifade doğru çıkarsa sırasıyla deyim1, deyim2, deyim 6 uygulanacak.Eğer yanlış çıkarsa deyim4, deyim5 ve deyim6 icra edilecek.

Son örneğin akış şemasını çizmek istersek:

ifade

Deyim1;

Deyim2;

Deyim4;

Deyim5;

Deyim6;

(3)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

Bazen if tek başına kullanılır else olmayabilir.

Örnek:

if(ifade) {

Deyim1;

Deyim2;

Deyim3;

}

Deyim4;

Eğer ifade doğruysa deyim1 deyim2 deyim3 deyim4 yapılır eğer yanlışsa sadece deyim4 yürütülür.

Örnek:

#include<stdio.h>

int main() {

int a,b;

printf("iki sayi giriniz");

scanf("%d%d",&a,&b);

if(a<=5) {

printf("toplamlari=%d\n",a+b);

printf("carpimlari%d\n", a*b);

}

printf("farklari=%d\n",a-b);

return 0;

}

Bu örnekte a 5’e eşit veya küçük olduğu sürece derleyici hem toplamlarını hem çarpımlarını hemde farklarını hesaplayıp ekrana yazdırır, sayı 5 ten büyükse sadece farklarını ekrana yazdıracaktır.

İç içe if de sık karşımıza çıkan bir uygulamadır.

Örnek:

if(ifade1)

if(ifade2) deyim1;

else deyim2;

deyim3;

Bu örnekte ifade 1 doğruysa derleyici ikinci if’e geçer eğer ifade2 de doğruysa deyim1 ve deyim3’ü yürütür; eğer ifade2 yanlış çıkarsa deyim2 ve deyim3 yürütülür.En başta ifade1 yanlış çıksaydı derleyici deyim3 e atlayacaktı.Eğer else deyimini ifade1 in olduğu if e bağlamak isteseydik {,} kullanıp bloklama yapmamız gerekecekti.

(4)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

Örnek:

if(ifade1) {

if(ifade2) deyim1;

} else deyim2;

deyim3;

Bu örnekte else birinci if’e aittir.

SWITCH – CASE DEYİMİ

if deyimi mantıksal doğru ve mantıksal yanlış olarak iki seçeneğe sahipken switch-case deyimi bize bir ifadenin çeşitli değerleri için farklı işlemler yapmayı sağlamaktadır. Genel kullanım biçimi şöyledir:

switch(ifade) {

case<seçenek1>: deyim1;

case<seçenek2>: deyim2;

case<seçenek3>: deyim3;

case<seçenek4>: deyim4;

…. ……

default: deyim;

}

Ana çalışma mantığı şöyledir: Derleyici switch’in içindeki ifadenin değerini hesaplar, son case’leri sıra sıra gezer, bu değer eşit bir case değeri bulursa o case’in deyimini yürütür, eğer bulamazsa default’un deyimini uygular.

Örnek:

#include<stdio.h>

int main() {

int a;

printf("1 sayi gir");

scanf("%d",&a);

switch(a) {

case 1: printf("bir");

case 2: printf("iki");

default: printf("olmadi");

}

return 0;

}

Eğer a yerine 1 girersek ekrana bir iki olmadi yazılacak.2 girseydik ekrana iki ve olmadi başka bir değerde ise sadece olmadi yazacaktı.

(5)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

Switch-case de break komutuda sık sık karşımıza çıkar.Break döngüden çıkmayı sağlayan komuttur.Yukarıdaki örneği break ile yazarsak:

#include<stdio.h>

int main() {

int a;

printf("1 sayi gir");

scanf("%d",&a);

switch(a) {

case 1: printf("bir");break;

case 2: printf("iki");break;

default: printf("olmadi");break;

}

return 0;

}

Bu sefer a yerine 1 yazarsak ekrana sadece 1 yazılacak. Çünkü derleyici break komutunu görünce o döngüyü sonlandırır.

#include<stdio.h>

/*switch-case kullanarak hesap makinesi*/

int main() {

int a,b,c;

char islem;

printf("islemi sonra sayilari giriniz");

scanf("%c%d%d",&islem,&a,&b);

switch(islem) {

case '+': c=a+b;break;

case '-': c=a-b;break;

case '*': c=a*b;break;

case '/': c=a/b;break;

default : printf("düzgün islem giriniz.");

}

printf("%d", c);

while(1);

}

(6)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

GENEL OLARAK DÖNGÜLER VE DÖNGÜ DEYİMLERİ

Döngüler, temel olarak programın belli bir bölümünün tekrarlı olarak uygulanmasını sağlarlar. C de döngüler yalın ve esnek olarak tasarlanmıştır. Programın çalışma

zamanının çoğunu döngü yapılarına harcadığını düşünürsek, C için döngülerin önemi bir kez daha ortaya çıkmış olur. Döngüleri koşul verip döngüyü koşul doğru olduğu sürece devam ettirmek, tekrarlama yapmak ve bunların türevleri pek çok işte kullanabiliriz. Bu nedenle bize büyük kolaylık sağlarlar.

Döngüler temel olarak 2 bölüme ayrılır.

1-While döngüleri 2-For döngüleri

While döngüleri, bir koşula bağlı olarak çalışırlar, for döngüleri ise belli bir sayıda yineleme yapmak amacıyla kullanılırlar. Şimdi bu döngülerden daha detaylı bahsedelim.

While Döngüleri

While döngüleri de koşul kontrolünün başta ve sonda yapıldığı döngüler olarak 2 başlığa ayrılır. Kontrolün başta yapıldığı döngülerde anahtar sözcük olarak while kullanılırken, kontolün sonda yapıldığı döngülerde do-while deyimi kullanılır.

Kontrolün Başta Yapıldığı while Döngüleri

Bu tip while döngülerde anahtar deyim olarak ‘while’ deyimini kullanırız. While deyiminin belirttiği koşul geçerli olduğu sürece döngü devam eder, koşul geçerliliğini kaybedince, derleyici döngüden çıkar.Yani while kullanılarak belirtilen ifade 0’farklıysa ifade doğru sayılır ve işlemler yürür, eğer bilgisayar 0 olarak okursa ifade yanlış değeri kazanır bu derleyicinin döngüden çıkmasına neden olur.

Basit akış şeması:

while(ifade) /*ifadeden sonra ; konulmadığına dikkat ediniz.*/

deyim;

While bir anahtar sözcüktür ve C anahtar sözcüklerden sonra parantezlerin içinde bir ifade ister.

while(ifade) Deyim1;

Deyim2;

Burada sadece deyim1 while döngüsünün içindedir, deyim2 döngünün dışıdadır.

while(ifade) {

Deyim1;

Deyim2;

}

Deyim(3);

(7)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

Burada deyim1 ve deyim2 döngüye dahilken deyim3 döngü dışındadır, yani örneklerden de anlaşılacağı gibi döngü içinde 1’den fazla deyim varsa deyimleri döngü içine sokmak için {,} parantezlerini kullanmak gerekir.

while(ifade1) if(ifade2) Deyim1;

Deyim4;

else

Deyim2;

Deyim3;

Burada if döngü içindedir yani deyim1 ve deyim2 döngü içindedir, deyim3 döngüye dahil değildir.

Son örneğin akış diyagramı Kontrolün Sonda Yapıldığı while Döngüleri

Bu tip döngülerde anahtar sözcük olarak do ve while deyimleri kullanılır.While’ın içindeki koşul doğru olduğu sürece işlem devam eder ama sadece while’ın kullanıldığı döngüden bir farkı vardır.O da koşul bir kereliğine yanlış olunca da işlemin yürümesidir.Çünkü derleyici ilk olarak işlemi yapar daha sonra koşulu sağlayıp sağlamadığına bakar.Böyle olunca da deyimler en az bir kere işlem görmüş olur.Do döngü başında, while döngü sonunda kullanılır.Tek deyim için {,} kullanmaya gerek yokken birden çok deyim için bloklamaya gerek vardır.Önemli bir farkı da while dan sonra ; kullanılmasıdır.Basit olarak akış şeması şöyledir:

İfade1

İfade2

Deyim1

Deyim2

Deyim3

Deyim4

(8)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

do

deyim;

while(ifade);

do

deyim1;

deyim2;

while(ifade);

deyim3;

Burada deyim2 ve deyim3 döngü dışındadır yalnızca deyim1 döngüye dahildir.

do {

deyim1;

deyim2;

}

while(ifade);

deyim3;

Burada deyim1 ve deyim2 döngüye dahilken deyim3 döngü dışıdır.

For Döngüleri

For döngüleri deyimleri yinelemeye yarar. Diğer anahtar sözcükler while, if gibi yanında parantezler içinde ifadeler vardır.İfadelerden sonra parantez kapatılır, noktalı virgül koyulmaz.Genel olarak şöyle kullanılır:

for(ifade1;ifade2;ifade3) Deyim1;

Eğer birden fazla deyim kullanılmak isteniyorsa bloklama yapılmalıdır.

for(ifade1;ifade2;ifade3) {

Deyim1;

Deyim2;

}

İfade1: Derleyici ifade1’i döngüye girdiği zaman yalnızca bir kez yapar. Başlangıç adımıdır. Genellikle değişkenlere bir ilk değer atamak için kullanılır.

İfade2: Aynı while deyiminde olduğu gibi bir koşul belirtir. Derleyici koşula uyulduğu sürece döngüyü devam ettirir. Bir başka deyişle, ifade2 nin sayısal değeri 0 dışı olduğu sürece döngü devam eder.Eğer, ifade2 belirtilmez veya her zaman doğru seçilirse, döngü sonsuz olur.

İfade3: Bu kısım döngü değişkenine işlem yapmak için kullanılır. Genellikle bir artırmak(++a) veya bir azaltmak (--a) için kullanılır.

(9)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

Basit olarak for ifadelerini birleştirirsek:

for(ilk değer; koşul; artırma/azaltma) gibi bir kısayol karşımıza çıkar.

Örneğin:

for(k=1;k<=5;++k)

Ayrıca ifade1 yalnızca bir kez işlem gördüğü için for ifadelerinin içine yazılmayıp önceden de belirtilebilir.

a=20;

for(;a>15;--a) gibi.

Daha başka kullanım şekilleri de vardır.Örneğin parantezlerin için hem ifade1 hemde ifade3 olmayabilir.

#include<stdio.h>

int main() {

b=30

for(;b>25;) {

printf(“%d\n”,b) --b;

}

Yukarıdaki örnekte olduğu gibi ifade1 ve ifade3 başka yerlerde kullanılabilir.Buradan çıkarılacak bir sonuç da 1. ve 3. ifadeleri olmayan for döngüleri while döngüleriyle eşdeğerdir.

for( ; ifade ; )

=

while(ifade)

For döngüsünün 3 kısmı bile boş olabilir.Bu tip döngüler sonsuz döngü sağlama amacıyla kullanılır.

for(;;)

Şimdi de bir for örneği içinde for döngüsünün akış şemasını açıklayalım.

Örnek:

#include<stdio.h>

int main() {

int c;

for (c=2;c<51;c=c+2) printf(“%d\n”,c);

return 0;

}

(10)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

Bu örneğin akış şeması:

For deyiminin akış şeması

For döngüsünde ;’ler arasını virgüllerle ayırabiliriz.Örneğin;

for(a=5,b=0,c=20;b<50;++b,a=a-3)

Bu örnekte a=5, b=0, c=20 ifade1; b<50 ifade2; ++b,a=a-3 de ifade 3 yerine geçer.

Örnek:

/*1’den 100’e kadar olan tamsayıların toplamı*/

#include<stdio.h>

int main() {

int a,toplam;

for(a=0,toplam=0;a<=100;toplam += a, ++a)

; /*for döngüsünün deyim kısmı boş olmasına rağmen program çalıştı.*/

printf(“toplam = %d”, toplam);

return 0;

}

C=2

C<51

printf(“%d\n”, c);

c=c+2;

Çıkış

(11)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

Örnek:

/*Girilen sayının faktöriyelini hesaplama programı*/

#include<stdio.h>

int main() {

int a,fact;

printf(“bir sayi giriniz”);

scanf(“%d”,&a);

for(fact=1;a>0;--a) {

fact=fact*a;

}

printf(“bu sayinin faktoriyeli = %d”, fact);

return 0;

}

2 Anahtar Sözcük Break ve Continue

Döngülerin işleyişinde 2 anahtar sözcük daha vardır.Bunlar break ve continue komutlarıdır.Bu komutlar while, for, switch döngülerinde kullanılır.

BREAK KOMUTU

Basitçe break deyiminin işlevi, derleyicinin döngüden çıkmasını sağlayıp döngü dışındaki ilk deyimle devam etmesini sağlamaktır.Bu komut döngüde istemediğimiz bir değer olunca çıkmamıza yarar.

Örnek:

#include<stdio.h>

int main() {

int a;

for(a=25;a>13;--a) {

if(a==17) break;

printf(“a nin simdiki degeri = %d\n”, a);

}

return 0;

}

Bu örnekte derleyici for döngüsünün içinde sayıyı 25 ten başlayarak azaltıp 13 e kadar yazacakken, 17 e gelince break komutuyla karşılaştı ve döngüden çıktı.

(12)

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Adres: İTÜ Ayazağa Yerleşkesi - Elektrik/Elektronik Fakültesi Telefon :+90 (212) 285 36 80 - E-posta: ieeesb@itu.edu.tr

www.ieee.itu.edu.tr

CONTINUE KOMUTU

Continue komutunun özelliği derleyicinin continue’nun gösterdiği değeri atlayıp devam etmesini sağlamaktır.

Örnek:

#include<stdio.h>

int main() {

int a;

a=17;

while(0<a && a<=17) {

--a;

if(a==8) continue;

printf("simdiki deger = %d\n",a);

}

return 0;

}

Bu örnekte derleyici 17’den başlayıp 0’a doğru giderken 8’e gelince continue ile karşılaşınca 8’i ekrana yazdırmadı; ama 0’a kadar yazdırmaya devam etti.

Burak Ataman atamanburak@msn.com İTÜ IEEE Bilişim Komitesi

Referanslar

Benzer Belgeler

The Simple Past Tense ve The Past Continuous Tense “when” ve “while” cümlelerinde çok sık karşımıza çıkar.. Geçmişte devam etmekte olan bir eylem sırasında bir

Örnek: 1’ den 10’ a kadar olan tamsayıları ekrana yazacak C programını yazalım.4. while(koşul)koşul sağlandığı sürece döngü

The control variables opted for this study to measure insider trading are director ownership, institutional ownership, block shareholder, audit firms, firm size, and firm

Bu çalışmada Rıza Yıldırım’ın Hacı Bektaş Veli’den Balım Sultan’a Bektaşiliğin Doğuşu adlı çalış- ması değerlendirilecek ve bu çalışmanın Alevilik

KEY WORDS: Management Information System (MIS), Managing Change in Organization,.. Resistance

In the simulated environment, the network has been organized in a square manner. The length and width are equal and proportionate to the no. of routers and devices in IoT

At the end of the long, and tedious meetings with associate editor, and consultants or even Turkish Society of Cardiology authorities, in indices of The Anatolian Journal