Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve...

17
1 ÖĞR. GÖR. RESUL TUNA SİNOP ÜNİVERSİTESİ MESLEK YÜKSEK OKULU SİNOP - 2008 Programlamanın Temelleri

Transcript of Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve...

Page 1: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

1

ÖĞR. GÖR. RESUL TUNA

SİNOP ÜNİVERSİTESİ

MESLEK YÜKSEK OKULU

SİNOP - 2008

Programlamanın Temelleri

Page 2: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

2

PROGRAMLAMANIN TEMELLERİ 1. BİLGİSAYAR NEDİR?

Bilgisayar; Giriş birimleri ile dış dünyadan aldıkları veriler üzerinde, aritmetiksel ve mantıksal işlemler yaparak işleyen ve bu işlenmiş bilgileri, çıkış birimleri ile bize ileten, elektronik bir makinedir.

Bilgisayar bir sistemin adıdır. Aşağıda mikrobilgisayarın blok diyagramında görüldüğü gibi giriş – işlem – çıkış döngüsel işleyişine sahip sitemler bir bilgisayar sistemidir. Bu bir PC olabileceği gibi, bir cep telefonu, oyun konsolu, Sunucu sistemler gibi bir çok farklı sistem bilgisayar sistemidir. Bu sistemin işleyişini anlamak için aşağıdaki diyagramdan faydalanılabilir.

Bir Mikrobilgisayarın blok diyagramı

1.1. BİLGİSAYARIN BİLEŞENLERİ

Bilgisayar temel olarak iki birimde incelenebilir;

Donanım ; Bilgisayarları oluşturan tüm fiziksel birimlere donanım denir. Bir Kişisel Bilgisayarı (PC) oluşturan donanım birimleri;

� Mikroişlemci � Anakart � Ram Bellek � Ekran Kartı � Ses Kartı � Yardımcı bellek birimleri (Sabit Disk ,CD/DVD/Flash

Disk) � Kasa � Ekran � Klavye � Mouse

Yazılım ; Bilgisayara işlevsellik kazandıran komutların tümü. Donanımı kullanmak ve yönetmek için gerekli programlardır. Bilgisayarın nasıl çalışacağını söylerler. Elle tutulmazlar. Belirli bir işleri yapmak üzere bilgisayara kurulurlar. 3 grupta incelenebilirler;

� İşletim Sistemleri; Windows XP, Win 7, Pardus…

� Uygulama Programları; Word, Excel, AutoCad, Photoshop, Media Player…

� Programlama Dilleri; Makine Dili, C / C++, Visual Basic, Delphi, Assembly…

Page 3: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

3

2. BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

İnsanlar her zaman düşünür ve problem çözerler. Birçok problem, az ya da hiç düşünülmeden çözülebilir.

Her gün evden çıkarken ne giyilmelidir? Bunun için muhtemelen pencereden dışarıya bakılır. Hava yağmurlu ise mevsim gereklerine göre giyinmenin yani sıra dışarıya çıkarken bir de semsiye alınması gerekir. Hava güneşli ve sıcak ise o takdirde daha ince giyinilerek dışarıya çıkılır. Böylece problemin çözümü kendiliğinden oluşturulan bir kararla sağlanır.

Yukarıdaki basit örnekte yapılan iş, önce problemin belirlenmesi ve sonra problemin tanımından yola çıkarak çözüm için değişik alternatiflerin değerlendirilmesidir.

Bilgisayar programlaması sırasında izlenebilecek birçok yol ve yöntem vardır. Bilgisayar programcısının probleme ilişkin çözümü ortaya çıkarabilmesi için problem çözümü ile ilgili bilgileri bilmesi gerekir. Bilgisayar programlamasında genel olarak belirli kalıp ve kurallara uyulur. Bir bilgisayar yazılımının oluşturulması sırasında aşağıda sıralanan ana adımlara uyulur.

� Problemin tanımı

� Çözüm yönteminin belirlenmesi

� Programın kodlanması

� Programın çalışır duruma getirilmesi

� Belgeleme ve güncelleştirme

Problemin tanımı: Problemin normal yazı diliyle tanımlanması işlemlerini kapsamaktadır. Problem çözümüne ilişkin iyi bir program yapabilmek için, problemin iyi bir şekilde tanımlanması gerekir.

Çözüm Yönteminin Belirlenmesi: Bu adımda çözümün genel yaklaşımı, temel giriş/çıkışlar belirlenir ve problem çözümü adim adım program akis diyagramlarıyla gösterilir.

Programın kodlanması: Program ayrıntılı olarak tanımlanıp çözüm yolları açıkça belirtildikten sonra program kodlama çalışmalarına başlanabilir. Programın baştan sona yapısal bir düzende hazırlanması ve uygun bir programlama dili seçilmesi secim işleminin ilk aşamasını oluşturur.

Programın Çalışır Hale Getirilmesi: Programın kodlanması sırasında yapılan imla hataları, kodlama ve mantık hatalarının giderilmesi işlemlerini kapsar. İyi bir bilgisayar programının doğruluğundan emin olmak için defalarca test edilmiş olması gerekmektedir.

Belgeleme ve güncelleştirme: Oluşturulan bir yazılımı, sadece o yazılımı geliştiren kişilerin kullanabilmesi gibi bir kısıtlamanın onune geçmek için ayrıntılı referanslar hazırlanmalı ve programla ilgili bilgiler verilmelidir.

Bir yazılımda, o yazılımı kullanan kişi veya kuruluşların yeni gereksinimleri ve değişen koşullar nedeniyle değişiklikler yapılması gerekli olabilir. Bu değişikliklere güncelleme adı verilir. İyi bir programda bulunması gereken özellikler arasında güncelleşebilme ön sıralarda yer almaktadır.

Page 4: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

4

Şekil 1.1. Yazılım oluşturma evrelerini şematik olarak özetlemektedir.

Şekil 1.1 Yazılım oluşturma evreleri

2.1. Bilgisayar Programcılığı

Nedir bu bilgisayar programcılığı? Evet, birçok kişi bilgisayar programcılarının ne ile uğraştığını bilir fakat nasıl uğraşıp neler yaptığını pek bilmez... Önce bilgisayar dünyasında sıkça kullanılan bir kelimeden bahsedelim “yazılım”. Yazılım (software) kelimesi bilgisayar programlama dilleriyle oluşturulan dokümanları, dosyaları ifade eder. Yani bilgisayarınızda işletilmek, çalıştırılmak üzere tasarımlanmış dosyalar yazılım kapsamına girer. Yazılım programlama dilleri ile tasarlanır ve yazılır. Programlama dilleri, bilgisayarınızın donanımını (ekran kartı,ses kartı,modem...) sizin en rahat bicimde kullanabileceğiniz düzeye getirmeye çalışır. Yani bilgisayarın o soğuk 1010110 gibi rakamlarını sizin zevkle kullandığınız programlara, işletim sistemlerine, oyunlara çevirir.

Örneğin kullanılmakta olan Windows işletim sistemi onbinlerce sayfadan, milyonlarca bilgisayar kodunun bir araya gelmesinden oluşur. Đite isin tüm zorluğu, o kodların arasında

Page 5: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

5

dolaşan, hata mesajlarını günlerce o kodları gözden geçirerek arayan, sandalye tepesinde saatlerce aynı ekrana bakarak ilginç görüntüler sergileyen programcıların üzerindedir...

Bilgisayar programcıları isini zevkle yapan ve isini bir hobi edinmiş insanlardan oluşur. Aksi halde yoğun konsantrasyon ve sabır isteyen bu isi yapmak aşırı zorlaşır. Programlama dilleri kendi aralarında sınıflara ayrılmışlardır. İnsanın en zor öğrenebileceği, anlayabileceği yani 1100101 gibi makine kodlarına yakın diller düşük seviyeli programlama dilleri, insanın en kolay anlayıp kullanabileceği ve insan diline yakın özellikler gösteren diller ise yüksek seviyeli programlama dilleridir. Simdi bu sınıflandırmaya örnekler verelim;

1 ) Yüksek seviyeli diller: VisualBasic, Delphi

2 ) Orta seviyeli diller: C,C++,ADA, Pascal,Basic,Fortran...

3 ) Düşük seviyeli diller: Assembly...

Makine dilleri: Bilgisayarın çalışma dilleridir ve 1 ve 0'lardan oluşur...

Bu dillerin kullanıldığı alanlara örnek verirsek;

1 ) Bilim ve Mühendislikte: Passal, C, C++, Fortran...

2 ) Veritabanı Programcılığında: Dbase, Acces, Foxpro, Sql...

3 ) Yapay Zeka Kullanımında: Prolog, Lisp...

4 ) Sistem Programcılığında: C, C++ ve sembolik makine dilleri...

Bir bilgisayar programı nasıl yazılır? Bir yazılım değişik dillerle oluşturulabilir fakat izlenen yöntemler genelde birbirine benzer. Örneğin Algoritma... Algoritma, elimizdeki sorunun çözümüne gidebilmek için tasarlanan yollar, yöntemlerdir. Örneğin bir arkadaşınıza daha önce gitmediği bir yerdeki bir postaneyi tarif edeceksiniz. Bunun için anlatımda genelden özele giden bir yol izlersiniz. Önce gideceği semti sonra caddeyi sonra postanenin olduğu yönü tarif eder son olarak da kolay bulması için postanenin çevresindeki göze batan özelliklerden bahsedersiniz. İşte bu yaptıklarınız bir algoritmadır. Ve amacınız arkadaşınıza postaneyi bu algoritma yardımıyla tarif etmektir...

3. PROBLEM ÇÖZME VE ALGORİTMALAR

3.1 Problem Çözme

Problem: Yerine getirilmesi ya da gerçekleştirilmesi gereken bir durumu problem olarak tanımlayabiliriz. Günlük hayatımızda da olduğu gibi Bilgisayar ile ilgili işlemlerde de bir çok problem tanımı yapılabilir.

Problem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara ayrılmalıdır. Descartes’in "Discourse on Method" isimli kitabında problem çözme teknikleri su 4 madde ile özetlenir;

1. Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin ve önyargılardan kaçının.

2. Karsılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün.

3. Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyiniz.

4. Olaya bakısınız çok genel, hazırladığınız ayrıntılı liste ise hiçbir şeyi dışarıda bırakmayacak kadar kusursuz ve eksiksiz olsun.

3.2. Program Yazma Sureci

Bilgisayar üzerinde belirli bir problemi çözmek için, bir bilgisayar dili kullanılarak yazılmış deyimler dizisine program adı verilir.

Page 6: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

6

Bir programın yazımında izlenecek adımlar şu şekildedir;

1 ) Analiz

� Problemin farkına varılır. � Problemi analiz edilir, Çözüm yolları düşünülür. � Problemin girdileri, çıktıları ve diğer kısıtlama ve gereksinimleri belirlenir.

2 ) Algoritma :İyi çözüm yolları seçilip Algoritma oluşturulur ve Akış diyagramı çizilir.

3 ) Dil Secimi :Uygun bir dil seçilir.

4 ) Kodlama : Programlama dili ile kodlama gerçekleştirilir.

5 ) Test : Programın doğru çalışıp çalışmadığını test edilir. Bu test değişik veriler (girdiler) için tekrarlanır.

6 ) Program dağıtılır, pazarlanır.

2.3 Algoritmalar

Kısaca algoritma belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir. Geniş anlamda ise algoritma, verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması gerekli adımların hiç bir yoruma yer vermeksizin acık, düzenli ve sıralı bir şekilde söz ve yazı ile ifadesidir. Algoritmayı oluşturan adımlar özellikle basit ve açık olarak sıralandırılmalıdır.

M.S. 9.yy da İranlı Musaoğlu Horzumlu Mehmet (Alharezmi adını araplar takmıştır) problemlerin çözümü için genel kurallar oluşturdu. Algoritma Alharezmi'nin Latince okunuşudur. Her algoritma aşağıdaki kriterleri sağlamalıdır.

1. Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli. 2. Çıktı: En azından bir değer üretilmeli. 3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli. 4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli. 5. Etkinlik: Her komut kişinin kalem ve kâğıt ile yürütebileceği kadar basit olmalıdır.

Not: İşletim sistemleri gibi programlar sonsuza dek çalışırlar. Bu nedenle bu tür programlar için 4. özellik geçerli değildir.

Algoritma Örneği:

Algoritmik çözüm yöntemlerine ilk örneği günlük yaşantımızdan verelim.

Örnek 1: Örneğimiz bir insanin evden çıkıp ise giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını adım adım tanımlamaktadır.

Çözüm 1:

Evden dışarıya çık

Otobüs durağına yürü

Durakta gideceğin yöndeki otobüsü bekle

Otobüsün geldiğinde otobüse bin

Biletini bilet kumbarasına at

İneceğin yere yakınlaştığında arkaya yürü

İneceğini belirten ikaz lambasına bas

Otobüs durunca in

İsyerine doğru yürü

Is yeri giriş kapısından içeriye gir

Mesai arkadaşlarınla selamlaş

İş giysini giy

İşini yapmaya başla.

Page 7: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

7

Yukarıdaki örnekte görüldüğü gibi, evden ise gidişte yapılabilecek işlemler adım adım sırasıyla, kısa ve acık olarak tanımlanmaya çalışılmıştır. Yukarıdaki algoritma kişinin otobüsü kaçırma olasılığı düşünülmeden oluşturulmuştur. Kişi durağa geldiğinde bineceği otobüsü kaçırmış ise algoritmamız aşağıdaki şekilde değiştirilebilir.

Çözüm 2:

Evden dışarıya cık Otobüs durağına yürü

Otobüsün saati geçmiş?

Durakta gideceğin yöndeki bir sonraki otobüsü bekle

Bir sonraki otobüs gelene kadar 4. adimi uygula

Otobüsün geldiğinde otobüse bin

Biletini bilet kumbarasına at

İneceğin yere yakınlaştığında arkaya yürü

İneceğini belirten ikaz lambasına bas

Otobüs durunca in

İş yerine doğru yürü

İş yeri giriş kapısından içeriye gir

Mesai arkadaşlarınla selamlaş

İş giysini giy

İşini yapmaya başla.

Her iki örnekte görüldüğü gibi sorunu çözüme goturebilmek için gerekli olan adımlar sıralı ve açık bir biçimde belirlenmiştir. Algoritmanın herhangi bir adımındaki küçük bir yanlışlık doğru çözüme ulaşmayı engelleyebilir. Bu nedenle algoritma hazırlandıktan sonra dikkatle incelenmeli ve varsa adımlardaki yanlışlıklar düzeltilmelidir.

Programlamanın temeli olan algoritma hazırlanmasında dikkat çekici bir nokta, ayni sorunu çözmek için hazırlanabilecek olası algoritma sayısının birden çok olmasıdır. 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. Bir bilgisayar programı için hazırlanacak olan algoritma da ayni şekilde çözüm yolunu bilmeyen bir kişiye, çözüme ulaşmak için neler yapması gerektiği anlatılıyormuş gibi hazırlanmalı ve eksik bir nokta bırakmaksızın gerekli tüm adımları acık ve düzenli olarak içermelidir. Çözüm için kullanılacak bilgilerin nereden alınacağı, nerede saklanacağı ve çözümün program kullanıcısına nasıl ulaştırılacağı algoritma adımları arasında belirtilmelidir. Aşağıda değişik işlemlere ilişkin algoritma örnekleri verilmiştir.

Örnek 2: Kullanıcının gireceği iki sayıyı toplayıp sonucu ekrana yazdırmak için gerekli programa ait algoritmanın oluşturulması.

Algoritma:

A1. Başla

A2. Birinci sayıyı gir

A3. İkinci sayıyı gir

A4. İki sayıyı topla

A5. Toplamın değerini yaz

A6. Bitir.

Page 8: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

8

Bu tam bir algoritmadır ve işlem basamakları sözel olarak ifade edilmiştir. Sözcüklerin ortaya çıkaracağı yanlış anlamaların ortadan kaldırmak amacıyla semboller ve matematik dilini gerektiren bazı kısaltmalar kullanmak daha uygun olacaktır. Bir algoritma yazılırken şu metot izlenmelidir:

� Programda kullanılacak verileri temsil etmek üzere uygun isimler veya değişkenler seç.

� Bazı isimlere başlangıç değeri olarak çözümün gerektirdiği uygun değerler ver.

� Gerekirse programa girilecek verileri düzenle.

� Cebirsel notasyon ve kararlar kullanarak aritmetik işlemleri gerçekleştir.

� Çıkışı düzenle.

� Bitir.

Yukarıda iki sayının toplanması için oluşturduğumuz algoritmayı bu yeni gereksinimlere uyarak yeniden yazalım.

Toplam adı için Z, Birinci sayı için X, İkinci sayı için Y değerleri kullanılırsa; Algoritma: A1. X değerini gir A2. Y değerini gir A3. Z = X+Y A4. Z' yi yaz A5. Bitir.

Görüldüğü üzere bu şekilde bir algoritma ile çözüm yolunu izlemek daha kolaydır. Bundan sonra verilen örneklerde bu tip algoritma kullanılacaktır.

Örnek 3: İki sayının ortalamasını bulan programa ait algoritmanın oluşturulması

Algoritma:

A1. Başla

A2. X değerini gir

A3. Y değerini gir

A4. Z = X+Y

A5. Ort = Z/2

A6. Ort değerini yaz

A7. Bitir.

Bu örnekte Ort değeri ile iki sayının ortalaması temsil edilmiştir.

Örnek 4: Kenar uzunlukları verilen dikdörtgenin alan hesabını yapan programa ait algoritmanın hazırlanması.

Dikdörtgenin kısa kenarı : a

Dikdörtgenin uzun kenarı : b

Dikdörtgenin alanı : alan

Algoritma:

A1. Başla

A2. a, b, alan tanımla

A3. a değerini gir

A4. b değerini gir

A5. Alan = a*b

A6. Alan değerini ekrana yaz

A7. Bitir.

Page 9: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

9

Örnek 5: Bir öğrenci bir dersten aldığı iki sınav notunu klavyeden giriyor. Öğrencinini ortalamasını hesaplayıp, 50 geçme barajına göre “Geçtiniz” veya “Kaldınız” mesajı veren programın algoritmasını hazırlayınız.

Algoritma:

A1. Başla

A2. snv1, snv2, Ort tanımla

A3. Snv1’i gir

A4. Snv2’i gir

A5. Ort= (Snv1 + Snv2) / 2

A6. Ort’yı ekrana yaz

A7. Eğer (Ort > 50) ise

A8. Ekrana “Geçti” yaz

A9. Değilse “Kaldı” yaz

A10. Bitir

Örnek 6: Girilen dolar miktarını Türk Lirasına çeviren programın algoritmasını oluşturunuz. Bu algoritmanın oluşumunda girişler, Dolar kuru ve hesaplanacak $ miktarı, çıkış ise verilen $'in TL karşılığı olacaktır. Dolar kuru ve miktarının pozitif girilmesi sağlanmalıdır.

Doların değeri: Doldeg Girilen Dolar miktarı: Dolar TL karşılığı: tl

Algoritma:

A1. Başla

A2. Doldeg, Dolar, tl

A1. Doldeg'i gir

A2. Doldeg<0 ise 1. adimi tekrarla

A3. Dolar’ı gir

A4. Dolar<0 ise 3.adimi tekrarla

A5. tl = Doldeg*Dolar

A6. tl değerini yaz

A7. Bitir

Page 10: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

10

Örnek 7: 1’den 100’e kadar olan sayıların toplamını hesaplayıp ekrana yazan programın algoritmasını hazırlayınız.

Algoritma 1. Çözüm: (Algoritmanın sözel olarak ifade edilmesi)

A1. Başla

A2. Toplam T, sayılar i olsun

A3. Başlangıçta T'nin değeri 0 ve i'nin değeri 1 olsun

A4. i'nin değerini T'ye ekle.

A5. i'nin değerini 1 arttır.

A6. Eğer i'nin değeri 100'den küçük ise 4. adıma git.

A7. T'nin değerini yaz.

A8. Bitir

Algoritma 2. Çözüm:

A1. Başla

A2. T, i

A3. T=0, i=1

A4. i'nin değerini T'ye ekle.

A5. i'yi 1 arttır.

A6. i<101 ise A4’e git.

A7. T'nin değerini yaz.

A8. Bitir

Örnek 8: Kullanıcının gireceği 10 sayının toplamını veren programa ait algoritmanın oluşturulması

Toplam adı için Top, Girilen sayılar için X, Artış değerini saymak için için Sayaç kullanılırsa

Algoritma:

A1. Başla

A2. Toplam tpl, Sayaç say, sayı X olsun

A3. tpl = 0, say = 0

A4. X'i gir

A5. tpl = tpl+X

A6. say = say +1

A7. Eğer say <10 ise A4'e git

A8. tpl değerini ekrana yaz

A9. Bitir.

Kullanıcının girdiği her sayı (X), tpl olarak adlandırılmış olan depo değişkenin üzerine eklenmektedir. Sayaç bu işlemin kaç kez tekrar edildiğini saymaktadır. İstenilen sayıda değer girildiğinde tekrar işlemi bitirilerek, programın diğer adımları işletilmeye devam edilmektedir.

Page 11: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

11

3 AKIŞ DİYAGRAMLARI

Geliştirilecek olan yazılımın genel yapısının şematik gösterimine akış diyagramı adı verilir. Akis diyagramları, yazılımı oluşturacak program parçalarını ve bu parçaların birbirleri ile olan ilişkilerini belirler. Bir bilgisayar programının oluşturulmasında akis diyagramlarının hazırlanması, algoritma oluşturma aşamasından sonra gelmektedir. Bilgisayar programının oluşturulması sırasında algoritma aşaması atlanarak, doğrudan akis diyagramlarının hazırlanmasına başlanabilir. Programlama tekniğinde önemli ölçüde yol almış kişiler bu aşamayı da atlayarak direkt olarak programın yazımına geçebilirler.

Akis diyagramlarının algoritmadan farkı, adımların simgeler seklinde kutular içinde yazılmış olması ve adımlar arasındaki ilişkilerin (iş akışı) oklar ile gösterilmesidir. Akis diyagramlarında kullanılan semboller, anlamları ve kullanış amaçları aşağıda verilmiştir.

Tablo 1. Akış diyagramlarında kullanılan temel semboller ve anlamları

STANDART FLOW CHART ANLAMI

Akis diyagramının başlangıç ve bitiş yerlerini gösterir. Başlangıç simgesinden çıkış oku vardır. Bitiş simgesinde giriş oku vardır.

Dışarıdan veri girişleri için kullanılır. Kullanılacak verilere ait değişkenlerin tanımlanması için kullanılır.

Değer ataması ve değişik atama işlemleri için kullanılır.

Aritmetik işlemler.

Kontrol ve karar verme işlemlerini temsil eder.

Tekrarlı yapıları (Döngü) temsil eder.

Ekrana, belgeye, yazıcıya çıktı için kullanılır.

İşlemleri ve program akışını birleştirmek için kullanılır.

Oklar Diyagramın akis yönünü gösterir.

Bu sembolleri daha da çoğaltmak mümkün fakat temel olarak akış diyagramlarında bu şekiller kullanılacaktır.

Ayrıntılı bir akis diyagramı, yazılımı oluşturan işlemleri ve ilişkilerini en küçük detayına kadar belirler.

Page 12: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

12

3.1. Programlamada kullanılan mantıksal yapılar

Bir bilgisayar programının geliştirilmesinde kullanılan programlama dili ne olursa olsun bu programların akis diyagramlarında genel olarak yalnız üç basit mantıksal yapı kullanılır. Bu mantıksal yapılardan en basiti sıralı yapıdır (Şekil 1.2). Sıralı yapı, hazırlanacak programdaki her işlemin mantık sırasına Gore nerede yer alması gerektiğini vurgular. Bu yapı sona erinceye kadar ikinci bir işlem başlayamaz.

Mantıksal yapılardan ikincisi Karar Verme yapısıdır (Sekil 1.3). Programlama sırasında If...Then... Else yapısı ile tanıyacağımız bu mantıksal yapılar, birden fazla sıralı yapı seçeneğini kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini belirler.

Üçüncü mantıksal yapı çeşidini tekrarlı yapılar (Sekil 1.4) oluşturmaktadır. Bu yapılara Pascal programlama dilinde For (Sekil 1.4), While ve Repeat..Until yapısı adi da verilir.

Şartlara göre değişik işlem gruplarının yapılmasını sağlar. Bu yapı yukarıda sözü edilen iki yapının çeşitli kombinezonların tekrarlanmasından oluşmuştur. Söz konusu üç değişik yapı, değişik kombinezonlarda kullanılarak istenilen işlevleri yerine getirecek programlar hazırlanabilir. Programların bu üç basit yapı ile sınırlandırılması program modüllerinin daha kolay tasarlanmasını sağlar.

Şekil 1.4. Tekrarlı yapılar

3.2. Akis diyagramı örnekleri

Bu bölümde, sözlü veya yazılı olarak oluşturduğumuz algoritmanın programa dönüştürülmesi sırasında programın çalışma sırasını da gösteren akis diyagramlarıyla ilgili örnekler aşağıda verilmiştir.

Page 13: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

13

FLOWCHART AKIŞ DİAGRAMI PROGRAMI

Flowchart programı akış diagramlarının hazırlanmasında kullanılan yardımcı bir programlama yazılımıdır. Kağıt üzerinde yapılacak akış diagramları bu program ile daha kolay bir şekilde düzenlenebilir ve test edilebilir. Test ederek programın nasıl çalışacağını görebilirsiniz.

Akış digramını test etmek için çalıştırma

Çalıştırılan programı durdurma

Çalıştırılan programa ara verme

Test aşamasında adımlar arasındaki geçiş zamanını ayarlamayı sağlar

Programda kullanılan verilerin bellekteki yerleşimini görmeyi sağlar

Programda kullanılan değişkenleri görmeyi sağlar

Programa başlama

Atamlar, Aritmetik İşlemler ve Metinsel işlemler

Dışarıdan veri girişi (Bu işlem yapılırken veri aynı zamanda tanımlanmış olur)

Ekrana, belgeye ya da yazıcıya veri çıkışı

Karar ve kontrol deyimi (Döngüler için de bu yapı kullanılır) Birleştirme Kullanıcı tanımlı fonksiyon çağırma

Windows penceresi açma

Programı bitirme

Diyagramdaki nesneleri bağlamak, düzenlemek, bağlatı ve nesneleri silmek için bu bölüm kullanılır.

Page 14: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

14

Örnek 1: Dışardan girilen bir sayıyı okuyup bu sayıyı tekrar yazdıran programın akış şemasını çiziniz.

Örnek 2: Dışarıdan girilen iki sayıyı toplayıp sonucu ekrana yazan programın akış şemasını çiziniz.

Örnek 3: Yarıçap uzunluğu girilen dairenin alanını hesaplayıp sonucunu ekrana yazdıran programın akış semasını çiziniz.

Algoritma:

A1. Başla

A2. sayı tanımla

A3. sayı’yı gir

A4. sayı’yı ekrana yaz

A5. Bitir.

Algoritma :

A1. Başla

A2. Sayılar s1,s2, Sonuç toplam olsun

A3. s1’i gir

A4. s2’yi gir

A5. toplam= s1 + s2

A6. toplam’ı ekrana yaz

A7. Bitir

Algoritma:

A1. Başla

A2. Yarı çap r Alan al, Çevre cev, pi=3,14 olsun

A3. r’yi gir

A4. alan = pi * r * r

A5. alan’ı ekrana yaz

A6. Bitir.

Page 15: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

15

Örnek 4: Dolar miktarı ve günlük kur girildiğinde TL miktarını hesaplayan program. Bu algoritmanın oluşumunda girişler; 1 Amerikan dolarının TL karşılığı, hesaplanacak $ miktarı, çıkış ise verilen $'in TL karşılığı olacaktır.

Örnek 5: Kullanıcının klavyeden girdiği vize ve final notlarına göre ortalamayı hesaplayıp ekrana yazan, 60 barajına göre “Geçtiniz” veya “Bütünlemeye Kaldınız” mesajı veren programın akış diyagramını hazırlayınız.

Algoritma:

A1. Başla

A2. vz, fnl, Ort tanımla

A3. vz’i gir

A4. fnl’i gir

A5. Ort= (vz * 0,4) + (fnl * 0,6)

A6. Ort’yı ekrana yaz

A7. Eğer (Ort > 60) ise

A8. Ekrana “Geçtiniz” yaz

A9. Değilse “Kaldınız” yaz

A10. Bitir

Çözüm Algoritma:

A1. Başla

A2. dd, dolar, tl

A3. dd'i gir

A4. dolar’ı gir

A5. tl=dd * dolar

A5. tl değerini ekrana yaz

A9. Bitir

Page 16: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

16

Örnek 6: 1'den 100'e kadar olan sayıların toplamlarını ve ortalamalarını veren programın akış diyagramını çiziniz. A1: Başla

A2: say, top, ort

A3: say=0, top=0

A4: say=say+1

A5: top=top+say

A6: say<=100 ise A4’e git

A7: ort = top / 100

A8: top ve ort’u ekrana yazdır

A9: Bitir

Örnek 7: Kullanıcının gireceği bir sayının faktöriyelini hesaplayan programın algoritmasının oluşturulması.

Sayının faktöriyeli: fakt

Faktöriyeli hesaplanacak sayı: sayi

A1. Başla

A2. fakt = 1, sayi

A3. Sayi’yi gir

A4. fakt = fakt * sayi

A5. Sayi = sayi -1

A6. sayi >= 1 ise A4’e geri dön

A7. fakt değerini ekrana yaz

A8. Bitir.

Bu algoritmada 1. adımda X 'e 0 ve Fak değişkenine 1 değeri atanıyor. 2. adımda Y değeri giriliyor ve 3. adımda Y değerinin 0 dan küçük bir değer olup olmadığı denetlenerek, sonuca Gore gerekli komut veriliyor. 4. adımda X'in değeri 1 arttırılıyor ve 5. adımda X için Fak değeri hesaplanıyor. 6. adımda X in değerinin faktöriyeli hesaplanacak sayıdan küçük olması durumunda 4. adımdan itibaren işlemlerin tekrarlanması komutu veriliyor, X' in değerinin Yiye eşit olması durumunda işlemler tamamlanarak hesaplanan değerin yazdırılması işleminden sonra programın çalışması sona ermektedir.

Page 17: Prog Temelleri son - Resul TUNAProblem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu

17

PROGRAMLAMA TEMELLERİ ALGORİTMA – AKIŞ DİYAGRAMI ÇALIŞMALARI

Soru1. Kullanıcının girdiği sayının faktöriyelini

hesaplayan ve ekrana yazan programı yazınız. (sayaç

kullanarak)

Soru 2. 0 ile 10 arasındaki sayıların toplamını hesaplayıp sayıları ve toplamı ekrana yazan

programın akış diyagramını yapınız.

Soru 3. Başlangıç ve bitiş değerleri kullanıcı tarafından

belirlenen aralıktaki sayıları ve bu sayıların toplamını

ekrana yazan program

Soru 4. Kullanıcını girdiği iki sayıyı isimlendirerek

büyük ve küçük olan sayıyı söyleyen eğer sayılar eşit

ise “sayılar eşittir” mesajı veren program.