Uploaded by Hypnosis Flux

Algoritma ve Döngüler Ders Notları

advertisement
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
Download