PROGRAMLAMAYA GİRİŞ


Genel Programlama Bilgisi
Bir Programcının Program yazabilmesi için yapması gereken çalışmalar ve
bilmesi gereken ön bilgilere ihtiyacı vardır.

Program yazılmadan veya problem çözülmeye başlamadan önce bazı adımları sağlam atmak gerekir. Bir çok zaman bu adımlar raporlarla belgelendirilir

Bunu sağlayabilmek ve sağlam temelli programlar yazabilmek için mutlaka
ön çalışmalar kağıt üzerinde gerçekleştirilir ve elde edilen donelere göre
program yazılır.

Ancak programlamaya yeni iseniz hemen program yazmanız oldukça zor
olacaktır. Öncelikle programlama mantığını ve problem çözme ön sezisini
edinmeniz gerekecek. İşte bu ders notları siz öğrencilerin bu sezgiyi
kazanmanızı ve bu mantığı oluşturmanızı sağlayacak bilgiler sunmaktadır.
Ne var ki bu ders notu sadece temel bilgileri verir. Bahsettiğimiz mantık ve
sezgiler program yazdıkça gelişir. Bir çok kişi tarafından programlama
yeteneğinin tanrı vergisi olduğu söylense bile (ki gerçekte doğrudur) bu
yeteneği edinmek resim yapma yeteneğini edinmekten ya da güzel
sanatlara karşı bir yeteneği edinmekten çok daha kolaydır.

Esas olan Programlama dilinin üzerinde temel programlama mantığına sahip olmanızdır. Çünkü bu sizin Programlamacı sıfatınız için temel teşkil edecek bilgiler sunmaktadır.

Programlama dilleri zaman içerisinde gelişmiş, değişmiş, kaybolmuş veya
yenileri çıkmıştır. Bu nedenle programlama bilginizi asla bir programlama
diline bağlı tutmayın. Eğer Programlama mantığınız ve ön sezileriniz
oldukça iyi gelişmişse, Algoritmaları kolay kurup algılayabiliyorsanız, çok
karmaşık sorunlar üzerinde fikir yürütüp çözüm üretebiliyorsanız bildiğiniz
programlama dilinin fazlaca bir önemi kalmamaktadır. çünkü çoğunlukla 1-
2 hafta gibi bir sürede bir programlama dilini orta düzeyde öğrenebilirsiniz.
En doğrusu da tabii ki her derde çözüm olabilecek temel bir programlama
dilini çok iyi bir şekilde öğrenip her çözüme uyarlayabilmeniz. Ancak
önemli olan Programlama mantığını iyi kapmış olmanız.

Dikkat ettiyseniz Programlama dilinde alternatiflerden bahsettik ancak
Programlamanın alternatifi bulunmamaktadır. Yani bir program yazılacaksa mutlaka programlamanın kurallarına göre yazılmalıdır.

Tanımlar
Bu ders notlarının daha iyi anlaşılabilmesi için şu tanım ve kavramların
bilinmesinde fayda bulunmaktadır.

Problem Nedir?
Bir işlemin, otomasyonun yada bilimsel hesaplamanın bilgisayarla
çözülmesi fikrinin ortaya çıkmasına problem denir. Bu tip fikirlerde
insanların bu sorunları beyinle çözmeleri ya imkansızdır ya da çok zor ve
zaman alıcıdır. Bu tip bir sorunu bilgisayarla çözebilme fikrinin ortaya
çıkması bir bilgisayar probleminin ortaya çıkmasına neden olmuştur.
Bazen de bir işletme veya yönetimin otomasyonunu sağlamak amacı ile bu
tip problemler tanımlanır.
Problem Çözümü
Problemi Çözebilmek için öncelikle sorunun çok net olarak programcı
tarafından anlaşılmış olması gerekir. Tüm ihtiyaçlar ve istekler
belirlenmelidir. Gerekiyorsa bu işlem için birebir görüşmeler planlanmalı ve
bu görüşmeler gerçekleştirilmelidir.
Problemin Çözümüne ilişkin zihinsel alıştırmalar yapılır. Bu alıştırmaların
Bilgisayar çözümüne yakın olması hedeflenmelidir. Bir sorunun tabii ki
birden fazla çözümü olabilir. Bu durumda bilgisayar ile en uygun çözüm
seçilmelidir. Çünkü bazen pratik çözümler bilgisayarlar için uygun
olmayabilir.
Oluşturulan Çözüm Algoritma dediğimiz adımlarla ifade edilmelidir.
Bu algoritmanın daha anlaşılabilir olması için Akış Çizgesi oluşturulmalıdır.
Uygun bir programlama dili seçilmeli ve oluşturulan algoritma ve akış
çizgesi bu programlama dili aracılığı ile bilgisayar ortamına aktarılmalıdır.
Oluşturulan program bir takım verilerle ve mümkünse gerçek ortamında
test edilir. Oluşabilecek sorunlar ilgili kısımlar tekrar gözden geçirilerek
düzeltilir. Bu adımlar defalarca gerçekleştirilmek zorunda kalınabilir.
Program Nedir?
Problem Çözümü kısmında anlatılan adımlar uygulandıktan sonra ortaya
çıkan ve sorunumuzu bilgisayar ortamında çözen ürüne Program denir.
Bazı durumlarda bu ürüne yazılım denebilir.
Programlama Nedir?
Problem Çözümünde anlatılan adımların tümüne birden programlama
denilebilir. Ancak gerçekte ilk paragrafta anlatılan kısım çoğunlukla sistem
analizi veya sistem çözümleme olarak anlatılır. Diğer adımlar Programlama
diye tanımlanabilir. Ancak Son paragrafta anlatılan adıma kısaca test
aşaması da denir.
Çoğunlukla Çok iyi tanımlanmış bir sorunun çözümüne dair adımlar ile
çözümün oluşturulup bunun bir programlama dili ile bilgisayar ortamına
aktarılması Programlama diye adlandırılabilir.
Algoritma Nedir?
 Çözümün sıralı adımlarla ifade edilmesidir.
Akış Çizgesi Nedir?
Algoritmanın şekillerle ifade edilmesidir.
Derleyici Nedir?
Bir programlama dili ile bilgisayara aktarılan programın bilgisayarın
anlayabileceği Makine Diline çevirmeyi sağlayan ve yazılan programda söz
dizim hatalarının olup olmadığını bulan olup olmadığını bulan yazılımlardır.
Her Programlama dili için bir derleyici olması gerekmektedir.
Yorumlayıcı Nedir?
Derleyici gibi çalışan ancak yazılmış programları o anda Makine diline
çeviren yazılımlardır. Bu tür bir yazılımda Programın Makine dili ile
oluşturulmuş kısmı bilgisayarda tutulmaz. Programın her çalıştırılmasında
her adım için Makine dili karşılıkları oluşturulur ve çalıştırılır.

Sistem Analizi : Sorunun çözülebilmesi için tamamen anlaşılmasını
sağlayan çalışmalardır.
Tasarım : İsteklerle ilgili olarak belirlenen bir takım çözümlerin
tanımlanmasıdır.
Programlama Stili : Her yiğidin yoğurt yiyişi farklıdır. Aynı şekilde her
programcı programındaki mantığı farklı kurar bu her programcının kendine
özgün bir stili var anlamına gelir. Ancak bunun yanında Her programcının
programın sağlığı bakımından dikkat etmesi gereken şeyler vardır. Örneğin
kodlar açık olmalıdır. Kullanılan değişkenler kullanıldıkları amacı anlatır
tarzda isimlendirilmelidir. Program içi dokümantasyona mutlaka önem
verilmelidir.
Programlama Dili Seçimi : Çözümün netleşmesinden sonra yapılacak
işlemleri kolay bir şekilde bilgisayar ortamına aktaracak dilin seçilmesidir.
Önemli olan bu dilin özelliklerinin programcı tarafından iyi bilinmesidir.
Programın Yazılması : Seçilen Programlama dilinin kuralları kullanılarak
program yazılmaya başlanır. bu amaçla çoğunlukla sade bir metin editörü
kullanılır. Bazı durumlarda Syntax highlighting denilen bir özelliğe sahip
olan daha akıllı editörler de kullanılabilir. Bazen de editör ile Programlama
dilinin derleyicisinin, bağlayıcısının hatta hata ayıklayıcısının iç içe
bulunduğu IDE (Integrated Development Environment) denilen türde
derleyiciler kullanılır.
Derleme : Programlama Dili ile yazılmış programın yazım hatalarının olup
olmadığının kontrol edilmesini ve ara kod olarak Obje kodun üretilmesini
sağlama adımıdır.
Bağlama : Derlenmiş ara kod diğer kütüphane ve parça programlarla
birleştirilerek Makine dilinde programın oluşturulması adımıdır. Ancak bazı
IDE ortamlarda ve derleyicilerde Derleme ve Bağlama bir bütündür ve
beraberce halledilirler. Programcının ayrıca bir bağlama işlemi yapması
gerekmez işlemi yapması gerekmez.
Çalıştırma : Oluşturulan Makine dili Programının çalıştırılması adımıdır.
Yukarıdaki adımların hepsi yolunda gittiyse program sorunsuz olarak
çalışabilmelidir.
Test : Programın Mantıksal olarak test edilmesini sağlar ve içerik olarak
her ihtimal için doğru sonuçlar üretip üretmediğini kontrol etmenizi sağlar.
Yaşam Döngüsünün Sağlanması : Yukarıdaki Akış Çizgesi dikkat
edilirse aslında bir döngüdür. Hatta test aşamasında sorun çıkmazsa bile
Sorunun tanımında yani ihtiyaçlarda bazı değişiklikler olursa adımlar
baştan aşağı tekrar incelenmek zorunda kalınır. Bu çizgeye bir Yazılımımın
Yaşam Döngüsü de denilebilir. Bu çizimde Yazılımın Bakım süreci göz
önüne alınmamıştır.

 HATA YAKALAMA VE AYIKLAMA
Bir Programın bilgisayar başında geçen geliştirme süreci yukarıdaki gibidir.
Bu çizimde kırmızı-turuncu renkle gösterilen kısımlar hata durumlarını
göstermektedir.
Syntax Error :
takım ifadelerden dolayı karşılaşılabilecek hatalardır. Düzeltilmesi son
derece basit hatalardır. Hatanın bulunduğu satır derleyici tarafından rapor
edilir. Hatta bazı derleyiciler hatanın ne olduğunu ve nasıl düzeltilmesi
gerektiğini dahi bildirebilirler. Bazen Syntax Error tipi hataları Bağlama
zamanında da ortaya çıkabilir.
Eğer bir derlemede Syntax Error alındı ise obje kod üretilememiştir
demektir.
Yazılan programda programlama dili kurallarına aykırı bir
Soru:
göre kendisi niçin düzeltmemektedir?
Bir Derleyici hatanın nasıl düzeltileceğini bildirebildiğine
Run-time Error :
Programcının ele almadığı bir takım aykırı durumlar ortaya çıktığında
programın işletim sistemi tarafından kesilmesi ile ortaya çıkar. Bu tip
hatalarda hata mesajı çoğunlukla çalışan işletim sisteminin dili ile verilir.
Eğer bu tip hataları kullanıcı ele almışsa, program programcının vereceği
mesajlarla ve uygun şekilde sonlandırılabilir.
Bu tip hataların nerelerde ve hangi şartlarda ortaya çıkabileceğini bazen
kestirmek zor olabilir. Çoğunlukla işletim sistemi ve donanım kaynakları
ile ilgili sorunlarda bu tip hatalar ortaya çıkar demiştik. Örneğin olamayan
bir dosya açmaya çalışmak, var olan bir dosyanın üzerine yazmaya
çalışmak, olmayan bir bellek kaynağından bellek ayırtmaya çalışmak,
olmayan bir donanıma ulaşmaya çalışmak vs. vs. vs.
Programın çalıştırılması sırasında karşılaşılan hatalardır.
Logical Error :
mantığında bir takım şeylerin yanlış düşünülmesinden kaynaklanır. Hata
test aşamasında ortaya çıkar. Hesaplanması gereken veya bulunması
Karşılaşabileceğiniz en tehlikeli hatadır. Programlama
gereken değerlerin eksik veya yanlış hesaplanması ile tespit edilir. Bu
sorunun giderilebilmesi için Tasarım hatta çözümleme aşamasına geri
dönülmesi gerekebilir. Bazen bu hatanın nereden kaynaklandığını
bulabilmek çok zor olmaktadır.
Bug :
yani böcek diye de tanımlanmış olabilir. Bu tip hatalar eğer çok net değil
ve zamanla ortaya çıkabiliyor ise veya nedeni çok net olarak
anlaşılamamışsa bug diye adlandırılır. Gerek serbest yazılım gerek ticari
yazılımların tümünde bug dediğimiz mantıksal hatalar bulunur. Çünkü
hatasız program yazabilmek çok zordur. İlk seferde yazılan bir programın
tamamen hatasız olmasını beklemek son derece hatalıdır. Günümüzde en
meşhur yazılım firmaları bile yazılımlarında bug olduğunu kabul eder ve
zaman zaman bu bugları giderebilmek için ya yazılımlarına yama yazılımı
üretirler yada o yazılımın yeni bir versiyonunu piyasaya sürerler.
Logical Error diyebileceğimiz Mantıksal hatalara verilen adlar bug
Debug :
için yapılan işlemin adıdır. Genellikle yazılan programın adım adım ve
denetim altında çalıştırılmasıdır. Programın her adımında ilgili değişkenlerin
hangi değere sahip olduğunu görmeyi sağlar. ve anormal bir durumu daha
kolay izleyip bulmanızı sağlar. Bu işlemi gerçekleştirebilmek için bazı IDE
ortamlarında debugger dediğimiz yardımcı komut veya yaz
Mantıksal hataları giderebilmek ve yazılımdaki bug'ları bulabilmek