1 / 42

BM-104 Nesneye Yönelik Programlama Bahar 201 3 ( 2 . Sunu ) ( Yrd . Do ç . Dr. Deniz Dal)

BM-104 Nesneye Yönelik Programlama Bahar 201 3 ( 2 . Sunu ) ( Yrd . Do ç . Dr. Deniz Dal). Konsol Üzerinde Türkçe Karakterler Görebilmek İçin…. İlişkisel Operat ö rler. İlişkisel operatörler test ettikleri durumun sonucuna göre 1 ( true ) veya 0 ( false ) değerini üretirler.

kaia
Download Presentation

BM-104 Nesneye Yönelik Programlama Bahar 201 3 ( 2 . Sunu ) ( Yrd . Do ç . Dr. Deniz Dal)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BM-104 Nesneye Yönelik Programlama Bahar2013 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)

  2. Konsol Üzerinde Türkçe Karakterler Görebilmek İçin…

  3. İlişkiselOperatörler İlişkisel operatörler test ettikleri durumun sonucuna göre 1 (true) veya 0 (false) değerini üretirler.

  4. Karar Verme (Basit “if” Yapısı) • if yapısıkullanılarak (birkoşul test edilerek - condition) bir program kararverebilirvefarklıişlemleryapabilir. Bu “koşullar”birsonraki slide ta görülebileceğigibiilişkiseloperatörlerkullanılarakoluşturulur. if(koşul) { } • Eger “koşul”“true”iseparanteziçindeki (gövdedeki) deyimlerişletilir. “false”ise eğer gövdedekideyimlerişletilmezve programın akışı kapananparantezdensonrakisatıraatlar. • Gövde tek bir deyimden oluşuyorsa parantezlerin kullanımı zorunlu değildir.

  5. “if” Şartlı Deyimi (Karar Yapısı) if(not>=60) cout<<"gecti"; true not >= 60 “gecti” yazdir false “if” Karar Yapısı Akış Diyagramı (flowchart)

  6. Dikkat!!!!! int a=3; if(a=6) cout<<"Bora"<<endl; Yukarıdaki kod parçasında if deyiminin koşulu olarak a==6 ilişkisel testi yerine sehven yapılan bir hata neticesinde a=6 atama deyimi kullanılmıştır. Atama deyimleri her zaman true olarak değerlendirilen bir işlem gerçekleştirirler. Dolayısıyla bu örnek için, yaptığımız hata yüzünden, if bloğunun içerisine girmiş oluruz. (Aynı zamanda da a değişkeninin değerini 6 olarak güncellemiş oluruz.)

  7. if Şartlı Deyimi ve İlişkisel Operatörler

  8. UYGULAMA • Kullanıcıdan klavye yoluyla alacağı 3 tam sayının en büyüğünü bularak ekrana yansıtacak bir C++ konsol uygulaması yazınız.

  9. “if-else” Karar Yapısı if(not>=60) cout<<"gecti"; else cout<<"kaldi"; not >= 60 true false “kaldi” yazdır “gecti” yazdır “if/else” Karar Yapısı Akış Diyagramı (flowchart)

  10. “if-else” Deyimi Yerine Soru İşareti (?) ve İki Nokta Üst Üste (:) Operatörlerinin Birlikte Kullanımı if(sayi1<sayi2) enKucuk=sayi1; else enKucuk=sayi2; enKucuk=sayi1<sayi2?sayi1:sayi2;

  11. “if-elseif-else” Örnekleri if(not >= 90) cout<<"A"; else if(not >= 80) cout<<"B"; else if(not >= 70) cout<<"C"; else if(not >= 60) cout<<"D"; else cout<<"F"; if(not >= 60) cout<<"DersiGectiniz.\n"; //tek deyim else { cout<<"Kaldiniz.\n"; //çoğul cout<<"Bu dersitekraralmalisiniz.\n"; //deyim }

  12. SayaçKontrollü (counter-controlled) DöngüEsasları • Böylebir döngüiçin gerekliolanlar: • Kontrol değişkeni (sayaç veya loop counter) • Kontrol değişkeninin ilk ve son değerleri • Döngünün sonaerişini test edecek durum (condition) • Döngü değişkeninin her seferinde artırılmasıya da azaltılması

  13. while Döngüsü ile Sayaç Kontrollü Tekrar //while Döngüsüİle SayaçKontrollüTekrar #include <iostream> using namespace std; int main() { intsayac=1; //Deklarasyon ve İlk Değer Atama while(sayac<=10) //Tekrarlama Şartı { cout<<sayac<<endl; sayac=sayac+1; //Artım Miktarı } return 0; }

  14. “while” Döngüsü Akış Diyagramı (Flowchart) sayac=1 Kontrol değişkenine ilk değerini ata sayac<=10 true cout<<sayac <<endl; sayac=sayac+1; Döngünün gövdesi Kontrol değişkenini1 artır false

  15. “while” Örneği

  16. Örneğe Devam Biröncekiörneğimizde not sayacıolarak 10 değerinikullandık vekullanıcıyı 10 adet not girmeyezorladık. Kullanıcının istediği kadar not girmesinivebunların ortalamasınıbulanbir program yazmakisteseydik eğer, bir“bitiş değeri” (sentinel value)kullanarakkullanıcının sisteme artık dahafazlaverigirişi yapmakistemediğinibelirtmesineizinvermemiz gerekirdi. cout<<"NotuGirya da -1 YazarakCik: "; cin>>not; while(not != -1)//Bitiş Değeri=-1 { toplam=toplam+not; notSayaci=notSayaci+1; cout<<"NotuGirya da -1 YazarakCik: "; cin>>not; }

  17. Düzenlenmiş “while” Örneği

  18. “static_cast<>” Operatörü Ortalamalarçoğu kez integer değere sahipolmazlar. 7.21ya da 8.397gibiondalık kısmada sahipolabilirler. Bizimbiröncekiörneğimizdeortalama değerinidepolayan değişken bir integer olduğu için ondalık kısımlar (varolsa bile) değerlendirmeye alınmadılar. Bu yüzdenbunaizinverendouble değişkenikullanmalıyız ortalama için. #include <iostream> //cout ve cinKullanımıİçin #include <iomanip> //setprecisionKullanımıİçin using namespace std; int toplam; intnotSayaci; double ortalama; ortalama=static_cast<double>(toplam)/notSayaci; //ortalama=(double)toplam/notSayaci; cout<<"SinifOrtalamasi"<<setprecision(3)<<ortalama;

  19. Daha da Düzenlenmiş“while” Örneği

  20. Bileşik Atama Deyimleri toplam=toplam+sayac; ya da toplam+=sayac; “+=“operatörüsağındaki değişkenisolundaki değişkenin değeriiletoplarvesonucuyinesolundaki değişkeneatar. c+=7; d-=4; e*=5; f/=3; g%=9;

  21. 1 Artırmave1 AzaltmaOperatörleri

  22. Örnek //Önce 1 Artır ve Sonra 1 Artır Operatörleri #include <iostream> using namespace std; int main() { int c; c=5; cout<<c<<endl; //Ekrana 5 Yazdır cout<<c++<<endl; //Ekrana 5 Yazdır veSonra cyi 1 Artır cout<<c<<endl<<endl; //Ekrana 6 Yazdır c=5; cout<<c<<endl; //Ekrana 5 Yazdır cout<<++c<<endl; //cyi 1 Artır veEkrana 6 Yazdır cout<<c<<endl; //Ekrana 6 Yazdır return 0; }

  23. 4 Farklı 1 Artırma Deyimi a=a+1; ya da a+=1; ya da a++; ya da ++a;

  24. “for” Döngüsü //for DöngüsüileSayaçKontrollüTekrar //İlk Değer Atama, Tekrarlama Şartı ve Artım Miktarı for //Yapısının İçinde #include <iostream> using namespace std; int main() { for(intsayac=1;sayac<=10;sayac++) cout<<sayac<<endl; return 0; }

  25. “for” Döngüsü “while” Döngüsüne Dönüştürülebilir (Ya da Tam Tersi) for(intsayac=1;sayac<=10;sayac++) { cout<<sayac<<endl; } intsayac=1; while(sayac<=10) { cout<<sayac<<endl; sayac++; }

  26. “for” DöngüsüÖrnekleri • Kontrol değişkenini 1’den 100’e kadar tek tek artıran “for” döngüsü for(int i=1;i<=100;i++) • Kontrol değişkenini 100’den 1’e kadar tek tek azaltan “for” döngüsü for(int i=100;i>=1;i--) • Kontrol değişkenini 7’den 77’ye kadar 7’şer artıran “for” döngüsü for(int i=7;i<=77;i+=7)

  27. “break” ve”continue” Deyimleri • Döngü içlerinde programın akış kontrolünü değiştirmek için bu deyimleri kullanırız. • “break” deyimi while, for veya switch yapılarının içinde kullanıldığında bu yapılar ani bir şekilde sonlandırılır. • “continue” deyimi fordöngüsü içerisinde kullanıldığında bu deyimden sonra gelen komutlar atlanır ve döngü bir sonraki iterasyona başlar.

  28. Soru: Aşağıdaki program ekrana ne yazdırır? for(inti=1;i<=10;i++) { if(i==5) break; cout<<i<<" "; } Soru: Aşağıdaki program ekrana ne yazdırır? for(inti=1;i<=10;i++) { if(i==5) continue; cout<<i<<" "; }

  29. Sonsuz Döngü (1. Versiyon) #include <iostream> using namespace std; int main() { while(true)//Sonsuz Döngü { ………. if(…….)//KullanıcıDoğruTahmindeBulunduysa break; } return 0; }

  30. Sonsuz Döngü (2. Versiyon) #include <iostream> using namespace std; int main() { booldevamEt=true; while(devamEt)//Sonsuz Döngü { ………. if(…….)//KullanıcıDoğruTahmindeBulunduysa devamEt=false; } return 0; }

  31. Sonsuz Döngü (3. Versiyon) #include <iostream> using namespace std; int main() { for(;;)//Sonsuz Döngü { ………. if(…….)//KullanıcıDoğruTahmindeBulunduysa break; } return 0; }

  32. “switch-case” ile Çoklu Seçim cin>>secenek; secenek= toupper(secenek); switch(secenek) { case 'A': FunctionA(); break; case 'B': FunctionB(); break; case 'C': break; //Hiçbir Şey Yapma default: //Beklenen Bir Karakter Girilmediyse cout << "Uzgunum, " <<secenek<< " hicbir fonksiyona uymuyor. Lutfen tekrar dene.\n\n"; } if(secenek=='A') FunctionA(); else if(secenek=='B') FunctionB(); else if(secenek=='C') ; else cout<< "Uzgunum";

  33. MantıksalOperatörler • Bazıkararvermedurumlarındailişkisel testlerin gerçekleştirebildiklerinden dahakomplekstestlere ihtiyaç duyabiliriz vebubasittestlerimantıksaloperatörler yardımıylabirleştirerekamacımızaulaşırız. • Bu mantıksaloperatörler: • MantıksalVE (AND) (&&) • Mantıksal VEYA(OR) (||) • Mantıksal DEĞİL(NOT) (!) Mantıksal operatörler test ettikleri durumun sonucuna göre 1 (true) veya 0 (false) değerini üretirler.

  34. MANTIKSAL VE (&&) DoğrulukTablosu İFADE 1 İFADE2 İFADE1&&İFADE2 false false false false true false true false false true true true

  35. MANTIKSAL VEYA (||) DoğrulukTablosu İFADE 1 İFADE2 İFADE1||İFADE2 false false false false true true true false true true true true

  36. MANTIKSAL DEĞİL (!) DoğrulukTablosu İFADE !İFADE false true true false

  37. Örnekler • if((isim=="Deniz") && (yas>=30)) • if((donemOrtalamasi>=90)||(finalSinavi>=90)) • if((secenek=='A')||(secenek=='a')) • Matematikselolarak 3<x<7 C++ dilinde (3<x && x<7) • if(!(rakam==bitisDegeri)) ya da if(rakam!=bitisDegeri)

  38. Scope (Sıkop) (Faaliyet/Kapsam/Geçerlilik Alanı-Ömür)

  39. Scope (Sıkop) (Faaliyet/Kapsam/Geçerlilik Alanı-Ömür)

  40. Scope (Sıkop) (Faaliyet/Kapsam/Geçerlilik Alanı-Ömür)

  41. Scope (Sıkop) (Faaliyet/Kapsam/Geçerlilik Alanı-Ömür)

  42. SORULAR Kullanıcıdan klavye yoluyla aldığı bir sayının bölenlerini veya çarpanlarını bularak ekrana basan bir C++ programı yazınız. Kullanıcıdan klavye yoluyla aldığı bir sayının ASAL sayı olup olmadığını belirleyen ve eğer ASAL sayı ise ASAL çarpanlarını ekrana basan bir C++ programı yazınız. Kullanıcıdan klavye yoluyla aldığı belirli bir aralık içerisindeki bütün ASAL sayıları ve bu ASAL sayıların sayısını ekrana basan bir C++ programı yazınız. Kullanıcıdan klavye yoluyla aldığı iki sayının aralarında ASAL olup olmadığını bulan bir C++ programı yazınız. (4 ve 15 aralarında asaldır örneğin.) Kullanıcıdan klavye yoluyla aldığı 3 sayının En Büyük Ortak Bölenini (EBOB) bulacak bir C++ programı yazınız. Kullanıcıdan klavye yoluyla aldığı 3 sayının En Küçük Ortak Katını (EKOK) bulacak bir C++ programı yazınız. (15 sayısının katları: 15 30 45 60 75 ve 20 sayısının katları: 20 40 60tır. Dolayısıyla EKOK(15,20)=60 tır.) Kullanıcıdan klavye yoluyla aldığı 2 rasyonel sayıyı toplayıp en sade haliyle ekrana basacak bir C++ programı yazınız.

More Related