You are on page 1of 26

ALGORTMA DERS NOTLARI

Programlamaya Giri Program : Belirli bir problemi zmek iin bir bilgisayar dili kullanlarak yazlm deyimler dizisi. nceki blmde bir problemin zm ile ilgili teknikler sunmutuk. Bir problemi bilgisayar ile zmek iin gelitireceimiz programn yazmnda izleyeceimiz admlar: i) Problemin ne olduunu kavra. zm iin gereksinimleri belirle. ii) Problemin girdilerini, ktlarn ve dier kstlama ve gereksinimleri belirle ( bilgilerin giri ve k biimlerinin nasl olacana kadar). iii) Problemin zmn veren algoritmay yaz. iv) Algoritmay bir programla dili ile yaz. v) Programn doru alp almadn test et. Bu testi deiik veriler (girdiler) iin tekrarla. Problem zme ve Algoritmalar 1.1 Problem zme Problem zmede, soruna hemen girimek yerine, dikkatli ve sistematik yaklam ilke olmaldr. Problem iyice anlalmal ve mmkn olduu kadar kk paralara ayrlmaladr. Descartes tarafndan "Discourse on Method" isimli kitabnda anlatlan problem zme teknikleri;[2] 1. Doruluu kesin olarak kantlanmadka, hibir eyi doru olarak kabul etmeyin; tahmin ve nyarglardan kann. 2. Karlatnz her gl mmkn olduu kadar ok paraya bln. 3. Dzenli bir biimde dnn; anlalmas en kolay olan eylerle balayp yava yava daha zor ve karmak olanlara doru ilerleyiniz. 4. Olaya baknz ok genel, hazrladnz ayrntl liste ise hibir eyi darda brakmayacak kadar kusursuz ve eksiksiz olsun. 1.2 Algoritmalar Belirli bir grevi yerine getiren sonlu saydaki ilemler dizisidir. .S. 9.yy da ranl Musaolu Horzumlu Mehmet (Alharezmi adn araplar takmtr) problemlerin zm iin genel kurallar oluturdu. Algoritma Alharezmi'nin Latince okunuu. Her algoritma aadaki kriterleri salamaldr. 1. Girdi: Sfr veya daha fazla deer dardan verilmeli. 2. kt: En azndan bir deer retilmeli. 3. Aklk: Her ilem (komut) ak olmal ve farkl anlamlar iermemeli. 4. Sonluluk: Her trl olaslk iin algoritma sonlu admda bitmeli. 5. Etkinlik: Her komut kiinin kalem ve kat ile yrtebilecei kadar basit olmaldr. Not: Bir program iin 4. zellik geerli deil. iletim sistemleri gibi program sonsuza dek alrlar .

rnek: ki saynn toplamn yazan algoritmay yaznz. zm: Adm 1 --> lk sayy oku, Sembolik olarak A1 S1=? Adm 2 --> kinci sayy oku A2 S2=? Adm 3 --> Saylar topla A3 T S1+S2 Adm 4 --> Sonucu grntle. A4 T'yi gster. 1.Soru : Kullancnn girdii iki saynn karelerinin toplamn grntleyen algoritmay yaznz. zm A0 --> Bala A1 --> Saya=0 (Saya'n ilk says 0 olarak balar.) A2 --> Say=? : TT+Say (Sayy giriniz. T'ye sayy ekle veT'yi gster.) A3 --> Saya=Saya+1 (Saya'a bir ekle ve sayac gster.) A4 --> Saya<4 ise A2'ye git. (Eer saya 4'ten kkse Adm 2'ye git.) A5 --> O=T/4 (Ortalama iin T deerini 4'e bl) A6 --> O'yu gster. (Ortalamay gster.) A7 --> Dur 2.Soru : 20'den 50'ye kadar olan saylarn toplamn bulan algoritma yaznz. zm A0 --> Bala A1 --> S=20 : T=0 (Say 20 T deeri 0 ile bala) A2 --> TT+S (T'ye sayy ekle T'yi gster.) A3 --> S=S+1 (Sayy bir artr.) A4 --> S<50 ise A2'ye git. (Eer say 50'den kk ise Adm 2'ye git) A5 --> T'yi gster. (T'nin deerini gster.) A6 --> Dur 3.Soru : 30 ile 90 arasndaki ift saylarn toplamn bulan algoritma yaznz. zm: A0 --> Bala A1 --> S=0 : T=0 (Say 0, Toplam deeri 0 olsun) A2 --> S=S+1 (Sayy bir artr, sayy gster.) A3 --> T=T+2S+28 (28 saysna ift say olmas iin sayy 2 ile arp ve toplama ekle, toplam gster) A4 --> 2S+28<90 ise git A2 (Eer ift say 90 deerinden kk ise Adm 2'ye git) A5 --> O=T/S (Toplam deeri sayya bl ve ortalamay bul) A6 --> O'yu yaz. (Ortalamay gster) A7 --> Dur 4.Soru : Klavyeden girilen 10 adet saydan ift saylarn toplamnn tek saylarn toplamna orann bulan algoritma yaznz. zm: A0 --> Bala A1 --> S=0 : T=0 : =0 (Say, tek ve ift saylar 0 deerini alsn) A2 --> Say? (Sayy giriniz) A3 --> (-1)say=1 ise =+Say (Eer -1'in say ss 1 saysna eitse sayy ift sayya ekle ve ift sayy bul.) A4 --> (-1)say=+1 ise T=T+Say (Eer -1'in say ss +1 saysna eitse sayy tek sayya ekle ve tek sayy bul.) A5 --> S=S+1 (Sayaa 1 ekle ve sayac gster) A6 --> S<10 ise A2'ye git. (Eer Saya 10'dan kk ise Adm 2'ye git.) A7 --> V /T (ift saylarn toplamn tek saylarn toplamna bl.) A8 --> V'yi gster. (Blme sonucunu gster.) A9 --> Dur

5.Soru : Klavyeden girilen iki saydan en byn bulup gsteren algoritmay yaznz. zm : A0 --> Bala A1 --> S1=? : S2=? (lk sayy gir ; ;kinci sayy gir.) A2 --> S1>S2 ise git A4 (Say 1 say 2'den kkse Adm 4'e git.) A3 --> S2>S1 ise git A5 (Say 2 say 1'den kkse Adm 5'e git.) A4 --> S1'i gster git A6 (say 1 deerini gster ve ilemi durdur) A5 --> S2'yi gster. (Say 2 deerini gster) A6 --> Dur 6.Soru : Klavyeden girilen saydan en byn bulup gsteren algoritmay yaznz. zm : A0 --> Bala : EB=- : S=0 (Bala olabilecek EB:en kk say olsun, Say 0 olsun) A1 --> Say? (Sayy giriniz.) A2 --> Say>EB ise EB=Say (Eer Say EB'den kkse EB sayyla ayn deeri alsn.) A3 --> S=S+1 (Sayaca 1 ekle ve sayac gster) A4 --> S<3 ise git A1 (Eer sayac 3'ten kkse adm 1'e git.) A5 --> EB'yi gster (En byk sayy gster.) A6 --> Dur 7. Soru: Bilgisayara girilen 50 rencinin adn, soyadn ve snav notunu kullanarak en yksek not alan rencinin adn, soyadn, en dk not alan rencinin adn, soyadn yazan programn algoritmasn kodlaynz. (YN=Yksek not, DN= Dk not) 1. Bala 2. I = 0 3. YN = 0 4. DN = 100 5. I = I + 1 6. Oku AD, SOY, NOTU 7. Eer notu > YN ise YN = Notu, YAD = AD, YSOY=SOY 8. Eer notu < DN ise DN= Notu, DAD= AD, DSOY=SOY 9. Eer I<50 ise git adm 5 10. Yaz YAD, YSOY, DAD, DSOY 11. DUR 8. Soru: Bilgisayara girilen bir saynn faktriyelini hesaplayan programn algoritmasn yazn. 1. Bala 2. I = 0 3. = 1 4. Oku S 5. I = I + 1 6. = * I 7. Eer I < S ise git adm 5 8. Yaz 9. Dur 9. Soru: Bilgisayara girilen bir sayya kadar olan ift saylarn ortalamasn veren programn algoritmasn dng kullanarak yazn. 1. Bala 2. S = 0 3. T = 0 4. Oku S 5. D = 2, S, 2 6. T = T +D, S = S + 1

7. DS 8. ORT = T/S 9. Yaz ORT 10. Dur

10. Soru: Bilgisayara 1000 say girilmekte. Bu 1000 say ierisinde 250 750 arasnda bulunan saylarn adedini bulan programn algoritmasn dng kullanarak yazn. 1. Bala 2. I = 0 3. D = 1, 1000 4. Oku S 5. Eer S < 250 ise git 8 6. Eer S >750 ise git 8 7. I = I + 1 8. DS 9. Yaz I 10. Dur 11. Soru: 1den 10a kadar algoritmasn dngyle yazn. 1. Bala 2. D1 = 1, 10 3. D2 = 1, 10 4. = D1 X D2 5. Yaz 6. D2S 7. D1S 8. DUR olan saylarn arpm tablosunu yazan programn

Boyutlu Deikenler
Boyutlu deiken bilgisayarda indisi olan deikendir. Boyutlu deiken indisi kullanarak numaralandrr ve deikenin btn deerlerini bellekte tutar. rnek: S (I) S (1) = 7 S (2) = 8 S (3) = 9 12. Soru: bilgisayara 10 elemanl bir dizi girilmektedir. Elemanlarn ortalamasn bulan programn algoritmasn yazn. 1. Bala 2. A boyut D (10) 3. Dn = 1, 10 4. Oku D (Dn) 5. Dn S 6. Top = 0 7. Dn = 1, 10 8. Top = Top + D (Dn) 9. Dn S 10. Ort = Top / 10 11. Yaz ORT 12. Dur

13. Soru: Bilgisayara girilen 100 sayl dizi ierisinde en byk, en kk saylar bulan ve dizideki satr numaralarn veren programn algoritmasn yazn. 1. Bala 2. A boyut D (100) 3. Dn = 1, 100 4. Oku D (Dn) 5. Dn S 6. EB = 0, EK = 9999 7. Dn = 1, 100 8. Eer D(Dn) < EK ise, EK = D (Dn), EKS = Dn 9. Eer D(Dn) > EB ise, EB = D (Dn), EBS = Dn 10. Dn S 11. Yaz EK, EB, EKS, EBS 12. Dur

Sralama (Sorting)
Sralama yapabilmek iin deikenin boyutlu olmas gerekir. Ancak deiken tek boyutlu olmaldr. 14. Soru: Bilgisayara girilen 10 sayy kkten bye sralayan programn algoritmasn yazn. 1. Bala 2. A boyut D (10) 3. I = 1, 10 4. Oku D (I) 5. IS 6. I = 1, 9 7. J = I + 1, 10 8. Eer D(I) > d(J) ise, BO = D (I) D (I) = D (J) D(J) = BO 9. JS 10. IS 11. I = 1, 10 12. Yaz D (I) 13. IS 14. DUR 15. Soru: Bilgisayara girilen bir say hem dizinin boyutunu belirler, hem de dizinin ilk elemann oluturur. Bu diziyi oluturan ve yazan programn algoritmasn yazn. 1. Bala 2. Oku S 3. A boyut D (S) 4. D (1) = S 5. I = 2, S 6. Oku D (I) 7. IS 8. I = 1, S 9. Yaz D (I) 10. Dur

AKI EMALARI (DYAGRAMLARI)

Algoritmann baladn ya da sona erdiini belirtmek iin kullanlr.

Klavye aracl ile giri ya da okuma yaplacan gsterir.

Yazc(printer) aracl ile k yaplacan gsterir.

Kart okuyucu araclyla giri yaplacan gsterir.

Ara belirtmeden giri ya da k yaplacan gsterir.

Hesaplama ya da deerlerin deikenlere aktarmn gsterir.

Aritmetik ve mantksal ifadeler iin karar verme ya da karlatrma durumunu gsterir.

Diskten okuma ya da diskete yazmay gsterir.

Disketten okuma ya da diskete yazmay gsterir.

Teyp ktn gsterir.

Yaplacak iler birden fazla sayda yinelenecek ise dier bir deyile i aknda evrim(dng) var ise bu sembol kullanlr.

Ak diyagramnda iki nokta aras ilikiyi gsterir.Dng sonunu gstermek iin ya da diyagramn izilemedii durumlarda kullanlr. Burada i herhangi bir sembol olabilir.

Oklar iin ak ynn gsterir.

Ak emalar ierik ve biimlerine gre genel olarak grupta snflandrlabilirler. DORUSAL AKI EMALARI aklar,giri,hesaplama,k biiminde olan ak emalar bu grup kapsamna girer.

RNEK 2:ki saynn arpmnn bulunmasyla ilgili algoritma yledir.


Deikenler

A:Birinci sayy,

B:kinci sayy,

C:ki saynn arpmn(A*B)gstersin.


Algoritma

Adm 1-Bala Adm 2-A'y oku Adm 3-B'yi oku Adm 4-C=A*B yi hesapla Adm 5-C'yi yaz Adm 6-Dur
Ak emas

Algoritma admlarnda kullanlmas gereken semboller yukardaki ekilde grlmektedir. rnein "DUR" ve "BALA" ilemleri iin ayn sembol kullanlmaktadr. Adm 2 ve 3 iin kullanlan sembol,bilgisayara deerlerin dardan girildiini gsterir.Oklar ise iin ak ynn gsterir. Adm 4'te kullanlan sembol C=A*B gibi aritmetik ilemler ilemler iin kullanlr.

rnek 3:ki saynn farkn ve blmn bulup yazc ile yazan algoritma ve ak emas yledir.
Deikenler

A:Birinci say

B:kinci say

D:ki saynn farkn (A-B)

E:ki saynn blmn(A-B)


Algoritma

Adm 1-Bala

Adm 2-A'y oku

Adm 3-B'yi oku

Adm 4-D=A-B

Adm 5-E=A/B

Adm 6-D'yi yaz

Adm 7-E'yi yaz

Adm 8-Dur

Ak emas

RNEK 4:ki saynn toplamlarnn karesini ve kpnn hesaplayp yazan ak emas yledir.

10

Deikenler

BIRSA:Birinci sayy,

IKISA:kinci sayy,

TO:Toplam,

TOKA:Toplamn karesini,

TO3:Toplamn kpn gsterir.

Algoritma

Adm 1-Bala

Adm 2-BIRSA.ve IKISA'y oku

Adm 3-TO=BIRSA+IKISA

TOKA=TO^2

TO^3

Adm 4-TOKA,TO3' yaz

Adm 5-DUR
Ak emas

11

RNEK 5:Terminalden okunan bir saynn 10 fazla ve 10 eksiini bulup yazan programn algoritma ve ak emas yledir.
Deikenler

SAYI=Okunacak say

F10=Saynn 10 fazlas

E10=Saynn 10 eksiini gstersin.


Algoritma

Adm 1-Bala

Adm 2-Terminalden SAYI oku

Adm 3-F10=SAYI+10

12

Adm 4-E10=SAYI-10

Adm 5-DUR
Ak emas

MANTIKSAL AKI EMALARI Geni lde mantksal kararlar ieren ak emalardr.Hesap dzenleri genellikle basittir.

RNEK 6:A ve B gibi iki saydan byn printerle yazdran algoritma ve ak emas yledir.
Algoritma

Adm 1-Bala

Adm 2-A,B'yi oku

Adm 3-A=B ise Adm 7'ye git

Adm 4-A>B ise Adm 6'ya git

13

Adm 5-B'yi yaz Adm 8'e git

Adm 6-A'y yaz Adm 8'e git

Adm 7-"A veB eit"mesajn yaz

Adm 8-DUR
Ak emas

RNEK 7:100 kiilik bir snfta 18-22 aras her ya grubunda bulunduunu belirleyip yazan programn ak izelgesi yledir.
Deikenler

ka rencinin

OSA:renci saysn,

I18:18 yanda olan rencilerin saysn

I19:19 yanda olan rencilerin saysn

I20:20 yanda olan rencilerin saysn

I21:21 yanda olan rencilerin saysn

I22:22 yanda olan rencilerin saysn

14

IYOS:lem yaplan renci sayan gstersin.

Algoritma

Adm 1-Bala Adm 2-I18=0 I19=0 I20=0 I21=0 I22=0 IYOS=0 Adm 3-OSA oku Adm 4-OSA=18 ise I18'i arttr, Adm 9'a git Adm 5-OSA=19 ise I19'u arttr, Adm 9'a git Adm 6-OSA=20 ise I20'yi arttr,Adm 9'a git Adm 7-OSA=21 ise I21'i arttr,ADm 9'a git Adm 8-OSA=22 ise I22'Y arttr,Adm 9'a git Adm 9-IYOS<100 ise Adm 3'e git Adm 10-I18,I19,I20,I21,I22,yaz Adm 11-DUR
Ak emas

15

YNEL (TERATF,EVRML,DNGL)AKI EMALARI Sorunun zm iin,zmde yer alan herhangi bir adm ya da aamann birden fazla kullanld ak emalarna denir. aklar genel olarak giri ya da balang deeri verme,hesaplama,kontrol biiminde olmaktadr.

RNEK 7:100 kiilik bir snfta 18-22 aras her ya grubunda bulunduunu belirleyip yazan programn ak izelgesi yledir.
Deikenler

ka rencinin

ONOT:rencinin notunu, INOT:Notlarn toplamn, NORT:Notlarn ortalamasn, ISAYI:renci saysn gstersin.


Algoritma

Adm 1-Bala

16

Adm 2-INOT=0

Adm 3-ISAYI=0

Adm 4-ONOT oku

Adm 5-INOT=INOT+ONOT

Adm 6-ISAYI=ISAIY+1

Adm 7-ISAYI<3ise Adm 4'e git

Adm 8-NORT=INOT/3

Adm 9-NORT YAZ

Adm 10-DUR

Grld gibi, Adm 2 ve 3'te INOT ve ISAYI ismi ile iki deiken iin bellekte yer ayrlm,ayrlan yerlerede ilk deer olarak sfr atanmtr. Adm 4'te herhangi bir rencinin snavdan alm olduu notun deeri okutulmaktadr. Adm 5'tenotlarn toplamnn bulunmas ilemi yer almaktadr.lemde ONOT,INOT ile toplanmakta ve bulunantoplamda INOT'a aktarlmaktadr. Adm 6'da renci saysn gsteren ISAYI deikeninin deeri,"bir renci iin ilem yapld"anlamnda 1 arttrlmaktadr. Adm 7'de ISAYI'nn deeri 3(toplam renci says) ile karlatrlmaktadr.Eer say<3 ise Adm 4'e dnlmektedir.Eer ilem 3 renci iinde yaplmsa yani ISAYI=3 ise ya da ISAYI>3 ise ortalamann hesapland Adm 8'e geilmektedir.Adm 9 da,bulunan ortalamann yazlmas ile ilgilidir.

Ak emas

17

Ak emas incelendiinde not okuma, toplam hesaplama ve renci saysn 1 arttrma ilemlerinin 3 kez tekrarland anlalmaktadr.Eer program 500 renci iin yaplm olsayd,sz edilen ilemler 500 kez tekrarlanacakt. rencinin notlarnn, sras ile 50,60 ve 70 olduunu varsayalm.Bu durumda ak emasnn ilemesi yle olacaktr
Ak emas

Balangta INOT veISAYI "0" deerini alrlar.Bilgisayara ilk not olarak 50 okutulur.Balangta INOT=0 olduu iin INOT ile 50 toplanr ve sonu INOT'a aktarlr.Dolaysyla INOT'un yeni deeri 50 olur.Daha sonra ISAYI'nn deeri INOT'ta olduu gibi 1 arttrlr.ISAYI=1 olduu iin 3 ile karlatrma yapldnda tekrar okuma ilemine geri dnlr ve ikinci not olarak60 okutulur.lemler bu ekilde devam eder.ISAYI=3 olunca ortalamann hesaplamasna geilir.Son olarak bulunan ortalama yazlr ve durulur. Ayn sorun yineleme sembol kullanlarak yle yazlabilir.

18

Ak emas

RNEK 9: N saysn ekrandan okutarak faktriyelini hesaplayan ve yazan ak emas yledir.


Deikenler

NFAK=N faktriyel (N!) deerini,

ISAYI=1'den N'e kadarsaylar gstersin,

NFAK=1*2*......*N
Algoritma

Adm 1-Bala

Adm 2-N'i ekrandan oku

Adm 3-NFAK=1

Adm 4-ISAYI=1

Adm 5-ISAYI=ISAYI+1

19

Adm 6-NFAK=NFAK*ISAYI

Adm 7-Eer ISAYIAdm 8-NFAK yaz

Adm 9-Dur
Ak em as

Ayn soru yineleme sembol kullanlarak aadaki gibi de izilebilir.

RNEK 9:Klavyeden girilen,bir rencinin numarasn,ismini ve bilgisayar programlama dersinin 3 vize snavndan ald notlar okuyan,bu notlarn aritmetik ortalamasn bulan,eer ortalamas 50'ye eit veya 50'den bykse yazcya numara,isim,notlar ve vize notlarnn ortalamasn,kkse numara,isim ve "tekrar" mesaj yazan programn algoritma ve ak emas u ekildedir.
Deikenler

INO:rencinin numarasn, AD:rencinin ismini, VIZE1:1.vize snavn, VIZE2:2.vize snavn, VIZE3:3.vize snavn,

20

VIZORT: vize snavnn aritmetik ortalamasn, VIZTO: vizenin toplamn gstersin.


Algoritma

Adm 1-Bala Adm 2-INO,AD,VIZE1,VIZE2,VIZE3,oku Adm 3-VIZTO=(VIZE1+VIZE2+VIZE3) ve VIZORT=VIZTO/3 bul. Adm 4-Eer VIZORT>=50 ise Adm 6'ya git. Adm 5-INO,AD ve "TEKRAR" yaz ve Adm 7'ye git. Adm 6-INO,AD,VIZE1,VIZE2,VIZE3,VIZORT yaz Adm 7-DUR
Ak em as

RNEK 10:Bir okulda bulunan 10 snftaki 30'ar rencinin herbirinin 12 er dersten aldklar notlarn ortalamasn bulan ve renci ismi ile not ortalamasn yazan programn,algoritmas ve ak emas yledir:

21

Deikenler

ISS:Snf sayac,

IOS:renci sayac,

DN:Ders notu,

DNS:Ders notu sayac,

DNT:Ders notlarnn toplam,

DNO:Ders notlarnn ortalamas,

OGAD:rencinin ad
Algoritma

Adm 1-Bala

Adm 2-SS=0

Adm 3-IOS=0

Adm 4-DNS=DNT=0

Adm 5-OGAD oku

Adm 6-DN oku

Adm 7-DNS=DNS+1(ders notu sayac 1 artr.

Adm 8-DNT=DNT+DN(notlar topla)

Adm 9-Eer DNS<12 ise adm 6'ya git

22

Adm 10-DNO=DNT/12(ortalamay hesapla)

Adm 11-OGAD,DNO yaz

Adm 12-IOS=IOS+1(renci sayacn bir artr)

Adm 13-Eer IOS<30 ise adm 4'e git

Adm 14-ISS=ISS+1(snf sayacn bir artr)

Adm 15-Eer ISS<10 ise adm 3'e git.

Adm 16-Dur
Ak em as

RNEK 11:300 elemanl bir veri grubunda bulunan pozitif,sfr ve negatif deerlerin saysn bulup yazan programn algoritmas ve ak emas yledir:

23

Deikenler

SS:Okunan say adedi

PSS:pozitif say adedi

NSS:Negatif say adedi

SSS:Sfr say adedi


Algoritma

Adm 1-Bala

Adm 2-SS=PSS=NSS=SSS=0

Adm 3-Say oku

Adm 4-SS=SS+1

Adm 5-Eer SS>300 ise dur

Adm 6-Eer say<0 ise adm 9'a git

Adm 7-Eer say=0 ise adm 10'a git

Adm 8-PSS=PSS+1 hesapla,adm 3'e git

Adm 9-NSS=NSS+1 hesapla,adm 3'e git

Adm 10-SSS=SSS+1 hesapla,adm 3'e git

Ak em as

24

RNEK 12:Bir snfta bulunan belirsiz saydaki rencilerin numarasn,adn ve soyadn yazan programn algoritmas ve ak emas yledir.
Deikenler

JNO:rencinin numaras

AD:rencinin ad

SAD:rencinin soyad

25

Algoritma

Adm 1-Bala

Adm 2-Eer okuma bittiyse Adm 6'ya git

Adm 3-JNO,AD,SAD oku

Adm 4-JNO,AD,SAD yaz

Adm 5-Adm 2'ye git

Adm 6-Dur
Ak em as

26

You might also like