Dinamik Bellek Yönetimi

Dinamik Bellek Yönetimi, C Programlama Dilinde önem derecesi en yüksek konulardan biri olsa gerek. Bu denli önemli olmasının sebebi sınırsız belleğimimizin olmamasıdır. Sınırsız belleği olan varsa bu yazıyı okumaktan derhal vazgeçebilir. Burada önemli olan belleği verimli kullanabilmektir. Belleği verimli kullanabilmek her programcının amacı olmalıdır. Eğer programcı bellek yönetimini iyi yapamıyorsa daha fazla belleğe ihtiyaç duyar. Daha fazla belleğe ihtiyaç duymak belli başlı birkaç sorunu beraberinde getirir. Fazla maliyet, programın yavaş çalışması bunların en önemlileridir. Yavaş çalışan ve gereğinden fazla bellek tüketen bir programı müşteri niçin kullansın ki ?

Dinamik bellek yönetiminin bir başka yararından bahsedecek olursak, bir dizi tanımlarken

char ad[20];

gibi bir ifade kullandığımızda derleyici bellekten 20 byte boyutunda sürekli bir alan tahsis edecektir. Bu yer tahsisi program başlatılmadan önce yapılmaktadır. Yani programın akışı içerisinde bu dizinin boyutunu değiştirmeniz mümkün değildir. Oysa ki yeri geldiğinde bellekten boyutu sabit olmayan ve sürekli değişebilen yerler tahsis etmemiz gerekecek. Bir örnek vermek gerekirse : bir kütüphaneye gelen ziyaretçilerin listesini tutmak için bellekten tahsis edeceğiniz bölgenin boyutunu önceden tahmin edebilir misiniz ? Tahmin edemeyeceğiniz için her ziyaretçi geldiğinde bellekte ayırdığınız yeri büyüterek belleği en verimli şekilde kullanabilirsiniz. Yani dinamik bellek yönetimi ile programın çalışma zamanı sırasında(Run-Time) -işletim sistemine danışarak- sürekli bellek bölgeleri tahsis edebiliriz.

C Programlamada Structure – Yapılar

Herkese selamlar bu yazımda C Programlama Dilinde önemli bir yeri olan Struct yapıları hakkında bildiklerimi yazmak istiyorum. Yapıları kullanarak farklı tipteki verileri (int,char) aralarında belirli bir ilişki bulunmak şartıyla birarada tutabiliyoruz. Bir öğrencinin bilgilerini ele alırsak, adı soyadı, numarası, yaşı vs. gibi bilgiler birbiri ile ilişkili olduğundan hepsini belirli bir yapı altında kullanmak oldukça mantıklı değil mi ?

Aslında mantıksal olarak dizilere oldukça benziyen bu yapılar, dizilerin biraz daha gelişmiş versiyonu diyebiliriz. Öyle ki, dizilerde aynı tipten verileri bellekte sürekli bir şekilde saklıyabiliyorken, yapılarda farklı tipten verileri de sürekli bir şekilde saklayabiliyoruz. Bu yazdıklarımı bir giriş olarak kabul edersek, yapıların bildirimleri ve değişkenlerinin tanımlanması ile devam edelim.

Programlamada Recursive Fonksiyon Mantığı

C Programlama Dilinde sürekli olarak fonksiyonlar kullanarak yazdığımız programları basite indirgemeye çalışıyoruz ve program daha anlaşılır bir hal alıyor. Burada kullandığımız fonksiyonların ismi aslında Iterative Fonksiyonlar dır. Yani Iterativ fonksiyonlar, kendilerine söylenen işlemi yapar ve geriye bir değer döndürür ya da döndürmez.

Bu yazıda ise Iterative olmayan ve kendi içinde kendini çağırabilen Recursive Fonksiyonlar ile ilgili örnekler paylaşacağım. Bu fonksiyonların genel yapısı aşağıdaki gibidir.

C’de Floyd Üçgeni

Bu programı yaparken biraz ortalığı karıştırdğımı düşünüyorum ama sonunda oldu. Elde etmemiz gerek şekil şöyle :

1
23
456

Bunu yapan kodlar aşağıda.

Arama
RSS
Beni yukari isinla