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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.