SlideShare a Scribd company logo
1 of 121
Download to read offline
C dili ile programlama Turgay ERBAY 1
DİLİ İLE
PROGRAMLAMA
Turgay ERBAY
Türk Telekom
Siber Güvenlik Uzmanı
C
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.
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
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
C dili ile programlama Turgay ERBAY 5
1.Bölüm
Genel Bilgiler
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
C dili ile programlama Turgay ERBAY 7
Genel Bilgiler
 Her C programında en az bir main fonksiyonu
bulunur.
main()
{
komutlar; blok
}
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>
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.
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
-
-
------------- --------------------
-
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
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.
C dili ile programlama Turgay ERBAY 13
Program oluşturma süreci
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.
C dili ile programlama Turgay ERBAY 15
Program Yazma ve
Çalıştırma
MS Visual Studio Visual C++
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 16
Visual C++ (v6)
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 17
Visual C++ (v6)
Yeni.. Ctrl+N
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)
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 19
Visual C++ (v6)
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 20
Visual C++ (v6)
Yeni kaynak dosya
projeye eklenmiş olacak
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
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 22
Visual C++ (v6)
Programı bu bölüme yaz
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 23
Visual C++ (v6)
C dosyasını Derle
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 24
Visual C++ (v6)
Build an
executable (.exe)
file.
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
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 26
Visual C++ (v6)
DOS komut
satırında
program çıktısı.
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 27
Visual C++ (v6)
Daha önce
oluşturulmuş
bir proje aç.
C dili ile programlama Öğr. Gör. Serkan KORKMAZ 28
Visual C++ (v6)
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();
}
-----------------------------------------------------------------
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();
}
--------------------------------------------------------
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();
}--------------------------------------------------------
C dili ile programlama Turgay ERBAY 32
Hataların Bulunması
 Syntax Hataları:
 Mantıksal Hatalar:
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.
C dili ile programlama Turgay ERBAY 34
Hataların Bulunması (Debugging)
Add an integer
variable with
name “a”
C dili ile programlama Turgay ERBAY 35
Bağlayıcı Hataları (Linker errors)
A function with name
“print” is not defined.
C dili ile programlama Turgay ERBAY 36
The correct one
should be printf
C dili ile programlama Turgay ERBAY 37
Çalışma Zamanı Hatası
Execution error
C dili ile programlama Turgay ERBAY 38
The correct usage of
printf for writing
out numbers
C dili ile programlama Turgay ERBAY 39
2. BÖLÜM
Değişken ve
Veri Tipleri
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
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.
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.
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.
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;
}
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
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:
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
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
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”);
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
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();
C dili ile programlama Turgay ERBAY 1
DİLİ İLE
PROGRAMLAMA
Öğr. Gör. Serkan KORKMAZ
Harran Üniversitesi
Birecik Meslek Yüksekokulu
C
C dili ile programlama Turgay ERBAY 2
3. BÖLÜM
Operatörler
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. >= */
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
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)
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.
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
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);
}
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
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ı:?
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
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.
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?
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;
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ı ?
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
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.
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.
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ı:?
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
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.
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.
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
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ı:?
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)
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
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
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ı:?
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.
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.
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.
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 */
C dili ile programlama Turgay ERBAY 33
Grafik olarak
pd
5
&d
*pd==d==5*pd=10 !!10
=> d==10 !!!
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
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..
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.
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.
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);
}
C dili ile programlama Turgay ERBAY 39
Operatörlerin Öncelikleri
Operatörler işlem yönü
( ) [ ] -> . -->
! - ++ - - + - * & (type) sizeof <--
* / % -->
+ - -->
<< >> -->
< <= > >= -->
== != -->
& -->
^ -->
| -->
&& -->
|| -->
?: <--
= += -= *= /= %= &= ^= |= <<= >>= <--
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
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)
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
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
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.
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.
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.).
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!
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.
C dili ile programlama Turgay ERBAY 49
Öncelikler : Ekstra bilgi
 *, /, % eşit önceliklidir.
 +, - eşit önceliklidir.
 Eşit öncelikli operatörler içeren ifadelerde işlem
soldan sağa doğru işletilir.
2 + 3 – 1 = (2 + 3) – 1 = 4
2 – 3 + 1 = (2 – 3) + 1 = 0
2 * 3 / 4 = (2 * 3) / 4 = 6 / 4 =1 (<> 2 / 4 * 3 =(2 / 4) * 3 = 0)
2 / 3 * 4 = (2 / 3) * 4 = 0 / 4
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;
}
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).
C dili ile programlama Turgay ERBAY 52
Örnek (hata)
#include <stdio.h>
int main()
{
int not;
scanf("%d", &not);
if (not = 48 || not = 49) {
printf("Çok yakın!n");
}
return 0;
}
Çok tipik bir
hata!!
C dili ile programlama Turgay ERBAY 53
#include <stdio.h>
int main()
{
int not;
scanf("%d", &not);
if (not == 48 || not == 49) {
printf("Çok yakın!n");
}
return 0;
}
Buradaki
farka dikkat
edin.
Örnek (hatasız)
C dili ile programlama Turgay ERBAY 54
Örnek (hata)
#include <stdio.h>
int main()
{
int not;
scanf("%d", &not);
if ( 0 < not < 48 )
{
printf("Yanlisn");
}
return 0;
}
Bu kod sürekli
“Yanlış” yazar.
NEDEN?
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.
C dili ile programlama Turgay ERBAY 56
Örnek (hatasız)
#include <stdio.h>
int main()
{
int not;
scanf("%d", &not);
if ( 0 < not && not < 48 )
{
printf("Yanlisn");
}
return 0;
}
C dili ile programlama Turgay ERBAY 57
Visual C++ (v6)
C dili ile programlama Turgay ERBAY 58
Visual C++ (v6)
Yeni.. Ctrl+N
C dili ile programlama Turgay ERBAY 59
Visual C++ (v6)
Seç: “Win32 Console
Application”
Project ve dosya
dizini
Proje başlığı
(name of .exe)
C dili ile programlama Turgay ERBAY 60
Visual C++ (v6)
C dili ile programlama Turgay ERBAY 61
Visual C++ (v6)
Yeni kaynak dosya
projeye eklenmiş olacak
C dili ile programlama Turgay ERBAY 62
Visual C++ (v6)
Seç: “c++
kaynak dosya”
uzantısı .c olan
bir kaynak
dosya adı gir
C dili ile programlama Turgay ERBAY 63
Visual C++ (v6)
Programı bu bölüme yaz
C dili ile programlama Turgay ERBAY 64
Visual C++ (v6)
C dosyasını Derle
C dili ile programlama Turgay ERBAY 65
Visual C++ (v6)
Build an
executable (.exe)
file.
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
C dili ile programlama Turgay ERBAY 67
Visual C++ (v6)
DOS komut
satırında
program çıktısı.
C dili ile programlama Turgay ERBAY 68
Visual C++ (v6)
Daha önce
oluşturulmuş
bir proje aç.
C dili ile programlama Turgay ERBAY 69
Visual C++ (v6)
C dili ile programlama Turgay ERBAY 70
Prosedürler
Procedure Perşembeyi_Yaşa
{
Uyan
Yataktan_Kalk
Kahvaltı_Et
Evden_Çık
Otobüse_Bin
Sınıfa_Otur
Otobüse_Bin
Eve_Gir
Televizyon_Seyret
Ders_Calis
Uyu
}
Procedure Haftayı_Yaşa
{
Pazarı_Yaşa
Pazartesini_Yaşa
Salıyı_Yaşa
Çarşambayı_Yaşa
Perşembeyi_Yaşa
Cumayı_Yaşa
Cumartesini_Yaşa
}

More Related Content

What's hot

Templates in C++
Templates in C++Templates in C++
Templates in C++
Tech_MX
 

What's hot (20)

Structure & union
Structure & unionStructure & union
Structure & union
 
Deep C
Deep CDeep C
Deep C
 
Templates in C++
Templates in C++Templates in C++
Templates in C++
 
Computer Engineering Workshop
Computer Engineering WorkshopComputer Engineering Workshop
Computer Engineering Workshop
 
Preprocessor
PreprocessorPreprocessor
Preprocessor
 
Unit4
Unit4Unit4
Unit4
 
Introduction to C Programming - I
Introduction to C Programming - I Introduction to C Programming - I
Introduction to C Programming - I
 
Constructors and Destructors
Constructors and DestructorsConstructors and Destructors
Constructors and Destructors
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 
String In C Language
String In C Language String In C Language
String In C Language
 
PRIM'S ALGORITHM
PRIM'S ALGORITHMPRIM'S ALGORITHM
PRIM'S ALGORITHM
 
Abstraction in c++ and Real Life Example of Abstraction in C++
Abstraction in c++ and Real Life Example of Abstraction in C++Abstraction in c++ and Real Life Example of Abstraction in C++
Abstraction in c++ and Real Life Example of Abstraction in C++
 
Algorithms
AlgorithmsAlgorithms
Algorithms
 
Switch case in C++
Switch case in C++Switch case in C++
Switch case in C++
 
Ternary operator
Ternary operatorTernary operator
Ternary operator
 
structure of a c program
structure of a c programstructure of a c program
structure of a c program
 
C Programming
C ProgrammingC Programming
C Programming
 
Modular Programming in C
Modular Programming in CModular Programming in C
Modular Programming in C
 
Strings
StringsStrings
Strings
 
Functions In C
Functions In CFunctions In C
Functions In C
 

Similar to C programlama

C ornekleri
C ornekleriC ornekleri
C ornekleri
sersld30
 
C dokumani
C dokumaniC dokumani
C dokumani
sersld29
 
C odev-sitesi
C odev-sitesiC odev-sitesi
C odev-sitesi
sersld30
 
C egitim-seti
C egitim-setiC egitim-seti
C egitim-seti
sersld29
 
C egitimi-cekmekoy
C egitimi-cekmekoyC egitimi-cekmekoy
C egitimi-cekmekoy
sersld29
 
C egitimi-kagithane
C egitimi-kagithaneC egitimi-kagithane
C egitimi-kagithane
sersld29
 
C egitimi-catalca
C egitimi-catalcaC egitimi-catalca
C egitimi-catalca
sersld29
 
C cevaplari
C cevaplariC cevaplari
C cevaplari
sersld29
 

Similar to C programlama (20)

Sunu algo02
Sunu algo02Sunu algo02
Sunu algo02
 
Templates
Templates Templates
Templates
 
9. şablonlar
9. şablonlar9. şablonlar
9. şablonlar
 
C ornek
C ornekC ornek
C ornek
 
C ornegi
C ornegiC ornegi
C ornegi
 
C giris-cikis-c-input-output
C giris-cikis-c-input-outputC giris-cikis-c-input-output
C giris-cikis-c-input-output
 
C ornekleri
C ornekleriC ornekleri
C ornekleri
 
C dokumani
C dokumaniC dokumani
C dokumani
 
C odev-sitesi
C odev-sitesiC odev-sitesi
C odev-sitesi
 
C egitim-seti
C egitim-setiC egitim-seti
C egitim-seti
 
Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1
 
C dilini-taniyalim
C dilini-taniyalimC dilini-taniyalim
C dilini-taniyalim
 
C dilini-taniyalim
C dilini-taniyalimC dilini-taniyalim
C dilini-taniyalim
 
C odevi
C odeviC odevi
C odevi
 
C egitimi-cekmekoy
C egitimi-cekmekoyC egitimi-cekmekoy
C egitimi-cekmekoy
 
3. aşırı yükleme yaşam alanı - dinamik bellek kullanımı
3. aşırı yükleme   yaşam alanı - dinamik bellek kullanımı3. aşırı yükleme   yaşam alanı - dinamik bellek kullanımı
3. aşırı yükleme yaşam alanı - dinamik bellek kullanımı
 
C egitimi-kagithane
C egitimi-kagithaneC egitimi-kagithane
C egitimi-kagithane
 
C egitimi-catalca
C egitimi-catalcaC egitimi-catalca
C egitimi-catalca
 
Mühendislik problemlerinin bilgisayar ortamında sayısal analiz yöntemleriyle...
Mühendislik problemlerinin  bilgisayar ortamında sayısal analiz yöntemleriyle...Mühendislik problemlerinin  bilgisayar ortamında sayısal analiz yöntemleriyle...
Mühendislik problemlerinin bilgisayar ortamında sayısal analiz yöntemleriyle...
 
C cevaplari
C cevaplariC cevaplari
C cevaplari
 

C programlama

  • 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); }
  • 90. C dili ile programlama Turgay ERBAY 39 Operatörlerin Öncelikleri Operatörler işlem yönü ( ) [ ] -> . --> ! - ++ - - + - * & (type) sizeof <-- * / % --> + - --> << >> --> < <= > >= --> == != --> & --> ^ --> | --> && --> || --> ?: <-- = += -= *= /= %= &= ^= |= <<= >>= <--
  • 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.
  • 100. C dili ile programlama Turgay ERBAY 49 Öncelikler : Ekstra bilgi  *, /, % eşit önceliklidir.  +, - eşit önceliklidir.  Eşit öncelikli operatörler içeren ifadelerde işlem soldan sağa doğru işletilir. 2 + 3 – 1 = (2 + 3) – 1 = 4 2 – 3 + 1 = (2 – 3) + 1 = 0 2 * 3 / 4 = (2 * 3) / 4 = 6 / 4 =1 (<> 2 / 4 * 3 =(2 / 4) * 3 = 0) 2 / 3 * 4 = (2 / 3) * 4 = 0 / 4
  • 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", &not); 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", &not); 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", &not); 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", &not); 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)
  • 121. C dili ile programlama Turgay ERBAY 70 Prosedürler Procedure Perşembeyi_Yaşa { Uyan Yataktan_Kalk Kahvaltı_Et Evden_Çık Otobüse_Bin Sınıfa_Otur Otobüse_Bin Eve_Gir Televizyon_Seyret Ders_Calis Uyu } Procedure Haftayı_Yaşa { Pazarı_Yaşa Pazartesini_Yaşa Salıyı_Yaşa Çarşambayı_Yaşa Perşembeyi_Yaşa Cumayı_Yaşa Cumartesini_Yaşa }