Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


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

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

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

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

4  2003 Prentice Hall, Inc. All rights reserved. Outline 4 fig01_06.cpp (1 of 1) 1 // Fig. 1.6: fig01_06.cpp 2 // Addition program. 3 #include 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 19 20 cout << "Sum is " << sum << endl; // print sum 21 22 return 0; // indicate that program ended successfully 23 24 } // end function main Δήλωση ακέραιων μεταβλητών.Χρήση του τελεστή εξαγωγής ροής με την στάνταρ είσοδο για την είσοδο δεδομένων χρήστη. Συνένωση των πράξεων εισαγωγής στη ροή εξόδου.. Ο τελεστής ροής endl αλλάζει γραμμή και στη συνέχεια, αδειάζει τον buffer εξόδου Οι υπολογισμοί μπορούν να γίνουν και στις εντολές εξόδου. Εναλλακτικά, αντί για τις γραμμές 18 και 20: cout << "Sum is " << integer1 + integer2 << endl;

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

6 6 Δομές Ελέγχου Περίληψη 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 Περίληψη δομημένου προγραμματισμού

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

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

9 9 2.4Δομές Ελέγχου C++ keywords C++ keywords Δεν μπορούν να χρησιμοποιηθούν ως ονόματα μεταβλητών ή προσδιοριστικά (identifiers) Δεν μπορούν να χρησιμοποιηθούν ως ονόματα μεταβλητών ή προσδιοριστικά (identifiers)

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

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

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

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

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

15  2003 Prentice Hall, Inc. All rights reserved. Outline 15 fig02_09.cpp (1 of 3) 1 // Fig. 2.9: fig02_09.cpp 2 // Class average program with sentinel-controlled repetition. 3 #include 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 using std::fixed; 9 10 #include // 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 χρησιμοποιείτε για του δεκαδικούς αριθμούς.

16  2003 Prentice Hall, Inc. All rights reserved. Outline 16 fig02_09.cpp (2 of 3) 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; // 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 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 ( total ) / gradeCounter; 48 static_cast () χειρίζεται το total ως double πρόσκαιρα (casting). Απαιτείται διότι η διαίρεση δύο ακεραίων αποκόβει το υπόλοιπο. gradeCounter είναι int, αλλά προάγεται σε double.

17  2003 Prentice Hall, Inc. All rights reserved. Outline 17 fig02_09.cpp (3 of 3) fig02_09.cpp output (1 of 1) 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 setprecision(2) εκτυπώνει δύο ψηφία μετά την υποδιαστολή (στρογγυλοποίηση για να ταιριάζει στην ακρίβεια). Τα προγράμματα που τη χρησιμοποιούν πρέπει να περιλαμβάνουν: include fixed αναγκάζει την έξοδο να εκτυπωθεί σε μορφή σταθερής υποδιαστολής (όχι σε επιστημονική μορφή). Επίσης, αναγκάζει να τυπώνονται η υποδιαστολή ακολουθούμενη από απαραίτητα μηδενικά. Include

18 18 2.11Τελεστές Ανάθεσης Συντμήσεις εκφράσεων Συντμήσεις εκφράσεων Τελεστής ανάθεσης αθροίσματος Τελεστής ανάθεσης αθροίσματος c = c + 3; Μετατρέπεται σε c += 3; 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)

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

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

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

22  2003 Prentice Hall, Inc. All rights reserved. Outline 22 fig02_14.cpp (1 of 2) 1 // Fig. 2.14: fig02_14.cpp 2 // Preincrementing and postincrementing. 3 #include 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

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

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

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

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

27  2003 Prentice Hall, Inc. All rights reserved. Outline 27 fig02_22.cpp (1 of 4) 1 // Fig. 2.22: fig02_22.cpp 2 // Counting letter grades. 3 #include 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

28  2003 Prentice Hall, Inc. All rights reserved. Outline 28 fig02_22.cpp (2 of 4) 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 38 case 'C': // grade was uppercase C 39 case 'c': // or lowercase c 40 ++cCount; // increment cCount 41 break; // exit switch 42 cin.get() χρησιμοποιεί την τελεία. Αυτή η συνάρτηση επιστρέφει ένα χαρακτήρα από το πληκτρολόγιο (μετά το Enter), και την αναθέτει στην grade. cin.get() επιστρέφει EOF (end-of-file) αφού ο χαρακτήρας EOF εισαχθεί, για να δείξει το τέλος εισαγώμενων δεδομένων. EOF δίνεται με ctrl-d ή ctrl-z, ανάλογα το λειτουργικό σύστημα. Συγκρίνει το grade (έναν int ) με την αριθμητική αναπαράσταση του A και a. break ολοκληρώνει το switch και το πρόγραμμα συνεχίζει με την εντολή μετά από τη δομή switch. Οι δηλώσεις ανάθεσης έχουν τιμή που είναι η ίδια με τη μεταβλητή αριστερά του =. Η τιμή της δήλωσης είναι η ίδια με την τιμή που επιστρέφει η cin.get(). Αυτό μπορεί να αρχικοποιήσει: a = b = c = 0;

29  2003 Prentice Hall, Inc. All rights reserved. Outline 29 fig02_22.cpp (3 of 4) 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 Παρατηρούμε τη δήλωση default, που πιάνει (catches) όλες τις υπόλοιπες περιπτώσεις εισόδου. Ο έλεγχος είναι αναγκαίος μια και δίνεται Enter μετά από κάθε γράμμα-βαθμό. Αυτό προσθέτει ένα χαρακτήρα newline που πρέπει να αφαιρεθεί. Ομοίως πρέπει να αγνοηθεί το κενό.

30  2003 Prentice Hall, Inc. All rights reserved. Outline 30 fig02_22.cpp (4 of 4) 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

31  2003 Prentice Hall, Inc. All rights reserved. Outline 31 fig02_22.cpp output (1 of 1) 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 Totals for each letter grade are: A: 3 B: 2 C: 3 D: 2 F: 1

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

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

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

35  2003 Prentice Hall, Inc. All rights reserved. Outline 35 fig02_26.cpp (1 of 2) 1 // Fig. 2.26: fig02_26.cpp 2 // Using the break statement in a for structure. 3 #include 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 24 25 cout << "\nBroke out of loop when x became " << x << endl; Έξοδος από τη δομή for μόλις εκτελεστεί το break.

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

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

38  2003 Prentice Hall, Inc. All rights reserved. Outline 38 fig02_27.cpp (1 of 2) 1 // Fig. 2.27: fig02_27.cpp 2 // Using the continue statement in a for structure. 3 #include 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 Περνά στην επόμενη επανάληψη.

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

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

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

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

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

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

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

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

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

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

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

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


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google