List

C PROGRAMLAMA DİLİ DEITEL KITABI FULL INCELEME YAZISI -1

Bilgisayar nedir ? Yüksek Seviyeli diller nedir ? C ile programlamaya giriş nedir ? Hafıza konuları , C dilinde aritmetik vb. her başlığa yer verdiğimiz bu yazımızda sizlere C dilini tamamen tanıtmak ve anlatmak istiyoruz.

 

C PROGRAMLAMA DEITEL KITABI INCELEME YAZISI -1

 

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.

Ö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İ DEITEL KITABI FULL INCELEME YAZISI -1 SONUÇ :

Bugünki yazımızda sizlere C Programlama dili deitel kitabı full inceleme yazısı ile bu incelemenin ilk bölümünü yayımlıyoruz.C diline ait her parametreyi öğrenmek adına başladığımız bu yazımızda umuyoruz sizlere faydalı olabiliriz.

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.