Dersizle Forumları

Full Versiyon: Bigisayar Programlamaya giriş......
Şu anda tam olmayan bir veriyonu görüntülüyorsunuz. Tam versiyonu görmek için, buraya tıklayın

b]BÖLÜM 1
BILGISAYAR PROGRAMLAMAYA GIRIS[/b]

Insanlar her zaman düsünür ve problem çözerler. Bir çok problem, az yada hiç
düsünülmeden çözülebilir.
Her gün evden çikarken ne giyilmelidir? Bunun için muhtemelen pencereden disariya
bakilir. Hava yagmurlu ise mevsim gereklerine göre giyinmenin yani sira disariya
çikarken bir de semsiye alinmasi gerekir. Hava günesli ve sicak ise o taktirde daha
ince giyinilerek disariya çikilir. Böylece problemin çözümü kendiliginden olusturulan
bir kararla saglanir.
Yukaridaki basit örnekte yapilan is, önce problemin belirlenmesi ve sonra problemin
tanimindan yola çikarak çözüm için degisik alternatiflerin degerlendirilmesidir.
Bilgisayar programlamasi sirasinda izlenebilecek bir çok yol ve yöntem vardir.
Bilgisayar programcisinin probleme iliskin çözümü ortaya çikarabilmesi için problem
çözümü ile ilgili bilgileri bilmesi gerekir. Bilgisayar programlamasinda genel olarak
belirli kalip ve kurallara uyulur. Bir bilgisayar yaziliminin olusturulmasi sirasinda
asagida siralanan ana adimlara uyulur.
* Problemin tanimi
* Çözüm yönteminin belirlenmesi
* Programin kodlanmasi
* Programin çalisir duruma getirilmesi
* Belgeleme ve güncellestirme
Problemin Tanimi: Problemin normal yazi diliyle tanimlanmasi islemlerini
kapsamaktadir. Problem çözümüne iliskin iyi bir program yapabilmek için, problemin
iyi bir sekilde tanimlanmasi gerekir.
Çözüm Yönteminin Belirlenmesi: Bu adimda çözümün genel yaklasimi, temel
giris/çikislar belirlenir ve problem çözümü adim adim program akis diyagramlariyla
gösterilir.


2
Programin Kodlanmasi: Program ayrintili olarak tanimlanip çözüm yollari açikça
belirtildikten sonra program kodlama çalismalarina baslanabilir. Programin bastan
sona yapisal bir düzende hazirlanmasi ve uygun bir programlama dili seçilmesi seçim
isleminin ilk asamasini olusturur.
Programin Çalisir Hale Getirilmesi: Programin kodlanmasi sirasinda yapilan imla
hatalari, kodlama ve mantik hatalarinin giderilmesi islemlerini kapsar. Iyi bir bilgisayar
programinin dogrulugundan emin olmak için defalarca test edilmis olmasi
gerekmektedir.
Belgeleme ve Güncellestirme: Olusturulan bir yazilimi, sadece o yazilimi gelistiren
kisilerin kullanabilmesi gibi bir kisitlamanin önüne geçmek için ayrintili referanslar
hazirlanmali ve programla ilgili bilgiler verilmelidir.
Bir yazilimda, o yazilimi kullanan kisi veya kuruluslarin yeni gereksinimleri ve degisen
kosullar nedeniyle degisiklikler yapilmasi gerekli olabilir. Bu degisikliklere güncelleme
adi verilir. Iyi bir programda bulunmasi gereken özellikler arasinda güncellesebilme
ön siralarda yer almaktadir.


3

1.1 Algoritma Kurma
Algoritma, verilen herhangi bir sorunun çözümüne ulasmak için uygulanmasi gerekli
adimlarin hiç bir yoruma yer vermeksizin açik, düzenli ve sirali bir sekilde söz ve yazi
ile ifadesidir. Algoritmayi olusturan adimlar özellikle basit ve açik olarak
siralandirilmalidir. Algoritmik çözüm yöntemlerine ilk örnegi günlük yasantimizdan
verelim.

Örnek 1: Örnegimiz bir insanin evden çikip ise giderken izleyecegi yolu ve isyerine
girisinde ilk yapacaklarini adim adim tanimlamaktadir.

Çözüm 1:
Evden disariya çik
Otobüs duragina yürü
Durakta gidecegin yöndeki otobüsü bekle
Otobüsün geldiginde otobüse bin
Biletini bilet kumbarasina at
Inecegin yere yakinlastiginda arkaya yürü

4
Inecegini belirten ikaz lambasina bas
Otobüs durunca in
Isyerine dogru yürü
Is yeri giris kapisindan içeriye gir
Mesai arkadaslarinla selamlas
Is giysini giy
Isini yapmaya basla.
Yukaridaki örnekte görüldügü gibi, evden ise gidiste yapilabilecek islemler adim adim
sirasiyla, kisa ve açik olarak tanimlanmaya çalisilmistir. Yukaridaki algoritma kisinin
otobüsü kaçirma olasiligi düsünülmeden olusturulmustur. Kisi duraga geldiginde
binecegi otobüsü kaçirmis ise algoritmamiz asagidaki sekilde degistirilebilir.

Çözüm 2:
Evden disariya çik
Otobüs duragina yürü
Otobüsün saati geçmis ?
Durakta gidecegin yöndeki bir sonraki otobüsü bekle
Bir sonraki otobüs gelene kadar 4. adimi uygula
Otobüsün geldiginde otobüse bin
Biletini bilet kumbarasina at
Inecegin yere yakinlastiginda arkaya yürü
Inecegini belirten ikaz lambasina bas
Otobüs durunca in
Isyerine dogru yürü
Is yeri giris kapisindan içeriye gir
Mesai arkadaslarinla selamlas
Is giysini giy
Isini yapmaya basla.
Her iki örnekte görüldügü gibi sorunu çözüme götürebilmek için gerekli olan adimlar
sirali ve açik bir biçimde belirlenmistir. Algoritmanin herhangi bir adimindaki küçük bir
yanlislik dogru çözüme ulasmayi engelleyebilir. Bu nedenle algoritma hazirlandiktan
sonra dikkatle incelenmeli ve varsa adimlardaki yanlisliklar düzeltilmelidir.
Programlamanin temeli olan algoritma hazirlanmasinda dikkat çekici bir nokta, ayni
sorunu çözmek için hazirlanabilecek olasi algoritma sayisinin birden çok olmasidir.
Baska deyisle, bir sorunun çözümü için birbirinden farkli birden fazla sayida algoritma
hazirlanabilir. Bu da gösteriyor ki herhangi bir problemin çözümü için birbirinden farkli
yüzlerce bilgisayar programi yazilabilir.
Bir bilgisayar programi için hazirlanacak olan algoritma da ayni sekilde çözüm yolunu
bilmeyen bir kisiye, çözüme ulasmak için neler yapmasi gerektigi anlatiliyormus gibi
hazirlanmali ve eksik bir nokta birakmaksizin gerekli tüm adimlari açik ve düzenli
olarak içermelidir. Çözüm için kullanilacak bilgilerin nereden alinacagi, nerede
saklanacagi ve çözümün program kullanicisina nasil ulastirilacagi algoritma adimlari
arasinda belirtilmelidir.

5
Asagida degisik islemlere iliskin algoritma örnekleri verilmistir.
Örnek 2: Iki sayiyi toplamak için gerekli programa ait algoritmanin olusturulmasi.

Algoritma:
A1 :Birinci sayiyi gir
A2 :Ikinci sayiyi gir
A3 :Iki sayinin toplamini yap
A4 :Toplamin degerini yaz
A5 :Bitir.

Bu tam bir algoritmadir. Sözcüklerin ortaya çikaracagi yanlis anlamalarin ortadan
kaldirmak amaciyla semboller ve matematik dilini gerektiren bazi kisaltmalar
kullanmak daha uygun olacaktir. Bir algoritma yazilirken su metot izlenmelidir:
Programda kullanilacak elemanlari temsil etmek üzere uygun isimler
veya degiskenler seç.
Bazi isimlere baslangiç degeri olarak çözümün gerektirdigi uygun
degerler ver.
Gerekirse programa girilecek verileri düzenle.
Cebirsel notasyon ve kararlar kullanarak aritmetik islemleri
gerçeklestir.
Çikisi düzenle.
Bitir.

Yukarida iki sayinin toplanmasi için olusturdugumuz algoritmayi bu yeni
gereksinimlere uyarak yeniden yazalim.

Toplam adi için Z
Birinci Sayi için X
Ikinci Sayi için Y degerleri kullanilirsa;

Algoritma:
A1 :X degerini gir
A2 :Y degerini gir
A3 :Z ? X+Y
A4 :Z' yi yaz
A5 :Bitir

Görüldügü üzere bu sekilde bir algoritma ile çözüm yolunu izlemek daha kolaydir.
Bundan sonra verilen örneklerde bu tip algoritma kullanilacaktir.

Örnek 3: Iki sayinin ortalamasini bulan programa ait algoritmanin olusturulmasi.

6
Algoritma:
A1 :X degerini gir
A2 :Y degerini gir
A3 :Z ? X+Y
A4 :Ort? Z/2
A5 :Ort degerini yaz
A6 :Bitir

Bu örnekte Ort degeri ile iki sayinin ortalamasi temsil edilmistir.
Örnek 4: Bes sayinin toplamini ve ortalamasini veren programa ait algoritmanin olusturulmasi

Toplam adi için Top
Ortalama adi için Ort
Girilen sayilar için X
Arttirma için Sayac kullanilirsa

Algoritma:
A1 :Top ? 0, Sayac ? 0
A2 :X'i gir
A3 :Top? Top+X
A4 : Sayac ? Sayac +1
A5 :Eger Sayac <5 ise A2'ye git
A6 :Ort? Top/5
A7 :Top ve Ort degerlerini yaz
A8 :Bitir

Örnek 5: Kenar uzunluklari verilen dikdörtgenin alan hesabini yapan programa ait algoritmanin hazirlanmasi. Kenar uzunluklari negatif olarak girildigi durumda veri girisi tekrarlanacaktir.

Dikdörtgenin kisa kenari : a
Dikdörtgenin uzun kenari : b
Dikdörtgenin alani : Alan

Algoritma:
A1 :a degerini gir
A2 :a<0 ise 1. adimi tekrarla
A3 :b degerini gir
A4 : b<0 ise 3. adimi tekrarla
A5 :Alan ? a*b
A6 :Alan degerini yaz
A7 :Bitir


7

Örnek 6: Çapraz döviz kuru hesabi yapan programin algoritmasinin olusturulmasi.
Bu algoritmanin olusumunda veriler; 1 Amerikan dolarinin TL karsiligi, hesaplanacak
$ miktari, çikis ise verilen $'in TL karsiligi olacaktir.
Dolarin degeri gulenoldeg
Girilen Dolar Miktari gulenolar
TL karsiligi :Tlkar

Algoritma:
A1 gulenoldeg'i gir
A2 gulenoldeg<0 ise 1. adimi tekrarla
A3 gulenolar'i gir
A4 gulenolar<0 ise 3.adimi tekrarla
A5 :Tlkar? Doldeg*Dolar
A6 :Tlkar degerini yaz
A7 :Bitir

Örnek 7: Verilen bir sayinin faktöriyelini hesaplayan programin algoritmasinin
olusturulmasi
Sayinin faktöriyeli :Fak
Faktöriyel degiskeni :X
Faktöriyeli hesaplanacak sayi :Y
Algoritma:

A1 :Fak? 1, X? 0
A2 :Y'i gir
A3 :Y<0 ise 2. adimi tekrarla
A4 :X? X+1
A5 :Fak? Fak*X
A6 :X<Y ise 4. adima geri dön
A7 :Fak degerini yaz
A8 :Bitir

Bu algoritmada 1. adimda X 'e 0 ve Fak degiskenine 1 degeri ataniyor. 2. adimda Y
degeri giriliyor ve 3. adimda Y degerinin 0 dan küçük bir deger olup olmadigi
denetlenerek, sonuca göre gerekli komut veriliyor. 4. adimda X'in degeri 1 arttiriliyor
ve 5. adimda X için Fak degeri hesaplaniyor. 6. adimda X in degerinin faktöriyeli
hesaplanacak sayidan küçük olmasi durumunda 4. adimdan itibaren islemlerin
tekrarlanmasi komutu veriliyor, X' in degerinin Y'ye esit olmasi durumunda islemler
tamamlanarak hesaplanan degerin yazdirilmasi isleminden sonra programin çalismasi
sona ermektedir.

8

1.2 Akis Diyagramlari
Gelistirilecek olan yazilimin genel yapisinin sematik gösterimine akis diyagrami adi
verilir. Akis diyagramlari, yazilimi olusturacak program parçalarini ve bu parçalarin
birbirleri ile olan iliskilerini belirler. Bir bilgisayar programinin olusturulmasinda akis
diyagramlarinin hazirlanmasi, algoritma olusturma asamasindan sonra gelmektedir.
Bilgisayar programinin olusturulmasi sirasinda algoritma asamasi atlanarak, dogrudan
akis diyagramlarinin hazirlanmasina baslanabilir. Programlama tekniginde önemli
ölçüde yol almis kisiler bu asamayi da atlayarak direkt olarak programin yazimina
geçebilirler.
Akis diyagramlarinin algoritmadan farki, adimlarin simgeler seklinde kutular içinde
yazilmis olmasi ve adimlar arasindaki iliskilerin (is akisi) oklar ile gösterilmesidir.
Akis diyagramlarinda kullanilan semboller, anlamlari ve kullanis amaçlari asagidaki
tabloda verilmistir.

Tablo 1. Is akis diyagramlarinda kullanilan temel semboller ve anlamlari
Simge Simgenin Adi Simgenin Anlami
Elips Akis diyagraminin baslangiç ve bitis
yerlerini gösterir. Baslangiç simgesinden
çikis oku vardir. Bitis simgesinde giris oku
vardir.

Paralel Kenar: Programa veri girisi ve programdan elde
edilen sonuçlarin çikis islemlerini gösterir.
Dikdörtgen Aritmetik islemler ve degisik atama
islemlerinin temsil edilmesi için kullanilir.
Eskenar Dörtgen Bir karar verme islemini temsil eder.
Altigen Program içinde belirli bloklarin ard arda
tekrar edilecegini gösterir.
Oklar Diyagramin akis yönünü gösterir.
Alt Program Procedure ve Function Alt programlari
gösterir
Ayrintili bir akis diyagrami, yazilimi olusturan islemleri ve iliskilerini en küçük detayina
kadar belirler.

9
Bir bilgisayar programinin gelistirilmesinde kullanilan programlama dili ne olursa olsun
bu programlarin akis diyagramlarinda genel olarak yalniz üç basit mantiksal yapi
kullanilir. Bu mantiksal yapilardan en basiti sirali yapidir. Sirali yapi, hazirlanacak
programdaki her islemin mantik sirasina göre nerede yer almasi gerektigini vurgular.
Bu yapi sona erinceye kadar ikinci bir islem baslayamaz.
Islem 1 Islem 2 Islem 3
Veri Girisi Çikis


Mantiksal yapilardan ikincisi Karar Verme yapisidir Programlama sirasinda
If...Then... Else yapisi ile taniyacagimiz bu mantiksal yapilar, birden fazla sirali yapi
seçenegini kapsayan modüllerde, hangi sartlarda hangi sirali yapinin seçilecegini
belirler.

Islem 1 Islem 2
Kosul
Dogru Yanlis
Çikis
Girdi

Üçüncü mantiksal yapi çesidini tekrarli yapilar olusturmaktadir. Bu yapilara Pascal programlama dilinde For While ve Repeat..Until yapisi
adi da verilir. Sartlara göre degisik islem gruplarinin yapilmasini saglar. Bu yapi yukarida sözü edilen iki yapinin çesitli kombinezonlarin tekrarlanmasindan olusmustur.
Söz konusu üç degisik yapi, degisik kombinezonlarda kullanilarak istenilen islevleri
yerine getirecek programlar hazirlanabilir. Programlarin bu üç basit yapi ile
sinirlandirilmasi program modüllerinin daha kolay tasarlanmasini saglar.

10

döngü_degiskeni:=1,N
Islemler
Ç ikis
G i r i s
a
Islemler
Dogru Yanlis
Giris
KOSUL Çikis
b

Tekrarli Yapilar

Akis Diyagrami Örnekleri
Bu bölümde, sözlü veya yazili olarak olusturdugumuz algoritmanin programa
dönüstürülmesi sirasinda programin çalisma sirasini da gösteren akis diyagramlariyla
ilgili örnekler asagida verilmistir.

Örnek 1: Iki sayinin toplamini ve ortalamasini yapan bilgisayar programinin akis
diyagramini çiziniz.

Basla
X1=?, X2=?
Toplam=X1+X2
Ortalama=Toplam/2
Toplam, Ortalama
Bitir


11
Örnek 2: 1'den 100'e kadar olan sayilarin toplamlarini ve ortalamalarini veren programin akis diyagramini çiziniz.

Basla
Toplam:=0
Say:=say+1
Say:=0
Toplam:=Toplam+Say
Say=100
Ortalama:=Toplam/Say
Toplam, Ortamala
Bitir
Evet
Hayir

Örnek 3: Ax+b=0 seklinde verilen 1.derece denklemin çözümünü veren programa ait akis diyagramini çiziniz.

Basla
A=?
X= -B/A
A>0
B=?
X
Bitir


12

Örnek 4: Ax²+Bx+C=0 seklinde verilen 2. derece denklemin köklerini bulan
programin akis diyagramini çiziniz.

Basla
A=?, B=?, C=?
Disk:=B²-4*A*C
Disk<0
Evet
Hayir
X1:=(-B+ DISK )/(2A)
X2:=(-B- DISK )/(2A)
'KÖKLER SANAL'
X1, X2
Bitir

Yukaridaki örnekte A=0 girilmesi durumunda denklem 1.derece olmaktadir. Bu durumu dikkate alarak gerekli çözümü de gösterecek sekilde akis diyagramini degistiriniz.

13

Örnek 5: 1' den 100'e kadar sayilarin karelerini, kareköklerini, küplerini, küpköklerini toplamlarini ve ortalamalarini veren programin akis diyagramini çiziniz.

Basla
Toplam:=0
Say:=0
Say:=say+1
Say=100
Ortalama:=Toplam/Say
Toplam, Ortamala
Bitir

Evet
Hayir
Toplam:=Toplam+Say
Kare:=Say
KareKök:=Say1/2
Kup:=Say 3

2
Kupkok:=Say1/3
Say,Kare,Ku
Kaprekok,Kupkok

14

Örnek 6: Yukarida karar mantigi yapisi ile çözümledigimiz problemi döngü yapisi ile
çözümleyelim.
Basla
Toplam:=0
Ortalama:=Toplam/Say
Toplam, Ortamala
Bitir

Toplam:=Toplam+Say
Kare:=Say
KareKök:=Say 1/2
Kup:=Say 3

2
Kupkok:=Say 1/3
Say,kare,Kup
Karekok,Kupkok
Say:=1,100

15

Örnek 7:10 tane N sayisinin faktöriyelini hesaplayan programin akis diyagramini çiziniz.

N?
Faktor:=1
Sayac:=Sayac+1;
Faktor:=Faktor*Sayac
Sayac:=0;
Sayac<N
Faktor
Dongu<10
Dongu:=1
Dongu:=Dongu+1
Basla
Evet
Hayir
Evet
Hayir
Bitir


16

Örnek 8: Yukaridaki örnegi tekrarli yapi olarak tanimladigimiz döngü yapisi ile çözelim.

N?
Faktor:=1
Faktor:=Faktor*Sayi
Faktor
Basla
Bitir
FHS:=1,10
Sayi:=1,N


17

Örnek 9: Elimizde bulunan A,B, ve C gibi 3 adet sayidan en büyügünü ve en küçügünü bulan programin akis diyagramini çiziniz.

A=?, B=?, C=?
Enbuyuk:=A;
B>Enbuyuk Enbuyuk:=B; C>A
Enkucuk:=C;
Enkucuk:=A;
C>Enbuyuk
Enbuyuk:=C;
C>Enbuyuk Enbuyuk:=C;
Enkucuk:=B;
C>B Enkucuk:=B;
Enkucuk:=C;
A,B,C
Enbuyuk, Enkucuk
Bitir

E
E
H
E
H
H
H

Basla

18

Örnek 10: Elimizde bilinmeyen sayida koni bulunmaktadir ve koniye ait yariçap ® ve yükseklik (H) degerleri klavyeden girilmek suretiyle V=? ?.R².H/3 förmülü ile hacim hesabi yapilacaktir. Koniye ait yariçap degeri 0 girildiginde programin çalismasi duracaktir. Programda her girilen veri için hacim degeri rapor edilecek, programin çalismasi bittiginde toplam kaç koni için hacim hesabi yapildigi da belirtilecektir.

Konisayi:=0
Konisayi:=Konisayi+1
R=?
R=0
E
H
H=?
V=Pi*.R².H/3
R,H,V
Konisayi
Bitir

Basla

Verilen akis diyagraminda R ve H degerlerinin negatif girilmesine engel olacak sekilde
akis diyagramini yeniden düzenleyiniz.

19
Örnek 11: F(x) kesikli fonksiyonunun degeri X'in aldigi degerlere göre asagida verilmistir. X'in degeri 0-10 arasinda 0.5 araliklarla arttigina göre her bir X degeri için F(x) fonksiyonunu hesaplayan programin akis diyagramini çiziniz.

0? X ? 2 f(x)= X
2< X ? 3 f(x)=X3-X2-2
3< X ?4 f(x)=X2-2X+13
4< X f(x)=X4-3X2-43
X:=0
0<=X<=2
2<X<=3
3<X<=4
f(x):=X 4-3X2 -43
f(x):=X
f(x):=X -X -2
f(x):=X -2X+13
3 2
2
X, f(x)
X:=X+0.5
X>20
Basla
Bitir

E
E
E
N
E
H

20

Örnek 12: Pi sayisinin formülü (( + ...).4)
9
1
7
1
5
1
3
1
1 ? ? ? ? olduguna göre
serinin paydasindaki ifade 99 oluncaya kadar pi sayisini hesaplayan bilgisayar
programinin akis diyagramini çiziniz.
Toplam:=0
I:=1
Sayac:=1
Top:=1/Sayac*I
Toplam:=Toplam+Top
Sayac:=Sayac+2
Sayac=99
I:= -I
Pi
Bitir
Basla
Pi:=Toplam*4

[/align]
Referans URL