1. C dili ile programlama Turgay ERBAY 1
D?L? ?LE
PROGRAMLAMA
Turgay ERBAY
T¨¹rk Telekom
Siber G¨¹venlik Uzman?
C
2. C dili ile programlama Turgay ERBAY 2
Kaynak:
? T¨¹m bilgiler taraf?mdan
girilmi? olup
kopyalanmas? taraf?mdan
izin al?nmad??? s¨¹rece
yasakt?r.
3. C dili ile programlama Turgay ERBAY 3
?zel Birebir Ders ??in ?rtibata
Ge?iniz...
? Facebook: http://www.facebook.com/bitlizade/
? E-Mail: turgayerbay@programmer.net
turgayerbay@outlook.com
? GMS: 0(543) 946 99 87
4. C dili ile programlama Turgay ERBAY 4
Konular:
1. Genel Bilgiler
2. De?i?kenler ve Veri Tipleri
3. Operat?rler
4. Program Deyimleri: if-then-else, for, do-while, switch-case
5. Fonksiyonlar
6. Stringler
7. G?stericiler (Pointers)
8. Diziler
9. ?ni?lemci komutlar?
10. Yap?lar
11. Kitapl?k Fonksiyonlar?
12. Dosya ??lemleri
5. C dili ile programlama Turgay ERBAY 5
1.B?l¨¹m
Genel Bilgiler
6. C dili ile programlama Turgay ERBAY 6
Genel Bilgiler
? C, ilk olarak 1972¡¯de Unix i?letim sisteminin
sistem dili olarak kullan?lmaya ba?land?.
? Dennis M. Ritchie, C¡¯yi Bell Laboratuaries¡¯de
geli?tirilen B diline kar?? tasarland?.
? B dilinden sonra geldi?i i?in C ad?n? alm??t?r.
? C¡¯yi g¨¹?l¨¹ ve esnek yapan ?zellikler: pointers,
dinamik bellek kullan?m?, adres aritmeti?i..
? Veri tipleri: char, int, float, void
7. C dili ile programlama Turgay ERBAY 7
Genel Bilgiler
? Her C program?nda en az bir main fonksiyonu
bulunur.
main()
{
komutlar; blok
}
8. C dili ile programlama Turgay ERBAY 8
Genel Bilgiler
? C derleyicilerinde baz? i?lemleri yapan haz?r fonksiyonlar
vard?r. Bunlara kitapl?k fonksiyonlar? denir.
printf(¡°Merhaba !..¡±);
arg¨¹man
? Kitapl?k fonksiyonlar? ile ilgili bilgilerin bulundu?u
dosyalar vard?r. Bunlara ba?l?k dosyalar? denir.
#include <stdio.h>
9. C dili ile programlama Turgay ERBAY 9
C Dilinin Temel ?zellikleri
? Program yaz?m? belirli kal?pta, bloklar halinde olur.
? Bloklar { } parantezleri ile olu?turulur.
? Komutlar ayn? sat?ra veya alt alta yaz?labilirler.
? T¨¹m komutlar noktal? virg¨¹l ¡°;¡± ile biter. Yaln?zca blok
ba?latan ifadelerden sonra ¡°;¡± kullan?lmaz.
? Programda kullan?lan t¨¹m de?i?kenler ve bilgi tipleri
tan?mlan?r.
? Programda kullan?lacak olan komutlar?n bulundu?u
k¨¹t¨¹phaneler ?a?r?l?r.
10. C dili ile programlama 10
?rnek Kod
-----------------------------------------------------------------------------------------------
/* giris1*/
#include <stdio.h>
main()
{
printf(¡°C programlamaya ho?geldiniz.¡±);
}
-----------------------------------------------------------------------------------------------
/* giris2*/
#include <stdio.h>
main()
{
printf(¡°C programlamaya ho?geldiniz, n¡±);
printf(¡°??renelim.¡±);
}
-------
Turgay ERBAY
-
-
------------- --------------------
-
11. C dili ile programlama Turgay ERBAY 11
Bellek D¨¹zeni ve Adresleme
? 1 byte = 8 bit -> 0101 0011
? 1 word =2 byte
? Bellekte her byte¡¯?n bir adresi vard?r. 1 word
bellekte 2 byte yer kaplar.
? 1526H say?s?
adres Bellek
0012FF70 00011010 26
0012FF71 00001101 15
12. C dili ile programlama Turgay ERBAY 12
Bir Program Olu?turma
1. ?nce bir edit?r ile kaynak dosya olu?turulur.
Uzant?s? .c olarak diske kaydedilir.
2. Program Compiler (derleyici) ile derlenir.
Derleyici C dilinde yaz?lan program? makine
diline ?evirir, .obj uzant?l? bir dosya olu?ur.
3. Linking i?lemi ba?lar. Derlenen programa
kitapl?k fonksiyonlar? veya ?nceden
programc? taraf?ndan yaz?lm?? ve derlenmi?
fonksiyonlar nesne dosyas?na eklenerek
. exe uzant?l? dosyalar olu?ur.
13. C dili ile programlama Turgay ERBAY 13
Program olu?turma s¨¹reci
14. C dili ile programlama Turgay ERBAY 14
?nemli C dosyalar?
? Header (Ba?l?k) dosyalar?: uzant?s? .h olan
dosyalar include alt dizininde bulunurlar.
Kitapl?k fonksiyonlar?n?n prototipleri bu
dosyalarda bulunur.
? Kitapl?k dosyalar?: Uzant?s? .lib olan bu
dosyalar daha ?nce derlenmi? ve belirli
i?levleri olan dosyalard?r. Linker bu dosyalar?
derlenecek olan ana programa otomatik
olarak ekler.
15. C dili ile programlama Turgay ERBAY 15
Program Yazma ve
?al??t?rma
MS Visual Studio Visual C++
16. C dili ile programlama ??r. G?r. Serkan KORKMAZ 16
Visual C++ (v6)
17. C dili ile programlama ??r. G?r. Serkan KORKMAZ 17
Visual C++ (v6)
Yeni.. Ctrl+N
18. C dili ile programlama ??r. G?r. Serkan KORKMAZ 18
Visual C++ (v6)
Se?: ¡°Win32 Console
Application¡±
Project ve dosya
dizini
Proje ba?l???
(name of .exe)
19. C dili ile programlama ??r. G?r. Serkan KORKMAZ 19
Visual C++ (v6)
20. C dili ile programlama ??r. G?r. Serkan KORKMAZ 20
Visual C++ (v6)
Yeni kaynak dosya
projeye eklenmi? olacak
21. C dili ile programlama ??r. G?r. Serkan KORKMAZ 21
Visual C++ (v6)
Se?: ¡°c++
kaynak dosya¡±
uzant?s? .c olan
bir kaynak
dosya ad? gir
22. C dili ile programlama ??r. G?r. Serkan KORKMAZ 22
Visual C++ (v6)
Program? bu b?l¨¹me yaz
23. C dili ile programlama ??r. G?r. Serkan KORKMAZ 23
Visual C++ (v6)
C dosyas?n? Derle
24. C dili ile programlama ??r. G?r. Serkan KORKMAZ 24
Visual C++ (v6)
Build an
executable (.exe)
file.
25. C dili ile programlama ??r. G?r. Serkan KORKMAZ 25
Visual C++ (v6)
?al??t?r?labilir dosyay? ?al??t?r (.exe).
Bu i?lem se?ildi?inde, derleme i?lemi
tamamlanmam??sa, program yeniden
derlenecektir.
Hata ve uyar? mesajlar?
bu b?l¨¹mde g?r¨¹l¨¹r
26. C dili ile programlama ??r. G?r. Serkan KORKMAZ 26
Visual C++ (v6)
DOS komut
sat?r?nda
program ??kt?s?.
27. C dili ile programlama ??r. G?r. Serkan KORKMAZ 27
Visual C++ (v6)
Daha ?nce
olu?turulmu?
bir proje a?.
28. C dili ile programlama ??r. G?r. Serkan KORKMAZ 28
Visual C++ (v6)
29. C dili ile programlama Turgay ERBAY 29
?rnek Kod
----------------------------------------------------------------
/* giris1*/
#include <stdio.h>
main()
{
printf(¡°C programlamaya ho?geldiniz.¡±);
getch();
}
-----------------------------------------------------------------
/* giris2*/
#include <stdio.h>
main()
{
printf("C programlamaya hosgeldiniz, n");
printf("ogrenelim.");
getch();
}
-----------------------------------------------------------------
30. C dili ile programlama Turgay ERBAY 30
?rnek Kod
--------------------------------------------------------
/* toplam.c */
/* 1¡¯den 100¡¯e kadar olan say?lar?n toplam?n? bulur. */
#include <stdio.h>
#include<conio.h>
int i,toplam;
main()
{
toplam=0;
for(i=1;i<=100;i++)
{
toplam=toplam+i;
}
printf("toplam:%dn",toplam);
getch();
}
--------------------------------------------------------
31. C dili ile programlama Turgay ERBAY 31
?rnek Kod
--------------------------------------------------------
/* enbuyuk.c */
/* Girilen 3 say?n?n en b¨¹y¨¹?¨¹n¨¹ bulur. */
#include<stdio.h>
#include<conio.h>
int a,b,c,buyuk;
main()
{
printf("a sayisini giriniz:");
scanf("%d",&a);
printf("n");
printf("b sayisini giriniz:");
scanf("%d",&b);
printf("n");
printf("c sayisini giriniz:");
scanf("%d",&c);
printf("n");
buyuk=a;
if(buyuk<b) buyuk=b;
if(buyuk<c) buyuk=c;
printf("buyuk sayi %dn",buyuk);
getch();
}--------------------------------------------------------
32. C dili ile programlama Turgay ERBAY 32
Hatalar?n Bulunmas?
? Syntax Hatalar?:
? Mant?ksal Hatalar:
33. C dili ile programlama
Turgay ERBAY
33
Hata yakalama
By double clicking on the error
message, you can go to the line
containing the error.
There is a variable
which is forgotten to
be declared before
used.
34. C dili ile programlama Turgay ERBAY 34
Hatalar?n Bulunmas? (Debugging)
Add an integer
variable with
name ¡°a¡±
35. C dili ile programlama Turgay ERBAY 35
Ba?lay?c? Hatalar? (Linker errors)
A function with name
¡°print¡± is not defined.
36. C dili ile programlama Turgay ERBAY 36
The correct one
should be printf
37. C dili ile programlama Turgay ERBAY 37
?al??ma Zaman? Hatas?
Execution error
38. C dili ile programlama Turgay ERBAY 38
The correct usage of
printf for writing
out numbers
39. C dili ile programlama Turgay ERBAY 39
2. B?L?M
De?i?ken ve
Veri Tipleri
40. C dili ile programlama Turgay ERBAY 40
De?i?ken
? De?i?ken, farkl? de?erler alabilen verilerin sakland??? bellek
h¨¹cresini tan?mlayan simgesel bir isimdir.
? De?i?kenler kullan?lmadan ?nce tan?mlan?r. De?i?kenin
saklayaca?? verinin tipi belirlenir. B?ylece de?i?kenin
saklayaca?? verinin boyutuna g?re bellekte yer tahsis edilir.
a=b+c;
? int i;
? char a;
? long x;
adres Bellek
0012FF70 26 a
0012FF71 15 b
0012FF72 11 c
41. C dili ile programlama Turgay ERBAY 41
Temel de?i?ken tipleri
char Tek bir karakter saklamak i?in, bellekte 1 byte yer
kaplar.
256
-128, +127
int Tamsay?lar i?in kullan?l?r, bilgisayar?n i?lemcisine
ba?l? olarak bellekte 2 veya 4 byte yer kaplar
65536
-32768, -32767
float Tek duyarl? ger?el say? 4 byte ¡À 1.7x10-39
¡À 1.7x1038
double ?ift duyarl? ger?el say? 8 byte ¡À 1.7x10-308
¡À 1.7x10308
long 4 byte 4.294.967.296
bool True ve false de?erini al?r. Say?sal olarak, 0 false ve
harici herhangi bir say? ise true olarak nitelendirilir.
2
enum Kullan?c? taraf?ndan sabit bir dizi tan?mlanmas?na
olanak sa?lar ve bu s?ral? listenin herhangi bir
eleman?n?n s?ra numaras?n? belirlemeye olanak sa?lar.
42. C dili ile programlama Turgay ERBAY 42
De?i?ken ?simlendirme Kurallar?
? C'de isimlendirme, ?ngiliz Alfabesinin k¨¹?¨¹k ve b¨¹y¨¹k
harflerinden, rakamlardan ve alt ?izgi _ karakterinden
yararlan?l?r. ?zel karakterler ve T¨¹rk?e karakterler
?¨¹?????????? kullan?lmaz.
? C'de, k¨¹?¨¹k harfler ile b¨¹y¨¹k harfler birbirinden farkl?d?r.
? ?smin ilk karakteri bir harf veya _ alt?izgi olmal?d?r.
? ?lk karakter say? olamaz.
? De?i?ken ismi 32 karakteri a?amaz.
? C i?in ayr?lm?? s?zc¨¹kler programc? taraf?ndan tekrar isim
olarak kullan?lamaz.
43. C dili ile programlama Turgay ERBAY 43
Anahtar S?zc¨¹kler
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
? Bu s?zc¨¹kler k¨¹?¨¹k harflerden olu?ur.
De?i?ken ve fonksiyonlar i?in ad olarak
kullan?lmazlar.
44. C dili ile programlama Turgay ERBAY 44
Yerel ve Global De?i?kenler
? Yerel bildirim: Yerel de?i?kenler kullan?ld??? fonksiyonun
i?inde bildirilirler, sadece bildirildi?i fonksiyon i?erisinde
tan?n?r ve kullan?l?rlar.
? Genel bildirim : Bir de?i?ken b¨¹t¨¹n
? program boyunca s¨¹rekli
olarak kullan?l?yorsa , genel olarak
bildirilmelidir. Global de?i?ken b¨¹t¨¹n
fonksiyonlar?n d???nda bildirilir.
? De?i?kenlere ilk de?er verilmesi:
char kr=¡®A¡¯, z=66, y;
int m=0, n=0;
float f=12.345, sonuc;
int a,b;
void karesi( );
main( )
{
a=3;
karesi( );
printf("%d nin karesi=%d
dir",a,b);
}
void karesi( )
{
b=a*a;
}
45. C dili ile programlama Turgay ERBAY 45
Sabitler
? Program?n ?al??t??? s¨¹re i?inde de?eri de?i?meyen
ifadelerdir. Farkl? tipte tan?mlanm?? de?i?kenler
oldu?u gibi farkl? tipte sabitler de tan?mlanabilir. C¡¯de
sabitler iki ?ekilde tan?mlan?r:
? const anahtar s?zc¨¹?¨¹ ile:
const int EOF=-1;
const float pi=3.142857;
const char[]=¡°Merhaba¡±;
? #define ?ni?lemci komutuyla
#define MAX 100
#define TRUE 1
#define PI 3.141592
46. C dili ile programlama Turgay ERBAY 46
??aretli ve ??aretsiz say?lar
? Temel veri tipleri i?aretli kabul edilir.
? unsigned tipi sadece char ve int tipleri ile
birlikte kullan?l?r.
unsigned char:
unsigned int :
unsigned long int:
47. C dili ile programlama ??r. G?r. Serkan KORKMAZ 47
De?i?ken
T¨¹rleri
De?i?ken Tipleri Kaplad??? Alan En D¨¹?¨¹k De?eri En Y¨¹ksek De?eri
T
E
M
E
L
D
E
?
?
?
K
E
N
L
E
R
T
A
M
S
A
Y
I
char (signed char)
1 byte -128 127
int (signed veya signed int) 2 byte -32 768 32 767
unsigned char 1 byte 0 255
unsigned int (unsigned) 2 byte 0 65.532
short (short int) 2 byte -32 768 32 767
signed short int (signed short) 2 byte -32 768 32 767
unsigned short int (unsigned short) 2 byte 0 65.535
long (long int) 4 byte -2.147.483.648 2.147.483.647
signed long int (signed long) 4 byte -2.147.483.648 2.147.483.647
unsigned long int (unsigned long) 4 byte 0 4.294.967.296
G
E
R
?
E
L
S
A
Y
I
float 4 byte
¡À 1.7x10-39 ¡À 1.7x1038
long float (double) 8 byte
¡À 1.7x10-308 ¡À 1.7x10308
double 8 byte
¡À 1.7x10-308 ¡À 1.7x10308
long double 10 byte
¡À 1.7x10-4933 ¡À 1.7x104933
Karaktersel const const enbuyuk=100;
Yap?sal void void (void) Bo? veri tipi
48. C dili ile programlama Turgay ERBAY 48
Say?lar?n G?r¨¹nt¨¹lenmesi
? Karakter ve say?lar? ekranda g?r¨¹nt¨¹lemek i?in printf()
fonksiyonu kullan?l?r.
printf(¡°sayi=%dn¡±,20);
---------------------------------
/* veri1.c*/
#include <stdio.h>
void main()
{
char ch;
float x; double y;
ch=¡®A¡¯;
x=120.53; y=34.21646;
printf(¡°%sn¡±, ¡°Bu bir
denemedir.¡±);
printf(¡°ch=%c dir n¡±,ch);
printf(¡°x=%f,y=%f dir.n¡±,x,y);
getch();
}
Belirteci tip
%c char
%d int
%u unsigned
%f float, double
%s string
%e ¨¹stel
%x 16¡¯l?
%o 8¡¯li
%ld long int
%lf long double
49. C dili ile programlama Turgay ERBAY 49
?zel Sabitler
Sabit Ad? 16-l? anlam?
¡®n¡¯ LF 0x0a sat?r ilerletir
¡®t¡¯ HT 0x09 tab
¡®b¡¯ BS 0x08 geri bo?luk
¡®r¡¯ CR 0x0d geri d?n¨¹?
¡®0¡¯ Null 0x00 NULL
¡®a¡¯ BEL BEL Bip sesi
¡°xdd¡± dd 0xdd 16-l? ascii kodu
? Sabitler ?zel karakterlerdir. Tablodaki 0xdd ifadesindeki dd 00-FF aras?nda bir
de?erdir. ?rne?in, x24 karakteri ,ascii kodu 24 olan $ karakterini ifade eder.
printf(nsabittascii adin¡±);
printf(¡°-----tt--------n¡±);
printf(¡°yanlis tusa bast?n?zan¡±);
printf(¡°x41¡±);
50. C dili ile programlama Turgay ERBAY 50
Tip De?i?tirme
? C¡¯de farkl? bir tipte tan?mlanm?? bir de?i?kenin
tipi kullan?m esnas?nda ba?ka bir tipe
d?n¨¹?t¨¹r¨¹lebilir.De?i?kenin ?n¨¹ne
de?i?tirece?imiz tipin ad? yaz?l?r.
int a;
(float) a;
?rn sf:21
51. C dili ile programlama Turgay ERBAY 51
Veri Giri?i
? C¡¯de temel veri giri? fonksiyonu
scanf()fonksiyonudur. Klavyeden girilen veriyi
okumada kullan?l?r.
? De?i?kenler belle?in bir alan?na verilen isimdir. Bu
ismin kar??l?k olarak bellekte bir adres bulunur.
? De?i?ken tan?mland???nda int x; ¡°&¡±
operat?r¨¹ ile adres de?eri bulunabilir.
? &x yaz?ld???nda x de?i?keninin adresi manas?na gelir.
? Adres belirteci %p dir.
? Tek Karakter Giri?i:
getchar();
putchar();
getche();
52. C dili ile programlama Turgay ERBAY 1
D?L? ?LE
PROGRAMLAMA
??r. G?r. Serkan KORKMAZ
Harran ?niversitesi
Birecik Meslek Y¨¹ksekokulu
C
53. C dili ile programlama Turgay ERBAY 2
3. B?L?M
Operat?rler
54. C dili ile programlama Turgay ERBAY 3
Operat?rler
? Bir i?lem belirleyen karakter veya karakterler grubuna operat?r denir.
Operat?rler mikroi?lemcinin bir i?lem yapmas?na neden olurlar ve bu
i?lem sonunda da bir de?er ¨¹retilmesini sa?larlar.
? Programlama dillerinde tan?mlanm?? olan her bir operat?r en az bir
makine komutuna kar??l?k gelmektedir.
? C¡¯de i?leme giren elemanlar, 1¡¯den 3¡¯e kadar de?i?en say?da olabilir.
? a) Tek elemanl? i?lemler
? b) ikili i?lemler
? c) ¨¹?l¨¹ i?lemler
? ?rne?in toplama i?lemcisi ikili bir i?lem belirler, i?leme giren
elemanlar a ve b ise a+b yaz?l?r.
? c = a * b / 2 + 3 /* 4 operat?r vard?r ifadedeki s?ras?yla =, *, /, + */
? ++x * y-- /* 3 opera?r vard?r, ifadedeki s?ras?yla ++, *, -- */
? a >= b /* 1 operat?r vard?r. >= */
55. C dili ile programlama Turgay ERBAY 4
Operat?rler
? C dilinde farkl? i?lem belirleyen operat?rler
?unlard?r:
? Aritmetik operat?rler
? Artt?rma ve azaltma operat?rleri
? Atama operat?rleri
? Kar??la?t?rma operat?rleri
? Mant?ksal operat?rler
? Bitler ¨¹zerinde i?lem yapan operat?rler
? Adres (pointer) operat?rleri
? sizeof operat?r¨¹
? Operat?rlerin ?ncelikleri
56. C dili ile programlama Turgay ERBAY 5
Aritmetik Operat?rler
? De?i?kenler veya sabitler ¨¹zerinde temel aritmetik
i?lemleri ger?ekle?tiren operat?rlerdir. Bunlar di?er
programlama dillerinde ayn? olan temel aritmetik
operat?rleridir.
? Art?k b?lme operat?r¨¹ (%) tamsay? ve de?i?kenlerde
kullan?l?r g?revi; b?lme i?lemi sonunda kalan?
hesaplamakt?r.
+ toplama
- ??karma
* ?arpma
/ b?lme
% art?k b?lme(mod)
57. C dili ile programlama Turgay ERBAY 6
Tekli i?lemler
? Yaln?zca tek de?i?kenlere uygulan?rlar..
? ?rnek:
i = +1; /* + tek operat?r olarak kullan?lm?? */
j = -i; /* - tek operat?r olarak kullan?lm?? */
? Tek bir + say?n?n pozitif oldu?unu g?sterir.
(mutlak).
? Tek bir ¨C say?y? negatif yapar, de?i?kenin
ne gatif oldu?unu g?sterir.
58. C dili ile programlama Turgay ERBAY 7
Artt?rma ve Azaltma
Operat?rleri
? Artt?rma (++) ve azaltma (- -) operat?rleri tek bir de?i?ken
¨¹zerinde i?lem yaparlar ve tamsay? de?i?kenlerde
kullan?ld???nda bir azaltma ve bir artt?rma i?lemini
ger?ekle?tiriler.
? E?er bu operat?rler karakter de?i?kenleri ile kullan?l?yorsa;
?rneyin i?eri?i m='A' olan bir karakteri m++ ile i?eri?ini
artt?racak olursak m='B' olur.
A++ ?nce A'y? kullan, sonra A'y? 1 artt?r
++A ?nce A'y? 1 artt?r, sonra A'y? kullan
A - - ?nce A'y? kullan, sonra A'y? 1 eksilt
- - A ?nce A'y? 1 eksilt, sonra A'y? kullan
59. C dili ile programlama Turgay ERBAY 8
Artt?rma ve Azaltma
Operat?rleri
? Bu operat?rler bir atama i?lemiyle (=) birlikte kullan?l?rsa, de?i?kenin
?n¨¹nde yada arkas?nda olmas? ?nemlidir.
? ?rnekte; a,b,c,d,e tamsay? de?i?kenlerdir.
Ekran ??kt?lar? : a=3, d=3, ve e=2 olur.
main( )
{
int a=2, b=2, c=2, d, e;
a++; /* a=a+1 anlam?ndad?r */
d=++b; /* ?nce b=b+1 sonra d=b */
e=c++; /* ?nce e=c sonra c=c+1 */
printf("%d,%d,%d",a,d,e);
}
60. C dili ile programlama Turgay ERBAY 9
?rnekler
int k=0, m;
m = ++k;
m, 1 olur
K, 1 olur
int k=0, m;
m = k++;
m, 0 olur ve
k, 1 olur
int k=5, m, n=2;
m = --k + n;
m, 6 olur ve
k, 4 olur
int k=0, m, n=7;
m = k++ + --n;
m, 6 olur,
k, 1 olur, ve
n, 6 olur
61. C dili ile programlama Turgay ERBAY 10
?rnek
#include <stdio.h>
main()
{
int a=5,b=6;
printf(¡°%d ¡±,a++);
printf(%dn¡±,a);
printf(¡°%d %dn¡±,a++,b);
printf(¡°%d ¡±,a--);
printf(%dn¡±,a);
printf(¡°%d n¡±,++a);
printf(%dn¡±,a);
}
??kt?:?
62. C dili ile programlama Turgay ERBAY 11
Atama Operat?r¨¹
? Atama operat?rleri bir de?i?kene, bir sabit
(bu bir ba??nt?n?n sonucu ya da do?rudan
sabit bir de?er olabilir) e?itlemek i?in
kullan?l?r.?rne?in bir tamsay? de?i?kene
100 say?s? atanmas? i?in;
? int sayi;
sayi = 100;
? deyim1 = deyim2 operat?r deyim3
? saya? = a + b;
ortalama = ortalama / 2;
? deyim1 operat?r = deyim2
ortalama /= 2;
? B¨¹t¨¹n operat?rler basit atama operat?r¨¹yle
birlikte kullan?lmaz; ge?erli olan biti?ik
atama operat?rleri yandaki ?izelgede
verilmi?tir.
Atama Operat?rleri
+= ekleyerek atama
-= ??kararak atama
*= ?arparak atama
/= b?lerek atama
%= b?l¨¹p, kalan?n? atama
<<= sola ?teleyerek atama
>>= sa?a ?teleyerek atama
&= bit d¨¹zeyinde VE 'leyerek atama
|=
bit d¨¹zeyinde VEYA'layarak
atama
^=
bit d¨¹zeyinde YA DA'layarak
atama
=~ bit d¨¹zeyinde t¨¹mleme ve atama
63. C dili ile programlama Turgay ERBAY 12
d -= 4 (d = d - 4)
e *= 5 (e = e * 5)
f /= 3 (f = f / 3)
g %= 9 (g = g % 9)
? e?er i de?eri 5 olsa ;
printf( "%d", ++i );
Ekrana 6 de?eri yazar
printf( "%d", i++ );
Ekrana 5 de?eri yazar
? Her iki durumda da kod i?letildikten sonra i
de?i?keninin de?eri 6 olur.
64. C dili ile programlama Turgay ERBAY 13
Aritmetik ifadeler ve operat?rler
i=3;
i=i+1;
j=i+5;
j=j-1;
i++;
j--;
++j;
--i;
j=i++;
i=++j;
j=--i;
i=--j;
j=j+2;
j+=2;
i=i*2;
i*=2;
i=j%3;
j=(i+3)/2;
Ak??:
i=(int) x;
x=(double) (i+j);
c=(char) (x);
k=(long) (c+i);
NOT: ¡®=¡® atama i?lemidir.
Fark: Atama m? artt?rma
i?lemimi ?nce yap?l?r?
65. C dili ile programlama Turgay ERBAY 14
?rnek
? A?a??daki kodda de?i?kenler ve de?erleri hakk?nda fikir
y¨¹r¨¹t¨¹n. ?lk olarak elle i?letin daha sonra bilgisayarda
deneyin.
int i, j, k;
i = 2;
j = 3 + i++;
k = 3 + ++i;
i *= ++k + j--;
i /= k-- + ++j;
66. C dili ile programlama Turgay ERBAY 15
Kar??la?t?rma Operat?rleri
? Say?sal de?erleri yada karakterleri
kar??la?t?rmak i?in kullan?l?rlar. C dilinde
kar??la?t?rma operat?rleri string
karakterleri i?in kullan?lmazlar.
? String karakterlerinin kar??la?t?r?lmas?
i?in standart k¨¹t¨¹phanede strcmp( ) ve
buna benzer bir?ok fonksiyon vard?r.
? Kar??la?t?rma sonucu do?ru (true) ya da
yanl?? (false) ??kt???nda ko?ul do?ruysa
olumlu varsay?larak, ko?ul sonunda
istenenler yerine getirilir.
? Yanl?? ise olumsuz varsay?l?r ve
istenenler atlan?r.
Kar??la?t?rma operat?rleri
> b¨¹y¨¹k m¨¹ ?
>= b¨¹y¨¹k veya e?it mi ?
< k¨¹?¨¹k m¨¹ ?
< k¨¹?¨¹k m¨¹ ?
<= k¨¹?¨¹k veya e?it mi ?
== e?it mi ?
! = farkl? m? ?
67. C dili ile programlama Turgay ERBAY 16
Kar??la?t?rma
? E?er e?irsizlik mant?ksal olarak do?ru ise 1
de?eri d?nd¨¹r¨¹r.
1 < 2
0 > 1
42 <= 42
yas >= 18
68. C dili ile programlama Turgay ERBAY 17
E?it mi
1 == 2
1 == 0
42 == 42
de?i?ken1 == ba?kade?i?ken
0 == 0
? E?er iki taraf da ayn? ise ¡°do?ru¡± sonucu verir.
69. C dili ile programlama Turgay ERBAY 18
E?it de?il
1 != 2
1 != 0
42 != 42
a != de?i?ken
? Her iki taraf farkl? ise sonu?ta ¡°do?ru¡±
de?er verir.
70. C dili ile programlama Turgay ERBAY 19
?rnek
#include<stdio.h>
main()
{
int a=2,b=3;
printf(¡°%d%d%d%d%d%d¡±,a<b,a<=b,a!=b,a==b
,a>b,a>=b);
}
??kt?:?
71. C dili ile programlama Turgay ERBAY 20
Mant?ksal operat?rler
? Birden fazla ko?ul s?nanmak istendi?inde bunlar?n
birle?tirilip tek bir ko?ul durumuna getirilmesi gerekir.
B?yle durumlarda mant?ksal operat?rler kullan?l?r.
Di?er bir deyi?le, mant?ksal operat?rler birden ?ok
ko?ulun birle?tirilmesi veya ko?ulun t¨¹mleyenini
almak i?in kullan?l?r.
Mant?ksal operat?rler
&& VE AND
| | VEYA OR
! DE??L NOT
72. C dili ile programlama Turgay ERBAY 21
And
1 && 2
1 && 0 && -1
a && b == 0 && c != 2
B¨¹t¨¹n de?erler 0¡¯dan farkl? olmal?d?r.
73. C dili ile programlama Turgay ERBAY 22
Or
1 || 2
1 || 0 || -1
a || b == 0 || c != 2
En az bir de?er 1 olmal?d?r.
74. C dili ile programlama Turgay ERBAY 23
Not
? Do?ru de?eri yanl??a yanl?? de?eri do?ruya
?evirir.
!1
!0
!de?i?ken
75. C dili ile programlama Turgay ERBAY 24
?rnek
#include<stdio.h>
main()
{
int a=3,b=4,i=10,j=2;
printf(¡°%dn¡±,a<b&&i<j);
printf(¡°%dn¡±,a>b&&i>j);
printf(¡°%dn¡±,a<b||i<j);
printf(¡°%dn¡±,!5>7||3<2);
}
??kt?:?
76. C dili ile programlama Turgay ERBAY 25
Bitwise Operat?r¨¹
? Bitler ¨¹zerinde i?lem yapmak, bir tamsay? veya karakter
de?i?kenlerin (short, int, long ve char) bir b¨¹t¨¹n olarak
say?sal de?eri ¨¹zerinde de?il de do?rudan bitlerini
s?namak, de?i?tirmek ve ?teleme yapmak anlam?na
gelmektedir.
? ?rne?in, bir k?sa tamsay?n?n
ikinci bitinin ne oldu?u
??renilmek isteniyorsa bu
operat?rleri kullanmaya
gerek vard?r.
Bitwise operat?rleri
& bit d¨¹zeyinde VE (bitwiseAND)
| bit d¨¹zeyinde VEYA (bitwiseOR)
^ bit d¨¹zeyinde YA DA (bitwise XOR)
~ bir'e t¨¹mleme (one's complement)
<< sola ?teleme (leftshift)
>> sa?a ?teleme (rightshift)
77. C dili ile programlama Turgay ERBAY 26
Bitwise operat?rleri
? VE operat?r¨¹ genelde bir de?i?kenin baz? bitlerini s?f?rlama i?in kullan?l?r.
x=0000 1100 = 0x0Ch=12d
y=0000 0111 = 0x07=7d
x&y=0000 0100 = 0x04=4d
? VEYA operat?r¨¹ genelde, bir say?sal de?i?kenin baz? bitlerini birlemek
i?in kullan?l?r.
x|y= 0000 1111 = 0x0F=15d
? YA DA operat?r¨¹, kar??la?t?r?lan bitlerin de?eri birbirinden farkl? ise 1 ,
ayn? ise s?f?r 0 ¨¹retir. Bir de?i?kenin kendisi ile YA DA 'lanmas? say?sal
de?erini s?f?rlar.
x^y= 0000 1011 = 0x0B=11d
78. C dili ile programlama Turgay ERBAY 27
Bitwise operat?rleri
? Bir'e t¨¹mleme bir de?i?kenin t¨¹m bitlerinden 1
olanlar? 0, 0 olanlar? 1 yapmakt?r.
x=0000 1100 = 0x0Ch = 12d
~x=1111 0011 = 0xF3h = 243d
? ?teleme operat?rleri, de?i?kenlerin bitlerini sa?a
veya sola kayd?rmak i?in kullan?l?r.
x=0000 1100 = 0x0Ch = 12d
x<<3=0110 0000 = 0x60h = 96d
80. C dili ile programlama Turgay ERBAY 29
Adres (pointer) Operat?rleri
? G?sterici (pointer), bir de?i?kenin bellekteki adresidir.
? Bu tip de?i?kenlere yaln?zca adresler veya di?er g?sterici
de?i?kenler atanabilir. Baz? uygulamalarda de?i?kenlerin
adreslerinin bilinmesi b¨¹y¨¹k kolayl?k sa?lar.
? * karakteri daha ?nce aritmetik operat?r k¨¹mesinde de verilmi?ti.
Fakat ayn? zamanda g?stericilerde de operat?r olarak kullan?l?r.
Hangisinde kullan?ld??? yaz?lan ba??nt?dan ??kar?l?r. * karakteri
g?stericilerde de iki ama?la kullan?l?r; ilki g?stericilerin bildiriminde,
ikincisi bir g?sterici de?i?kenin i?aret etti?i bellek g?z¨¹ne eri?mekte
kullan?l?r.
? & karakteri daha ?nce bit ¨¹zerinde VE i?lemi yapan operat?r olarak
kullan?lm??t?. Ancak g?sterici operat?r olarak bir de?i?kenin ?n¨¹ne
koyularak ta kullan?l?r. Bu, de?i?kenin de?eri ile de?il de bellekte
bulundu?u adresi ile ili?kili anlam?na gelir.
81. C dili ile programlama Turgay ERBAY 30
Adres (pointer) Operat?rleri
? int *a, b, c;
float *d ;
char *k;
? ?rne?in a tipi tamsay? olan g?sterici de?i?ken, b ve c
normal de?i?kenler ise,
? int *a, b=10, c ;
c = b ;
a = &b ;
? olarak yaz?l?rsa; c=10 olurken, a de?i?kenine bellekte
bulundu?u g?zlerin ba?lang?? adresi atan?r ve bu
adresin ne oldu?u program?n y¨¹r¨¹t¨¹lmesi s?ras?nda
belli olur.
82. C dili ile programlama Turgay ERBAY 31
& ve * nedir?
? & : Adres Operat?r¨¹. Kendisinden sonra
kullan?lan de?i?kenin bellekteki adresini verir.
? * : ¡°Eri?im de?eri¡± veya ¡°i?erik¡± operat?r¨¹.
G?sterici de?i?kenin i?inde sakl? olan veriyi
alabilmeyi sa?lar.
? * ve & birbirinin tersidir.
? ?rnek: *&a ? yine ¡®a¡¯ kendisine e?ittir.
83. C dili ile programlama Turgay ERBAY 32
& ve * kullan?m?
? * operat?r¨¹ ile de?i?ken tan?mlan?r:
/* *pd i?erisinde adres ta??r anlam?ndad?r. */
int *pd, d = 5;
? Bir de?i?kenin adresine eri?mek i?in & kullan?l?r.
/* d nin adresini pd de?i?kenine y¨¹kle. */
pd = &d;
? Bir adresteki de?i?kene eri?mek i?in, * kullan?l?r.
*pd = 10; /* d ye de?er olarak 10 ata */
84. C dili ile programlama Turgay ERBAY 33
Grafik olarak
pd
5
&d
*pd==d==5*pd=10 !!10
=> d==10 !!!
85. C dili ile programlama ??r. G?r. Serkan KORKMAZ 34
G?sterici De?i?keni
Yandaki program?n
y¨¹r¨¹t¨¹lmesinde ¡°tut¡± adl?
de?i?kenin bellekteki adresi
BF50 olarak
varsay?lm??t?r, program
?al??t?r?ld???nda ekrana
yaz?lanlar a?a??daki gibi olur.
De?i?kenin adresi : BF50
De?i?kenin de?eri : 800
i?aret?inin de?eri(adres) : BF50
i?aret etti?i de?er : 800
De?i?kenin yeni de?eri : 400
De?i?kenin adresi : BF50
#include <stdio.h>
main( )
{
int tut, *adres;
adres = &tut;
tut = 800;
printf("Degiskenin adresi:%pn",&tut);
printf("Degiskenin degeri:%dnn", tut);
printf("isaret?inin degeri (adres):%pn",adres);
printf("isaret ettigi deger :%dnn",*adres);
*adres=400;
printf("Degiskenin yeni degeri: %dn", tut);
printf("Degiskenin adresi: %pn", &tut);
}
Degiskenin adresi:0012FF7C
Degiskenin degeri:800
isaretcinin degeri (adres):0012FF7C
isaret ettigi deger¨¢:800
Degiskenin yeni degeri: 400
Degiskenin adresi: 0012FF7C
86. C dili ile programlama Turgay ERBAY 35
G?sterici De?i?keni
? G?sterici De?i?keni bir adres saklayan
de?i?kendir.
? ?rnek olarak, tamsay? t¨¹r¨¹nde bir g?sterici
de?i?keni int * p; ?eklinde tan?mlan?r.
? De?i?ken p i?inde *p nin g?sterdi?i adresi saklar.
int a = 5, *p;
p = &a;
printf("%d", *p);
ekrana 5 yazar..
87. C dili ile programlama Turgay ERBAY 36
G?sterici De?i?keni
? ?rnekler:
FILE *dosya;
int *a;
float *b;
char *c;
? De?i?ken ad?ndan ?nce kullan?lan y?ld?z sembol¨¹ bu
de?i?kenlerin bellekte bir adres g?sterdi?i anlam?na
gelir.
88. C dili ile programlama Turgay ERBAY 37
Sizeof Operat?r¨¹
? Bir de?i?kenin veya veri tipinin bellekte ka? byte yer
kaplad???n? verir.
? Farkl? tipte de?i?kenler kullan?lan bir ba??nt?n?n
sonucunun, ka? byte yer kaplayaca??n? ??renmek
i?in de kullan?labilir.
? sizeof nesne veya sizeof (tip)
? Nesne yerine de?i?ken ad?,dizi ya da yap?sal
de?i?ken (structure) yaz?labilir.
? ?kinci kullan?mdaki tip yerine temel tiplerin ad?,
de?i?ken ad?, t¨¹retilmi? tiplerin ad? (structure veya
g?sterici gibi) ya da matematiksel ba??nt? yaz?labilir.
? Bu operat?r dizi i?in kullan?l?rsa, dizinin bellekte
kaplad??? toplam alan?n boyunu byte olarak ??renilir.
89. C dili ile programlama Turgay ERBAY 38
?rnek
? A?a??daki programda her biri tamsay? olan 10
elemanl? bir a dizisi ve b adl? bir de?i?ken
bildirilmi?tir. Program y¨¹r¨¹t¨¹ld¨¹?¨¹nde dizinin ve
tamsay?n?n bellekte ka? byte yer kaplad???n? yazar.
main( )
{
int a[10], b ;
printf ("a dizisi %d byte yer kaplar. n ", sizeof
a);
printf ("Tamsayi %d byte yer kaplar. ", sizeof b);
}
91. C dili ile programlama Turgay ERBAY 40
?rnek
? ??lem ?ncelik s?ras?
Parantez
?s alma
B?lme
?arpma
Toplama
??karma
1 + 2 * 3 - 4 / 5 = ?
1 + (2 * 3) ¨C (4 / 5)
6.2
92. C dili ile programlama Turgay ERBAY 41
?rnek (sonu?)
? E?er ifade tamsay? de?i?kenlerinden
olu?ursa sonu?ta tamsay? olur, ondal?kl?
de?erler tam say?ya yuvarlan?r.
4/5 = 0
(tamsay? b?lme)
1 + (2 * 3) ¨C (4 / 5)
7
z + (d * c) ¨C (a / b)
93. C dili ile programlama Turgay ERBAY 42
Operat?rlerin ?ncelikleri
? Parantezler
? Not (!)
? Kar??la?t?rma (<, >, <=, >=)
? E?itlik (==)
? E?it De?il (!=)
? And (&&)
? Or (||)
Y¨¹ksek
D¨¹?¨¹k
94. C dili ile programlama Turgay ERBAY 43
float
? float daha kesin say?sal de?erler veren veri
t¨¹r¨¹d¨¹r ancak daha fazla hesaplama i?lemi ve
bellek gerektirir. Normalde bilgisayar tamsay?
i?lemlerini daha h?zl? ger?ekle?tirir.
? ?rnek: float i?lemi
= 1 + 2 * 3 - 4.0 / 5
= 1 + (2 * 3) - (4.0 / 5)
= 1 + 6 - 0.8
= 6.2 Floating
point
sonucu
97. C dili ile programlama Turgay ERBAY 46
??lem ?ncelik s?ras?
7 + 4 * 2 % 6 * 4 =
7 + 8 % 6 * 4 =
7 + 2 * 4 =
7 + 8 = 15
(7 + 4) * 6 % 5 * 4 =
11 * 6 % 5 * 4 =
66 % 5 * 4 =
1 * 4 = 4
7 + ( (4 * 6) % 5 ) * 4 =
7 + (24 % 5) * 4 =
7 + 4 * 4 =
7 + 16 = 23
NOTE: Temporary calculations are done using the highest precision
numerical type. (If the numbers are in parantheses, only the inside
Calculations are done with that precision.).
98. C dili ile programlama Turgay ERBAY 47
?rnek Program
Print out the result
result ? 1 + 2 * 3 - 4 / 5
print result
#include <stdio.h>
/* ??lem sonucunu yaz */
int main()
{
return 0;
}Program iskeletini
tamamlayal?m. Bunu
yapmaya al???n!
99. C dili ile programlama Turgay ERBAY 48
?rnek Program
Print out the result
result ? 1 + 2 * 3 - 4 / 5
print result
#include <stdio.h>
/* ??lem sonucunu yaz */
int main()
{
float sonuc;
sonuc = 1 + 2 * 3 - 4 /5;
printf("%fn", sonuc);
return 0;
}
%f float veri t¨¹rlerini
ekrana yazmak i?in
kullan?l?r.
n yeni sat?ra ge?me.
101. C dili ile programlama Turgay ERBAY 50
?rnek
#include <stdio.h>
int main()
{
int yas = 18;
int paraVar = 0;
int kartVar = 1;
float susuzluk = 0.31;
int haftaIci = 0;
int sonuc;
sonuc = yas >= 18 && (paraVar || kartVar)
&& susuzluk > 0.3 && !haftaIci;
printf("%dn", sonuc);
return 0;
}
102. C dili ile programlama Turgay ERBAY 51
Genellikle yap?lan hatalar
? Genellikle yap?lan hatalar i?lem ?ncelik s?ras?
hesaba katulmadan yaz?lan ifadelerde
meydana gelir. Di?er bir hata da (==) yerine
(=) yaz?lmas?ndan kaynaklan?r.
? B?yle bir durumda derleyici hata vermez, ancak
atama sonucu her zaman ¡°do?ru¡± sonu?
verecektir. (e?erki atanan de?er 0 de?ilse).
103. C dili ile programlama Turgay ERBAY 52
?rnek (hata)
#include <stdio.h>
int main()
{
int not;
scanf("%d", ¬);
if (not = 48 || not = 49) {
printf("?ok yak?n!n");
}
return 0;
}
?ok tipik bir
hata!!
104. C dili ile programlama Turgay ERBAY 53
#include <stdio.h>
int main()
{
int not;
scanf("%d", ¬);
if (not == 48 || not == 49) {
printf("?ok yak?n!n");
}
return 0;
}
Buradaki
farka dikkat
edin.
?rnek (hatas?z)
105. C dili ile programlama Turgay ERBAY 54
?rnek (hata)
#include <stdio.h>
int main()
{
int not;
scanf("%d", ¬);
if ( 0 < not < 48 )
{
printf("Yanlisn");
}
return 0;
}
Bu kod s¨¹rekli
¡°Yanl??¡± yazar.
NEDEN?
106. C dili ile programlama Turgay ERBAY 55
?rnek (hata)
0 < not < 48
0 or 1
hem 0 hem 1, 48¡¯den k¨¹?¨¹kt¨¹r. Bu y¨¹zden
birle?ik ifade her zaman do?ru olur.
107. C dili ile programlama Turgay ERBAY 56
?rnek (hatas?z)
#include <stdio.h>
int main()
{
int not;
scanf("%d", ¬);
if ( 0 < not && not < 48 )
{
printf("Yanlisn");
}
return 0;
}
108. C dili ile programlama Turgay ERBAY 57
Visual C++ (v6)
109. C dili ile programlama Turgay ERBAY 58
Visual C++ (v6)
Yeni.. Ctrl+N
110. C dili ile programlama Turgay ERBAY 59
Visual C++ (v6)
Se?: ¡°Win32 Console
Application¡±
Project ve dosya
dizini
Proje ba?l???
(name of .exe)
111. C dili ile programlama Turgay ERBAY 60
Visual C++ (v6)
112. C dili ile programlama Turgay ERBAY 61
Visual C++ (v6)
Yeni kaynak dosya
projeye eklenmi? olacak
113. C dili ile programlama Turgay ERBAY 62
Visual C++ (v6)
Se?: ¡°c++
kaynak dosya¡±
uzant?s? .c olan
bir kaynak
dosya ad? gir
114. C dili ile programlama Turgay ERBAY 63
Visual C++ (v6)
Program? bu b?l¨¹me yaz
115. C dili ile programlama Turgay ERBAY 64
Visual C++ (v6)
C dosyas?n? Derle
116. C dili ile programlama Turgay ERBAY 65
Visual C++ (v6)
Build an
executable (.exe)
file.
117. C dili ile programlama Turgay ERBAY 66
Visual C++ (v6)
?al??t?r?labilir dosyay? ?al??t?r (.exe).
Bu i?lem se?ildi?inde, derleme i?lemi
tamamlanmam??sa, program yeniden
derlenecektir.
Hata ve uyar? mesajlar?
bu b?l¨¹mde g?r¨¹l¨¹r
118. C dili ile programlama Turgay ERBAY 67
Visual C++ (v6)
DOS komut
sat?r?nda
program ??kt?s?.
119. C dili ile programlama Turgay ERBAY 68
Visual C++ (v6)
Daha ?nce
olu?turulmu?
bir proje a?.
120. C dili ile programlama Turgay ERBAY 69
Visual C++ (v6)