61
Programlama İçin Gerekli Araçlar Düzenleyici (Editor) : Komutları yazmak için gereklidirler. Not Defteri, KWrite gibi… Derleyici (Compiler): Komutları makine diline çevirir. GCC gibi… Böcek Ayıklayıcı (Debugger): Programdaki hataları bulmaya yarar. GDB, SoftIce gibi… veya Tümleşik Geliştirme Ortamı (Integrated development environment- IDE): Kapsamlı programlar yapabilmek için Düzenleyici, Derleyici, Böcek Ayıklayıcı gibi araçları bir arada barındırarak programcının işini kolaylaştırır. Eclipse, NetBeans, Dev-C++, Microsoft Visual Studio gibi… Tümleşik Geliştirme Ortamları ile İlgili Bir Karşılaştırma için tıklayınız… Yorum bırakın Filed under Algoritma 03 ŞUBAT 2012 · 20:04 Toplama Algoritmaları Örnek 1 klavyeden girilen 10 adet sayının toplanması… Problemin çözümünde kullanılacak sayaç değişkeni 1 den başlayıp her okumadan sonra 1 artacaktır. Bu arada okunan sayı daha önceki sayıların toplamı üzerine eklenecektir. “Toplam” değişkenimiz başlangıçta 0 değerini alacak ki hatalı işlem yapılmamış olsun. Sayaç değerinin 10 olması durumunda toplam değerin ekrana yazdırılması kalıyor geriye… Değişkenler sayı= girilecek 10 sayıdan herhangi biri i=1 den 10 a kadar değer alabilen sayaç toplam= girilen sayıların toplamı Algoritma Adım 1: Başla Adım 2: "toplam" değişkenine 0 ata Adım 3: i= 1,10 şeklinde bir döngü tanımla

hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Embed Size (px)

Citation preview

Page 1: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Programlama İçin Gerekli   Araçlar Düzenleyici (Editor) : Komutları yazmak için gereklidirler.Not Defteri, KWrite gibi…

Derleyici (Compiler): Komutları makine diline çevirir.GCC gibi…

Böcek Ayıklayıcı (Debugger): Programdaki hataları bulmaya yarar.GDB, SoftIce gibi…

veyaTümleşik Geliştirme Ortamı (Integrated development environment-IDE): Kapsamlı programlar yapabilmek için Düzenleyici, Derleyici, Böcek Ayıklayıcı gibi araçları bir arada barındırarak programcının işini kolaylaştırır.Eclipse, NetBeans, Dev-C++, Microsoft Visual Studio gibi…

Tümleşik Geliştirme Ortamları ile İlgili Bir Karşılaştırma için  tıklayınız… Yorum bırakınFiled under Algoritma

03 ŞUBAT 2012 · 20:04

Toplama AlgoritmalarıÖrnek 1klavyeden girilen 10 adet sayının toplanması…

Problemin çözümünde kullanılacak sayaç değişkeni 1 den başlayıp her okumadan sonra 1 artacaktır. Bu arada okunan sayı daha önceki sayıların toplamı üzerine eklenecektir. “Toplam” değişkenimiz başlangıçta 0 değerini alacak ki hatalı işlem yapılmamış olsun. Sayaç değerinin 10 olması durumunda toplam değerin ekrana yazdırılması kalıyor geriye…

Değişkenlersayı= girilecek 10 sayıdan herhangi birii=1 den 10 a kadar değer alabilen sayaçtoplam= girilen sayıların toplamı

AlgoritmaAdım 1: BaşlaAdım 2: "toplam" değişkenine 0 ataAdım 3: i= 1,10 şeklinde bir döngü tanımla Adım 3.1: sayı oku Adım 3.2: okunan sayıyı toplama ekleAdım 4: toplamı yazdırAdım 5: Dur

Akış Şeması

Page 2: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

*yukarıdaki algoritmada sayaç, 1 den başlayıp 10 a kadarsayacaktır...

*eğer bu algoritmayı gizli döngü oluşturarak yapmak isteseydik akış şeması aşağıdaki gibi olacaktı...

Page 3: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Örnek 2klavyeden girilecek N adet sayının toplanması…

bu örneğin bir önceki örnekten farkı N değerinin başlangıçta okunması ve döngünün 10’a kadar değil N e kadar olmasıdır…

Akış Şeması

Page 4: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

2 YorumFiled under Algoritma

03 ŞUBAT 2012 · 00:10

En Büyük En Küçük Değer Bulma   Algoritmaları Örnek 1Klavyeden girilen 3 sayıdan en büyük sayıyı bulan programın algoritması…

Değişkenler

a= birinci sayıb= ikinci sayıc= üçüncü sayımax = en büyük değer

Algoritma 1

Adım 1: BaşlaAdım 2: a okuAdım 3: b okuAdım 4: c oku.Adım 5: a>=b ve a>=c ise a yı max değer ata ve 8. adıma geç.Adım 6: b>= a ve b>=c ise b yi max değer ata ve 8. adıma geç.Adım 7: c yi max değer ata ve 8. adıma geç.Adım 8: max değerini yazdır.Adım 9: Bitir.

not: aynı anda bir kaç koşul sınamak bilgisayar programında

Page 5: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

performans düşüklüğüne sebep olabilir. (a>=b ve a>=c gibi)bu nedenle en büyük değeri ararken koşulları tek tek vermekdaha doğru olacaktır. bu durumu dikkate alan diğer algoritmaşöyle:

Algoritma 2

Adım 1: BaşlaAdım 2: a okuAdım 3: b okuAdım 4: c okuAdım 5: a>=b ise 8. adıma geçAdım 6: b>=c ise b yi max değişkenine ata 10. adıma geç.Adım 7: c değerini max değişkenine ata ve adım 10 a geç.Adım 8: a>=c ise a yı max değişkenine ata ve adım 10 a geç.Adım 9: c değerini max değişkenine ata. adım 10 a geç.Adım 10: max değerini yazdır.Adım 11: Bitir.

Akış Şeması 1

Page 6: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Akış Şeması 2

 

 *not: eğer problem üç sayıdan en küçüğünü bulmak olsaydı evet hayırların yerini değiştirmek yeterli olacaktı.

*not2: eğer problem 4 sayıdan veya 15 sayıdan en büyüğünü ya da en küçüğünü bulmak olsaydı, daha önce geliştirilen algoritma mantığı yetersiz kalacaktı. çünkü böyle bir durumda 4 veya 15 adet değişken ismi ve bir sürü ikili karşılaştırmalar kullanmamız gerekecekti. bu durumda hem algoritma çok büyüyecekti hem de karmaşık bir hal alacaktı. hele hele 5000 sayı söz konusu olsaydı durum içinden çıkılamaz hala gelecekti…

bu nedenle en büyük ve en küçük değer bulma probleminin algoritmasına çok daha farklı yaklaşmamız gerekmektedir. burada çözüm bulmamız gereken en önemli konu; “sayı adedi kadar     değişken” kullanımının önüne geçmek olmalıdır.

Page 7: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

bu sorunu çözmenin en uygun yöntemi ilk girilen sayıyı en büyük veya en küçük kabul etmek, daha sonra okunan her bir sayıyı en büyük veya en küçük kabul edilen sayı ile karşılaştırarak gerektiğinden bu son okunan sayıyı en büyük veya en küçük sayı olarak kullanmaktır.

bir döngü içinde okunan tüm sayılar için bu işlemin tekrarlanması gerekmektedir. yani bir döngü içinde, bir sayının okunup bu sayının en küçük veya en büyük olanla karşılaştırılması gerekmektedir.

bu durumu diğer örnekte üç sayıdan en büyüğünü bulan algoritma için uygulayacağız…

Örnek 2Klavyeden girilen 100 sayıdan en büyüğünü bulan algoritma…

Değişkenlersayac= okunan sayı adedini bilmek içinsayı = okunan 100 sayıdan herhangi birienb= yeni bir sayı okunana kadarki en büyük sayı...

Algoritma

Adım 1: BaşlaAdım 2: ilk sayıyı okuAdım 3: okunan ilk sayıyı en büyük kabul etAdım 4: sayaç değişkenine 1 değeri ata (1 sayı okunduğu için)Adım 5: yeni bir sayı okuAdım 6: okunan sayı daha önceki enbüyükten (enb) daha büyük ise enb değişkenine son okunan sayıyı ata.Adım 7: sayaç değerini bir artır.

Page 8: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Adım 8: sayaç değerini kontrol et. değer 100 den küçük ise adım 5 git.Adım 9: enb yi yazdırAdım 10: Bitir.

Akış Şeması

Örnek 3Klavyeden girilecek N adet sayıdan en büyüğünün bulunması…

Değişkenlersayacsayıenb

Algoritma Adım 1: BaşlaAdım 2: toplam olarak kaç sayı girileceğini gir. (N)Adım 3: ilk sayıyı okuAdım 4: okunan ilk sayıyı en büyük kabul et.Adım 5: sayaç değişkenine 1 ata.Adım 6: yeni bir sayı oku.Adım 7: okunan sayı daha önceki en büyükten daha büyük ise enb değişkenine son okunan sayıyı ataAdım 8: sayaç değerini 1 artır.Adım 9: sayaç değerini kontrol et. N den küçük ise Adım 5 e git.Adım 10: enb yi yazdır.Adım 11: Bitir.

Akış Şeması

Page 9: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

 

şimdiye kadar yaptığımız akış şemalarında gizli bir döngü oluşturduk. çoğu zaman döngünün açıkça belirtilmesinde fayda vardır. bu amaçla bir önceki algoritma aşağıdaki akış şemasında  döngü sembolü  kullanılarak gösterilecektir.Akış Şeması (n kadar sayıdan en büyük olanını bulma)

Page 10: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

döngünün anlamı: sayaç ikiden başlayıp n e kadar devam edecek.

2 den başlıyor çünkü birinci sayı zaten girilmiş oldu sayaca gelene kadar…

4 YorumFiled under Algoritma

31 OCAK 2012 · 22:53

Basit Algoritma Örnekleri   2 Örnek 1Bir öğrencinin dönem içerisinde aldığı bir dersten hangi harf notunu aldığını hesaplatan algoritma…

Öğrenci bir dersten 2 ara sınav, 1 final ve 1 de proje notu almaktadır. ara sınavların her biri % 10, proje %20 ve final % 60 değer taşımaktadır. algoritma, klavyeden girilen sınav  ve proje notlarını okuduktan sonra yüzdelik hesaplamaları yaparak hangi harf notuna karşılık düştüğünü bulacak ve ekrana yazdıracaktır. (85-100 A, 70-84 B, 55-69 C, 45-54 D, 25-44 E, 0-24 F)

Koşul: Klavyeden girilen notların 0-100 arasında olması gerekmektedir.

Değişkenler

as1 : ara sınav 1

Page 11: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

as2 : ara sınav 2f : finalp : projenot : nothnot : notun harf cinsinden değeri

-----------------Algoritma

Adım 1: BaşlaAdım 2: as1 oku Adım 2.1: as1 0-100 arasında ise 3. adıma geç değil ise adım 2 ye dön.Adım 3: as2 oku Adım 3.1: as2 0-100 arasında ise 4. adıma geç değil ise 3. adıma dön.Adım 4: f oku Adım 4.1: f 0-100 arasında ise 5. adıma geç değil ise 4. adıma dön.Adım 5: p oku Adım 5.1: p 0-100 arasında ise 6. adıma geç değil ise 5. adıma dön.Adım 6: not hesapla (as1*0,1 + as2*0,1 + f*0,6 + p*0,2)Adım 7: not 85 >= ise hnot A. 13. adıma git.Adım 8: not 70 >= ise hnot B. 13 e git.Adım 9: not 55 >= ise hnot C. 13 e git.Adım 10: not 45 >= ise hnot D. 13 e git.Adım 11:not 25 >= ise hnot E. 13 e git.Adım 12: not 24 <= ise hnot F. 13 e git.Adım 13: hnotu ekrana yazdır.Adım 14: Bitir.

--------------------

Akış Şeması

Page 13: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Örnek 2girilen bir sayının faktoriyelini alan programın algoritması…

Örnek 3kuruma yüksek lisans için başvuran öğrencinin hangi şartlarda kabul göreceğini, hangi şartlarda kabul görmeyeceğini tespit eden algoritma…

şartlar:

*öğrenci ALES sınavını girmiş ve en az 60 puan almış olmalı

*başvurulan bölümün ingilizce ise ÜDS ya da KPDS sınavından en az 60 puan almış olmalı

*başvurulan program türkçe ise ÜDS ya da KPDS sınavlarından

*bu şartlar sağlanırsa üniversitenin yapacağı giriş sınavından en az 60 puan almış olması

DeğişkenlerALES=ALESÜDS=ÜDSKPDS=KPDSGiriş Sınavı = Üniversitenin yaptığı giriş sınavıİ= ingilizce*başvurulan yüksek lisansın türkçe mi ingilizce mi olduğunu anlamak içinkullanıcıdan 1 ya da 0 değerini girmesini isteyeceğiz.------------------Algoritma

Adım 1: BaşlaAdım 2: ALES, ÜDS, KPDS değişkenlerini girAdım 3: ALES puanını kontrol et. Adım 3.1: ALES >= 60 değil ise adım 10 a git.Adım 4: başvurulan lisans ingilizce ise 1, değilse 0 değeri gir.Adım 5: Başvurulan lisans ingilizce mi kontrol et. Adım 5.1: Eğer ingilizce ise ÜDS ve KPDS puanlarını kontrol et. Adım 5.1.1: ÜDS veya KPDS puanlarından biri 60 altında ise adım 10 a git. Adım 5.2: Eğer ingilizce değil ise ÜDS ve KPDS puanlarını kontrol et. Adım 5.2.1: eğer ÜDS veya KPDS puanlarından biri 30 altında ise adım 10 a git.Adım 6: giriş sınavı değerini gir. alınan notu kontrol et. Adım 6.1: alınan not 60 dan büyük değil ise adım 10 a git.Adım 7: yönetim kurulu kararı.Adım 8: Başvuru kabul görmüştür.Adım 9: BitirAdım 10: başvuru kabul görmemiştir.Adım 11: bitir.

Akış Şeması

Page 14: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Yorum bırakınFiled under Algoritma

28 OCAK 2012 · 22:08

Basit Algoritma Örnekleri   1 Örnek 1İki sayının farkını ve bölümünü bulup ekrana yazdıran algoritma…

————————-

DeğişkenlerA:Birinci sayı

B:İkinci sayı

D:İki sayının farkını (A-B)

E:İki sayının bölümünü(A/B)

-------------------------

Page 15: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Algoritma

Adım 1-BaşlaAdım 2-A'yı okuAdım 3-B'yi okuAdım 4-D=A-BAdım 5-E=A/BAdım 6-D'yi yazAdım 7-E'yi yazAdım 8-Dur

-------------------------

Akış Şeması

 

Örnek 2Klavyeden girilen üç sayıyı toplayan ve ortalamasını alıp sonuçları ekrana yazdıran algoritma…

Değişkenler

x= birinci sayıy=ikinci sayız= üçüncü sayıtop = sayıların toplamıort= sayıların ortalaması

Page 16: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

-------------------------

Algoritma

Adım 1: BaşlaAdım 2: X okuAdım 3: Y okuAdım 4: Z okuAdım 5: top = x+y+zAdım 6: ort = top / 3Adım 7: toplamı ekrana yazdırAdım 8: ortalamayı ekrana yazdırAdım 9: Bitir-------------------------

Akış Şeması

Örnek 3Bir bakkalda ekmek, margarin ve çikolata satılmakta olsun. Kullanıcıların bu ürünlerden kaçar adet istediklerini klavyeden girmeleri ile ürünlerin birim fiyatları üzerinden ne kadar ödeme yapılması gerektiğini hesaplayan algoritma ve akış çizelgesi…

Değişkenler

ürünlerin satış fiyatı için

ef = ekmek fiyatı

Page 17: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

mf = margarin fiyatıçf = çikolata fiyatı

alınan ürün adedi için

e = ekmek miktarım = margarin miktarıc = çikolata miktarıt = toplam ücret

--------------------------

Algoritma

Adım 1: BaşlaAdım 2: Ekmeğin fiyatını oku ef ' ye aktarAdım 3: Margarin fiyatını oku mf 'ye aktarAdım 4: çikolata fiyatını oku cf'ye aktarAdım 5: satın alınan ekmek miktarını oku e ' ye aktarAdım 6: satın alınan margarin miktarını oku m ' ye aktarAdım 7: satın alınan çikolata fiyatını oku c ' ye aktarAdım 8: Ödenecek toplam ücreti hesaplat= (ef*e)+ (mf*m)+ (cf*c)Adım 9: t değerini yazdırAdım 10: Bitir.

--------------------------

Akış Şeması

Page 18: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Örnek 4Geometrik şekiller üzerinde alan ve çevre hesaplamaya çalışalım. Mesela kullanıcıdan, bir kenarının uzunluğunu aldığımız karenin alanını ve çevresini, sonra kullanıcıdan kısa ve uzun kenar ölçülerini aldığımızdikdörtgenin alan ve çevresini, son olarak da kullanıcıdan yarıçapını almış olduğumuz dairenin alan ve çevresini hesaplayan algoritma… Değişkenler

Kare için

ku = karenin bir kenar uzunluğuka = karenin alanıkc = karenin çevresi

dikdörtgen için

dku = dikdörtgenin kısa kenar uzunluğuduk = dikdörtgenin uzun kenar uzunluğuda = dikdörtgenin alanıdc = dikdörtgenin çevresi

daire için

Page 19: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

r = daire yarıçapıdal = daire alanıdcv = dairenin çevresi

--------------

Algoritma 1

Adım 1: BaşlaAdım 2: ku okuAdım 3: karenin alanını hesapla (ku*ku)Adım 4: karenin çevresini hesapla (ka*4)Adım 5: dku okuAdım 6: duk okuAdım 7: dikdörtgenin alanını hesapla (dku*duk)Adım 8: dikdörtgenin çevresini hesapla ( dku*2)+ (duk*2)Adım 9: r okuAdım 10: dikdörtgenin alanını hesaplaAdım 11: dikdörtgenin çevresini hesaplaAdım 12: ka,kc, da, dc, dal, dcv yazdırAdım 13: bitir

--------------veya önce verilerin hepsi girildikten sonra hesaplamalarageçilebilir..

Algoritma 2

Adım 1: BaşlaAdım 2: ku okuAdım 3: dku okuAdım 4: duk okuAdım 5: r okuAdım 6: karenin alanını hesapla (ku*ku)Adım 7: karenin çevresini hesapla (ku*4)Adım 8: dikdörtgenin alanını hesapla (dku*duk)Adım 9: dikdörtgenin çevresini hesapla (dku*2)+(duk*2)Adım 10: dairenin alanını hesapla (3,14*r*r)Adım 11: dairenin çevresini hesapla (2*3,14*r)Adım 12: ka, kc, da, dc, dal, dcv ekrana yazdırAdım 13: Bitir

--------------

Akış Şeması 1

Page 21: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

not: akış şeması hazırlanırken yer darlığından ötürü bazıkısaltmalara gidilebilir. mesela bu algoritmada ayrı ayrıyazdırmak yerine hepsini tek yazdırma şeması içindegösterdik. aynı şekilde verileri okuturken de ayrı ayrıokutmak yerine aynı veri şemasında okutabilirdik. ku, dku,duk ve r oku gibi...

Örnek 5Bu örnekte küçük bir ücret bordrosu yapmaya çalışacağız. Yani çalışılan gün ile günlük ücret klavyeden girildiğinde aşağıdaki kurallara göre o kişinin eline geçecek net aylık ücreti hesaplayan algoritmayı yapacağız…

Aylık brüt gelir = günlük ücret* çalışılan gün sayısı

Page 22: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Gelir vergisi = aylık brüt gelir * vergi oranı

Net aylık ücret = Aylık brüt gelir – Gelir vergisi

Kurallar:

*çalışılan gün sayısı 31 den fazla olmamalı

*gelir vergisi oranı aylık brüt gelirin % 20 si olarak uygulanmalı. Ancak aylık geliri 5000 den fazla olanlar için % 25 olarak uygulanmalı

Değişkenler

abg : aylık brüt gelirgu = günlük ücretcgs = çalışılan gün sayısıvo = vergi oranıgv = gelir vergisinau = net aylık ücret

---------------------

Algoritma

Adım 1: BaşlaAdım 2: cgs oku Adım 2.1 : Okunan sayı 31 den büyük ise Adım2 ye dön. Adım 2.2 : Okunan sayı 31 veya daha az ise okunan değeri cgs ye aktar.Adım 3: gu okuAdım 4: aylık brüt gelir hesapla (gu * cgs) Adım 4.1: abg 5000 den küçük veya eşitse vergi oranını 0.2 olarak tanımla Adım 4.2: abg 5000 den büyük ise vergi oranını 0.25 olarak tanımlaAdım 5: gelir vergisi hesapla (abg * vo)Adım 6: net aylık ücreti hesapla (abg - gv)Adım 7: net aylık ücreti yazdırAdım 8: Bitir

---------------------

Akış Şeması

Page 23: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Yorum bırakınFiled under Algoritma

12 OCAK 2012 · 22:24

Akış ŞemalarıBir önceki derste üç çeşit algoritma ifade biçimi olduğunu belirtmiştik. Bunlar:

Nassi-Shneiderman şemaları Akış şemaları Pseudo-code

Nassi-Shneiderman şemalarının hazırlanması ve güncellenmesi zaman alıcı,Pseudo-code ise herkesin kendi diline göre yazılması nedeniyle herkesçe kolay anlaşılamaması gibi olumsuz bir yönü olduğundan yaygın olarak kullanılan algoritma

Page 24: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

ifade biçimi akış şemalarıdır.  Bu şemaların yaygın olarak kullanılmasının temel nedenleri şunlardır:

Anlamı bilişim alanındaki herkesçe bilinen semboller kullanılır Hemen her sembolün programlama dilinde bir karşılığı vardır. Çok büyük algortimaların hazırlanmasına ve güncellenmesine imkan verir. Akış şeması ile program akışı daha anlaşılır ifade edilir. Akış şeması hazırlamak zaman alıcı olmasına rağmen kolaydır.

Herhangi bir akış şeması bloğu aşağıda gösterilen üç temel işlevden birine sahiptir.

Ardışık İşlem Koşula Bağlı İşlem Tekrarlı İşlem veya Döngü

Ardışık İşlemArdışık işlem, akış şemasındaki sembollerde tanımlanana işlerin sırayla ve ardışık olarak yapılmasıdır. Yani her zaman önce tanımlanmış ilk işlem,  ardından onu izleyen işlem, onun ardından bir sonraki işlem gerçekleştirilerek en son işleme kadar bu şekil gidilir.

Veriler ne olursa olsun işlem sırası değişmez.

Ardışık işlemlerde bir blokta yer alan işlem adedinin önemi yoktur.

Her işlem bir kez yerine getirilir. Herhangi bir işlemin atlanması veya işlemden vazgeçilerek başka işlemin yapılması söz konusu değildir. Örneğin yapılması gereken 4 işlem varsa ilk olarak birinci işlem yapılır, sonra ikinci, sonra üçüncü ve en son olarak dördüncü işlem yapılır.

Koşula Bağlı İşlem

Page 25: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Koşula bağlı işlemde bir koşul belirlenir ve bu koşulun sınanmasına bağlı olarak bir başka işlem bloğu ya yapılır ya yapılmaz. Koşulun sonucuna bağlı olarak genellikle iki ayrı durumdan genellikle biri uygulanır.

Koşula bağlı işlem kimi zaman if-then-else yapısı olarak da adlandırılır. Hemen hemen tüm programlama dillerinde bu yapı mevcuttur. if i bir koşul izler ve bu koşulun sınanmasının sonucu evet (E) veya hayır (H) dır. Sonuç evet isesonuçlanmada then i izleyen, hayırsa else i izleyen adım uygulanır. Örneğin; If koşul A geçerli ise then X işlemini uygula else Y işlemini uygula. bu işlem kısaca şöyle ifade edilir:

if A then X else Y

———————-

if: eğer

then: öyleyse

else: öyle değilse

—————————

Tekrarlı İşlem (Döngü)Tekrarlı işlemde bir blok tekrar tekrar uygulanır. bu blokta önceden belirlenen bir işlemin belirli miktarda yapılması olabileceği gibi koşula bağlı bir işlem de olabilir.üç çeşit tekrarlı işlem vardır: bunlar sabit sayıda tekrarlı işlem, sınamanın bloğun başında yapıldığı işlem ve sınamanın bloğun sonunda yapıldığı işlem…Programlama dillerinde sabit sayıda tekrarlar genellikle for, sınamanın bloğun başında yapıldığı tekrarlar while, snamanın bloğun sonunda yapıldığı tekrarlardo…while komutlarıyla gerçekleştirilir.

Page 27: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Akış Şeması Hazırlarken Dikkat Edilmesi Gerekenler

1. Mutlaka Başla ile başlamalı, bir yerde Dur ile durdurulmalı.

2. Akış şeması kağıdın üst kısmından başlayıp aşağı doğru çizilerek yapılmalı.

3. Akış şemasının yönü için oklar kullanılmalı.

4. Bir sayfaya en fazla yirmi akış şeması sembolü çizilmeli.

5. Birden fazla olan akış şemaları için sayfa numarası ve sayfa başlığı yazılmalı.

Akış Şeması ÖrneğiProblem: Bilinmeyen miktarda sayının toplamıÇözüm: Algoritmaların en önemli özelliği sona erebilmesidir. Bu nedenle algoritmayı sona erdirmenin bir yolunu bulmak gerekiyor. Örneğin verilen sayı sıfır olduğunda algoritma sona ersin ve elde edilen toplam yazdırılsın .Bu durumda problem şu hale gelecektir : sıfırdan farklı bilinmeyen miktarda sayının toplamının bulunması.

*Algoritmanın ilk akış şeması sembolu başlatma olacaktır. Bunun ardından ilk yapılması gereken sayılarının toplamının biriktirileceği alanın temizlenmesi, yani sıfırlanmasıdır. Örneğin toplanacak hiç bir sayı olmaması durumunda toplam sıfır olarak gösterilmelidir.

Page 28: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

*Algoritmanın sonraki aşamasında klavyeden bir sayı alınır, yani okunur. Okuma işlemi klavyeden olduğu için bu işlem için klavye sembolü kullanılır.

*Okuma işleminin ardından okunan sayının sıfır olup olmadığına bakılmalıdır. Bu amaçla denetim sembolü kullanılmalı ve okunmuş olan mevcut sayının sıfıra eşit olup olmadığı kontrol edilmelidir. Test sonucu “hayır” ise, okunmuş olan bu sayı, daha önce okunmuş olan sayıların biriktirildiği “Toplam” isimli alanın üzerine eklenmelidir. Bu ekleme işleminin ardından hemen yeni bir sayı daha okumak amacıyla akış yönü, klavyeden sayı okuma sembolüne bağlanmalıdır.

*Okunmuş olan mevcut sayının sıfıra eşitliğinin sınanmasında çıkan sonuç “evet” ile sonuçlandı ise artık okunacak sayıların bittiği sonucuna ulaşılır. Bu durumda toplamların biriktirildiği “Toplam” ın ekrana yazdırılması ve ardından işlemin sona erdirilmesi gerekmektedir.

*Ekrana yazdırmak için ekran sembolü, işlemi sona erdirmek için se sonlandırma sembolü kullanılarak algoritma bitirilir.

Sorular

Page 29: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

1. Koşula bağlı işlem programlama dillerinde aşağıdaki komutlardan hangisi ile ifade edilir.?a. forb. if-then-elsec. do-whiled. while2.  Aşağıdaki akış şemasına sırasıyla 3, 5, 7, 0, 2, 4, 2, 0  değerleri için uygulanmak istenirse ekrana yazdırılacak değer aşağıdakilerden hangisi olur?

a.15

b.17

c.21

d.23

3. Yandaki akış şemasına sırasıyla 3, 5, 7, 0, 2, 4, 2, 0 değerleri için uygulanmak istenirse ekrana yazdırılacak değer aşağıdakilerden hangisi olur?

Page 30: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

a. 23

b. 21

c. 3

d. 7

Cevaplar1. b2. a3. d

Yorum bırakınFiled under Algoritma

03 OCAK 2012 · 14:13

AlgoritmalarAlgoritma, bilgisayar ile çözülmesi istenen bir problemde, hangi işlemlerin hangi sırada yapılması gerektiğinin ifade edilmesidir.

Dikkat edilmesi gereken nokta; işlemler yapılırken, bilgisayarın bu işlemlere olumlu ya da olumsuz herhangi bir katkısının olmamasıdır. Yanlış işlem ve işlem adımlarını da bilgisayar yerine getirecektir. Bu nedenle probleme ilişkin geliştirdiğimiz çözüm yöntemi doğru olsa bile, bunu bilgisayara yönelik ifade ederken, yani algoritma geliştirirken hata yapmış isek problemin bilgisayarda çözümü de yanlış olacaktır.

Page 31: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Ayrıca bilgisayar aynı anda birden fazla işlem yapamaz. Dolayısıyla algoritma geliştirirken en küçük detaya kadar inmemiz, bilgisayarın nasıl olsa anlayacağı gibi bir yanılgıya düşmememiz gerekecektir.

Son olarak algoritma geliştirirken probleme ilişkin tüm detayları bilsek bile bu yeterli olmayabilir. “Algoritmik düşünme” konusunda deneyimli olmak da gerekir.

İlk örnek agoritmamız tek kişilik sahanda yumurta pişirme olsun. Sadece bu konuda bile birden çok algoritma geliştirilebilir…

1. tavayı ocağın üzerine koy.2. tavaya yağ koy.3. 2 yumurtayı kırıp tavaya at.4. birkaç dakika pişmeisni bekle.5. pişince ocağı söndür.6. afiyet olsun.Bu altı adımlık algoritmayı olsa olsa bir insan anlayabilir. Fakat bilgisayar için bunu detaylandırmamız gerekiyor :) Enn kısasından şöyle mesela:1- tavayı ocağın üzerine koy.1.1 tavayı bul.

1.2 tavayı bulduysan sonraki adıma geç. bulmadıysan bulana kadar 1.1 e git.

1.3 tava temiz mi?

1.4 tava temizse 1.5 e geç. temiz değilse 1.4.1 e geç.

1.4.1. tavayı temizle.

1.5. tavayı ocağın üzerine koy.

2- tavaya biraz yağ koy.2.1. yağ varsa 2.2 adıma geç. aksi durumda 2.1.1. e geç.

2.1.1. yağ almak için para var mı? para varsa 2.1.2. ye geç. para yoksa işlemi sona erdirip dur.

2.1.2. yağ satın alınana kadar bekle. yağ satın alınınca 2.2 ye geç.

2.2. yağın bir kısmını tavaya koy.

———————————————————– 

Page 32: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Algortima Özellikleri1. Anlaşılır olmalıdır. (sonradan bakıldığında da anlaşılabilmeli.sadece kendimize göre yazılmamalı)

2. Genel olmalıdır. (problemlerdeki ufak tefek değişiklikler için yeniden algoritma kurmamak için genel düşünülmeli. mesela sorun 15 adet sayının toplanması ise, biz “n”kadar sayının tolanması şeklinde düşünebilmeliyiz.)

3. Algoritma sona erebilmelidir. (hangi durumda sona ereceği mutlaka belirtilmeli.)

Ek Özelliklerbir algoritmada aşağıdaki özellikler de bulunabilir.1. ardışık işlemler2. koşula bağlı işlemler3. tekrarlanan işlemler

Algoritma İfade YöntemleriBir algoritma birçok şekilde ifade edilebilir. Hatta her problemin en az birkaç farklı algoritmasını oluşturmak mümkündür. Ayrıca bir algoritmanın, en azından programlama mesleğini icra edenlerce anlaşılabilmesi gerekmektedir. Bu nedenle algoritmaların ifade edilmelerine yönelik bazı standartlar geliştirilmiştir.

Nassi-Shnneidermann şemaları Akış şemaları Pseudo-code

SORULAR1.aşağıdakilerden hangisi algoritmanın özelliklerinden değildir?a. genel olması

Page 33: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

b. kısa olması

c. anlaşılır olması

d. sona erebilmesi

2. 100 adet öğrencinin notlarının ortalamasının bulunması konusundaki bir problem verildiğinde aşağıdakilerden hangisi algoritmanın sona erme koşulu için kullanılabilir?a. notların toplamının bulunması

b. ortalamanın elde edilmesi

c. işlem gören öğrenci sayısının 100 e ulaşması

d. yukarıdakilerin hepsi

3. Bilinmeyen sayıda öğrencinin notlarının ortalamasının bulunması konusunda bir problem verildiğinde aşağıdakilerden hangisi algoritmanın sona erme koşulu olarak kullanılabilir?a. Notlarının toplamının bulunması

b. Ortalamanın elde edilemesi

c. İşlem gören öğrenci sayısının 100 e ulaşması

d. Herhangi bir notun negatif girilmesi.

4. N sayıda öğrencinin notlarının ortalamasının bulunması konusunda bir problem verildiğinde aşağıdakilerden hangisi algoritmanın sona erme koşulu için kullanılabilir?a. Notların toplamının bulunması

b. Ortalamanın elde edilmesi

c. İşlem gören öğrenci sayısının N ‘ e ulaşması.

d. Herhangi bir notun 100 den büyük girilmesi.

5. N sayıda öğrencinin notlarının toplanması aşağıdaki algoritma yapılarından hangisine girer?a. Tekrarlanan işlemler

b. Koşula bağlı işlemler

Page 34: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

c. Ardışık işlemler

d. Yukarıdakilerin hepsi.

CEVAPLAR1.b

2.c

3. d

4. c

5.a

Yorum bırakınFiled under Algoritma

29 ARALIK 2011 · 21:27

Problem Tanımlama, Problem Çözümü İlke ve   Evreleri Problemin TanımlanmasıProblem çözüm evresinin ilk ve en önemli aşaması problemin tanımlanmasıdır. Çünkü ilk adımda yapılacak olan yanlış tüm algoritmayı etkileyecek ve sonraki adımlar doğru olsa bile temel yanlış olduğundan algoritma başarısız olacaktır.

Şu sorular sorulabilir: Problem nedir? Yapılmak istenen nedir? Başarılacak olan nedir? …

Problemle İlgili Verilerin ToplanmasıProblemin tanımlanması yapıldıktan sonra sıra probleme ilişkin tüm verilerin toplanmasına gelir. Bu aşamada probleme ilişkin tüm girdiler, girdiler üzerinde yapılan işlemler, işlemlerden sonra elde edilen çıktılar belirlenir.

Gerek girdiler, gerekse işlemlerde olabilecek her türlü özel durum ele alınmalıdır. Örneğin eğer çözüm ile sayılar elde edilecekse, ve bu sayılar her zaman sıfırdan büyük iseler, sıfırdan küçük veya sıfıra eşit sayılar için neler yapılması gerektiği belirlenmelidir.

Problemin Olası Çözümlerinin BelirlenmesiBu aşama bir bilgisayar programcısının yeteneğini ortaya koyduğu aşamadır. Bu aşamada yaratıcılık ve tecrübenin de desteğiyle birden fazla çözüm yolu

Page 35: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

geliştirilir.Eğer problem çok çok küçük değil ise probleme ilişkin her zaman için birden fazla çözüm yolu vardır. Bir beyin fırtınası yapılarak en azından iki-üç çözüm yolu geliştirilmelidir.Burada dikkat edilmesi gereken önemli bir konu da, geliştirilen çözümlerin genel olması, yani problemde küçük değişiklikler olduğunda da sürecin yeninden başlatılmasına gerek bırakılmamasıdır.Problemin Olası Çözümlerinin DenenmesiOlası çözümlerin bir tanesi en iyi çözüm olacaktır.

En iyi çözümün özellikleri:

en anlaşılır en sade en az bellek kullanan en hızlı çözüm veren en genel

En İyi Çözümün/Yöntemin BelirlenmesiGeliştirilen olası çözümlerden birinin üzerinde karar verilmelidir. Bu amaçla eldeki örnek veriler olası çözümler üzerinde işlenir ve karar verilir. Verilerin veya işlemlerin uygulanamadığı çözümler elenmeli ve problem çözümü akış diyagramlarıyla adım adım gösterilmelidir.

Bu aşamada da gerek yetenek, gerekse tecrübe sürecin doğru aşılmasına etki edecektir.

Çözümün UygulanmasıEldeki örnek veri, işlem ve olası çıktılar çözüm üzerinde tekrar uygulanır.

Çözüme karar verdikten sonra birileriyle iştişare edilebilir.

Diğer meslektaşların da anlayabileceği bir algoritma ile ifade edilir.

Yorum bırakınFiled under Algoritma

18 ARALIK 2011 · 21:45

Algoritma ve Programlamaya   Giriş Konuyla ilgili istifade edilebilecek MEGEP modülleri:01-programlama-temelleri02-akisdiyagramlari03-yapisalprogramlamatemelleri

Page 36: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

04-veri yapilari05-temelalgoritmalar==>Algoritma, matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç durumundan başladığında açıkça belirlenmiş bir son durumunda sonlanan, sonlu işlemler (adımlar) kümesidir.==>Herhangi bir programlama dilini öğrenmeden önce programlamanın mantığını kavrayabilmek adına, algoritma geliştirebilme melekesi kazanmak çok önemlidir. Bu nedenle Bilgisayar Programcılığı veya Mühendisliği öğrencilerine programlama dilleri öğretilmeden önce algoritma dersi verilir. Algoritma konusunu halletmeden programlamaya merak salmak pek hayra alamet değildir.  =)==>Algoritmada, verilen herhangi bir sorunun çözümüne ulasmak için uygulanması gerekli adımların, hiç bir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde söz ve yazı ile ifade edilmesi gerekir. Algoritmayı oluşturan adımlar başka bir programcının da anlayabileceği şekilde basit ve açık olarak sıralandırılmalıdır.  [ önemli başlıklar: akış diyagramı, sözde kod (pseudocode), karar tabloları (decision table)  ]==>Programlamanın temeli olan algoritmanın hazırlanmasinda dikkat çekici olan bir diğer nokta, aynı sorunu çözmek için hazırlanabilecek olası algoritma sayısının birden çok olabilmesidir. Başka deyişle, bir sorunun çözümü için birbirinden farklı birden fazla sayıda algoritma hazırlanabilir. Bu da gösteriyor ki herhangi bir problemin çözümü için birbirinden farklı yüzlerce bilgisayar programı yazılabilir. Üstelik her Problem için önceden belirlenmiş çözüm yöntemi olmayabilir. Gerekli çözüm yöntemini programcının bulması gerekiyor.==>Algoritma öğrenmek demek bir programlama dilini öğrenmek demek değildir. Fakat algoritma ile programlamanın mantığı kavranırsa, istenilen programlama diline ait komutların öğrenilmesi çok zor olmayacaktır.==>Son olarak “algoritma” kelimesi Ebu Abdullah Muhammed bin Musa el Harezmi isimli matematikçinin adından gelir. Batılılar, el Harezmi  sözcüğünü telaffuz edemedikleri için terim bu şekilde kalmıştır. (Al-Khwārizmī) (Latincede Algoritmi)

PSEUDOCODE STANDARD

Pseudocode is a kind of structured english for describing algorithms. It allows the designer to focus on the logic of the algorithm without being distracted by details of language syntax.  At the same time, the pseudocode needs to be complete.  It describe the entire logic of the algorithm so that implementation becomes a rote mechanical task of translating line by line into source code.

Page 37: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

In general the vocabulary used in the pseudocode should be the vocabulary of the problem domain, not of the implementation domain.  The pseudocode is a narrative for someone who knows the requirements (problem domain) and is trying to learn how the solution is organized.  E.g.,

Extract the next word from the line (good) set word to get next token (poor)

Append the file extension to the name (good) name = name + extension (poor)

FOR all the characters in the name (good) FOR character = first to last (ok)

Note that the logic must be decomposed to the level of a single loop or decision. Thus "Search the list and find the customer with highest balance" is too vague because it takes a loop AND a nested decision to implement it. It's okay to use "Find" or "Lookup" if there's a predefined function for it such as String.indexOf().

Each textbook and each individual designer may have their own personal style of pseudocode. Pseudocode is not a rigorous notation, since it is read by other people, not by the computer. There is no universal "standard" for the industry, but for instructional purposes it is helpful if we all follow a similar style. The format below is recommended for expressing your solutions in our class.

The "structured" part of pseudocode is a notation for representing six specific structured programming constructs: SEQUENCE, WHILE, IF-THEN-ELSE, REPEAT-UNTIL, FOR, and CASE. Each of these constructs can be embedded inside any other construct. These constructs represent the logic, or flow of control in an algorithm.

It has been proven that three basic constructs for flow of control are sufficient to implement any "proper" algorithm.

SEQUENCE is a linear progression where one task is performed sequentially after another. WHILE is a loop (repetition) with a simple conditional test at its beginning. IF-THEN-ELSE is a decision (selection) in which a choice is made between two alternative courses of action.

Although these constructs are sufficient, it is often useful to include three more constructs:  

Page 38: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

REPEAT-UNTIL is a loop with a simple conditional test at the bottom. CASE is a multiway branch (decision) based on the value of an expression. CASE is a generalization of IF-THEN-ELSE. FOR is a "counting" loop.SEQUENCE

Sequential control is indicated by writing one action after another, each action on a line by itself, and all actions aligned with the same indent. The actions are performed in the sequence (top to bottom) that they are written.

Example (non-computer)

Brush teeth Wash face Comb hair Smile in mirrorExampleREAD height of rectangle READ width of rectangle COMPUTE area as height times widthCommon Action KeywordsSeveral keywords are often used to indicate common input, output, and processing operations.Input: READ, OBTAIN, GET Output: PRINT, DISPLAY, SHOW Compute: COMPUTE, CALCULATE, DETERMINE Initialize: SET, INIT Add one: INCREMENT, BUMPIF-THEN-ELSE

Binary choice on a given Boolean condition is indicated by the use of four keywords: IF, THEN, ELSE, and ENDIF. The general form is:

IF condition THENsequence 1ELSEsequence 2ENDIFThe ELSE keyword and "sequence 2" are optional. If the condition is true, sequence 1 is performed, otherwise sequence 2 is performed.

Example

IF HoursWorked > NormalMax THENDisplay overtime message

Page 39: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

ELSEDisplay regular time messageENDIF

WHILE

The WHILE construct is used to specify a loop with a test at the top. The beginning and ending of the loop are indicated by two keywords WHILE and ENDWHILE. The general form is:

WHILE conditionsequenceENDWHILEThe loop is entered only if the condition is true. The "sequence" is performed for each iteration. At the conclusion of each iteration, the condition is evaluated and the loop continues as long as the condition is true.

Example

WHILE Population < LimitCompute Population as Population + Births - DeathsENDWHILE

Example

WHILE employee.type NOT EQUAL manager AND personCount < numEmployeesINCREMENT personCountCALL employeeList.getPerson with personCount RETURNING employeeENDWHILE

CASE

A CASE construct indicates a multiway branch based on conditions that are mutually exclusive. Four keywords, CASE, OF, OTHERS, and ENDCASE, and conditions are used to indicate the various alternatives. The general form is:

CASE expression OFcondition 1 : sequence 1 condition 2 : sequence 2 ... condition n : sequence n OTHERS: default sequenceENDCASE

The OTHERS clause with its default sequence is optional. Conditions are normally numbers or characters

Page 40: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

indicating the value of "expression", but they can be English statements or some other notation that specifies the condition under which the given sequence is to be performed. A certain sequence may be associated with more than one condition.

Example 

        CASE  Title  OF                Mr      : Print "Mister"                Mrs     : Print "Missus"                Miss    : Print "Miss"                Ms      : Print "Mizz"                Dr      : Print "Doctor"        ENDCASE

Example 

        CASE  grade  OF                A       : points = 4                B       : points = 3                C       : points = 2                D       : points = 1                F       : points = 0        ENDCASE

REPEAT-UNTIL

This loop is similar to the WHILE loop except that the test is performed at the bottom of the loop instead of at the top. Two keywords, REPEAT and UNTIL are used. The general form is:

REPEATsequenceUNTIL conditionThe "sequence" in this type of loop is always performed at least once, because the test is peformed after the sequence is executed. At the conclusion of each iteration, the condition is evaluated, and the loop repeats if the condition is false. The loop terminates when the condition becomes true.  

FOR

This loop is a specialized construct for iterating a specific number of times, often called a "counting" loop.  Two keywords, FOR and ENDFOR are used. The general form is:

FOR iteration boundssequenceENDFOR

Page 41: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

In cases where the loop constraints can be obviously inferred it is best to describe the loop using problem domain vocabulary.

Example

FOR each month of the year (good) FOR month = 1 to 12 (ok)

FOR each employee in the list (good) FOR empno = 1 to listsize (ok)

NESTED CONSTRUCTS

The constructs can be embedded within each other, and this is made clear by use of indenting. Nested constructs should be clearly indented from their surrounding constructs.

Example

SET total to zero REPEATREAD Temperature IF Temperature > Freezing THEN     INCREMENT total END IFUNTIL Temperature < zero Print total

In the above example, the IF construct is nested within the REPEAT construct, and therefore is indented.    

INVOKING SUBPROCEDURES

Use the CALL keyword. For example:

CALL AvgAge with StudentAges CALL Swap with CurrentItem and TargetItem CALL Account.debit with CheckAmount CALL getBalance RETURNING aBalance CALL SquareRoot with orbitHeight RETURNING nominalOrbit

EXCEPTION HANDLING

    BEGIN 

Page 42: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

        statements     EXCEPTION         WHEN exception type             statements to handle exception        WHEN another exception type             statements to handle exception    END 

Sample Pseudocode

"Adequate"

FOR X = 1 to 10     FOR Y = 1 to 10         IF gameBoard[X][Y] = 0             Do nothing         ELSE             CALL theCall(X, Y) (recursive method)             increment counter                          END IF    END FOREND FOR

"Better"

Set moveCount to 1FOR each row on the board     FOR each column on the board         IF gameBoard position (row, column) is occupied THEN             CALL findAdjacentTiles with row, column            INCREMENT moveCount         END IF     END FOREND FOR

(Note: the logic is restructured to omit the "do nothing" clause) 

"Not So Good"

FOR all the number at the back of the array     SET Temp equal the addition of each number     IF > 9 THEN         get the remainder of the number divided by 10 to that index 

Page 43: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

        and carry the "1"     Decrement one Do it again for numbers before the decimal  

"Good Enough (not perfect)"

SET Carry to 0 FOR each DigitPosition in Number from least significant to most significant

    COMPUTE Total as sum of FirstNum[DigitPosition] and SecondNum[DigitPosition] and Carry  

    IF Total > 10 THEN         SET Carry to 1         SUBTRACT 10 from Total     ELSE         SET Carry to 0     END IF

    STORE Total in Result[DigitPosition]

END LOOP  

IF Carry = 1 THEN     RAISE Overflow exception END IF  

"Pretty Good"  This example shows how pseudocode is written as comments in the source file. Note that the double slashes are indented.

public boolean moveRobot (Robot aRobot) {     //IF robot has no obstacle in front THEN         // Call Move robot         // Add the move command to the command history         // RETURN true     //ELSE         // RETURN false without moving the robot     //END IF }

Page 44: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Example Java Implementation

source code statements are interleaved with pseudocode. comments that correspond exactly to source code are removed during

coding.

public boolean moveRobot (Robot aRobot) {     //IF robot has no obstacle in front THEN     if (aRobot.isFrontClear())     {         // Call Move robot         aRobot.move();         // Add the move command to the command history         cmdHistory.add(RobotAction.MOVE);         return true;     }     else // don't move the robot     {         return false;     }//END IF }   

PSEUDOCODE STANDARD

Pseudocode is a kind of structured english for describing algorithms. It allows the designer to focus on the logic of the algorithm without being distracted by details of language syntax. At the same time, the pseudocode needs to be complete. It describe the entire logic of the algorithm so that implementation becomes a rote mechanical task of translating line by line into source code.

In general the vocabulary used in the pseudocode should be the vocabulary of the problem domain, not of the implementation domain.  The pseudocode is a narrative for someone who knows the requirements (problem domain) and is trying to learn how the solution is organized.  E.g.,

Extract the next word from the line (good) set word to get next token (poor)

Append the file extension to the name (good) name = name + extension (poor)

Page 45: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

FOR all the characters in the name (good) FOR character = first to last (ok)

Note that the logic must be decomposed to the level of a single loop or decision. Thus "Search the list and find the customer with highest balance" is too vague because it takes a loop AND a nested decision to implement it. It's okay to use "Find" or "Lookup" if there's a predefined function for it such as String.indexOf().

Each textbook and each individual designer may have their own personal style of pseudocode. Pseudocode is not a rigorous notation, since it is read by other people, not by the computer. There is no universal "standard" for the industry, but for instructional purposes it is helpful if we all follow a similar style. The format below is recommended for expressing your solutions in our class.

The "structured" part of pseudocode is a notation for representing six specific structured programming constructs: SEQUENCE, WHILE, IF-THEN-ELSE, REPEAT-UNTIL, FOR, and CASE. Each of these constructs can be embedded inside any other construct. These constructs represent the logic, or flow of control in an algorithm.

It has been proven that three basic constructs for flow of control are sufficient to implement any "proper" algorithm.

SEQUENCE is a linear progression where one task is performed sequentially after another. WHILE is a loop (repetition) with a simple conditional test at its beginning. IF-THEN-ELSE is a decision (selection) in which a choice is made between two alternative courses of action.

Although these constructs are sufficient, it is often useful to include three more constructs:  

REPEAT-UNTIL is a loop with a simple conditional test at the bottom. CASE is a multiway branch (decision) based on the value of an expression. CASE is a generalization of IF-THEN-ELSE. FOR is a "counting" loop.

SEQUENCE

Page 46: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Sequential control is indicated by writing one action after another, each action on a line by itself, and all actions aligned with the same indent. The actions are performed in the sequence (top to bottom) that they are written.

Example (non-computer)

Brush teeth Wash face Comb hair Smile in mirror

Example

READ height of rectangle READ width of rectangle COMPUTE area as height times width

Common Action Keywords

Several keywords are often used to indicate common input, output, and processing operations.

Input: READ, OBTAIN, GET Output: PRINT, DISPLAY, SHOW Compute: COMPUTE, CALCULATE, DETERMINE Initialize: SET, INIT Add one: INCREMENT, BUMP

IF-THEN-ELSE

Binary choice on a given Boolean condition is indicated by the use of four keywords: IF, THEN, ELSE, and ENDIF. The general form is:

IF condition THEN

sequence 1

ELSE

sequence 2

ENDIF

Page 47: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

The ELSE keyword and "sequence 2" are optional. If the condition is true, sequence 1 is performed, otherwise sequence 2 is performed.

Example

IF HoursWorked > NormalMax THEN

Display overtime message

ELSE

Display regular time message

ENDIF

WHILE

The WHILE construct is used to specify a loop with a test at the top. The beginning and ending of the loop are indicated by two keywords WHILE and ENDWHILE. The general form is:

WHILE condition

sequence

ENDWHILE

The loop is entered only if the condition is true. The "sequence" is performed for each iteration. At the conclusion of each iteration, the condition is evaluated and the loop continues as long as the condition is true.

Example

WHILE Population < Limit

Compute Population as Population + Births - Deaths

ENDWHILE

Example

WHILE employee.type NOT EQUAL manager AND personCount < numEmployees

INCREMENT personCountCALL employeeList.getPerson with personCount RETURNING employee

ENDWHILE

CASE

Page 48: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

A CASE construct indicates a multiway branch based on conditions that are mutually exclusive. Four keywords, CASE, OF, OTHERS, and ENDCASE, and conditions are used to indicate the various alternatives. The general form is:

CASE expression OF

condition 1 : sequence 1 condition 2 : sequence 2 ... condition n : sequence n OTHERS: default sequence

ENDCASE

The OTHERS clause with its default sequence is optional. Conditions are normally numbers or characters

indicating the value of "expression", but they can be English statements or some other notation that specifies the condition under which the given sequence is to be performed. A certain sequence may be associated with more than one condition.

Example 

        CASE  Title  OF                Mr      : Print "Mister"                Mrs     : Print "Missus"                Miss    : Print "Miss"                Ms      : Print "Mizz"                Dr      : Print "Doctor"        ENDCASE

Example 

        CASE  grade  OF                A       : points = 4                B       : points = 3                C       : points = 2                D       : points = 1                F       : points = 0        ENDCASE

REPEAT-UNTIL

Page 49: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

This loop is similar to the WHILE loop except that the test is performed at the bottom of the loop instead of at the top. Two keywords, REPEAT and UNTIL are used. The general form is:

REPEAT

sequence

UNTIL condition

The "sequence" in this type of loop is always performed at least once, because the test is peformed after the sequence is executed. At the conclusion of each iteration, the condition is evaluated, and the loop repeats if the condition is false. The loop terminates when the condition becomes true.

FOR

This loop is a specialized construct for iterating a specific number of times, often called a "counting" loop.  Two keywords, FOR and ENDFOR are used. The general form is:

FOR iteration bounds

sequence

ENDFOR

In cases where the loop constraints can be obviously inferred it is best to describe the loop using problem domain vocabulary.

Example

FOR each month of the year (good) FOR month = 1 to 12 (ok)

FOR each employee in the list (good) FOR empno = 1 to listsize (ok)

NESTED CONSTRUCTS

Page 50: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

The constructs can be embedded within each other, and this is made clear by use of indenting. Nested constructs should be clearly indented from their surrounding constructs.

Example

SET total to zero REPEAT

READ Temperature IF Temperature > Freezing THEN     INCREMENT total END IF

UNTIL Temperature < zero Print total

In the above example, the IF construct is nested within the REPEAT construct, and therefore is indented.

INVOKING SUBPROCEDURES

Use the CALL keyword. For example:

CALL AvgAge with StudentAges CALL Swap with CurrentItem and TargetItem CALL Account.debit with CheckAmount CALL getBalance RETURNING aBalance CALL SquareRoot with orbitHeight RETURNING nominalOrbit

EXCEPTION HANDLING

    BEGIN         statements     EXCEPTION         WHEN exception type             statements to handle exception        WHEN another exception type             statements to handle exception    END 

Page 51: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

Sample Pseudocode

"Adequate"

FOR X = 1 to 10     FOR Y = 1 to 10         IF gameBoard[X][Y] = 0             Do nothing         ELSE             CALL theCall(X, Y) (recursive method)             increment counter                          END IF    END FOREND FOR

"Better"

Set moveCount to 1FOR each row on the board     FOR each column on the board         IF gameBoard position (row, column) is occupied THEN             CALL findAdjacentTiles with row, column            INCREMENT moveCount         END IF     END FOREND FOR

(Note: the logic is restructured to omit the "do nothing" clause)

"Not So Good"

FOR all the number at the back of the array     SET Temp equal the addition of each number     IF > 9 THEN         get the remainder of the number divided by 10 to that index         and carry the "1"     Decrement one Do it again for numbers before the decimal  

Page 52: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

"Good Enough (not perfect)"

SET Carry to 0 FOR each DigitPosition in Number from least significant to most significant

    COMPUTE Total as sum of FirstNum[DigitPosition] and SecondNum[DigitPosition] and Carry  

    IF Total > 10 THEN         SET Carry to 1         SUBTRACT 10 from Total     ELSE         SET Carry to 0     END IF

    STORE Total in Result[DigitPosition]

END LOOP  

IF Carry = 1 THEN     RAISE Overflow exception END IF  

"Pretty Good"  This example shows how pseudocode is written as comments in the source file. Note that the double slashes are indented.

public boolean moveRobot (Robot aRobot) {     //IF robot has no obstacle in front THEN         // Call Move robot         // Add the move command to the command history         // RETURN true     //ELSE         // RETURN false without moving the robot     //END IF }

Example Java Implementation

source code statements are interleaved with pseudocode.

Page 53: hpss.endustri.cu.edu.trhpss.endustri.cu.edu.tr/ders/ENS255/Algoritmalar Taslak…  · Web viewProgramlama İçin Gerekli Araçlar. ... algoritma ile programlamanın mantığı kavranırsa,

comments that correspond exactly to source code are removed during coding.

public boolean moveRobot (Robot aRobot) {     //IF robot has no obstacle in front THEN     if (aRobot.isFrontClear())     {         // Call Move robot         aRobot.move();         // Add the move command to the command history         cmdHistory.add(RobotAction.MOVE);         return true;     }     else // don't move the robot     {         return false;     }//END IF }   

   Examples of vague pseudocode

 

Document History

Date Author Change

12/2/03 JD Added Exception Handling and more examples

2/21/03 JDAdded "problem domain vocabulary" paragraph. Modified FOR loop explanation.