C ve C++ programlama ders notları


Neredeyse bütün mühendislik fakültelerinde zorunlu olarak ilk sınıfta gösterilen C ve C++ için elimden geldiğince gördüğüm örnekleri toplayıp bu sene başlayacaklar ve geçemeyenler için kısa bir derleme hazırladım. Umarım yardımcı olur;



1.2 Neden C?

C Programlama Dili’ni popüler kılan önemli nedenler aşağıda listelenmiştir:
C, güçlü ve esnek bir dildir. C ile işletim sistemi veya derleyici yazabilir, kelime işlemciler oluşturabilir veya grafik çizebilirsiniz.
C, iyi bir yazılım geliştirme ortamına sahiptir.
C, özel komut ve veri tipi tanımlamasına izin verir.
C, taşınabilir bir dildir.
C, gelişimini tamamlamış ve standardı oluşmuş bir dildir.
C, yapısal bir dildir. C kodları fonksiyon olarak adlandıralan alt programlardan oluşmuştur.
C++, Java, JavaScript, JavaApplet, PHP, C#, … gibi diller C dilinden esinlenmiştir.

1.3 İlk C Programı

Program 1.1 de verilen C programı derlendikten sonra, ekrana ‘Merhaba Dünya!’ yazısını basan yalın bir C programıdır. Satır başlarına yerleştirilen 1:, 2: 3: … rakamlarının yazılmasına gerek yoktur. Bu rakamlar sadece daha sonra program ile ilgili açıklama yapılırken, ilgili satırda bulunan kodlar izah edilirken kullanılacaktır. Bu programın bilgisayarda ilk.c adı ile kaydedilmiştir.

Program 1.1: Derlendikten sonra ekrana ‘Merhaba Dünya!’ yazar
01:
02:
03:
04:
05:
06:
07:
/* ilk.c: ilk C programi */
#include

main()
{
printf(“Merhaba Dünya!\n”);
}
/* … */
Programda, 1. satırda /* … */ sembolleri görülmektedir. Bu ifadeler arasında yazılan herhangi bir metin, işlem vb. satırlar, derleyici tarafından işlenmez (değerlendirilmez). Yani /* */ ifadeleri açıklama operatörüdür.
NOT
Açıklama operatörü olarak C++ tarzı iki-bölü (//) de kullanılmaktadır. Günümüzde birçok C derleyicisi // operatörünü desteklemektedir. Bu operatörü kullanmadan önce derleyicinizin bu operatörü desteklediğinden emin olun.

/*
Bu satırlar derleyici tarafından
değerlendirilmez. Ayrıca programın C tarzı
çalışma hızını da değiştirmez.
*/

// Bu satırlar derleyici tarafından
// değerlendirilmez. Ayrıca programın C++ tarzı
// çalışma hızını da değiştirmez.


#include
2. satırdaki #include deyimi, programda eklenecek olan başlık dosyanını işaret eder. Bu örnekte verilen başlık dosyası (header file) stdio.h dir. #include ifadesi stdio.h dosyasının derleme işlemine dahil edileceğini anlatır[1]-[2]. Bu dosyalardan, Bölüm 20′de tekrar bahsedilecektir.
main()
4. satırdaki main() özel bir fonksiyondur. Ana program bu dosyada saklanıyor anlamındadır. Programın yürütülmesine bu fonksiyondan başlanır. Dolayısıyla her C programında bir tane main() adlı fonksiyon olmalıdır.
printf()
6. satırdaki printf() standart kütüphane bulunan ekrana formatlı bilgi yazdırma fonksiyondur. stdio.h dosyası bu fonksiyonu kullanmak için program başına ilave edilmiştir. Aşağıda printf() fonksiyonunun basit kullanımı gösterilmiştir.
Örnek kullanım şekli Ekranda yazılacak ifade
printf(“Element: Aluminyum”); Element: Aluminyum
printf(“Atom numarası = %d”,13); Atom numarası = 13
printf(“Yoğunluk = %f g/cm3″,2.7); Yoğunluk = 2.7 g/cm3
printf(“Erime noktası = %f derece”,660.32); Erime noktası = 660.32 derece

1.4 Başlık Dosyaları

C dilinde bir program yazılırken, başlık dosyası (header file) olarak adlandırılan bir takım dosyalar #include önişlemcisi kullanılarak program içine dahil edilir. C kütüphanesinde bulunan birçok fonksiyon, başlık dosyaları içindeki bazı bildirimleri kullanır. Bu tür dosyaların uzantısı .h dir. ANSI C’deki standart başlık dosyaları şunlardır:

assert.h locale.h stddef.h
ctype.h math.h stdio.h
errno.h setjmp.h stdlib.h
float.h signal.h string.h
limits.h stdarg.h time.h

Bir çok C derleyicisinde yukarıdakilere ek olarak tanımlanmış başlık dosyaları da vardır. Bunlar derleyicinin yardım kısmından veya derleyicinin kullanım kılavuzundan öğrenilebilir. Ayrıca Bkz. Bölüm 20

ilk.c programında kullanılan başlık dosyası stdio.h, #include ifadesi ile derleme işlemine dahil edilmiştir. stdio.h standard giriş/çıkış (STandarD-Input-Output) kütüphane fonksiyonları için bazı bildirimleri barındıran bir dosyasıdır. Programda kullanılan printf() fonksiyonunu kullanmadan önce bu başlık dosyası programın başına mutlaka ilave edilmelidir. Aksi halde derleme esnasında

undefined reference to _printf
şeklinde bir hata mesajı ile karşılaşılır.

1.5 Kaynak Kodunun Derlenmesi

C programları veya kaynak kodları (source code) uzantısı .c olan dosyalarda saklanır. Kaynak kod, bir C derleyicisi (C compiler) ile nesne koduna (object code) daha sonra uygun bir bağlayıcı (linker) programı ile işletim sistemininde çalıştırılabilen (executable) bir koda dönüştürülür. Derleme işlemi ayrıntılı olarak Bölüm 22′de anlatılmıştır. Bazı işletim sistemleri ile kullanılan C Derleyicileri ve bu derleyicilerde ilk.c programının komut satırında nasıl derleneceği Tablo 1.1′de verilmiştir. Eğer ismi geçen derleyicinin bir editörü varsa ilk.c bu editör de derlenebilir.

Tablo 1.1: İşletim sistemleri, bazı derleyiciler ve derleme komutları
İşletim Sistemi Derleyici Derleme Çalıştırma
MS-DOS / Windows Microsoft C cl ilk.c ilk.exe
Borland Turbo C Web tcc ilk.c ilk.exe
Borland C bcc ilk.c ilk.exe
Zortec C ztc ilk.c ilk.exe
GCC (GNU Compiler Collection) Windows için Web gcc ilk.c -o ilk.exe ilk.exe
UNIX / Linux GCC (GNU Compiler Collection) Web gcc ilk.c -o ilk ./ilk veya nice ilk

Bunların dışında, komut satırını kullanmadan, kodlarınızı Windows ortamında çalışan GCC tabanlı DevC++ veya Salford Plato3 derleyicileri ile derlemek mümkün. Bu tip derleyicilerde hata ayıklama işlemini kolaylaştırmak için kodlar farlı renkte gösterilir. Fakat program çıktıları için kullanılan ekran klasik DOS ekranıdır. Şekil 1.1 ve 1.2″de bu programların ekran görüntüleri verilmiştir.

Şekil 1.1: DevC++ derleyicine ait editör. Derleme ve çalıştırma işlemleri araç çubuğu üzerindeki butonlarla yapılır.

Şekil 1.2: Silverfrost Salford (Plato3) derleyicine ait editör. Derleme, bağlama ve çalıştırma işlemleri araç çubuğu üzerindeki butonlarla yapılır.

Derslerimizde kullanılan kaynak kodları, Turbo C ve GCC derleyicileri ile komutsatırında derlenmiştir. Turbo C derleyicisi isteğe bağlı editörden veya komut satırından derlenebilir. Editörü başlatmak için C:\TC> dizini altındaki TC.EXE dosyasının çalıştırılması yeterlidir. Şekil 1.3′de Turbo C editör ortamı gösterilmiştir.

Şekil 1.3: Turbo C derleyicisine ait editör. Derleme için F9, Derleme bağlama ve çalıştırma işlemleri için CTRL+F9 tuş kombinasyonu kullanılabilir..

NOT
DevC++, Salford, GCC ve Turbo C derleyicilerini C/C++ Derleyicileri
kısmında bulabilirsiniz.

ilk.c nin Borland Turbo C ve GCC Programları ile derlenmesi ve çalıştırılması:

DERLEME ve ÇALIŞTIRMA
MS DOS (Turbo C) Linux (GCC)
C:\TC> tcc ilk.c
C:\TC> ilk.exe
$ gcc ilk.c -o ilk
$ ./ilk
ilk.c nin çıktısı:

ÇIKTI

Merhaba Dünya!

1.6 C Kodlarının Temel Özellikleri

Bir C programı aşağıda verilen özellikleri mutlaka taşımalıdır.

Yazılımda kullanılacak olan her fonksiyon için ilgili başlık dosyası programın başına ileve edilmedlidir.
Her C programı main() fonksiyonunu içermelidir.
Program içinde kullanılacak olan değişkenler ve sabitler mutlaka tanımlanmalıdır.
Satırın sonuna ; işareti konmalıdır.
Her bloğun ve fonksiyonun başlangıcı ve bitişi sırasıyla { ve } sembolleridir.
C dilinde yazılan kodlarda küçük-büyük harf ayrımı vardır (case sensitive).
Örneğin A ile a derleyici tarafından farklı değerlendirilir.
Açıklama operatörü /* */ sembolleridir.

1.7 Kod Yazımı için Bazı Tavsiyeler

Program açıklamaları ve döküman hazırlama program yazıldıkça yapın! Bu unutulmaması gereken çok önemli husustur.
Değişken, sabit ve fonksiyon adları anlamlı kelimelerden seçilip yeterince uzun olmalıdır. Eğer bu isimler bir kaç kelimeden oluşacak ise, kelimeler alt çizgi ( _ ) ile ayrılmalıdır veya her kelime büyük harfle başlamalıdır. Örneğin:

int son_alinan_bit;
void KesmeSayisi();
float OrtalamaDeger = 12.7786;

Sabitlerin bütün harflerini büyük harfle yazın. Örneğin:

#define PI 3.14;
const int STATUS=0×0379;
Her alt yapıya girerken birkaç boşluk veya TAB tuşunu kullanın. Bu okunabilirliği arttıracaktır. Örneğin:

k = 0;
for(i=0; i<10; i++)
{
for(j=0; j {
do{
if( j>1 ) k = i+j;

x[k] = 1.0/k;
}while(k!=0);
}
}

Aritmetik operatörler ve atama operatörlerinden önce ve sonra boşluk karakteri kullanın. Bu, yazılan matematiksel ifadelerin daha iyi anlaşılmasını sağlayacaktır.Örneğin:

h_max = pow(Vo,2) / (2*g);
Tf = 2*Vo/g;
Vy = Vo – g*t;
y = Vo*t – (g*t*t)/2.0;
z = ( a*cos(x) + b*sin(x) )*log( fabs(y) );

Program bittikten sonra tekrar tekrar programınızı inceleyerek, programınızı daha iyi şekilde yazma yollarını arayın ve aynı fonksiyonları daha kısa algoritmalarla ve/veya daha modüler şekilde elde etmeye çalışın.

//Sayı çift mi, tek mi?
#include<stdio.h>
int main()
{
int x;
printf(“bir sayi girin efem”);
scanf(“%d”, &x);
if(x%2==0)
{
printf(“sayi cift abi”);
}
else
{
printf(“sayi tek baskan :/”);
}
return 0;
system(“pause”);
getch(0);
}

//İki sayinin toplamı

#include <stdio.h>

int main()
{
int toplam,a,b;

printf(“Iki sayi girin : “);
scanf(“%d %d”,&a,&b);

/* fonksiyon çağırılıp, a ve b değerleri parametre olarak aktarılıyor.
topla(a,b) = a + b değeri toplam değişkenine atanması */
toplam=a+b;
printf(“%d ve %d nin toplami %d dir.\n”, a,b,toplam);

return 0;
}

//İki sayının büyük ya da küçük olduğunu bulma

// Bunun için #define çağrısına ihtiyacımız vardır;

#include <stdio.h>

#define buyuk(a,b) ( (a>b) ? a:b)

int main()
{
int x,y,eb;

printf(“iki sayı girin: “);
scanf(“%d,%d”,&x,&y);

eb = buyuk(x,y);

printf(“buyuk olan %d\n”,eb);

return 0;
system(“pause”);

gibi örnekler çoğaltılabilir, daha fazla örnek ve açıklamayı C sayfamızda bulabilirsiniz.

C++

C++ Nedir

C++ bilindiği gibi programlama dünyasında en çok ilgi gören C dilinden türemiştir. C++’ı klasik C dilinden farklı yapan yanı; Nesne Yönelimli Programlamayı da ( Object Oriented Programming) C’nin sözdizimi kurallarıyla birlikte desteklemesidir. Normalde C ile sadece yapısal programlama yaparken C++ dili ile hem yapısal hem de nesne yönelimli programlar yazabilirisiniz. C++ diline başlarken önce dilin C’den gelen ve temel olan özelliklerini öğrenmek gerekir. Örneğin, değişken tanımlama, atama ve diğer basit aritmektik işlemler, kontrol yapıları ve döngüler gibi.
Teknolojinin ulaştığı son noktadaki programlama dillerinden olan C ve C++, bir çok yeni ve güçlü özellikleri içerir. C++ önceden de dediğimi gibi C’nin üst grubudur arkadaşlar.

Değer döndüren fonksiyonlar

Bu dersimizde değer döndüren fonksiyonları işleyeceğiz;

“//” şeklinde consoleda yazılan karakterden sonra gelen yazılar açıklamadır ve derleyici bunları okumaz. Bu yüzden sonradan unutacağınız düşündüğünüz şeyleri bu şekilde not alabilirsiniz. Ben de programı yazarken anlamadığınız yerler için bu şekilde açıklama yaptım.

#include < iostream >
#include < string >
using namespace std;
double ali(int x, double y);
double ali(int x, int y);

int main()
{
int a=3,b=15;
double c=4.5;
//ali fonksiyonu double tipindedir ve int ve double tipinde
//2 formal parametresi vardır.
//a) Overloading özelliğine sahip fonksiyonu
//yine 2 parametreli olarak tanımlayım.
//b) Overloading özelliği taşıyan fonksiyonları
//birer defa çağırın.

//değer döndüren fonksiyon çağrı şekli I
double z=ali(a,c); //gercek parametre
cout <<z<<endl;< p=””>

//değer döndüren fonksiyon çağrı şekli II
cout <<ali(a,b);< p=””>

}
double ali(int x, double y)//formal parametre

{
return x+y/2*5;

}
double ali(int x, int y)
{
double z= static_cast(y)/2;
return z;
system(“pause”);
}

Hacim ve diğer matematiksel değerler:

#include<iostream>
#include<string>
using namespace std;
void hacim(int uzunluk, int yukseklik=1,int genislik=1);
int main()
{
//kutunun hacmi 3 parametreli hacim isimli fonksiyon ile
//hesaplanacaktır.
//kutunun yüksekliği bilinmiyorsa değeri 1 olarak alınacaktır.
//kutunun yüksekliği ve genişliği bilinmiyorsa
//değerleri 1 olarak alınacaktır.
//3 farklı şekilde varsayımsal parametrelere göre
//irdeleyerek çağırın.
int a=3,b=2,c=4;
hacim(a,b,c);

cin>>a>>b;
hacim(a,b);
int x;
cin>>x;
hacim(x);

}
void hacim(int uzunluk, int yukseklik, int genislik)
{
cout<<uzunluk*yukseklik*genislik<<endl;
}

Daha fazla bilgi C++ sayfamızı ziyaret edebilirsiniz. Zamanım oldukça daha fazla örnekler sunup, güncellemeye çalışacağım. Ortalamaya gerek duymadığınız bir yıl dileğiyle.

Bunlar da ilginizi çekebilir

Gitmeden yorumunuzu bırakın.


Time limit is exhausted. Please reload the CAPTCHA.