C Programlama derslerinin bir önceki dersinde değişkenlerden bahsetmiştim. Değişken parametreleri ve değişken tanımlamasına yer verdiğimiz basit bir örnek yapmıştım.
Değişkenler kavramına dair anlatmadığım bazı bölümler bulunuyor. Bu derste çok ayrıntıya girmeden anlatmaya çalışacağım. Başlayalım.
C dilinde bulunan değişken tiplerini iki bölümde inceleyebiliriz : sayısal tipler ve karakter tipi. Karakter tipi olarak sadece char bulunurken, sayısal tipler şunlardır :
Bu değişkenler hafızada belli bir yer kaplar. Hafızada hangi veri tipinin ne kadar yer kapladığı bilgisi, işletim sistemine göre değişiklik gösterir.
Bu bilgiye erişmek için basit bir uygulama yapalım. Böylelikle hangi verinin ne kadar yer kapladığını gördüğümüz gibi bir önceki derste kullandığımız printf fonksiyonunun kullanımı hakkında daha detaylı bilgi edinmiş oluruz.
Uygulamaya geçmeden önce printf fonksiyonundan bahsetmek istiyorum. Ekrana veri tiplerini basmak için kullandığımızdan bahsetmiştik. Ancak uygulamada bazı şeyleri bilmemiz gerekiyor.
Eğer ekrana basacağımız veri:
karakterleri kullanılır.
printf içerisindeki yazıyı düzenlemek için de şu kodlar kullanılır :
Bu kadar printf bilgisi sanırım yeterli. Gelelim değişkenlerimizin hangi değer aralıklarında değer aldıklarına.
Not : Kod içerisinde yer alan // karakterleri tek satırlık yorum için ve /* */ karakterleri de çoklu yorum satırları için kullanılır.
Veri tiplerinin hafızada kapladığı alanın işletim sistemine göre değiştiğinden bahsetmiştim. Bunun için şöyle bir uygulama yapalım :
/**********************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
**********************************************************************/
#include<stdio.h>
#include<limits.h>
#include<float.h>
int main( void )
{
printf("DEĞİŞKENLERİN HAFIZADA KAPLADIĞI ALAN\n");
printf( "\nTIP\t\t BOYUT\t\t MIN DEĞER\t \tMAX DEĞER\n" );
printf("==============================================================\n");
printf( "char\t\t: %d byte(s)\t%d\t\t\t%d\n", sizeof(char),CHAR_MIN,CHAR_MAX );
printf( "short\t\t: %d byte(s)\t%d\t\t\t%d\n", sizeof(short), SHRT_MIN, SHRT_MAX );
printf( "int\t\t: %d byte(s)\t%d\t\t%d\n", sizeof(int), INT_MIN, INT_MAX );
printf( "unsigned int\t: %d byte(s)\t\t\t\t%u\n",sizeof(unsigned),UINT_MAX );
printf( "long\t\t: %d byte(s)\t%ld\t%ld\n", sizeof(long), LONG_MIN, LONG_MAX );
printf( "float\t\t: %d byte(s)\t%e\t\t%e\n", sizeof(float), FLT_MIN, FLT_MAX );
printf( "double\t\t: %d byte(s)\t%e\t\t%e\n\n", sizeof(double), DBL_MIN, DBL_MAX );
return 0;
}
Uygulamanın çıktısı ise aşağıdaki gibidir :
Uygulamada herbir veri tipinin hafızada kaç byte yer kapladığı, aldığı minimum değer ve max değerler verildi. Bunun hesabı için de sizeof() fonksiyonu kullanıldı. Şimdilik bu kadarını bilmeniz yeterli diye düşünüyorum. Çok detaya inmeye gerek yok.
Son olarak
printf ("%8.4f", pi);
kodu ile 8 karakterlik ondalık sayının 4 karakterinin ondalık olmasını istediğini ifade ediyoruz.
Şimdi de printf kodlarının uygulamasını gösteren bir uygulama yapalım :
/**********************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
**********************************************************************/
#include <stdio.h>
void main(void)
{
float ondalikSayi1, ondalikSayi2;
ondalikSayi1 = ondalikSayi2 = 952.528749;
double uzunOndalikSayi= 52468.582369;
int tamSayi = 8574;
printf("Float hali : %f\n",ondalikSayi1);
printf("Üstel hali : %e\n",ondalikSayi1); // %E ' de olr
printf("Kısa Form hali : %g\n", ondalikSayi1); // %G de olur.
printf("Double Kısa Form hali : %lg\n\n", uzunOndalikSayi);
printf("Onluk sayi sisteminde tamSayi : %d\n", tamSayi);
printf("Sekizlik sayi sisteminde tamSayi : %o\n", tamSayi);
printf("Hex sayi sisteminde tamSayi : %x\n", tamSayi);
printf("Onluk sayi sisteminde tamSayi : %8d\n", tamSayi); //----8574 basılacak
printf("Onluk sayi sisteminde tamSayi : %-8d\n\n", tamSayi); //8574---- basılacak
printf("%s", "Sayılar\n\n");
printf ("Karakter Dizisi Yazdırma\n\n");
char cDizi[] = "String, bir karakter dizisidir.";
printf("%s\n", cDizi);
printf("%.6s\n",cDizi); // cDizi'nin ilk 6 karakteri alınacak
}
Uygulamanın çıktısı aşağıdaki gibidir :
Kodları dikkatli bir şekilde incelerseniz birçok şey anlaşılacaktır.
C syntax dillerde değişkenler main fonksiyonunun çalışması ile bellekte yer edinirken program sonlandığında hafızadan silinirler.
Ayrıca program içerisinde her değişkene her yerden erişemezsiniz. Değişkenlerin kendilerine ait bir yaşam (kapsama) alanları bulunur. Bu da süslü parantezlerle oluşturulan bloklarla sağlanır.(curly bracket)
Anlamak adına basit bir uygulama yapalım :
/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <stdio.h>
void main(void)
{
int a = 5;
int b = 3;
int c = 2;
printf("Dış blok değişken değerleri :\n\n");
printf("a = %d\nb = %d\nc = %d\n",a,b,c);
{
int c = 0;
printf("\nİç blok değişken değerleri :\n\n");
printf("a = %d\nb = %d\nc = %d",a,b,c);
}
}
Uygulamamızın çıktısı aşağıdaki gibidir :
Programda iki adet curly bracket bloğu bulunmaktadır. Birincisi main bloğu diğeri ise main içerisinde bulunan bloktur. main blogunda a,b ve c değişkenleri tanımlanmış ve değerleri ekrana yazdırılmıştır. Aynı şekilde iç blokta yine c isminde bir değişken tanımlanmış ve a,b ve c değişkenlerini değeri ekrana yazdırılmıştır.
İlk çıktı main bloğu içerisinde bulunduğundan a,b ve c değişkenleri sırasıyla 5,3 ve 2 değişkenlerini almıştır. İç blokta alınan çıktıda ise a,b ve c değişkenleri 5,3 ve 0 şeklinde ekrana basılmıştır. c değişkeninde meydana gelen değişikliğin sebebi farklı bloklarda bulunuyor olmalarındandır.
Normalde Java gibi bir dilde bu uygulama çalıştırılsaydı hata alır, çalışmazdı. Ancak C de dıştaki main bloğunun kapsama alanı belirlenirken içerideki bloktada aynı isimde değişken olduğundan bu blok dahil edilmiyor, en azından c değişkeni için öyle. Yoksa içteki blokta da a ve b değişkenlere erişim sağlanıyor aslında.
Şimdi de değişken isimlendirme kurallarından bahsedelim.
Değişken isimlendirme kurallarında dikkat edilecek hususlar şöyledir :
Bugünlük bu kadar, umarım faydalı bir çalışma olmuştur.
Uygulama noktasında herhangi bir sorun yaşarsanız aşağıdaki yorum panelini kullanarak iletişime geçmekten çekinmeyin lütfen. Teşekkürler.
Kaynak belirtilmeyen görseller @etasarim a aittir. / Pictures that don’t have any source belongs to
@etasarim.