Temel C Programlama -9- Basit Program Örnekleri – 1

Temel C programlamada ilk örneği anlayarak C diline büyük bir adım attık. Şimdi ise basit örnekleri büyük bir ayrıntı ile açıklayarak C program yapısını anlamanız için çaba sarf edeceğiz. Bunun için üç basit program yazdık ve programları önce geliştirme ortamına yazıp deneyeceğiz ve nasıl çalıştığını gördükten sonra yazdığımız kodu inceleyeceğiz.

Sayı Girme ve Girdiği Sayıyı Gösterme 

Önceki “Merhaba Dünya!” programında ekrana yazı yazdırmıştık. Peki, bizim ekrana yazdığımız yazıyı programın okuması için ne yapacağız?, sorusuna karşılık bu örneği yapıyoruz. Böylelikle C dilindeki temel giriş ve çıkış fonksiyonlarının ikisini de öğrenmiş olacağız.

Burada anlattığımız yerleri tekrar anlatmamaya çalışıyoruz fakat bazı kısımları yeri geldiğinde size hatırlatacağız. Bir de daha önceden yorum satırlarını size anlatsak da her kodu açıklamak için diğer eğitimlerde olduğu gibi yorum satırlarını bol bol kullanmayacağız. Çünkü öğrenci ilk öğrendiği sırada kodu okuyup anlamaya değil yorum satırlarını ezberlemeye çalışıyor. Bu kadar basit bir yerde yorum satırları ile her komutu tek tek açıklamak öğrencinin kafasını çalıştırmadan ezberlemesine sebep olur ve örneklerin öğretici niteliği azalır. O yüzden ben her zaman yaptığım gibi kod açıklamalarını kod üzerinde değil metinde yapacağım.  Programı çalıştırdığımızda şöyle bir çıkış verecektir.

int ile değişken tanımlama

Değişkenler içinde veri tutan bellek adreslerine verilen addır. Biz bir değişken tanımladığımızda derleyici bellekteki bilmediğimiz bir adresi sahiplenir ve burada bizim tanımladığımız değişkenin değerini tutar. Örnekte olduğu gibi int sayi = 0; dediğimizde int yani tam sayı tipinde ve sayi adında ve değeri 0 olan değişkeni belleğin örneğin 0x0000ACF5 adresinde tanımlar. Biz bu değişkene bir değer yüklemek istediğimizde bu bellekteki adrese değer yüklenir. Bu bellek adresinin değeri normalde bizi alakadar etmez. Bellek adreslerine işaretçiler kısmında daha ayrıntılı şekilde bakacağız. Şimdilik bir değişken tanımladığımızda belli bir bellek adresine ad verdiğimizi ve ad verdiğimiz bellek hücresinde de verinin tutulduğunu bilelim.

Bir değişken tanımlamak için anahtar kelime olan değişkenin tipini yazmakla işe başlarız. Bu değişkenin içine yazacağımız değer ondalıklı sayı mı olacak tam sayı mı olacak yoksa harf mi olacak burada belirleriz. Değişken adını yazdıktan sonra değişkeni ne maksatla kullanacaksak onunla alakalı bir ad veririz. Örneğin sonuç değerini içinde bulunduracaksa sonuc olabilir, isim bulunduracaksa isim olabilir. Bu adı kendimiz belli kurallar çerçevesinde veririz. Değişken isimlerini güzel seçmek önemlidir. İyi seçmediğimiz takdirde programı anlamak güçleşecek ve kafamız karışacaktır.

Sonrasında ise değişkene “=” operatörü ile ilk değer ataması yapılır. Tam sayı tipinde bir sayı değeri vermek istediğimiz zaman klavyeden sayıyı doğrudan yazabiliriz. Farklı değerler belli işaretler, önek ve soneklerle belirtilir. Örneğin değişkenin değeri bir karakter olacaksa ‘a’ şeklinde ondalıklı değer olacaksa 3.14F şeklinde olabilir. Bu değer tiplerini ilerleyen zamanda daha ayrıntılı olarak açıklayacağız. Şimdi örnek değişken tanımlamalarına bir bakalım.

Burada önce ogrenci_numarasi adında bir değeri belirsiz bir değişken tanımlanmıştır. Bunun ilk değerini vermediğimiz için ilk değer olarak rastgele bir değer alacaktır. Bellekte belirsiz bir alanda herhangi bir değer olabilir. Bu belirsiz alanı belirli yapmak için sadece elde tutmak değil içini de değiştirmek gereklidir. O yüzden değişkene ilk değer atamak her zaman güvenli bir yoldur. int ogrenci_notu = 0; ile ogrenci_notu değişkeni tanımlanmasının yanı sıra buna ilk değer olan 0 değeri atanır. Geri kalan tanımlamaları görmeniz için yazsak da bunları değişken tiplerini anlattığımız yerde ayrıntısıyla işleyeceğiz.

scanf Fonksiyonu

C dilinde stdio.h kütüphane dosyası temel giriş ve çıkış işlemlerini yapmamızı sağlayan fonksiyonların bulunduğu kütüphane dosyasıdır. Bu kütüphane dosyası STandarD Input Output kelimelerinin harflerinden türetilmiştir. Bu kütüphanede en sık kullandığımız iki fonksiyon vardır. Bunlardan biri konsol ekranına veri yazdırmak için kullandığımız printf fonksiyonu, diğeri ise klavyeden yazılan veriyi okuduğumuz scanf fonksiyonudur. printf fonksiyonu nasıl “print formatted” deyiminin kısaltmasıysa scanf fonksiyonu da “scan formatted” yani formatlı bir şekilde tara anlamına gelen bir fonksiyondur. Bu scanf fonksiyonu yine printf fonksiyonuna benzer bir şekilde çalışmakta fakat okuma işlemini yapmaktadır. Bizim klavyeden yazdığımız değerler konsol ekranında görünse de scanf fonksiyonu Enter tuşuna basana kadar çalışmamaktadır. Sonra ise ilk aldığı argümanı ikinci argümanın adresine aktarmaktadır. Şimdi yazdığımız komutu ayrıntısıyla inceleyelim.

scanf (“%i”, &sayi); 

Bu başta karışık gibi görünse de oldukça kısa ve anlaşılır bir yapıdadır. Sadece fonksiyonun nasıl çalıştığını bilmemiz bunu anlamak için yeterlidir. Burada scanf fonksiyonunun ilk aldığı değer “%i” adında bir değerdir. Burada iki tırnak arasındaki değerin karakter dizisi olduğunu biliyoruz. Bu fonksiyon %i ile ikinci argümana erişmekte ve % işaretinden sonra girdiğimiz format değerini yani “i” değerini okuyarak girilen değeri formatlı bir şekilde ikinci argümana yazdırmaktadır. Bu printf fonksiyonlarının nasıl format aldığını ilerleyen konularda size açıklayacağız. Fonksiyonun aldıkları değerler arasında virgül bulunması gereklidir. Örneğin fonksiyon iki veya üç değer alıyorsa şu şekilde yazılmalıdır.

Biz yukarıda int sayi = 0; diye bir sayi adında tam sayı değişkeni tanımladık. Fakat burada sayi değişkenini &sayi şeklinde kullanıyoruz. Bunun sebebi C dilinde int, float, double gibi tek değeri içeren değişkenlerin kendisini yazdığımızda değişkenin değeri verilmektedir. Biz ise değişkeni alarak değişkenin adresine bir veri yazmak istiyoruz. Bu durumda değişkene veri yazacağımız için değişkenin değeri ile bir işimiz olmuyor. O yüzden değişkenin adres değerini & operatörü ile öğreniyoruz ve fonksiyona değer olarak aktarıyoruz. Fonksiyon ise bu adres değerine okunan veriyi yazıyor. Sonraki örneklerde göreceğimiz üzere her değişken için bu adres operatörünü kullanmak gerekli değildir. Çünkü dizi gibi değişkenlerde ilk değer dizinin adres değeridir.

printf ( “\n Girdiginiz Sayi: %i \n “, sayi);

Burada programa girdiğimiz sayıyı göstermek için yine çıkış fonksiyonu olan prinf fonksiyonunu kullanıyoruz. Öncelikle \n kaçış sekansı ile yeni satıra geçeriz ve  Girdiginiz Sayi: diyerek kullanıcıya ekranda yazılacak değerin ne olduğunu belirtiriz. Burada %i olarak formatlanmış değer fonksiyona ilk argümanın tam sayı değerinde formatlanarak yazdırılacağını belirtir. Değeri yazdırdıktan sonra ise \n fonksiyonu ile yeni bir satıra geçeriz. Burada alınan argüman sayi argümanıdır. Fark ederseniz burada adres operatörü ile değişkenin adres değerini değil kendisini gönderdik. Çünkü değişkenin değeri ile işimiz var.

Burada ilk programı ayrıntılı bir şekilde inceledik ve sonraki başlıkta ise yine basit iki programı daha inceleyeceğiz. Bu üç programı anlamak sizin için çok önemli olacak. Biz elimizden geldiği kadarıyla anlatmaya çalışıyoruz.

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.