coolwolf / 31/05/2013

C dilinde fonksiyonlar

Basitçe fonksiyon yazımı :

#include
void YaziYaz(char* yazi);
void main()
{
    YaziYaz("Merhaba");
}
void YaziYaz(char* yazi)
{
	printf(yazi);
}
Merhaba
Process returned 0 (0x0)   execution time : 0.016 s
Press any key to continue.

Üstteki örnek YaziYaz fonksiyonuna “Merhaba”  diye bir string gönderiyor. YaziYaz  fonksiyonu da verilen stringi ekrana yazıyor.
Aşağıda fonksiyondan nasıl değer döndüreceğimiz gösterilmiştir :

#include <stdio.h>
char* YaziYaz(char* yazi);
void main()
{
    char* sonuc=YaziYaz("Merhaba\n");
    printf(sonuc);
}
char* YaziYaz(char* yazi)
{
	printf(yazi);
	return "Yazdim yaziyi\n";
}
Merhaba
Yazdim yaziyi
Process returned 0 (0x0)   execution time : 0.019 s
Press any key to continue.

Yukarıdaki örneklerde dikkat ederseniz main() fonksiyonunun üstüne YaziYaz fonksiyonunu nasıl kullanacağımız tanımlanmıştır. Normalde fonksiyonların ne şekilde kullanılacağı .h uzantılı header dosyalarında yer alır. Şimdilik aynı dosyada yazdık. Başka örneklerde biz de header dosyası kullanacağız.

coolwolf / 31/05/2013

C dilinde ifadeler

IF ifadesi :

if(koşul) {kodlarım;}
------------------------------------------------
if(koşul) {doğruysa kodum;} else {yanlışsa kodum;}
------------------------------------------------
if(koşul 1) {kod 1;}
else if (koşul 2) kod 2;
else if (koşul 3) kod 3;
......
else if (koşul n-1) kod n-1;
else {n} kod;
------------------------------------------------

Örnek 1 eğer x ve y eşit değilse ekrana x ve y’nin değerlerini yazar:

if(x!=y) printf ("x=%d,y=%d\n",x,y);

Örnek 2 eğer x y’den büyükse degiskenim’in değeri x’e eşitlenir, değilse degiskenim’in değeri y’ye eşitlenir :

if(x>y) degiskenim= x; else degiskenim= y;

Switch / Case ifadesi :
Verilen değere göre hızlı işlem yapmaya yardımcı olur. Örnek :
Harf olarak verilen notun hangi sayı aralığında olduğunu gösterir.

#include
#include
int main()
{
    char notunuz;
    printf("Notunuz :");
    scanf("%c",&notunuz);
    switch (notunuz)
    {
    case 'A':
        printf ("90 ~ 100\n");
        break;
    case 'B':
        printf ("80 ~ 90\n");
        break;
    case 'C':
        printf ("70 ~ 80\n");
        break;
    case 'D':
        printf ("60 ~ 70\n");
        break;
    case 'E':
        printf ("<60\n");
        break;
    default:
        printf ("error\n");
    }
}

Kaya arkadaşımızın isteği üzerine, not’u rakam olarak yazdığında harf karşılığını veren program :
NOT: switch case içerisinde aralıklı koşul kullanılamadığı için if else ile yaptım, kendisinin affına sığınıyorum.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int notunuz;
    printf("Notunuz :");
    scanf("%d",&notunuz);
    if(notunuz>=90&&notunuz<=100) printf ("A\n");
    else if(notunuz>=80&&notunuz<90) printf ("B\n");
    else if(notunuz>=70&&notunuz<80) printf ("C\n");
    else if(notunuz>=60&&notunuz<70) printf ("D\n");
    else if(notunuz<60) printf ("E\n");
    else printf ("error\n");
}

while ifadesi
while içerisinde belirtilen şart geçerli olduğu sürece döngü içerisindeki işlemler tekrar edilir. Örnekte sayı değişkeni 0’dan büyük olduğu sürece ekrana sayıyı yazar.

int sayi=10;   //değeri 10 olan bir değişken tanımla
while(sayi>0) //değişkenin dğeri 0'dan büyük oldu sürece aşağıdakileri yap
{
   printf("Sayı %d\n",sayi); //ekrana geçerli sayıyı yaz
   sayi--; //değişkenin değerini bir azalt.
}

do while ifadesi
while ifadesi değeri en başta kontrol ederken, do while ile değeri işlem sonucunda kontrol ediyoruz.
for ifadesi

for(koşul1;koşul2;koşul3)
{
   işlemlerim;
}

koşul1’den başlayarak koşul2’ye kadar, her adımda koşul3’ü yaparak tekrar et.

int i=0;
for(i=0;i<10;i++)
{
  printf("Sıfırdan dokuza kadar sayıları yazar. Sayı : %d\n",i);
}
===================================
int i=0;
for(i=10;i>0;i--)
{
   printf("Ondan bire kadar geriye doğru yazar. Sayı : %d\n",i);
}

coolwolf / 31/05/2013

C dilinde hızlı değer atama yada bileşik atama

+= soldaki değişkene sağdaki değeri ekler.
++ soldaki değişkenin değerini bir arttırır.
*= soldaki değişkene sağdaki değerle çarpımından sonraki değeri atar.
/= soldaki değişkene sağdaki değere bölünmüş halini atar.
%= soldaki değişkene sağdaki değerle modlandıktan sonraki sonucu aktarır.
&= AND
|= OR
^= XOR
~= olumsuzlama, negatif değer
>>= sağa kaydırma
<<= sola kaydırma

coolwolf / 31/05/2013

C dilinde Escape ESC karakterleri

Escape karakteri Anlamı ASCII kodunun hexadecimal numarası
\o Null karakteri 00H
\n Yeni satır(LF) 0AH
\r Carriage Return(CR)yani enter 0DH
\t Horizontal tab(HT) 09H
\b Backspace(BS) 08H
\f FormFeed(FF) 0CH
\‘ Tek tırnak 27H
\” Çift tırnak 22H
\\ ters slash 5CH

 

coolwolf / 31/05/2013

C dilinde veri tipleri

Temel veri tipleri Uzunluk Sınır
unsigned char 1 Byte 0~255
signed char 1 Byte -128~+127
unsigned int 2 Byte 0~65535
signed int 2 Byte -32768~+32767
unsigned long 4 Byte 0~4294967295
signed long 4 Byte -2147483648~+2147483647
float 4 Byte ±1.175494E-38~±3.402823E+38
bit 1 bit 0 yada 1
sbit 1 bit 0 yada 1
sfr 1 Byte 0~255
sfr16 2 Byte 0~65535

Veri tiplerini küçükten büyüğe doğru sıralayacak olursak şöyle bir şey elde ederiz :
Bit → char → int → long → float → signed → unsigned
Veri tipleri arasında ileride yapacağımız çevrimlerde bu sıralama işimize yarayacaktır.

coolwolf / 31/05/2013

Kısaca C programlama dili

C sade,taşınabilir, kullanımı kolay ve esnektir.
Operatörler açısından zengindir.
Zengin veri yapıları. Modern bir dil.
Yapısal programlamaya uygun.
Doğrudan bilgisayar donanımında çalışabilir.
Yüksek kaliteli derleme sonucu, programın çalıştırılmasında kaynakları verimli kullanım.
Taşınabilirlik.
Fonksiyon yapısı kullanılarak, C dilinde bir ya da daha fazla fonksiyondan oluşan C dili programcıkları dahil edilebilir.
Ana (main()) fonksiyon mutlaka gereklidir. Tüm fonksiyonlar main() fonksiyonunda çağırılır. Burada unutulmaması gereken main() fonksiyonunun diğer fonksiyonlar tarafından çağırılamıyor olduğudur.
Kullanıcının kendisi fonksiyon tanımlayabildiği gibi, hazır kütüphanelerden de yararlanılabilir. Temelde tüm kütüphaneler fonksiyonlardan oluşmaktadır. Bunlara hazır fonksiyonlar diyebiliriz.