1 Nisan 2010

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 : ) :

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.

  1. Değişken isimleri en fazla 40 karakterden oluşabilir.
  2. Bir değişken isminin ilk karakteri mutlaka bir harf olmalıdır.
  3. Değişken isimlerinin içinde boşluk veya özel karakterler bulunamaz
  4. 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 

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 …

 


Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir