Bölüm 2 C Diline Genel Bir Bakış
1/29 /* Örnek1- toplama.c Klavyeden girilen iki tamsayının toplamını bulup ekrana yazar. Erkan Yasan */ #include /* printf, scanf işlevleri için başlık kütüğü (header file)*/ int main(void) { int birinciSayi, /* Toplanacak birinci sayı */ ikinciSayi; /* Toplanacak ikinci sayı */ double toplam; /* Birinci sayıyı kullanıcıdan al*/ printf("Toplami bulunacak 1. sayiyi giriniz: "); scanf("%d", &birinciSayi); /* İkinci sayıyı kullanıcıdan al */ printf("Toplami bulunacak 2. sayiyi giriniz: "); scanf("%d", &ikinciSayi); /* Sayıların toplamını bul */ toplam = birinciSayi + ikinciSayi; /* Toplamı ekrana yazdır */ printf("Girilen %d ile %d sayilarinin toplami: %f \n", birinciSayi, ikinciSayi, toplam); return (0); } #includeÖn işleyici komutu (preprocessor directive) stdio.hStandart başlık kütüğü (header file) /*... */Açıklama satırı (comment line) voidAyrılmış sözcük (reserved word) birinciSayiDeğişken (variable) printfStandart tanımlayıcı (identifier) = + Özel simgeler (special symbols) Bir C Programının Bileşenleri
2/29 Bir C Programının Genel Yapısı önişleyici komutları main işlevi başlığı { bildirim (declarations) kesimi uygulama kesimi }
3/29 Örnek Önişleyici Komutları #include #define PI #define AYLIK_ENFLASYON 10
4/29 main İşlevi Başlığı ve Gövdesi int main (void) { /* Başlık */... /* Gövde */ }
5/29 ANSI C Ayrılmış Sözcükleri autodoubleintstruct breakelselongswitch caseenumregistertypedef charexternreturnunion constfloatshortunsigned continueforsignedvoid defaultgotosizeofvolatile doifstaticwhile
6/29 Standart Tanımlayıcılar Ayrılmış sözcükler gibi, C’de özel anlamları olan tanımlayıcılar Örnek; printf scanf
7/29 Kullanıcı Tanımlayıcıları (User Defined Identifiers) Sabitler (constants) #define PI #define AYLIK_ENFLASYON 10 Değişkenler (variables) int birinciSayi, ikinciSayi; double toplam; char klavyedenGirilenKarakter;
8/29 Kullanıcı Tanımlayıcılarının Özellikleri 1.Bir tanımlayıcı (değişken ya da sabit) harf ya da rakam (ve altçizgi karakteri _ ) içerir. 2.Bir tanımlayıcı rakam ile başlayamaz. 3.C ayrılmış sözcükleri tanımlayıcı olarak kullanılamaz.
9/29 Kullanıcı Tanımlayıcıları GeçerliGeçersiz uzunluk1sayi AYLIK_ENFLASYONint Doubledouble maincap*Pi-Sayisi denemeVerisi_123Ali’ninNumarasi
10/29 ANCI C Tamsayı Veri Türleri TürAralık int short unsigned short unsigned long unsigned long
11/29 Tamsayı Veri Örnekleri
12/29 ANCI C Kayan Noktalı (floating point) Veri Türleri TürYaklaşık Aralık (pozitif) float double long double
13/29 double Veri Örnekleri VeriEşdeğer Karşılığı e e3 1.23e e
14/29 Aktarım Komutları x = y; x = x + y;x += y; x = -y;x = y; x = y + z – a + -b * c * -d % e; x = – * 3 * -2 % 11; x = ( – 8) + ((-2) * 3 * (-2) % 11); -2 * 3*% – 8+ x =
15/29 printf Komutu int ara1, /* Öğrencinin 1. ara sınav notu */ ara2; /* Öğrencinin 2. ara sınav notu */ double ortalama; /* Öğrencinin 2 ara sınav notu ortalaması*/... printf(“Ogrencinin 1. sinav notunu giriniz: ”);... printf(“Ogrencinin 2. sinav notunu giriniz: ”);... printf(“1. sinav: %d, 2. sinav: %d, ortalama: %f”, ara1, ara2, ortalama);
16/29 Sayısal Değerlerin Biçimlendirilmesi (formatting) Tamsayı Değerlerin Biçimlendirilmesi double Değerlerin Biçimlendirilmesi
17/29 Tamsayı Değerlerin Biçimlendirilmesi printf(“1. sinav: %5d, 2. sinav: %1d \n”, ara1, ara2);... ara1 = 55; ara2 = 88; sinav: █ █ █55, 2. sinav: 88 _
18/29 double Değerlerin Biçimlendirilmesi DeğerplaceholderÇıktı Görünümü %8.5f█ %4.4f %1.3f %6.4f %7.1f█ █ █ █ %9.3f█ █ █ %.4f %7.2f█ █ -1.00
19/29 Standart Giriş Aygıtından Veri Alma int i; double d; char c;... scanf(“%d %lf %c”, &i, &d, &c);...
20/29 ANSI C Açıklama Satırı /* toplama.c Derleme Ortamı: yapar */... int i; /* Deneme verisi */
21/29 Tamsayı Bölme / Type Casting (1) /* */ #include int main(void) { int ogrenciSayisi,/* Dersi alan toplam öğrenci sayısı */ toplamNot;/* Notların toplamı */ double ortalama;/* Notların ortalaması */ ogrenciSayisi = 5; toplamNot = 12; ortalama = toplamNot / ogrenciSayisi; printf("%d ogrencinin ortalamasi : %.2f", ogrenciSayisi, ortalama); } 5 öğrencinin ortalaması : 2.00
22/29 Tamsayı Bölme / Type Casting (2) /* */ #include int main(void) { int ogrenciSayisi,/* Dersi alan toplam öğrenci sayısı */ toplamNot;/* Notların toplamı */ double ortalama;/* Notların ortalaması */ ogrenciSayisi = 5; toplamNot = 12; ortalama = (double) toplamNot / (double) ogrenciSayisi; printf("%d ogrencinin ortalamasi : %.2f", ogrenciSayisi, ortalama); } 5 öğrencinin ortalaması : 2.40
23/29 Uygulama Bir araç, U uzunluktaki 3 aşamalı bir parkurun %x’lik birinci aşamasını V1, %y’lik ikinci aşamasını V2 ve %z’lik üçüncü aşamasını da V3 ortalama hızıyla tamamlıyor. Bu aracın tüm parkur boyunca ulaştığı ortalama hızı bulup uygun şekilde ekrana yazan bir programı, tüm geliştirme adımlarıyla birlikte yazınız. U, x, y, V1, V2, V3 değerleri kullanıcıdan alınacaktır.
24/29 ANSI C İşleçleri İşleçTürüÖncelik İşlev Çağrılarıyüksek ! + - &Tekli- aritmetik. * / %İkili- aritmetik. + –İkili- aritmetik. >=İlişkisel. == !=Eşitlik. &&Mantıksal (and). ||Mantıksal (or). =Aktarmadüşük
25/29 Mantıksal İşleçler aba && b aba || b a!a 10 01
26/29 İşleçlerle Örnekler x, y ile z’nin belirlediği (kapalı) aralığın içindedir (y’den büyük ya da ona eşit ve z’den küçük ya da ona eşittir) z <= x && x <= y x, y ile z’nin belirlediği (açık) aralığın dışındadır x y!(z <= x && x <= y) x’in değeri 5.2 ya da 8.9’dur x == 5.2 || x == 8.9
27/29 DeMorgan Kuralı (a || b)` = (a` && b`) (a && b)` = (a` || b`)
28/29 DeMorgan Kuralı- Örnek Bir iş için başvuru koşulu: Yaşı 18 ile 35 arasında olan (18 ve 35 dahil) erkek, lise ya da üniversite mezunları 18 <= yas && yas <= 35 && cinsiyet == ‘E’ && (okul == ‘L’ || okul == ‘U’) Geçersiz başvurular yas 35 || cinsiyet != ‘E’ || (okul != ‘L’ && okul == ‘U’)
29/29 Koşullu Aktarım if (dersNotu > 49) gecer = 1; else gecer = 0; gecer = dersNotu > 49 ? 1 : 0;