ALGORİTMA DERS NOTLARI

  • Upload
    alper

  • View
    6.482

  • Download
    3

Embed Size (px)

DESCRIPTION

ALGORİTMA DERS NOTLARI

Citation preview

ALGORTMA DERS NOTLARIProgramlamaya 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 .

1

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 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 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 Dur

2

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 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 I750 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 DeikenlerBoyutlu 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

4

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

5

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.

6

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.

7

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-DurAk emas

8

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

9

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-DURAk 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-DURAk 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-DURAk 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-IYOS3 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 olacaktrAk 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*......*NAlgoritma

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-DurAk 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-DURAk 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 adAlgoritma

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