Akış Diyagramları

Download Report

Transcript Akış Diyagramları

BPR151 ALGORİTMA VE
PROGRAMLAMA - I
Öğr. Gör. Bayram AKGÜL
[email protected]
http://bmyo.bartin.edu.tr/akgul
Pseudo-code
(yalancı kod)
&
Akış şemaları
Pseudo-code(yalancı kod) & Akış
şemaları
•
Algoritmalar genelde anlaşılır dillerle yazılır
–
•
Bu algoritma stilleri pseudo-code(yalancı kod)
olarak adlandırılır
Yalancı kodlar genellikle çözüme başlamak için
iyi bir yoldur.
–
–
Bununla beraber, program akışı bu tür yalancı
kodlarla her zaman çok açık olmayabilir!
Bunun için, kontrol akışını daha açık ifade etmek
için Akış şemaları kullanılır.
Öğr. Gör. Bayram AKGÜL
3
Akış Şemaları
• Bir Akış şeması yapılandırılmış bir harita gibi
algoritma adımlarını gösterir.
• Aşağıdaki şekiller bir akış diyagramı içinde
kontrol akışını ifade etmek için kullanılır
Paralel kenar
girdi adımlarını
gösterir
Çember bağlantı
noktasını gösterir
Altı yamuk
dörtgenler çıktı
adımlarını
gösterir
Dikdörtgenler
işlem adımlarını
gösterir
Oklar Akış
yönünü gösterir
Öğr. Gör. Bayram AKGÜL
Deltoitler koşul
durumunda karar
verme adımını
gösterir
Başla
Bitir
Algoritmanın başlangıç
ve bitişini gösterir
4
Program
• Bir program tanımlanmış bir problemi çözmek için
hazırlanmış bir yapıdır. Örnek problemler:
–
–
–
–
–
1 den N sayısına kadar olan sayıların toplamı
N tane sayının en büyük ve en küçük olanını bulma
Sayıları sıralama
Sınıfın not ortalamasını hesaplama
…
Girdi (Veri)
PROGRAM
(Algoritma)
Çıktı (Sonuç)
• Bir program girdi olarak bazı verileri alır, onları işler ve
sonucu çıktı olarak verir.
Öğr. Gör. Bayram AKGÜL
5
Örnek-1: Sandviç Yapma
•
Problem: Fıstık ezmeli ve reçelli sandviç
yapmak için bir algoritma yazalım.
•
Girdiler
–
–
–
–
–
•
Ekmek (En az 2 dilim)
Fıstık ezmesi
Reçel
Bıçak
Sandviçi koymak için tabak
Çıktı
–
Bir sandviç
Öğr. Gör. Bayram AKGÜL
6
Örnek-1: Sandviç Yapma (devam)
1. Başla
2. Ekmeği, fıstık ezmesini, reçeli, bıçağı ve tabağı
çalışacağın yere koy
3. İki dilim ekmeği tabağa koy
4. Fıstık ezmesini bir ekmeğe sür, sürmek için
bıçağı kullan
5. Diğer ekmeğe reçeli sür, sürmek için bıçağı
kullan
6. Reçel ve fıstık ezmesi içeriye gelecek şekilde
iki dilimi bir biri üstüne koy
7. Sandviç hazır!
8. Bitir
7
Öğr. Gör. Bayram AKGÜL
Örnek 1 için Akış Şeması: Sandviç yapma
Başla
Ekmeği, fıstık ezmesini, reçeli, bıçağı ve tabağı al
2 dilim ekmeği masaya koy
Fıstık ezmesini bir dilime sür
Reçeli diğer dilime sür
iki dilimi bir biri üstüne koy
Sandviç hazır!
Bitir
8
Örnek 2:Fahrenhayt’ı santigrada
dönüştürme
•
Problem: Fahrenhayt sıcaklık birimini
santigrat derece birimine dönüştürecek bir
algoritma yazalım.
•
Girdi (Input)
–
•
Fahrenhayt derece (°F) sıcaklık
Çıktı(Output)
–
Santigrat derece (°C) sıcaklık
Öğr. Gör. Bayram AKGÜL
9
Örnek 2:Fahrenhayt’ı santigrada
dönüştürme (devam)
1. Başla
2. Kullanıcıdan dönüştüreceğin Fahrenhayt dereceyi
girmesini iste
3. santigrat = (fahrenhayt -32)/1.8
4. Fahrenhayt ve Santigrat dereceleri ekrana
yazdır.
5. Bitir
Öğr. Gör. Bayram AKGÜL
10
Örnek 2 için Akış Şeması:
Fahrenhayt’ı santigrada dönüştürme
Başla
Kullanıcıdan dönüştüreceğin
Fahrenhayt dereceyi girmesini iste
santigrat = (fahrenhayt -32)/1.8
Fahrenhayt ve Santigrat
dereceleri ekrana yazdır.
Bitir
11
Örnek-3: 2 sayının toplam, çarpım ve
ortalamasını hesaplama
•
Problem: 2 sayının toplam, çarpım ve
ortalamasını hesaplayacak algoritma yazalım.
•
Girdi
–
2 sayı
sayı2
•
toplam
sayı1
program
Çıktılar
–
çarpım
ortalama
Sayıların toplam çarpım ve ortalamaları
Öğr. Gör. Bayram AKGÜL
12
Örnek-3: 2 sayının toplam, çarpım
ve ortalamasını hesaplama
1. Başla
2. Kullanıcıdan sayı1 ve sayı2 yi girmelerini iste
3. toplam = sayı1 + sayı2
4. çarpım = sayı1 * sayı2;
5. ortalama = toplam / 2;
6. toplam, çarpım ve ortalamayı ekrana yaz
7. Bitir
Öğr. Gör. Bayram AKGÜL
13
Örnek 3 için Akış Şeması: 2 sayının
toplam, çarpım ve ortalamasını hesaplama
Başla
Kullanıcıdan sayı1 ve
sayı2 yi girmelerini iste
toplam = sayı1 + sayı2
çarpım = sayı1 * sayı2
ortalama =toplam/2
toplam, çarpım ve ortalamayı ekrana yaz
Bitir
14
Örnek-4: bir çemberin çevresini ve
alanını hesaplama
•
Problem: bir çemberin çevresini ve alanını
hesaplayan bir algoritma yazalım.
•
Girdi
–
•
Çemberin yarı çapı
Çıktı
–
Çemberin çevresi ve alanı
Öğr. Gör. Bayram AKGÜL
15
Örnek-4: bir çemberin çevresini
ve alanını hesaplama
1. Başla
2. Kullanıcıdan çemberin yarıçapını girmesini iste
3. çevre = 2 * 3.14 * yarıçap;
4. alan = 3.14 * yarıçap * yarıçap;
5. Çevre ve alanı ekrana yazdır.
6. Bitir
Öğr. Gör. Bayram AKGÜL
16
Örnek 4 için Akış Şeması: çemberin çevresi
ve alanını hesaplama
Başla
Kullanıcıdan çemberin
yarıçapını girmesini iste
çevre = 2*3.14*yarıçap
Alan = 3.14* yarıçap * yarıçap;
Çevre ve alanı
ekrana yazdır
Bitir
17
Örnek-5: 2 sayının küçük ve büyük
olanını bulma
•
Problem: 2 sayının küçük ve büyük olanını bulan
bir algoritma yazalım.
•
Girdi
–
•
2 sayı
Çıktı
–
Küçük ve büyük sayı
Öğr. Gör. Bayram AKGÜL
18
Örnek-5: 2 sayının küçük ve büyük
olanını bulma
1. Başla
2. Kullanıcıdan sayı1 ve sayı2’yi girmelerini iste
3. eğer (sayı1 < sayı2)
•
•
2.1. küçük = sayı1;
2.2. büyük = sayı2;
4. değilse (yani sayı1 >= sayı2)
•
•
3.1. küçük = sayı2;
3.2. büyük = sayı1;
5. Küçük ve büyük sayıları ekrana yazdır
6. Bitir
Öğr. Gör. Bayram AKGÜL
19
Örnek 5 için Akış Şeması: 2 sayının
büyük ve küçük olanını bulma
Başla
Kullanıcıdan sayı1 ve sayı2’yi girmelerini iste
sayı1 < sayı2 ?
Hayır
küçük = sayı2
büyük = sayı1
evet
küçük = sayı1
büyük = sayı2
Küçük ve büyük
sayıları yazdır
Bitiş
20
Örnek-6: 3 sayının en küçük olanını
bulma
•
Problem: 3 sayının en küçük olanını bulacak bir
algoritma yazalım
•
Girdi
–
•
3 sayı
Çıktı
–
Sayılardan en küçük olanı
Öğr. Gör. Bayram AKGÜL
21
Örnek-6: 3 sayının en küçük olanını
bulma (devam)
1. Başla
2. Kullanıcıdan sayı1, sayı2 ve sayı3 ü girmelerini
iste
3. eğer (sayı1 < sayı2)
•
•
2.1. eğer (sayı1 < sayı3) ise küçük = sayı1;
2.2. değilse (yani, sayı3 <= sayı1) küçük = sayı3;
•
•
3.1. eğer (sayı2 < sayı3) küçük = sayı2;
3.2. değilse (yani, sayı3 <= sayı2) küçük = sayı3;
4. değilse (yani, sayı1 >= sayı2)
5. Küçük sayısını ekrana yaz
6. Bitir
Öğr. Gör. Bayram AKGÜL
22
Örnek 6 için Akış Şeması:
3 sayıdan küçük olanını bulma
Başla
Kullanıcıdan sayı1, sayı2 ve
Sayı3’ü girmelerini iste
sayı1 < sayı2 ?
evet
hayır
sayı2 < sayı3 ?
evet
sayı1 < sayı3 ?
hayır
küçük = sayı3
evet
hayır
küçük = sayı2
küçük = sayı3
küçük = sayı1
küçük sayısını yazdır
Bitir
Öğr. Gör. Bayram AKGÜL
23
Örnek-7: 3 sayının en küçük olanını
bulma (2. algoritma)
1. Başla
2. Kullanıcıdan sayı1, sayı2 ve sayı3 ü girmelerini
iste
3. küçük = sayı1; (sayı1 in en küçük olduğunu farzedelim)
4. eğer (sayı2 < küçük) küçük = sayı2;
5. eğer (sayı3 < küçük) küçük = sayı3;
6. küçük sayısını ekrana yaz
7. Bitir
Öğr. Gör. Bayram AKGÜL
24
Örnek 7 için Akış Şeması:
3 sayıdan küçük olanını bulma
Başla
Kullanıcıdan sayı1, sayı2 ve
Sayı3’ü girmelerini iste
küçük = sayı1
sayı2 < küçük ?
hayır
sayı3 < küçük ?
hayır
küçük sayısını
ekrana yazdır
Bitir
evet
küçük = sayı2
evet
küçük = sayı3
25
Örnek-8: Kenar uzunlukları verilen bir
dikdörtgenin alanının hesaplanması
•
Problem: Kenar uzunlukları verilen bir
dikdörtgenin alanını hesaplayalım.
•
Girdi
–
•
Kısa ve uzun kenar
Çıktı
–
Dikdörtgenin alanı
Öğr. Gör. Bayram AKGÜL
26
Örnek-8: Kenar uzunlukları verilen bir
dikdörtgenin alanının hesaplanması (devam)
1. Başla
2. Kullanıcıdan dikdörtgenin uzun ve kısa kenarlarının
girmesini iste
3. alan = uzunkenar * kısakenar;
4. alanı ekrana yazdır.
5. Bitir
Öğr. Gör. Bayram AKGÜL
27
Örnek-8: Kenar uzunlukları verilen bir
dikdörtgenin alanının hesaplanması (devam)
Başla
Kullanıcıdan dikdörtgenin uzun ve
kısa kenarlarının girilmesini iste
Alan = uzunKenar* kısaKenar
alanı ekrana yazdır
Bitir
28
Örnek-8: Kenar uzunlukları verilen bir
dikdörtgenin alanının hesaplanması (devam)
• Uyarı: kullanıcı uzun veya kısa kenar için 0
veya negatif bir değer girerse ne olur?
– Negatif veya 0 alan olabilir mi?
• Ne Yapmalıyız?
– Kontrol
Öğr. Gör. Bayram AKGÜL
29
Örnek-8: Kenar uzunlukları verilen bir
dikdörtgenin alanının hesaplanması (devam)
1.
2.
3.
4.
5.
Başla
Kullanıcıdan dikdörtgenin uzun kenarını girmesini iste
Eğer (uzun kenar <= 0 ) ise 1. adıma git
Kullanıcıdan dikdörtgenin kısa kenarını girmesini iste
Eğer (kısa kenar <= 0 ) ise 3. adıma git
6. alan = uzunkenar * kısakenar;
7. alanı ekrana yazdır.
8. Bitir
Öğr. Gör. Bayram AKGÜL
30
Örnek-8: Kenar uzunlukları verilen bir
dikdörtgenin alanının hesaplanması (devam)
Başla
Kullanıcıdan dikdörtgenin uzun
kenarının girilmesini iste
Uzun Kenar <= 0 ?
evet
hayır
alanı ekrana yazdır
Kullanıcıdan dikdörtgenin kısa
kenarının girilmesini iste
hayır
Kısa Kenar <= 0 ?
Alan = Uzun Kenar* Kısa Kenar
evet
Bitir
31
DINLEDIĞINIZ IÇIN
TEŞEKKÜRLER…
Öğr. Gör. Bayram AKGÜL
32