Δήλωση ακέραιων μεταβλητών. ροής με την στάνταρ είσοδο

Σχετικά έγγραφα
Οντοκεντρικός Προγραμματισμός

Πανεπιστήµιο Πατρών. Περίληψη 2.1 Εισαγωγή 2.2 Αλγόριθµοι Τελεστές ανάθεσης do/while οµή επανάληψης

Εισαγωγή στον Προγραμματισμό

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Δομημένος Προγραμματισμός (ΤΛ1006)

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική

Υπολογισμός - Εντολές Επανάληψης

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Δομές Επανάληψης. Εισαγωγή στη C++

Οντοκεντρικός Προγραμματισμός

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Ηλεκτρονικοί Υπολογιστές

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Αντικειμενοστρεφής Προγραμματισμός

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Η/Υ (ΤΛ2007 )

Δομές ελέγχου & επανάληψης

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Προγραμματισμό για ΗΜΥ

Στοιχειώδης προγραμματισμός σε C++

Μεθόδων Επίλυσης Προβλημάτων

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Γλώσσα Προγραμματισμού C

Διαδικαστικός Προγραμματισμός

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

7. Δομές Ελέγχου (Control Statements)

7. Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Υπολογισμός - Εντολές Ελέγχου

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Αντικειμενοστρεφής Προγραμματισμός

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

3. Εκφράσεις και έλεγχος ροής

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Αντικειµενοστρεφής Προγραµµατισµός

ιαδικαστικός Προγραμματισμός

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Δομές ελέγχου ροής προγράμματος

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Προγραμματισμός Υπολογιστών με C++

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Προγραμματισμό για ΗΜΥ

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Πληροφορική 2. Αλγόριθμοι

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην πληροφορική

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

17TimeThis.h function returns reference pointer to same object { return *this; }

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στο προγραμματισμό Η/Υ C++ (Orwell Dev-C++)

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Δεδομένα, Τύποι και Τιμές

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

Transcript:

Πανεπιστήμιο Πατρών Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δομημένος Προγραμματισμός και Δομές Ελέγχου 1

Εισαγωγή Είσοδος/έξοδος Hello world: #include <iostream> using namespace std; //Εισαγωγή στη C++ /* Σχόλιο με τον κλασσικό τρόπο */ int main (){ } cout << Hello world\n ; //Σχόλιο C++ cout << Hello << return 0; << endl << world ; 2

Είσοδος-Έξοδος Στάνταρ έξοδος cout Συνδέεται με την οθόνη << Τελεστής εισαγωγής σε ροή εξόδου Η τιμή στα δεξιά εισάγεται στη ροή εξόδου Στάνταρ είσοδος >> Τελεστής εξαγωγής ροής εισόδου Χρησιμοποιείται με τη cin cin >> <όνομα μεταβλητής> Αναμένει την εισαγωγή τιμής από το χρήστη και το Enter Αποθηκεύει τιμή στην μεταβλητή στα δεξιά του τελεστή Μετατρέπει την τιμή εισόδου στον τύπο της μεταβλητής 3

1 // Fig. 1.6: fig01_06.cpp 2 // Addition program. 3 #include <iostream> 4 using namespace std; 5 // function main begins program execution 6 int main() 7 { 8 int integer1; // first number to be input by user 9 int integer2; // second number to be input by user 10 int sum; // variable in Χρήση which του sum τελεστή will be εξαγωγής stored 11 12 cout << "Enter first integer\n"; για την // είσοδο prompt δεδομένων 13 cin >> integer1; // read an integer 14 15 cout << "Enter second integer\n"; // prompt 16 cin >> integer2; // read an integer 17 18 sum = integer1 + integer2; // assign result to sum Outline fig01_06.cpp (1 of 1) 19 cout << "Sum is " << integer1 + integer2 << endl; 20 cout << "Sum is " << sum << endl; // print sum 21 22 return 0; // indicate that program ended successfully 23 24 } // end function main Δήλωση ακέραιων μεταβλητών. ροής με την στάνταρ είσοδο χρήστη. Οι υπολογισμοί μπορούν να Ο γίνουν τελεστής και ροής στις endl εντολές αλλάζει εξόδου. Εναλλακτικά, αντί για τις γραμμές γραμμή και 18 και στη 20: συνέχεια, αδειάζει τον buffer εξόδου Συνένωση των πράξεων εισαγωγής στη ροή εξόδου.. 4 2003 Prentice Hall, Inc. All rights reserved.

Enter first integer 45 Enter second integer 72 Sum is 117 Outline fig01_06.cpp output (1 of 1) 5 2003 Prentice Hall, Inc. All rights reserved.

Δομές Ελέγχου Περίληψη 2.1 Εισαγωγή 2.2 Αλγόριθμοι 2.4 Δομές ελέγχου 2.9 Γράφοντας αλγορίθμους βήμα βήμα 2.11 Τελεστές ανάθεσης 2.12 Τελεστές αύξησης και μείωσης 2.16 switch Δομή πολλαπλής επιλογής 2.17 do/while Δομή επανάληψης 2.18 break και continue 2.19 Λογικοί τελεστές 2.20 Σύγχυση ισότητας με ανάθεση 2.21 Περίληψη δομημένου προγραμματισμού 6

2.1 Εισαγωγή Πριν γράψουμε ένα πρόγραμμα Κατανοούμε πλήρως το πρόβλημα Σχεδιάζουμε προσεκτικά την παρεχόμενη λύση Όσο γράφουμε το πρόγραμμα Γνωρίζουμε ποια δομικά μέρη είναι διαθέσιμα Χρησιμοποιούμε σωστές αρχές προγραμματισμού The art of computer programming του Donald E. Knuth 7

2.2 Αλγόριθμοι Υπολογιστικά προβλήματα Επιλύονται εκτελώντας μια αλληλουχία από ενέργειες με καθορισμένη σειρά Αλγόριθμος μια διαδικασία που καθορίζει: Ενέργειες που εκτελούνται Σειρά που εκτελούνται Παράδειγμα: συνταγή Έλεγχος προγράμματος Ορίζει τη σειρά που θα εκτελεστούν οι εντολές/ δηλώσεις 8

C++ keywords 2.4 Δομές Ελέγχου Δεν μπορούν να χρησιμοποιηθούν ως ονόματα μεταβλητών ή προσδιοριστικά (identifiers) C++ Keyword s Keywords common to the C and C++ programming languages auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while C++ only keywords asm bool catch class const_cast delete dynamic_cast explicit false friend inline mutable namespace new operator private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual wchar_t 9

2.9 Διατύπωση Αλγορίθμων (Επανάληψη) Υποθέστε ότι το πρόβλημα είναι: Αναπτύξτε ένα πρόγραμμα υπολογισμού του μέσου όρου μιας τάξης μαθητών που θα επεξεργαστεί έναν αυθαίρετο αριθμό βαθμών κάθε φορά που τρέχει το πρόγραμμα Άγνωστος αριθμός σπουδαστών Πώς το πρόγραμμα ξέρει πότε για να τελειώσει; Τιμή φρουρός Δείχνει "το τέλος της εισαγωγής δεδομένων" Ο βρόχος τελειώνει όταν γίνει εισαγωγή της τιμής φρουρού Επιλέγεται έτσι ώστε να μην μπορεί να γίνει σύγχυσή του με την κανονική εισαγωγή τιμών -1 στην περίπτωση αυτή 10

2.9 Διατύπωση Αλγορίθμων (Επανάληψη) Top-down:Από επάνω προς τα κάτω, σταδιακός καθαρισμός Αρχίζουμε με τον ψευδοκώδικα της κορυφής Καθορίστε το μέσο όρο της τάξης για το διαγώνισμα Διαιρέστε την κορυφή σε μικρότερους στόχους, καταγράψτε τους με τη σειρά Αρχικοποίησε τις μεταβλητές Εισαγωγή, άθροιση και καταμέτρηση των βαθμών (Input, sum and count) Υπολόγισε και εκτύπωσε το μέσο όρο 11

2.9 Διατύπωση Αλγορίθμων (Επανάληψη) Πολλά προγράμματα έχουν τρεις φάσεις Έναρξη Αρχικοποιεί τις μεταβλητές προγράμματος Επεξεργασία Εισαγωγή δεδομένων, προσαρμόζει τις μεταβλητές Τερματισμός Υπολογισμός και εκτύπωση τελικού αποτελέσματος Βοηθά τη διάσπαση του προγράμματος για την ανάλυση top-down 12

2.9 Διατύπωση Αλγορίθμων (Επανάληψη) Αναλύουμε τη φάση έναρξης Επεξεργασία Αρχικοποίηση μεταβλητών σημαίνει Αρχικοποίησε το σύνολο total στο μηδέν Αρχικοποίησε το μετρητή counter στο μηδέν Εισαγωγή, άθροιση και μέτρηση των βαθμών σημαίνει Εισαγωγή τον πρώτο βαθμό (ενδεχομένως και το φρουρό) While ο χρήστης δεν έχει εισάγει το φρουρό Πρόσθεσε το βαθμό στο τρέχον total Πρόσθεσε ένα στο counter Εισαγωγή του επόμενου βαθμού 13

2.9 Διατύπωση Αλγορίθμων Τερματισμός (Επανάληψη) Υπολόγισε και εκτύπωσε το μέσο όρο σημαίνει If ο μετρητής counter δεν είναι ίσος με μηδέν Όρισε το μέσο όρο ως το σύνολο total διαιρεμένο με τον μετρητή counter Εκτύπωσε το μέσο όσο Else Εκτύπωσε Δεν εισάχθηκαν βαθμοί Στη συνέχεια ο κώδικας C++ 14

1 // Fig. 2.9: fig02_09.cpp 2 // Class average program with sentinel-controlled repetition. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 using std::fixed; 9 10 #include <iomanip> // parameterized stream manipulators 11 12 using std::setprecision; // sets numeric output precision 13 14 // function main begins program execution 15 int main() 16 { 17 int total; // sum of grades 18 int gradecounter; // number of grades entered 19 int grade; // grade value 20 21 double average; // number with decimal point for average 22 23 // initialization phase 24 total = 0; // initialize total 25 gradecounter = 0; // initialize loop counter Ο τύπος δεδομένων double χρησιμοποιείτε για του δεκαδικούς αριθμούς. Outline fig02_09.cpp (1 of 3) 15 2003 Prentice Hall, Inc. All rights reserved.

26 27 // processing phase 28 // get first grade from user 29 cout << "Enter grade, -1 to end: "; // prompt for input 30 cin >> grade; // read grade from user 31 32 // loop until sentinel value read from user 33 while ( grade!= -1 ) { 34 total = total + grade; double πρόσκαιρα // (casting). add grade to total 35 gradecounter = gradecounter + 1; // increment counter 36 37 cout << "Enter grade, -1 to end: "; // prompt for input υπόλοιπο. 38 cin >> grade; // read next grade 39 40 } // end while static_cast<double>() χειρίζεται το total ως Απαιτείται διότι η διαίρεση δύο ακεραίων αποκόβει το gradecounter είναι int, αλλά προάγεται σε double. 41 42 // termination phase 43 // if user entered at least one grade... 44 if ( gradecounter!= 0 ) { 45 46 // calculate average of all grades entered 47 average = static_cast< double >( total ) / gradecounter; 48 Outline fig02_09.cpp (2 of 3) 16 2003 Prentice Hall, Inc. All rights reserved.

49 // display average with two digits of precision 50 cout << "Class average is " << setprecision( 2 ) 51 << fixed << average << endl; 52 53 } // end if part of if/else 54 55 else // if no grades were entered, output appropriate message 56 cout << "No grades were entered" << endl; 57 58 return 0; // indicate program ended successfully 59 60 } // end function main Enter grade, -1 to end: 75 Enter grade, -1 to end: 94 Enter grade, -1 to end: 97 Enter grade, -1 to end: 88 Enter grade, -1 to end: 70 Enter grade, -1 to end: 64 Enter grade, -1 to end: 83 Enter grade, -1 to end: 89 Enter grade, -1 to end: -1 Class average is 82.50 Outline fig02_09.cpp (3 of 3) fig02_09.cpp output (1 of 1) fixed αναγκάζει setprecision(2) την έξοδο εκτυπώνει δύο ψηφία μετά να εκτυπωθεί σε μορφή την υποδιαστολή (στρογγυλοποίηση για να σταθερής υποδιαστολής ταιριάζει (όχι στην ακρίβεια). σε επιστημονική μορφή). Επίσης, αναγκάζει Τα να προγράμματα που τη χρησιμοποιούν πρέπει τυπώνονται η υποδιαστολή να περιλαμβάνουν: ακολουθούμενη από include <iomanip> απαραίτητα μηδενικά. Include <iostream> 17 2003 Prentice Hall, Inc. All rights reserved.

2.11 Τελεστές Ανάθεσης Συντμήσεις εκφράσεων Τελεστής ανάθεσης αθροίσματος c = c + 3; Μετατρέπεται σε c += 3; Δηλώσεις της μορφής μεταβλητή = μεταβλητή τελεστής έκφραση; Ξαναγράφεται ως μεταβλητή τελεστής = έκφραση; Άλλοι τελεστές ανάθεσης d -= 4 (d = d - 4) e *= 5 (e = e * 5) f /= 3 (f = f / 3) g %= 9 (g = g % 9) 18

2.12 Τελεστές αύξησης και μείωσης Ο τελεστής αύξησης (++ ++) μπορεί να αντικαταστήσει το: c += 1 Ο τελεστής μείωσης (--) - μπορεί να αντικαταστήσει το: c -= 1 Προ-αύξηση Όταν ο τελεστής χρησιμοποιείται πριν τη μεταβλητή (++c ή c) Η μεταβλητή αλλάζει και στη συνέχεια υπολογίζεται η έκφραση στην οποία περιλαμβάνεται Μετά-αύξηση Όταν ο τελεστής χρησιμοποιείται μετά τη μεταβλητή (c++ ή c--) Εκτελείται η έκφραση στην οποία περιλαμβάνεται η μεταβλητή και στη συνέχεια η μεταβλητή λαμβάνει τη νέα τιμή. 19

2.12 Τελεστές αύξησης και If c = 5,, then cout << ++c; μείωσης Το c αλλάζει σε 6, και στη συνέχεια εκτυπώνεται cout << c++; Εκτυπώνεται το 5 (cout εκτελείται πριν την αύξηση. c στη συνέχεια γίνεται 6 20

2.12 Τελεστές αύξησης και μείωσης Όταν η μεταβλητή δεν είναι σε έκφραση Η προ-αύξηση και η μέτα-αύξηση αύξηση έχουν το ίδιο αποτέλεσμα ++c; και cout << c; c++; cout << c; είναι όμοια 21

1 // Fig. 2.14: fig02_14.cpp 2 // Preincrementing and postincrementing. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // function main begins program execution 9 int main() 10 { 11 int c; // declare variable 12 13 // demonstrate postincrement 14 c = 5; // assign 5 to c 15 cout << c << endl; // print 5 16 cout << c++ << endl; // print 5 then postincrement 17 cout << c << endl << endl; // print 6 18 19 // demonstrate preincrement 20 c = 5; // assign 5 to c 21 cout << c << endl; // print 5 22 cout << ++c << endl; // preincrement then print 6 23 cout << c << endl; // print 6 Outline fig02_14.cpp (1 of 2) 22 2003 Prentice Hall, Inc. All rights reserved.

24 25 return 0; // indicate successful termination 26 27 } // end function main 5 5 6 5 6 6 Outline fig02_14.cpp (2 of 2) fig02_14.cpp output (1 of 1) 23 2003 Prentice Hall, Inc. All rights reserved.

2.16 switch Δομή πολλαπλής switch επιλογής Ελέγχει μια μεταβλητή για πολλαπλές τιμές Μια σειρά από ετικέτες case και προαιρετικά default case switch ( variable ) { case value1: statements break; // taken if variable == value1 // necessary to exit switch case value2: case value3: statements break; // taken if variable == value2 or == value3 } default: statements break; // taken if variable matches no other cases 24

2.16 switch Δομή πολλαπλής επιλογής 25

2.16 switch Δομή πολλαπλής Το επόμενο παράδειγμα επιλογής Πρόγραμμα που διαβάζει βαθμούς (A-F) Τυπώνει τον αριθμό κάθε βαθμού που δίνεται Λεπτομέρειες για τους χαρακτήρες Μονοί χαρακτήρες αποθηκεύονται συνήθως σε τύπο δεδομένων char char ένας 1-byte integer, έτσι οι chars μπορούν να αποθηκευτούν ως ints Μπορεί να γίνει χειρισμός του χαρακτήρα είτε ως int είτε char 97 είναι η αριθμητική αναπαράσταση του μικρού a (ASCII) Χρησιμοποιούμε μονά εισαγωγικά για να πάρουμε την αριθμητική αναπαράσταση ενός χαρακτήρα cout << "The character (" << 'a' << ") has the value " << static_cast< int > ( 'a' ) << endl; Εκτυπώνει: The character (a) has the value 97 26

1 // Fig. 2.22: fig02_22.cpp 2 // Counting letter grades. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 // function main begins program execution 10 int main() 11 { 12 int grade; // one grade 13 int acount = 0; // number of As 14 int bcount = 0; // number of Bs 15 int ccount = 0; // number of Cs 16 int dcount = 0; // number of Ds 17 int fcount = 0; // number of Fs 18 19 cout << "Enter the letter grades." << endl 20 << "Enter the EOF character to end input." << endl; 21 Outline fig02_22.cpp (1 of 4) 27 2003 Prentice Hall, Inc. All rights reserved.

22 // loop until user types end-of-file key sequence 23 while ( ( grade = cin.get() )!= EOF ) { 24 25 // determine which grade was input 26 switch ( grade ) { // switch structure nested in while 27 28 case 'A': // grade was uppercase A 29 case 'a': // or lowercase a 30 ++acount; // increment acount 31 break; // necessary to exit switch 32 33 case 'B': // grade was uppercase B 34 case 'b': // or lowercase b 35 ++bcount; // increment bcount 36 break; // exit switch 37 int) με την αριθμητική 38 case 'C': // grade was uppercase C 39 αναπαράσταση case του 'c': A και a. // or lowercase c Αυτό μπορεί να 40 ++ccount; // increment ccount αρχικοποιήσει: 41 break; // exit switch 42 Συγκρίνει το grade (έναν Οι δηλώσεις ανάθεσης έχουν τιμή που είναι η ίδια με τη μεταβλητή αριστερά του =. Η τιμή της δήλωσης είναι η ίδια με την τιμή που επιστρέφει η cin.get(). a = b = c = 0; break ολοκληρώνει το switch και το πρόγραμμα συνεχίζει με την εντολή μετά από τη δομή switch. Outline fig02_22.cpp (2 of 4) cin.get() χρησιμοποιεί την τελεία. Αυτή η συνάρτηση επιστρέφει ένα χαρακτήρα από το πληκτρολόγιο (πριν το Enter), και την αναθέτει στην grade. cin.get() επιστρέφει EOF (end-of-file) αφού ο χαρακτήρας EOF εισαχθεί, για να δείξει το τέλος εισαγώμενων δεδομένων. EOF δίνεται με ctrl-d ή ctrl-z, ανάλογα το λειτουργικό σύστημα. 28 2003 Prentice Hall, Inc. All rights reserved.

43 case 'D': // grade was uppercase D 44 case 'd': // or lowercase d 45 ++dcount; // increment dcount 46 break; // exit switch 47 48 case 'F': // grade was uppercase F 49 case 'f': // or lowercase f 50 ++fcount; // increment fcount 51 break; // exit switch 52 53 case '\n': // ignore newlines, 54 case '\t': // tabs, 55 case ' ': // and spaces in input 56 break; // exit switch 57 58 default: // catch all περιπτώσεις other characters εισόδου. 59 cout << "Incorrect letter grade entered." 60 << " Enter a new grade." << endl; 61 break; // optional; will exit switch anyway 62 63 } // end switch 64 65 } // end while 66 Ο έλεγχος είναι αναγκαίος μια και δίνεται Enter μετά από κάθε γράμμα-βαθμό. Αυτό προσθέτει ένα χαρακτήρα newline που πρέπει να αφαιρεθεί. Ομοίως πρέπει να αγνοηθεί το κενό. Παρατηρούμε τη δήλωση default, που πιάνει (catches) όλες τις υπόλοιπες Outline fig02_22.cpp (3 of 4) 29 2003 Prentice Hall, Inc. All rights reserved.

67 // output summary of results 68 cout << "\n\ntotals for each letter grade are:" 69 << "\na: " << acount // display number of A grades 70 << "\nb: " << bcount // display number of B grades 71 << "\nc: " << ccount // display number of C grades 72 << "\nd: " << dcount // display number of D grades 73 << "\nf: " << fcount // display number of F grades 74 << endl; 75 76 return 0; // indicate successful termination 77 78 } // end function main Outline fig02_22.cpp (4 of 4) 30 2003 Prentice Hall, Inc. All rights reserved.

Enter the letter grades. Enter the EOF character to end input. a B c C A d f C E Incorrect letter grade entered. Enter a new grade. D A b ^Z Outline fig02_22.cpp output (1 of 1) 31 Totals for each letter grade are: A: 3 B: 2 C: 3 D: 2 F: 1 2003 Prentice Hall, Inc. All rights reserved.

2.17 do/while Δομή επανάληψης Όμοια με τη δομή while Δημιουργεί ένα βρόγχο που ελέγχεται στο τέλος και όχι στην αρχή Οι δηλώσεις στο σώμα εκτελούνται τουλάχιστον μία φορά Μορφή do { δήλωση } while ( συνθήκη ); 32

2.17 do/while Δομή επανάληψης 33

2.18 break και continue Δήλωση: break Άμεση έξοδο από while, for, do/while, switch Το πρόγραμμα συνεχίζει με την πρώτη δήλωση μετά τη δομή Χρησιμοποιείται σε περιπτώσεις όπως: Νωρίτερη διαφυγή από το βρόγχο Παράβλεψη του υπόλοιπου switch 34

1 // Fig. 2.26: fig02_26.cpp 2 // Using the break statement in a for structure. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // function main begins program execution 9 int main() 10 { 11 12 int x; // x declared here so it can be used after the loop 13 14 // loop 10 times 15 for ( x = 1; x <= 10; x++ ) { 16 17 // if x is 5, terminate loop 18 if ( x == 5 ) 19 break; // break loop only if x is 5 20 21 cout << x << " "; // display value of x 22 23 } // end for Έξοδος από τη δομή for μόλις εκτελεστεί το break. 24 25 cout << "\nbroke out of loop when x became " << x << endl; Outline fig02_26.cpp (1 of 2) 35 2003 Prentice Hall, Inc. All rights reserved.

26 27 return 0; // indicate successful termination 28 29 } // end function main 1 2 3 4 Broke out of loop when x became 5 Outline fig02_26.cpp (2 of 2) fig02_26.cpp output (1 of 1) 36 2003 Prentice Hall, Inc. All rights reserved.

2.18 break and continue Δήλωση: continue Χρησιμοποιείται στις while, for, do/while Διαφυγή από το υπόλοιπο βρόγχο Προχωρά στην επόμενη επανάληψη του βρόγχου while και do/while δομές Ο έλεγχος για συνέχεια της επανάληψης ελέγχεται αμέσως μετά τη δήλωση continue for δομή Εκτελείται αύξηση της έκφρασης Στη συνέχεια, ελέγχεται αν θα συνεχιστεί ο βρόγχος 37

1 // Fig. 2.27: fig02_27.cpp 2 // Using the continue statement in a for structure. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // function main begins program execution 9 int main() 10 { 11 // loop 10 times 12 for ( int x = 1; x <= 10; x++ ) { 13 14 // if x is 5, continue with next επανάληψη. iteration of loop 15 if ( x == 5 ) 16 continue; // skip remaining code in loop body 17 18 cout << x << " "; // display value of x 19 20 } // end for structure Περνά στην επόμενη 21 22 cout << "\nused continue to skip printing the value 5" 23 << endl; 24 25 return 0; // indicate successful termination Outline fig02_27.cpp (1 of 2) 38 2003 Prentice Hall, Inc. All rights reserved.

26 27 } // end function main Outline 39 1 2 3 4 6 7 8 9 10 Used continue to skip printing the value 5 fig02_27.cpp (2 of 2) fig02_27.cpp output (1 of 1) 2003 Prentice Hall, Inc. All rights reserved.

2.19 Λογικοί Τελεστές Χρησιμοποιούνται ως συνθήκες σε βρόγχους και δηλώσεις if && (λογικό ΚΑΙ) true αν και οι δύο συνθήκες είναι true if ( gender == 1 && age >= 65 ) ++seniorfemales; (λογικό Ή) true αν μία από τις δύο συνθήκες είναι true if ( semesteraverage >= 90 finalexam >= 90 ) cout << "Student grade is A" << endl; 40

2.19 Λογικοί Τελεστές! (λογικό NOT) Επιστρέφει true όταν η συνθήκη είναι false,, & αντιστρόφως if (!( grade == sentinelvalue ) ) cout << "The next grade is " << grade << endl; Εναλλακτικά: if ( grade!= sentinelvalue ) cout << "The next grade is " << grade << endl; 41

2.20 Σύγχυση της Ισότητας (==) Κοινό λάθος και της Ανάθεσης (=) Δεν επιστρέφεται συνήθως συντακτικό λάθος Όψεις του προβλήματος Οι εκφράσεις που έχουν τιμή μπορούν να χρησιμοποιηθούν για να ληφθεί απόφαση Zero = false, nonzero = true Οι δηλώσεις ανάθεσης παράγουν μία τιμή (αυτή που αναθέτουν) 42

2.20 Σύγχυση της Ισότητας (==) Παράδειγμα και της Ανάθεσης (=) if ( paycode == 4 ) cout << "You get a bonus!" << endl; Αν το paycode είναι 4, δίνεται bonus Aν το == αντικατασταθεί με = if ( paycode = 4 ) cout << "You get a bonus!" << endl; Το Paycode ορίζεται σε 4 (ανεξάρτητα από την προηγούμενη τιμή τους) Η δήλωση είναι αληθής (καθώς το 4 είναι μη μηδενικό) Το Bonus δίνεται σε κάθε περίπτωση 43

2.20 Σύγχυση της Ισότητας (==) και της Ανάθεσης (=) Αριστερές Τιμές Μπορούν να αλλάξουν (π.χ. μεταβλητές) x = 4; Δεξιές τιμές Σταθερές όπως αριθμοί (π.χ. δε μπορούμε να γράψουμε 4 = x;) Οι αριστερές τιμές μπορούν να χρησιμοποιηθούν ως δεξιές αλλά όχι το ανάποδο. 44

2.21 Περίληψη δομών 45

2.21 Περίληψη δομημένου προγραμματισμού Δομημένος προγραμματισμός Τα προγράμματα είναι εύκολο να κατανοηθούν, να ελεγχθούν, να αποσφαλματωθούν και να τροποποιηθούν Κανόνες Κάνουμε χρήση δομών ελέγχου μοναδικής εισόδου/εξόδου Κανόνες 1) Ξεκινούμε με την απλούστερη ροή 2) Κάθε ενέργεια μπορεί να αντικατασταθεί από δύο ενέργειες σε σειρά 3) Κάθε ενέργεια μπορεί να αντικατασταθεί από δομή έλεγχου (sequence, if, if/else, switch, while, do/while or for) 4) Οι κανόνες 2 και 3 μπορούν να εφαρμοστούν με κάθε σειρά και οσεσδήποτε φορές 46

2.21 Περίληψη δομημένου προγραμματισμού 47

2.21 Περίληψη δομημένου προγραμματισμού 48

2.21 Περίληψη δομημένου προγραμματισμού 49

2.21 Περίληψη δομημένου προγραμματισμού Όλα τα προγράμματα συνίστανται σε Ακολουθίες Επιλογές if, if/else,, or switch Κάθε επιλογή μπορεί να ξαναγραφτεί ως if Επαναλήψεις while, do/while or for Κάθε επανάληψη μπορεί να ξαναγραφτεί ως while 50