Root > Documents > Programlama > Prgramlama Tmelleri(Prg.Yazımı)
Cyber-Warrior.Org \ Doküman \ Programlama > Prgramlama Tmelleri(Prg.Yazımı)
Madde
  Yazar : //Y!G!D0//
  Date : 08.10.2010 22:03:59
 
# Prgramlama Tmelleri(Prg.Yazımı)
 

Programlama Temelleri 

2. PROGRAM YAZIMI

Su anda oturup programlama yapabilir olsaniz da, bu bir

bebegin önüne yemesi için gerekli malzemeyi savurmaya benzer.

Basit programlariögrenmek için hemen yazabilirsiniz.

Ekranin ortasina okulunuzun adiniyazmaniz için uzun uzun plan

yapmaniza gerek yoktur. Ama çok karmasik programlari,

bilgisayariniza aktarmadan önce, kâgit üzerinde planlamaniz

gerekebilir.

Programitasarlarken, ilk düsünmeniz gereken sey “hangi dili kullanacaginiz” degildir.

Programdan ne istediginizi tam olarak bilirseniz, hangi dili kullanacaginiza kolay karar

verirsiniz. Tek bir dili aramak yerine, degisik dilleri göz önünde bulundurunuz. Programiniz

çalistigisürece, hangi dil ile yapildigiönemli degildir, özellikle de programinizialan

“müsteri” (kullanicida diyebiliriz) bununla ilgilenmez.

Bilgisayarda çözmeniz gereken problemin, sadece bir çözümü (algoritmasi)

olmayabilir. Her çözümün kendi avantajiveya dezavantajiolabilir. Bazialgoritmalar daha

hizliolarak islemi bitirirken, aynialgoritmanin kod kisminiyazmak çok uzun sürebilir,

mantigiçok karmasik olabilir. Sik agaçlarla kaplibir ormana, disaridan baktiginizda içinden

geçip gitmenin imkânsiz gibi gözüktügünü bilirsiniz. Islemleri adimlara böldükçe

hazmetmesinin daha kolay oldugunu göreceksiniz. Planlama sayesinde, yanlisprogram kodu

üzerinde ugrasmaz, çözüm için zaman kaybetmezsiniz.

Programitasarlarken sunlarigöz önünde bulundurmalisiniz:

Kullanici: programikim kullanacak?

Hedef bilgisayar: Windows mu, Linux mu, bir el

bilgisayarimi, yoksa bir süper bilgisayar mi?

Siz: tek basiniza miyapacaksiniz? Takim halinde

çalisacak iseniz hangi kisimlarisiz yazacaksiniz?

Kullanici

Eger programisadece siz kullanacaksaniz, görünümü istediginiz gibi

tasarlayabilirsiniz, çalismasiyeterlidir. Satacak veya ücretsiz olarak

verecek iseniz, karsinizdaki insanlaritanimaniz mantikliolur. Kullanicinin

bakisisiile bakarak programitasarlamaniz gereklidir.

Hedef bilgisayar

Kullanicinin kullandigibilgisayarin türünü göz ardiedemeyiz.

Programlama dilini buna göre seçeriz. Hangi donanimikullandigida

önemlidir. Bir Mac kullanicisiiçin bol hafiza, disk alani, renkli grafikler, ses

avantajivarken, bir el bilgisayarinda ise daha az renk seçenegi, ekran

çözünürlügü ve bellegi vardir. Bir program ne kadar çok çesitli ortamda

çalisiyor ise o kadar ragbet görür. Bu prensibe “çapraz platform – cross platformdenir.

Kullanicisayisiniartirma çabalarimiz, beraberinde daha fazla hata türü ile karsilasmamiza

neden olur. Müsteri destegi saglarken bunlara dikkat edilmelidir. Farklisürümlere bölünmek,

kârin bölünmesi demektir.

Not: Borland firmasi, görsel programlama dili Delphi’nin Linux sürümü olan Kylix’i çikarmistir.

Fakat sadece 1.0 sürümünde kalakalmis, proje ileri götürülememistir.

Siz

Herhangi bir programlama dili ile ugrasirken, önce kendi

yeteneklerinize dikkat edersiniz. Iyi bir proje akliniza gelmisolabilir. Ama

deneyiminiz az ve bilginiz az olunca, kendi programiniziyazmak zor

gelebilir. Acemi biri için C ve C++ ile program yapimiçok zaman alici

olabilir. Daha basit olarak Visual Basic’te program yazmayiögrenip,

piyasada çalismaya baslayabilirsiniz.

Bir günde program yazan çok az insan vardir. Program kod yazimizaman alir, acele

yapildiginda içi hatalarla dolabilir. Ne yapacaginizdan emin olduktan ve istenen programin

ne isyapacaginianladiktan sonra program yapimina baslayiniz.

Altin Kelepçeler

Birçok insan program yazmak yerine “programci” ise alirlar. Aman dikkat! Özgür

çalisan baziprogramcilar “altin kelepçe” kuraliile geçiniyor olabilir. Bir programciyiise

alirsiniz, biraz para verirsiniz. Programcitam istediginiz gibi bir program yazmaz. Parayi

kaybetmek yerine, biraz daha para vererek, programin yeni sürümünü yaptirirsiniz. Iste bu

noktada kelepçelendiniz demektir. Programciya devamlipara verir ama hiçbir zaman

istediginiz programielde edemezsiniz. Baska programciya da geçemezsiniz; çünkü kaynak

kod elinizde degildir. Elinizde olsa bile kimse o programidegistirmek için zaman harcamaz.

2.1. Prototip (Kalip) Olusturma

Tam çalismayan veya yanlisçalisan bir program olmamasiiçin programa aylarca

zaman harcamadan önce, programcilar mimarlarin maket modeller yapmasigibi, “prototip”

olustururlar. Bunu normal bir program gibi, menüleri, formlari, diyalog kutulariolan ama

içinde kod olmayan bir uygulama olarak düsünebilirsiniz. Fikir vermek amaciile yapilirlar.

Prototipten memnun kalinca, programcikodlamaya geçer. Birçok programciVisual Basic

veya Delphi gibi görsel bir programlama dili ile prototip hazirlar.

2.2. Sahte Kod ve Algoritma Yazma

Programlama dili seçseniz bile, hemen kod yazimina geçemezsiniz. “Pseudocode

sahte kod” denilen kodlama ile programin islemleri yazilir. Sahte kod kurdugunuz

mantiktaki kaçaklaribulmaya yarar.

Örnegin; eger bir sehre füze göndermek isterseniz adimlariniz su sekilde olabilir:‡‡

1. Hedefin koordinatlarinial

2. Füzenin su anki koordinatinial

3. Hedefi vurmasiiçin gerekeni hesapla

4. Füzeyi atesle

1. adimin daha da gelismishâli söyle olabilir:

1.a. Füze teknisyeninden hedef koordinatlariedin

1.b. Hedef koordinatlarin geçerli oldugundan emin ol

1.c. Hedef koordinatlarihafizaya kaydet

1.a. maddesini daha alt basamaklara bölebiliriz.

1.a.i. Koordinattan emin ol

1.a.ii. Hedef füzenin atisuzakligiiçinde mi, kontrol et

1.a.iii. Hedef dost bölge mi, kontrol et

Bu “üstten asagi– top downtasarim ile kaba bir taslak gittikçe ayrintilisekilde

parçalanir. Genelden özele dogru islemleri belirleriz. Bu zaman kaybigibi görülebilir.

Plansiz olarak programiniziyazmaya baslayabilirsiniz. Ama bu arabaya atlayip Samsun’dan

Mersin’e gitmek için kuzeye dogru gitmeye benzer.

‡‡ Ilk üretilen bilgisayarlardan istenen, hizlihesap gücü sayesinde dogru bir sekilde sonuç vererek,

silahlara destek olmakti

Sahte kodlar programinizin ana hatlarinibelirtir. Böylece bilgisayarin basaracagiis

için gerekli tüm veriyi toplamisolursunuz.

Büyük bir programin temel adimlarinin oldugu algoritma “makro seviye” olarak

isimlendirilirken, detaylarin algoritmalarina “mikro seviye” denir. Makro seviye içinde

birçok mikro seviye algoritma vardir. Ilk kez program yazan kisiler detay kisimlarinigenelde

görmezden gelirler. Üzerinde çok düsünülmeden yazilan program, her ihtimale uygun cevap

veremeyecegi için hataliçalisir.

Eger plansiz olarak program yazarsaniz, kaçinilmaz son, kisa süre sonra “kod

çöplügü” olabilir. Programialan kisi nasil kod yazdiginiziumursamasa da, böceklerle (bug)*

dolu bir yazilimi, siz olsaniz kullanir miydiniz?

Temelde programiniziüç ana bölüme ayirabiliriz:

Giris: Bilgisayarin üzerinde çalisacagiveri kullanicitarafindan girilir.

Islem: Bilgisayar girilen bilgiyi isler.

Çikis: Bilgisayar insanlarin anlayacagisekilde ekrana sonucu gösterir.

Örnek:

Giris:

a. Ürünün adinial.

b. Ürünün miktarinial.

c. Bir dosyadan ürünün fiyatinioku.

Islem:

a. Ürünün toplam fiyatinihesapla.

b. Gerekli indirimi yap.

Çikis:

a. Toplam satisdegerini yaz.

Örnekteki adimlari“sahte kod” olarak alt alta toplarsak:

1. Basla.

2. Ürünün adinial.

3. Ürünün miktarinial.

4. Bir dosyadan ürünün fiyatinioku.

5. Ürünün toplam fiyatinihesapla.

6. Gerekli indirimi yap.

7. Toplam satisdegerini yaz.

8. Bitir.

Bazitemel sahte kod komutlarisunlardir:

Basla… Bitir : Sahte kodun ilk satiribaslangiç ve son satiribitisi için yazilir.

Oku : Kullanicigirisi için yazilir.

Yaz : Kullaniciya bilgi veya sonuç göstermek için yazilir.

Eger Ise Degilse : Sartlara göre akisin degismesinde kullanilir.

* Böcek (bug): Programda hatalara sebep olan program satirlardir.

Örnek:

1. Basla

2. Sayisal sayi1, sayi2, sonuc

3. Yaz; Iki sayigiriniz”

4. Oku; sayi1

5. Oku; sayi2

6. sonuc = sayi1 + sayi2

7. Yaz; “Sonuç: ” & sonuc

8. Bitir

Not: Birden fazla deger pespese okumada, kisaca su sekilde de tek satirda okuma yapabilirsiniz:

Yaz; “Iki sayigiriniz”

Oku; sayi1, sayi2

Sahte kodu satir numaralariolmadan “bloklar” hâlinde yapabiliriz. Her blok

ildiginda biraz daha içeriden yazmaya dikkat ediniz. Böylece program daha okunaklihâle

gelir.

Örnekler:

 Ögrenci notlariile ilgili sahte kod yazalim:

Basla

Sayisal ögrenciNumarasi

Yaz; grenci numarasini giriniz"

Oku; ögrenciNumarasi

Veritabanindan ögrenciNotu bilgisini oku

Eger ögrenciNotu 50’den büyük Ise

Yaz; ögrenciNumarasi & " Geçti"

Degilse

Yaz; ögrenciNumarasi & " Kaldi"

Eger Bitti

Bitir

 2 sayiyikarsilastiran sahte kod yazalim:

Basla

Sayisal Sayi1, Sayi2

Oku; "Birinci sayiyigiriniz", Sayi1

Oku; "Ikinci sayiyi giriniz", Sayi2

Eger Sayi1 Sayi2’den büyük Ise

Yaz; "Sayi1 Sayi2’den büyüktür."

Eger Sayi2 Sayi1’den büyük Ise

Yaz; "Sayi2 Sayi1’den büyüktür."

Degilse

Yaz; "Sayi1 ve Sayi2 esittir."

Eger Bitti

Eger Bitti

Bitir

Kitap indirimi ile ilgili sahte kod yazalim:

Basla

Yaz; "Kitap türünü giriniz"

Oku; kategori

Eger kategori A Ise Yaz; "A kategorisinde %10 indirim vardir."

Eger kategori B Ise Yaz; "B kategorisinde indirim yoktur."

Bitir

Siz de basit olarak bir çay makinesinin, ütünün ve telefonun kullanimiile ilgili

adimlariyaziniz.

2.3. AkisSemalari

Akisdiyagramlarigörsel olarak basitçe bir problemin akisinin gösterimidir. Microsoft

firmasinin Visio, Word, Powerpoint gibi birçok program ile bu grafikleri hazirlayabilirsiniz.

Biz de baziörnekleri denemek ve çizmek için “Flow Chart Visual Programming

Language§§” isimli açik kaynak kodlu*** bir proje olan programikullanacagiz. Ayrica

“Crocodile Technology” isimli program ile de akissemalarinin hem tasarlanmasihem de

çalistirilmasiimkânimiz var.

Sema ile program hazirligiayrica UML ile yapilabilir. UML††† Ingilizce Unified

Modelling Language (BirlestirilmisModelleme Dili) kelimelerinin basharflerinden meydana

gelir. Modelleme sirasinda kullanilacak bir dizi sematik gösterimi teskil eder. Genelde nesne

tabanlisistemlerin analiz ve modelleme asamalarinda kullanilir. Nesnelerin birbirleri

arasindaki iliskilerini ve kendi iç yapilarinigösterir. Programlama dilinden ve isletim

sisteminden bagimsiz bir modelleme dilidir. “IBM Rational Rose” programive ArgoUML

ile tasarim yapabilirsiniz.

ANSI (American National Standards Institute), akisdiyagramlariile ilgili bazi

tavsiyelerde bulunmustur:

 Akisdiyagramindaki standart sembollerle programin mantigisunulmalidir.

 Akisdiyagramibasit, açik ve kolay takip edilebilir olmalidir.

 Her akisdiyagraminin bir adet baslangiç ve bitisnoktasibulunmalidir.

 Akisdiyagraminin takip yönü yukaridan asagiya, soldan saga dogru olmalidir.

 Veri girisleri mantiklibir sirada listelenmelidir.

 Baslangiç ve bitissembollerinde tek hat kullanilmalidir.

 Akisdiyagramiçok karmasik hâle gelince, baglantinoktalarive alt program

kullanilmalidir.

 Test verisi ile sema denenmelidir. Degerleri bir tabloya aktarilmalidir.

 2005 yilinda 3.0 sürümüne ulasan “Visual Basic 6” ile yapilmisprogramidir.

 Programin dagitiminda kaynaklarida dâhil olursa “açik kaynak kod” proje adiverilir.

 Bir standart olarak “Object Management Group” (OMG) tarafindan dünyaya yayilmaktadi

2.4. Karar Tablolari

Baska bir programlama yardimcisikarar tablolaridir (decision table). Çok karmasik

karar yapilaribu sayede kolayca çözülebilir hâle gelir.

Sart kütügü, sart, durum kütügü ve durum olmak üzere tablo halinde 4 parçadan

olusur.

Sart kütügü Sartlar

Durum kütügü Durumlar

Sart kütügü: Hangi kararlar verilecek?

Sartlar: Sartin alternatifleri neler?

Durum kütügü: Belli sartta ne yapilacak?

Durumlar: E (Evet) ve H (Hayir) halinde hareket seçenekleri

Örnek: ABC sirketi bir sekreter eleman alacaktir. Sartlari:

a. Aday bayan olmali

b. En az 2 yil deneyimli olmali

c. Bekâr olmali

Tüm olabilecek durum gözden geçirilerek hata olmasiengellenir. Akisdiyagramina

göre daha okunaklidir. Fakat ilk kez program yazanlar genellikle akisdiyagramiçizmeyi

tercih ederler.

Asagidaki sorularin sahte kod, akissemasiveya karar tablolariyöntemi ile

çözümünü yapiniz:

1. Bir siniftaki 5 ögrencinin notlarigirilir, ortalamasihesaplanir.

2. Bir elektronik magazasinda 37 ekran televizyonlar %20, 54 ekran televizyonlar

da %15 indirim yapiliyor. Buna göre ekran boyutu girildiginde, indirim oranini

mesaj olarak gösteriniz.

3. Bir üniversite teorik dersin 25 saatine 1 kredi, laboratuvarin 10 saatine 1 kredi

veriyor. Ders ve laboratuvar saati girilince toplam krediyi hesaplayan programi

yaziniz.

Sahte kodu karisik olarak verilen problemin satir siralarinidüzeltiniz. Problem

sudur; 3 ürünün satisve maliyet fiyatlarigirilir, kârlaritoplanir ve ortalamalarialinir.

Üç ürünün kârinitopla.

Üçüncü ürünün satisfiyatinigir.

Birinci ürünün satisfiyatinigir.

Toplami3’e bölerek ortalamasinibul.

Üçüncü ürünün maliyet fiyatinigir.

Bitir.

Ikinci ürünün satisfiyatindan maliyet fiyatiniçikarip kârinibul.

Ikinci ürünün maliyet fiyatinigir.

Ortalama kârigöster.

Basla.

Üçüncü ürünün satisfiyatindan maliyet fiyatiniçikarip kârinibul.

Ikinci ürünün satisfiyatinigir.

Birinci ürünün satisfiyatindan maliyet fiyatiniçikarip kârinibul.

Birinci ürünün satisfiyatinigir.

* Buradaki ^ sapka karakteri Basic dilinde “üs” alma islemi için kullanilan isleçtir.

2.5. Bir Programin Hayat Döngüsü

Çok az program; yazilir, gelistirilir ve öylece birakilir. Bunun yerine, kullanilmayacak

hale gelene dek, program degisik döngülerde güncellenir. Fakat her sey devamlidegismez,

mesela neredeyse her yil yeni bir kelime islemci programisürümü çikarilmasina ragmen,

alfabedeki harfler hep aynikalir.

Genel olarak tipik bir program döngüsü söyledir:

Gelistirilme asamasi(ilk olusturulma ve

yayimlanma)

Bakim döngüsü (olabildigince kisa zamanda

böceklerin ayiklanmasi)

Iyilestirme döngüsü (yeni özellikler katma)

Gelistirme asamasi:Her program programcinin bilgisayarinda bosbir ekran olarak

baslar. Bir fikirden, gerçek bir program oluncaya dek, gelistirme asamasidevam eder.

1. Fikir dogar.

2. Programin tipik hali ortaya çikar.

3. Hangi bilgisayarlarda çalisacagibelirlenir.

4. Sahte kodlar yazilir.

5. Bir veya daha fazla dil seçilir.

6. Program yazilir.

7. Test edilir. (Alfa sürümü denir.)

8. Problemler giderilir. (7 ve 8. adim gerektigi kadar tekrar edilmelidir.)

9. Diger insanlara test etmeleri için verilir. (Beta sürümü denir.)

10. Problemler giderilir. (9 ve 10. adim gerektigi kadar tekrar edilmelidir.)

11. Halka program sunulur ve pazarlandigigibi çalismasiumulur.

Bakim döngüsü: Çogu programci, eski bir programigüncellemek yerine yeniden

program yazarlar. Güncellemek aynen, kendi evinizi temizlemek yerine, baskasinin evini

temizlemek gibidir.

Bakim gerektiginde su adimlar yapilir:

1. Programin hangi kisminda hata oldugu bulunur.

2. Böcek temizlenir.

3. Yeni böceklere sebep olunup olunmadigianlasilmasiiçin test edilir.

4. Testte görülen böcekler temizlenir. (1 ve 4 arasiher böcek için tekrar edilir)

5. Yazilim için yama gelistirilir.

Iyilestirme döngüsü: Yazilimin tamiri ve kararli, güvenilir hâle gelmesi, ücretsiz bir

destek hizmeti oldugu için sirket para kazanmaz. Bunun yerine yeni eklentilere sahip

sürümleri satmak kazandiri

Yeni yazilim ve donanim ortamlarinin avantajinikullanmak için birçok program,

tekrar elden geçirilir.

1. Programa ne eklenecekse belirlenir.

2. Bu özellik nasil çalisacak ise sahte kodlar ile yazimi

yapilir

3. Program degistirilir.

4. Alfa sürümü olarak test edilir.

5. Hatalar tespit edilip giderilir.

6. Beta sürümü olarak test edilir.

7. Beta testçilerinin hata raporlariokunur. (1 ve 7. adimlar arasiher eklentide tekrar

edilir.)

8. Halka sunulur ve çikabilecek yeni hatalar beklenir. (Bakim döngüsüne girilir.)

Üniversitelerdeki ve sektördeki “yazilim mühendisligi” sözündeki mühendislik,

aslinda daha çok “sanat” olarak kullanilabilirdi. Yazmak, degistirmek ve güncellemek

yüksek bir zekâ ve matematik bilgisi gerektirmez. Daha çok üretkenlik, azim ve bol hayal

gücü gerektirir.

Istediginiz sekilde program yazabilirsiniz. Ama ileride olabilecek problemleri

önlemek için en iyi yol, planli olmakti.

ALINTIDIR!!!

Kaynak = megep.meb.gov.tr

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©