Programlamaya Giriş
PROBLEM ÇÖZME
Bilgisayar yazılımlarının genel amacı; var olan bir problemi çözmektir. Problem, tüm bilim alanlarında hatta gündelik yaşamda karşılaştığımız ve kendisine özel çözüm yolları olan bir kavramdır. Biz burada problemleri, bir bilgisayar yazılımcısının düşünme ve çözme mantığı ile aşmaya çalışacağız. Bilgisayarla problem çözme süreci 4 adımdan oluşmaktadır. Bunlar;
- Problem belirlenmesi ve anlaşılması
- Algoritmayı oluşturma
- Programı geliştirme
- Programı test etme
ALGORİTMA
Bir problemin çözülebilmesi için adım adım uygulanan kurallar dizisidir. Algoritmaları kutlanarak programları daha kolay bir biçimde oluşturabiliriz. Algoritmaların en önemli özelliği, her türlü alternatif gidiş yolu düşünülerek sonuca ulaşıldığının garanti edilmesidir. Buna ek olarak bir algoritmada, girilen verilerin değerlendirilmesi ve buna karşılık olarak sonuçların elde edilmesi gereklidir.
Algoritmalar oluşturulurken ya çeşitli şekillerden ya da bir dilden yararlanılır. Eğer algoritma oluşturulurken bir dil kullanılmışsa bu dil, matematiksel ifadelerin de bulunduğu ve konuşurken kullandığımız bir dil olduğu gibi, özel olarak algoritma tasarımı için hazırlanmış bir dil de olabilir. Eğer ki şekillerden yararlanarak algoritma oluşturuyorsak, akış şemalarından yararlanılır. Ancak biz bu bölümde algoritmaları konuşma dili yardımıyla basit bir şekilde oluşturacağız.
ALGORİTMADA OLMASI GEREKEN ÖZELLİKLER
- Girdi/Çıktı: Her algoritmanın bir giriş ve bir çıkış değeri olmalıdır. Girdi, algoritmanın üzerinde işlem yapması için aldığı veridir; çıktı ise algoritmanın girdiye karşı elde ettiği sonuçtur.
- Açıklık: Birden fazla anlama gelebilecek yani ikilemde kalınabilecek ifadelere sahip adımlar oluşturulmamalıdır. Bu nedenle her adım açık ve anlaşılır bir biçimde ifade edilmelidir.
- Sonluluk: Bir algoritma her ne koşulda olursa olsun sonlu sayıda işlem içermeli ve bu işlemlerin de süresi sonlu olmalıdır.
- Etkinlik: Bir algoritma aynı zamanda gereksiz tekrarlardan kaçınmalıdır ve gerektiği zaman başka bir algoritma içinde de kullanılabilmelidir.
Örnek:
Girilen bir sayının karesini alıp ekrana yazdıran bir programın algoritmasını oluşturalım.
Girdi: Karesi alınacak sayı (x)
Çıktı: Girilen sayının karesi (sonuç)
- Başla
- x değerini gir.
- sonuç=x*x
- sonuç değerini ekrana yaz.
- Bitir
Bu algoritma İle klavyeden girilen bir sayının karesini almış olduk.
ÖRNEK:
Girilen iki sayıyı toplayan programın algoritmasını oluşturalım.
Girdi: Birinci sayı (x), ikinci sayı (y) Çıktı: İki sayının toplamı (toplam)
- Başla
- x değerini gir.
- y değerini gir.
- toplam=x+y
- toplam değerini ekrana yaz.
- Bitir
Bu algoritma ile klavyeden iki sayı girdik ve bu iki sayının toplamını ekrana yazmış olduk.
ÖRNEK
Girilen iki sayıyı karşılaştırıp büyük olan sayıyı bulan algoritmayı oluşturalım.
Girdi: Birinci sayı (x), İkinci sayı (y)
Çıktı: Büyük sayı
- Başla
- x değerini
- y değerini
- Eğer x,y’den büyük ise adım 6’ya git.
- Eğer y,x’den büyük ise adım 7’ye git.
- x değerini ekrana yaz ve adım 8’e
- y değerini ekrana yaz ve adım 8’e
- Bitir.
Bu örnekte ise kullanıcıdan alınan iki sayıyı karşılaştırdık. Büyük olan sayıyı adımlar arasında geçişler yaparak ekrana yazdırmış olduk.
NOT
Yukarıdaki örnekte ilk defa gördüğümüz adımlar arası geçişler, algoritmanın bir özelliğidir. Bu geçişler olmasaydı, algoritma otomatik olarak bir sonraki adıma geçerek devam ederdi, örneğin; yukarıdaki örnekte adım geçişleri yapmasaydık, büyük olan sayıyı bulurdu. Ancak ekrana hem x değerini hem de y değerini yazardı.
ÖRNEK
1 ‘den 1OO’e kadar olan sayıların toplamını ekrana yazdıran algoritmayı oluşturalım.
Girdi: Sayılar (s)
Çıktı: Toplam (t)
- Başla , „ .
- s değerine ilk değer olarak 1 ve t değerine ilk değer olarak 0 değerini ver.
- s değerini t’ye ekle.
- s değerini 1 arttır.
- Eğer s>100 ise adım 7’ye git.
- Adım 3’e git.
- t değerini ekrana yazdır.
- Bitir
Bu örnekte s değerine ilk değer olarak verilen 1 değerinden itibaren, s değerini t’ye ekle komutu işletilir ve s değeri 1 arttırılır. Bu işlem s değeri 100’den büyük oluncaya kadar tekrar tekrar yapılır, s değeri 100’den büyük olunca t değeri ekrana yazılır.
ÖRNEK
O’dan 100’e kadar olan sayıların karesini alıp ekrana yazdıran algoritmayı oluşturalım. Girdi: Sayılar (s)
Çıktı: Sayının karesi (k)
- Başla
- s değerine ilk değer olarak 1 değerini ver
- k=s*s yap.
- k değerini ekrana yaz.
- s değerini 1 arttır.
- s>100 ise adım 8’e git.
- Adım 3’e git.
- Bitir.
Bu örnekte bir önceki örnekte olduğu gibi s değerine 1 değerini verdik. Daha
Sonra s değerinin karesini ekrana yazdırdık. Ardından s değeri, 100’den büyük olana kadar 1 arttırılarak aynı işlemi tekrarladık, s değeri 100’den büyük olduğunda ise algoritma sonlandırıldı.
ÖRNEK
Bir sınıftaki öğrencilerin bir dersten aldıkları notların ortalamasını ekrana yazan algoritmayı oluşturalım.
Girdi: Öğrencilerin notları (nl, n2, n3… nSon), öğrenci sayısı (x), indis (i), Notların toplamı (toplam).
Çıktı: Ortalama (ort)
- Başla
- x değerini gir.
- i değerine ilk değer olarak 1 değerini ver.
- Öğrencinin notunu(n) gir.
- toplam=toplam+n yap.
- i’yi 1 arttır.
- Eğer i>x ise Adım 9’a git.
- Adım 4’e git.
- ort=toplam/x
- ort değerini ekrana yaz
- Bitir.
Bu örnekte öncelikle öğrenci sayısını aldık. İlk öğrencinin notu, ikinci öğrencinin notu şeklinde gösterebilmek için i değerini sayaç olarak kullandık. Daha sonra toplam notlarımıza öğrencinin notunu ekledik ve indisi 1 arttırdık. Yani bir sonraki öğrencinin notuna geçtik. Eğer gelinen öğrenci sayısı toplam öğrenci sayısından büyükse; adım 9’a geldik ve toplanan notları öğrenci sayısına bölerek ortalamayı bulup ekrana yazdırdık. Eğer gelinen öğrenci sayısı toplam öğrenci sayısından küçük ise; adım 4’e gittik ve bu işlemleri indis değeri öğrenci sayısından büyük olana kadar tekrarladık.
PROGRAMLAMA DİLLERİ
Program, var olan bir problemi çözebilmek amacıyla herhangi bir bilgisayar dili kullanılarak yazılmış olan komutlar dizisidir.
Programlama dili, bilgisayarın iç yapısını fazla bilmeden programı geliştirmeye imkan veren kodlama araçlarıdır.
Konuşma dilinde olduğu gibi programlama dillerinde de belirli bir yazım kuralı (sentaks) vardır. Programlama dillerini kullanarak sadece bilgisayarlar için değil belleği ve işlemcisi olan bütün elektronik cihazlar için de uygulamalar yazılabilir.
Her insanın bir anadili olduğu gibi bilgisayarların da bir anadili vardır. Buna makine dili denir ve sadece 0 ve 1 lerden oluşur. Programlama dillerinin bilgisayarlar tarafından anlaşılması için öncelikle makine diline çevrilmesi gerekir. Bu ise derleme yöntemiyle gerçekleştirilir.
Derleyici, bir programlama dilinde yazılan kodu, makine diline çeviren bilgisayar programıdır. Derleyici (Compiler) önce program kodunu inceler. Programda hatalı bir yazım söz konusu ise, bu hatayı programcıya iletir. Eğer program kodu doğru ise makine kodunu oluşturur.
PROGRAMLAMA DİLLERİNİN TARİHÇESİ
Şimdiye dek birçok programlama dili geliştirilmiştir. Tabi ki zamanla bu dillerin kullanıldıkları alanlar farklılık göstermiştir. Bu nedenle programlama dilleri hem uygulama alanlarına hem de seviyelerine göre sınıflara ayrılmıştır. Programlama dillerini seviyelerine göre sınıflandıralım…
. Düşük Seviye (Örn: Assembler)
- Orta Seviye (Örn: C, C++, C#)
- Yüksek Seviye (Örn: Fortran, Basic, Cobol, Pascal)
- Çok Yüksek Seviye (Örn: Dbase, Clipper, Visual Basic)
FORTRAN (FORmula TRANslator)
John Backus tarafından 1950’li yıllarda IBM firması için geliştirilmiştir. Çıkış amacı; matematiksel hesaplamalar gerektiren bilimsel uygulamalarda kullanmaktır. Derleyicisi olan ve hayata geçirilmiş ilk programlama dili olarak bilinmektedir. Günümüzde bazı mühendislik alanlarında halen kullanılmaktadır.
COBOL (COmmon Business Oriented Language)
1950’li yılların sonunda kurumlara yönelik ticari uygulamalarda kullanılmak üzere, bir grup bilgisayar üreticisi ve çeşitli kurumlarda çalışan insanlar tarafından geliştirilmiştir. 2002 yılından beri Nesneye Yönelik Programlama’yı desteklemektedir.
PASCAL
Niclaus Wirth tarafından 1970’li yıllarda yapısal programlama yazmanın kolaylıkla insanlar tarafından anlaşılması için geliştirilmiştir. Avrupalı bir ekip tarafından oluşturulan ALGOL dilinden türetilmiştir. Kullanımı yıllardır devam eden Pascal, ilk Macintosh işletim sisteminin yazılmasında da rol almıştır.
C
Ken Thompson ve Dennis M.Rîtchîe’nin ortak çalışması ile AT&T ve Bell laboratuvarlarmda UNIX İşletim Sistemi’ni geliştirebilmek için 1972 yılında oluşturulan yapısal bir programlama dili olan C, çok güçlü özellikleri olmasına rağmen en ufak bir hatada programcıya büyük sorunlar çıkarabiliyordu. Programlamanın zaman içerisinde karmaşıklaşması ve gereksinimlerin artması ile nesne yön yeni bir yapı ortaya çıktı. Ancak C dili, bu yapıyı desteklemiyordu. Bu nedenle C programlama dilinin bir ileri seviyesi olan ve nesneye yönelik programlat destekleyen C++ (s/ plus plus) programlama dili doğmuş oldu.
JAVA
Sun firması adına James Gosling tarafından 1995 yılında geliştirilmiştir ve Endonezya’daki Jawa adasından ilham alınarak adına Java denilmiştir. “Write önce, run everywhere” yani “Bir kere yaz, her yerde çalıştır” ilkesine göre oluşturulmuştur. Basit, nesneye yönelik, güvenli, sağlam ve dinamik bir dil olması nedeniyle ilk piyasaya sürüldüğünde çok büyük ilgi
görmüştür ve günümüzde 4.5 milyar elektronik alette kullanılmaktadır.
.
C + +
1979 yılında Bjarne Stroustrup tarafından Bell Laboratuvarlarında geliştirilmeye başlanan C++, C programlama dilinin bütün özelliklerini barındıran ve kendisine has özellikler bulunduran genel amaçlı bir programlama dilidir. İlk olarak “Sınıflarla C olarak adlandırıldı, ancak 1983 yılında C’nin geliştirilmiş hali olduğunu belirtmek için kitabın ilerideki konularında işleyeceğimiz arttırma operatörü (++) eklenerek, C++ halini almıştır.
Aslına bakılırsa her C programı aslında bir C++ programıdır, fakat her C++ programı bir C programı değildir. C++’ı C’den ayıran başlıca özellikler; ileride göreceğimiz nesneye yönelik programlamaya olanak tanıyan “Sınıflar” ve “Çok biçimlilik” 9ibi kavramlardır
C++‘ın çıkışı yazılım dünyasında büyük etki yaptı. Nesneye yönelik programlamaya olanak sağlamasının yanı sıra hem çok hızlıydı hem çok ekonomikti hem de yaz|îT1 dili olarak çok esnek bir yapıya sahipti. Günümüzde halen birçok yerde kullanılıyor olması bunun en büyük kanıtıdır zaten.
YAZlLlM GELİŞTİRME SÜRECİ
Yazılım geliştirme süreci temel olarak 5 aşamadan oluşmaktadır. Bunları tek tek inceleyelim…
Gereksinim Analizi: Yazılımlar, belirli ihtiyaçları karşılayabilmek amacıyla geliştirilir.
Ancak bu ihtiyaçların yazılım sistemi tarafından eksiksiz olarak karşılanması gerekir.
Bu nedenle yazılıma başlamadan önce geliştirilecek yazılım sisteminin gereksinimleri, kısıtlamaları ve hedefleri tanımlanmalı ve belgelenmelidir.
Yazılım Tasarımı: Bu aşamada izlenilen yazılım tasarımı yöntemi, sonuçta oluşacak ürünün kalitesini, anlaşılabilirliğini ve yeri geldiğinde değiştirilebilirliğini etkiler. Bu aşamanın sonucunda yazılımın tasarımı ile ilgili tanımlamalar belgelenir.
Kodlama: İkinci maddede tasarım ile ilgili belgelenen tanımlamaların kodlanması bu aşamada gerçekleştirilir. Bu aşama, programlama dillerinin kullanıldığı tek aşamadır.
Sınama: Bu aşamada parça parça ele alınan birimler birleştirilerek tüm sistemin Aşamadaki gereksinimlere uygunluğu kontrol edilir. Bu aşamanın yapılması ile birlikte oluşturulan yazılım sistemi, kullanıcılara iletilir.
Bakım: Kullanıcılara iletilen yazılım sisteminin kullanılması esnasında farkına varılan hataların giderilmesi için sistemde değişiklikler yapılması gerekebilir. İşte bu değişiklikleri yaparken geçen zamana bakım zamanı denir.