Skip to main content

C Programlama Örnekleri | C Dili Dersleri

C PROGRAMLAMA DİLİ ÖRNEKLERİ

C programlama dili nasıl kullanılır ? Projeler nasıl yapılır ? C programlama dilinde örnek projeler nasıl yapılır ? Bu ve benzeri sorulara cevap aradığımız C Programlama Dili Örnekler adlı yazımızda C Programlama dili ile yapılmış örnek projeleri sizlerle paylaşıyoruz.

C DİLİ ÖRNEKLER  

C Programlama Örneği 1 :

Bir Stack uygulaması için C programı yazalım.Stack anlam olarak yığın,dizi  anlamlarına gelmektedir.Stack LIFO (Last in First Out – Son girer , İlk çıkar) data yapısına sahiptir.Burada Push (içeri alma işlemi) , POP (Silme işlemi) ve Display (gösterme işlemi) kullanılacaktır.

Başlayalım ;

#include <stdio.h>
#include <conio.h>
#define MAXSIZE 5

struct stack /* Stack için yapı tanımlaması */
{
int stk[MAXSIZE];
int top;
};

typedef struct stack STACK;
STACK s;

/* Fonksiyon Bildirimi/Prototip*/

void push (void);
int pop(void);
void display (void);

void main ()
{
int choice;
int option = 1;

clrscr ();

s.top = -1;

printf (“Stack İslemleri\n”);
while (option)
{
printf (“——————————————\n”);
printf (” 1 –> PUSH \n”);
printf (” 2 –> POP \n”);
printf (” 3 –> DISPLAY \n”);
printf (” 4 –> EXIT \n”);
printf (“——————————————\n”);

printf (“Seciminizi Giriniz\n”);
scanf (“%d”, &choice);

switch (choice)
{
case 1: push();
break;
case 2: pop();
break;
case 3: display();
break;
case 4: return;
}

fflush (stdin);
printf (“Devam Etmek İstiyormusunuz (Seç : 0 ya da 1)?\n”);
scanf (“%d”, &option);
}
}

/*Stack’a element ekleme fonksiyonu*/
void push ()
{
int num;
if (s.top == (MAXSIZE – 1))
{
printf (“Stack Dolu\n”);
return;
}
else
{
printf (“İçeri alınacak elaman girişi yapınız\n”);
scanf (“%d”, &num);
s.top = s.top + 1;
s.stk[s.top] = num;
}
return;
}

/*Stack’dan element silme fonksiyonu*/
int pop ()
{
int num;
if (s.top == – 1)
{
printf (“Stack Bos\n”);
return (s.top);
}
else
{
num = s.stk[s.top];
printf (“pop edilen element  = %d\n”, s.stk[s.top]);
s.top = s.top – 1;
}
return(num);
}

/*Stack durum gösterme fonksiyonu*/
void display ()
{
int i;
if (s.top == -1)
{
printf (“Stack bos\n”);
return;
}
else
{
printf (“\nStack’ın durumu\n”);
for (i = s.top; i >= 0; i–)
{
printf (“%d\n”, s.stk[i]);
}
}
printf (“\n”);
}

Çıktılar :
Stack İşlemleri ;
——————————————
1 –> PUSH
2 –> POP
3 –> DISPLAY
4 –> EXIT
——————————————
Seçiminizi Giriniz ;
1
Push edilecek elementi giriniz :
23
Devam Etmek İstiyor musunuz ? (Seç : 0 ya da 1)?
1
——————————————
1 –> PUSH
2 –> POP
3 –> DISPLAY
4 –> EXIT
——————————————
Seçiminizi Giriniz ;
1
Push edilecek elementi giriniz :
45
Devam Etmek İstiyor musunuz ? (Seç : 0 ya da 1)?
1
——————————————
1 –> PUSH
2 –> POP
3 –> DISPLAY
4 –> EXIT
——————————————
Seçiminizi Giriniz ;
1
Push edilecek elementi giriniz :
78
Devam Etmek İstiyor musunuz ? (Seç : 0 ya da 1)?
1
——————————————
1 –> PUSH
2 –> POP
3 –> DISPLAY
4 –> EXIT
——————————————
Seçimizini Giriniz :
3

Stack’ın Statüsü :
78
45
23

Devam Etmek İstiyor musunuz ? (Seç :  0 ya da 1)?
1
——————————————
1 –> PUSH
2 –> POP
3 –> DISPLAY
4 –> EXIT
——————————————
Seçiminizi Giriniz :
2
poped element = 78
Devam Etmek İstiyor musunuz ? (Seç :  0 ya da 1)?
1
——————————————
1 –> PUSH
2 –> POP
3 –> DISPLAY
4 –> EXIT
——————————————
Seçimizini Giriniz :
3

Stack’ın Statüsü :
78
45
23

Devam Etmek İstiyor musunuz ? (Seç :  0 ya da 1)?
0

C programlama dili örnekleri

C Programlama Örneği 2 :

Tek bağlantılı olan bir listenin işlemlerini göstermek adına bir C programı yazalım ;

Başlayalım :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAX 30

struct EMP
{
int empno;
char empName[MAX];
char designation[MAX];
struct EMP *next;
};

/*Fonksiyon , karşı bağlantılı listeden bir node içeri alır */

/*front : Front pointer’ı , id : Çalışan ID , name : Çalışan ismi*/
/* desg:  Çalışan Gösterimi/Belirleme */

struct EMP* insert(struct EMP *front, int id, char name[], char desg[])
{
struct EMP *newnode;

newnode = (struct EMP*) malloc(sizeof(struct EMP));

if (newnode == NULL)
{
printf(“\nYerleştirme Yapılamadı\n”);
exit(2);
}
newnode->empno = id;
strcpy(newnode->empName, name);
strcpy(newnode->designation, desg);
newnode->next = front;
front = newnode;
return(front);
} /*insert() işleminin sonu */

/* Bağlantılılı listede gösterilecek nod fonksiyonu */
void printNode(struct EMP *p)
{
printf(“\nCalısan Detayları\n”);
printf(“\nCal No : %d”, p->empno);
printf(“\nİsim : %s”, p->empName);
printf(“\nGösterim : %s\n”, p->designation);
printf(“————————————-\n”);
} /*printNode()’un sonu */

/*Calısan numarasına göre deleteNode işlemi fonksiyonu*/
/* front: front pointer, id: anahtar deger */
/* Returns: ayarlı liste */

struct EMP* deleteNode(struct EMP *front, int id)
{
struct EMP *ptr;
struct EMP *bptr; /* bptr is pointing to the node behind ptr */

if (front->empno == id)
{
ptr = front;
printf(“\nNode silindi:”);
printNode(front);
front = front->next;
free(ptr);
return(front);
}

for(ptr=front->next, bptr=front; ptr!=NULL; ptr=ptr->next, bptr=bptr->next)
{
if (ptr->empno == id)
{
printf(“\nNode silindi:”);
printNode(ptr);
bptr->next = ptr->next;
free(ptr);
return(front);
}
}
printf(“\nCalısan numarası %d bulunamadı “, id);
return(front);
} /*deleteNode()’un sonu */

/* emp ID’e göre arama yapan fonksiyon */
/* front: front pointer, key: key ID. */

void search(struct EMP *front, int key)
{
struct EMP *ptr;

for (ptr = front; ptr != NULL; ptr = ptr -> next)
{
if (ptr->empno == key)
{
printf(“\nKey bulundu:”);
printNode(ptr);
return;
}
}
printf(“\nCalisan No %d bulunamadı “, key);
} /*End of search() */

/* Bağlantılı liste gösterme fonksiyonu */
void display(struct EMP *front)
{
struct EMP *ptr;

for (ptr = front; ptr != NULL; ptr = ptr->next)
{
printNode(ptr);
}
} /*display()’in sonu */

/* Bağlantılı listede menü işlemlerini gösterme fonksiyonu */
void menu()
{
printf(“*****************\n”);
printf(“Listeye nod eklemek icin 1’e basın. \n”);
printf(“Listeden nod silmek için 2’ye basın. \n”);
printf(“Listeyi göstermek için 3’e basın. \n”);
printf(“Listeyi aramak için 4’e basın \n”);
printf(“Cıkmak için 5’e basın \n”);
printf(“*******************\n”);
} /*menu() sonu */

/* Seçilmiş Fonksiyon */
char option()
{
char choice;

printf(“\n\n>> Seçiminizi Girin : “);
switch(choice=getche())
{
case ‘1’:
case ‘2’:
case ‘3’:
case ‘4’:
case ‘5’: return(choice);
default : printf(“\nYanlis Secim.”);
}
return choice;
} /*option() Sonu */

/*main() programı başlar ! */
void main()
{
struct EMP *linkList;
char name[21], desig[51];
char choice;
int eno;

linkList = NULL;

printf(“\nTek bağlantılı liste gösterimine hoşgeldiniz ! \n”);

menu(); /*Fonksiyon çağrısı */

do {
choice = option(); /*çalışacak işlemleri seçmek adına ; */

switch(choice)
{
case ‘1’: printf(“\nCalisan numarasını gir : “);
scanf(“%d”, &eno);

printf(“Calisan adını gir : “);
fflush(stdin);
gets(name);

printf(“Calisan tanımlamasını gir : “);
gets(desig);

linkList = insert(linkList, eno, name, desig);
break;

case ‘2’: printf(“\n\nSilinecek calisan numarasını gir: “);
scanf(“%d”, &eno);

linkList = deleteNode(linkList, eno);
break;

case ‘3’: if (linkList == NULL)
{
printf(“\nListe bos.”);
break;
}
display(linkList);
break;

case ‘4’: printf(“\n\nAranacak calisan numarasını gir : “);
scanf(“%d”, &eno);

search(linkList, eno);
break;

case ‘5’: break;
}
} while (choice != ‘5’);
} /*main() sonu*/

Çıktılar :

Tek Bağlantılı Liste Gösterimi :
———————————————
Listeye node eklemek için 1’e basınız !
Listeden node silmek için 2’e basınız !
Liste gösterimi için 3’e basınız !
Arama yapmak için 4’e basınız !
Çıkmak için 5’e basınız.
———————————————

>> Seciminizi Girin : 1
Calisan numarasını gir  : 1278
Calisan adını gir : Ahmet
Calisan tanımını gir  : İsci

>> Seciminizi Girin : 1
Calisan numarasını gir  : 9734
Calisan adını gir : Bayram
Calisan tanımını gir  : Mühendis

>> Seciminizi Girin : 1
Calisan numarasını gir  : 8761
Calisan adını gir : Kamil
Calisan tanımını gir  : Yönetici

>> Seciminizi Girin : 3

Calisan Detayları ;

Calisan No : 1278

İsim : Ahmet

Tanım : İsci
————————————-

Calisan Detayları ;

Calisan No : 9734

İsim : Bayram

Tanım : Mühendis
————————————-

Calisan Detayları ;

Calisan No : 8761

İsim : Kamil

Tanım : Yönetici
————————————-

>> Seciminizi Girin : 2

Silinecek Calisan Numarasını yazın : 1278

Node Silindi:
Calisan Detayları :

Calisan No : 1278

İsim : Ahmet

Tanım : İsci
————————————-

>> Seciminizi Girin : 3

Calisan Detayları ;

Calisan No : 9734

İsim : Bayram

Tanım : Mühendis
————————————-

Calisan Detayları ;

Calisan No : 8761

İsim : Kamil

Tanım : Yönetici
————————————-

>> Seçiminizi Girin : 4

Aratılacak calisan numarasını giriniz : 8762

8762 calisan numarası bulunamadı !

>> Seciminizi girin : 5

C Programlama Örneği 3 :

Bir array arama işlemi yapacağız.Eğer istenilen elementler bulunursa ‘başarılı arama’ , eğer bulunamazsa ‘başarısız arama’ olarak mesaj alacağız.

Başlayalım  ;

#include <stdio.h>
void main()
{
int table[20];
int i, low, mid, high, key, size;

printf(“Dizi boyutunu giriniz \n”);
scanf(“%d”, &size);

printf(“Dizi elementlerini giriniz ! \n”);
for(i = 0; i < size; i++)
{
scanf(“%d”, &table[i]);
}

printf(“Anahtar ifadeyi girin ! \n”);
scanf(“%d”, &key);

/* Arama başlatma */

low = 0;
high = (size – 1);

while(low <= high)
{
mid = (low + high)/2;
if(key == table[mid])
{
printf(“Basarılı Arama\n”);
return;
}
if(key < table[mid])
high = mid – 1;
else
low = mid + 1;
}

printf(“Basarisiz Arama\n”);
} /* main() fonk. sonu */

Çıktılar :
Dizi boyutunu giriniz !
5
Dizi Elementlerini giriniz !
12
36
45
78
99
Anahtar ifadeyi girin !
45

‘Basarili Arama’

C Programlama Örneği 4 :

Diskte depolanan verilerin nasıl okunduğunu bizlere gösteren bir C programı yazalım.

Başlayalım ;

#include <stdio.h>
#include <stdlib.h>

void main()
{
FILE *fptr;
char filename[15];
char ch;

printf(“Açılacak Dosya Adı nedir ? \n”);
gets(filename);

fptr = fopen (filename, “r”); /*okuma için aç*/

if (fptr == NULL)
{
printf(“dosya acılamaz\n”);
exit(0);
}

ch = fgetc(fptr);

while (ch != EOF)
{
printf (“%c”, ch);
ch = fgetc(fptr);
}

fclose(fptr);
} /*main()’in sonu */

Çıktılar :
Açılacak dosya adı nedir ?

emp.rec (örnek ! )
İsim = Mehmet
Yaş = 25
Ücret = 3000

C PROGRAMLAMA DİLİ ÖRNEKLER  SONUÇ : 

Bugün C programlama dili örnekler adlı yazımızı sizlerle paylaştık.Bu yazı dizisi ile C programlama diline daha hakim hale gelmek için örnek programları inceleyecek ve paylaşacağız.Umuyorum faydalı olacaktır.

İyi Çalışmalar

C Programlama Dili Eğitimi -5| C Programlama Eğitimi

C PROGRAMLAMA DERS NOTLARI KİTABI İNCELEME

C  programlama dili nedir? C programlama dili fonksiyonları ve detayları nedir ? C programlama dili nasıl çalışır ve programlanır ?Bugünki yazımızda C programlama eğitimi – 5 adlı yazımızı sizlerle paylaşıyoruz.

Başlayalım.

C PROGRAMLAMA DİLİ

-Tırnak içerisinde yazılan herşey Alfa sayısal sabit olarak adlandırılmaktadır ve bu değerleri aritmetik işleme sokmak ve ya bunları bir sayı gibi değerlendirmek mümkün değildir.

Ör : “Derstagram”

-Ekranda belki görünmeyen ancak özel etkileri olan karakterlerde iki harf gibi görünenler olsada tek karakterlik değişkenler grubunda ele alınırlar ve tek tırnak içerisinde yazılırlar.

Ör  : ‘\n’ , ‘\t’ vb.

-Herhangi bir değerin önündeki 0 (sıfır) sekizli bir sabiti ifade eder.0x şeklinde başlayan bir sayı ise on altılı bir sabiti ifade ediyor demektir.

-\0 sabiti bir karakter katarında katarın sonlandığı noktayı gösteren özel sıfır değerli karakterdir.

-Bir değişkene isim verilirken harf ile başlamanız gerekmektedir.Sonraki karakterler harf-rakam karışık olabilir.Türkçede bulunan : ‘ ç , Ç , Ö , ö , Ş , ş , Ğ , ğ , Ü , ü , İ , i ’ harfleri ve ‘’ * , / , + , }, ] ’’ gibi karakterler kullanılmamalıdır.

-Sayısal değişkenler ;

int : Tamsayı değişken tanımlama için kullanılır.

Unsigned int : İşaretsiz yani pozitif tamsayı değişken tanımlama adına kullanılır.

Long int : Uzun tamsayı (Büyük tamsayılar) için değişken tanımlama adına kullanılır.

Unsigned Long İnt :  İşaretsiz uzun tamsayı değişken tanımlama için kullanılır.

Float : Kesirli değişken tanımlama adına kullanılır.

Double : Kesirli çift duyarlılıklı değişken tanımlama için kullanılır.

Long double :  Kesirli çift duyarlılıklı uzun değişken tanımlama için kullanılır.

-‘%’ operatörü float ya da double’a yani kesirli değerlere uygulanamaz.

-Mantıksal bit operatörleri :

‘&’ Bit düzeyinde VE işlemi anlamında

‘|’ Bit düzeyinde VEYA işlemi

‘^’ Bit düzeyinde XOR işlemi

‘>>’ Bitleri sağa kaydır işlemi

‘<<’  Bitleri sola kaydır işlemi

-C programında oluşan değerler standart olarak ekrana yazılır.Bu birime standart çıkış birimi denir. (standart output -> stdout)

-C programında girilecek değerler standart olarak klavyeden okunur.Bu birime standart giriş birimi denir.(standart input->stdin)

-C programında oluşan hatalar standart olarak ekrana yazılır.Bu birime standart hata birimi denir. (standart error -> stderr)

-Bir giriş çıkış fonksiyonu kullanıldığında bu fonksiyonun özelliğine göre standart giriş veya standart çıkış ortamından değer iletişiminde bulunur.

-Getchar() fonksiyonu giriş biriminde sıradaki diğer karakteri döndürür.

-Dönüştürme karakterleri:

d: karşılıklı gelen değişkenin değerini sayı olarak ekrana yazar.

o: karşılık olarak gelen değişkenin değerini 8’lik sayı olarak ekrana yazar

x: karşılık olarak gelen değişkenin değerini 16’lık sayı olarak ekrana yazar

u: karşılık olarak gelen değişkenin değerini işaretsiz bir değer olarak ekrana yazar

c: karşılık olarak gelen değişkenin değerini tek bir karakter olarak ekrana yazar

s: karşılık olarak gelen değişkenin değerini bir karakter dizesi olarak ekrana yazar.Bu karakter dizesi dize sonu anlamına gelen null karakteri bulununcaya kadar yazılır.

e: karşılık olarak gelen değişkenin değerini bilimsel gösterimdeki sayı olarak ekrana yazar.

f: karşılık olarak gelen değişkenin değerini kesirli sayı olarak ekrana yazar.

Eğer % işaretinden sonra kullanılan işaret dönüştürme karakteri değilse ve normal bir karakter olarak % işareti kullanılacaksa %% şeklinde kullanılmalıdır.

-Kullanılan özel karakterler:

\n : Yeni satır karakteri

\t : TAB karakteri

\\ : \ karakteri

\” : “ (Tırnak) karakteri

-Önemli bir takım fonksiyonlara giriş ;

Stdio.h kütüphanesi

Isalpha(c) : c karakter bilgisi taşıyorsa ve 0’dan farklı bir değer değilse 0 döndürür.

Isupper (c) : c karakteri büyük harf ise ve 0’dan farklı bir değer değilse 0 döndürür.

Islower (c) : c karakteri küçük harf ise ve 0’dan farklı bir değer değilse 0 döndürür.

Isdigit(c) : c rakam bilgisi taşıyorsa ve 0’dan farklı bir değer değilse 0 döndürür.

Isspace (c) : c boşluk bilgisi taşıyorsa ve 0’dan farklı bir değer değilse döndürür.

Toupper (c) : c karakterini büyük harfe çevirir.

Tolower (c) : c karakterini küçük harfe çevirir.

-Ungetc :

Standart giriş ortamından veya herhangi bir dosyadan okunmuş karakteri geri o ortama yazan fonksiyondur.

Ör: ungetc (c,dosyaisaretcisi);

-#include tanımı : Programda kullanılacak harici ya da önceden tanımlanmış fonksiyonların bulunduğu kütüphanenin tanımlandığı yerdir.

Ör: stdio.h , string.h , conio.h , time.h

-#define tanımları :  Bir program içerisinde kullanmak isteyebileceğiniz sabit ifadeleri tanımlamak için kullanılan sözcüktür.

-Return değişimi fonksiyondan değer döndürmeyi sağlayan ve çağrıldığı yere değeri döndüren değimdir.Return değimini herhangi bir ifade izleyebilir.

Ör: return(ifade) ;

-Extern değişkenler : Eğer bir program birden fazla dosya üzerinde tanımlanmışsa ve bazı değişkenler tüm dosyalarda kullanılabilmek ve erişilebilmek istiyorlarsa bu değişkenler extern olarak tanımlanırlar.

Ör: extern int kalem

-Static değişkenler : Static tanımı extern gibi bir değişkeninize özel bir sıfat katan değimdir.Genel ve yerel olarak tanımlanabilirler.Yerel static bir değişken özel ama kalıcı bellek sahaları oluşturur.

Ör :  static int k;  static char buf[128] vb.

-Register değişkenler :

Bu tanımla verilen bir değişken program tarafından sıkça kullanılacaktır anlamına gelmektedir.Eğer mümkün olursa bu değişkenler bilgisayarın yazmaçlarına (register) yerleştirilir.Bu sayede bu programlar hem hızlı hemde daha küçük olurlar.Register tanımı ile yapılan bir değişken tanımlama satırı şu şekildedir.

Ör : register int x ;

-İlk değer atama işlemleri adına ; extern ve static değişkenler sizin tarafınızdan ayrıca bir tanım yapılmadı ise  0 değeri ile otomatik olarak başlarlar.Register ve diğer değişkenlerde ilk değer atama işlemi yapılmadı ise değişkenin değeri rastgele bir değer olur.

-C dili önişlemcisi :

#include “dosya” şeklinde kullanılan komut dosya dahil etme işleminde kullanılır ve bu dosyanın içerisindeki tüm bilgileri programa dahil eder.

#define EVET 1  şeklinde kullanılan komut basit bir sembolik sabit sayıyı tanımlar.Bu şekilde sembolik bir sabit tanımlanmış olur.Derleyici programı derleme işlemi esnasında define ifadesinin yanında bulunan sabiti programa yerleştirir ve o ifade yerine sabiti koyarak programın derlenmesini sağlar.

-Dizi ;  aynı özellikte olan ve aynı amaçla kullanılan bir grup sayının bilgisayar ortamında tutulduğu veri yapısıdır.Aslında dizileri bir kutuya benzetebilirsiniz.

-Örnek bir karakter dizisi : char cümle [100] ;

Bu karakter dizeleri ile ilgili bir takım işlemleri gerçekleştirmek için gerekli olabilecek fonksiyonlar “string.h” kütüphanesi içerisindedir.Bu fonksiyonlar ve kullanım amaçları şunlardır.

Strlen (s) :  s ile belirtilen karakter dizesinin uzunluğunu bulur.

Strcpy (s1,s2) : s2 ile belirtilen karakter dizesini s2 ile belirtilen karakter dizesine kopyalar.Ve bu fonksiyon gerçekten çok değerlidir.Nedeni ise c dilinde bir karakter dizesine normal değer atama ifadesi kullanılarak bir dizeye yerleştirilemez.

Strcmp (s1,s2) : s1 ile belirtilen karakter dizesi ile s2 karakter dizesinin karşılaştırılmasını sağlar.Bu karşılaştırma sonucunda iki değer eşit ise sonuç 0 , birinci büyük ise sonuç pozitif , ikincisi büyük ise sonuç negatif olarak döndürülür.

Strcat (s1,s2) : s1 ile belirtilen karakter dizesinin sonuna s2 ile belirtilen karakter dizesini ekler.Sonuç s1 ile belirtilen dize içinde saklanır.

C dili programlama dersleri

-* operatörü de yanındaki ifadenin bir işaretçi olduğunu anlatır ve bu adresin ifade ettiği yerdeki değişkeni anlatır.Eğer adı y olan bir int değişken olsun ;

Y = *px;

Px = &x ;

Y = *px  ifadesinde y = x ;  ifadesine denk bir işlem yapılır.

-Program içerisinde malloc(n) ve free(p) şeklindeki fonksiyonlar kullanılmıştır.Bu fonksiyonlardan malloc(n) n byte’lık bir alan ayırır ve bu alana bir işaretçi döndürürken free(p) p ile işaret edilen alanın bellekte serbest bırakılmasını sağlar.

Bu işlemlerin sıra bakımından ters olarak yapılması gerektiği açıktır.Yani bir bellek sahası önce malloc ile ayrılmış olmalıdır ki free ile serbest bırakılabilsin.Bu şekilde istenilen zamanlarda istenildiği kadar bellek ayrılabilir.

-Dosya açma işlemi : bir dosyanın üzerinde işlem yapabilmek için mutlaka dosyanın açılarak program ile ilişkilendirilmesi gerekir.FILE değimi ile değişkeni tanımlayabiliriz.

Ör : FILE *dosya;

Ör : fp=fopen (“deneme.dat”,”r”) ;

Dosya adı burada deneme.dat olarak belirlenmiştir ve dosya program içerisinde fp adıyla anılacaktır.

Eğer dosya herhangi bir nedenle açılamadıysa burada fp’nin değeri NULL olacaktır.

Ör: dosya_değişkeni=fopen(“dosya_adı”,”dosyanın_modu”);

r : dosyanın sadece okumak için açılacağını belirtir.Bu şekilde açılacak dosya mutlaka sistem üzerinde bulunmalıdır aksi halde hatalı bir sonuç alınır.

w : dosyanın sadece yazmak için açılacağını belirtir.Bu şekilde açılacak bir dosya sistem üzerinde oluşturulacaktır.

a : dosyanın sona ekleme için açılacağını belirtir.Dosya yoksa yeni oluşturulacak var ise öncekinin sonundan yazmak üzere hazır hale gelecektir.

-Dosyadan okuma :

Getc : c=getc (fp) şeklinde kullanılır ve fp ile temsil edilen dosyadan 1 karakter okuyup c değişkenine getirir.

Fscanf :  fscanf (fp, “biçim tanımları”,değişkenler) şeklinde kullanılır.

-Dosyaya yazma:

Putc : putc (fp,c) şeklinde kullanılır ve fp ile temsil edilen dosyaya c değişkenindeki 1 karakteri yazar.

Fprintf : fprintf(fp,”biçim tanımları”, değişkenler) şeklinde kullanılır.Bildiğiniz printf şeklinde çalışmaktadır.

-Dosya Kapama :

Fclose dosyaların program tarafından işleri bitmiş ise kapatılmaları gerektiğinde kullanılır.

Ör: fclose(fp);

-Dosyadan okuma :

Read : read (dosya_no , okunanlar , okunacak_byte); şeklinde kullanılır.Bu fonksiyon ile doğrudan erişimli dosyadan okuma yazma kafasının bulunduğu noktadan itibaren okunacak_byte kadar karakter okunarak okunanlar dizisine yerleştirir.Ve sonuç olarak bu fonksiyon okuduğu karakter sayısını döndürür.

-Dosyaya yazma :

Write: write (dosya_no,yazılacaklar,yazılacak_byte) ; şeklinde kullanılır.Bu tanımda dosya_no bilgilerin yazılacağı dosyayı temsil eder.Yazılacaklar içerisinde yazılacak bilgilerin bulunduğu diziyi ifade eder.Yazılacak_byte ise dosyaya kaç byte bilgi yazılacağını belirtir.Bu fonksiyon yazılanların toplam kaç byte olduğunu geri döndürür.Eğer -1 değeri dönmüş ise yazmada bir sorun ile karşılaşılmış demektir.

-Dosya kapama :

Doğrudan erişimli dosyalara özel durumlar :

Bu tarz dosyalarda okuma yazma kafasının konumunu okuma ya da yazma yapmadan değiştirmek mümkündür.Bu amaçla kullanılan bir lseek fonksiyonu bulunmaktadır.

Ör : lseek (dosya_no, mesafe,nereye_gore) ;

-Veri yapıları :

Veri yapısı içinde birden fazla değişken saklayan bir bilgi topluluğudur ve genelde bu veriler farklı türdendir.Ancak aynı nesne için kullanılan bu verileri sembolize ederler ve tek bir nesne adı altında kullanılırlar.

Ör :

Struct date {

int day;

int month;

int year;

char mon_name [4];

};

Struct bir veri yapısı tanımını belirtir.

-Typedef :

C dilinde varolan değişken türlerine yenilerini eklemek için kullanılan bir komuttur.Örneğin ;

typedef int LENGTH;

Burada int adlı türün aynısından LENGTH ismi ile oluşturur.

Sonrada yeni değişkenler tanımlanabilir.

LENGTH len,maxlen;

-Hazır Fonksiyonlar :

Diagnostik ile ilgili olanlar ;

Void assert(int ifade);

Bu fonksiyon sorunlar ile ilgili nedenlerin öğrenilmesini sağlayacak satırları program içerisine yerleştirir.

Hata mesajı örneği : assertion failed : ifade , file dosya_adı , line satır_no

-Karakter fonksiyonları

Bu bölümdeki fonksiyonlar kendilerine parametre olarak gönderilen c değerinin fonksiyon adı ile doğru ifade edilebiliyorsa sıfırdan farklı bir değer aksi halde sıfır değerini döndürürler.

int isalnum (int c):

c karakterinin rakam veya harf olması durumunda 0 dan farklı değilse sıfır döndüren fonksiyondur.

int isalpha (int c):

c karakterinin harf olup olmadığını kontrol eder ve harf ise bir döndürür.

int iscntrl (int c):

c karakterinin kontrol karakteri olup olmadığını kontrol eder.

int isdigit (int c):

c karakterinin rakam olup olmadığını kontrol eder.

int islower(int c):

c karakterinin küçük harf olup olmadığını kontrol eder.

int isspace(int c):

c karakterinin boşluk olup olmadığını kontrol eder.Bu boşluk karakteri ‘ ’,’\f’,’\n’,’\r’,’\t’ ve ‘\v’ karakterlerinden biridir.

int isupper (int c):

c karakterinin büyük harf olup olmadığını kontrol eder.

int tolower (int c):

Kendisine gönderilen c karakterinin küçük harf olması durumunda büyük harfe çeviren ve döndüren küçük harf olmaması durumunda olduğu gibi döndüren fonksiyondur.

int toupper (int c):

Kendisine gönderilen c karakterinin küçük harf olması durumunda büyük harfe çeviren ve döndüren küçük harf olmaması durumunda olduğu gibi döndüren fonksiyondur.

-Matematik Fonksiyonları :

Bu fonksiyonların kullanımı için math.h kütüphanesini programınıza dahil etmeniz gerekmektedir.

Double acos(double x):

X değerinin arc cosinüsünü hesaplar.X değeri -1 ile 1 arasında olmalıdır ve dönen değer 0 ile 3.14 olacaktır.

Double asin(double x):

X değerinin arc sinüsünü hesaplar.X değeri -1 ile 1 arasında olmalıdır ve dönen değer 0 ile 3.14 olacaktır.

Double atan (double x):

X değerinin arc tanjantını hesaplar.

Double cos (double x):

X değerinin cosinüsünü hesaplar.X değeri radyan cinsinden bir açı değeri olmalıdır.

Double sin(double x):

X değerinin sinüsünü döndürür.X değeri radyan cinsinden bir açı değeri olmalıdır.

Double tan (double x):

X değerinin tanjantını hesaplar.X değeri radyan cinsinden bir açı değeri olmalıdır.

Double log (double x):

X değerinin tabi logaritmasını hesaplar.X değeri bir pozitif sayı olmalıdır.

Double log10(double x):

X değerinin 10 tabanına göre logaritmasını hesaplar.X değeri pozitif bir sayı olmalıdır.

Double pow (double x , double y):

X üzeri y değerini hesaplar.

Double sqrt (double x):

X değerinin karekökünü hesaplar.X değeri pozitif bir sayı olmalıdır.

Double log (double x):

X değerinin logaritmasını hesaplar.X değeri pozitif bir sayı olmalıdır.

Double ceil (double x):

X’den küçük olmayan en küçük tamsayıyı bulan fonksiyondur.Yani x değerini yukarı yuvarlayan fonksiyondur.

Double floor (double x):

X’den büyük olmayan en büyük tamsayıyı bulan fonksiyondur.Yani x değerini aşağı yuvarlayan fonksiyondur.

Double fabs (double x):

X değerinin mutlak değerini hesaplar.

-Genel amaçlı fonksiyonlar :

Double atof (const char *nptr)

Nptr ile gösterilen ifadenin ilk bölümündeki anlamlı sayısal değerleri kesirli değere dönüştürür.

int atoi (const char *nptr)

nptr ile gösterilen ifadenin ilk bölümü anlamlı sayısal değerleri tam değere döndürür.

Long int atol (const char *nptr)

Nptr ile gösterilen ifadenin ilk bölümündeki anlamlı sayısal değerleri uzun tamsayıya değere döndürür.

int rand (void)

0 ile RAND_MAX aralığında rasgele bir sayı üretir.

Void srand (unsigned int sed)

Sed değeri ile rasgele sayı üreticini başlatır.

Void *malloc (size_t miktar)

Miktar ile belirtilen (işaretsiz tamsayı) miktarda bellek sahasını heap denilen yerden ayırarak çağrılan programa bu bellek sahasının adresini döndürür.

Void *realloc (void *ptr,size_t miktar)

Ptr ile gösterilen bellek sahası için ayrılmış miktarın miktar kadar bir alana değiştirilmesini sağlayan ve ayrılan yeni alan için bellek sahasını döndürür.

Void free (void *ptr)

Ptr ile gösterilen bellek sahası için ayrılmış alanın serbest bırakılmasını sağlar.

Void exit(int status)

Programın normal şekilde sonlanmasını sağlar.

int abs(int j)

J ile gösterilen değerin mutlak değerini döndürür.

-Karakter dizisi fonksiyonları  :

String.h kütüphanesi dahil edilmelidir.

Char *strcpy (char *s1, const char *s2)

S2 ile gösterilen dize içindeki ifadeyi s1 ile gösterilen dizeye kopyalar.

Char *strncpy (char *s1, const char *s2,size_t n)

S2 ile gösterilen dize içindeki ifadeyi n harften fazla olmamak kaydıyla s1 ile gösterilen dizeye kopyalar.

int strcmp (char *s1,const char *s2)

s2 ile gösterilen dize içerisindeki ifadeyi s1 ile gösterilen dize ile karşılaştırır.İki dize eşit ise 0 , birincisi büyük ise pozitif , ikincisi büyük ise negatif sonuç üretilir.

int strncmp (char *s1,const char *s2 , size_t n)

S2 ile gösterilen dize içindeki ifadeyi n harften fazla olmamak üzere s1 ile gösterilen ifade ile karşılaştırır.

Char *strcat (char *s1, const char *s2)

S2 ile gösterilen dize içindeki ifadeyi s1 ile gösterilen dizenin peşine ekler.

Char *strncat (char *s1,const char *s2 , size_t n)

S2 ile gösterilen dize içindeki ifadeyi n harften fazla olmamak üzere s1 ile gösterilen dizenin peşine ekler.

-Tarih ve Saat Fonksiyonları :

Time.h kütüphanesi eklenmelidir.

Clock_t zamanı göstermeyi sağlayan bir aritmetik türdür.

Time_t zamanı göstermeyi sağlayan aritmetik bir türdür.

Size_t unsigned int türünde yeni bir değişkendir.

Double difftime (time_t zaman1 , time_t zzaman0)

İki zaman ölçüsü arasındaki farkı hesaplar ve fark saniye cinsinden , double türünde döndürülür.

Time_t time (time_t timer)

Bu fonksiyon geçerli zamanı bulur.

Char *asctime (const struct tm *timeptr)

Struct tm yapısındaki bir zaman bilgisini Sun Sep 16 01:03:50 1973\n\0 şeklindeki bir karakter dizisine çevirir.

Struct tm *gmtime (const time_t *timer)

Güncel zaman bilgisini struct tm şeklindeki bir zamana dönüştürür.

Struct tm *localtime (const time_t *timer)

Güncel zaman bilgisini struct tm şeklindeki bir zamana dönüştürür.

-Derleyici Bildirimleri:

#include bildirimi

Belirtilen bir dosyanın kopyasını bildirimin bulunduğu yere kopyaladığımızı söyleyebiliriz.İki şekilde kullanılır.

#include <dosyaadı>

#include “dosyaadı”

#define bildirimi

Program içerisinde sembolik bir sabit oluşturulmasını sağlar.

#define sembolik_ifade yerine_konacak_ifade

#define PI 3.14

#if…..#endif bildirimi

#if ve #endif değimleri derleyicinin ve ön derleyicinin derleme sürecini kontrol edecektir.Tüm #if değimleri bir sabit tamsayıyı hesaplar.

#if !defineden (NULL)

#define NULL 0

#endif

#error ve #pragma bildirimleri

#error mesaj kelimeleri gerçekleştirime bağlı olan bir hata mesajı görüntülemeyi sağlar.

#error  1- Değer taşması

#pragma bildirimi ise derleyiciye bağlı davranışlar sergiler.

-Parametre Tanımlama

Gösterilebilecek en basit program ‘echo’dur.

Echo merhaba dünya

C Programlama Ders Notları Kitabı İnceleme Sonuç :

Bugünki yazımızda C programlama dili ders notları kitabını inceledik.Bu yazımızda yine genel anlamda C diline dair detayları sizlere vermeyi denedik.Bu serimize kaldığımız yerden devam etme niyetindeyiz.

İyi Çalışmalar.

C Programlama Dili Teknik İngilizcesi | C Programlama Eğitimi

C PROGRAMLAMA DİLİ İNGİLİZCESİ ÖĞREN

C programlama dilinde kullanılan İngilizce kelimeler nelerdir ? C programlama dilinde kullanılan teknik kelimeler nelerdir ? Bugün ki yazımızda bu dile ait teknik İngilizcemizi geliştirmeye çalışacağız.

Başlayalım.

C PROGRAMLAMA DİLİ İNGİLİZCE KELİMELER

C extension : C uzantısı

Arithmetic and logic unit : aritmetik ve mantık ünitesi

Batch processing : yığın işleme

Building block approach : blokları yerleştirme yaklaşımı

C preprocessor : C önişlemcisi

C standart library : C standart kütüphanesi

Central processing unit : Merkezi işleme ünitesi

Clarity : Açıklık

Client : İşlemci

Client/Server Computing : İstemci/Sunucu kullanımı

Compiler : Derleyici

Data : veri

Distributed computing : çoklu kullanım

Editor : Editör

Environment : Ortam

Execute Program : bir programı çalıştırmak

File server : dosya sunucusu

Function : fonksiyon

Functionalization : fonksiyonellik

Hardware : donanım

Hardware platform : donanım platformu

High-level language : yüksek seviyeli dil

Input unit : giriş ünitesi

Input/Output : giriş / çıkış

Linker : bağlayıcı

Loader : yükleyici

Logical units : mantıksal birimler

Machine dependent : makineye bağımlı

Machine independent : makineden bağımsız

Memory : hafıza

Memory unit : hafıza birimi

Multiprogramming : çoklu programlama

Multitasking : çoklu görev

Object : nesne

C programlama teknik ingilizcesi

Object code :nesne kodu

Object-oriented programming : nesneye yönelik programlama

Output device : çıkış cihazı

Personal computer : kişisel bilgisayar

Portability : taşınırlık/taşınılabilirlik

Primary memory : birincil hafıza

Run a program : programı çalıştırmak

Screen : ekran

Software : yazılım

Software reuasability : yazılımın yeniden kullanılabilirliği

Standart error(stderr) : standart hata

Standart input(stdin) : standart giriş

Standart output(stdout) : standart çıkış

Stored program : depolanmış program

Structured programming : yapısal programlama

Supercomputer : süper bilgisayar

Task : görev

Timesharing : zaman paylaşımı

Top-down/stepwise refinement : yukarıdan aşağı / adımsal iyileştirme

Translator program : çevirici program

Workstation : iş istasyonu

Adress operator : adres operatörü

Ampersand : ve karakteri (&)

Argument : argüman / bağımsız değişken

Arithmetic operators :aritmetik operatörler

Assignment operator (=) : atama operatörleri

Assignment statement : atama ifadesi

Associativity of operators : operatörlerin işleyişi

Asterisk : yıldız karakteri(*)

Backslash (\) escape sequence : Ters çizgi çıkış sırası

Binary operators : İkili operatörler

Body of a function : fonksiyon gövdesi

Braces : küme parantezleri { , }

Case sensitive : harf duyarlı

Character string : karakter dizesi

Comment : yorum

Compile error : derleme hatası

Compile-time error : derleme zamanlı hata

Condition : koşul

Control string : kontrol dizesi

Conversion specifier : dönüşüm belirteci

Decision : karar

Decision making : karar verme

Declaration : bildirim

Equality operators : eşitlik operatörleri

Escape character : çıkış karakteri

Escape sequence : çıkış sırası

Fatal error : ölümcül hata

Flow of control : akış kontrolü

Format control string : biçim kontrol dizesi

İdentifier : tanıtıcı

If control structure : if kontrol yapısı

Literal : hazır bilgi

Modulus operator : mod operatörü (%)

Nested paranthesis :  yuvalı parantezler

Newline character : yeni satır karakteri

Precedence : öncelik

Prompt : bilgi/komut istemi

Relational operators : karşılaştırma operatörleri

Statement terminator : ifade sonlandırıcı

String : dize

Syntax error : yazım hatası

Whitespace characters : boşluk karakterleri

Action : işlem

Action symbol : işlem sembolü

Arithmetic assignment operators : aritmetik atama operatörleri

Body of loop : döngü gövdesi

Cast operator : dönüşüm operatörü

Compound statement : birleşik ifade

Conditional operator : koşullu operator

Control structure : kontrol yapısı

Counter : sayıcı

Counter-controlled repetition : sayıcı kontrollü döngü

Decision symbol : karar sembolü

Decrement operator : azaltma operatörü

Default precision : varsayılan duyarlılık

Definite repetition : belirli döngü

Diamond symbol : elmas sembolü

Empty statement : boş ifade

First refinement : ilk iyileştirme

Floating-point number : ondalıklı/gerçek sayılar

Flowchart : akış grafiği

Increment operator : artırma operatörü

Indefinite repetition : belirsiz döngü

İnitialization : ilk değer vermek

Nested control structure : yuvalı/iç içe geçmiş kontrol yapıları

Oval symbol : oval sembolü

Postincrement operator : son artırma

Postdecrement operator :son azaltma

Precision : duyarlılık

Pseudocode : sahte kodlar

Rectangle symbol : dikdörtgen sembolü

Rounding : yuvarlama

Sentinel value : nöbetçi değer

Stepwise refinement : adımsal iyileştirme

Ternary operator : üçlü operatör

Truncation : ondalık kısmı kaybolmuş

ASCII Character set : ASCII karakter kümesi

Control variable : kontrol değişkeni

End of file  : dosya sonu belirteci

Field width : alan genişliği

Left justify : sola hizalamak/yaslamak

Logical and (&&) : mantıksal ve

Logical or (||) : mantıksal veya

Logical negation (!) : mantıksal değil

Loop-continuation condition : döngü devam koşulu

Loop-control variable : döngü kontrol değişkeni

Loop counter : döngü sayıcısı

Nesting rule : yuvalama kuralı

Off-by-one error : bir eksik hatası

Stacking rule : yığma kuralı

Truth table : doğruluk tablosu

Unary operator : tekli operatör

Abstraction : özetleme

Automatic storage : otomatik depolama

Automatic variable : otomatik değişken

Auto storage class specifier : auto depolama sınıfı belirteci

Base case in recursion : yinelemede temel durum

Block scope : blok faaliyet alanı

Call by reference : referansa göre çağırma

Call by value : değere göre çağırma

Caller : çağırıcı

Calling function :  çağırıcı fonksiyon

File scope : dosya faaliyet alanı

Function call : fonksiyon çağrısı

Function declaration : fonksiyon bildirimi

Function definition : fonksiyon tanımı

Function prototype : fonksiyonun ilk hali/prototipi

Global variable : global değişken

Header file : öncü dosya

Information hiding : bilgi saklama/gizleme

Linkage : bağlama

Local variable : yerel değişken

Optimizing compiler : derleyiciyi en iyi hale getirmek

Randomize : rassallaştırmak

Recursion : yineleme

Return value : geri dönüş değeri

Simulation : simülasyon benzetme

Array initializer list : dizi atama listesi

Bar chart : çizgi grafik

Bounds checking : sınır kontrolü

Bubble sort : kabarcık sıralama

Declare an array : bir dizi bildirmek

Linear search : lineer arama

Mean : orta

Median : medyan

Mode : mod

Multiple-subscripted array : çok boyutlu dizi

Null character : null karakter

Off-by-one error : bir eksik hatası

Replacement text : yer değiştirme metni

Scalar : skaler

Search key : arama anahtarı

Sorting : sıralama

String : dize/string

Subscript : belirteç

Adress operator : adres operatörü (&)

Array of pointers : göstericilerin dizisi

Call by reference : referansa göre çağırma

Call by value : değere göre çağırma

Character pointer : karakter göstericisi

Constant pointer : sabit gösterici

Dereference a pointer : göstericinin gösterdiği nesneye erişmek

Dynamic memory allocation : dinamik hafıza tahsisi

Function pointer : fonksiyon göstericisi

Indirection : dolaylama

Indirection operator : içerik operatörü (*)

Linked list : bağlı liste

Offset : offset (kayma)

Pointer : Gösterici

Pointer arithmetic : gösterici aritmetiği

Pointer expression : gösterici değeri

Pointer to a function : bir fonksiyonu gösteren gösterici

Character set : karakter kümesi

General utilities library : genel amaçlı kütüphane

Literal : hazır bilgi

String : string/dize

Token : atom

Whitespace characters : boşluk karakterleri

Word processing : kelime işleme

Alignment : Hizalama

Assignment suppression character : atama bastırma karakteri

Caret : şapka (^)

Conversion specification : Dönüşüm tarifi

Conversion specifier : dönüşüm belirteci

Escape sequence : çıkış sırası

Field width : alan genişliği

Flag : bayrak

Format control string : biçim kontrol dizesi

Literal characters : bilgi karakterleri

Rounding : yuvarlama

Scan set : tarama kümesi

Stream : akış

Bitwise operators : Bit operatörleri

Complementing : tümleyenini almak

Derived type : türetilmiş tip

Enumaration : sayma sabiti

Mask : maske

Structure tag : yapı etiketi

Data hierarchy : Veri hiyerarşisi

Database : veritabanı

Displacement : yerdeğiştirme

Field open mode :dosya açma modu

File position pointer : dosya pozisyon göstericisi

Random access : rasgele erişim

Record key : kayıt anahtarı

Binary search tree : ikili arama ağacı

Child node : çocuk düğüm

Dynamic data structures : dinamik veri yapıları

Inserting a node : düğüm ekleme

Leaf node : yaprak düğüm

Parent node : ebeveyn düğüm

Root node : kök  düğüm

Stack : yığın

Append output symbol : Çıktı ekle sembolü (>>)

Command line argument : komut satır argümanları

Dynamic arrays : dinamik diziler

Interrupt : kesme

Redirect input symbol : girişi değiştir sembolü

Redirect output symbol : çıkışı yönlendirme sembolü (>)

Temporary File : geçici dosya

Variable length argument list : uzunluğu değişebilen argüman listesi

C Programlama Dili İngilizcesi Öğren Sonuç :

Bugünki yazımızda C programlama dili İngilizcesi öğren adlı yazımızı sizlerle paylaştık.Bu yazıda eksik kaldığınız teknik kelimeleri umarız tamamlarsınız.İngilizce teknik kelimeler her an karşımıza çıkacağı üzere sizlere faydalı olacağı dileğiyle.

İyi çalışmalar.

Ücretsiz Full C Programlama Dili Öğren -4 | C Programlama Eğitimi

C PROGRAMLAMA DİLİ EĞİTİM ve ÖRNEKLER -3

C programlama dili birlikler nedir ? C programlama Dosya İşleme ve Veri Hiyerarşisi Nedir ? Veri Yapıları Nedir ? Bildiriler Nedir ?Bugün C programlama dili eğitim ve örnekler serisinin 4. yazısını sizlerle paylaşıyoruz.

Başlayalım.

C PROGRAMLAMA DİLİ EĞİTİMİ -3

BİRLİKLER : 

Birliklerde yapılar gibi türetilmiş veri tipleridir.Aynı depolama alanını kullanırlar.

Birliğin elemanı her tipte olabilir.Birlik içerisinde verinin uygun tipte kullanılmasını sağlamak programcının sorumluluğundadır.

Bir birlik ‘union’  anahtar kelimesi ile yapılarla aynı biçimde bildirilir.

Örnek : union kelimesi ile ;

Union sayi {

İnt x ;  double y;    };

Bit Operatörleri :

Her bit yalnızca 0 ya da 1 değerini alabilir.8 bit 1 byte’ı oluşturur.

Bit operatörleri şunlardır ;

And (&) , Or (|) , Exclusive Or (^),  Sola kaydırma (<<)  , Sağa kaydırma (>>) , Tümleyen (~)

And : İki operandın ikisinin de ilgili bitlerinde 1 varsa , sonuçtaki bitler 1 yapılır

Or : İki operandın ilgili bitlerinden en az biri 1 ise sonuçtaki bitler 1 yapılır

Exclusive or : iki operandın ilgili bitlerinden yalnızca biri 1 ise sonuçtaki bitler 1 yapılır

Sola Kaydırma : İlk operandın bitleri ikinci operandında belirtilen sayı kadar sola kaydırır.Sağdan itibaren 0 ile doldurur.

Sağa kaydırma : İlk operandındaki bitleri ikinci operandında belirtilen sayı kadar sağa kaydırır.Soldan itibaren yapılacak doldurma makine bağımlıdır.

Tümleyen : Tüm 0 bitleri  1 , tüm 1 bitleri 0 yapılır.

Bit Atama Operatörleri :

&=   And atama operatörü

|=   Or atama operatörü

^=  Exclusive Or atama operatörü

<<=  Sola kaydırma atama operatörü

>>=  Sağa kaydırma atama operatörü

Sayma Sabitleri :

Bir sayma , enum anahtar kelimesi ile tanıtılır ve tanıtıcılar ile temsil edilen tamsayı sabitlerinin kümesidir.

Bu sayma sabitleri , değerleri otomatik olarak belirlenen sembolik sabitlerdir.

‘Enum’ içindeki değerler aksi belirtilmedikçe 0 ile başlar ve 1 artırılır.

Örnek : enum aylar {OCA=1 , SUB , MAR , NIS , MAY , HAZ , TEM , AGU , EYL , EKI , KAS, ARA};

Burada ilk değer 1 yapıldığından , kalan değerler 1 arttırılarak 1-12 değerleri oluşturulur.

Saymada kullanılan tanıtıcılar özel olmalıdır.

Sayma sabitleri için yalnızca büyük harfler kullanmak program içinde bu sabitlerin daha belirgin hale gelmesini sağlar.

DOSYA İŞLEME :

Değişken ve diziler içinde depolanan veriler geçicidir ve program sonlandığında   kaybolurlar.

Dosyalar ise büyük miktarda veriyi kalıcı olarak tutmak için kullanılırlar.

Veri Hiyerarşisi :

Neticede bilgisayar tarafından işlenen tüm veriler , sıfır ve birlerin kombinasyonlarına indirgenirler.

Bilgisayarlar tarafından işlenen veri parçaları , bitlerden karakterlere , karakterlerden alanlara ve bu şekilde ilerleyerek daha büyük ve karmaşık bir hale geldikçe bir veri hiyerarşisi oluşturur.

Bir alandaki ilgili dosyaların topluluğuna genellikle veritabanı (database) denir.Veri tabanı oluşturmak ve veri tabanını yönetmek için kullanılan programlara veri tabanı yönetim sistemleri(data base management system) denir.

C programlama dili eğitimleri

Dosya ve Akışlar (Stream) :

Program çalışmaya başladığında , üç dosya ve bu dosyalarla ilişkili akışlar ; standart giriş , standart çıkı ve standart hata otomatik olarak açılır.

FILE yapısını  (<stdio.h> içinde tanımlanmıştır) gösteren bir gösterici döndürür.Bu yapı ise açık dosya tablosu (open file table) adı verilen işletim sistemi dizisi için dizin gösteren bir dosya belirteci (file descriptor) içerir.

Her dizi elemanı da işletim sisteminin bir dosyayı yönetebilmesi için kullandığı dosya kontrol bloğunu (File Control Block) içerir.

Standart giriş / çıkış ve hata stdin , stdout , stderr göstericileri ile yönetilir.

Fgetc fonksiyonu , getchar fonksiyonu gibi fonksiyonlar dosyadan bir karakter okur.

Fputc fonksiyonu , argüman olarak yazdırılacak bir karakter ve karakterin yazdırılacağı dosyayı gösteren bir gösterici alır

Programda kullanıcıya her kayıt için çeşitli alanları doldurması ya da veri girişinin sonlandığını belirten dosya sonu belirteci girmesini söyleyen mesaj için ;

While (! feof (stdin))  kullanılabilir.

Feof satırı stdin’in belirttiği dosyanın dosya sonu belirtecinin elde edilip edilemediğine karar verir.

‘ w ’  : yazma modu (Yazma yapmak için bir dosya yarat)

‘ r ’  : okuma modu (Bir dosyayı okumak için aç)

‘ a ‘  : varolan dosyaya kayıtlar eklemek için dosyayı ekleme modunda açmak için gerekir.

‘ r+’ modu : dosyayı okumak ve yazmak için açar (Bir dosyayı güncellemek)

‘ w+’ modu : yazma ve okuma için bir dosyayı yaratır. (Güncelleme için bir dosya yarat)

‘ a+ ‘ modu : dosyayı okuma  ve yazma yapmak için açar ve önceki içerikler kaybolur (Güncelleme için)

Eğer dosyayı herhangi bir moda açarken bir hata oluşursa  fopen NULL  döndürür.

Not : Genel hatalardan birisi var olmayan bir dosyayı okuma yapmak için açmaktır.

Sıralı Erişimli Dosyadan Veri Okumak :

Sıralı erişimli bir dosyadan verileri geri elde etmek için , program okuma yapmaya dosyanın başından başlar ve istenen veri bulunana kadar sırayla tüm veriler okunur.

Rewind (cfPtr) ; gibi bir ifade programın dosya pozisyon göstericisini (okuma yazma işlemindeki bir sonraki byte numarasını belirtir).cfPtr ile gösterilen dosyanın başına (0. Byte’a) geri döndürmesini sağlar.

Rasgele Erişimli Dosyalar ;

Biçimlendirilmiş çıktı fonksiyonu fprintf ile oluşturulan kayıtlar aynı uzunlukta olmak zorunda değildir.Ancak rasgele erişimli bir dosyadaki tüm kayıtlar sabit uzunluğa sahiptirler.

Fwrite fonksiyonu , hafızada belirlenmiş bir konumdan aldığı belli sayıdaki byte’ı dosyaya aktarır.

Fread fonksiyonu dosya içinde dosya pozisyon göstericisi ile belirlenen konumdan aldığı belli sayıdaki byte’ı , belirlenen adresten başlayarak hafızaya aktarır.

Not : sizeof operatörü parantez içindeki nesnenin boyutunu byte olarak döndürür.sizeof operatörü işaretsiz bir tamsayı döndüren derleme zamanlı tekli bir operatördür.

Fseek fonksiyonunun prototipi ise , ANSI standartına göre ;

int fseek (FILE *stream , long int offset , int whence);

Burada offset , stream ile belirtilen dosyadaki whence konumundan itibaren byte sayısıdır.

Whence argümanı , dosyada aramanın başlayacağı konumu belirten SEEK_SET , SEEK_CUR , SEEK_END değerlerinden biridir.

SEEK_SET : aramanın dosyanın başından başlayacağını

SEEK_CUR : aramanın dosyadaki o anda bulunulan konumdan başlayacağını

SEEK_END : aramanın dosya sonundan başlayacağını belirtir

Bu üç sembolik <stdio.h> öncü dosyasında tanımlanmıştır.

VERİ YAPILARI :

Dinamik Hafıza Tahsisi :

Dinamik veri yapıları yaratmak ve yönetmek için dinamik hafıza tahsisi yapmak gerekir.

Malloc ve free fonksiyonları ile sizeof operatörü , dinamik hafıza tahsisi için gereklidir.

Malloc fonksiyonu ; tahsis edilecek byte sayısını argüman olarak alır ve tahsis edilen alanı gösteren void* tipte bir gösterici döndürür.

Malloc fonksiyonu normalde sizeof operatörü ile kullanılır.

Örnek  :   yeniPtr = malloc (sizeof (struct dugum)) ifadesi ‘struct dugum’ tipindeki yapının boyutunu byte olarak hesaplar.

Free fonksiyonu tahsis edilen alanı serbest bırakır.(Hafıza sisteme geri döndürülür , böylece ileride yeniden tahsis edilebilir.)Malloc çağrısı dinamik olarak tahsis edilen hafıza alanını serbest bırakmak içindir.

Bağlı Listeler :

Bir bağlı liste , düğüm adı verilen ve gösterici bağları sayesinde birleştirilmiş kendine dönüşlü yapıların doğrusal bir birlikteliğidir.

Yığınlar :

Bir yığın , bağlı listelerin kısıtlanmış bir çeşididir.Yeni düğümler yığına yalnızca en üstten eklenir ve düğümler yığının yalnızca en üstünden çıkartılabilir.Bu sebeple yığınlar son giren ilk çıkar (LIFO last in – first out) veri yapıları olarak adlandırılır.Burada kullanılan temel fonksiyonlar ;

Push ve pop fonksiyonlarıdır.

Push fonksiyonu ; yeni bir düğüm yaratır ve yığının üstüne yerleştirir.

Pop fonksiyonu ; yığının üstündeki düğümü çıkartır , çıkartılan bu düğüm için tahsis edilmiş olan hafızayı serbest bırakır ve çıkartılmış değeri döndürür.

Yığınlar bir fonksiyonun her çağrısında yaratılan otomatik değişkenler için bir alan içerir.

Sıralar :

Sıralar , oldukça yaygın bir veri yapısıdır.Bu veri yapısında ilk giren ilk çıkar (FIFO First in First out) veri yapısı mantığı kullanılır.

Ekleme çıkarma işlemleri sirayaGir ve siradanCik olarak bilinir.

Ağaçlar :

Bağlı listeler , yığınlar ve sıralar doğrusal veri yapılarıdır.Bir ağaç , doğrusal olmayan iki boyutlu ve özel amaçlı bir veri yapısıdır.

Ağaç düğümleri iki ya da daha fazla bağ içerebilir.

Kök düğüm (root node) ağaçtaki ilk düğümdür

Kökteki her bağ bir çocuğu (child) belirtir

İlk sol çocuk , sol ağaççıktaki (subtree) ilk düğümdür ve sağ çocuk sağ ağaççıktaki ilk düğümdür.

Bu düğümün çocuklarına kardeşler (siblings) denir.

Çocukları olmayan düğüme, yaprak düğüm (leaf node) denir.

C ÖNİŞLEMCİSİ :

Bütün önişlemci komutları ‘ # ‘ ile başlar.

#INCLUDE Önişlemci Komutu :

Bu komut belirlenen dosyanın kopyasının , komutun bulunduğu yere eklenmesini sağlar.

İki şekilde kullanılır ;   #include <dosyaismi>     ve #include “dosyaismi”

İkisi arasındaki fark , önişlemcinin dahil edilecek dosyayı aradığı konumdur.Eğer dosya ismi tırnak içinde ise , önişlemci dosyayı aranan dosya eklendikten sonra derlenecek dosyanın bulunduğu dizin içinde arar.

Eğer ‘ <  > ‘ içinde ise , bu yöntem standart kütüphane öncü dosyalarını eklemek için kullanılır.

#include komutu stdio.h ve stdlib.h gibi öncü dosyaları eklemek için kullanılır.

#DEFINE Önişlemci Komutu :

#define komutu ,sembolik sabitler ve makrolar yaratır.Örnek :

#define tanıtıcı yer değiştirme_metni

Örnek : #define PI 3.14159 ; Bu komutla PI sembolik sabiti ile karşılaşılan heryerde PI , 3.14159 nümerik sabiti ile değiştirilir.

Define Önişlemci Komutu : Makrolar

Bir makro , #define önişlemci komutu içinde tanımlanmış bir işlemdir.

Örnek olarak bir çemberin alanı içinde tek argümanlı bir makro ele alalım :

#define CEMBER_ALANI  (x)   ( (PI) * (x) * (x) )

Sembolik sabit ve makroların geçerliliğini sonlandırmak için #undef önişlemci komutu kullanılır.

#undef komutu bir sembolik sabiti ya da makro ismini tanımsız hale getirir.

Not :    #define  getchar ()  getc ( stdin )

Getchar’ın makro tanımı , getc fonksiyonunu standart girişten bir karakter almak için kullanmaktadır.

Stdio.h içerisindeki putchar fonksiyonu ve ctype.h içindeki karakter işleme fonksiyonları sıklıkla makro olarakta uygulanır.

Koşullu Derleme  :

Koşullu derleme , programcının önişlemci komutlarının çalışmasını ve program kodunun derlenmesini kontrol edebilmesini sağlar.

Koşullu önişlemci oluşturmak , if seçim yapısına oldukça benzer.

Örnek :     #if !defined  (NULL)   #define NULL0    #endif

Bu komutlar NULL’un tanımlı olup olmadığına karar vermektedir.

#ifdef kısaltması = # if defined

#ifndef kısaltması = #if ! defined

Programcı programda kodun derlenmemesi için ;

#if

Derlenmesi engellenen kod

#endif    kullanabilirler.

Not : Çok kısımlı bir koşullu önişlemci oluşumu , #elif ve #else komutları kullanılarak denenebilir.

#ERROR ve #PRAGMA  Önişlemci Komutları :

#error komutu olan #error atomlar ; komutta belirlenen atomları içeren mesajları , uygulama-bağımlı olarak yazdırır.Atomlar  , boşluklarla birbirinden ayrılmış karakter serileridir.

#pragma komutu olan #pragma atomlar ; uygulama-bağımlı bir işlem gerçekleştirir.Uygulama tarafından tanınamayan bir pragma ihmal edilir.

# ve ## Operatörleri :

# ve ## önişlemci operatörleri , standart C içinde mevcuttur.

# operatörü , bir yerdeğiştirme metni atomunun , tırnak içine alınmış bir string haline dönüştürülmesini sağlar.

# operatörü , makro içinde argümanlarla kullanılmak zorundadır çünkü # operatörünün operandı makro içindeki bir argümanı belirtir.

## operatörü ise , iki atomu birleştirir.

#define ATOMEKLE(x,y)  x##y

Satır Numaraları :

#line önişlemci komutu , kendinden sonra gelen tüm kaynak kod satırlarının ,belirlenen tamsayı sabitinin değerinden başlanarak numaralandırılmasını sağlar.

#line 100 ; komutundan sonraki kaynak satırı , 100’den başlayarak numaralandırılır.

#line komutu içinde bir dosya ismi yer alabilir . Örnek : #line 100 ‘’file1.c’’

ÖNCEDEN TANIMLANMIŞ SEMBOLİK SABİTLER :

__LINE __     : Kullanılan kaynak kodun satır numarası

__FILE__       : Kaynak kodun varsayılan ismi

__DATE__     : Kaynak kodun derlendiği tarihtir

__TIME__      : Kaynak dosyanın derlendiği zamandır

BİLDİRİLER (Assertions) :

Assert makrosu , (assert.h öncü dosyası içinde tanımlanmıştır) bir deyimin değerini test eder.

Eğer deyimin değeri 0 ise assert bir hata mesajı yazdırır ve abort fonksiyonunu programı sonlandırması için çağırır.

NDEBUG sembolik sabiti ise , ondan sonraki bildirileri ihmal eder.

#define NDEBUG kullanılarak , tüm bildirileri elle silmek yerine otomatik olarak geçersiz kılmak mümkün olur.

UNIX ve DOS Sistemlerinde GİRİŞ/ÇIKIŞI Yeniden Yönlendirmek :

$ , Unix komut satır başlangıcını belirtir.

$ toplam<giriş

Girişi değiştirmenin ikinci yolu ise piping’dir.Bir pipe (|) , bir programın çıktısının diğer programın çıktısının diğer programın girişi olarak kullanılmasını sağlar.

Rasgele programının toplam programında giriş olarak kullanılması için ;

$ rasgele | toplam    şeklinde bir komut kullanılır

Uzunluğu Değişebilen Argüman Listeleri :

Stdarg.h’ın makroları ve tanımlamaları ;

Va_list        : va_start , va_arg ve va_end makrolarının ihtiyaç duyduğu bilgiyi tutmak için uygun bir tiptir.Değişken uzunlukta argüman listesindeki argümanlara erişmek için va_list tipinde bir nesne bildirilmelidir.

Va_start    : Değişken uzunlukta bir argüman listesindeki argümanlara erişmeden önce çağrılan bir makrodur.

Va_arg       : Değişken uzunlukta argüman listesi içindeki bir sonraki argümanın tipi ve değerinde bir deyime genişleyen bir makrodur.

Va_end      : Değişken uzunluktaki argüman listesi va_start ile belirlenmiş bir fonksiyondan , normal geri dönüş yapılmasını sağlayan bir makrodur.

Exit ve Atexit İle Program Sonlandırma :

Atexit fonksiyonu , argüman olarak fonksiyonu gösteren fonksiyon ismini bir gösterici alır.

Exit fonksiyonu bir argüman alır.

Dosyalar Üzerinde Notlar :

Standart kütüphane “wb+” modunda geçici bir dosya açan tmpfile fonksiyonunu sunar.

Rb   : ikili dosyayı okumak için aç

Wb  :  Yazmak için ikili bir dosya yarat.Önceki dosyanın içeriğini siler

Ab   :  Ekle , ikili bir dosyayı okumak için ya da dosyanın sonuna yazma yapmak için aç

Rb+  :  ikili bir dosyayı güncellemek için aç

Wb+  : Güncellemek için ikili bir dosya yarat

Ab+  : Ekle , İkili bir dosyayı güncellemek için aç ya da yarat.

Sinyal İşleme :

SIGABRT :  Programın normal olmayan şekilde sonlanması

SIGFPE  : Hatalı bir aritmetik işlem , örneğin sıfıra bölme ya da taşma ile sonuçlanacak bir işlem

SIGILL : İllegal emrin tespiti

SIGINT  : Etkileşimli sinyalin alınması

SIGSEGV  : Depolamaya geçersiz erişim

SIGTERM : Programı sonlandırma isteği

Dinamik Hafıza Tahsisi : Calloc ve Realloc Fonksiyonları :

Prototip : void *calloc (size_t nmemb , size_t size);

Bu prototip iki argüman alır , eleman sayısı (nmemb) ve her elemanın boyutu (size)

Malloc ile Calloc arasındaki temel fark ; calloc fonksiyonunun tahsis ettiği hafızayı temizlemesi ancak malloc’un temizlememesidir.

Realloc fonksiyonu kendinden önce malloc , calloc ya da realloc çağrılarak tahsis edilmiş nesnenin boyutunu değiştirir.

Not : C , tamsayı ve ondalıklı sayı sabitlerinin tiplerinin belirlenmesi için sonekler kullanılmasına izin vermektedir.

Tamsayı sonekleri unsigned bir tamsayı için u ya da U , long tamsayılar için I yada L ve unsigned long tamsayı için ul , lu , UL ya da LU olarak belirlenmiştir.Eğer bir tamsayı sabitine sonek eklenmişse , tipi o büyüklükteki bir değeri tutabilecek ilk tip olarak belirlenir.

C PROGRAMLAMA DİLİ EĞİTİM ve ÖRNEKLER -2 SONUÇ :

Bugünki yazımızda C programlama dili eğitim ve örnekler yazı dizinin 4. yazısını sizlerle paylaştık.Umuyorum faydalı birtakım bilgiler edinmişsinizdir.

İyi Çalışmalar.

Ücretsiz Full C Programlama Dili Öğren -3 | C Programlama Eğitimi

C PROGRAMLAMA DİLİ EĞİTİM ve ÖRNEKLER -2

C programlama dili diziler nedir ? C dili biçimlendirilmiş giriş/çıkışlar nedir ? Çok boyutlu diziler nedir ? Bu ve benzeri sorulara cevap aradığımız C programlama dili eğitim ve örnekler – 2 adlı yazımızla karşınızdayız.

Başlayalım.

Not : C dili örnekleri için -> TIKLA

C PROGRAMLAMA DİLİ EĞİTİMİ -2

DİZİLER :  

Birbiriyle ilişkili ve aynı tipte verileri içeren veri yapılarıdır diziler.Dizi elemanları ‘ [ ] ‘ köşeli parantez ile çağrılır ve her dizinin ilk elemanı sıfırıncı elemandır.

Köşeli parantez içinde bulunan sayı , belirteç(subscript) olarak adlandırılır.Eğer program belirteç kullanıyorsa , deyim belirtecin değerine karar vermek için hesaplanır.Örnek verecek olursak ;

c [ a + b ] += 2;      Burada a =5 ve b=6 olsun.Bu ifade c[11] elemanına 2 ekle anlamına gelir.

Not : ‘ Dizinin yedinci elemanı’ ile ‘yedinci dizi elemanı’ arasında fark vardır.Dizinin yedinci elemanı aslında dizinin 6. Elemanı iken yedinci dizi elemanı 7 belirtecine sahiptir.Bu durum ‘bir eksik(off-by-one) hatalarının ana kaynağıdır.

#Define tanımına bakacak olursak ;

#define BOYUT10 satırında  ; 10 değerine sahip ve boyut isminde sembolik bir sabit yaratılır.Bu sabitler C önişlemcisi tarafından derleme esnasında yerdeğiştirme metni ile değiştirilecek olan tanıtıcılardır.

Burada dikkat edilmesi gereken konu ; #define ve #include önişlemci komutlarının sonuna ‘ ; ‘ konulmamalıdır.

Bir karakter dizisine  scanf ve %s dönüşüm belirtecini kullanarak klavyeden okuyacağımız bir string alabilir.

Örnek : scanf (“%s”, string2);

Char string2[20]; bildirimi 19 karakter ve sonlandırıcı null karakterini tutacak bir karakter dizisi yaratır.Char tipte bir dizi karakter stringlerini depolamakta kullanılabilir.

Yerel dizi bildirimlerinde static kullanılarak , dizinin fonksiyon her çağrıldığında yeniden yaratılmasını ve fonksiyondan her çıkıldığında dizinin yok edilmesini engelleyebiliriz.

Bir dizi kabarcık sıralama tekniği ile sıralanabilir.

Tut = a[i];

A[i] = a [i+1];

A [i+1] = tut;

Dizileri Fonksiyonlara Geçirmek :

Dizi argümanını fonksiyona geçirebilmek için , dizinin ismini parantez kullanmadan belirtmelisiniz.

Örnek : int saatliksicaklik [24] ; olarak belirtilmişse , diziayarla (saatliksicaklik,24); fonksiyon çağrısı , saatliksicaklik dizisini ve boyutunu diziayarla fonksiyonuna geçirir.

‘ %p ’ dönüşüm belirteci , adresleri yazdırmak için kullanılan özel bir belirteçtir.Genelde adresleri onaltılık sistemde yazdırır.

Lineer arama küçük ya da sıralanmamış dizilerde iyi bir şekilde çalışır.Ancak büyük diziler için lineer arama yetersiz kalmaktadır.

ÇOK BOYUTLU DİZİLER :

Bir tablo elemanı belirleyebilmek adına iki belirteç kullanılır.İlk belirteç genel olarak eleman satırını , ikincisi ise genel olarak eleman sütununu belirler.

Örnek : int b [2] [2] = { 1,2} , { 3,4} ;

Çok boyutlu bir diziye bildirim esnasında atama listeleri kullanılarak değerler atanabilir.

GÖSTERİCİLER(Pointers) :

Göstericiler , değer olarak hafıza adreslerini içeren değişkenlerdir.Bir değeri gösterici ile belirtmek dolaylama yapmak (indirection) olarak adlandırılır.

Örnek :    int *sayiciPtr , sayici ;  Burada sayiciPtr değişkenini  ( int * ) bir tamsayıyı gösteren tipte bildirir. ‘ * ‘ yalnızca sayiciPtr’ye uygulanır.

Göstericilere , bildirimlerde ya da atama ifadelerinde değer atanmalıdır.Bir göstericiye ‘ 0 ‘ ,  NULL , ya da bir adres atanabilir.

Bir dizide ;  bPtr = &b[0] ; gösterici ile aynı işi yapar.

*(bPtr + 3 )  gösterici deyiminde bulunan ‘ 3 ‘ , göstericinin offsetidir.

Const char *takim [4] = {“kupa” , “karo” , “sinek” , “maça”};

Bu ifade 4 elemanlı bir diziyi belirtmektedir.Char* kısmı , takim dizisinin her elemanının char tipte bir gösterici olduğunu belirtmektedir.

Bir gösterici , eğer göstericiler aynı tipte ise başka bir göstericiye atanabilir.Burada tek istisna (void*)’tir.Tüm göstericiler void göstericiye atanabilir ve void gösterici her tipte göstericiye atanabilir.

KARAKTER VE STRINGLER :

Bir string harf , rakam ve özel karakterler içerebilir.C dilinde bir string , null karakterler (‘\0’) sonlanan bir karakter dizisidir.

Bir string’in değeri ilk karakterinin adresidir.

Karakter kütüphanesinden fonksiyonlar kullanırken <ctype.h> öncü dosyasını programımıza dahil etmeliyiz.

Karakter Kütüphanesi :

İnt isdigit (int c) ;  c bir rakam ise doğru bir değer , değilse 0 (yanlış) döndürür

İnt isalpha (int c) ; c bir harf ise doğru bir değer , değilse 0 (yanlış) döndürür

İnt iaslnum (int c) ; c bir harf ya da rakamsas doğru bir değer , değilse 0 (yanlış) döndürür

İnt isxdigit (int c) ; c onaltılık sistemde bir rakam değeri karakteri ise doğru bir değer , değilse  0 döndürür

İnt islower (int c)  ; c küçük bir harf ise doğru bir değer , değilse 0 döndürür

İnt isupper (int c ) ; c büyük bir harf ise doğru bir değer , değilse  0 döndürür

İnt tolower (int c ) ; c büyük harf ise , tolower c’yi küçük harfe çevirip döndürür , değilse tolower argümanı değiştirmeden döndürür

İnt toupper (int c) ; c küçük harf ise , toupper c’yi büyük harfe çevirip döndürür , değilse toupper argümanı değiştirmeden döndürür

İnt isspace (int c) ; c yeni satır (‘\n’) , boşluk (‘ ’) , form besleme (‘\f ’) , satır başı (‘\r ’) , yatay tab(‘ \t ’),  ya da düşey tab (‘ \v ‘) karakterlerinden biriyse doğru bir değer , değilse 0 döndürür

İnt iscntrl (int c) ; c bir kontrol değişkeni ise doğru bir değer , değilse 0 döndürür

İnt ispunct (int c) ; c boşluk , rakam ya da harften başka bir yazdırma karakteri ise doğru bir değer , değilse 0 döndürür

İnt isprint (int c) ; c boşluk (‘ ’) karakteri de dahil olmak üzere bir yazdırma karakteri ise doğru bir değer , değilse  0 döndürür

İnt isgraph (int c ) ; c boşluk karakteri haricinde bir yazdırma değeri ise doğru bir değer , değilse 0 döndürür

String Dönüşüm Fonksiyonları :

Burada genel amaçlı kütüphanede bulunan (stdlib) string dönüşüm fonksiyonlarını inceleyeceğiz.

Bu fonksiyonlar , rakam stringlerini tamsayı ve ondalıklı sayı değerlerine dönüştürür.

nPtr ; karakter sabitini gösteren bir gösterici

const ; argümanın sabit olduğunu bildirir

double atof (const char *nPtr) ;       nPtr stringini double’a dönüştürür

int atoi (const char *nPtr);      nPtr stringini int’e dönüştürür

long atol (const char *nPtr);     nPtr stringini long int’e dönüştürür

double strtod (const char *nPtr , char **endPtr) ;     nPtr  stringini double’a dönüştürür

lond strol (const char *nPtr , char **endPtr , int base );       nPtr stringini long’a dönüştürür

unsigned long strtoul (const char *nPtr , char **endPtr , int base);      nPtr stringini unsigned long’a dönüştürür

c dili eğitimi ve örnekler

Standart Giriş / Çıkış Kütüphane Fonksiyonları :

Burada standart giriş / çıkış kütüphanesindeki (stdio) karakter ve string verilerini ele alan fonksiyonları inceleyeceğiz.

Bu fonksiyonları kullanırken , programa <stdio.h> öncü dosyasını eklemelisiniz.

İnt getchar(void) ;    Standart girişteki karakteri alır ve tamsayı olarak döndürür

Char *gets(char *s);    Standart girişten aldığı karakterleri , yeni satır ya da dosya sonu belirteci ile karşılaşıncaya dek s dizisine alır.Sonlandırıcı null karakter diziye eklenir

İnt putchar (int c);    c içindeki karakteri yazdırır

İnt puts (const char *s);    yeni satır karakteri ile devam edilen bir stringi yazdırır

İnt sprint (char *s,const char *format,…);      printf ile denktir , ancak çıktılar ekran yerine s dizisine gönderilir

İnt sscanf (char *s, const char *format,….);      scanf ile denktir , ancak girdiler klavye yerine s dizisinden okunur

String Kütüphanesindeki String İşleme Fonksiyonları :

String Kütüphanesi , string verilerini ele almak , stringleri karşılaştırmak , stringlerde karakterler ya da başka stringler aramak , stringleri mantıklı parçalara ayırmak ve stringlerin uzunluğuna karar vermek gibi birçok kullanışlı fonksiyon sunar.

Char *strcpy (char *s1,const char *2);      s2 stringini s1 dizisi içine kopyalar, s1’in değeri döndürülür

Char *strncpy (char *s1,const char *s2, size_t n) ;     s2 stringinin en fazla n karakterini s1 dizisi içine kopyalar.S1’in değeri döndürülür

Char *strcat (char *s1,const char *s2);    s2 stringini s1 dizisine ekler.S2’nin ilk karakteri s1 dizisinin null karakteri üzerine yazılır.S1’in değeri döndürülür.

Char *strncat (char *s1,const char *s2,size_t n) ;   s2 stringinin en fazla n karakterini s1 dizisine ekler.S2’nin ilk karakteri s1 dizisinin null karakteri üzerine yazılır.S1’in değeri döndürülür.

Not : strncpy ve strncat  fonksiyonlarının  size_t parametresini kullandığına dikkat edilmelidir.size_t standart tarafından , sizeof operatörünün döndürdüğü değerin tipidir.

Size_t tipi ; sisteme bağlı olmak kaydıyla , unsigned long ya da signed int tipine eştir.

Not :

ASCII (American Standart Code for Information Interchange)

EBCDIC (Extended Binary Coded Decimal Interchange Code)

String Kütüphanesindeki Arama Fonksiyonları ;

Burada string kütüphanesinde yer alan ve stringlerin içinde karakter ve başka stringleri aramak için kullanılan fonksiyonlar incelenmektedir.

Char *strchr (const char *s,int c);    c’nin s stringi içindeki ilk konumunu belirler.Eğer c bulunursa,  c’yi gösteren bir gösterici döndürülür.Aksi takdirde Null  gösterici döndürülür

Size_t strcspn (const char *s1 , const char *s2) ;   s1 stringinde , s2 stringi içindeki karakterlerden oluşmayan ilk kısmı bulur ve bu kısmın uzunluğunu döndürür

Size_t strspn (const char *s1 , const * s2);   s1 stringi içinde , yalnızca s2 stringi içindeki karakterlerden oluşan ilk kısmı bulur ve bu kısmın uzunluğunu döndürür

Char *strpbrk (const char *s1 , const char *s2);    s2 içinde herhangi bir karakterin s1 stringi içinde yer aldığı ilk konumunu bulur.Eğer s2 stringi içindeki bir karakter s1 içinde bulunursa , s1 içindeki karakteri gösteren bir gösterici döndürür.Aksi takdirde , NULL gösterici  döndürür.

Char *strrchr (const char  *s, int c );     s stringi içinde , c karakterinin en son konumunu belirler.Eğer c bulunursa,  s stringi içindeki c’yi gösteren bir gösterici döndürülür.Aksi takdirde ,NULL gösterici döndürülür.

Char *strstr (const char *s1 , const char *s2);    s2 stringi içinde , s1 dizisinin son konumu belirler.Eğer string bulunursa , s1 stringini gösteren bir gösterici döndürülür.Aksi takdirde null döndürülür.

Char *strtok (const  char *s1 , const char *s2);    bir dizi strtok çağrısı s1 stringini , s2 içinde belirtilen karakterle ayrılmış atomlara ayırır.İlk çağrı ilk argüman olarak s1 alırken, daha sonraki çağrılar argüman olarak NULL alır.Her çağrıda o andaki atomu gösteren bir gösterici döndürülür.Eğer fonksiyon çağrıldığında daha fazla atom yoksa NULL döndürülür.

String Kütüphanesinde Hafıza Fonksiyonları :

Burada string kütüphane fonksiyonlarını , hafıza bloklarının kullanımını , karşılaştırma ve arama  işlemlerini inceleyeceğiz.

Fonksiyon tanımında kullanacağımız ‘nesne’ veri bloğu anlamında kullanılmıştır.

Void *memcpy (void *s1,const void *s2 , size t_n) ;   s2 ile gösterilen nesneden n karakteri s1 ile gösterilen nesneye kopyalar.Sonuçta , oluşan nesneyi gösteren bir gösterici döndürülür.

Void *memmove (void *s1,const void *s2, size t_n);   s2 ile gösterilen nesneden n karakteri s1 ile gösterilen nesneye kopyalar.Kopyalama işlemi, s2 ile gösterilen nesnedeki karakterler önce geçici bir diziye kopyalanıp daha sonrada bu geçici diziden s1 ile gösterilen nesneye kopyalanıyormuş gibi yapılır.Sonuç olarak oluşan nesneyi gösteren bir gösterici döndürülür.

İnt memcmp (const void *s1 , const void *s2, size_t n) ;   s1 ile s2 gösterilen nesnelerin ilk n karakterlerini karşılaştırır.Fonksiyon s1 s2’ye eşitse 0 , s1 s2’den küçükse 0’dan küçük , s1 s2’den büyükse 0’dan büyük bir değer döndürür.

Void *memchr (void *s , int c , size_t n) ;   s ile gösterilen nesne   içinde c’nin (unsigned char’a dönüştürülür) ilk bulunduğu konumu belirler.Eğer c bulunursa , nesne içindeki c’nin konumunu gösteren bir gösterici döndürülür.Aksi takdirde , NULL döndürülür

Void *memset (void *s , int c , size_t n) ;    s ile gösterilen nesnenin ilk n karakterine , c (unsigned int’e dönüştürülür) kopyalar.Sonucu gösteren bir gösterici döndürülür.

Buradaki fonksiyonların gösterici parametreleri ‘ void * ‘ olarak bildirilmiştir.

String Kütüphanesindeki Diğer Fonksiyonlar :

Char *strerror (int errornum) ;      Sisteme bağımlı olmak üzere , hata sayısını bir metin stringi haline dönüştürür.Stringi gösteren bir gösterici döndürülür.

Size_t strlen (const char *s ) ;      S stringinin uzunluğunu bulur.NULL karakterden önceki karakterlerin sayısı döndürülür.

Not :

Karakter dizilerinin sonunda bulunan ‘null’ karakterini depolamak için gerekli alanı ayırın.Sonlandırıcı null karakterini içermeyen bir stringi yazdırmak hataya sebep olur.

BİÇİMLENDİRİLMİŞ GİRİŞ/ÇIKIŞLAR  :

Bu bölüm scanf ve printf fonksiyonlarını detaylı bir biçimde incelemeye alacağımız bölümdür.Bunlara  ek olarak kullanılan diğer 4 fonksiyon ‘ gets , puts  , getchar , putchar ’dır.

Printf fonksiyonu aşağıdaki biçime sahiptir ;

Printf ( biçim kontrol dizesi  ,  diğer argümanlar );

Burada biçim kontrol dizesi , çıktının biçimini tanımlar ve diğer argümanlar biçim kontrol dizesindeki her dönüşüm tarifinin karşılığıdır.

Biçim kontrol dizesi ‘ tırnak  ‘ içine alınmalıdır.

Tamsayıları Ekrana Yazdırmak :

Dönüşüm Belirteci   &        Açıklamaları            

d     :     işaretli bir tamsayıyı (onluk sistemde ) gösterir.

i      :     işaretli bir tamsayıyı (onluk sistemde) gösterir.

o     :   (i ve d yalnız scanf ile kullanıldığında farklıdır.) İşaretsiz bir tamsayıyı (sekizlik sistemde) gösterir

u    :     İşaretsiz bir tamsayıyı (onluk sistemde) gösterir.

x   ya da X : İşaretsiz bir tamsayıyı (onaltılık sistemde) gösterir.X , 0-9 rakamlarının ve A-F harflerinin gösterilmesini ve x, 0-9 rakamları ve a-f harflerinin gösterilmesini sağlar.

h ya da 1 (1 harfi)   :   herhangi bir tamsayı belirtecinden önce kullanıldığında sırasıyla , short ya da long bir tamsayının gösterileceğini belirtir.

Ondalıklı Sayıları Yazdırmak :

e ve E dönüşüm belirteçleri , ondalıklı sayıları üssel yazılım biçiminde  gösterir.

Örnek olarak : 150.4582 değeri , 1.504582 x 10^2 şeklinde temsil edilir.

Bu ifade bilgisayarda ;  ‘’ 1.504582E + 02 ‘’ şeklinde gösterilir.Burada E (exponent) üs anlamındadır ve E+02 10’un 2. Kuvveti ile çarpılacağını bildirir.

E , e , f dönüşüm belirteci ile yazdırılan değerler 6 basamak duyarlıkta yazdırılırlar.

G , g  dönüşüm belirteci , birbirini izleyen sıfırları yazdırmadan e (E) ya da f biçiminde yazdırır. Örnek olarak ;    1.2340000 değerini  1.234 olarak yazdırır.

%g dönüşüm belirteci ile örnek  vermek gerekirse  ;

0.0000875 ifadesi 8.75e-05 olarak , 8750000.0 ifadesi de 8.75e+06 şeklinde yazdırılır.

Dönüşüm Belirteçleri   & Açıklama

E ya da e    :     ondalıklı bir değeri üssel yazılım biçiminde gösterir.

f                  :      ondalıklı sayıları gösterir.

G yada  g   :      ondalıklı değerleri f ya da e (ya da E ) üssel biçiminde gösterir.

L       :         herhangi bir dönüşüm belirtecinden önce kullanıldığında , bir long double ondalıklı değerin yazdırılacağını belirtir.

String Karakterlerini Yazdırmak :

C ve s  dönüşüm belirteçleri sırasıyla , karakterleri ve stringleri yazdırmak için kullanılır.

C dönüşüm belirteci , bir char argümana ihtiyaç duyar.

S dönüşüm belirteci , sonlandırıcı null karakterle (‘\0’) karşılaşıncaya dek karakterleri yazdırır.

Diğer Dönüşüm Belirteçleri :

Dönüşüm Belirteci & Açıklama :

P     :   bir gösterici değerini uygulama bağımlı olarak yazdırır .

N     :   o andaki printf ifadesinde yazdırılan karakter sayısını tutar.İlgili argüman olarak tamsayı gösteren bir gösterici alır.Hiçbirşey yazdırılmaz.

%    :      Yüzde karakterini yazdırır.

Printf Fonksiyonu Çıktıları Biçimlendirme

( – )  Eksi İşareti ) : Belirtilen alanda çıktıyı sola yaslar

( + )    (Artı işareti ) :    Pozitif değerlerden önce artı ve negatif değerlerden önce eksi işaretini yazdırır

Boşluk                  :    + bayrağı ile yazdırılmamış pozitif bir değerden önce boşluk yazdırır

#                            :     sekizlik dönüşüm belirteci (o) ile kullanıldığında yazdırılan değerin önüne 0 ekler.

0 (sıfır)                  :    bir alanı , önce sıfırlar gelecek biçimde 0 ile doldurur.

Not : Biçim kontrol dizesi içinde bir bayrak kullanmak için , bayrağı yüzde işaretinin hemen sağına koymak gerekmektedir.

Çıkış Dizilerini ve Hazır Bilgileri Yazdırmak :

\’           : Tek tırnak (‘) karakterini yazdırır

\”    : Çift tırnak (“) karakterini yazdırır

\?    : Soru işareti (?) karakterini yazdırır

\\     : Ters çizgi (\) karakterini yazdırır

\a   : Duyulabilen (zil)  ya da görülebilen bir alarm çalıştırır.

\b    : İmleci o andaki konumundan bir geriye taşır

\f    : İmleci bir sonraki sayfanın başına taşır

\n    : İmleci bir sonraki yeni satırın başına taşır

\r    :  İmleci o andaki satırın başına taşır

\t    :  İmleci bir sonraki yatay tab konumuna taşır

\v    :  İmleci bir sonraki düşey tab konumuna taşır

Scanf ile Girişi Biçimlendirmek :

Scanf (biçim kontrol dizesi , diğer argümanlar ) ;

D     : Tercihe bağlı olarak onluk sistemde  işaretli bir tamsayı okur.İlgili argüman tamsayıyı gösteren bir göstericidir.

İ     :  Tercihe bağlı olarak onluk , sekizlik ya da onaltılık sistemde işaretli bir tamsayı okur.İlgili argümanı , tamsayıyı gösteren bir göstericidir.

O    :   Sekizlik sistemde  bir tamsayı okur.İlgili argüman , işaretsiz bir tamsayı gösteren bir göstericidir.

U    :   Onluk sistemde bir tamsayıyı okur

X ya da x  : Onaltılık sistemde bir tamsayı okur

H ya a 1    :  Herhangi bir tamsayı dönüşüm belirtecinden önce yerleştirildiğinde , short ya da long bir tamsayının girileceğini belirtir.

Ondalıklı Tamsayılar ;

E , e , f , g ya da G   : Ondalıklı bir tamsayıyı okur

I ya da L   : Herhangi bir dönüşüm belirtecinden önce yerleştirildiğinde double ya da long double bir değerin girileceğini belirtir.

Karakter ve Stringler ;

C    : Bir karakter okur ve char gösteren bir göstericidir.

S    : Bir string okur.Stringi  ve sonlandırıcı null karakterini depolamaya yetecek kadar geniş , char tipinde bir diziyi gösteren bir göstericidir.

Nadir Kullanılan Operandlar  ;

P     :    Printf ile  %p  kullanıldığında oluşturulan biçimle aynı biçimdeki bir adresi okur

N    :   scanf ile o ana kadar alınan karakter sayısını depolar.

YAPILAR , BİRLİKLER , BİT İŞLEME ve SAYMA BİTLERİ (enumarations)  :

Yapılar ; birbiriyle ilişkili değişkenlerin bir isim altında toplanması işlemidir.

Örnek bir veri tanımı :

Struct kart {

Char *taraf;

Char *takim;   };

Burada struct anahtar kelimesi yapı tanımını başlatır.Kart tanıtıcısı ‘yapı etiketidir’.Bu örnekte yapı tipi ; struct kart’tır

Yapı tanımını sonlandıran ‘ ; ’ unutulmamalıdır.

Örnek :

Struct kart a  ,deste [52] , *cPtr ;    örneğinde , struct kart tipinde bir a değişkeni , struct kart tipinde 52 elemana sahip bir deste dizisi ve  struct kart’ı gösteren bir gösterici değişkeni bildirir.

Yapılara İlk Değer Atanması :

Aynı dizilerde olduğu gibi atama listeleri ile ilk atama yapılır.

Örnek :      struct kart a ={“kupa”, “sinek”};

Yapı Elemanlara Ulaşmak :

Bunun için kullanılan İki operatör vardır ;

Yapı elemanı operatörü (. )

Yapı gösterici operatörü  (->)

Yapı elemanı operatörü , yapı elemanına yapı değişkeninin ismini kullanarak erişir.

Ör : printf (“%s”, a.takim);

Yapı gösterici operatöründe ise ; struct kart yapısını göstermek adına , aPtr göstericisinin bildirildiğini ve ‘a’ yapısının aPtr’ye atandığını düşünelim.

Printf (“%s”, aPtr -> takim);

aPtr -> takim deyimi   =  (*aPtr).takim ‘ e eşittir.

Not :  -> ve . operatörlerinden önce ve sonra boşluk bırakmayın. Bir yapı elemanını , gösterici ve yapı elemanı operatörünü belirtirken parantez kullanın  . Yanlış Kullanım  : *aPtr.takim

Yapıları Fonksiyonlara Kullanmak :

Typedef :

Bu anahtar kelime , daha önceden tanımlanmış veri tipleri için eşanlamlı sözcükler yaratan bir mekanizma sağlar.

Genelde typedef , yapı tanımlamalarında kullanılır ve böylece yapı etiketi kullanımına gerek kalmaz.

Kısaca typedef ile  yeni bir isim yaratmak yeni bir tip yaratmaz  , daha önceden var olan bir tip ismi için , eş anlamlı olarak kullanılabilecek yeni tip isimleri yaratır.

C PROGRAMLAMA DİLİ EĞİTİM ve ÖRNEKLER -2 SONUÇ :

Bugünki yazımızda C programlama dili eğitim ve örnekler -2 adlı yazımızı sizlerle paylaştık.Umuyorum ki faydalı birtakım bilgiler edinmişsinizdir.

İyi Çalışmalar.

Ücretsiz Full C Programlama Dili Öğren -2 | C Programlama Eğitimi

C PROGRAMLAMA DİLİ EĞİTİM ve ÖRNEKLER

C Programlama dili nedir ve nasıl öğrenilir? C dili örnekleri nedir ? C dili ile neler yapabiliriz ?C yüksek seviyeli bir dil midir ? C ile programlamaya giriş nedir ? Hafıza konuları , C dilinde aritmetik vb. her başlığa yer verdiğimiz C programlama dili eğitim ve örnekler adlı yazımızla karşınızdayız.

Başlayalım.

Not : C dili örnekleri için -> TIKLA

C PROGRAMLAMA DİLİ EĞİTİMİ

Bilgisayar nedir ?

Bilgisayarlar hesaplamaları ve mantıksal kararlar vermeyi insanlardan milyonlarca hatta milyarlarca kez hızlı yapabilme yeteneğine sahip cihazlardır.

Yazılım Geliştirme Yöntemleri Nedir ?

Yapısal programlama , yukarıdan aşağıya adımsal iyileştirme , fonksiyonellik , nesne tabanlı programlama , nesneye yönelik programlama , event driven ve generic olarak ayrılırlar.

Bilgisayar Organizasyonu Nedir  ?

Giriş ünitesi , Çıkış ünitesi , Hafıza ünitesi , Aritmetik Mantık Ünitesi(ALU) , Merkezi İşleme Ünitesi(CPU) ve İkincil Depolama Ünitesidir.

Bilgisayar Dilleri Tipleri Nedir ?

Günümüzde genel tip olarak 3 çeşide ayrılır ; Makine dilleri , Assembly dilleri , Yüksek seviyeli diller

Herhangi bir bilgisayar doğrudan makine dilini anlayabilir.Makine dili bilgisayarın doğal dilidir.

Makine dillerinde yaşanan programlama zorlukları ya da yaşanan hatalar nedeniyle programcılar İngilizceye yakın kısaltmalar kullanmaya başlarlar.Bu kısaltmalar assembly dilinin temelini oluşturur.Assembler olarak adlandırılan çevirici programlar , assembly dilinde yazılmış programları makine diline çevirirler.

Makine Dilinde :  +130042774                   Assembly Dilinde : LOAD SAYI1

+14000593419                                                      ADD SAYI2

+1200274027                                                         STORE TOPLAM

Programlama sürecini hızlandırabilmek için Yüksek Seviyeli Diller geliştirildi.Derleyici(Compiler) olarak adlandırılan bu programlar , yüksek seviyeli dilleri makine dillerine çevirirler.

Örnek :  “ toplam = sayi1 + sayi2 “

C Dilinin Tarihçesi Nedir ?

Temelinde iki eski dil yatmaktadır. Bu diller BCPL ve B. BCPL.1967 Yılında Martin Richards tarafından geliştirilmiştir.Ken Thompson , BCPL çalışmalarının ardından  kendi yarattığı B dilini geliştirmiştir.

C dili 1972 yılında yine bu çalışmaların ardından Bell labaratuvarlarında Dennis Ritchie tarafından DEC PDP-11 bilgisayarlarında geliştirilmiştir.

Standart C Kütüphanesi Nedir ?

C programları fonksiyon adı verilen parçalardan ya da modüllerden oluşmaktadır.

C öğrenmede asıl olan iki kısım bulunmaktadır ;

1) C dilinin kendisini , 2) C Standart Kütüphanesindeki fonksiyonların kullanımı

C ile çalışırken kullanacağımız bloklar ; C standart kütüphane fonksiyonları , Kendi yazdığımız fonksiyonlar ve diğer programcıların yazdığı fonksiyonlar

İpucu : Kendi yazacağımız fonksiyonlar yerine , ANSI standart kütüphane fonksiyonlarını kullanmak programın performasını arttırır.Çünkü bu fonksiyonlar verimli çalışma adına dikkatle yazılmıştır.

Diğer Yüksek Seviyeli Diller Nedir ?

Önemli olan birkaçına göz atacak olursak ;

FORTRAN (Formula Translator) : IBM tarafından 1954 ve 1957 yıllarında geliştirilen ve bilimsel uygulamalarda kullanılan , mühendislik uygulamalarında kullanılan bir programdır

COBOL (Common Bussiness Oriented Language) : 1959 yılında bilgisayar üreticileri , devlet ve endüstriyel bilgisayar kullanıcıları tarafından geliştirilmiştir.Daha çok büyük verilerin kullanımını gerektiren ticari uygulamalar da kullanılır.

Pascal ve C aynı zamanlarda , Profesör Niklaus Wirth tarafından akademik kullanım amacıyla geliştirilmiştir.

C Dili Program Geliştirme Ortamı Temelleri Nedir ?

Bu sistemler genellikle birkaç kısımdan oluşmaktadır ;

Program geliştirme ortamı , Dilin kendisi , C standart kütüphanesi

Tipik bir C programı çalışmadan önce  6  safhadan geçmektedir ;

Yazım (edit) , Önişleme(preprocess) , Derleme (compile) , Bağlama (link) , Yükleme (load) ve Çalıştırma (execute).

İpucu : 0’a bölme gibi hatalar programın çalışması esnasında ortaya çıkmaktadır.Bu yüzden bu hatalara çalışma zamanı hataları yani ‘Runtime/Execution Time Error’ denilir.0’a bölmek ölümcül hata anlamına gelir ve  programın başarılı bir şekilde tamamlanmadan sonlanması anlamına gelir.Ölümcül olmayan hatalar ise programın yanlış sonuç verecek biçimde çalışmasına sebep olur.

C ile Programlamaya Giriş Nedir ;

‘/* ‘ ile başlanan yorum satırının sonuna ‘ */ ’ işaretini koymayı unutmayın

Main () : main’den sonra bulunan parantezler main’in fonksiyon adı verilen program oluşturma bloklarından biri olduğunu gösterir ve her programda fonksiyonların içinde en az biri ‘main’ olmalıdır.

Printf (“     \n”)  ; tırnaklar içindeki karakterleri aynen ekrana yazdırır. ‘ \ ‘ ters eğik çizgi , çıkış karakteri olarak adlandırılır.

‘ \n ’ ise yeni satır anlamına gelir ve imleci yeni satırın başına taşır.

‘ \t ’ ise yatay tab anlamına gelir.İmleci bir sonraki tab başlangıcına taşır.

‘ \a ’ ise alarm anlamına gelir.Sistemdeki zili çalar.

‘ \\’ ise ters çizgi anlamındadır.Printf içindeki ters çizgi karakterini yazdırır.

‘  \”  ’  ise tırnak anlamındadır.Printf içerisindeki tırnak karakterini yazdırır.

[ int  tamsayi1 , tamsayi2 , toplam ; ] satırındaki kod ile ‘Bildirim’ yapmış oluyoruz.Burada tamsayi1 ya da tamsayi2 değişkendir.Değişkenlerin kullanılabilmesi  için bu değişkenlerin isim ve değişken tipiyle beraber main fonksiyonunu belirten ‘{ ’ küme işaretinden sonra tanımlanmaları gerekmektedir.

C programlama dili eğitimi

Örnek : main {  int tamsayi1  ,  …

Diğer bir ifade Scanf (” %d ” , &tamsayi1) ; Burada %d dönüşüm belirtecidir ve verinin tamsayı olması gerektiğini belirtir. ‘ & ‘ karakterine ise adres operatörü denilmektedir.

Printf (“Toplam %d dir\n”, toplam); satırında ise ‘%d’ dönüşüm belirtecini  içerir.Bir tamsayının yazılacağını gösterir.

Return 0 ; 0 değerini programın çalıştırıldığı işletim sistemi ortamına gönderir ve böylece  programın başarılı bir şekilde çalıştığını gösterir.

Hafıza Konuları Nedir ?

Scanf operatörü ile bir tamsayi değeri aldığınızı düşünelim.Kullanıcı 40 tamsayısı girdiğinde bu değer , daha önceden o hafıza konumunda bulunan değerin üzerine yazılır.Bu işleme de ‘destructive read-in’ adı verilir.

Bir hafıza konumundan okuma işlemi yapıldığında ise buna non-destructive read-out adı verilir.

Dipnot :

Bilgisayar programlarında ifadelerin çalıştırılma sıralarını belirlemeye program kontrolü denir.

Sahte kod ise programcıların algoritma geliştirmelerine yardımcı olan yapay bir dildir.Sahte kodlar günlük konuşma diline yakın olup , bilgisayarda çalıştırılmazlar.

Akış grafiği , algoritmanın grafik ile gösterimidir.Akış grafikleri dikdörtgen , çember gibi özel sembollerden oluşur.

Programların çoğu mantıksal olarak 3 kısma ayrılabilir ;

Programların değişkenlerinin bildirildiği ve değişkenlere ilk değer atandığı bildirim safhası;

Girilen verilerin değerlerinin işlendiği ve program değişkenlerinin ayarlandığı işleme safhası ;

Sonuçların hesaplandığı ve yazdırıldığı sonlandırma safhası .

C Programlama Dilinde Aritmetik :

Toplama = ‘+’

Çıkarma = ‘ – ’

Çarpma = ‘ * ’

Bölme = ‘ / ’

Mod Alma = %

İşlem Sırası ise ;

Önce parantez içi hesaplanır , ardından çarpma , bölme ve mod alma işlemleri hesaplanır.En sonda ise toplama ve çıkarma işlemi gerçekleşir.

Eşitlik ve Karşılaştırma Operatörleri  :

Eşitlik operatörleri ;

‘ == ‘ ; x==y    (X eşittir Y anlamındadır)

‘ != ’ ; x!=y   (X eşit değildir Y anlamındadır)

Karşılaştırma Operatörleri ;

‘ > ‘ ;  x>y  (X büyüktür Y)

‘ < ’ ; x<y (X küçüktür Y)

‘ ≤ ’ ; x <= y (X küçüktür ya da eşittir Y)

‘≥’ ; x >= (X büyüktür ya da eşittir Y)

Örnek Program ;

#include <stdio.h>

#include <stdlib.h>

int main()

{

float ortalama ;

int sayici,not,toplam ;

toplam=0;

sayici=0;

printf(“Notu gir :”);

scanf(“%d”,&not);

while (not !=1) {

toplam = toplam + not;

sayici = sayici +1;

printf(“Notu Giriniz : “);

scanf(“%d”,&not);

}    if (sayici !=0 ){

ortalama = (float) toplam/sayici;

printf(“Sınıf ortalaması %2f”,ortalama);

}

else

printf(“Not girilmedi! \n”);

return 0;   }

Bu programda sayıcı kontrollü döngülerle sınıf ortalaması bulan bir program oluşturulmuştur.

Ortalama sonucunun ondalıklı olması durumu için float veri tipi’de kullanılmıştır.Yine bu programda dikkat edilmesi gereken bir yer olan ’ %2.f ‘ ifadesidir.

Burada ‘f’ ondalıklı bir değer yazdırılacağını bildirir ve önünde bulunan ‘ .2 ‘ ise  hassasiyeti belirtir.Yine burada belirtildiği gibi virgülden sonra 2 basamak geleceğini ifade eder.

Atama Operatörleri :

‘ += ‘ operatörü : c += 7 -> c = c+7

‘ -= ’ operatörü : d -=4 -> d = d – 4

‘ *= ’ operatörü : e *=5 -> e = e*5

‘ /= ’ operatörü : f /=6 -> f = f/6

‘ %= ‘ operatörü : g %=7 -> g = g%7

Arttırma ve Azaltma Operatörleri ;

Tekli Artırma (++) ve Tekli Azaltma (–);

Ön arttırma (Preincrement)

Ön azaltma (Predecrement)

Son artırma (Postincrement)

Son azaltma (Postdecrement)

Örnek : ‘ ++a ’ ifadesi , a’yı bir arttır ve a’nın yeni değerini a’nın içinde bulunduğu deyimde kullan anlamına gelir.

‘a++’ ifadesi ise , a’nın değerini a’nın içinde bulunduğu deyimde kullan ve daha sonra a’yı bir arttır.

Üs Almak İçin Yöntemler :

C dilinde üs almak için özel bir operatör bulunmasa da bunun yerine standart kütüphane fonksiyonlarından ‘pow’ fonksiyonu bu amaçla kullanılabilir.

Pow (x,y) komutu x’in y’ninci kuvvetini hesaplar.Bu fonksiyon double tipte iki eleman alır ve double tipinde bir sonuç döndürür.

Pow vb. matematik fonksiyonu programda kullanıldığında , math.h dosyasının programa eklenmesi gerekmektedir.Aksi takdirde sistem hatalı çalışabilir.

GetChar Komutu kullanımı :

While ((not =getchar()) !=EOF  ) ; satırında ilk önce parantez içerisindeki atama olan (not =getchar) çalıştırılır.getchar fonksiyonu (standart giriş/çıkış kütüphanesi içindedir) ve klavyeden bir karakter okur ve bu karakteri not tamsayı değişkeni içerisinde depolar.(EOF : End of file)

Karakter genellikle char tipinde saklanırlar.C dilinde yine en önemli özelliklerden biri de bu karakterlerin tamsayı veri tip ile saklanabilmesi özelliğidir.

Örnek olarak : printf (“ (%c) karakteri  %d değerine sahiptir. \n” , ‘a’ , ‘a’);

Unix sistemleri ve ya diğer sistemlerde EOF değeri ; <return> ya da <ctrl-d> kombinasyonu ile girilir.

Switch Yapısında ;

Case ‘\n’ : case ‘ ’ ;

Break;    satırları programın boşluk karakterini ve yeni satır karakterlerini atlamasını sağlatır.

C dili Mantıksal Operatörleri  :

&& (Mantıksal  Ve ) anlamındadır

|| (Mantıksal Veya) anlamındadır

! (Mantıksal Değil) anlamındadır.

Not : ‘ ==  ‘(Eşitlik)  // ‘ = ’ (atama) operatörleridir ve karıştırılmamalıdır.

C Dili Fonksiyonlar :

C dilinde modüllere fonksiyon adı verilir.

Fonksiyonlar , fonksiyon çağrıları sayesinde çağrılırlar.Fonksiyon çağırmak demek fonksiyonu kullanmamız gerektiği anda onu programa dahil etmek demektir.

Matematik Kütüphanesindeki Fonksiyonlar :

Burada bulunan kütüphane fonksiyonları , genel matematik işlemlerini yapmasını sağlar.

Örneğin ; 900.0 sayısının karekökünü bulmak ve yazdırmak isteyen bir programda , kullanıcı ‘sqrt’ fonksiyonu ile bu işlemi gerçekleştirebilir ( printf (“%.2f”, sqrt(900.0)); )

Sqrt fonksiyonu double tipte argüman kullanır ve aslında Matematik kütüphanesinde bulunan fonksiyonların hepsi double veri tipini döndürürler.

Matematik Kütüphanesi Fonksiyonları ve Tanımları ;

Sqrt (x) : x’in karekökü

Exp (x) : e^x üssel fonksiyon

Log (x) : x’in e tabanına göre logaritması

Log10 (x) : x’in 10 tabanına göre logaritması

Fabs (x) : x’in mutlak değeri

Ceil (x) : x’i kendinden büyük ilk tamsayıya yuvarlar

Floor (x) : x’i kendinden küçük ilk tamsayıya yuvarlar

Pow (x) : x^y  ‘x üzeri y’

Fmod (x,y) : x/y işleminin kalanını bulur

Sin (x) : x’in sinüsünü hesaplar (x radyan)

Cos (x) : x’in cosinüsünü hesaplar (x radyan)

Tan (x) : x’in tanjantını hesaplar (x radyan)

Bir Fonksiyon Tanımının Biçimi ;

Geri dönüş tipi   fonksiyonun ismi (parametre listesi)

{

Bildirimler

İfadeler

}

Not : Void tipinde geri dönüş değeri , fonksiyonun herhangi bir değer geri döndürmeyeceğini gösterir.

Veri Tipleri :

Printf ile Kullanılan : Long double (%Lf ) ,Double (%f), Float (%f) , Unsigned long int (%lu) , Long int (%ld) , Unsigned int (%u) , İnt (%d) , Short (%hd) , Char (%c)

Scanf ile Kullanılan : Long double (%Lf ) ,Double (%lf), Float (%f) , Unsigned long int (%lu) , Long int (%ld) , Unsigned int (%u) , İnt (%d) , Short (%hd) , Char (%c)

Öncü (Header) Dosyalar ;

Her standart kütüphane , o kütüphanedeki her fonksiyonun prototiplerinin yer aldığı ve bu fonksiyonlar tarafından kullanılabilecek çeşitli veri tipleriyle , bazı sabitlerin bulunduğu bir öncü dosyaya sahiptir.

Standart kütüphane öncü dosyası ;

<assert.h>  : Programın hatalarının ayıklanmasında yardımcı olması için eklenen teşhislerin makroları ve bilgilerini içerir.

<ctype.h> : Karakterleri belli özelliklere göre test eden fonksiyonların ve küçük harfi büyük harfe çeviren fonksiyonların (terside geçerlidir) prototiplerini tutar.

<errno.h> : Hata mesajlarını iletmek için gereken makroları tanımlar

<float.h> : Sistemin ondalıklı sayılar için limitlerini tutar

<limits.h> : Sistemin integral limitlerini tutar

<locale.h>  : Programın çalıştırıldığı yerdeki yerel bilgilere göre değiştirilebilmesini sağlayan fonksiyon prototiplerini ve bunların ihtiyaç duyabileceği bilgileri içerir.Yerel gösterimler bilgisayar sisteminin tarih, zaman , para birimleri ve dünya üzerindeki büyük sayılar için değişik gösterim biçimlerini doğru bir şekilde kullanılmasını sağlatır.

<math.h> : Matematik kütüphane fonksiyonlarının prototiplerini tutar

<setjmp.h> : Fonksiyon çağrıları ve geri dönüşleri arasındaki geçişlere izin veren fonksiyonların prototiplerini tutar

<signal.h> : Programın çalıştırılması esnasında oluşabilecek çeşitli durumları gerçekleştiren makroları ve fonksiyon prototiplerini tutar.

<stdarg.h> : Sayısı ve tipleri belli olmayan argüman listesine sahip fonksiyonların çalışmasını sağlayan makroları tutar

<stddef.h> : C’de belli hesaplamaları yaptığımız tiplerinin genel tanımlarını tutar ve standart giriş/çıkış kütüphane fonksiyonlarının prototiplerini ve bunlar tarafından kullanılan bilgileri tutar

<stdio.h> : Standart giriş/çıkış kütüphane fonksiyonlarının prototiplerini ve bunlar tarafından kullanılan bilgileri tutar.

<stdlib.h> : Sayıları yazılara, yazıları sayılara çeviren , rastgele sayılar üreten , hafıza ayrılmasını sağlayan fonksiyonların prototiplerini tutar.

<string.h> : String işlemlerini yapan fonksiyonların prototiplerini tutar

<time.h> : Zamanla ve tarihle ilgili işlemler yapan fonksiyonların prototiplerini tutar

Not : Programlama yapan kişide öncü dosyalar oluşturabilir.Bu dosyalar ‘ .h ‘ uzantısı ile bitmelidir.

Fonksiyonları çağırmak adına 2 yol bulunmaktadır ;

Değere göre çağırma ve Referansa göre çağırma

C dilinde tüm çağırmalar değere göre yapılır.

Rand Komutu :

Rand fonksiyonu  0 ile RAND_MAX (<stdlib.h> öncü dosyasında tanımlı sembolik sabit) değeri arasında bir tamsayı yaratır.

6 yüzlü bir zar atıldığını düşündüğümüzde ;

Rand ()%6  işlemi 0 ile 5 dizisindeki (0,1,2,3,4,5) tamsayılarını üretecektir.Bu işleme derecelendirme yani scaling denilmektedir.Burada ‘6’ rakamı ise derecelendirme faktörü olarak geçmektedir.Burada önceki sonuca ‘+1’ ekleyerek sayıların dizilerini kaydırıyoruz.

Rand fonksiyonu gerçekte sahte rastgele sayılar üretir.Rand fonksiyonunu tekrar tekrar çağırmak , rastgele gibi görünen bir dizi sayı oluşmasına sebep olur.Bu işleme ‘Rassallaştırma’ adı verilir ve bu işlem standart kütüphane fonksiyonu olan ‘Srand’ ile yapılır.Srand fonksiyonu ‘unsigned’ tipte bir tamsayıyı argüman olarak kullanır.

Depolama Sınıfları :

C dili auto , register , extern ve static depolama sınıfları belirteçleriyle belirlenebilen dört depolama sınıfına sahiptir.

Auto ve register anahtar kelimeleri , otomatik depolama süreçli değişkenleri kapsar

Extern ve static anahtar kelimeleri ise , statik depolama süreçli değişken ve fonksiyon tanıtıcıları için kullanılırlar.

C PROGRAMLAMA DİLİ EĞİTİM ve ÖRNEKLER SONUÇ :

Bugünki yazımızda C programlama dili eğitim ve örnekler adlı yazımızı sizlerle paylaştık.Umuyorum faydalı birtakım bilgiler edinmişsinizdir.

İyi Çalışmalar

Ücretsiz Full C Programlama Dili Öğren | C Programlama Eğitimi

C PROGRAMLAMA DİLİ NEDİR ve NASIL KULLANILIR?

C Programlama dili nedir ?.C dili ile programlama nasıl yapılır ve nerelerde kullanılır ?.C dili nasıl öğrenilir ve nasıl geliştirilir ?.Bugünki yazımızda C Programlama Dili Nedir ve Nasıl Kullanılır adlı yazımızla karşınızdayız.

Başlayalım.

C PROGRAMLAMA DİLİ GİRİŞ

İlk karşımıza çıkacak olan ifadelerden birisi #include <stdio.h>’tır.Bu işlem aslında derleyicinin derleme işlemini yaptığı esnada C derleyicisinin kurulu olduğu dosyaların içinde bulunan ‘include’ dosyası içerisindeki kütüphaneyi açar.

Karşınıza çıkacak olan sıradaki ifade int main () olacaktır.İnt main () programda çalıştırılan ilk fonksiyondur.

Pekala karşınıza çıkan “ \n ” ifadesi ne anlama gelmektedir.Bu ifade programda geldiğinde bir alt satıra geçme işlemini gerçekleştiren ifadedir.

Açıklama satırı ise karşınıza  “ // ” şeklinde ve ya “ /*  */  ” şeklinde çıkabilir.İkiside kullanılabilir.

Veri  Tipleri ;

Somut nesnelerin -> soyutlaştırılmış halleri’dir.

Char : Tek bir karakter için kullanılır ve kullandığı alan 1 Byte’dır.

İnt : Tamsayı için kullanılır ve kullandığı alan 2 – 4 Byte’dır.

Float : Tek duyarlı gerçel sayı için kullanılır ve kullandığı alan 2 – 4 Byte’dır.

Double : Çift duyarlı gerçel sayı için kullanılır ve kullandığı alan 4 -8  Byte’dır.

Pekala burada karşınıza çıkacak olan bir ifade daha bulunmaktadır -> %d

“ %d ” integer olan bir ifadenin ekrana çıktı verilmesi adına kullanılır.

Karakter için = %c

Kısa tamsayı , tamsayı , uzun tamsayı  için =  %d

İşaretsiz tamsayı = %u

İşaretsiz uzun tamsayı = %1u

Virgüllü sayı = %f

Uzun virgüllü sayı = %1f

# Char -> Değer atarken tek tırnak kullanılarak (‘  ’) değer atanır.Örnek olarak : char a = ‘a’ ;

Dinamik Veri Tipleri :

Değişken değerlerini kullanıcı belirler.

Scanf -> Değişkenlere değer atar.

Örnek : scanf(“%d” , &sayı1);      [& : Bu operatör girilen sayıyı değişkene atar.]

Örnek olarak : float PI : 3,1423; Burada PI değeri hiç değişmeyen ve değiştirilmemesi gereken bir değerdir.

Hiç değişmemesi ya da değiştirilememesi için yapılması gereken işlem ;

Const float PI : 3,1423; olarak yapılmalıdır.

Tip Dönüşümleri :

Bu konuyu örnek bir program üzerinde göstermeye çalışacağım.

İnt bolunen = 12 ; int bolen =8 ;

Float bolum ;

Bolum = Bolunen / bölen ;

Şeklinde devam eden bir program düşünelim.

Burada işlemi çalıştırdığınızda printf fonksiyonu ile , ekranda 1 çıktısını alacaksınız.Ancak sonuç 1.5 şeklinde olmalıydı.Burada Float olan sonuç integer tipinde gözükemeyeceği için ekrana integer olarak 1 çıktısını verir.

Yapılması gereken işlem :   bolum =(float) bolunen / bölen ;   *

ifadenin başına eklenen (float) komutu çıktıyı float olarak gösterecektir.

İf-Else Yapısı :

İf yapısında  ;   koşul doğru ise komutlar çalışır ve çıkışa gider.Eğer yanlışsa direk çıkışa gider.

İf-Else yapısında ; koşul doğru ise komutlar çalışır ve çıkışa gider.Eğer yanlışsa else yapısı içindeki komutlar çalışır ve ardından çıkışa gider.

Ücretsiz full C programlama dili öğren

Switch-Case Yapısı :

Burada ‘Case’ ifadesi bir durumu bildirir.Ve her bir kod satırının sonuna ‘Break’ konulmalıdır.Son olarak ise buraya ait olan bir ifade ‘Default’ bulunmaktadır.Eğer hiçbir durum uymuyorsa kullanılır.’Else Mantığı’.

Diğer bir kullanılabilir karşılaştırma operatörü ise ;

İnt sayı = 5;

(sayı < 6 )  ? printf(….) : sayi++ ;      şeklindedir.

Burada da ifelse mantığı hakimdir.6’dan küçükse yazdırıyor , büyükse iki noktadan sonrası çalışıyor.

C Kodları Temel Özellikleri ve Detaylar ;

Burada yine önemli noktalara vurgu yapılmaktadır.

Her C programı ‘main’ fonksiyonu ile başlar.

Satır sonu ‘;’ noktalı virgül konulması zorunludur.

‘{ }’ bu parantezlerin açıldığı ve kapandığı yerler dahil açık kapalı sayılarının eşit olup olmadığını kontrol ediniz.

C dilinde büyük küçük harf farketmektedir.Dikkat ediniz.

Program açıklamalarını mutlaka yazmalısınız.Geriye dönüp baktığınızda açıklamalarla çok daha kısa sürede sorunu çözebilir hatayı görebilirsiniz.

C  Deyimleri :

Değişken ismi olarak kullanılamazlar.

Auto  / break / case / char / const / continue / default / do / double / else / enum / extern / float / for / goto / if / int / long / register / return / short / signed /  sizeof / static / struct / switch / typedef / union / unsigned / void / volatile / while

Rastgele Sayı Üretme (Rand) Komutu :

Öncelikle #include <time.h> kütüphanesi eklenmelidir.

İnt degisken = rand ();

Şeklinde kullanılır.Bu komut sürekli aynı rakamı çıktı verir.Rastgele olması adına “srand  (time(NULL))” eklenmelidir.

Belirli iki rakam arasında rastgele sayılar istiyorsak eğer , int degisken = rand () %100 ; denilerek 0 ila 100 arasında rakam çıktısı alınır.

20 ile 100 arasında rakam çıktısı almak isteseydik ,

İnt degisken = 20 + rand () % 80 ;  şeklinde kullanmamız gerekirdi.

While Döngüsü ;

Dikkat edilmesi gereken 3 aşama ;

While döngüsünde ;

1) Başlangıç değeri , 2) Koşul ve 3) Arttırma aşamaları olmalıdır.

Koşul yanlış ise çıkış verir , doğru ise komutlar çalışır ve çıkış verir.

FOR Döngüsü ;

Örnek kullanım ;

For (i=0 , i<10; i++); şeklindedir.Burada ‘i’ ifadelerinin toplamını ise “ toplam  += i “ şeklinde yapabilirsiniz.For komutunun Türkçe karşılığı ‘için’dir.

Do-While Döngüsü  ;

do {

} while ();   şeklinde kullanılır.While parantezinin içerisindeki koşul gerçekleştiğinde do { } içerisindeki ifade gerçekleşir.

Break / Continue / Goto Deyimleri ;

Break geldiğinde içinde bulunduğu döngüyü iptal eder.Break’ı iptal gibi düşünebilirsiniz.

Continue geldiğinde döngüyü sonlandırmak yerine koşula yönlendirir.Önünde bulunan ifade geldiğinde onu gerçekleştirmez yani atlar diyebiliriz.Continue’yi devam , ilerle gibi düşünebilirsiniz.

Goto kullanımı tavsiye edilmemektedir.

Diziler (Tek Boyutlu Dizi Atama);

Bir dizi atamanın birden fazla yolu bulunmaktadır.

İnt dizi [3];

Dizi [0]=1;

Dizi [1]=2;

Dizi [2]=3; şeklinde atanabilir.

İnt dizi2 [3] = {1,2,3}; şeklinde atanabilir.

İnt dizi3 [] = {1,2,3}; şeklinde atanabilir.

Örnek olarak ; printf(“1.dizinin 1. Elemanı : %d\n” , dizi[0]); şeklinde dizi elemanını gösterebilir, çıktısını alabilirsiniz.

İki Boyutlu ve Dinamik Diziler :

İnt dizi[3] ; Tek boyutlu bir dizi olarak geçmekteydi.Hemen üstte açıkladık.

İnt dizi [3] [2]; İki boyutlu bir dizi iken , int dizi [3] [2] [1] ; üç boyutlu bir dizidir.

Dinamik yapılı diziler ise ; tek bir noktadan değiştirilebilir olanlardır ve sabit olmalıdır.

Ör : #define TEKBOYUT

#define ÇIFTBOYUT    * Burada define ile sabitler tanımlanabilir.Büyük isimle tanımlanmasının sebebi ise ayırt edilebilmesini sağlamak içindir.

Örnek olarak; int dizi [TEKBOYUT] [ÇİFTBOYUT] * Define alanından değiştirilebilir dizilerdir.

String ;

Char dizi []  ; şeklinde tanımlamalar String olarak adlandırılır.String aslında harf , isimlerden oluşan yapılardır.Bir isim-soyisim vb. tanımlarken ‘String’ olarak tanımlama yapılmalıdır.

String kullandığınızda Scanf fonksiyonunda ‘&’ operandı kullanılmaz.

Fonksiyon Tanımlama :

Örnek olarak main bir fonksiyondur.Yine örnek olarak void’de bir fonksiyondur.

Void fonksiyonu geriye değer döndürmez , değer tipi dönmez.

Örnek : void isimYaz () {   şeklinde bir ifade de aslında siz bir fonksiyon yazmış oluyorsunuz.

C programlama dilinde prototipler bulunmaktadır.

Siz program içerisinde önceden programların fonksiyon prototiplerini tanımlamak zorundasınız.

Değer döndüren fonksiyona örnek verecek olursak ;  main () fonksiyonunu örnek verebiliriz.

Değer Bildirim Yerleri ve Türleri ;

Lokal ve Global olarak ikiye ayrılır.Lokal olanlar ; main içerisindeki fonksiyonu düşündüğünüzde bir alandan diğer alana ulaşılamayan durumlardır.

Global olanlar  ; main fonksiyondan daha önce tanımlananlara denilir.

 C PROGRAMLAMA DİLİ FULL ÖĞREN SONUÇ:

Bugünki yazımızda C programlama dili öğren adlı içeriği sizlerle paylaşmış bulunmaktayız.Basit seviyede olan bu bilgiler aslında C programlama dilinin de temelini oluşturmaktadır.

İyi çalışmalar.