Bu Günkü Konular If yapısı ve karşılaştırma operatörleri

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
Advertisements

Değişken , Veri Türleri ve Operatörler
Karar Verme: Eşitlik ve Karşılaştırma Operatörleri
mantIKSAL OPERATÖRLER
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
JavaScript Birinci Hafta.
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.
Nöbetçi Kontrollü Döngü
KOŞUL İFADELERİ onbirc.com/133.
switch - case Yapısı Döngü Yapıları
Bölüm 2: Program Denetimi
KOŞUL İFADELERİ GMGNKJG.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
BPR151 ALGORİTMA VE PROGRAMLAMA - I
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 3 – Yapısal Programlama
Yapısal Program Geliştirme – if, if-else
Program Kontrol İfadeleri
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.
Operatörler ve Denetim Yapıları
BPR152 ALGORİTMA VE PROGRAMLAMA - II
ŞART İFADELERİ.
FONKSİYONLAR.
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
Akış Kontrol Mekanizmaları
Kontrol Yapıları ve Döngüler
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Chapter 4: Making Decisions
Çoklu dallanma seçimi: switch
Mantıksal Operatörler ve Denetim Yapıları
PHP'de Program Denetimi
BİL 102 BİLGİSAYAR PROGRAMLAMA
DEYİMLER DEYİM NEDİR? Kaç guruba ayrılır? İf deyimi nasıl çalışır?
PROGRAM DENETİM DEYİMLERİ
String class String karakterler dizisidir
The if statement. if Şartlı kontrol Koşul değimi doğru (1) yada yanlış (0) değeri üretir. Şartın doğru olması durumunda if satırından sonraki değimler.
KOŞUL İFADELERİ.
Bugünkü konular Programlama dilleri ve Syntax Generic C Program yapısı
Bu günkü konular Basit I/O Expressions (ifadeler)
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.
Algoritma, bir işin hangi aşamalardan geçilerek yapılacağını gösteren çalışma planıdır. Algoritma Nedir ?
2. HAFTA 2. Hafta.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
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.
BİLGİSAYAR programlama II
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
IF if (şart) { İşlemler… }
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
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ölüm 4 Seçme Komutları Alıştırmalar
Ö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.
Algoritma ve Programlamaya Giriş Ders 5. C Programlama Dili - 2.
Bölüm 3 Atama ve Girdi/Çıktı Komutları
İnternet Programlama - 2
Bilgisayar Programlama BIL 107
METHODLAR VE KOŞULLAR.
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
PROGRAM KONTROL KOMUTLARI 1. if koşulu 2. if else koşulu
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
Bölüm 2: Program Denetimi
Bölüm 3 Atama ve Girdi/Çıktı Komutları
?: KARŞILAŞTIRMA OPERATÖRÜ
Sunum transkripti:

Bu Günkü Konular If yapısı ve karşılaştırma operatörleri <, <=, >, >=, ==, != 2 sayını büyük/küçük olanını bulma 3 sayıdan küçük olanını bulma Kompleks karşılaştırma ifadelerini anlama Mantıksal operatörler (!, &&, ||) Kademeli ve iç içe if yapıları Koşul Operatörü ? switch ifadesi

Generic C Program Yapısı #include <stdio.h> /* main programın başlangıcını işaret eder */ main() { /* Değişkenler programda kullanılacak verileri tutar. */ Değişken Tanımlama; /* Program basamakları: I/O, hesaplamalar (ifadeler) */ İfade1; İfade2; … İfadeN; } /* program sonu*/

Örnek C Programı Programımız programın sonuna kadar adım adım çalışacak ifadelerden oluşuyor. #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 ); } Kullanıcıdan dönüştüreceğin Fahrenhayt dereceyi girmesini iste santigrat = (fahrenhayt -32)/1.8 Fahrenhayt ve Santigrat dereceleri ekrana yazdır. Başla Bitir

If yapıları ile programlar İki farklı seçenekten birini seçmesi gereken programlar hakkında ne düşünüyorsunuz? Bir karşılaştırma yaparsın ve karşılaştırma sonucuna göre iki farklı ifadeden birini çalıştırırsın. Karşılaştırma, karar verme ile ilgili verdiğimiz örnekleri hatırlayın İki sayıdan büyük ve küçük olanını nasıl çözdüğümüzü hatırlayalım.

2 sayıdan min ve max olanını bulma Kullanıcıdan sayı1 ve sayı2 yi girmelerini iste min ve max’ı ekrana yazdır sayı1 < sayı2 ? min = sayı1 E max = sayı2 min = sayı2 max = sayı1 H Başla Bitir Kullanıcıdan sayı1 ve sayı2 yi girmelerini iste if (sayı1 < sayı2) 2.1. min = sayı1; 2.2. max = sayı2; else (sayı1 >= sayı2) 3.1. min = sayı2; 3.2. max = sayı1; min ve max’ı ekrana yazdır

if-else İfadesi Bir karşılaştırma yaparak programın iki seçenekten birini çalıştırmasına izin veriyor. Syntax: karşılaştırma Y N ifade 1 ifade 2 if (karşılaştırma) ifade1; [else ifade2;] Eğer karşılaştırma sonucu doğru ise (true -1) ifade1 çalışacak, değilse ifade2 çalışacak.

if-else Örnekler int finalNotu; printf(“Final notunu girin: “); scanf(“%d”, &finalNotu); if (finalNotu >= 45) printf(“Geçti \n"); int finalNotu; printf(“Final notunu girin: “); scanf(“%d”, &finalNotu); if (finalNotu >= 45) printf(“Geçti \n"); else printf(“Kaldı!\n");

Eğer birden fazla durum işleteceksek ne yapmalıyız? int finalNotu; … if(finalNotu >= 45) { printf(“Geçti!\n"); printf(“Tebrikler!\n"); } else printf(“Kaldı!\n"); printf(“Daha iyi çalış.\n"); blok (birleşmiş durumlar)

Süslü parantezlerin yeri Süslü parantezlerin yeri bir stil sorunudur Compiler için bir sorun değildir. int finalNotu; … if(finalNotu >= 45){ printf(“Geçti!\n"); printf(“Tebrikler!\n"); } else { printf(“Kaldı!\n"); printf(“Daha iyi çalış.\n"); }

2 tam sayıdan min ve max olanını bulalım int a, b; int min, max; printf(“2 sayı girin: “); scanf(“%d%d”, &a, &b); if (a < b) { min = a; max = b; } else { min = b; max = a; } /* end-else */ printf(“%d ve %d küçüğü = %d\n”,a, b, min); printf(“%d and %d büyüğü = %d\n”,a, b, max); Kullanıcıdan sayı1 ve sayı2 girmelerini iste min ve max’ı yazdır sayı1 < sayı2 ? min = sayı1 E max = sayı2 min = sayı2 max = sayı1 H Başla Bitir

Programın Çalışması(1) int a, b; int min, max; printf(“2 sayı girin: “); scanf(“%d %d”, &a, &b); if (a < b) { min = a; max = b; } else { min = b; max = a; } /* end-else */ printf(“%d ve %d küçüğü = %d\n”,a, b, min); printf(“%d ve %d büyüğü = %d\n”,a, b, max); DATA a b 45 ? ? 56 ? min max 45 ? 56 ? 2 sayı girin: 45 ve 56 küçüğü = 45 45 ve 56 büyüğü = 56 45 56

Programın Çalışması(2) int a, b; int min, max; printf(“2 sayı girin: “); scanf(“%d%d”, &a, &b); if (a < b) { min = a; max = b; } else { min = b; max = a; } /* end-else */ printf(“%d ve %d küçüğü = %d\n”, a, b, min); printf(“%d ve %d büyüğü = %d\n”, a, b, max); DATA a b 77 ? ? 22 ? min max 22 ? 77 ? 2 sayı girin: 77 ve 22 küçüğü = 22 77 ve 22 büyüğü = 77 77 22

if ifadesinde karşılaştırma işlemleri İf ifadesinin içindeki karşılaştırma iki değeri karşılaştırır ve doğru True (1) veya yanlış False (0) değer üretir. Karşılaştırma ifadesi olarak adlandırılır Karşılaştırma operatörleri kullanılarak biçimlendirilirler. karşılaştırma Y N ifade 1 ifade 2 büyük eşit >= büyüktür > küçük eşit <= küçüktür < eşit değil != eşittir == Anlamı Operator C de boolean tipi yok! Bu yüzden onun yerine int kullanılıyor. Genel kural: “Sıfır = false, diğer sıfır olmayan değerler =true”

Karşılaştırma operatörleri Örnek Varsayalım a = 1, b = 2, ve c = 3 1 True b == 2 False c != 3 (b + c) > (a + 5) (a + b) >= c a < b Değer Karar İfade

Akış diyagramı 3 sayının küçük olanını bulma (1) Başla Kullanıcıdan sayı1, sayı2 ve sayı3 ü girmelerini iste sayı1 < sayı2 ? evet hayır sayı2 < sayı3 ? evet sayı1 < sayı3 ? evet hayır hayır min = sayı3 min = sayı2 min = sayı3 min = sayı1 min sayısını yazdır Bitir

Kod: 3 sayının küçük olanını bulma (1) Problem: 3 tam sayıdan küçük olanını bulunuz int a, b, c; int min; printf(“3 sayı giriniz: “); scanf(“%d%d%d”, &a, &b, &c); if (a < b){ if (a < c) min = a; else min = c; } else { if (b < c) min = b; } printf(“%d, %d, %d küçüğü = %d\n”, a, b, c, min);

Akış diyagramı 3 sayının küçük olanını bulma(2) Start Kullanıcıdan sayı1, sayı2 ve sayı3 ü girmelerini iste min = sayı1 sayı2 < min ? evet min = sayı2 hayır sayı3 < min ? evet min = sayı3 hayır min sayısını ekrana yazdır End

Kod: 3 sayının küçük olanını bulma (2) Problem: 3 tam sayıdan küçük olanını bulunuz /* daha basit alternatif kodlama*/ int a, b, c; int min; printf(“3 sayı girin: “); scanf(“%d%d%d”, &a, &b, &c); min = a; /* farzet; a en küçüğü*/ if (b < min) min = b; /* b daha küçük mü? */ if (c < min) min = c; /* c daha küçük mü? */ printf(“%d, %d, %d küçüğü = %d\n”, a, b, c, min);

Mantıksal Operatörler Ciddi durumlarda daha kompleks karşılaştırma işlemleri yapmak isteyebilirsiniz. (x eşittir 5 mi) VEYA (x eşittir 8 mi) (x == 5) VEYA (x == 8) (x büyüktür 5 mi) VE (x küçüktür 10 mu) (x > 5) VE (x < 10) (x küçüktür y mi) VE (y eşit değil 20 mi) (x < y) VE (y != 20) C programlama dili daha komplex karşılaştırma işlemleri yapmak için 3 mantıksal operatör sunuyor AND-VE (&&), OR-VEYA (||), NOT-DEĞİL (!)

Mantıksal Operatorler Karşılaştırma işlemlerini doğru mu True (1) veya yanlış mı False (0) diye birleştirmede kullanılır. Mantıksal operatörler kullanılarak oluşturulan kompleks karşılaştırmalar if ifadelerinin içinde kullanılabilir. NOT ! OR || AND && Anlam Sembol && (AND) (False) 1 (True) || (OR) (False) 1 (True)

Mantıksal Operatörler (1) Varsayalım a bir integer değişken ve değeri 7 ve ch de bir char değişken ve değeri ‘q’ Expression Interpretation Value (a >= 6) && ( ch == 'q') True 1 (a >= 6) || ( ch == 'A') (a >= 6) && ( ch == 'A') False

Mantıksal Operatörler (2) int sicaklik = 75; double yagmur = 0.35; /* ihtimal */ printf(“sicak? %d\n”, sicaklik > 70 && sicaklik < 85); printf(“guzel? %d\n”, sicaklik > 70 && yagmur < 0.4); printf(“cok sicak/bulutlu?%d\n”, sicaklik < 50 || sicaklik > 85); printf(“ruzgarli? %d\n”, yagmur > 0.3 && yagmur < 0.7); sicak? 1 guzel? 1 cok sicak/bulutlu? 0 ruzgarli? 1

Mantıksal Operatörler (3) /* Eğer a eşittir 4 VEYA a eşittir 10 */ if (a == 4 || a == 10){ ... } else { } /* x 2 VE 20 arasında mı*/ if (x >= 2 && x <= 20){ ... } /* y 20’den büyük VE x eşit DEĞİL 30’a */ if (y > 20 && x != 30){ ... }

Birleşme ve Öncelik Kuralları Tüm operatörler için birleştirme ve öncelik kuralları >, >=, <, <= 4 +, - 3 *, /, % 2 ++, -- 1 Operator Öncelik 5 6 7 ==, != &&, || =, +=, -=, .. Hatırlayalım, ifadeleri parantez ile ayırmak en iyi yöntemdir.

Kademeli if deyimleri Bazen birden fazla koşulu test etmek isteriz, ta ki biri sağlanana kadar. Örneğin “n” in 0 a eşit , 0 dan büyük ve 0 dan küçük olmasını test etmek istiyoruz. if (n < 0) printf(“n < 0\n”); else { if (n == 0) printf(“n == 0\n”); else printf(“n > 0\n”); } /* end-else */ İkinci if deyimini else içinde kullanmaktansa onun yerine aşağıdaki gibi kullanabiliriz. Kademeli if olarak adlandırılıyor. if (n < 0) printf(“n < 0\n”); else if (n == 0) printf(“n == 0\n”); else printf(“n > 0\n”);

kademeli if Syntax if (durum1) ifade1; [else if (durum2) ifade2; … else ifadeN;]

kademeli if Örneği int finalNotu; … if (finalNotu >= 90) printf(“Geçti: Notun A \n”); else if (finalNotu >= 85) printf(“Geçti: Notun A- \n”); else if (finalNotu >= 80) printf(“Geçti: Notun B+ \n”); else if (finalNotu >= 75) printf(“Geçti: Notun B \n”); else if (finalNotu >= 70) printf(“Geçti: Notun B- \n”); else if (finalNotu >= 55) printf(“Geçti: Notun C \n”); else printf(“Kaldı \n”);

Koşul operatörü Kodunuzun birçok yerlerinde aşağıdaki kodu bula bilirsiniz: if (ifade) durum1; else durum2; Bu ifadeyi daha kısa yazabilecek bir operatör var koşul ? ifade1 : ifade2 Örnekler: min = (a < b) ? a : b; min a ve b den minimum olanını alır a = (b >= 0) ? b : -b; a b’nin mutlak değerini alır.

switch deyimi Bazen bir karşılaştırmada bir sürü değerden hangisi olduğunu seçmek isteriz. Bu durumda kademeli if leri aşağıdaki gibi kullanabiliriz. if (not == 5) printf(“Mükemmel\n”); else if (not == 4) printf(“iyi\n”); else if (not == 3) printf(“geçer\n”); else if (not == 2) printf(“zayıf\n”); else if (not == 1) printf(“kalır\n”); else printf(“geçersiz not\n”); Bir alternatif olarak kademeli if deyimlerinin yerine C switch yapısını destekliyor.

switch deyimi- örnek Önceki kodun kademeli if yerine switch ile yeniden yazımı switch(not){ case 5: printf(“Mükemmel\n”); break; case 4: printf(“İyi); case 3: printf(“Geçer\n”); case 2: printf(“Zayıf\n”); case 1: printf(“Kalır\n”); default: printf(“Geçersiz not\n”); } /* end-switch */

switch deyimi - Syntax İfadedeki koşula göre seçeneklerden bir tanesini çalıştırır. switch(koşul) { case değer1: durum1; … [break;] case değer2: durum2; default: durumN; } /* end-switch */

Bir başka switch Örneği int main(){ char operator; int a, b; printf(“bir işlem girin: “); scanf(“%d%c%d”, &a, &operator, &b); switch(operator) { case ‘+’: printf(“%d+%d = %d\n”, a, b, a+b); break; case ‘-’: printf(“%d-%d = %d\n”, a, b, a-b); case ‘*’: printf(“%d*%d = %d\n”, a, b, a*b); case ‘/’: if(b == 0) { printf(“Error: sıfıra bölme hatası \n”); printf(“ işlem iptal edildi \n”); } else printf(“%d/%d = %d\n”, a, b, a/b); default: printf(“bilinmeyen işlem \n”); } /* end-switch */ return 0; } /* end-main */

break in switch içindeki rolü “break” bizi switch bloğunun dışına atar. Eğer break unutulur veya yazılmazsa kontrol bir sonraki case ten devam eder. switch(not){ case 5: printf(“Mükemmel\n”); case 4: printf(“İyi\n”); case 3: printf(“Geçer\n”); case 2: printf(“Zayıf\n”); case 1: printf(“Kalır\n”); default: printf(“Geçersiz not\n”); } /* end-switch */ If not == 3, aşağıdaki yazılacak Geçer Zayıf Kalır Geçersiz not

break in switch içindeki rolü Bunu kasten kendi kodunda kullanmış olabilirsin Böyle bir durumda niçin böyle yaptığına açıklama eklemelisin Örnek: switch(not){ case 5: case 4: case 3: case 2: gecen_sayisi++; /* diğerleri kalmış*/ case 1: toplam_sayi++; break; } /* end-switch */