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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Αλγόριθμοι σχεδίασης βασικών 2D σχημάτων (ευθεία)
Advertisements

Γραφήματα & Επίπεδα Γραφήματα
Ερωτηματολόγιο Συλλογής Απαιτήσεων Εφαρμογών Υψηλών Επιδόσεων
(READ – WRITE) ΚΑΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (INTEGER,REAL,CHAR)
Μάρτιος 2011 Βαρόμετρο ΕΒΕΘ - Καταναλωτές. “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Τα στοιχειώδη περί γεωδαιτικών υπολογισμών
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
Εντολες Επιλογης (Selection)
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος δ
Page  1 Ο.Παλιάτσου Γαλλική Επανάσταση 1 ο Γυμνάσιο Φιλιππιάδας.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δομημένος Προγραμματισμός και Δομές.
Ανάλυση του λευκού φωτός και χρώματα
© GfK 2012 | Title of presentation | DD. Month
-17 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Σεπτέμβριος 2013 Δείκτης > +20 Δείκτης 0 a +20 Δείκτης 0 a -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
+21 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Δεκέμβριος 2013 Δείκτης > +20 Δείκτης 0 να +20 Δείκτης 0 να -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
Βαρόμετρο ΕΒΕΘ - Καταναλωτές Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
ΒΑΡΟΜΕΤΡΟ ΕΒΕΘ – ΣΕΠΤΕΜΒΡΙΟΣ 2014 AD – HOC ΕΡΩΤΗΣΕΙΣ.
1 AYTOΣ Ο ΠΛΑΝΗΤΗΣ ΕΙΝΑΙ ΠΟΛΥ ΕΝΔΙΑΦΕΡΩΝ ΤΟΠΟΣ ΓΙΑ ΝΑ ΖΕΙ ΚΑΝΕΙΣ….
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
ΙΣΟΛΟΓΙΣΜΟΣ ΒΑΣΕΙ Δ.Λ.Π. (ΕΝΑΡΞΗΣ)
Εξάσκηση στην προπαίδεια
Αποκεντρωμένη Διοίκηση Μακεδονίας Θράκης ∆ιαχείριση έργων επίβλεψης µε σύγχρονα µέσα και επικοινωνία C2G, B2G, G2G Γενική Δ/νση Εσωτερικής Λειτουργίας.
1/5/ ΧΡΗΣΕΙΣ ΤΗΣ ΗΛΙΑΚΗΣ ΑΝΤΙΝΟΒΟΛΙΑΣ 1/5/ (πηγή: HELIOAKMI).
2006 GfK Praha CORRUPTION CLIMATE IN EUROPE % % % %0 - 10% % % % % % ΚΛΙΜΑ ΔΙΑΦΘΟΡΑΣ Η.
Βαρόμετρο ΕΒΕΘ Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού Θεσσαλονίκης”
13ο Πανελλήνιο Συνέδριο Ακαδημαϊκών Βιβλιοθηκών – Κέρκυρα Οκτωβρίου 2004 Το σύστημα COINE για την προβολή της πολιτιστικής κληρονομιάς και την υποστήριξη.
1 Ολυμπιάδα Πληροφορικής Μάθημα 3. 2 Στόχοι μαθήματος Δομή Επανάληψης Εντολή while Εντολή for.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Ολυμπιάδα Πληροφορικής
Βαρόμετρο ΕΒΕΘ Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού Θεσσαλονίκης”
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
Eντολες Επαναληψης - Βροχοι (repetition and loops)
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Βαρόμετρο ΕΒΕΘ - Καταναλωτές Μάρτιος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι.
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Eντολες Επαναληψης - Βροχοι (repetition and loops)
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Computers: Information Technology in Perspective By Long and Long Copyright 2002 Prentice Hall, Inc. Προγραμματισμός Η / Υ 6 η Διάλεξη.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
+19 Δεκέμβριος 2014 Δείκτης > +20 Δείκτης 0 έως +20 Δείκτης 0 έως -20 Δείκτης < -20 Συνολικά της ΕΕ: +5 Δείκτης > +20 Δείκτης 0 έως +20 Δείκτης 0 έως -20.
ΤΑ ΔΟΝΤΙΑ ΜΑΣ.
Βαρόμετρο ΕΒΕΘ Σεπτέμβριος “Η καθιέρωση ενός αξιόπιστου εργαλείου καταγραφής του οικονομικού, επιχειρηματικού και κοινωνικού γίγνεσθαι του Νομού.
ΡΑΛΛΕΙΑ ΣΧΟΛΕΙΑ: 155 ΧΡΟΝΙΑ ΙΣΤΟΡΙΑΣ ΚΑΙ ΠΡΟΣΦΟΡΑΣ.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Επανάληψη.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πάτρα Δομημένος Προγραμματισμός.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
Τεχνολογία και Προγραμματισμός Υπολογιστών
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Μεταγράφημα παρουσίασης:

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

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

3 2.1 Εισαγωγή Πριν γράψουμε ένα πρόγραμμα Πριν γράψουμε ένα πρόγραμμα Κατανοούμε πλήρως το πρόβλημα Κατανοούμε πλήρως το πρόβλημα Σχεδιάζουμε προσεκτικά την παρεχόμενη λύση Σχεδιάζουμε προσεκτικά την παρεχόμενη λύση Όσο γράφουμε το πρόγραμμα Όσο γράφουμε το πρόγραμμα Γνωρίζουμε ποια δομικά μέρη είναι διαθέσιμα Γνωρίζουμε ποια δομικά μέρη είναι διαθέσιμα Χρησιμοποιούμε σωστές αρχές προγραμματισμού Χρησιμοποιούμε σωστές αρχές προγραμματισμού

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

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

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

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

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

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

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

 2003 Prentice Hall, Inc. All rights reserved. Outline 11 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 using std::setprecision; // sets numeric output precision // 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 double average; // number with decimal point for average // initialization phase 24 total = 0; // initialize total 25 gradeCounter = 0; // initialize loop counter Ο τύπος δεδομένων double χρησιμοποιείτε για του δεκαδικούς αριθμούς.

 2003 Prentice Hall, Inc. All rights reserved. Outline 12 fig02_09.cpp (2 of 3) // 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 // 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 cout << "Enter grade, -1 to end: "; // prompt for input 38 cin >> grade; // read next grade } // end while // termination phase 43 // if user entered at least one grade if ( gradeCounter != 0 ) { // calculate average of all grades entered 47 average = static_cast ( total ) / gradeCounter; 48 static_cast () χέιρίζεται το total ως double πρόσκαιρα (casting). Απαιτείται διότι η διαίρεση δύο ακεραίων αποκόβει το υπόλοιπο. gradeCounter είναι int, αλλά προάγεται σε double.

 2003 Prentice Hall, Inc. All rights reserved. Outline 13 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; } // end if part of if/else else // if no grades were entered, output appropriate message 56 cout << "No grades were entered" << endl; return 0; // indicate program ended successfully } // 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 setprecision(2) εκτυπώνει δύο ψηφία μετά την υποδιαστόλή (στρογγυλοποίηση για να ταιριάζει στην ακρίβεια). Τα προγράμματα που τη χρησιμοποιούν πρέπει να περιλαμβάνουν: include fixed αναγκάζει την έξοδο να εκτυπωθεί σε μορφή σταθερής υποδιαστολής (όχι σε επιστημονική μορφή). Επίσης, αναγκάζει να τυπώνονται η υποδιαστολή ακολουθούμενη από απαραίτητα μηδενικά. Include

Τελεστές Ανάθεσης Συντμήσεις εκφράσεων Συντμήσεις εκφράσεων Τελεστής ανάθεσης αθροίσματος Τελεστής ανάθεσης αθροίσματος 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)

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

Τελεστές αύξησης και μείωσης 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

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

 2003 Prentice Hall, Inc. All rights reserved. Outline 18 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 // 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 // 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

 2003 Prentice Hall, Inc. All rights reserved. Outline 19 fig02_14.cpp (2 of 2) fig02_14.cpp output (1 of 1) return 0; // indicate successful termination } // end function main

switch Δομή πολλαπλής επιλογής 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; }

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

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

 2003 Prentice Hall, Inc. All rights reserved. Outline 23 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 cout << "Enter the letter grades." << endl 20 << "Enter the EOF character to end input." << endl; 21

 2003 Prentice Hall, Inc. All rights reserved. Outline 24 fig02_22.cpp (2 of 4) 22 // loop until user types end-of-file key sequence 23 while ( ( grade = cin.get() ) != EOF ) { // determine which grade was input 26 switch ( grade ) { // switch structure nested in while case 'A': // grade was uppercase A 29 case 'a': // or lowercase a 30 ++aCount; // increment aCount 31 break; // necessary to exit switch case 'B': // grade was uppercase B 34 case 'b': // or lowercase b 35 ++bCount; // increment bCount 36 break; // exit switch 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;

 2003 Prentice Hall, Inc. All rights reserved. Outline 25 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 case 'F': // grade was uppercase F 49 case 'f': // or lowercase f 50 ++fCount; // increment fCount 51 break; // exit switch case '\n': // ignore newlines, 54 case '\t': // tabs, 55 case ' ': // and spaces in input 56 break; // exit switch default: // catch all other characters 59 cout << "Incorrect letter grade entered." 60 << " Enter a new grade." << endl; 61 break; // optional; will exit switch anyway } // end switch } // end while 66 Παρατηρούμε τη δήλωση default, που πιάνει (catches) όλες τις υπόλοιπες περιπτώσεις εισόδου. Ο έλεγχος είναι αναγκαίος μια και δίνεται Enter μετά από κάθε γράμμα-βαθμό. Αυτό προσθέτει ένα χαρακτήρα newline που πρέπει να αφαιρεθεί. Ομοίως πρέπει να αγνοηθεί το κενό.

 2003 Prentice Hall, Inc. All rights reserved. Outline 26 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; return 0; // indicate successful termination } // end function main

 2003 Prentice Hall, Inc. All rights reserved. Outline 27 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

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

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

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

 2003 Prentice Hall, Inc. All rights reserved. Outline 31 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 { int x; // x declared here so it can be used after the loop // loop 10 times 15 for ( x = 1; x <= 10; x++ ) { // if x is 5, terminate loop 18 if ( x == 5 ) 19 break; // break loop only if x is cout << x << " "; // display value of x } // end for cout << "\nBroke out of loop when x became " << x << endl; Έξοδος από τη δομή for μόλις εκτελεστεί το break.

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

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

 2003 Prentice Hall, Inc. All rights reserved. Outline 34 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++ ) { // if x is 5, continue with next iteration of loop 15 if ( x == 5 ) 16 continue; // skip remaining code in loop body cout << x << " "; // display value of x } // end for structure cout << "\nUsed continue to skip printing the value 5" 23 << endl; return 0; // indicate successful termination Περνά στην επόμενη επανάληψη.

 2003 Prentice Hall, Inc. All rights reserved. Outline 35 fig02_27.cpp (2 of 2) fig02_27.cpp output (1 of 1) } // end function main Used continue to skip printing the value 5

Λογικοί Τελεστές Χρησιμοποιούνται ως συνθήκες σε βρόγχους και δηλώσεις 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;

Λογικοί Τελεστές ! (λογικό 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;

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

Σύγχυση της Ισότητας (==) και της Ανάθεσης (=) Παράδειγμα Παράδειγμα 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 δίνεται σε κάθε περίπτωση

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

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

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

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

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

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

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