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 – 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
79. C dili ile programlama Turgay ERBAY 28
Örnek
#include<stdio.h>
main()
{
char x=‘2A’; /* x=0010 1010= 42d */
char y=‘0F’; /* y=0000 1111= 15d */
printf(“%dn”,x&y);
printf(“%dn”,x|y);
printf(“%dn”,x^y);
}
Çıktı:?
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) – (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) – (4 / 5)
7
z + (d * 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
95. C dili ile programlama Turgay ERBAY 44
Örnek – 1: Tamsayılar
İfade aldatmacalı görünebilir. Tamsayılarla
işlem yaparken dikkatli olun.
(1 + 2) * (3 - 4) / 5
= ((1 + 2) * (3 - 4)) / 5
= (3 * -1) / 5
= -3 / 5
= 0 Tamsayı bölme
sonucu 0.
96. C dili ile programlama Turgay ERBAY 45
Örnek – 2 :Floating points
Örnek: Sonuç daha doğru…
(1 + 2.0) * (3 - 4) / 5
= ((1 + 2.0) * (3 - 4)) / 5
= (3.0 * -1) / 5
= -3.0 / 5
= -0.6 Beklenen
sonuç
budur.
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)