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

Slides:



Advertisements
Benzer bir sunumlar
OPERATÖRLER.
Advertisements

STRİNG FONKSİYONLARI.
Soru1: 1’den 4’e kadar olan tamsayıları ekrana tek satırda görülecek şekilde yazdıran bir programı aşağıdaki metotları kullanarak yazınız. Bir printf ifadesi.
Değişken , Veri Türleri ve Operatörler
BÖLÜM Atama Deyimi (Assignment)
Öğrenilmesi gerekenler: Operatör, operand Öncelik sırası
OPERATÖRLER Programlama dillerinde tanımlanmış sabit ve değişkenler üzerinde işlemler yapmayı sağlayan karakter ya da karakter topluluklarına operatör.
C PROGRAMLAMA DİLİNE GİRİŞ
Bölüm 2 C Dilinin Temelleri
switch - case Yapısı Döngü Yapıları
C Programlama Diline Giriş
C PROGRAMLAMA DİLİNE GİRİŞ
Atama ve Girdi/Çıktı Komutları
BPR151 ALGORİTMA VE PROGRAMLAMA - I
String Kütüphanesindeki Arama Fonksiyonları
BPR151 ALGORİTMA VE PROGRAMLAMA - I
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Operatörler.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
Soru1: Kullanıcıdan iki tam sayı girmesini isteyen ve daha sonra büyük olan sayı ile beraber ‘en büyüktür’ ifadesi yazan, ancak sayılar birbirine eşitse.
Temel Bilgi Teknolojileri
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
FONKSİYONLAR.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
İnternet Programlama - 2
PROGRAM DENETİM DEYİMLERİ
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 8.  Tamsayı Değerler (Integer) Tamsayılar, 10 tabanlı (decimal), 8 tabanlı (octal) veya 16 tabanlı (hexadecimal)
Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri Dizgi Çıktı İşlemleri Dizgi Fonksiyonları Karakter Fonksiyonları Gösterge Dizgileri.
C PROGRAMLAMA DİLİ YRD.DOÇ.DR. BUKET DOĞAN 1.
Pointer (İşaretçi) Yapısal Veri Tipleri (Struct)
Bugünkü konular Programlama dilleri ve Syntax Generic C Program yapısı
Bu Günkü Konular If yapısı ve karşılaştırma operatörleri
Bugünkü Konular Döngüler ve Akış Diyagramları C de Döngü Tanımlama
1 Yapılandırılmamış programlama Prosedür/Fonksiyon gerekliliği Prosedural Programlama Fonksiyon Tanımlama/Prototip/Çağırma Örnek fonksiyonlar Fonksiyon.
2. HAFTA 2. Hafta.
Algoritmalar ve Programlama I Ders 5: Operatörler
Bölüm 3 Atama ve Girdi/Çıktı Komutları Bölüm 3 Atama ve Girdi/Çıktı Komutları Atama Komutu Operatörler İsim Sabitleri Veri Tipi Dönüşümü Çıktı Fonksiyonu.
Değişkenler Programda Değişken Tanımlama. Değişken nedir? (Variables) Program içinde kullanılan veri(data)nin tutulduğu alanın adıdır. Her veri bir tür.
BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)
Adım Adım Algoritma.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
1 Değişken alanları Geçici değişkenler Birleşik ifadeler(bloklar) ve değişkenler Değişken Depolama Süresi ve Alanı –Local ve global değişkenler –Static.
BİLGİSAYAR PROGRAMLAMA Ders 4: Koşula Göre İşlem Yapma Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 3: C ile Programlamaya Giriş
Hesaplama Tabloları (MS For Mac Excel -2) Öğr.Gör. Mehmet Akif Barış.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Örnek Sorular Bilgisayar Programlama BIL 107. Soru 1: Ekran çıktısında 66 yazması için boşlukları doldurunuz ______ i = 'A'; printf(____, i__); CEVAP:
BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları 1.
PROGRAMLAMAYA GİRİŞ.
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Bilgisayar Programlama BIL 107
Fonksiyonlar ve Diziler
Printf Bu komut ekrana çıktı veren komuttur. Pascalda kullanılan writeln komutuyla aynı anlamdadır.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Bölüm 3 Atama ve Girdi/Çıktı Komutları
2.2. Özel Semboller ve Pascal Sözcükleri
Veri Tipleri 12/4/2018.
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
Bilgisayar Programlamasına ve Veri Analizine Giriş
2.2. Özel Semboller ve Pascal Sözcükleri
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Aritmetik Operatörler
Bir Döngünün Bölümleri (hatırlatıcı)
Sunum transkripti:

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

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 */

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.

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: 56.70000 x ve y toplamı = 101.7000

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

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.

printf Örnekler char c1 = 'A', c2 = 'c', c3 = '9', c4 = '\\'; int x = 11, y = 16; float f = 56.7; double d = 456.789345; 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> <56.70000> + <456.7893450000000> = <513.4893450000000>

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 |

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 = 456.789345; 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 | |11 | 16| | 56.70|456.8 | 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.

printf Örnekler printf("%.9f\n", 300.00145678901f); printf("%.19lf\n", 300.0014567890123456789); 300.001464844 300.0014567890123700000 float ın 7 basamak hassasiyeti var (3000014) double ın 16 rakam hassasiyeti var (3000014567890123)

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ı

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 */

İ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; …

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)

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

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.25 -> 1 */ printf(“sonuc: %d\n", sonuc); /* ekrana 1 yazar*/

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.25 -> 1 */ fsonuc = 5/4.0; /* 1.25 -> 1.25 */ printf(“sonuc: %d, fsonuc: %.2f\n”, sonuc, fsonuc);

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;

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.

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) */ …

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. */

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

İ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

İ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

İ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

İ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

Ö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ş

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 */

Ö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*3.141592*yaricap; alan = 3.141592*yaricap*yaricap; printf(“cevre: %f, alan: %f\n”, cevre, alan); } /* son-main */ Kullanıcıdan çemberin yarıçapını girmesini iste cevre = 2*3.141592*yaricap Çevre ve alanı ekrana yazdır alan = 3.141592*yaricap*yaricap; Başla Bitiş Çemberin yarıçapını al

Sembolik Sabit Gerekliliği… Bir önceki C programında iki defa PI = 3.141592 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

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

C Program -Örnek(3) #include <stdio.h> #define PI 3.1415926535897932 /* ç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 */

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 3.1415926535897932 yazar Önişlemciler aynı zamanda açıklama satırlarını siler. Bu sayede derleyici onlarla uğraşmaz.

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;); }