5 Kasım 2014 Çarşamba

Bilgisayar Programlama C dili

1.2.  PROGRAMLAMA NEDİR?
Bilgisayarların isteğe uygun özel işlemler yapması için programlanması gerekir. Örneğin, bir şirkette kullanılan stok uygulaması, sipariş uygulaması yada değişik iş takipleri, hastane otomasyonları yada eğitim kurumlarının kullandığı öğrenci otomasyonları gibi. Programlamaya çok fazla örnek vermek mümkündür.

Program : Günlük hayattaki bir sorunu bilgisayarla çözmek, rutin işlemleri kolaylaştırmak için bilgisayarların isteğe uygun olarak özel bir takım işlemleri gerçekleştirmesi için programlanması gerekmektedir. İşte yazılan bu yazılımlar ile ortaya çıkan ürün bir programdır. Bilgisayar oyunu, muhasebe işlem programları ve ticari şirketlerde kullanılan paket programlar birer programdır.  

Programlama Dili : Bilgisayarda çözülecek bir sorun için çözümün bilgisayara adım adım yazılmasını sağlayan biçimsel kuralları olan ve bu kurallara sıkı sıkıya bağımlılığı gerektiren bir tanımlar kümesidir. Yani, programcı ile bilgisayar arasında bir tercüman durumundadır.
1.3.  PROGRAMLAMANIN TARİHİ
Oldukça eskiye dayanan programlamanın tarihine baktığımızda fazla kodlanmış makine komutları bulunmamaktaydı. 1940 – 1950 yılları arasında fazla kodlanmış makine komutlarıyla yazılan programlar, programcılar açısından oldukça zordu. Hızın düşük olması, bellek yetersizliği, işlem sayısının az olması bilgisayarın kullanım alanını sınırlıyor ve işlemler basit bir uygulamadan ileri gidemiyordu. Tabi bu durum mikroişlemciler ile alakalı idi. Rekabet halinde olan firmalar işlemcilerin mimarilerini geliştirip hızlarını arttırdıkça, işlemcilerin işleyebileceği komut sayıları artmış ve komut setleri daha kullanışlı hale gelmiştir. 

İlk programlar makine dili ile hazırlanıyordu. Makine dili de bir programlama dilidir ama makine dili ile program yazmak çok zahmetli bir iştir. Çünkü makine dilinde sıfırlar (0) ve birler (1) vardır. Yani işlemlerde DOĞRU (1) yada YANLIŞ (0) durumlarına göre hareket edilmektedir. Ayrıca, makine dili programları anlaşılması zor olan ve tamamıyla donanıma hitap eden programlardır. Günümüze baktığımızda geliştirilen üst düzey programlama dillerini kullanırken makine dilini bilmeye bile gerek yoktur. 

Makine diline yakın Assembly programlama dilinde mikroişlemcilerin anlayacağı assebly kodları kullanılır. Bu ham şeklinde bulunan komutlar (MOV, ADD, PUSH gibi) mikroişlemcinin belli bir işlevi yerine getirmesini sağlamaktadır. Bu komutlara mnemonic adı verilir. Üst seviye programlama dillerinin geliştirilmesiyle programlar daha anlaşılabilir komutlarla yazılmaya başlanmıştır (Print, Read, Display, Circle, Get, vb).  1980’li yıllarda üst seviye programlama dilleri yaygınlaşarak, programlar belli bir dilin yapısı içinde tasarlanmış ve yazılmıştır. 
1.4.  PROGRAMLAMA TÜRLERİ
1.4.1 Yapısal Programlama
Programlama dilleriyle ilgilenenler kod yazmaya genellikle küçük ve basit kodlar yazarak başlarlar. Bu kodlar sadece bir “ana (main)” bloğundan oluşur. Bu blok içerisindeki komut ve deyimler programın tümünde tanımlı olan “global” verileri kullanırlar.

            program
Ana program
Veri

Şekil 1.1 Yapısal olmayan programlama

Şekilde 1.1’de görüldüğü gibi yapısal olmayan programlama tekniği kullanılarak yazılan kodlarda, ana program bloğu, global olarak tanımlanmış veriler üzerinde işlem yürütür.

Bu programlama tekniği oldukça büyük programlarda büyük dezavantajlara sahiptir. Örneğin aynı komut ve deyimler bu teknikte yazılan kodlar içerisinde defalarca tekrarlanmak zorunda kalabilir. Aynı zamanda bu teknikte yazılan kodların okunabilirliği ve anlaşılabilirliği yazılan kod miktarı arttıkça zorlaşır. Dolayısıyla kod yazarken hata yapma olasılığı fazladır ve hata ayıklama (debugging) işlemi oldukça zordur. Bu nedenle de doğal olarak yazılan programın güvenirliği de düşük olacaktır.

Yapısal programa tekniğinde ise altprogramlar (procedures) ve fonksiyonlar (functions) kullanılır. Böylece program akışının kontrolünde büyük kolaylıklar sağlanmış olur.



            ana program       alt program
           
Şekil 1.2. Alt programların çağrılması

Şekil 1.2’deki program akışı esnasında, ana program içerisinden altprogramlar çağırılıyor. Bu altprogram çalıştırıldıktan sonra, program akışı tekrar geri dönecek ve programın işleyişi kaldığı noktadan devam edecektir. Yapısal programlama tekniğinde kod içerisinde aynı altprogram defalarca çağırılabilir. Böylece gereksiz kod tekrarıda ortadan kalkmış olur.  



1.4.2 Modüler Programlama
Modüler programlama tekniğinde belli altprogramlar ayrı ayrı modüller içinde gruplandırılır. Her modül içerinde ana program içinde tanımlı global değişkenler geçerlidir. Aynı zamanda her modül kendi verisine de sahiptir.

   program



1.4.3 Nesne Tabanlı Programlama 
Nesne tabanlı programlama (Object-Oriented Programming, OOP) dilleri 1980’li yıllarda C++ ile ortaya çıkmıştır. Nesneye yönelik programlama, programcının kendi sınıfını ve nesnesini oluşturup bunun üzerinde işlemler yapmasına olanak sağlar. Bu programlama sisteminin zor olması nedeniyle, çok sayıdaki nesneler önceden programcıya hazır bir şekilde sunulur. Günümüzdeki programcılar ise nesneye yönelik olan ve Visual özellikler içeren sürümleri kullanmaktadır. Visual C++, C++ Builder, Delphi, Java, Visual Basic vb. gibi örnekler sayılabilir. 

Bu teknikte nesneler birbirlerine mesaj göndererek etkileşim içinde bulunurlar. Nesne yönelimli programlama tekniğinde açık bir biçimde altprogramları çağırmak yerine, direkt olarak ilgili nesneye bir mesaj gönderilir. Nesne kendine gelen mesajı alır ve öncelikle nesnenin bir örneğini (kopyasını) oluşturur. Bu kopya gerekli işlemleri yaptıktan sonra kendini yok eder. Tüm bu işlemlerden nesnenin kendisi sorumludur.

            program
1.4.4. Olay Temelli Programlama
Bilgisayarda bir uygulamayı kullanırken, ekran üzerinde bir nesnenin hareket ettirilmesi veya bir tuşa basılarak düğmelerin seçilmesi işlemleri bir olaya dayanır. Olay temelli programlama (Event – Driven Programmming, EDP) kullanıcıların yapacakları işlemlere göre programın hareket etmesi temeline dayanır. Daha önceki programlarda ekrana gelen menülerde  daha çok klavyenin fonksiyon ve yön tuşları aktif olarak kullanılıyordu. Olay temelli programlamada farenin menüler ve pencereler üzerinde oldukça yaygın olarak kullanılması sağlanmıştır. Bu şekilde işlemler daha basit, fonksiyonel ve daha kullanışlıdır.

1.5. PROGRAM GELİŞTİRME SÜRECİ
1.5.1. İyi Bir Programın Nitelikleri
Yazılan bilgisayar programlarının basit bir işlevi yerine getirmesi ona iyi bir program özelliği kazandırmaz. Yazılması düşünülen bir programın bir çok açıdan belli niteliklere sahip olması gerekmektedir. Bu nitelikleri şu şekilde sıralamak mümkündür.
      Estetik olarak görselliği ön plana çıkmalıdır.
      Kullanıcı açısından kullanımı kolay olmalıdır.
      İşlem ve hesaplamaları doğru yapmalıdır.
      Hızlı çalışmalıdır.
      Kolayca değiştirilebilmeli ve güncellenebilmelidir.
      Fazla kod yazılmadan etkin bir kodlamaya sahip olmalıdır.
      Yaygın kullanılan işletim sistemlerinde çalışabilmelidir.
      Büyük programlar için çoklu kullanıcı desteği olmalıdır.
      Ticari yazılan programlar ise iyi belgelenerek, lisanslı satılmalıdır.
1.5.2. Program Tasarlama
Bir yazılım geliştirirken takip edilmesi gereken adımlar şunlardır:
1.     Gereksinimlerin belirlenmesi : Problemin tanımı verilir.
2.     Analiz  : Problemin çözümü için gerekli tüm girdi ve çıktılar analiz edilmelidir.
3.     Dizayn : Problemin çözümünde kullanılacak uygun algoritmanın adım adım tanımlanması yapılmalıdır.
4.     Akış Diyagramı: Algoritmaya göre uygun akış diyagramı çizilmelidir. 
5.     Kod Yazımı : Algoritmanın herhangi bir programlama dilinde yazılarak kaynak dosyanın hazırlanması gerekir.
6.     Test : Bu basamakta ise yazılan programın bölümleri ve tamamı çalışır halde test edilir. 
7.     Doğrulama :  Programın örnek girdilerle doğru çıktı ürettiği gözlenmelidir.
8.     Bakım : Yazılan programda bulunan hatalar ayıklanır veya gerekli güncellemeler yapılır.
9.     Belgeleme : Yazılan program için belgeleme yapılarak, toplu çoğaltmalara karşı engelleme konulur.

1.5.3. Arabirim Geliştirme ve Programın Görünüşü
Nesne tabanlı programlama dillerine baktığımızda iyi bir arabirim geliştirmek için bir çok nesnenin var olduğu görülmektedir. Araç çubukları, durum çubukları, menüler, iletişim kutuları gibi uygulamalar eklenebilir. Ayrıca, fare ve klavye işlemlerini eklemek için ayrıca ek bir bölüm yazmaya gerek yoktur.


Program yazma ve arabirim geliştirme işlemi, iyi bir programcılığın yanı sıra büyük bir sanatta gerektirir. “Program yapmak bir sanattır” ifadesini kullanmak pek de yanlış olmayacaktır. Arabirim geliştirme işleminde programın kullanılabilirliği, sadeliği, uyumluluğu ve grafik değerleri dikkate alınarak hazırlanmalıdır. Özellikle nesne tabanlı programlama türlerini kullanırken görsellik büyük ölçüde ön plana çıkmaktadır. Renklendirme, yazı tiplerinin biçimleri, gölgeleme, parlaklık, menülerin resim programlarıyla süslenmesi gibi konuları da dikkate almak gerekmektedir.  

Hiç yorum yok:

Yorum Gönder