Παίρνοντας Αποφάσεις 1
Στόχοι μαθήματος Συγκριτικοί/ Λογικοί Τελεστές Η εντολή IF Η εντολή switch 2
Συγκριτικοί Τελεστές == ίσο!= διάφορο / άνισο > μεγαλύτερο < μικρότερο >= μεγαλύτερο ή ίσο <= μικρότερο ή ίσο 3
Συγκριτικοί Τελεστές cout << (7 == 5); cout << (5 > 4); cout << (3!= 2); cout << (6 >= 6); cout << (5 < 5); // 0 (false) // 1 (true) // 1 (true) // 1 (true) // 0 (false) 4
Λογικοί τελεστές Το αποτέλεσμα μιας λογικής πράξης είναι True ή False. Τελεστές And && Or Not! >,<,=,<=,>=,!=,== 5
Λογικοί Τελεστές X Y X && Y X Y TRUE TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE Παραδείγματα (3>2) && (4>2) =True (4!=2) (3<2) = True (7>20) && (3>1) = False (100<100) (10 <1)=False 6
Λογικοί Τελεστές Ο τελεστής not Λειτουργεί σαν αντιστροφέας.!(5>2)=false!(5<2)=true 7
Προγράμματα Δομή Διακλάδωσης Στην δομή διακλάδωσης το πρόγραμμα πρέπει να ελέγξει μια λογική πρόταση, ώστε να αποφασίσει την πορεία που θα ακολουθήσει. 8
Σύνταξη εντολής if if(λογική πρόταση){ εντολές else { εντολές Σημείωση: Σε περίπτωση που έχουμε μόνο μια εντολή τα άγκιστρα μπορούν να παραβλέπονται. 9
Παράδειγμα 1 Σας δίνεται ένας αριθμός και θέλετε να ελέγξετε αν αυτός ο αριθμός είναι άρτιος ή περιττός. 10
Παράδειγμα 1 #include<iostream> using namespace std; int main(){ int num; cin>>num; //Διάβασμα αριθμού if(num%2==0){ //Έλεγχος συνθήκης. Αν ο αριθμός διαιρείται ακριβώς //με το 2 cout<<"artios"; //Εντολή που εκτελείται όταν ισχύει η συνθήκη else{ cout<<"perittos"; //Εντολή που εκτελείται όταν δεν ισχύει η συνθήκη return 0; 11
Παράδειγμα 2 Να δημιουργήσετε το πρόγραμμα που δέχεται 1 ακέραιο αριθμό και τυπώνει την τετραγωνική του ρίζα με ακρίβεια 2 δεκαδικών ψηφίων. Σε περίπτωση που δοθεί αρνητικός αριθμός τυπώνει την λέξη «Error». 12
Παράδειγμα 2 #include<iostream> #include<cmath> #include<iomanip> using namespace std; int main(){ int N; float Riza; cin>>n; if(n>=0){ Riza=sqrt(N); cout<<fixed<<setprecision(2)<<riza; else cout<<"error"; return 0; 13
Παράδειγμα 3 Ένα τρίγωνο χαρακτηρίζεται ορθογώνιο αν έχει μια ορθή γωνία (90 μοίρες). Επιπρόσθετα το άθροισμα των γωνιών ενός τριγώνου πρέπει να είναι 180. Να γράψετε το πρόγραμμα που δέχεται το μέγεθος των γωνιών του τριγώνου και τυπώνει Right Triangle αν υπάρχει τρίγωνο που είναι ορθογώνιο, διαφορετικά τυπώνει Not a Right Triangle. Σημείωση: Το μέγεθος των γωνιών είναι ακέραιοι αριθμοί. 14
Παράδειγμα 3 #include<iostream> using namespace std; int main(){ int a,b,c,total; cin>>a>>b>>c; total=a+b+c; if((a==90 b==90 c==90) && total==180) cout<<"right Triangle"; else cout<<"not Right Triangle"; return 0; 15
Ένθετη Δομή Διακλάδωσης if (λογική έκφραση 1){ εντολές που εκτελούνται αν ισχύει η λογική έκφραση 1 else if (λογική έκφραση 2){ εντολές που εκτελούνται αν ισχύει η λογική έκφραση 2 και δεν ισχύει η έκφραση 1 else{ εντολές που εκτελούνται αν δεν ισχύει η λογική έκφραση 1 ή 2 16
Παράδειγμα 4 Ένα τυπογραφείο χρεώνει κλιμακωτά τους πελάτες του ως εξής: Τα πρώτα 100 βιβλία [1-100] προς 8 ευρώ το ένα. Τα επόμενα 400 βιβλία [101-500] προς 6.40 ευρώ το ένα. Τα υπόλοιπα βιβλία (περισσότερα από 500) προς 3.50 ευρώ το ένα. Να γράψετε το πρόγραμμα που θα δέχεται τον αριθμό των βιβλίων και θα υπολογίζει το κόστος. 17
Παράδειγμα 4 #include<iostream> using namespace std; int main(){ int books; float total; cin>>books; if(books<=100) total=books*8; else if(books<=500) total=(books-100)*6.4+8*100; else total=(books-500)*3.5+400*6.4+8*100; cout<<total; return 0; 18
Περιπτωσιακή Δομή Η εντολή switch Με την εντολή switch μπορούμε να εκτελέσουμε μια ομάδα εντολών αναλόγως της τιμής που θα έχει η μεταβλητή ελέγχου. Η διαφορά με το if είναι ότι δεν εξετάζει κάποια λογική έκφραση αλλά τις τιμές που μπορεί να πάρει μια μεταβλητή ελέγχου. Γενικά η εντολή switch δε χρησιμοποιείται ευρέως, παρά μόνο σε ειδικές περιπτώσεις. 19
Σύνταξη Εντολής switch(μεταβλητή ελέγχου){ case περίπτωση 1 : εντολές; break; //Προαιρετικό case περίπτωση 2 : εντολές; break; // Προαιρετικό // Μπορείτε να έχετε όσες περιπτώσεις θέλετε default : // Προαιρετικό εντολές; 20
Επεξήγηση Η μεταβλητή ελέγχου πρέπει να είναι διακριτού τύπου (π.χ. integer, char) Όταν βρεθεί περίπτωση που θα έχει την ίδια τιμή με την μεταβλητή ελέγχου τότε εκτελούνται οι εντολές που βρίσκονται από κάτω μέχρι να βρεθεί η εντολή break. Όταν εκτελεστεί η εντολή break η switch τερματίζεται. Αν θέλετε να εκτελεστούν οπωσδήποτε κάποιες εντολές μέσα στη switch τότε πρέπει να τις βάλετε μετά το default. Οι εντολές αυτές θα εκτελεστούν εφόσον δεν βρεθεί καμιά περίπτωση που να είναι ίση με την τιμή της μεταβλητής ελέγχου. 21
Παράδειγμα 5 Η ποδοσφαιρική ομάδα We are the champions έχει ανακοινώσει ότι τα εισιτήρια διαρκείας θα χωριστούν στις πιο κάτω κατηγορίες με τις αντίστοιχες τιμές. Να γράψετε το πρόγραμμα που διαβάζει την κατηγορία και τυπώνει την τιμή. Αν δε δοθεί η σωστή κατηγορία τυπώνεται μήνυμα λάθους. 22
Παράδειγμα 5 #include<iostream> using namespace std; int main(){ char katigoria; cout<<"katigoria="; cin>>katigoria; switch (katigoria){ case 'A': cout<<200; break; case 'B': cout<<150; break; case 'C': cout<<100; break; case 'D': cout<<50; break; default: cout<<"error"; return 0; 23