Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bu günkü konular Basit I/O Expressions (ifadeler)

Benzer bir sunumlar


... konulu sunumlar: "Bu günkü konular Basit I/O Expressions (ifadeler)"— Sunum transkripti:

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

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

3 printf/scanf Foksiyonları
C de formatlanmış input/output fonksiyonlarıdır Tanımlamaları standard I/O kütüphanesi içindedir. <stdio.h> Eğer bu fonksiyonları kullanmak istiyorsak programımızın başına #include <stdio.h> 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 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ı İfade kısmı Hangisi büyük? x değeri: 45, ikincisi y: x ve y toplamı =

5 printf Format belirtecleri
Karakter Tip Output Formatı c char Bir byte karakter d int İşaretli desimal integer f float İşaretli ondalıklı sayılar [ – ]dddd.dddd lf double e İşaretli gerçek sayılar - bilimsel kodlamalı [ – ]d.dddd e [sign]ddd

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. Tab Tab. OK satır. Satır başı: 8. satır.

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

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"); 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 | A| |A |

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); 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. | A|c | | | | | | | 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 printf Örnekler printf("%.9f\n", 300.00145678901f);
printf("%.19lf\n", ); float ın 7 basamak hassasiyeti var ( ) double ın 16 rakam hassasiyeti var ( )

11 scanf Örnekler "%c" char "%d" int "%f" float "%lf" double 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); "%c" char "%d" int "%f" float "%lf" double Değişken Adresi Format kısmı

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 İ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 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 Aritmetik Operatörler: Örnek
1 4 top = top % 3 % Modül 2 top = top / 2 / Bölme 8 top = top * 2 * Çarpma top = top – 2 - Çıkarma 6 top = top + 2 + Toplama top un sonraki değeri top un önceki değeri denklem Operator İşlem 3 4 --top -- Eksiltme 5 ++top ++ Artırma top un sonraki değeri top un önceki değeri denklem Operator İşlem

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 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 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 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 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 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 Birleşme & Öncelik Kuralları
Operator 1 ++, -- 2 *, /, % 3 +, - 4 =, +=, -=, .. 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 İfadeler Örnek(1) int a = 10, b = 22; int sonuc = a+b*3;
printf("a: %d, b: %d, <sonuc=a+b*3>: %d\n", a, b, sonuc); a: 10, b: 22, <sonuc=a+b*3>: 76 int a = 10, b = 22; int sonuc = (a+b)*3; printf("a: %d, b: %d, <sonuc=(a+b)*3>: %d\n", a, b, sonuc); a: 10, b: 22, <sonuc=(a+b)*3>: 96

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

25 İfadeler Örnek(3) int a = 7, b = 8; printf("a(önce): %d, ", a);
printf("a(sonra): %d, b: %d\n", a, b); a(önce): 7, a(sonra): 63, b: 8 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): 1, b(önce): 1, a(sonra): 3, b(sonra): 2, c: 1

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(önce): 10, b(önce): 5, a(sonra): 11, b(sonra): 6, sonuc: 17 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

27 Örnek C Program (1) #include <stdio.h>
/* 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 sayı2 yi girmelerini iste
Örnek C Program(2) 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ş #include <stdio.h> /* 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 */

29 Örnek C Program(3) #include <stdio.h>
/* ç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 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 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 C Program -Örnek(3) #include <stdio.h>
#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 Sembolik Sabitlerin Çözümlenmesi
prog.c COMPILER ASSEMBLER LINKER LOADER + OS prog.s prog.o printf.o scanf.o prog.exe program çalışması PREPROCESSOR prog.i 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.

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


"Bu günkü konular Basit I/O Expressions (ifadeler)" indir ppt

Benzer bir sunumlar


Google Reklamları