5- AKIŞ DİYAGRAMLARI (FLOW- CHART) M.İLKUÇAR - imuammer@yahoo.com 1
Algoritma işlem adımlarının günlük konuşma diliyle adım adım yazılması idi. Algoritmayı anlamak için yazıldığı dilin bilinmesi ve açık ve net bir şekilde yazılması gerekmektedir. Oysa bir problem için geliştirilmiş bir algoritma evrensel olmalı ve herkes anlayabilmelidir. Bu durumda ya ortak bir dil kullanılmalı yada ortak semboller ile ifade edilmelidir. İşte problemin çözümü için geliştirilen bir algoritma herkesçe kabul edilen sembollerle ifade edebilmek için bazı şekiller kullanılmaktadır. Bu şekillerle yapılan çözüme de flow-chart denir. http://www.rff.com/flowchart_samples.htm http://www.edrawsoft.com/ M.İLKUÇAR - imuammer@yahoo.com 2
5.1- Akış diyagramında kullanılan şekiller ve anlamları Başla/ Bitir ( / ) Veri girişi ( data input) İşlem ( process) Karşılaştırma ( if - case) Çıktı ( Output) Döngü ( loop ) Alt Yordam ( function ) Bağlantı ( connection ) İşlem Akış yönü ( direction ) M.İLKUÇAR - imuammer@yahoo.com 3
5.3- Başlama sembolü : M.İLKUÇAR - imuammer@yahoo.com 4
5.3- Bitiş sembolü : M.İLKUÇAR - imuammer@yahoo.com 5
5.3- Giriş- Çıkış sembolü : RAM x, y X 5 Y 7 M.İLKUÇAR - imuammer@yahoo.com 6
5.3- İşlem sembolü : X 3 y x* 4 k ( - b + (4*a*c ) ^(1/2) ) / (2*a) M.İLKUÇAR - imuammer@yahoo.com 7
5.3- KARŞILAŞTIRMA sembolü : if ( x > 50 ) işlem1 X>50 Hayır Evet if ( x > 50 ) işlem1 else İşlem2 if ( x > 50 ) { if ( y<20) işlem 11 else işlem12 } else { İşlemler 2 } M.İLKUÇAR - imuammer@yahoo.com 8
5.2 -Algoritma ile Akış diyagramları : 10- Başla 20- X ve Y Oku 30- Z X + Y 40- Yaz Z X, Y Z X + Y Z 50- Bitir Mutlaka START ile başlayıp STOP bitmelidir. Şekilleri birbirine bağlayan oklar dik yada yatay olmalıdır (0 veya 90 derece) Okların yönü işlemin akış yönünü gösterdiğinden mutlaka olmalıdır. START dan itibaren hangi ok takip edilirse edilsin STOP a ulaşmalıdır. M.İLKUÇAR - imuammer@yahoo.com 9
Algoritma ile Akış diyagramının çözümde kullanımı: 10- Başla 20- Oku X X 30- EĞER (X>=70) YAZ başarılı DEĞİLSE YAZ BAŞARISIZ X>=70 hayır BAŞARISIZ evet Başarılı 40- Bitir M.İLKUÇAR - imuammer@yahoo.com 10
Aşağıdaki Algoritma ve Akış diyagramında x=6 için ekrana ne yazar? 10- Başla 20- Oku X X 30- EĞER (X>5) YAZ A 40- YAZ B 50- Bitir evet X>5 A B Cevap: AB M.İLKUÇAR - imuammer@yahoo.com 11
Örnek: Klavyeden girilen üç sayıdan en büyüğünü bulan akış diyagramı. 10- BAŞLA 20- OKU x, y, z x, y, z eb x 30- eb x 40- eğer ( y > eb ) ise eb y 50- eğer ( z > eb ) ise eb z y>eb yes eb y 60- YAZ eb 70- BİTİR z>eb Yes eb z eb M.İLKUÇAR - imuammer@yahoo.com 12
sıcaklık Sıcaklık <0 evet Don olayı VAR hayır «Don olayı YOK» Isıtıcıyı Çalıştır M.İLKUÇAR - imuammer@yahoo.com 13
Örnek : Yazılım Tasarım Akış diyagramı Tasarım Kodlama Test Et Hata Var mı? hayır evet Tasarım Hatası mı? hayır evet M.İLKUÇAR - imuammer@yahoo.com 14 Kaynayk: http://www.rff.com/flowchart_samples.htm
5.3- Lambanın çalışıp çalışmadığının kontrolü için akış diyagramı Yes Lamba Çalışıyor mu? No Lamba Takılı mı? No Lambayı Tak Yes No Lamba Bozuk mu? Yes Lamba satın al M.İLKUÇAR - imuammer@yahoo.com 15
Örnek: Akış diyagramı x=20, x=40, x= 1 değerleri için ekrana ne yazar? x X>= 20 No X x + 4 Yes Yes X< 40 x x + 5 No x x + 6 x M.İLKUÇAR - imuammer@yahoo.com 16
5.4- Döngü (loop) sembolü : X 1, 4, 1 Döngü değişkeni Başlangıç değeri Bitiş değeri Adım (step) değeri Artış miktarı M.İLKUÇAR - imuammer@yahoo.com 17
Örn: 1 den 5 e kadar olan sayıları, sırayla ekrandan yazdıran algoritma ve akış diyagramı: 10- BAŞLA 20- X 1 30- YAZ X 40- X X + 1 50- EĞER ( X < 6 ) GİT 30 60- BİTİR x 1, 5, 1 x EKRAN ÇIKTISI 1 2 3 4 5 M.İLKUÇAR - imuammer@yahoo.com 18
1 den 10 kadar olan tek sayıları ekrana yazdır 10- BAŞLA 20- x 1 30- YAZ x 40- x x+ 2 50- EĞER ( x <= 10) GİT 30 60- BİTİR x 1, 10, 2 x M.İLKUÇAR - imuammer@yahoo.com 19
X! işlemi X X 3 top 1 k 1,2,3 top 1 k 1, X, 1 1 1*1 1 2 1*2 2 6 2*3 3 top top * k top 3!= 6 M.İLKUÇAR - imuammer@yahoo.com 20
x y işlemini yapan akış diyagramı : x, y top 1 k 1, y, 1 x y 2 3 top 1 2 1*2 1 4 2*2 2 8 4*2 3 k 1,2,3 top top * x top 2 3 = 8 M.İLKUÇAR - imuammer@yahoo.com 21
5.4- İç İçe Döngüler (nested loops): x 1, M, 1 X Döngüsü bittiğinde y Döngüsü bittiğinde y 1, K, 1 M.İLKUÇAR - imuammer@yahoo.com 22
* * * * * * * * * Yandaki gibi ekran çıktısı veren akış diyagramını çizelim 10- BAŞLA 20- x 1 30- y 1 40- YAZ «*» 50- y y+ 1 60- EĞER ( y <= 3) GİT 40 70- Satırbaşı YAP 80- x x + 1 90- EĞER (x <=3 ) GİT 30 100- BİTİR x 1, 3, 1 y 1, 3, 1 «*» \n M.İLKUÇAR - imuammer@yahoo.com 23
1 1 1 2 2 2 3 3 3 Yandaki gibi ekran çıktısı veren akış diyagramını çizelim 10- BAŞLA 20- x 1 30- y 1 40- YAZ x 50- y y+ 1 60- EĞER ( y <= 3) GİT 40 70- satırbaşı YAP (YAZ) 80- x x+ 1 90- EĞER (x <=3 ) GİT 30 100- BİTİR x 1, 3, 1 y 1, 3, 1 x \n M.İLKUÇAR - imuammer@yahoo.com 24
Online Flow Chart Çizimi : http://www.gliffy.com/ M.İLKUÇAR - imuammer@yahoo.com 25
Soru-1: Klavyeden kenar uzunlukları girilen üçgenin, ne tür bir üçgen (eşkenar,çeşit kenar,ikizkenar) olduğunu bulup yazdıran akış diyagramını çiziniz. Soru1- Açıklama : Çizdiğiniz akış diyagramının doğruluğunu kontrol etmek için aşağıda verilen değerler için beş kez işletiniz. İlgili giriş değerleri için uygun Ekran çıktısı nı veriyorsa akış diyagramınız doğrudur. Kenar-A Kenar-B Kenar-C Ekran Çıktısı 5 6 7 Çeşitkenar 4 4 4 Eşkenar 4 6 4 İkizkenar 4 4 6 İkizkenar 6 4 4 İkizkenar Soru-2: Klavyeden girilecek sayının fibonecci serisi değerini hesaplayıp yazdıran akış diyagramını çiziniz. M.İLKUÇAR - imuammer@yahoo.com 26
Örnek: Klavyeden girilen sayılardan en büyüğünü bulan akış diyagramı. Read x,y,z x y z b I ) 1 2 3 3 II ) 3 2 1 3 III) 1 3 2 3 b X Değerleri için çalıştırınız. y>x Yes y>z Yes b y No No z>x Yes b z No Print b M.İLKUÇAR - imuammer@yahoo.com 27
10- BAŞLA 20- x 1 30- y 1 40- YAZ x 50- y y+ 1 60- EĞER ( y <= x) GİT 40 70- satırbaşı YAP (YAZ) 80- x x+ 1 90- EĞER (x <=3 ) GİT 30 100- BİTİR x 1 y 1 x y y + 1 y<=x H \n ( satırbaşı) E 1 2 2 3 3 3 Yandaki gibi ekran çıktısı veren akış diyagramını çizelim x x + 1 x<=3 M.İLKUÇAR - imuammer@yahoo.com 28 H E
Örn: Klavyeden girilecek N sayısına kadar olan ASAL sayıları ekrana yazdıran akış diyagramını çiziniz N k 1, N, 1. H. k E k=< 2 H asal true asal=true? E k y 2, (k -1), 1 E (k % y) = 0 asal false H M.İLKUÇAR - imuammer@yahoo.com 29
Örn: Klavyeden girilecek N sayısına kadar olan ASAL sayıları ekrana yazdıran akış diyagramını çiziniz N E N= 2 x H k 3, N, 1 asal true. H asal=true E k y 2, (k -1), 1 E (k % y) = 0 asal false H M.İLKUÇAR - imuammer@yahoo.com 30