BPR151 ALGORİTMA VE PROGRAMLAMA - I Öğr. Gör. Bayram AKGÜL bayramakgul@bartin.edu.tr http://bmyo.bartin.edu.tr/akgul
Algoritmalar & Akış Şemaları -Avantajları -Türleri -Örnekleri
Algoritma/Akış Şeması Avantajları Program yazmayı kolaylaştırır. Hatalı kodlama oranını azaltır. Program yazımı için geçen süreyi kısaltır. İşlem akışını bir şekilde gösterdiğinden program kontrolünü kolaylaştırır. Sonradan yapılacak düzenlemelerde kolaylıklar sağlar. Öğr. Gör. Bayram AKGÜL
Akış Şemaları Kontrol akışını ifade etmek için kullanılan şekilleri hatırlayalım: Deltoid koşul durumunda karar verme adımını gösterir Paralel kenar girdi adımlarını gösterir Dikdörtgenler işlem adımlarını gösterir Altı yamuk dörtgenler çıktı adımlarını gösterir Başla Bitir Oklar Akış yönünü gösterir Algoritmanın başlangıç ve bitişini gösterir Çember bağlantı noktasını gösterir Öğr. Gör. Bayram AKGÜL
Akış Şeması Türleri Doğrusal Akış Şemaları Mantıksal Akış Şemaları Döngüsel Akış Şemaları Öğr. Gör. Bayram AKGÜL
Doğrusal Akış Şemaları Her işlemin doğrusal olarak yapıldığı akış şemalarıdır. Her işlem sırasıyla çalışır ve bir işlem diğerini takip eder. Koşul veya tekrarlama gerçekleşmez. Örnek: Girilen iki sayının toplamını bulma Üç sayının ortalamasını bulma Çemberin çevresini ve alanını hesaplama Öğr. Gör. Bayram AKGÜL
Doğrusal Akış Şemaları Örnek:1 Kullanıcıdan alınan iki sayının toplamını hesaplama: Başla Sayi1 ve Sayi2’yi oku Toplam=Sayi1+Sayi2 Toplamı ekrana yaz Bitir Basla Sayi1, Sayi2 Toplam=Sayi1+Sayi2 Toplam Bitir Öğr. Gör. Bayram AKGÜL
Doğrusal Akış Şemaları Örnek:2 Kullanıcıdan alınan üç sayının ortalamasını hesaplama: Başla S1,S2 ve S3’ü oku Toplam=S1+S2+S3 Ortalama=Toplam/3 Ortalama ekrana yaz Bitir Başla S1,S2,S3 Toplam=S1+S2+S3 Ort=Toplam/3 Ortalama Bitir Öğr. Gör. Bayram AKGÜL
Doğrusal Akış Şemaları Örnek:3 Çemberin Çevresini ve Alanını Hesaplama: Başla Çemberin yarıçapını oku (r) Çevre=2*PI*r Alan = PI*r*r Çevre ve alanı ekrana Yaz Bitir Başla r Çevre=2*PI*r Alan = PI * r*r Çevre, Alan Bitir Öğr. Gör. Bayram AKGÜL
Uyarı: Uyarı: kullanıcı çemberin yarı çapı için negatif bir değer girerse ne olur? Negatif alan, çevre olabilir mi? Ne Yapmalıyız? Kontrol Mantıksal Kontrol Öğr. Gör. Bayram AKGÜL
Mantıksal Akış Şemaları Akışın bazı kurallara/koşullara göre yönünün değiştiği akış şemalarıdır. Koşulun durumuna göre bazı adımlar gerçekleşmez. Örnek: Girilen iki sayıdan küçük olanını bulma Üç sayının en küçüğünü bulma Girilen bir sayının tek veya çift olduğunu anlama Girilen sayının N sayısının katı olup olmadığını anlama. Öğr. Gör. Bayram AKGÜL
Mantıksal Akış Şemaları Örnek:1 Kullanıcıdan alınan iki sayıdan küçük olanını bulma: Başla Sayi1 ve Sayi2’yi oku Eğer (Sayi1<Sayi2) 3.1 küçük = sayı1; Değilse 4.1. Küçük = sayı2; Küçük sayıyı ekrana yaz Bitir Basla Sayi1, Sayi2 Sayi1<Sayi2? Küçük Bitir Küçük = Sayı1 Küçük = Sayı2 E H Öğr. Gör. Bayram AKGÜL
Mantıksal Akış Şemaları Örnek:2 Kullanıcıdan alınan 3 sayıdan en küçük olanını bulma sayı1, sayı2, ve sayı3’ü oku küçük = sayı1; (sayı1’in en küçük olduğunu farz edelim) eğer (sayı2 < küçük) 3.1 küçük = sayı2; eğer (sayı3 < küçük) 4.1. küçük = sayı3; küçük sayısını ekrana yaz sayı1, sayı2, sayı3’ü oku sayı2 < küçük ? Başla hayır küçük = sayı1 küçük = sayı2 evet sayı3 < küçük ? küçük = sayı3 küçük sayısını ekrana yazdır Bitir Öğr. Gör. Bayram AKGÜL
Mantıksal Akış Şemaları Örnek:3 Girilen bir sayının tek veya çift olduğunu anlama: Başla Sayı’yı oku Eğer (Sayı mod 2 = 0) 3.1 Ekrana yaz "sayı çift"; Değilse 4.1. Ekrana yaz "sayı tek"; Bitir Basla Sayı Sayı mod 2 = 0 ? Bitir Sayı tek Sayı çift H E Öğr. Gör. Bayram AKGÜL
Mantıksal Akış Şemaları Örnek:4 Girilen bir sayının N sayısının katı olup olmadığını anlama: Başla Sayı’yı ve N ‘yi oku Eğer (Sayı mod N = 0) 3.1 Ekrana yaz: "sayı N sayısının katı" Değilse 4.1. Ekrana yaz: "sayı N sayısının katı değil!"; Bitir Basla Sayı, N Sayı mod N = 0 ? Bitir Girilen sayı N sayısının katı değil! Girilen sayı N sayısının katı H E Öğr. Gör. Bayram AKGÜL
Birden Fazla mantıksal ifadeyi birleştirme: Mantıksal ifadeleri birleştirmek için VE, VEYA operatörleri kullanılabilir. Örnek: bir sayının hem 2’nin hem de 3’ün katı olduğunu anlamak için: Eğer (sayı mod 2 = 0 VE sayı mod 3 = 0) ise … Bir sayının ikinin katı veya 3’ün katı olduğunu anlamak için: Eğer (sayı mod 2 = 0 VEYA sayı mod 3 = 0) ise … Bir ifadenin tersini almak için DEĞİL operatörü kullanılabilir. Öğr. Gör. Bayram AKGÜL
Mantıksal Akış Şemaları Örnek:5 Girilen bir sayının 3’ün ve 7’nin katı olup olmadığını anlama: Başla Sayı’yı oku Eğer (Sayi mod 3 = 0) 3.1. Eğer (Sayı mod 7 = 0) ise 3.1.1. Ekrana yaz: "sayı 3’ün ve 7’nin katı " 3.2. Değilse 3.2.1. Ekrana yaz: "sayı 7’nin katı değil " Değilse 4.1. Ekrana yaz: "sayı 3’ün katı değil!"; Bitir Başla Sayı Sayı mod 3 = 0 ? Bitir Girilen sayı 3’ün ve 7’nin katı Girilen sayı 3’ün katı değil H E Sayı mod 7 = 0 ? Girilen sayı 7’nin katı değil Öğr. Gör. Bayram AKGÜL
Mantıksal Akış Şemaları Örnek:5:2. yöntem Girilen bir sayının 3’ün ve 7’nin katı olup olmadığını anlama -2. yöntem: Başla Sayı’yı oku Eğer (Sayi mod 3 = 0) VE (Sayı mod 7 = 0) ise 3.1 Ekrana yaz: "sayı 3’ün ve 7’nin katı" Değilse 4.1. Ekrana yaz: "sayı 3’ün ve 7’nin katı değil!"; Bitir Başla Sayı Sayı mod 3 = 0 ? VE Sayı mod 7 = 0 ? Bitir Girilen sayı 3’ün ve 7’nin katı Girilen sayı 3’ün VE 7’nin katı değil H E Öğr. Gör. Bayram AKGÜL
Döngüsel Akış Şemaları Bir çeşit mantıksal akış şemasıdır. Koşula göre bazı adımların tekrarlandığı akış şemalarıdır. Örnek: İsmini ekrana 100 defa yazdırma 1’den N sayısına kadar sayıları toplama 1’den N sayısına kadar M’nin katları olan sayıları toplama Bir sayının faktöriyelini hesaplama Öğr. Gör. Bayram AKGÜL
Döngüsel Akış Şemaları Örnek:1 İsmini ekrana 100 defa yazdırma Başla Sayaç = 0 Sayaç = Sayaç + 1 Ekrana yaz «Ali KARA» Eğer (Sayaç < 100) ise 5.1. 3. Adıma git Bitir. Basla Sayaç = 0 sayaç < 100 ? Bitir Ali KARA H E sayaç = sayaç + 1 Not: 3. ve 4. adımları değiştirmek sonucu etkilemez. Öğr. Gör. Bayram AKGÜL
Döngüsel Akış Şemaları Örnek:2 1’den N sayısına kadar olan sayıların toplamını ekrana yazdırma Başla N sayısını kullanıcıdan iste Sayaç = 0, Toplam = 0 Sayaç = Sayaç + 1 Toplam = Toplam + Sayaç Eğer (Sayaç < N) ise 6.1. 4. Adıma git Toplamı Ekrana yaz Bitir. Basla Sayaç = 0, Toplam = 0 sayaç < N ? Bitir Toplam H E sayaç = sayaç + 1 Toplam = Toplam + sayaç N Öğr. Gör. Bayram AKGÜL
Döngüsel Akış Şemaları Örnek:3 Basla Sayaç = 0, Toplam = 0 sayaç < N ? Bitir Toplam H E sayaç = sayaç + 1 N, M sayaç mod M = 0 ? Toplam = Toplam + sayaç 1’den N sayısına kadar M’nin katları olan sayıların toplamını ekrana yazdırma Başla N ve M sayılarını kullanıcıdan iste Sayaç = 0, Toplam = 0 Sayaç = Sayaç + 1 Eğer (Sayaç mod M = 0) ise 5.1. Toplam = Toplam + Sayaç Eğer (Sayaç < N) ise 6.1. 4. Adıma git Toplamı Ekrana yaz Bitir. H Öğr. Gör. Bayram AKGÜL
Döngüsel Akış Şemaları Örnek:4 Girilen N sayının faktöriyelini ekrana yazdırma (ör: 5! = 5*4*3*2*1 = 120) Başla N sayısını kullanıcıdan iste Sayaç = 0, Faktöriyel = 1 Sayaç = Sayaç + 1 Faktöriyel = Faktöriyel * Sayaç Eğer (Sayaç < N) ise 6.1. 4. Adıma git Faktöriyeli Ekrana yaz Bitir. Basla Sayaç = 0, Faktöriyel = 1 sayaç < N ? Bitir Faktöriyel H E sayaç = sayaç + 1 Faktöriyel = Faktöriyel * sayaç N Öğr. Gör. Bayram AKGÜL
Döngüsel Akış Şemaları Örnek:5 Çemberin Çevresini ve Alanını Hesaplama: (kullanıcının yarı çapı 0’dan büyük girdiği garanti ediliyor) Başla Çemberin yarıçapını oku (r) Eğer (r <= 0) 2.1. Ekrana Yaz: «r değeri 0’dan büyük olmalı» 2.2. 2. Adıma dön Çevre=2*PI*r Alan = PI*r*r Çevre ve alanı ekrana Yaz Dur Başla r Çevre=2*PI*r Alan = PI * r*r Çevre, Alan Bitir r <= 0 ? E H r değeri 0’dan büyük olmalı Öğr. Gör. Bayram AKGÜL
Dinlediğiniz için teşekkürler… Öğr. Gör. Bayram AKGÜL