You are on page 1of 48

PROBLEM ZME

(PROBLEM SOLVING)

Algoritma Temelleri

Kaynak: ALGORTMA VE PROGRAMLAMAYA GR Prof.Dr.Mustafa ERGN


Tasarm deiiklikleri ve ierikte eklemedzeltme/gncellemeler (Bkz. Kaynaklar)

(Dr. Enis KARAARSLAN)

Bilgisayar, sadece programcnn kendisine syledii eyi nasl yapacan bilir. Bundan dolay programc bilgisayara problemi nasl zeceini bildirmelidir.

Bilgisayara nasl i yaptracak, nasl iletiim kuracaksnz? Bir Program ile. Bilgisayarlar program olmadan almazlar. Bilgisayarla, bir mantk araclyla iletiim kurabiliriz. Bu da algoritma (talimat, rutin, reete) ile olur.

Program yazma, zlm bir problemin bir bilgisayar dili ile kodlarn yazmaktr (kodlama). Bu, en son itir.

Kodlamadan nce ALGORTMA yazlmaldr.

Problem zme dngs


(Problem Solving Cycle)

1. Problemi anlama

(Understanding, Analyzing),

2. Bir zm yolu gelitirme

(Designing), (Writing),

3. Algoritma ve program yazma 4. Tekrar tekrar test etme

(Reviewing)

Polya, George (1957) How To Solve It, Princeton University Press, 2nd Edition

Problem zmenin Admlar


1. Gereken Analizi (Requirements Analysis): Problemi btn boyutlar ile tanma ve ne yaplmas istendiini net olarak anlama, problem zlebilir mi? 2. Tasarm (Design): Bir zm yolu gelitirme ve algoritmasn yazma.
3. Uygulama (Implementation): zm algoritmasn uygun bir program diline evirme

4. Test etme, hatalardan ayklama, kurma ve bakmn yapma (Testing, debugging, installing and maintenance)

Elinde bulunan veriler (Girdi-Input) Sonunda elde edilmek istenen (kt-Output) Girdileri hedeflenen ktya dntrecek ilem (process) belirlenir

rnek: 2 saatte 190 km yol alan arabann ortalama hz nedir? Output: saatte ortalama hz Input: gidilen mesafe ve sre Process: orthz = mesafe/sre

Problem zme olgusunun grafiksel gsterimi


Girdi
(Input) lem

kt
(Output)

(Processing)

Girdi-lem-kt trne en iyi rnekler yemek tarifleridir. Malzemeler ve miktarlar, hazrlama piirme ve sonunda istenen yemek!

Algoritma

Algoritma (el-Harizmi teknii Algorithm)


Bir problemin zm admlarnn (ilemlerin) belirlemesi El-Harizmi.
Kitab el-cebr vel-mukabele (Cebir denklemlerini zmenin kurallar)

Algoritma

Algoritma, matematikte ve bilgisayar biliminde bir ii yapmak iin tanmlanan, bir balang durumundan baladnda, aka belirlenmi bir son durumunda sonlanan, sonlu ilemler (admlar) kmesidir. http://tr.wikipedia.org/wiki/Algoritma

Algoritmann Salamas Gereken Kriterler

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.

Kullancnn girdii drt saynn ortalamasn grntleyen algoritma


1. 2. 3. 4.

5.
6.

7. 8.

9.

Bala Saya = 0 (Saya'n ilk deeri 0 olsun) Sayy kullancdan al Toplam = Toplam + Say (Toplama sayy ekle) Saya = Saya + 1 (Saya'a 1 ekle) Saya < 4 ise 3. adma git. (Eer saya 4'ten kkse 3.adma git.) Ortalama = Toplam / 4 (Ortalama iin Toplam 4'e bl) Ortalama deerini ekrana yazdr. Dur

Algoritma
Algoritma sadece bilgisayar programlamada kullanlmaz.
Bir fabrika retiminin algoritmas, bir bro alma dzeninin algoritmas, bir planl gezinin algoritmas...

ay Yapma Algoritmas
1-Bala 2-aydanla Su Doldur. 3-aydanl Ocaa Koy. 4-Su kaynad m?(Hayr ise 4.Adm tekrardan sor.) 5-ay Demle(Yani demlikteki ayn iine kaynam su kat) 6-ay Demlendi mi?(Hayr ise 6.Adm tekrardan sor.) 7-Bitir

Algoritma Gsterim ekilleri


Ak diyagram (Flowcharts): Bir ii yapan mantksal admlar ve admlar aras geilerin grafiksel gsterimi. Szde kod / Satr algoritma (Pseudocode): Programn ana hatlarn ve admlarn gsteren ksa komutlar. Sradzeni grafii (Hierarchy charts): Programn farkl paralarnn birbirleriyle ilikilerini gsterir.
Bunlar, kullanlacak programlama dilinden bamszdr..

Ak diyagram iaretleri
Balama / Bitirme Balama / Bitirme

Yazma

Balant

Okuma Data

Dng Elle ilem Elle veri girii Dier


Bilgi gsterme

Aritmetik, mantk ilemi art KararVer me

Gidi yn

Bl ve Ynet Metodu
ok byk problemleri paralara ayrarak daha kolay zeriz. zlecek kadar klttlen paralar mantkl bir sraya koyulur. Her para, ayr modller olarak zlr ve birbirine balanr (integration)

fade yaplar
Sral (Sequence) yaplar ilem hi satr atlamadan dorusal bir sra ile olur Karar (Decision) yaplar inde evet-hayr sorular soran ve cevaba gre farkl ynde farkl ilem yapan yaplar Eer koul doruysa bunu yap Koul salanmyorsa unu yap ( if then else)

fade yaplar

Dng (Looping) yaplar Bir art gerekleinceye kadar tekrar tekrar yaplan ilemler. rnek:
100 adet say girilinceye kadar Ortalama deer 80 oluncaya kadar
( for, while .. Vb)

Szde Kod rnek 1


Ak diyagram Bala

ki say al

Program: Girilen iki saynn tek ve ift olduunu belirleyip yazma Pseudocode ki Say Al Eer say ift ise ift yaz Deilse (say tek ise) Tek yaz

Hayr

Say ift mi?

Evet

TEK
YAZ

FT
YAZ

Biti

Genel tler
Ak diyagramlar hazrlanmas zaman alc ve gncellenmesi zordur. Programlama eitiminde mantksal ak vermekte kullanlr, Profesyonel programclar szde kodlama ve eitli yazlm mhendislii yntemlerini tercih ederler.

Szde Kod (Pseudo Code)

Gerek kodlar yazlmadan nce taslak szde kodlarla oluturulur. Ayrntlara girilmeden, her programlama diline uygun bir yazmdr. rnein mili kilometreye dntren szde kod:

Input Miles Kilometers = Miles * 1.609 Output Kilometers

Deikenler

Programda verileri tutmak iin kullanlan en basit veri yaplardr. rn: x, y, sayac, toplam Deikenlere deer atanr X = 5 ( x deikenine 5 deerini ata)

RNEKLER

1. Klavyeden Girilen ki Saynn Toplamn Bulan Prog

rnein klavyeden girilen iki saynn toplamn bulan ve sonucu ekrana yazdran programn algoritmas ve ak diyagram istenseydi. Deikenler
birinci say: x ikinci say :y iki saynn toplam:toplam

Algoritma

Adm 1 :Bala Adm 2:Birinci sayy oku ve x deikenine aktar. Adm 3:ikinci sayy oku ve y deikenine aktar. Adm 4:x ve y saylarn topla sonucu toplam deikenine aktar. Adm 5:Toplam deerini ekrana yazdr. Adm 6:Dur

2. Baba oul ya problemi

Bir baba ve olunun yalar farkn bulan programn algoritmasn ve ak diyagramn tasarlaynz. Deikenler
babann ya: b olunun ya: o yalar fark: fark

Algoritma

Adm Adm Adm Adm Adm Adm

1: 2: 3: 4: 5: 6:

Bala Babann yan gir.(b) Olunun yan gir.(o) fark=b-0 ilemini yap fark deikenini ekrana yaz. Bitir

3. Girilen 2 saydan byk olan ekrana yazdran program

Girilen iki saydan byk olan ekrana yazdran program

Deikenler
lk say: x kinci say: y

Algoritma

Adm 1: Bala Adm 2:Birinci sayy kullancdan al.(x) Adm 3:kinci sayy kullancdan al.(y) Adm 4:Eer x>y ise ekrana 1. say byktr yaz. Adm 7ye git. Adm 5:Eer y>x ise ekrana 2. say byktr yaz. Adm 7ye git. Adm 6:Ekrana saylar birbirine eittir yaz. Adm 7:Bitir

4. Girilen bir saynn tek mi ift mi olduunu tespit eden prog

Bir saynn 2 ye blnd zaman 0 kalann verirse say ift 1 kalann verirse say tek olduu bilgisini hatrlatmamz lazm. 5 says tek mi ift mi? 5 i 2 ye blersek kalan 1 - Tek 18 says tek mi ift mi ? 18 i 2 ye blersek kalan 0 ift

Bilgiler

Bir saynn blmden kalann bulan matematiksel bir fonksiyon mevcuttur. Birok programlama dilinde de bu fonksiyon tanmlanmtr. Mod fonksiyonu: 6 mod 2 (6nn 2 ye blmnden kalan verir)

Algoritmas

Adm 1:Bala Adm 2:Herhangi bir say giriniz.(x) Adm 3:Eer x mod 2 =0 ise ekrana ift yaz deilse tek yaz. Adm 4:Bitir

5. Suyun Halleri

Girilen scaklk deerine gre bir suyun kat, sv ve gaz olma durumunu gsteren programn algoritmasn ve ak emasn tasarlaynz.

Bilgiler

imdi soruyu zmeden nce kimya konularn biraz hatrlayalm.


Su sfr derecenin altnda kat, 0-100 derece arasnda ise sv, 100 dereceden fazla ise gaz halinde bulunur.

Dolays ile bu soruda kullanc su scakln girdikten sonra belirli karlatrmalar yaparak karar vermemiz lazm.

Algoritma

Adm 1:Bala Adm 2:Scaklk deerini giriniz.(t) Adm 3: Eer t<0 ise Ekrana kat yaz. Adm 5e git. Adm 4: Eer t>0 ve t<100 ise ekrana sv yaz deilse gaz yaz. Adm 5: Bitir.

6. lk 100 saynn Toplam


1.

2.

3. 4. 5.

6. 7.
8.

Bala Sayac=1 : Toplam=0 : Aritmetik_Orta=0 Eer Sayac=100 ise Git 6 Toplam=Toplam+Sayac Sayac=Sayac+1 : Git 3 Aritmetik_Orta=Toplam/100 Aritmetik_Orta deerini yaz Dur.

Kaynaklar

http://www.dahiweb.com/algoritma-nedir http://tr.wikipedia.org/wiki/Algoritma http://www.ozgurlukicin.com/atolye/algori tma-ve-akis-diyagramlari-1/ http://cyberwarrior.org/Forum/orneklerle-algoritmave-akis-diyagrami_358092,2.cwx

Sorular?