Programlama Yapısı

Programlama Yapısına Giriş

Bir önceki bölümde anlatılan yaklaşımlar, problem çözümlerinin organize edilmesi için yardımcı olarak kullanılan araçlardı. Bu bölümden itibaren çözümleri bilgisayarın daha iyi anlayıp işleyebilmesi için kullanılan teknikler anlatılacaktır. Diğer bir ifade ile bu teknikler, algoritmayı oluşturan yönergeleri farklı biçimlerde yazmanıza olanak sağlayacaktır.

1. Göstergeler

Bilgisayarlar; problemleri çözmek, işlerimizi kolaylaştırmak, daha hızlı ve etkili çözümler üretmek için kullanılır. Gerçekten yeterli çözümler üretebilmek için aşağıdaki göstergeleri önemsemek gerekir.

Bütünü, her biri anlamlı işlemler içeren parçalara bölünüz, modülleri kullanınız.

Farklı satırlar arasında bağlantı kurmak yerine mantıksal yapıları kullanınız.

Doğrusal yapı, işlemleri sıra ile çalıştırır. Aşağıda, klavyeden girilen iki sınav puanının aritmetik ortalamasını hesaplayan yapı görülmektedir:

Karar yapısı, iki olasılıktan birini seçmek ve ona göre devam etmek için kullanılır. Aşağıda, klavyeden girilen iki sınav puanının ortalamasını bularak öğrencinin dersten geçip geçmediğini kontrol eden yapı görülmektedir.

Döngüsel yapı, bir dizi işlemi tekrarlamak için kullanılır. Aşağıda, 20 öğrencilik bir sınıfın bir dersten aldığı iki not üzerine sınıf ortalamasını hesaplayan yapı görülmektedir.

Durumsal yapı ise belirli bir duruma göre farklı işlemlerin yapılmasına olanak sağlar. Aşağıda, klavyeden girilen sayıya göre haftanın gününü yazan yapı görülmektedir.

Tekrarlayan işlemlerin tekrar tekrar yazılmasını önlemek için modüler yapı kullanınız.

Okunabilirliği ve anlaşılırlığı artırmak için anlamlı değişken isimleri seçiniz ve çok iyi dokümantasyon hazırlayınız.




 2. Modüller ve İşlevleri

Bir yazarın, kitabını yazmaya başlamadan önce konuyu ve bölümleri düşünmesi, bir aşçının menüyü hazırlamaya başlamadan önce yemek türlerini, malzemeleri ve miktarları düşünmesi gibi bir programcı da programı yazmaya başlamadan önce detaylı bir biçimde problemi irdelemeli ve işlemleri gruplandırmalıdır. Ne zaman modüller etkileşim çizelgesinde doğru sıralanmış ise programcı her bir modül için kodu yazmaya başlayabilir. İyi bir programcı algoritmayı her bir modül için test eder, sorunlar varsa hemen çözüm üretir. Büyük bir program yerine küçük parçaları kontrol etmek daha kolaydır ve bu, zamandan kazanç sağlar. Modülleri oluştururken aşağıdaki noktalara dikkat edilmesi önerilir.

Her bir modül başlar, işlemleri yapar ve biter. Süreç içerisinde modüller arasında dallanma olmaz.

Her bir modülün tek bir işlevi vardır: yazdırma, karekök bulma, büyük harfe çevirme vb.

Her modül rahat anlaşılabilecek ve kolayca güncellenebilecek kadar kısa olmalıdır.

Modülün uzunluğu işlevine ve yönerge sayısına göre değişebilir.

Modüller süreç akışlarını kontrol etmek için oluşturulur.

Çok sık kullanılan modül türleri şu şekilde sıralanabilir:

Kontrol modülü programın genel akışını gösterir.

Başlama modülü program ilk başladığında yalnız bir kez yapılması gereken işlemleri gerçekleştirir (ilk değerlerin atanması).

Süreç modülleri bir ya da birden fazla belirli bir işlemi yapmak için kullanılır (hesaplama, veri okuma, yazdırma vb.).

Bitiş modülü ise program bitmeden önce yapılacak son işlemleri içerir.

Farklı modüller bir problemin çözümü için bir araya gelebilir. Program yönetimini kolaylaştırmak için bir modül birden fazla modülden de oluşabilir.

3. Bağlılık ve Birleşim

Problem çözme sürecindeki en zor adım, çözümü parçalara ayırmaktır. Her bir modülün hangi işlemlerden oluşması gerektiği önemli bir karardır. Modüller hem farklı işlemleri yürütecek kadar birbirinden bağımsız olmalı hem de aynı veriler ile çalışacak kadar birleşik olmalıdır. Birbirine zıt bu iki kavram bağlılık ve birleşim olarak adlandırılır. “Bağlılık” bir modülün diğer modüllerden bağımsız çalışabilme yeteneğidir. Her bir modül, bağımsız olarak tanımlanmış işlem setini çalıştırır ve sonucu gönderir. Ancak modüller çalışırken verileri almaları ve sonucu göndermeleri sürecinde bilgi paylaşır. Bu veri paylaşımı sürecinde “birleşim” yaşanır. Birleşim, modüller arası iletişim oluşmasını sağlar.

“Bağlılık”, bir modül içerisindeki fonksiyonların birbiri ile ne derece ilişkili olduğunun ölçümüdür. Eğer fonksiyonlar birbiri ile yakın ilişki içerisinde ise modülün yüksek bağlılık düzeyi olduğu söylenir. Benzer durumda birleşim düzeyi düşük olacaktır. Yüksek bağlılık ve düşük birleşim genellikle iyi yapılandırılmış bir tasarım demektir. Böyle tasarlanmış bir program daha anlaşılır, güvenilir ve tekrar kullanılabilir olacaktır. “Birleşim” ise modüllerin birbirine bağımlı olma düzeyidir. Düşük düzey birleşim her zaman tercih edilir çünkü bu durum modülün yönetimini ve okunabilirliğini arttırır.

Yüksek bağlılık düzeyi programın daha anlaşılır, güvenilir ve tekrar kullanılabilir olması açısından çok önemlidir. “Birleşim” ise modüllerin birbirine bağımlı olma düzeyidir. Düşük düzey birleşim her zaman tercih edilir çünkü bu durum modülün yönetimini ve okunabilirliğini arttırır.

4. Yerel ve Global Değişkenler

Yerel ve global değişken kavramı tüm programlama dilleri için çok önemli kavramlardır. Programcılar, yerel ve global değişkenleri bağlılık ve yapışkanlık oluşturmak amacıyla kullanırlar. Bir modül içinde tanımlanmış değişkenler “yerel”; modüller dışında program genelinde kullanılmak üzere tanımlanmış değişkenler ise “global” değişkenler olarak adlandırılır. Aralarındaki en önemli fark, kapsamlarıdır. Bu kapsam, değişkenin ne zaman nerede kullanılabileceğini belirler.

Yerel değişkenler, yalnızca tanımlandıkları modül içerisinde kullanılabilir. Diğer modüllerin bu değişkenlere ilişkin hiçbir bilgisi bulunmaz. Böylece değişken isimlerinin çakışması gibi sorunlar yaşanmaz. Bu nedenle yerel bir değişkenin diğer modüller tarafından kullanılması gerekirse bu değişkenin parametre ya da dönen değerler ile eşleştirilmesi gerekir.

Global olarak tanımlanan değişkenler ise bütün modüller tarafından tanınır. Program çalıştığı sürece hafızada tutulan ve işlem yapılabilen değişkenlerdir. Program akışında bağlılık oluşturmak için gereklidir. Programın çalışma sürecinde değişkenler için kullanılan bir hiyerarşi vardır. Buna göre önce yerel değişken, sonra parametre ve daha sonra da global değişken kullanılır. Bu yüzden programcılar aynı değişkeni hem yerel hem de global olarak tanımlarsa sorun yaşanır. Global değişkenler modüller arasında veri geçişini sağladığı için bu tür durumlarda parametre ve dönen değerlerin kullanılmasına gerek olmaz. Aşağıda yerel ve global değişkenlere ilişkin bir örnek görülmektedir.

5. Parametreler

Programlama sürecinde anlaşılması zor ama çok önemli konulardan biri parametrelerdir. Parametrelerin kullanımı benzer değişken isimlerinin çakışmasını önleyerek sürecin daha hızlı ilerlemesini sağlar. Modüller ayrı ayrı çalışır ve veriler parametreler aracılığı ile iletilir. “Parametreler” bir modülden diğerine geçen yerel değişkenlerdir. Modüller arasındaki iletişimi sağlar. Modül adından sonra ayraç içerisinde belirtilerek kullanılırlar: Oku (a, b, c) gibi. Eylemsel parametreler listesi, kontrol modülü tarafından çağrılan parametrelerin listesidir. Biçimsel parametre listesi ise ilgili modülü takip eden parametre listesidir.

Parametreleri kullanarak bir modülden diğerine veri göndermenin iki yolu vardır: Parametreleri değeri ya da adresi ile çağırabiliriz. Önünde “*” simgesi olmayan parametreler, değeri ile çağrılan parametrelerdir. Parametre değeri ile ilgili modüle iletildiğinde, o modül o değerle ilk kez karşılaştığı için hafızada yeni bir yer oluşturur. Bu durumda ilgili değer değiştiğinde programın geneli etkilenmez; yalnızca modül aktif olduğu sürece geçerli olur çünkü çağrılan modülde bu değer için hafızada ayrılmış farklı bir yer vardır. Böylece değeri ile çağrılan değişken için hafızada iki farklı yer ayrılmıştır ve bunlar, farklı modüller tarafından değiştirilebilir.

Parametre, değeri ile değil, adresi ile çağrıldığında, ilgili modüle değer yerine hafızadaki yer bilgisi gönderilir. Çağrılan modül, hafızada ilgili yerdeki değer ile işlem yapar. Bir değişiklik olduğunda hem çağıran modül hem de çalışan modül bu değişikliği fark eder yani değişiklik program genelinde etkili olur. Adresi ile çağrılan parametrede hafızada aynı yer paylaşılırken, değeri ile çağrıldığında hafızada aynı değişken iki farklı yer ayrılır. Parametreler modüller arasında yapışkanlık yaratmak için en iyi yöntemdir.




6. Dönen Değerler

Modüller arasında yapışkanlık yaratmanın üç yolu vardır.

Yerel değişkenler

Parametreler

Dönen değerler

Bir fonksiyonu çağırıp belirli işlemleri gerçekleştirdiğimiz zaman fonksiyon bize bir ya da daha fazla işlem sonucunu döndürür. Dönen değer, fonksiyon sonucudur. Bu işlem, fonksiyonu adı ile çağırarak gerçekleşir. İşlem sonucundaki değer, geçici olarak ilgili değişkene atanır. Fonksiyon, çalışmasını bitirdiğinde artık o isme atanmış bir değer bulunmaz çünkü bu değer, çağıran modüle geri dönmüştür. Aşağıdaki şekilde bu akış görülmektedir.


Programlama Yapısı konusu ile ilgili sunum dosyasına ve konu testine (yakında) aşağıdan ulaşabilirsiniz.

Bir cevap yazın

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