Koşullu Önermeler (if else)



Benzer belgeler
SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

C++ Operatörler (Operators)

Matematiksel Operatörler

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

C Operatörler. Öğr. Gör. M. Ozan AKI. Rev 1.0

ALGORİTMA VE PROGRAMLAMA I

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Programlama Dili Prensipleri. Lab Notları 4

M.ilkucar MAKU MYO 1

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Program Kodlamaya Geçiş

Lab Notları 4. for ( ilklenme yeri bir kez çalışır ; Kontrol yeri her döngüde bakılır ; Güncelleme yeri her döngüde )

8- PROGRAM YAPISAL KOMUTLARI ve. M.ilkucar MAKU MYO 1

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

JOptionPane.showMessageDialog(null,"Cevap;" + a % b);//a mod b ye göre sonucu / a'ya 10,moduna da 5 dersek Cevap;0 çıkacaktır.

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

Java da İşleçler, Ders #3 (4 Kasım 2009)

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Java da Program Denetimi ve Operatörler

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

Karşılaştırma İşlemleri ve Koşullu İfadeler

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

TBP101 (4. Hafta) Alıştırma Soruları ve Cevapları

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

C Dersleri Bölüm 3 : Program akışı

İnternet Programcılığı Dersi 2.Dönem Ders Notu

Bölüm 7. İfadeler ve atamalar ISBN

BLGM BÖLÜM. Problem Çözme Kavramları (Algoritma ve Akış Şemaları)

Program AkıĢ Kontrol Yapıları

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Mantıksal İşlemler. 7.1 true, false, nil

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Algoritmalar ve Karmaşıklık

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Algoritma, Akış Şeması ve Örnek Program Kodu Uygulamaları Ünite-9

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Bölüm 4 C de Program Kontrolü

2.3- OPERATÖRLER ÇALIŞMA YAPRAĞI

Nesne Tabanlı Programlama

MAT213 Bilgisayar Programlama I

Mantıksal (Logic) Operatörler

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

BMT 101 Algoritma ve Programlama I 2. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

Bölüm 3 Yapısal Programlama

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1


KONTROL YAPILARI JAVADA UC TURLU KONTROL YAPISI VARDIR BUNLAR İF ELSE İF ELSE İF SWİTCH YAPILARIDIR. IF ELSE YAPISI if (deger) { }else {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

/*int sayi1, sayi2,toplam=0;

Operator Aşırı Yükleme (Operator OverLoading)

İNTERNET PROGRAMCILIĞI - II

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER KARAR KONTROL DEYİMLERİ

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

4- ALGORİTMA (ALGORITHM)

Giris {\} /\ Suhap SAHIN Onur GÖK

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

HSancak Nesne Tabanlı Programlama I Ders Notları

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Bigisayar Programlama

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

T.C. MARMARA ÜNİVERSİTESİ BİLGİSAYAR VE ÖĞRETİM TEKNOLOJİLERİ ÖĞRETMENLİĞİ BÖLÜMÜ EĞİTİM ÖĞRETİM YILI PROGRAMLAMA DERSİ KAPSAMINDA YAPILAN

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

EMM3208 Optimizasyon Teknikleri

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

BİLGİSAYAR PROGRAMLAMA

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Programlama Dilleri 3

Program Akışının Denetimi

Transkript:

Koşullu Önermeler (if )

Koşullu Önermeler Şu ana kadarki önermelerimiz birbiri ardına sıralı bir şekilde çalışıyorlar. Aşağıdaki durumlarda nasıl çalışacaklar peki? bir koşula bağlı olarak bir önermeyi çalıştırmak istediğimizde? Örneğin: Kar yağarsa eğer, okulların tatil olacağını anons et Örneğin: Banka hesabında yeterince para varsa eğer, para ver Eğer bir koşul sağlanırsa bir önermeyi, sağlanmazsa başka bir önermeyi çalıştırmak istediğimizde? Örneğin: Eğer dolar yüksek ise, dolar sat. Değilse, dolar al. Birden fazla önerme içinden bir ya da birden fazla kritere bağlı olarak seçim yapacağız. Örneğin: Eğer dolar yüksek ve avro düşük ise, dolar sat ve avro al. Eğer dolar düşük ve avro yüksek ise, avro sat ve dolar al. Eğer her ikisi de yüksek ise, her ikisini de sat ve TL al. Bu tür koşullu önermeleri if- ile yapabiliyoruz.

Sentaks if (<koşul>) <önerme_true_1>;... <önerme_true_n>; <önerme_false_1>;... <önerme_false_n>; Eğerkoşul doğru ise önerme_true_1 önerme_true_n çalıştırılıyor, eğer koşul yanlış ise önerme_false_1 önerme_false_n çalıştırılıyor. if (<koşul>) <önerme_true_1>;... <önerme_true_n>; ve önerme_false önermeleri isteğe bağlı eğer koşul yanlışise, hiçbirşey çalıştırılmaz ve program bir sonraki önerme ile devam eder <koşul> iki parantez arasında ( ) olmalıdır

Diğer bir Sentaks ( kullanmadan) if (<koşul>) <önerme_true>; <önerme_false>; if (<koşul>) <önerme_true>; Sadece tek bir önerme var ise kullanılabilir Hiç tavsiye etmiyorum (nedenini göreceğiz)

if- in Akış Şeması test koşulu doğru yanlış doğru önermeler yanlış önermeler sonraki önerme

Örnek Đki tamsayı okuyan ve maksimumunu ekrana yazdıran bir program yazalım. Đki çözüm var if ve kullanarak sadece if kullanarak ( olmadan)

Çözüm 1 with_if_.cpp int main () int sayı1, sayı2, max; cout << Đki sayı giriniz: "; cin >> sayı1 >> sayı2; if (sayı1 > sayı2) // ilk sayı ikincisinden büyük mü kontrol et max = sayı1; // eğer öyle ise maximum ilk sayıdır max = sayı2; // değilse maximum ikinci sayıdır cout << " bu sayıların maximumu: " << max << endl; return 0;

Çözüm 2 with_if.cpp int main () int sayı1, sayı2, max; cout << Đki sayı giriniz: "; cin >> sayı1 >> sayı2; max = sayı1; // default atama - maximum ilk sayıdır if (sayı2 > max) // ikinci sayı ilkinden büyük mü kontrol et max = sayı2; // eğer öyle ise maximumu güncelle, // değilse hiçbirşey yapma cout << "maximum of these two numbers is: " << max << endl; return 0;

Boolean tip ve ifadeleri if önermesindeki koşul Boolean bir ifade olmalıdır (boolean kelimesi George Boole un adından gelmektedir) Değerler ya true (doğru) ya false(yanlış) olabilir bool da tıpkı int, double gibi kendiliğinden tiplerdendir int sıcaklık; bool sıcakmı = false; cout << sıcaklğı giriniz: ; cin >> sıcaklık; if (sıcaklık > 35) sıcakmı = true; Boolean değerlerin de nümerik karşılıkları vardır false 0, true herhangi bir sıfır olmayan değerdir if (3 * 4 8) cout << "selam"; cout << "hoşçakal" ; ekrana selam basar boolean çıktı0 sonuçverir (falseiçin) veya 1 (trueiçin) cout << (4 < 5); ekrana 1yazar

İlişkisel Operatörler İlişkisel Operatörler değerleri karşılaştırmak için kullanılırlar: < küçük mü sayı < 5 <= küçük ya da eşit sayı <= 0 > büyük mü sayı1 > sayı2 >= büyük ya da eşit sayı1 >= sayı2 == eşit mi sayı1 == 0!= eşit değil mi sayı1!= sayı2 Đki işlenen alırlar Đşlenenler sabit değer, değişken ya da ifade olabilirler Bir sürü tip için kullanılırlar nümerik karşılaştırmalar için string karşılaştırmalar için (lexicografik, yani alfabetik) boolean karşılaştırmalar için (false truedan küçüktür)

Örnekler Boolean sonuçları görmek için sabit değerlerle aşağıdaki örneklere bakalım. 23 >= 45 false 49.0 == 7*7 true 34-3!= 30+1 false string s1= "elma", s2= "armut", s3= "Elma"; s1 < s2 false s3 < s1 true Neden s3 < s2 true oldu? E nin ASCII kodu a dan küçük olduğu için Büyük harflerin kodları küçük harflerden küçüktür

Mantıksal Operatörler Boolean ifadeler mantıksal operatörler (AND, OR, NOT) kullanılarak birleştirilebilirler C++ dilinde bunlar için &&! sembolleri kullanılıyor A B A B A && B true true true true true false true false false true true false false false false false A true false! A false true

Örnek Aralık testi: verilen bir sayının 0 ile 100 arasında olup olmadığıkontrol edilecek (0 ve 100 dahil) Eğer aralıktaysa sayı, sayının doğru aralıkta olduğu mesajıverilecek. Eğer değilse, ekrandaki mesaj aralık dışı olacal. Çözüm 1: mantıksal AND operatörü kullanarak if (sayı >= 0 && sayı <= 100) cout << "sayı aralık içinde"; cout << "sayı aralık dışında"; Çözüm 2: mantıksal AND ve NOT operatörleri kullanarak if (! (sayı >= 0 && sayı <= 100) ) cout << "sayı aralık dışında"; cout << "sayı aralık içinde"; Çözüm 3: mantıksal OR operatörü kullanarak if (sayı < 0 sayı > 100) cout << "sayı aralık dışında"; cout << "sayı aralık içinde";

De Morgan Kuralları 2. ve 3. çözümleri karşılaştıralım Her iki koşul da eşdeğerdir aslında (! (sayı >= 0 && sayı <= 100) ) ( sayı < 0 sayı > 100 ) De Morgan s Kuralları der ki (a ve b boolean ifadeler olsun)! (a && b) =!a!b! (a b) =!a &&!b De Morgan a Kuralları çoklu ifadeler için de genellenebilir (örneğin, 4 boolean ifade için)! (a && b && c && d) =!a!b!c!d! (a b c d) =!a &&!b &&!c &&!d

Operatör Önceliği Üstteki operator grupları aşağıdakilere göre önceliklidirler Operatör Açıklama Associativity + -! artı ve eksi, mantıksal NOT sağdan-sola * / % çarpma, bölme ve mod soldan-sağa + - toplama, çıkarma soldan-sağa << >> stream yazma ve okuma soldan-sağa < <= > >= eşitsizlik karşılaştırma operatörleri soldan-sağa ==!= eşit, eşit olmama karşılaştırmaları soldan-sağa && mantıksal and soldan-sağa mantıksal or soldan-sağa = += -= *= /= %= atama operatörleri sağdan-sola

Operatör Önceliği Örnekleri cout << sayı1 < yıl; Sentaks hatası verir (anlaşılmaz bir mesaj şeklinde üstelik) Problem << operatörünün < üzerinde önceliği olmasıdır Beklendiği gibi derlenmez Çözüm: cout << (sayı1 < yıl); Tavsiye: her zaman cout için parantezli ifadeler kullanın Peki aralık testi yapan (0 <= sayı <= 100) ifadesine ne demeli? Sentaks hatası vermez Ama istenilen aralık testini de yapmaz çünkü hep true olur bu ifade. NEDEN?!12+5&&32/35 değeri nedir? Sonuç 0 olur

İçiçe if önermeleri if/ önermeleri diğer if/ önermelerinin içindedir Çoklu seçeneklerden seçim yapma yöntemidir Örnek: nümerik bir not girilecek ve onun değerine göre bir mesaj ekrana basılacak 0.. 50 düşük 51.. 70 ortalama 71.. 100 iyi hiçbiri geçersiz not

İçiçe if önermelerine örnek Örnek: nümerik bir not girilecek ve onun değerine göre bir mesaj ekrana basılacak 0.. 50 düşük 51.. 70 ortalama 71.. 100 iyi hiçbiri geçersiz not Çeşitli çözümler var Đlk çözüm: if lerin ardından gelen if ler if_after_if.cpp Đkinci çözüm : if lerin ardından gelen ler if_after_.cpp veya if_after_2.cpp

İçiçe if- Sentaks 1 if (<koşul_1>) if (<koşul_2>) if (<koşul_3>) <statements_hepsi_true>; < statements_true_1ve2>; <statements_true_1_>; <statements_1_false>; Eğer koşul_1 TRUE ise koşul_2 ye bakılır Eğerkoşul_2 TRUE ise koşul_3 e bakılır Eğer koşul_3 TRUE ise statements_hepsi_true çalıştırılır, Eğer koşul_3 FALSE ise statements_true_1ve2 çalıştırılır, Eğer koşul_2 FALSE ise statements_true_1_sadece çalıştırılır, Eğer koşul_1 FALSE ise statements_1_false çalıştırılır,

İçiçe if- Sentaks 2 if (<koşul_1>) <statement_1true_1>;... <statement_1true_n>; if (<koşul_2>) <statement_2true_1>;... <statement_2true_n>; if (<koşul_3>) <statement_3true_1>;... <statement_3true_n>;... <statement_allfalse_1>;... <statement_allfalse_n>; Eğer koşul_1 TRUE ise statement_1true_1 statement_1true_n çalıştırılır, Eğer koşul_1 de FALSE ise koşul_2 ye bakılır ve eğerkoşul_2 TRUE ise statement_2true_1 statement_2true_n çalıştırılır, Eğer koşul_2 de FALSE ise koşul_3 e bakılır ve eğer koşul_3 TRUE ise statement_3true_1 statement_3true_n çalıştırılır, Eğer koşul_(n-1) FALSE ise statement_allfalse_1 statement_allfalse_n çalıştırılır.

Kısa-devre Değerlendirmesi Boolean ifadeler içindeki bazıalt ifadeler değerlendirilmeyebilirler eğer ki bütün ifadenin değeri şu ana kadarki alt ifadelerden ortaya çıkmış ise Kural: Đlk (en soldaki) boolean alt ifadesini ilk önce sonuçlandır. Eğer onun değeri bütün ifadenin değerini belirlemek için yeterli ise, orada dur. Yok yeterli değil ise sağa doğru değerlendirmeye devam et. if (sayı!= 0 && skorlar/sayı < 60) cout << "dusuk ortalama" << endl; Bu örnekte, sayının değeri 0 ise, ilk alt ifade false olur ve ikinci alt ifade değerlendirilmez bile. Bu şekilde, sıfır ile bölünme hatasından da korunmuş oluruz (çünkü bu programı göçertir) Alternatif olarak sıfır ile bölme hatasından aşağıdaki gibi de kurtulabiliriz: if (sayı!= 0) if (skorlar/sayı < 60) cout << "dusuk ortalama" << endl;

Sallanan Else Problemi if ( x % 2 == 0) if ( x < 0 ) cout << x << " çift, negatif sayıdır" << endl; cout << x << " tek sayıdır" << endl; Ekrana x=4 için ne basar? Problem bu kodun pozitif çift sayılar ve sıfır için ekrana tek sayıdır mesajı yazmasıdır. Sebebi de, koddaki girintiler aksini de söylese, ikinci (içteki) if e aittir en sondaki if e aittir Çözüm: süslü parantezler kullanmaktır (sonraki slayt)

Sallanan Else Problemine Çözüm if ( x % 2 == 0) if ( x < 0 ) cout << x << " çift, negatif sayıdır " << endl; cout << x << " tek sayıdır " << endl; Şimdi ilk if e aittir if eşleştirme kuralı Her en yakınındaki birleşik blokta eşleştiği başka bir olmayan if e aittir