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
bakisaçisiile 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 platform” denir.
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 down” tasarim 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
aç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 50den 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 Sayi2den büyük Ise
Yaz; "Sayi1 Sayi2den büyüktür."
Eger Sayi2 Sayi1den büyük Ise
Yaz; "Sayi2 Sayi1den 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