Programlamaya Giriş-2
Nesneye Dayalı Programlama Kavramı
Bu arada ilk yazımda programlama dilleri anlatırken Nesneye dayalı programlama (object oriented programming) dili kavramını vermeyi unutmuşum kısaca ona değinelim ve algoritmalara geçelim…
Programlama gerçek hayattaki durumların modellenmesinden başka bir şey değildir. Bilgisayar programları bu modellerin temel alınarak durumların bilgisayar ortamına aktarılmasından ibarettir.
Türkçenin nasıl kuralları varsa programlama dillerinin de kuralları vardır. Bunları gramer ve imla kuralları olarak ikiye ayırabiliriz. İşte bilgisayar programı yazarken yaptığımız bu kuralları kullanarak çeşitli durumları bilgisayar diline çevirmektir. Tabii her dilinde kendine göre zorluğu veya değişik bir özelliği vardır. Mesela Rusça dilinden bir örnek verecek olursak “okno” (ayna) diye yazılan kelime okunurken “akno” diye okunur. Programlama dillerinde ise mesela C de programlar main ana fonksiyonundan sonra “{“ işareti ile başlamalı “}” işareti arasında yazılmalıdır.
Klasik programlamayla nesneye dayalı programlamanın tek farkı da bu noktadadır. Nesneye dayalı programlama tekniği programcıya yüksek kalitede program yazma imkânı sağlar fakat bunu yapabilmek için tasarım ve kodlama aşamalarında bu ölçütleri göz önünde bulundurmalıyız. Nesneye dayalı programlama ile daha kolay (ucuza: zaman, adam, para) oluşturabilir. Hata bulma, güncelleme yeniden kullanım da daha kolay olur. Klasik programlamadan farklarını şöyle izah edelim:
Sınıf hazırlayabilme ve nesne yönelimli programlamanın bütün özellikleri, fonksiyon ve operatörleri aşırı yükleyebilme, şablon fonksiyon ve sınıflar yazabilme, güçlendirilmiş ve daha güvenli bellek kontrolü, değişkenleri programın herhangi bir yerinde tanımlayabilme (C’de sadece fonksiyon başında tanımlanabilir), referans argümanı kullanabilme (fonksiyonlarda) ve referans değişkeni kullanabilme, Standart Template Library ile her türlü veri yapısı ve veri organizasyonunda iyi bir çözüm ve nesne yönelimli olarak yazılmış yüzlerce hazır kütüphane…
NYP’de sınıf kavramı vardır. Ve bu dilin daha esnek olmasını sağlar. Aynı şekilde nesneye dayalı programlama yöntemleriyle kullanılması verimliliği ve kodun müdahale edilebilirliğini daha da artıracaktır.
“Olay yönlendirmeli Nesne yönelimli” programlama şu anda C# ve VB.NET dillerinin program geliştirme yaklaşımıdır.
Algoritma Nedir?
Sorunun çözümü için saptanmış sonlu sayıda basamaktan oluşan adımlar veya komutlar takımıdır. Programlama mantığıdır. Yukarıda söylediğim gibi ünlü Müslüman-Türk âlim El-Harezmî’den gelmektedir. Kısaca Algoritma, bir programda neyin, nerde ve nasıl olması gerektiğini bilgisayara anlatmamıza yarayan sonlu sayıda basamaktan oluşan yola hazırlamaya diyoruz. Örneğin hani bir çay demleme (programcılık okuyanlar belki bilir) algoritması vardır : ) :
- Mutfakta değilsen mutfağa git.
- Çaydanlığa bak dolu değilse su doldur
- Ocağı yak
- Ve çaydanlığı ateşin üstüne koyarak Suyun kaynamasını bekle
- Su kaynadıktan sonra çayı bırak ve üstüne suyu dök…
- Yine demliğe biraz daha su bırakarak bekle
- Su kaynadığında biraz dinlendirerek ateşi kapat mutfaktan çık
- Ve keyifle çayını iç : )
- Yemek tarifi gibi oldu ama işin özü budur. Bilgisayara hangi durumlarda ne yapacağını önceden söylemez isek tabiî ki bilgisayar düşünemediği için söylemediğiniz yerde takılır kalır. Aynı şu eski Windows’larda mavi ekranın çıkması gibi…
Sorun Analizi
Programda neyin gerçekleştirilmek istendiği, belirlenen mümkün olan en az sayıda parametre cinsinden ifade edilir. Bu parametreler maliyet, zaman ve performansla ilgili olup, her parametrenin bir hedef ve bir de eşik değeri saptanır. Parametre değerleri her aşama karar noktasında gözden geçirilir ve gerekiyorsa değiştirilir. Bu parametreler bir araya getirildiğinde programın temel esasları ortaya çıkar. Sorunun çözüm yolu da bu aşamada belirlenir ve çözüm için gerekli matematiksel modeller kurulur. Algoritmalar hazırlanır. Giriş-çıkış birimleri ve bilgileri (biçim, şekil, düzen) belirlenir. Programda kullanılacak değişkenler tanımlanır (sembol) ve türleri belirlenir. Program tasarımı yapılır.
ÖRNEK: Klavyeden girilen iki sayının toplanmasını ve ekrana yazılması sorunun analizi aşağıdaki gibi yapılır.
İstenenler:
a)sayıların klavyeden girilmesi
b)toplama işleminin bulunması
c)toplama işleminin ekranda görüntülenmesi
Değişken tanımı:
A:Birinci sayıyı
B:İkinci sayıyı
C:iki sayının toplamını göstersin
Çözümün matematiksel gösterimi: A+B=C
Özel Sözcükler ve Söz Dizimi
Özel Sözcükler
Dilin kullandığı anahtar sözcüklerdir. Bu sözcükler değişken veya fonksiyon tanımlarında kullanılamaz.
Örneğin if, else, print, end, int, long… vb
Söz Dizimi
Her dilin kendine özgü bir söz dizim yapısı vardır. Değişkenler, sabitler ve fonksiyonlar oluşturulurken bu kurallara uyulması gerekir.
Private Sub Form_Load()
Print “Merhaba turkkodlular”
End Sub
Değişken Kavramı
Değişken, bilgileri saklamak üzere kullandığımız, ismini ve tipini belirlediğimiz bellek alanlarına verilen genel isimdir. Bir değişkeni tanımladığımızda ya da ilk kullandığımızda, bilgisayarın hafızasında o değişken için bir bölüm ayrılır.
Değişkenleri genel olarak iki gruba ayırabiliriz. Birinci grup, içinde sayıları sakladığımız değişkenlerdir. Bu değişkenlerin hafızada tutacakları yer bellidir. İkinci grup ise, içinde sayı haricindeki bilgileri, örneğin isim veya adresi tutacağımız değişkenlerdir.
İçinde sayı tutacağımız değişkenlere nümerik ya da sayısal değişken denir. Sayı haricindeki bilgileri tutacağımız değişkenlere ise alfa nümerik, alfa sayısal veya string değişkenler diyoruz.
Veri Türleri
Her dilin kendine özgü veri türleri vardır mesela C programlama dili için:
int
Char
Float
String
Double …. Vb
Değişken İsimleri
Değişken isimlerinin programcı tarafından belirlendiğini biliyoruz. Programcı değişken ismini belirlerken, aynı zamanda değişkenin niteliğini de belirler. Değişken isimleri aşağıdaki kurallara göre belirlenmelidir.
- Değişken isimleri en fazla 40 karakterden oluşabilir.
- Bir değişken isminin ilk karakteri mutlaka bir harf olmalıdır.
- Değişken isimlerinin içinde boşluk veya özel karakterler bulunamaz
- Bir değişken ismi FN harfleriyle başlayamaz.
Değişkenlere Değer Atama
Bir değişkene değer atamanın çeşitli yolları vardır. En basit değer atama yöntemi eşitlik kullanımıdır.
A% = -373
PI# = 3,1415
TUTAR& = 3676800
sayi = 1673.772
Isim$ = “QuickBASIC”
Görüldüğü gibi değişkenlerin bazıları büyük, bazıları küçük, bazıları da hem büyük hem de küçük harflerden oluşmaktadır. “QuickBASIC” dilinde değişken isimlerinin büyük veya küçük harflerle tanımlanması, o değişkeni etkilemez. Yani, “SAYI” ve “sayi” değişkenleri aynı olarak kabul edilir.
Operatörler
Matematiksel Operatörler
Matematiksel işlemlerimizi yaptırabilmemiz için aşağıdaki operatörleri kullanabiliriz.
+ ‘Toplama
– ‘Çıkarma
* ‘Çarpma
/ ‘Bölme
\ ‘Tamsayı Bölem
^ ‘Üs yani Kuvvet alma
Mod ‘Kalanlı Bölme
& ‘Dizilim Birleştirme
Karşılaştırma Operatörleri
< ‘Küçüktür
<= ‘Küçük Eşittir
> ‘Büyüktür
>= ‘Büyük Eşittir
= ‘Eşittir
<> ‘Eşit Değildir
Mantıksal Operatörler
AND Operatörü
OR Operatörü
XOR Operatörü
NOT Operatörü
Aritmetik İfadeler
Programlama sırasında bazı matematiksel işlemler gerekecektir. Aşağıda aritmetik operatörler ve hangi işleme karşılık geldikleri listelenmiştir.
+ ” Toplama
– ” Çıkarma
* ” Çarpma
/ ” Bölme
^ ” Üs (kuvvet) alma
Aksi belirtilmedikçe, matematiksel işlemlerde önce kuvvet alma işlemi yapılır. Daha sonraki öncelik çarpma ve bölmeye aittir. En son işlem yapılan aritmetik operatörler ise toplama ve çıkarmadır. Aynı önceliğe sahip matematiksel işlemler söz konusu olduğunda önce soldaki işlem gerçekleştirilir. Eğer matematiksel işlem parantez içeriyorsa, önce parantezlerin içindeki kısımlar çözümlenir.
Eğer işlemlerimizin karışmasını istemiyorsak, yazdığımız matematiksel formüllerimizde parantez kullanırız.
((19 – 3) / (3 – 1) ^ 2) * 6 = 24
(48 + 1) / (14 / 2) * 3 = 21
64 – (4 + 4) ^ 2 – 1 = -1
Şunu bir kez daha belirtmek gerekir ki, parantez içindeki ifadelerde, önce en içteki paranteze ait işlem gerçekleştirilir.
Buraya kadar sözüne ettiğimiz 5 aritmetik operatörden başka QuickBASIC diline özgü bir operatör daha vardır. “ \ ” işareti kalansız bölmeyi (tamsayı bölmesini) sağlar. Örneğin, “7 \ 2” işleminin sonucu 3,5 değil 3 olacaktır.
Programlama dillerinde bilgileri işlemek için kullanılan en yararlı araçlardan biride koşullu bir ifadedir. Koşullu ifade bir özellik, değişken veya veride bulunan değere göre işlem yapmamızı sağlar.
If…Then Karar Yapısı
Bir If…Then karar yapısı programdaki bir koşulu denetlememizi ve çıkan sonuca göre hareket etmemizi sağlar. En basit biçimiyle “If Koşul Then Bildiri” gibi kullanılabilir.
Select Case Karar Yapısı
Döngüler belirli işlemleri belirli sayıda veya herhangi bir şart sağlanana kadar tekrarlamak amacı ile kullanılırlar. Visual Basic’de kullanılan döngüler aşağıda verilmiştir.
Örneğin C’deki for döngüsü do-while döngüsü…
İşte Küçük bir Kod Mimarisi:
main() /* ana fonksiyon*/
{
printf(“Merhaba C.”); /* cikartma durumu */
}
Ve daha karmaşık bir program yapısı
main()
{
int xx;
for (xx=5;xx<15; xx=xx+1)
{
if (xx==8)
break;
printf(“Break döngüsünün içinde, xx in değeri simdi %d\n”,xx);
}
for (xx=5;xx<15;xx=xx+1)
{
if (xx==8)
continue;
printf(“Continue döngüsünün içinde, xx in değeri simdi %d\n”,xx);
}
}
PROGRAMIN KALİTESİNİ BELİRLEYEN ÖLÇÜTLER
- Program işini doğru yapmalı
- Mümkün olduğunca hızlı çalışmalı
- Sistem kaynaklarını gereksiz yere harcamamalı
- Program kodu okunabilir ve anlaşılabilir olmalı.
- Birbirinden bağımsız modüllerin minimum inter aktivitesinden oluşmalı
- Bakım ve güncellenmesi kolay olmalı
- Hatalar lokal olmalı. ( Bir bölümde oluşacak bir hata tüm programı etkilememeli.)
- Verilen süre içinde tamamlanmalı
- Gerekli yazlı dokümanlar hazırlanmış olmalı. (Kullanma kılavuzu, yardım dosyaları vs.)
Bu arada Programcılık öğrenmek sadece söz dizimsel (syntax) kurallarını öğrenmek demek değildir. İyi düşünmek ve matematiksel bir zekâya sahip olmak gerekir diye düşünüyorum.
Şimdi arkadaşlar bu konuları derinlemesine ele alacağız ama ben bu anlatımlarda dil olarak C ve C++’den faydalanmayı düşünüyorum. Onun için benim ve birçok “ciddi” kitabın görüşü “C++’ya başlamadan önce C öğrenmenin gerekmediği”dir. Doğrudan C++’den başlamak gerekir. Tabii ki C biliyorsanız C++ öğrenmeniz kolay olur. Yine Benim kişisel görüşüm her bilgisayar mühendisinin, özellikle yazılım geliştirme ile uğraşacak olanların, C++’yı iyi bilmesi ve anlaması gerektiğidir, belki kullanmayacak bile olsak… Kafanıza göre takılın… Tabii bütün bu anlattıklarım sadece C ve C++ için geçerli değil tüm programlama dilleri için evrensel olan konulardır. Diğer programlama dillerinden de yeri geldikçe (avantajlarında-dezavantajlarından) değinmeye çalışacağım.
Bundan sonraki dersimiz de inşallah Operatörler, karar deyimleri, matematiksel ve mantıksal ifadeler olacaktır…
NOT: Yazılar Alın teridir, lütfen kaynak belirtmeden kullanmayınız…
Saygılarımla …