Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

C ile Programlama İbrahim GAZALOĞLU HUNRobotX 2012.

Benzer bir sunumlar


... konulu sunumlar: "C ile Programlama İbrahim GAZALOĞLU HUNRobotX 2012."— Sunum transkripti:

1 C ile Programlama İbrahim GAZALOĞLU HUNRobotX 2012

2 YENİ BİR DİL DOĞUYOR! Dennis MacAlistair Ritchie (d. 9 Eylül ö. 12 Ekim 2011) Uzun süre birlikte çalıştığı arkadaşı Ken Thompson ile birlikte C programlama dilini ve Unix işletim sistemini yazan saygın ABD'li bilgisayar mühendisi. 1983’te Turing Ödülü’nü, 1999’de Ulusal Teknoloji Madalyası ödülünü aldı. 12 Ekim 2011'de hayatını kaybetmiştir. HUNRobotX 2012

3 Yazılım Nedir? YAZILIM : Komutlar zinciri kullanarak bir problemin çözümü için geliştirilen bilgisayar programlarıdır. PROBLEM : 1’den 10’a kadar olan sayıların toplamını bulma YAZILIMSAL ÇÖZÜM # include <stdio.h> int main() { int toplam=0, sayi=0; while(sayi<=10) toplam+=sayi; sayi++; } printf(“TOPLAM : %d”,toplam); HUNRobotX 2012

4 DERLEYİCİ NEDİR ? Derleyici yazdığınız kodları yorumlayan ve onları makine(genellikle) diline çeviren aracı yazılımlardır. HUNRobotX 2012

5 Derleme Aşamaları OBJ, Çalıştırılabilir bir kod değildir. Makina kodu ve apileri içerir OBJ = Nesne Kodu Bütün programlama dilleri için aynıdır Bağlayıcı = Birden fazla nesne kodunun birleştirilip makina kodu yapılması HUNRobotX 2012

6 PROGRAMLAMA DİLLERİNİN DEĞERLENDİRME ÖLÇÜTLERİ
+ Seviye Yazılım dilinin insan algısına yakınlığının ölçütüdür. Yüksek seviyeli dil kullanışlı ve güçlü dil anlamına gelmez C dili orta seviyeli bir dildir . + Okunabilirlik Okunabilirlik kaynak kodun çabuk ve iyi algılanabilmesi için gerekli ve önemli bir kriterdir. Yazılımın başkaları tarafından okunup anlaşılabilmesi ve geliştirilebilmesi için muhakkak uygulanmalıdır. HUNRobotX 2012

7 Kodlarınız okunaklı olmalı
#include <stdio.h> #include <iostream> int main() { int sayi,i; printf("Ust sinir girin : \n"); scanf("%d",&sayi); // Kullanıcıdan sayı iste printf("CIFTLER\t\t\ TEKLER\”); printf(“n=======\t\t=======\n\n"); for(i=0;i<=sayi;i++) { if(i%2==0) printf(" %d\n",i); else printf(" \t\t%5d\n",i); // Çift değilse atla } system("pause"); HUNRobotX 2012

8 BÖYLE OLMASIN  #include <stdio.h> #include <iostream>
int main() {int sayi,i;printf("Ust sinir girin : \n"); scanf("%d",&sayi); system("cls");printf("CIFTLER\t\t\ EKLER\n=======\t\t =======\n\n ");for(i=0;i<=sayi;i++) {if(i%2==0) { printf(" %d\n",i); } else printf(" \t\t%5d\n",i); system("color c");system("pause"); }

9 Javanın hemen her platformda çalışabilmesi
+ Taşınabilirlik Bir sistem için yazılan programın farklı sistemler üzerinde çalışabilme yetisidir. Javanın hemen her platformda çalışabilmesi + Verimlilik - Programın hızlı ve mümkün olduğunca düşük RAM tüketmesi HUNRobotX 2012

10 C ‘nin Bazı Üstünlükleri
* C dili orta seviyeli bir dildir : İnsan diline yakındır kolay anlaşılır. Bu getirisinin yanında Makine dilinin hakimiyetinden çok az şey kaybeder * C algoritmik bir dildir : Problemin belirli adımlar zinciri izleyerek çözülmesini sağlar. * C diğer dillerle kıyaslandığında taşınabilirliği çok yüksek olan bir dildir : Genel kabul görmüş yaygın standartlara sahiptir. HUNRobotX 2012

11 Sayı Sistemleri 10 (Decimal) tabanında bir sayı ;
(1478)10 = 8*10^0 + 7*10^1 + 4*10^2 + 1*10^3 2 (Binary) tabanında bir sayı ; (1010)2 = 0*2^0 + 1*2^1 + 0*2^2 + 1*2^3 Bilgisayar sistemlerinde 2’lik sayı sistemi kullanılır. Binary system Binary sistemdeki her rakama bit (=binary digit kelimesinden türemiştir) Bilgisayar sistemlerinde ölçüler : 8 bit = 1 byte 1024 byte = 1 Kilobyte (KB) Megabyte = 1 Gigabyte (GB) 1024 kilobte = 1 Megabyte (MB) Gigabyte = 1 Terabyte (TB) HUNRobotX 2012

12 Sistem programcılığında kullanılan daha küçük birimler
8 bit 1 byte 16 bit 1 word 32 bit 1 double word 64 bit 1 quadro word Onluk Sayı Sisteminden İkilik Sayı Sistemine Dönüşüm Örnek olarak 87 sayısı ikilik sayı sisteminde ifade edilmek istensin: HUNRobotX 2012

13 Onaltılık sayı sisteminde 16 simge bulunur.
Onaltılık (HEX) ve Sekizlik (OCTAL) Sayı Sistemleri Onaltılık sayı sisteminde 16 simge bulunur. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 A = 10, B = 11, C = 12, D = 13, E = 14, F = 15 Onaltılık sayı sisteminde yazılmış bir sayıyı onluk sistemde ifade etmek : 01AF = (15 * 1) + (10 * 16) + (1 * 256) + (0 * 4096) = 431 Onaltılık (HEX) sayı sisteminden İkilik (Binary) sisteme dönüşüm Örnek : 2ADF 2 = A = D = F = 1111 Bu durumda 2ADF = HUNRobotX 2012

14 Tam sayı kısmı dönüştürülür Kesirli kısım dönüştürülür
İkilik sayı sisteminden onaltılık sayı sistemine de benzer şekilde dönüşüm yapılabilir: = AEB1 = 2D3E Kesirli Dönüşümler (13.25)10 = (?) Tam sayı kısmı dönüştürülür Kesirli kısım dönüştürülür 13/6 = 2 + kalan 1 6/2 = 3 + kalan 0 3/2 = 1 + kalan 1 1/2 = 0 + kalan 1 Burdan 1101 elde edilir. 0.25 x 2 = tam kısmı 0 0.5 x 2 = tam kısmı 1 Burdan elde edilir HUNRobotX 2012

15 4 İŞLEM 2 lik sistemde toplama 2 lik sistemde çarpma
(10110)2 + (01010)2 = (100000)2  (110101)2 * (111)2 = (?)2 2 lik sistemde toplama (10110)2 - (01010)2 = (01100)2 2 lik sistemde bölme (10) =(1010)2 =(100)2 (1010)2 / (100)2 = (?) 2 HUNRobotX 2012

16 Veri Türleri 1. Önceden Tanımlanmış Türler
Programlama dilinin tasarımından kaynaklanan ve dilin kurallarına göre varlığı güvence altına alınmış olan türlerdir 2. Programcının Tanımlanmış Olduğu Türler Programlama dillerinin çoğu, önceden tanımlanmış veri türlerine ek olarak, programcının da yeni türler tanımlanmasına izin verir. HUNRobotX 2012

17 ÖNCEDEN TANIMLANMIŞ VERİ TÜRLERİ
Tam sayı türleri HUNRobotX 2012

18 Gerçek sayı türleri n (Ondalıklı Sayılar)
HUNRobotX 2012

19 Değişkenlerin Tanımlanması
Değişken : Değeri program içinde değişebilen kullanılacak verilerin depolandığı alanlara erişim için atanan değerlerdir Değişkenlerin Tanımlanması Değişken tanımlama kuralları : * İlk harfi sayı olamaz. Harf veya alt çizgiyle başlamalı * _ (altçizgi) işaretinden başka noktalama işareti içeremez * Değişkenler arasında boşluk olamaz * C büyük/küçük harf duyarlı bir dildir ( Case Sensitive) * Anahtar sözcük olamaz HUNRobotX 2012

20 Yerel ve Evrensel(Global) değişken
Yerel değişken tanımlandığı alanda(blok) faaliyet gösteren değişken.Bu alanlar dışında kullanılamaz Örnek : int main() { { int degisken_1; } int degisken_2; } int global_degisken; int main () { .... } Evrensel değişken programın her yerinden ulaşılabilen değişken Evrensel değişkenler bütün fonksiyonların dışında tanımlanırlar HUNRobotX 2012

21 DEĞİŞKENLERİN BİLDİRİM YERLERİ
1. Blokların içinde 2. Tüm blokların dışında. 3. Fonksiyon parametre değişkeni olarak fonksiyon parantezlerinin içerisinde HUNRobotX 2012

22 DEĞİŞKENLERİN TÜRLERİ
Bildirim yaptığınız değişkeni türü ile birlikte derleyiciye tanıtmalısınız. <tür ismi> <degisken adi>; Örneğin tamsayı tutacak bir değişken tanımlayacaksanız int tamsayi_1; şeklinde bir tanımlama yapmalısınız. HUNRobotX 2012

23 İFADE & DEYİM İFADE (Expression) a + b / 2 c * 2,
d = h + 34 geçerli ifadelerdir. DEYİM (statement) sonuc = sayi1 * sayi2 bir ifadedir. Ancak sonuc = sayi1 * sayi2 ; bu bir deyimdir HUNRobotX 2012

24 ÖNİŞLEMCİ KOMUTLARI Önişlemci komutları derleyicinin derleme işlemine başlamadan işleme koyduğu komutlardır. Yaygın olarak kullanılan komutlar #define ve #include’dir. Kodunuz çalıştırılabilir hale gelmeden önce bu komutların gereği yapılır daha sonra kodunuzun gerekleri yerine getirilir. HUNRobotX 2012

25 #define #define tanımla demektir.Derleyiciye tanımladığınız bir sayıyı,sabiti,fonksiyonu kod içinde farklı şekillerde kullanacağınızı bildirir. Örnek : #define PI 3.14 #define YAZ printf(“Önişlemci Komutları #define”); HUNRobotX 2012

26 #include Bu komut dışardan kaynak kodunuza farklı bir dosyanın içeriğini dahil etmenizi sağlar Örnek : #include <stdio.h> #include <fonksiyonlarim.c> . . . Burda kaynak kodunuza stdio.h ve fonksiyonlarim.c dosyalarinin içeriği derleme sırasında aynen kopyalanır. ** printf ve scanf gibi fonksiyonlar stdio.h dosyasındadır HUNRobotX 2012

27 Printf() Ekrana yazı yazdırmak için kullanılan fonksiyondur.
Kullanımı printf(“HUNROBOTX”); şeklindedir. Eğer dışardan alınan veri yazdırılacaksa printf(“Dısaridan alinan sayi : %d”,sayi); gibi bir kullanımı vardır. Yazdırdığı karakter sayısını geri döndürür. Dışardan alınan veri türüne göre tanımlayıcılar değişir : %d=integer(tamsayı) %f=float(kesirli_sayı) %c=karakter HUNRobotX 2012

28 Scanf() Kullanıcıdan veri okumak için kullanılır
Kullanımı scanf(“%d”,&okunan_sayi); Tanımlayıcıları okunacak veri türüne göre değişir scanf(“%lf”,&okunan_sayi); = Ondalıklı sayı okur scanf(“%c”,&okunan_karakter); = Karakter okur Scanf(“%s”,&okunan_string); = String(Cümle) okur . . . HUNRobotX 2012

29 UYGULAMA DAIRENIN ALANININ HESAPLANMASI HUNRobotX 2012

30 SABİTLER Programcı tarafından doğrudan girilen verilerdir.
Sabitlerin sayısal değerleri derleme zamanında tam olarak bilinmektedir. x = y + z; d = x + 10; HUNRobotX 2012

31 TAM SAYI SABİTLERİ Bunlar tipik olarak int türden değişkenlerine atanan ve tamsayı biçiminde olan sabitlerdir C’de int türü sınırları içinde olan her tamsayı birer tamsayı sabit (ya da int türden sabit ) olarak ele alınır. -25 30000 25789 HUNRobotX 2012

32 KARAKTER SABİTLERİ (CHAR)
char sabitleri tipik olarak char türden nesnelere atanan sabitlerdir. 'a' 'J' 'Ç' ':' '8' '<‘ '\0' '\x0' '\0' NULL karakter 0 '\a' '\x7' '\07' çan sesi (alert) 7 '\b' '\x8' '\010' geri boşluk (back space) 8 '\t' '\x9' '\011' tab karakteri (tab) 9 '\n' '\xA' '\012' aşağı satır (new line) 10 '\v' '\xB' '\013' düşey tab (vertical tab) 11 '\f' '\xC' '\014' sayfa ileri (form feed) 12 '\r' '\xD' '\015' satır başı (carriage return) 13 '\"' '\x22' '\042' çift tırnak (double quote) 34 '\\' '\x5C' '\134' ters bölü (back slash) 92 HUNRobotX 2012

33 '\x41' /* 41H numaralı ASCII karakteridir */
'\xff‘ /* FFH numaralı '2' karakter sabitidir */ '\x1C' /* 1C numaralı ASCII karakter sabitidir. */ '\012' /* 10 numaralı ASCII karakteri */ '\16‘ /* 14 numaralı ASCII karakteri */ '\123' /* 83 numaralı ASCII karakteri. */ HUNRobotX 2012

34 Operatör, operand Öncelik sırası
OPERATÖRLER Operatör, operand Öncelik sırası HUNRobotX 2012

35 Operatör nedir? Operatörler, nesneler veya sabitler üzerinde önceden tanımlanmış birtakım işlemleri yapan atomlardır. HUNRobotX 2012

36 C de her ifade en az bir operatör içerir. c=a*b/2; 3 operatör var: =*/
d=fonk(); 2 operatör var: =() c=a>4; 2 operatör var: => ++x; 1 operatör var: ++ HUNRobotX 2012

37 a+b operatör: +, operandları: 2 tane a,b
Her operatörün operandları vardır. Operandlar operatörlerin işleme soktukları nesneler ya da sabitlerdir. a+b operatör: +, operandları: 2 tane a,b c++ operatör: ++, operandları: 1 tane c b>c operatör: >, operandları: 2 tane b,c HUNRobotX 2012

38 Yüksek Öncelik Düşük Öncelik HUNRobotX 2012

39 UYARI Operatörlerin içinde bir kısmı soldan sağa incelenir,
Bir kısmı da sağdan sola incelenir. HUNRobotX 2012

40 > ,>=, <, <= soldan sağa == ,!= soldan sağa && soldan sağa
Operatörlerin hangi yönde önceliklerine bakılacağını gösteren tablo () soldan sağa ! ,++ ,-- sağdan sola * , / , % soldan sağa +, - soldan sağa > ,>=, <, <= soldan sağa == ,!= soldan sağa && soldan sağa || soldan sağa = sağdan sola HUNRobotX 2012

41 Operatörler arasındaki öncelik ilişkisi
c=a+b*2; ifadesi derleyici tarafından şu sırada ele alınır. işlem1: b*2; işlem2: a+işlem1; işlem3: c=işlem2; HUNRobotX 2012

42 x=a*b-2/3; işlem1: a*b; işlem2: 2/3; işlem3: işlem1 – işlem2;
İşlem4: x=işlem3; Aynı önceliğe sahip olan operatörler arasında işlem sırası iki şekilde de olabilir. HUNRobotX 2012

43 Bölme ve çarpma operatörleri aynı önceliğe sahiptir. İ1: b/2 İ2: İ1*c
a=x-b/2*c; Bölme ve çarpma operatörleri aynı önceliğe sahiptir. İ1: b/2 İ2: İ1*c İ3: x-İ2 İ4: a=İ3 HUNRobotX 2012

44 C de atama operatörü sağdan sola öncelikli operatördür. a=b=c; İ1: b=c
İ2: a=İ1 HUNRobotX 2012

45 a=(b+2)*80; İ1: (b+2) İ2: İ1*80 İ3: a=İ2 HUNRobotX 2012

46 Operatörleri 3 sınıfa sınıflandırılır
İşlevlerine göre Operand sayılarına göre Operatörün konumuna göre HUNRobotX 2012

47 İşlevlerine göre operatörler
Aritmetik İlişkisel Mantıksal Bit Gösterici Özel amaçlı operatörler HUNRobotX 2012

48 Aritmetik operatörler
Dört işlemle ilgili olan; * çarpma / bölme % mod alma (bölümden kalan) + toplama - çıkartma HUNRobotX 2012

49 İlişkisel(karşılaştırma)operatörleri
> büyük < küçük >= büyük yada eşit <= küçük yada eşit == eşit != eşit değil HUNRobotX 2012

50 Mantıksal operatörler
! Değil (not) && ve (and) || veya(or) HUNRobotX 2012

51 Artırma(++) Eksiltme(--)
++, 1 artır eksilt anlamındadır ++a ile a++; aynı anlamda değildir --a ile a--; ikisi de aynı anlamdadır HUNRobotX 2012

52 İlişkisel operatörler
C’de ilişkisel operatörlerin ürettiği değer, koşul sağlanıyorsa 1, sağlamıyorsa 0 değerini üretir. a=5>2; /*a=1*/ b=3==3 /*b=1*/ c=4<=1 /*c=0*/ HUNRobotX 2012

53 z=y<=x+10; /*z değeri nedir?*/ a=5; b=10;
c=a==10<b+1; /*c değeri nedir?*/ a=10*2+1>=4*4+5==5>5-3*2; /*a değeri nedir?*/ HUNRobotX 2012

54 İ1: 10*2 20 İ2: 4*4 16 İ3: 3*2 6 İ4: İ1+1 21 İ5: İ2+5 21 İ6: 5-İ3 -1
İ10: a=İ9 Sonuç a=1 HUNRobotX 2012

55 Mantıksal operatör ! değil tek operandlı && ve iki operandlı
|| veya iki operandlı İlişkisel operatörlerde; koşul sağlanıyorsa 1, sağlamıyorsa 0 değerini alır. Mantıksalda ise; Sayı 0 ise YANLIŞ, sıfır değil(sıfır dışında bir sayı) ise DOĞRU değerini alır. HUNRobotX 2012

56 a=!6 /*a nin değeri nedir?*/
6 sayısı sıfır dışı bir sayı olduğu için DOĞRU dur. Ancak “!” ile bunun tersi alınmıştır. Doğrunun tersi yanlıştır. Sonuç yanlış olacaktır. HUNRobotX 2012

57 b=10+4>5+!2; /*b nin değeri nedir?*/ İ1:!2 0 İ2:10+4 14 İ3:5+i1 5
İ5:b=i4 1 Sonuç 1 dir. HUNRobotX 2012

58 b=!++a>10!=5; /*b nin değeri nedir?*/ i1: ++a 11 i2: !i1 0
i5: b=i4 1 sonuç 1 dir. HUNRobotX 2012

59 Ve(and) - && operatörü İlişkisel operatörlerin hepsinden düşük önceliklidir. Operandların ikisi doğru ise doğru(1) değerini, operandların bir tanesi yanlış ise yanlış değerini(0) alır. a=4 && 0; /*a değeri 0 dir*/ b=10 && -4 /*b değeri 1 dir*/ c=0 && 0 /*c değeri 0 dir*/ Yani bir operand 0 ise sonuç 0 dır. HUNRobotX 2012

60 a=5; b=!a>10&&fonk()==10; /*b nin değeri nedir?*/ a=15;
x=a>=10&&a<=20; /*x nin değeri nedir?*/ HUNRobotX 2012

61 UYGULAMALAR HUNRobotX 2012


"C ile Programlama İbrahim GAZALOĞLU HUNRobotX 2012." indir ppt

Benzer bir sunumlar


Google Reklamları