Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1 Basit I/O –scanf/printf Expressions (ifadeler) –Aritmetik Operatörler (+, -, *, /, %, ++, --) Önişlemci komutları ve tanımlanmış sabitler –#define direktifi.

Benzer bir sunumlar


... konulu sunumlar: "1 Basit I/O –scanf/printf Expressions (ifadeler) –Aritmetik Operatörler (+, -, *, /, %, ++, --) Önişlemci komutları ve tanımlanmış sabitler –#define direktifi."— Sunum transkripti:

1 1 Basit I/O –scanf/printf Expressions (ifadeler) –Aritmetik Operatörler (+, -, *, /, %, ++, --) Önişlemci komutları ve tanımlanmış sabitler –#define direktifi Bu günkü konular

2 2 Klavye Input/ Monitör Output #include int main() { scanf(); printf(); } /* son-main */ scanf/printf fonksiyonlarını kullanmayı başarmak –Bu fonksiyonların tanımlamaları dosyasının içerisindedir. Bu yüzden bu tanımlamaları başlangıçta eklememiz gerekiyor.

3 3 printf/scanf Foksiyonları C de formatlanmış input/output fonksiyonlarıdır –Tanımlamaları standard I/O kütüphanesi içindedir. –Eğer bu fonksiyonları kullanmak istiyorsak programımızın başına #include eklememiz gerekiyor. printf(FormatString, ifade1, ifade2, …); scanf(FormatString, &değişken1, &değişken2, …); FormatString çift tırnak arasında kullanılır –"abcdxyz" –“numara = %d\n" %d int (tam sayı) yazdırmak için kullanılan format türüdür.

4 4 printf Örnekler int x = 45; float y = 56.7; printf(“Hangisi büyük?\n"); /*sadece mesaj yazdır*/ printf("x değeri: %d, ikincisi y: %f\n", x, y); printf(“x ve y toplamı = %f\n", x+y); Format kısmı İfadekısmı Hangisi büyük? x değeri: 45, ikincisi y: x ve y toplamı =

5 5 printf Format belirtecleri KarakterTipOutput Formatı ccharBir byte karakter dintİşaretli desimal integer ffloatİşaretli ondalıklı sayılar [ – ]dddd.dddd lfdoubleİşaretli ondalıklı sayılar [ – ]dddd.dddd efloat double İşaretli gerçek sayılar - bilimsel kodlamalı [ – ]d.dddd e [sign]ddd

6 6 printf Örnekler printf(“İlk satır.\nikinci satır. Yüzde karakter% XYZ\n"); printf(“3. satır. Slaş \\, tek tırnak \'\n"); printf(“4. satır. Çift tırnak\". End\n"); printf("5. satır. karakter A:%c, ASCII değeri:%d\n", 'A', 'A'); printf("6. satır. Tab\tTab.\n"); printf("7. satır. Satır başı:\rOK\n"); printf("8. satır.\n"); İlk satır. İkinci satır. Yüzde karakter% XYZ 3. satır. Slaş \, tek tırnak' 4. satır. Çift tırnak". End 5. satır. karakter A:A, ASCII değer:65 6. satır. TabTab. OK satır. Satır başı: 8. satır.

7 7 printf Örnekler char c1 = 'A', c2 = 'c', c3 = '9', c4 = '\\'; int x = 11, y = 16; float f = 56.7; double d = ; printf("c1 :, c2 :, c3:, c4: \n", c1, c2, c3, c4); printf("x :, y :, ort : \n", x, y, (x+y)/2); printf(" + = \n", f, d, f+d); c1 :, c2 :, c3:, c4: x :, y :, ort : + =

8 8 printf: Alan uzunluğu belirtme & sağa-sola yaslama char ch = 'A'; printf(" \n"); printf("|%7c|\n", ch); printf("|%-7c|\n", ch); printf(“ \n"); | A| ch için 7 boşluk ayrılır ve sağa yaslanır. ch için 7 boşluk ayrılır ve sola yaslanır

9 9 printf: Alan uzunluğu belirtme & sağa-sola yaslama char c1 = 'A', c2 = 'c'; int x = 11, y = 16; float f = 56.7; double d = ; printf(" \n"); printf("|%7c|%-7c|\n", c1, c2); printf("|%-7d|%7d|\n", x, y); printf("|%7.2f|%-7.1lf|\n", f, d); printf(" \n"); | A|c | |11 | 16| | 56.70|456.8 | f için 7 boşluk ayrılır. 2 tanesi virgüllü kısım için bir tanesi nokta ‘.’ için. Sağa yaslanır. d için 7 boşluk ayrılır. 2 tanesi virgüllü kısım için bir tanesi nokta ‘.’ için. Sola yaslanır.

10 10 printf Örnekler printf("%.9f\n", f); printf("%.19lf\n", ); float ın 7 basamak hassasiyeti var ( ) double ın 16 rakam hassasiyeti var ( )

11 11 scanf Örnekler char c; int x; float y; double d; scanf("%d", &x); /* bir int oku */ scanf("%c", &c); /*bir karakter oku*/ scanf("%f", &y); /*bir float oku*/ scanf("%lf", &d); /*bir double oku */ /* 1 int, 1 float, 1 double oku*/ scanf("%d%f%lf", &x, &y, &d); Formatkısmı Değişken Adresi "%c" char "%d" int "%f" float "%lf" double

12 12 getchar ve putchar Fonksiyonları getchar klavyeden tek bir karakter alır putchar ekrana tek bir karakter yazar Örnek: char c; printf(“Ne yapalım Menu \n"); printf("(a) Bir C programı yazalım\n"); printf("(b) Yüzmeye gidelim \n"); printf("(c) TV izleyelim\n"); printf(“Opsiyonlardan birini seç: "); c = getchar(); /* Kullanıcı seçimini al*/ getchar(); /* yeni satıra geç '\n‘*/ /* karakterini koyar */ putchar('B'); /* Ekrana B yazdır */ c = 'Z'; putchar(c); /* Ekrana Z yazdır */

13 13 İfadeler ? +,-,*,/,%... gibi matematiksel operatörlerin kullanıldığı, bir değeri hesaplamak için kullanılan matematiksel formüller santigrat = (fahrenheit-32)/1.8; alan = 3.14*yaricap*yaricap; cevre = 2*3.14*yaricap; hacim = uzunluk*genislik*yukseklik; toplam = toplam + 5; …

14 14 Aritmetik Operatörler Temel operatörler aritmetik işlemler için kullanılan operatörlerdir. Genelde tüm programlama dilleri için aynıdır. Mod alma (kalan verme)% Bölme/ Çarpma* Çıkarma- Toplama+ Binary operatörler (iki operanda uygulanır) 1 Eksiltme-- 1 Artırma++ Unary operatörler (bir tek operanda uygulanır)

15 15 Aritmetik Operatörler: Örnek 14top = top % 3%Modül 24top = top / 2/Bölme 8 4 top = top * 2*Çarpma 24top = top – 2-Çıkarma 64top = top + 2+Toplama top un sonraki değeri top un önceki değeri denklemOperatorİşlem 34--top--Eksiltme 54++top++Artırma top un sonraki değeri top un önceki değeri denklemOperatorİşlem

16 16 Operator - Notlar Eğer iki operant intiger ise, bölme (/) işlemi tam bölme yapar. int a = 5; int b = 4; int sonuc = a/b; /* > 1 */ printf(“sonuc: %d\n", sonuc); /* ekrana 1 yazar*/

17 17 Karışık Operandlar Eğer operandlardan biri float/double ise diğer operand işlemden önce otomatik olarak float/double ye dönüştürülür. –Eğer sol-değer integer ise, sonuç atanmadan önce tip dönüştürme ile integer e dönüşür. –Eğer sol-değer float/double ise, sonuç atanmadan önce tip dönüştürme ile float/double a dönüşür. int sonuc; float fsonuc; sonuc = 5/4.0; /* > 1 */ fsonuc = 5/4.0; /* > 1.25 */ printf(“sonuc: %d, fsonuc: %.2f\n”, sonuc, fsonuc);

18 18 Unary Operatorler sonuc = ++a; /* önce arttırılır, sonra atanır */ Aşağıdakine denktir: a = a+1; sonuc = a; sonuc = --a; /* önce eksiltilir, sonra atanır*/ Aşağıdakine denktir: a = a-1; sonuc = a;

19 19 Unary Operatorler - devam sonuc = a++; /* atanır, sonra arttırılır*/ Aşağıdakine denktir: sonuc = a; a = a+1; sonuc = a--; /* atanır, sonra eksiltilir */ Aşağıdakine denktir: sonuc = a; a = a-1; Unary operatorler int ve float/double operandlar ile kullanılabilir. Fakat tipik olarak int ile kullanılır.

20 20 Birleşik Atama Operatörleri Birleşik atama operatörleri: += -= *= /= %= … Örneğin: toplam += data; /* toplam = toplam + data */ a -= 6; /* a = a – 6; */ carpim *= data; /* carpim = carpim*data */ a %= 2; /* a = a % 2 */ a /= b+c; /* a = a / (b + c) */ …

21 21 Birleşme & Öncelik Bir ifade birden fazla aynı tip operatör içeriyorsa birleşme özelliği uygulanır. sonuc = a+b+c;  sonuc = (a+b)+c; /* sol birleşme */ a = b = c;  a = (b=c); /* sağ birleşme */ Eğer bir ifade birbirinden farklı operatörler içeriyorsa, öncelik kuralı uygulanır. sonuc = a+b*c;  sonuc = a+(b*c); /* ‘*’ çarpma ‘+’ toplamadan */ /* daha önceliklidir. */

22 22 Birleşme & Öncelik Kuralları =, +=, -=,.. 4 +, -3 *, /, %2 ++, --1 OperatorÖncelik Bütün birleşme ve öncelik kurallarını hatırlamak zordur. Bu yüzden ifadeleri parantez ile ayırmak en iyi yöntemdir. sonuc = (a*b) + (a/b);

23 23 İfadeler Örnek(1) int a = 10, b = 22; int sonuc = a+b*3; printf("a: %d, b: %d, : %d\n", a, b, sonuc); int a = 10, b = 22; int sonuc = (a+b)*3; printf("a: %d, b: %d, : %d\n", a, b, sonuc); a: 10, b: 22, : 76 a: 10, b: 22, : 96

24 24 İfadeler Örnek(2) int a = 7, b = 9, c = 4; int sonuc = (a+10)%b/c; printf("a: %d, b: %d, c: %d, : %d\n", a, b, c, sonuc); int a = 7, b = 9, c = 4; int sonuc = (a+10)%(b/c); printf("a: %d, b: %d, c: %d, : %d\n", a, b, c, sonuc); a: 7, b: 9, c: 4, : 2 a: 7, b: 9, c: 4, : 1

25 25 İfadeler Örnek(3) int a = 7, b = 8; printf("a(önce): %d, ", a); a *= b + 1; printf("a(sonra): %d, b: %d\n", a, b); a = b = c = 1; printf("a(önce): %d, b(önce): %d, ", a, b); a += b += c; printf("a(sonra): %d, b(sonra): %d, c: %d\n", a, b, c); a(önce): 7, a(sonra): 63, b: 8 a(önce): 1, b(önce): 1, a(sonra): 3, b(sonra): 2, c: 1

26 26 İfadeler Örnek(4) a = 10; b = 5; printf("a(önce): %d, b(önce): %d, ", a, b); sonuc = (a b); printf("a(sonra): %d, b(sonra): %d, sonuc: %d\n", a, b,sonuc); a = 10; b = 5; printf("a(önce): %d, b(önce): %d, ", a, b); sonuc = (++a + ++b); printf("a(sonra): %d, b(sonra): %d, sonuc: %d\n", a, b,sonuc); a(önce): 10, b(önce): 5, a(sonra): 11, b(sonra): 6, sonuc: 16 a(önce): 10, b(önce): 5, a(sonra): 11, b(sonra): 6, sonuc: 17

27 27 Örnek C Program (1) #include /* Fahrenheit’ı santigrata dönüştür */ main() { float fahrenheit,santigrat; printf(“fahrenheit sıcaklığı gir: “); scanf(“%f”, &fahrenheit); santigrat = (fahrenheit-32)/1.8; printf(“%f fahrenheit derece %f santigrat dereceye eşittir\n”, fahrenheit, santigrat ); } /* son-main*/ Kullanıcıdan dönüştüreceğin Fahrenhayt dereceyi girmesini iste santigrat = (fahrenheit-32)/1.8 Fahrenhayt ve Santigrat dereceleri ekrana yazdır. Başla Bitiş

28 28 Örnek C Program(2) #include /* 2 int sayının toplam, çarpım ve */ /* ortalamasını hesaplama */ main() { int sayi1, sayi2; int toplam, carpim, ortalama; printf(“2 sayı girin: “); scanf(“%d%d”, &sayi1, &sayi2); toplam = sayi1+sayi2; carpim = sayi1*sayi2; ortalama = toplam/2; printf(“toplam:%d, carpim:%d ort:%d \n”, toplam, carpim, ortalama); } /* son-main */ Kullanıcıdan sayı1 ve sayı2 yi girmelerini iste toplam = sayı1 + sayı2 toplam, çarpım ve ortalamayı ekrana yaz çarpım = sayı1 * sayı2 ortalama =toplam/2 Başla Bitiş

29 29 Örnek C Program(3) #include /* çemberin çevresi ve alanını hesaplama */ main() { float yaricap, cevre, alan; printf(“yaricap girin: “); scanf(“%f”, &yaricap); cevre = 2* *yaricap; alan = *yaricap*yaricap; printf(“cevre: %f, alan: %f\n”, cevre, alan); } /* son-main */ Kullanıcıdan çemberin yarıçapını girmesini iste cevre = 2* *yaricap Çevre ve alanı ekrana yazdır alan = *yaricap*yaricap; Başla Bitiş Çemberin yarıçapını al

30 30 Sembolik Sabit Gerekliliği… Bir önceki C programında iki defa PI = olarak kullandık. Bu şekilde sayıları C programlarında kullanmak genelde hatalara sebebiyet verebilir. –PI sayılarından birini yanlış yazabiliriz! –Eğer PI sayısını daha hassas yazmak istesek tüm PI sayılarını değiştirmemiz gerekecek ki buda hatalara sebebiyet verebilir. Soru: Bir çözüm varmı? –Evet: Sembolik sabitler

31 31 Sembolik Sabit Tanımlama #define önişlemci direktifi kullanılarak tanımlanır. - #define Örnek: #define TRUE 1 #define FALSE 0 #define PI Sembolik sabit kullanımı: –cevre = 2*PI*yaricap; –alan = PI*yaricap*yaricap;

32 32 C Program -Örnek(3) #include #define PI /* çemberin çevresi ve alanını hesaplama */ main() { float yaricap, cevre, alan; printf(“yarıçap girin: “); scanf(“%f”, &yaricap); cevre = 2*PI*yaricap; alan = PI*yaricap*yaricap; printf(“cevre: %f, alan: %f\n”, cevre, alan); } /* son-main */

33 33 Sembolik Sabitlerin Çözümlenmesi Sembolik sabitler derleme başlamadan önişlemci tarafından çözümlenir –Önişlemciler bul/değiştir gibi çalışırlar –Bulduğu her PI nin yerine yazar –Önişlemciler aynı zamanda açıklama satırlarını siler. Bu sayede derleyici onlarla uğraşmaz. prog.c COMPILER ASSEMBLER LINKER LOADER + OS prog.s prog.o printf.o scanf.o prog.exe program çalışması PREPROCESSOR prog.i

34 34 Genel #define Hatası Buradaki hatayı bulun: #define SIZE 5; int main() { printf(“Size = %d\n”, SIZE); } int main() { printf(“Size = %d\n”, 5;); } Önişlemcinin bul/değiştir yapmasından sonra:


"1 Basit I/O –scanf/printf Expressions (ifadeler) –Aritmetik Operatörler (+, -, *, /, %, ++, --) Önişlemci komutları ve tanımlanmış sabitler –#define direktifi." indir ppt

Benzer bir sunumlar


Google Reklamları