Temel C Programlama -23- Fonksiyonlara Giriş

Artık bu noktadan itibaren giriş seviyesini bıraktık ve orta seviyeye doğru ilerliyoruz. Okuyuculardan ricamız bu noktaya kadar anlattıklarımızı tam anlamıyla anlamış olmaları ve yazılan program kodlarını okuyabilecek seviyeye gelmeleridir. Eğer dersleri takip etmenize rağmen bu konuda bir eksikliğiniz varsa hiç çekinmeden farklı kaynaklardan faydalanabilirsiniz. Video, kitap ya da eğitim yazısı olsun hepsi aynı konuları anlatsa da farklı örnekleri inceleme ve farklı anlatımlardan yararlanma imkanınız olur. Ben gömülü sistem geliştiricisi olduğum için konuya kendi bakış açımdan bakabilirim. Siz farklı yazarlardan faydalandıkça konuya bakış açınız daha genişleyecektir. Ben öğrendiğimi pekiştirmek için aynı konu hakkında yazılmış farklı İngilizce kitapları okumaktayım.

Fonksiyonlar bizim karmaşık program yazmamızdaki ilk adımımızdır. Ayrıca C dilinde en çok kullanılan yapılardan biridir ve dilin olmazsa olmazıdır. C dilinde yazılan programların hepsi fonksiyonlar üzerine bina edilmiştir. Biz fonksiyon konusunu anlatmadan önce bile ilk programda main() ya da printf() fonksiyonlarını kullanarak fonksiyonlara giriş yapmış olduk. Fonksiyon olmayan bir C programını düşünmemiz imkansızdır çünkü en azından bir main fonksiyonunu içinde bulundurmaktadır.

Fonksiyonları bölünmüş program blokları olarak düşünebiliriz. Biz 100-200 satır programı geçtikten sonra yazdığımız program aşırı derecede büyük ve bunu bölümlere ayırmamız gerekir. Aynı bir kitap yazarken başlıklara ayırmak ya da öğrencileri sınıflara ayırmak gibi kodları da fonksiyonlara ayırırız ve blok blok kullanırız. Birbiriyle alakalı komutlar veya bir işi yapmaya yönelik komutlar bir fonksiyon içerisinde toplanır. Fonksiyonların en önemli kullanım sebebi kodun organize etmektir. Ayrıca tekrar eden kod bloklarını da fonksiyon olarak belirterek sürekli aynı program blokunu yazmaktan kurtuluruz. Bir kere fonksiyonu yazdıktan sonra defalarca kullanabiliriz ve bellekte tekrar tekrar yer kaplamaz.

Fonksiyonların kullanıldığı ve kodların tekrar etmediği bir program bu yönden optimize edilmiş bir programdır. Böylece bellekte daha az yer tutmaktadır. İşletilen kod sayısında bir değişiklik olmasa da özellikle gömülü sistemlerde kısıtlı hafıza alanında çalıştığımız için bellek miktarı sıkıntı olmaktadır.

Bellek yiyen programlar bazen bilgisayarlarda da sıkıntı haline gelmektedir. Çok basit yapılı programlar bile belki yanlış programlama dilinden belki de optimizasyondan dolayı aşırı derecede bellek tüketmektedir ve yüksek seviye sistemlerde bile istenilen performansı verememektedir.

C’de programların modüllere fonksiyonlar ile ayrıldığını söylemiştik. Bu modüller aynı lego parçaları veya yapboz parçası gibi belli bir şekilde ve amaca yönelik olmaktadır. Bölünmüş programlar üzerinde hakimiyet kurmak daha kolay olmaktadır. Bu program parçalarını çeşitli dizilimlerde bir araya getirerek programı düzenleyebileceğimiz gibi farklı programlar da yazabiliriz. Örneğin prinf fonksiyonu ekrana formatlı yazı yazdıran bir program modülüdür. Fakat bu fonksiyonu biz yazacağımız yüzlerce örnekte kullanabiliyoruz. Sadece fonksiyon adını çağırarak birbirinden alakasız programlara entegre edebiliriz.

C dilinde hazır fonksiyonlar standart kütüphanelerle beraber gelse de istersek biz bu fonksiyonların taklitlerini yazabileceğimiz gibi tamamen kendimize ait bambaşka bir fonksiyon da yazabiliriz. Fonksiyonlar printf fonksiyonundan gördüğümüz üzere argüman adı verilen değerleri almaktadır. Bu değerler fonksiyonun program blokuna gider ve ilgili yerlerde işletilir. Ayrıca fonksiyonların değer döndürdüğünü de gördük. Örneğin getche() fonksiyonu klavyeden girilen karakter değerini bize bildiriyordu.

Fonksiyon konularını geniş bir alana yayacağız ve çeşitli örneklerle zenginleştireceğiz. Çünkü fonksiyonları anlamak ve etkili kullanmak iyi program yazmanın temelidir. Fonksiyonları iyi kullanabilmek için bolca pratik ve tecrübe de gerekmektedir. Fakat bunlardan önce kapsamlı bir teorik bilgiye ihtiyaç vardır.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.