ALGORİTMA - II ALGORİTMA Döngüler Döngüler, koşul doğru olduğu sürece aynı işlemlerin tekrarlanmasını sağlayan yapılardır. Örneğin; Bir sayının ekrana defalarca yazılması, Kurala bağlı olarak artan/azalan değerlerin elde edilmesi, Faktöriyel hesabı, fibonacci ve benzeri serilerin hesaplanması gibi uygulamalar döngülerle gerçeklenebilmektedir. Döngüler; Döngü değişkeninin başlangıç değeri, Döngü değişkeninin artım miktarı Koşul parametreleri ile tanımlanır. 2 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA Döngüler KOŞUL BAŞTA KOŞUL SONDA (koşul) ……. ……. işlemler ……. işlemler ……. (koşul) NOT: Ders kapsamında “koşul başta” yapısı kullanılacaktır… 3 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Ekrana 10 defa * yazdıran” algoritma – KOŞUL BAŞTA yapısı EKRAN ÇIKTISI 10 – BAŞLA 20 – say = 1 30 – EĞER (say <= 10) İSE GİT 40 DEĞİLSE GİT 70 ********** 40 – YAZ “*” 50 – say = say + 1 60 – GİT 30 70 – BİTİR 4 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Ekrana 10 defa * yazdıran” algoritma – KOŞUL SONDA yapısı EKRAN ÇIKTISI 10 – BAŞLA 20 – say = 1 30 – YAZ “*” ********** 40 – say = say + 1 50 – EĞER (say <= 10) İSE GİT 30 60 – BİTİR 5 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “1’den 5’e kadar sayıları sırayla ekrana yazdıran” algoritma – KOŞUL BAŞTA yapısı EKRAN ÇIKTISI 10 – BAŞLA 20 – x = 1 30 – EĞER (x < 6) İSE GİT 40 DEĞİLSE GİT 70 12345 40 – YAZ x 50 – x = x + 1 60 – GİT 30 70 – BİTİR SORU 1: 60. satırda GİT 20 olarak değiştirilirse ne olur? SORU 2: 30. satır EĞER (x <= 6) İSE GİT 40 DEĞİLSE GİT 70 olursa sonuç nasıl değişir? 6 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “1’den klavyeden girilen n sayısına kadar olan sayıları ekrana yazdıran” algoritma 10 – BAŞLA (n=8 için) 20 – OKU n EKRAN ÇIKTISI 30 – x = 1 40 – EĞER (x <= n) İSE GİT 50 DEĞİLSE GİT 80 12345678 50 – YAZ x 60 – x = x + 1 70 – GİT 40 80 – BİTİR SORU : Klavyeden girilen m sayısından klavyeden girilen n sayısına kadar olan sayıları ekrana yazdırmak için algoritmada yapılması gereken değişiklikler nelerdir? 7 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “1’den 10’a kadar olan çift sayıları ekrana yazdıran” algoritma EKRAN ÇIKTISI 10 – BAŞLA 20 – x = 2 30 – EĞER (x <= 10) İSE GİT 40 DEĞİLSE GİT 70 2 4 6 8 10 40 – YAZ x 50 – x = x + 2 60 – GİT 30 70 – BİTİR 8 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “1’den 10’a kadar olan çift sayıları ekrana yazdıran” algoritma - 2 EKRAN ÇIKTISI 10 – BAŞLA 20 – x = 1 30 – EĞER (x <= 10) İSE GİT 40 DEĞİLSE GİT 70 2 4 6 8 10 40 – EĞER (x % 2 == 0) İSE YAZ x 50 – x = x + 1 60 – GİT 30 70 – BİTİR SORU : Ekrana tek sayılar yazılmak istenirse algoritma nasıl değiştirilmelidir? 9 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA YİNELEMELİ İŞLEM ALGORİTMASI “1’den 5’e kadar sayıların toplamını bulup ekrana yazdıran” algoritma 10 – BAŞLA x 1 20 – x = 1 30 – toplam = 0 40 – EĞER (x < 6) İSE GİT 50 (1+1)= 2 (1+2)= 3 DEĞİLSE GİT 80 (2+1)= 3 50 – toplam = toplam + x (3+1)= 4 60 – x = x + 1 toplam 0 (0+1)= 1 (3+3)= 6 (6+4)= 10 (4+1)= 5 70 – GİT 40 (10+5)= 15 (5+1)= 6 80 – YAZ toplam 90 – BİTİR EKRAN ÇIKTISI 15 10 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA YİNELEMELİ İŞLEM ALGORİTMASI “1’den 10’a kadar olan tek sayıların toplamını ekrana yazdıran” algoritma sayı 1 10 – BAŞLA 20 – sayı = 1 toplam 0 (0+1)= 1 (1+2)= 3 30 – toplam = 0 (1+3)= 4 (3+2)= 5 40 – EĞER (sayı <= 10) İSE GİT 50 (4+5)= 9 DEĞİLSE GİT 80 (5+2)= 7 (9+7)= 16 50 – toplam = toplam + sayı (7+2)= 9 60 – sayı = sayı + 2 (16+9)= 25 (9+2)=11 70 – GİT 40 80 – YAZ toplam 90 – BİTİR EKRAN ÇIKTISI 25 11 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA YİNELEMELİ İŞLEM ALGORİTMASI “Klavyeden girilen n sayısı için n! işlemini yapan” algoritma n = 3 için sayı 1 10 – BAŞLA 20 – OKU n 30 – sayı = 1, fakt = 1 40 – EĞER (n == 0 VEYA n == 1) İSE GİT 90 50 – EĞER (sayı <= n) İSE GİT 60 DEĞİLSE GİT 90 fakt 1 (1*1)= 1 (1+1)= 2 (1*2)= 2 (2+1)= 3 (2*3)= 6 (3+1)= 4 60 – fakt = fakt * sayı 70 – sayı = sayı+ 1 80 – GİT 50 EKRAN ÇIKTISI 90 – YAZ n, “!=”, fakt 100 – BİTİR 3!=6 12 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA Sınırı Belli Olmayan Döngüler Döngünün kaç kez döneceği belli değildir. Döngünün devam koşulu: Döngü içerisinde döngü şartını değiştirecek bir koşula bağlıdır ya da Döngüye devam edilip edilmeyeceği sorusuna göre şekillenecektir. 13 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Klavyeden Evet (E) cevabı girildiği sürece klavyeden girilecek sayıların toplamını bulup ekrana yazdıran” algoritma 10 – BAŞLA 20 – t = 0 30 – devam = “E” 40 – EĞER (devam == “E”) İSE GİT 50 DEĞİLSE GİT 100 50 – OKU x 60 –t = t + x 70 – YAZ “Devam etmek için E basınız” SORU 1: 80 numaralı satırda okunan değer “A” olduğunda ne olur? 80 – OKU devam 90 – GİT 40 SORU 2: 30 numaralı satır devam = “H” şeklinde değiştirilirse sonuç ne olur? 100 – YAZ t 110 – BİTİR 14 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Klavyeden Hayır (H) cevabı girilene kadar klavyeden girilecek sayıların toplamını bulup ekrana yazdıran” algoritma 10 – BAŞLA 20 – t = 0 30 – devam = “E” 40 – EĞER (devam != “H”) İSE GİT 50 DEĞİLSE GİT 100 50 – OKU x 60 –t = t + x 70 – YAZ “Çıkmak için H basınız” SORU 1: 80 numaralı satırda okunan değer “A” olduğunda ne olur? 80 – OKU devam 90 – GİT 40 SORU 2: 30 numaralı satır devam = “H” şeklinde değiştirilirse sonuç ne olur? 100 – YAZ t 110 – BİTİR 15 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA İç İçe Döngüler İç içe döngülerde: İçteki döngü dıştaki döngünün bir komut satırı gibidir. Döngüler birbirini kesemezler. 16 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA İç İçe Döngüler 17 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Yandaki şekildeki gibi ekran çıktısı veren” algoritma 10 – BAŞLA 20 – satır = 1 30 – EĞER (satır <= 4) İSE GİT 40 DEĞİLSE GİT 120 40 – sütun = 1 50 – EĞER (sütun <= 4) İSE GİT 60 DEĞİLSE GİT 90 60 – YAZ “*” 70 – sütun = sütun + 1 80 – GİT 50 90 – YAZ ALTSATIR 100 – satır = satır + 1 110 – GİT 30 120 – BİTİR EKRAN ÇIKTISI **** **** **** **** 18 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Yandaki şekildeki gibi ekran çıktısı veren” algoritma 10 – BAŞLA 20 – satır = 1 30 – EĞER (satır <= 4) İSE GİT 40 DEĞİLSE GİT 120 40 – sütun = 1 50 – EĞER (sütun <= satır) İSE GİT 60 DEĞİLSE GİT 90 60 – YAZ “*” 70 – sütun = sütun + 1 80 – GİT 50 90 – YAZ ALTSATIR 100 – satır = satır + 1 110 – GİT 30 120 – BİTİR EKRAN ÇIKTISI * ** *** **** 19 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Yandaki şekildeki gibi ekran çıktısı veren” algoritma 10 – BAŞLA 20 – satır = 1 30 – EĞER (satır <= 4) İSE GİT 40 DEĞİLSE GİT 120 40 – sütun = 1 50 – EĞER (sütun <= satır) İSE GİT 60 DEĞİLSE GİT 90 60 – YAZ sütun 70 – sütun = sütun + 1 80 – GİT 50 90 – YAZ ALTSATIR 100 – satır = satır + 1 110 – GİT 30 120 – BİTİR EKRAN ÇIKTISI 1 12 123 1234 20 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Yandaki şekildeki gibi ekran çıktısı veren” algoritma 10 – BAŞLA 20 – satır = 1 30 – EĞER (satır <= 4) İSE GİT 40 DEĞİLSE GİT 120 40 – sütun = 1 50 – EĞER (sütun <= satır) İSE GİT 60 DEĞİLSE GİT 90 60 – YAZ satır 70 – sütun = sütun + 1 80 – GİT 50 90 – YAZ ALTSATIR 100 – satır = satır + 1 110 – GİT 30 120 – BİTİR EKRAN ÇIKTISI 1 22 333 4444 SORU: Algoritmada (60 - YAZ 2*satır) değişikliği yapılırsa sonuç ne olur? 21 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Çarpım Tablosu hazırlayan” algoritma 10 – BAŞLA 20 – r = 1 30 – EĞER (r <= 9) İSE GİT 40 DEĞİLSE GİT 120 40 – c = 1 50 – EĞER (c <= 9) İSE GİT 60 DEĞİLSE GİT 90 60 – YAZ r*c 70 – c = c + 1 80 – GİT 50 90 – r = r + 1 100 – YAZ ALTSATIR 110 – GİT 30 120 – BİTİR EKRAN ÇIKTISI 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 ... … … 9 18 27 36 45 54 63 72 81 22 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA SAKLA ALGORİTMASI “x ve y değişkenlerinin içeriğini birbiriyle değiştiren” algoritma 10 – BAŞLA 20 – x =10 30 – y = 15 40 – sakla = x 50 – x = y x y sakla 10 10 10 15 15 --15 15 15 10 15 10 ----10 10 10 10 60 – y= sakla 70 – YAZ x, y 80 – BİTİR EKRAN ÇIKTISI 15 10 23 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA SAKLA ALGORİTMASI “Klavyeden girilen 3 sayıyı büyükten küçüğe sıralayarak ekrana yazdıran” algoritma 10 – BAŞLA 20 – OKU x, y, z 30 – EĞER (y > x) İSE s = x; x = y; y=s 40 – EĞER (z > x) İSE s = x; x = z; z=s 50 – EĞER (z > y) İSE s = y; y = z; z=s 60 – YAZ x, y, z x y z s 10 10 15 15 15 20 20 20 20 20 20 15 15 15 10 10 10 10 10 15 15 15 20 20 20 20 20 20 15 15 15 10 10 --10 10 10 15 15 15 10 10 10 EKRAN ÇIKTISI 20 15 10 90 – BİTİR 24 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA Öklid Algoritması 10 – BAŞLA 20 – OKU x, y 30 – EĞER (x != y) İSE GİT 40 DEĞİLSE GİT 60 40 – EĞER (x > y) İSE x = x - y DEĞİLSE y = y - x 50 – GİT 30 60 – YAZ x 70 – BİTİR SORU 1: Yukarıdaki algoritma 𝑥 = 17 ve 𝑦 = 12 için ekrana ne yazar? SORU 2: Yukarıdaki algoritma 𝑥 = 36 ve 𝑦 = 81 için ekrana ne yazar? 25 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Klavyeden girilen bir sayının asal sayı olup olmadığını ekrana yazan ” algoritma 10 – BAŞLA 20 – OKU sayı 30 – asal = true 40 – k = 2 50 – EĞER (k < sayı) İSE GİT 60 DEĞİLSE GİT 90 60 – EĞER (sayı % k == 0) İSE asal = false; GİT 90 70 – k = k + 1 80 – GİT 50 90 – EĞER (asal == true) İSE YAZ “asal” DEĞİLSE YAZ “asal değil” 100 – BİTİR 26 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Klavyeden girilen bir n sayısına kadar asal olan tüm sayıları ekrana yazan ” algoritma 10 – BAŞLA 20 – OKU n 30 – sayı = 2 40 – EĞER (sayı <= n) İSE GİT 50 DEĞİLSE GİT 140 50 – asal = true 60 – k = 2 70 – EĞER (k < sayı) İSE GİT 80 DEĞİLSE GİT 110 80 – EĞER (sayı % k == 0) İSE asal = false; GİT 120 90 – k = k + 1 100 – GİT 70 110 – EĞER (asal == true) İSE YAZ sayı 120 – sayı = sayı +1 130 – GİT 40 140 – BİTİR (n = 15 için) EKRAN ÇIKTISI 2 3 5 7 11 13 27 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA “Armstrong sayıları ekrana yazan ” algoritma 10 – BAŞLA 20 – yb = 1 30 – EĞER (yb <= 9) İSE GİT 40 DEĞİLSE GİT 170 40 – ob = 0 50 – EĞER (ob <= 9) İSE GİT 60 DEĞİLSE GİT 150 60 – bb = 0 70 – EĞER (bb <= 9) İSE GİT 80 DEĞİLSE GİT 130 80 – sayı = 100*yb + 10*ob + bb 90 – x = yb^3 + ob^3 + bb^3 100 – EĞER (sayı == x) İSE YAZ sayı 110 – bb = bb + 1 120 – GİT 70 130 – ob = ob + 1 140 – GİT 50 150 – yb = yb + 1 160 – GİT 30 170 – BİTİR EKRAN ÇIKTISI 153 370 371 407 NOT: Basamaklarındaki rakamların küpleri toplamı kendisine eşit olan üç basamaklı sayılara Armstrong sayı denir. 28 CENG193 BİLGİSAYAR-1 Kasım 2019 ALGORİTMA SORULAR 1 – Onlu sayı sistemine göre verilen bir sayının ikili sayı sisteminde karşılığını bulup ekrana yazdıran algoritmayı yazınız. 2 – İkili sayı sistemine göre verilen bir sayının onlu sayı sisteminde karşılığını bulup ekrana yazdıran algoritmayı yazınız. 3 – Klavyeden girilen x ve y sayıları için 𝑥 𝑦 değerini bulup ekrana yazdıran algoritmayı yazınız. 4 – Klavyeden girilen üç sayıyı küçükten büyüğe sıralayarak ekrana yazdıran algoritmayı yazınız. 5 – Yandaki ekran görüntüsünü veren algoritmayı yazınız. 40 30 20 10 40 30 20 40 30 40 29 CENG193 BİLGİSAYAR-1 Kasım 2019