C - PowerPoint PPT Presentation

1 / 33
About This Presentation
Title:

C

Description:

Title: NESNEYE-Y NEL K PROGRAMLAMA Author: user Last modified by: HP Created Date: 2/14/2005 8:39:00 AM Document presentation format: Ekran G sterisi (4:3) – PowerPoint PPT presentation

Number of Views:67
Avg rating:3.0/5.0
Slides: 34
Provided by: edut1551
Category:
Tags:

less

Transcript and Presenter's Notes

Title: C


1
CA GIRIS
  • Yilmaz Kiliçaslan

2
C DILININ BIR ÜST-KÜMESI OLARAK C
  • Genel olarak, Cde mevcut olan her sey Cda da
    vardir.
  • Fakat, C
  • mevcut özellikler üzerinde yapmis oldugu
    konvansiyonel nitelikte iyilestirmeler ve
  • eklemis oldugu yaklasim degistirici nitelikte
    özellikler ile C dilinden daha büyük bir kümeyi
    kapsar.

3
INPUT-OUTPUT IÇIN STREAM KULLANILMASI-cout
  • C input (giris) ve output (çikis) islemleri
    için stream (bytelarin dizisi seklinde veri
    transferi) olarak bilinen mekanizmalar kullanir.
    Standart output streami cout ismiyle
    adlandirilir
  • include ltiostreamgt
  • using namespace std
  • int main()
  • cout ltlt Merhaba!
  • return 0
  • Örnekte, Cden farkli olarak
  • stdio.h yerine iostream.h
  • printf yerine cout ve bit-tabanli sola kaydirma
    operatörü (ltlt) kullanilmistir.

4
INPUT-OUTPUT IÇIN STREAM KULLANILMASI-cout
  • Cda çikti için format stringine ihtiyaciniz
    yoktur
  • include ltiostreamgt
  • using namespace std
  • int main()
  • int miktar 123
  • cout ltlt miktar
  • return 0
  • C dilinde -gt printf(d, miktar)
  • cout streami farkli veri tiplerinin ayirdindadir
    ve onlari dogru olarak yorumlayabilir
  • cout ltlt Miktar ltlt miktar ltlt .

5
INPUT-OUTPUT IÇIN STREAM KULLANILMASI-manipülatörl
er
  • C çiktilarini da manipulatörler
    aracililigiyla formatlamak mümkündür. Asagidaki
    program manipülatör kullanarak tamsayilar
    (integers) için varsayilan formati nasil
    degistirebilecegimizi örneklemektedir
  • include ltiostreamgt
  • using namespace std
  • int main()
  • int miktar 123
  • cout ltlt decimal degeri ltlt dec ltlt miktar ltlt
    \n
  • cout ltlt octal degeri ltlt oct ltlt miktar ltlt
    endl
  • cout ltlt hexadecimal degeri ltlt hex ltlt miktar
    ltlt \n
  • return 0
  • Program çiktisi nedir?

6
PROGRAM ÇIKTISI
  • decimal degeri123
  • octal degeri173
  • hexadecimal degeri7b

7
INPUT-OUTPUT IÇIN STREAM KULLANILMASI-cin
  • Cin standard input streami ise cin olarak
    adlandirilir. Asagidaki program klavyeden bir
    tamsayinin nasil girdi olarak alinacagini
    göstermektedir
  • include ltiostreamgt
  • using namespace std
  • int main()
  • int miktar 123
  • cout ltlt Bir miktar girin...\n
  • cin gtgt miktar
  • cout ltlt Girdiginiz Miktar ltlt miktar
  • return 0

8
INPUT-OUTPUT IÇIN STREAM KULLANILMASI-cin
  • cin diger tipte veri girisleri için de
    kullanilabilir
  • include ltiostreamgt
  • using namespace std
  • int main()
  • char isim20
  • cout ltlt Bir isim girin...\n
  • cin gtgt isim
  • cout ltlt Girdiginiz Isim ltlt isim
  • return 0

9
AÇIKLAMALAR (COMMENTS)
  • C, Cde çoklu satir açiklamasinda kullanilan /
    ... / açiklama formatina ek olarak, tek-satir
    açiklamalari için // isaretinin kullanimina
    izin vermektedir.
  • // Cda Açiklama Yazilmasi
  • include ltiostreamgt
  • using namespace std
  • int main()
  • char isim20 // Karakter katari bildirimi
    cout ltlt Bir isim girin...\n //Isim giris
    istegi
  • cin gtgt isim //Ismin okunmasi
  • cout ltlt Girdiginiz Isim ltlt isim
  • return 0

10
FONKSIYON PROTOTIPLERI
  • Fonksiyon prototipi, fonksiyonun ismini,
    döndürecegi degeri, parametrelerin sayisini ve
    tipini tanimlar.
  • C, eger çagrilmadan önce tanimlanmamissa, her
    fonksiyon için prototip bildirimi ister.
  • include ltiostreamgt
  • using namespace std
  • void goruntule(char s) //Fonksiyon prototipi
  • int main()
  • goruntule(Merhaba!)
  • return 0
  • void goruntule(char s)
  • cout ltlt s

11
VARSAYILAN FONKSIYON ARGÜMANLARI-1
  • Cda bir fonksiyon prototipinde bazi
    parametreler için varsayilan degerler belirlemek
    mümkündür.
  • Fonksiyon çagrimi yaparken varsayilan deger almis
    argümanlari belirtmezseniz derleyici otomatik
    olarak bu argümanlar için varsayilan degerleri
    kullanir.
  • Eger kendi argümanlarinizi kullanirsaniz,
    derleyici varsayilanlar yerine onlari kullanir.
  • Bir argümani belirtmez iseniz sagindaki diger
    argümanlari da belirtmemelisiniz
  • f( , 3.45) // Error

12
VARSAYILAN FONKSIYON ARGÜMANLARI-1
  • include ltiostreamgt
  • using namespace std
  • void f(int i5, double d1.23)//Fonksiyon
    prototipi
  • int main ()
  • // Fonksiyon Çagrimlari
  • f(12, 3.45)
  • f(3)
  • f()
  • return 0

13
VARSAYILAN FONKSIYON ARGÜMANLARI-2
  • Asagidaki programin çiktilarini belirleyiniz
  • include ltiostreamgt
  • using namespace std
  • void show( int 5, float 2.3, long 4 )
  • int main()
  • show() show(5) show(6,7.8)
    show(9,10.11,12L)
  • return 0
  • void show(int first, float second, long third)
  • cout ltlt \nfirst ltlt first
  • cout ltlt , second ltlt second
  • cout ltlt , third ltlt third

14
PROGRAM ÇIKTISI
  • first 5, second 2.3, third 4
  • first 5, second 2.3, third 4
  • first 6, second 7.8, third 4
  • first 9, second 10.11, third 12

15
DEGISKEN BILDIRIMLERININ YERI - 1
  • Cde degisken bildirimlerini blok basinda
    yapmaniz beklenir. Cda ise referansta
    bulunmadan önce olmak kosuluyla bir degiskenin
    bildirimini kodun herhangi bir yerinde
    yapabilirsiniz.
  • int main()
  • cout ltlt Bir sayi girin...\n
  • int sayi
  • cin gtgt sayi
  • cout ltlt Girdiginiz Sayi ltlt sayi
  • return 0

16
DEGISKEN BILDIRIMLERININ YERI - 2
  • Asagidaki ifade dogrudur.
  • for (int ctr 0 ctr lt MAXXTR ctr)
  • Fakat, asagidaki ifadeler hatalidir
  • if( int i 0 ) // Error
  • while( int i 0 ) // Error

17
DEGISKEN BILDIRIMLERININ YERI - 3
  • Asagidaki örnekte bir degisken bildirimi bir blok
    içinde yapilmistir
  • int main()
  • int satirNo
  • for( satirNo 0 satirNo lt 3 satirNo )
  • int temp 22
  • cout ltlt \nSatir No ltlt satirNo ltlt Temp
    ltlt temp
  • cout ltlt satirNo // satirNo erisilebilir
  • // cout ltlt temp // temp erisilemez
  • return 0
  • Program çiktisi nedir?

18
KAPSAM ÇÖZÜMLEYICI OPERATÖR
  • Cde yerel bir degisken ayni isimli global bir
    degiskene göre önceliklidir. Örnegin, hem bir
    yerel degisken hem de global bir degisken miktar
    ismiyle adlandirilmissa ve yerel degisken
    referans kapsami içinde ise miktar her
    kullanildiginda referans yerel degiskene yapilmis
    olur yani, global degisken görünmez olmustur.
  • C, bu tür durumlarda, global degiskene de
    erisime izin verir. Degiskenin önüne kapsam
    çözümleyici operatör olan isaretinin konulmasi
    halinde kullanilanin yerel degil global degisken
    oldugu anlasilir.
  • Iç içe gömülmüs kapsam alanlarinda bir üst
    kapsam alanindaki degiskenlere degil global
    degiskenlere erisim saglar.

19
KAPSAM ÇÖZÜMLEYICI OPERATÖR - örnek
  • include ltiostreamgt
  • using namespace std
  • int miktar 23 // Global Degisken
  • int main()
  • int miktar 456 // Yerel Degisken
  • cout ltlt miktar
  • cout ltlt \n
  • cout ltlt miktar
  • return 0
  • Program çiktisi nedir?

20
INLINE FONKSIYONLAR - 1
  • Cda gerçekte çagrilmayan, fakat her çagri
    noktasinda satir içerisinde genisleyen
    fonksiyonlar tanimlanabilir.
  • Cdaki inline anahtar sözcügü beraberinde
    kullanildigi fonksiyonun bir kopyasinin
    çagrildigi her yere eklenmesini saglar. Eger, bir
    inline fonksiyonu programinizda 20 kez
    çagiriyorsaniz, derleyici bu fonksiyonun 20
    kopyasini .EXE dosyaniza ekleyecektir.
  • Fonksiyon kopyalarinin bu sekilde eklenmesi
    fonksiyon çagrimindan dogan overhead zamanini
    ortadan kaldirarak programinizi hizlandiracaktir.
    Fakat, bir fonksiyonun birçok kopyasini yaratmak
    da program kodunuzun büyümesine yol açacaktir. Bu
    nedenle, inline niteleyicisi yalnizca fonksiyon
    çok kisa ise yada az sayida çagriliyorsa
    kullanilmalidir.

21
INLINE FONKSIYONLAR 1 - örnek
  • include ltiostreamgt
  • using namespace std
  •  
  • inline int max(int a, int b)
  • return agtb ? a b
  •  
  • int main()
  • cout ltlt max(10, 20)
  • cout ltlt " " ltlt max(99, 88)
  • return 0

22
INLINE FONKSIYONLAR - 2
  • inline fonksiyonlar define ile bildirimi
    yapilmis makrolara benzerler fakat, makrolar
    basit bir metin degistirici ile gerçeklenirken,
    inline fonksiyonlar derleyici tarafindan
    taninirlar.
  • Derleyici tarafindan taninmanin avantaji,
    derleyicinin inline fonksiyonun parametreleri
    üzerinde tip kontrolü yapabilmesidir.
  • Diger avantaji ise, inline fonksiyonlarin siradan
    fonksiyonlar gibi davranip makrolarin neden
    olabilecegi yan etkileri yaratmamasidir

23
INLINE FONKSIYONLAR - örnek
  • include ltiostreamgt
  • using namespace std
  • define MAX( A, B ) ((A) gt (B) ? (A) (B))
  • inline int max(int a, int b)
  • if (agtb) return a return b
  • int main()
  • int i, x, y
  • x 23 y 45
  • i MAX(x, y) // buyuk deger iki kez
    arttirildi
  • cout ltlt "x " ltlt x ltlt " y " ltlt y ltlt "\n"
  • x 23 y 45
  • i max(x, y)
  • cout ltlt "x " ltlt x ltlt " y " ltlt y ltlt "\n"
  • return 0
  • Program çiktisi nedir?

24
PROGRAM ÇIKTISI
  • x 24 y 47
  • x 24 y 46

25
const NITELEYICISI - 1
  • C gibi, C da degiskenleri sabitlere dönüstüren
    const niteleyicisini destekler. Cde const
    niteleyicisi, ilk deger atamasi haricinde,
    degiskenin salt-okunur oldugunu belirtir. C,
    bir adim daha ileri gider ve sabit bir ifade
    kullanilan her yerde bir const ifadesi
    kullanmaniza izin verir
  • include ltiostreamgt
  • using namespace std
  • int main()
  • const int boyut 5
  • char csboyut
  • cout ltlt cs dizininin buyuklugu ltlt sizeof
    cs
  • return 0
  • Fakat, Cda bile bir const degiskeninin ilk
    degerini sabit bir ifade haricinde bir seyle
    belirleyemezsiniz. Örnegin, boyut degiskeni bir
    fonksiyon içinde bildirilmis bile olsa, ilk
    degerini fonksiyonun bir parametresi üzerinden
    alamaz.

26
const NITELEYICISI - 2
  • const niteleyicisi isaretçi bildirimlerinde de
    kullanilabilir. Bu tür bildirimlerde
    niteleyicinin yeri önemlidir
  • char const ptr buf // const isaretleyici
  • ptr a // legal
  • ptr buf2 // error
  • Asagidaki bildirimlerin anlami ise farklidir
  • const char ptr buf // consta isaretleyici
  • ptr buf2 // legal
  • ptr a // error

27
const NITELEYICISI - 3
  • const niteleyicisi bir fonksiyonun
    parametrelerinden birinin degerini degistirmesine
    engel olmak için de kullanilabilir
  • int salt_okur( const struct Node nodeptr )
  • Bu prototip salt_okur fonksiyonunun
    parametresinin isaret etmis oldugu Node
    toplulugunu degistiremeyecegini bildirmektedir.
    Fonksiyon içinde (siradan) bir isaretçi bildirimi
    yapilmis bile olsa, parametre güvenceli olarak
    kalir çünkü, salt-okur bir isaretçiyi siradan
    bir isaretçiye atayamazsiniz
  • int salt_okur( const struct Node nodeptr )
  • struct Node writeptr // siradan isaretçi
  • writeptr nodeptr // error

28
STRUCTURES, UNIONS, ENUMERATIONS
  • Cda, structure, union yada enumeration olan
    bir veri tipinde degisken bildirirken struct,
    union ve enum anahtar sözcüklerinin
    kullanilmasini zorunlu degildir
  • C Formati
  • struct addr addr_info
  • union u_type dönüstürücü
  • enum renk favori
  • C Formati
  • addr addr_info
  • u_type dönüstürücü
  • renk favori

29
int IÇIN VARSAYILAN DEGER KULLANIMI
  • Ca son zamanlarda yapilan bir degisiklik de,
    veri tipi belirtilmemis bildirimlerde veri
    tipinin int olmasi varsayimina izin
    verilmemesidir.
  • Cde ve geleneksel Cda varsayilan-int
    kuralinin en yaygin kullanimini fonksiyonlarin
    döndürdükleri deger tiplerinin belirlenmesinde
    görüyoruz
  • func(int i)
  • return ii
  • Standart Cda yukaridaki fonksiyonun
    döndürdügü deger tipinin int olacagi açikça
    belirtilmelidir
  • int func(int i)
  • return ii
  • Fakat, neredeyse bütün C derleyicileri
    varsayilan-int kuralini halen desteklemektedir.

30
Bool VERI TIPI
  • C bool adli bir boolean veri tipini
    desteklemektedir.
  • bool tipinde nesneler yalnizca Cnin anahtar
    sözcükleri içinde yer alan true ve false
    degerlerini alabilirler.
  • Gerektiginde bool degerlerini tamsayilara ve
    tamsayilari bool degerlerine dönüstüren otomatik
    dönüsümler uygulanmaktadir sifir olmayan
    degerler true degerine ve sifir false degerine
    dönüstürülürken true 1e ve false 0a
    dönüstürülmektedir.

31
Bool VERI TIPI - örnek
  • include ltiostreamgt
  •  using namespace std
  •  
  •  
  • bool IsEqual(int x, int y) return (x
    y)
  •  
  •  int main()
  •  
  •   cout ltlt "Enter a value "
  • int x
  •   cin gtgt x
  •   cout ltlt "Enter another value "
  •   int y
  •   cin gtgt y
  •  
  •   bool bEqual IsEqual(x, y)
  •  
  • if (bEqual)
  •  

32
ASIRI YÜKLENMIS FONKSIYONLAR
  • C ayni isimle birden fazla fonksiyon
    yaratilmasina izin verir
  • int kare(int x) return xx
  • double kare(double x) return xx
  • Deger atanmis parametreler bulunduran
    fonksiyonlarla ayni isimde farkli fonksiyonlar
    yaratmak bazen sorunlara yol açabilir
  • int f(int x)
  • float f(int a, int b 0)
  • int y f(5)

33
ASIRI YÜKLENMIS FONKSIYONLAR-ÖRNEK
  • include ltiostreamgt
  • using namespace std
  • void f1(int a)
  • void f1(int a, int b)
  •  
  • int main()
  • f1(10)
  • f1(10,20)
  •  void f1(int a) cout ltlt "f1 tek
    parametre\n"
  •  
  • void f1(int a, int b) cout ltlt "f1 cift
    parametre\n"
Write a Comment
User Comments (0)
About PowerShow.com