Προγραμματισμός ΙΙ. Ενότητα 2: Επανάληψη στον Προγραμματισμό Ι. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Σχετικά έγγραφα
Προγραμματισμός ΙΙ Ενότητα 5:

Προγραμματισμός ΙΙ. Ενότητα 2: Διαχείριση μνήμης. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 7: Βιβλιοθήκες - Μέρος 2. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 8: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 1 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ Ενότητα 4:

Προγραμματισμός ΙΙ. Ενότητα 1: Προαπαιτούμενα. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 9: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 2 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 4: Διαχείριση μνήμης. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 1: Βασικοί τύποι δεδομένων. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 6: Βιβλιοθήκες - Μέρος 1. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 7: Βιβλιοθήκες - Μέρος 1. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ Ενότητα 3:

Προγραμματισμός ΙΙ. Ενότητα 9: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 1 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ Ενότητα 5:

Προγραμματισμός ΙΙ. Ενότητα 8: Βιβλιοθήκες - Μέρος 2. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 3: Βασικοί τύποι δεδομένων. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός ΙΙ. Ενότητα 10: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 2 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εισαγωγή στους Αλγορίθμους

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Δομές Δεδομένων Ενότητα 1

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διοικητική Λογιστική

Εισαγωγή στους Αλγορίθμους

Βάσεις Δεδομένων. Ενότητα 1: Εισαγωγή στις Βάσεις δεδομένων. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Δομές Δεδομένων. Ενότητα 2: Περισσότερα για τους δείκτες. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 8: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

ΑΝΑΛΥΣΗ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΩΝ ΚΑΤΑΣΤΑΣΕΩΝ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Προγραμματισμός ΙΙ Ενότητα 6:

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

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

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

ΑΝΤΙΡΡΥΠΑΝΤΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΑΙΩΡΟΥΜΕΝΩΝ ΣΩΜΑΤΙΔΙΩΝ Ενότητα 2: Αιωρούμενα σωματίδια & Απόδοση συλλογής Αν. Καθ. Δρ Μαρία Α. Γούλα Τμήμα Μηχανικών

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Τεχνολογία Πολυμέσων. Ενότητα 8: Pool Table. Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Οικονομετρία Ι. Ενότητα 10: Διαγνωστικοί Έλεγχοι. Δρ. Χαϊδώ Δριτσάκη Τμήμα Λογιστικής & Χρηματοοικονομικής

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Συστήματα Αναμονής. Ενότητα 3: Στοχαστικές Ανελίξεις. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ηλεκτρικές Μηχανές ΙI. Ενότητα 6: Εισαγωγή στους ασύγχρονους κινητήρες Τσιαμήτρος Δημήτριος Τμήμα Ηλεκτρολόγων Μηχανικών Τ.Ε

Προγραμματισμός H/Y Ενότητα 7: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Ηλεκτροτεχνία ΙΙ. Ενότητα 2: Ηλεκτρικά κυκλώματα συνεχούς ρεύματος. Δημήτρης Στημονιάρης, Δημήτρης Τσιαμήτρος Τμήμα Ηλεκτρολογίας

Οργάνωση και Διοίκηση Πωλήσεων

Λογιστική Κόστους Ενότητα 5: Προορισμός Κόστους

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 1: Εκτιμητές και Ιδιότητες. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγικές έννοιες θεωρίας Συστημάτων Αυτομάτου Ελέγχου Ενότητα 8 η : ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΖΟΜΕΝΩΝ ΛΟΓΙΚΩΝ ΕΛΕΓΚΤΩΝ

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

ΑΝΤΙΡΡΥΠΑΝΤΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΑΙΩΡΟΥΜΕΝΩΝ ΣΩΜΑΤΙΔΙΩΝ Ενότητα 6: Ηλεκτροστατικά Φίλτρα

Δομημένος Προγραμματισμός

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

Συστήματα Αναμονής. Ενότητα 9: Ανέλιξη Γέννησης - Θανάτου. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Διοικητική Λογιστική

Τεχνικό Σχέδιο - CAD

Οικονομετρία Ι. Ενότητα 3: Θεώρημα των Gauss Markov. Δρ. Χαϊδώ Δριτσάκη Τμήμα Λογιστικής & Χρηματοοικονομικής

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Μηχανολογικό Σχέδιο Ι

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών

Συστήματα Αναμονής. Ενότητα 5: Ανέλιξη Poisson. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ηλεκτροτεχνία ΙΙ. Ενότητα 1: Βασικές Έννοιες Ηλεκτροτεχία Ηλεκτρονική. Δημήτρης Στημονιάρης, Δημήτρης Τσιαμήτρος Τμήμα Ηλεκτρολογίας

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Transcript:

Προγραμματισμός ΙΙ Ενότητα 2: Επανάληψη στον Προγραμματισμό Ι Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Επανάληψη στον Προγραμματισμό Ι

Σκοποί ενότητας Στην παρούσα ενότητα καλείστε να υλοποιήσετε κάποια προγράμματα, ώστε να κάνετε μια σύντομη επανάληψη όσων έχετε μάθει στο Προγραμματισμό Ι, όπως και να δείτε κάποια αρχικά στοιχεία της C++. 5

Περιεχόμενα ενότητας Ασκήσεις. Βιβλιογραφία. 6

Ασκήσεις 1 και 2 Άσκηση 1. Να δημιουργήσετε μια εφαρμογή η οποία με τη χρήση του τελεστή εξαγωγής << ρεύματος προς την οθόνη (cout) θα εμφανίζει το μήνυμα My First Lesson in C++. Άσκηση 2. Να δημιουργήσετε μια εφαρμογή η οποία με τη χρήση του τελεστή εισαγωγής δεδομένων >> από το πληκτρολόγιο (cin) θα δέχεται τρεις μεταβλητές, μια ακέραια, μια πραγματική και μια χαρακτήρων και θα τις εμφανίζει στην οθόνη. 7

Άσκηση 3 Κατασκευάστε πρόγραμμα το οποίο θα δέχεται τρεις ακέραιους από το χρήστη, έναν για την ημερομηνία, έναν για το μήνα και έναν για το έτος σε τετραψήφια μορφή. Τέλος να εμφανίζει εάν η ημερομηνία είναι έγκυρη (δηλαδή η σωστή μέρα του μήνα να είναι στο διάστημα 1 ως 31, ο μήνας 1 ως 12 και το έτος τετραψήφιο). 8

Άσκηση 4 Κατασκευάστε ένα πρόγραμμα όπου ένας μετρητής ξεκινάει από το 1 και σταματάει στο 25. Να τυπώνεται αυτός ο μετρητής καθώς και το άθροισμα του μετρητή με τις προηγούμενες τιμές του, δίπλα από το μετρητή στην ίδια γραμμή. Ποιος τύπος βρόγχου επανάληψης είναι πιο κατάλληλος γι αυτή την άσκηση και γιατί;. 9

Άσκηση 5 Κατασκευάστε ένα πρόγραμμα όμοιο με την Άσκηση 4, το οποίο θα υπολογίζει το τρέχον άθροισμα των τιμών που δίνει ο χρήστης από το πληκτρολόγιο, εφ όσον ο αριθμός που δίνει ο χρήστης είναι θετικός. Όπως και πριν, εξηγήστε ποιος είναι ο πιο κατάλληλος βρόχος επανάληψης. 10

Άσκηση 6 Τροποποιήστε το πρόγραμμα της Άσκησης 3 έτσι ώστε να ελέγχει τη σωστή μέρα του μήνα ανάλογα με το μήνα και να ελέγχει επίσης για πιθανό δίσεκτο έτος. 11

Άσκηση 7 Υποθέστε ότι η salary (μισθός) και η deductions (κρατήσεις) είναι μεταβλητές τύπου double και ότι έχουν έγκυρες τιμές. Γράψτε μια εντολή if else που προβάλλει το OK και θέτει τη μεταβλητή net (καθαρό) ίση με τη salary μείον τη deductions, με την προϋπόθεση ότι η salary είναι τουλάχιστον όσο και η deductions. Αν, όμως, η salary είναι μικρότερη της deductions, η εντολή if else θα πρέπει απλά να προβάλλει τις λέξεις No Way, χωρίς να αλλάζει την τιμή οποιασδήποτε μεταβλητής. 12

Άσκηση 8 Υποθέστε ότι η speed (ταχύτητα) και η visibility (ορατότητα) είναι μεταβλητές τύπου int. Γράψτε μια εντολή if που θέτει την τιμή της speed ίση με το 25 και προβάλλει τη λέξη Caution, με την προϋπόθεση η τιμή της speed να είναι μεγαλύτερη του 25 και η τιμή της visibility κάτω του 20. Δεν υπάρχει σκέλος else. 13

Άσκηση 9 Υποθέστε ότι η salary και η bonus είναι μεταβλητές τύπου double. Γράψτε μια εντολή if else που προβάλλει τη λέξη OK, με την προϋπόθεση είτε η salary να είναι μεγαλύτερη ή ίση του MIN_SALARY ή η bonus να είναι μεγαλύτερη ή ίση του MIN_BONUS. Σε αντίθετη περίπτωση θα πρέπει να προβάλλει το Too low. Οι MIN_SALARY και MIN_BONUS είναι ονοματισμένες σταθερές. 14

Άσκηση 10 (1/2) Γράψτε ένα πρόγραμμα που επιτρέπει στο χρήστη να μετατρέπει μια θερμοκρασία σε βαθμούς, είτε από Κελσίου σε Φαρενάιτ ή από Φαρενάιτ σε Κελσίου. Χρησιμοποιήστε τις ακόλουθες εξισώσεις: Degrees_C = 5(Degrees_F - 32)/9. Degrees_F = (9(Degrees_C/5) + 32). 15

Άσκηση 10 (2/2) Να παροτρύνετε το χρήστη να εισάγει μια θερμοκρασία είτε ως C ή c για τους βαθμούς Κελσίου, ή ως F ή f για τους βαθμούς Φαρενάιτ. Μετατρέψτε τη θερμοκρασία σε Φαρενάιτ, στην περίπτωση που εισαχθούν βαθμοί Κελσίου, και σε Κελσίου αν εισαχθούν βαθμοί Φαρενάιτ. Προβάλλετε το αποτέλεσμα σε ευανάγνωστη μορφή. Αν εισαχθεί οτιδήποτε άλλο πέρα από τα C, c, F, ή f, εμφανίστε ένα μήνυμα λάθους και τερματίστε. 16

Άσκηση 11 (1/5) Γράψτε ένα πρόγραμμα που διαβάζει το υπόλοιπο ενός τραπεζικού λογαριασμού και ένα επιτόκιο, και προβάλλει το υπόλοιπο του λογαριασμού σε δέκα χρόνια. Η έξοδος πρέπει να δείχνει το υπόλοιπο του λογαριασμού για τρεις διαφορετικές μεθόδους ανατοκισμού: Ετήσιος, μηνιαίος και ημερήσιος. Με τον ετήσιο ανατοκισμό, ο τόκος προστίθεται μία φορά στο τέλος του έτους. 17

Άσκηση 11 (2/5) Με το μηνιαίο ανατοκισμό, ο τόκος προστίθεται 12 φορές το χρόνο. Με τον ημερήσιο ανατοκισμό, ο τόκος προστίθεται 365 φορές το χρόνο. Δε χρειάζεται να ανησυχείτε για δίσεκτα έτη. Υποθέστε ότι όλα τα έτη έχουν 365 μέρες. Στην περίπτωση του ετήσιου ανατοκισμού ο τόκος καταβάλλεται μετά από ακριβώς ένα χρόνο από την ημερομηνία κατάθεσης. 18

Άσκηση 11 (3/5) Με άλλα λόγια, δε χρειάζεται να ανησυχείτε αν ο τόκος καταβάλλεται μια συγκεκριμένη μέρα του έτους, όπως την 31η Δεκεμβρίου. Ομοίως, μπορείτε να υποθέσετε ότι ο μηνιαίος τόκος καταβάλλεται ακριβώς ένα μήνα μετά από την ημερομηνία κατάθεσης. Αφού ο λογαριασμός κερδίζει τόκους από την ανακεφαλαίωση των τόκων, θα πρέπει να έχει μεγαλύτερο υπόλοιπο, αν η καταβολή γίνεται πιο συχνά. 19

Άσκηση 11 (4/5) Βεβαιωθείτε ότι έχετε τροποποιήσει το καταθετικό επιτόκιο για τη χρονική περίοδο που σας ενδιαφέρει. Αν το επιτόκιο είναι 5 τοις εκατό, χρησιμοποιήστε το κλάσμα 5/12 όταν αποδίδετε τους τόκους σε μηνιαία βάση, και το 5/365 στην περίπτωση του ημερήσιου ανατοκισμού. Εκτελέστε αυτόν τον υπολογισμό χρησιμοποιώντας ένα βρόχο που προσθέτει τον τόκο σε κάθε μία χρονική περίοδο, δηλαδή, μη χρησιμοποιήσετε κάποιας μορφής αλγεβρική εξίσωση. 20

Άσκηση 11 (5/5) Το πρόγραμμά σας θα πρέπει να έχει έναν εξωτερικό βρόχο που επιτρέπει στο χρήστη να επαναλάβει το συγκεκριμένο υπολογισμό με νέο υπόλοιπο και επιτόκιο. Ο υπολογισμός να επαναλαμβάνεται μέχρι ο χρήστης να ζητήσει τον τερματισμό του προγράμματος. 21

Άσκηση 12 (1/4) Υποθέστε ότι μπορείτε να αγοράσετε μια σοκολάτα από έναν αυτόματο πωλητή, για 1. Μέσα σε κάθε σοκολάτα υπάρχει ένα κουπόνι. Μπορούμε να εξαργυρώσουμε έξι κουπόνια για μία σοκολάτα από το μηχάνημα. Αυτό σημαίνει ότι μόλις ξεκινήσετε να αγοράζετε σοκολάτες από το μηχάνημα, θα έχετε πάντοτε μερικά κουπόνια. 22

Άσκηση 12 (2/4) Θα θέλαμε να γνωρίζουμε πόσες σοκολάτες μπορούν να φαγωθούν αν ξεκινήσουμε με Ν και πάντοτε εξαργυρώνουμε τα κουπόνια, μόλις μαζέψουμε αρκετά για μια επιπλέον σοκολάτα. Για παράδειγμα, με 6 μπορούμε να καταναλώσουμε 7 σοκολάτες, αφού, αν αγοράσουμε 6 σοκολάτες, θα έχουμε 6 κουπόνια που μπορούμε να εξαργυρώσουμε για μία επιπλέον σοκολάτα. 23

Άσκηση 12 (3/4) Έτσι θα μας περισσέψει ένα επιπλέον κουπόνι. Για 11 θα μπορέσουμε να καταναλώσουμε 13 σοκολάτες, και θα μας περισσέψει ένα κουπόνι. Για 12 θα μπορούσαμε να καταναλώσουμε 14 σοκολάτες, και θα μας περισσέψουν δύο κουπόνια. 24

Άσκηση 12 (4/4) Γράψτε ένα πρόγραμμα που εισάγει μια τιμή για το N, και εξάγει τον αριθμό από σοκολάτες που μπορούμε να φάμε και πόσα κουπόνια θα μας περισσέψουν. Χρησιμοποιήστε ένα βρόχο που συνεχίζει να εξαργυρώνει κουπόνια, εφόσον υπάρχουν αρκετά που θα μας επιτρέψουν να πάρουμε τουλάχιστον μία σοκολάτα. 25

Άσκηση 13 (1/8) Η χώρα σας βρίσκεται σε πόλεμο, και οι εχθροί σας χρησιμοποιούν ένα μυστικό κώδικα για να επικοινωνούν μεταξύ τους. Έχετε καταφέρει να υποκλέψετε το εξής μήνυμα: :mmz\dxzmx]zpgy. 26

Άσκηση 13 (2/8) Το μήνυμα είναι προφανώς κρυπτογραφημένο, χρησιμοποιώντας το μυστικό κώδικα του εχθρού. Μόλις έχετε μάθει ότι η μέθοδος κρυπτογράφησής τους βασίζεται στον κώδικα ASCII. Κάθε χαρακτήρας μιας συμβολοσειράς κωδικοποιείται χρησιμοποιώντας αυτό το σύστημα. Για παράδειγμα, ο χαρακτήρας 'Α' κωδικοποιείται χρησιμοποιώντας τον αριθμό 65, και ο 'Β' χρησιμοποιώντας τον αριθμό 66. 27

Άσκηση 13 (3/8) Ο μυστικός κώδικας του εχθρού σας παίρνει κάθε γράμμα του μηνύματος και το κρυπτογραφεί ως εξής: if (OriginalChar + Key > 126) then else EncryptedChar = 32 + ((OriginalChar + Key) - 127) EncryptedChar = (OriginalChar + Key) 28

Άσκηση 13 (4/8) Για παράδειγμα: Αν ο εχθρός χρησιμοποιεί το Key = 10. Τότε το μήνυμα Hey αρχικά θα αναπαρασταθεί ως:. Πίνακας 1: Αρχική αναπαράσταση μηνύματος Hey. Πηγή: Διδάσκων (2015). Character ASCII code H 72 E 101 y 121 29

Άσκηση 13 (5/8) Και το Hey θα μπορούσε να κρυπτογραφηθεί ως: Encrypted H = (72 + 10) = 82 = R σε ASCII Encrypted e = (101 + 10) = 111 = o σε ASCII Encrypted y = 32 + ((121 + 10) - 127) = 36 = $ σε ASCII 30

Άσκηση 13 (6/8) Συνεπώς, το "Hey" θα μεταδίδονταν ως "Ro$". Γράψτε ένα πρόγραμμα που θα αποκρυπτογραφεί το υποκλεμμένο μήνυμα. Το μόνο που γνωρίζετε είναι ότι το κλειδί που χρησιμοποιείτε είναι κάποιος αριθμός από 1 ως 100. Μπορείτε να υποθέσετε ότι το αρχικό μήνυμα αποτελείται εξ' ολοκλήρου από κώδικες ASCII που αναπαριστούν μόνο εκτυπώσιμους χαρακτήρες. 31

Άσκηση 13 (7/8) Το πρόγραμμά σας θα πρέπει να προσπαθήσει να αποκρυπτογραφήσει το μήνυμα χρησιμοποιώντας όλα τα πιθανά κλειδιά μεταξύ του 1 και του 100. Όταν προσπαθήσετε το έγκυρο κλειδί, το μήνυμά σας θα βγάζει νόημα. Στην περίπτωση όλων των υπολοίπων κλειδιών, το μήνυμα θα είναι ακαταλαβίστικο. 32

Άσκηση 13 (8/8) Αφού υπάρχουν μόνο 100 κλειδιά, αυτό προφανώς είναι ένα αρκετά αδύναμο σύστημα κρυπτογράφησης. Η παρούσα άσκηση απαιτεί εκ μέρους σας να ερευνήσετε τον τρόπο μετατροπής ενός χαρακτήρα σε αριθμό, την επεξεργασία του αριθμού, και τη μετατροπή του πίσω σε χαρακτήρα. Σημαντικό: Παρατηρήστε ότι ο μυστικός κώδικας έχει ένα \, κι έτσι θα πρέπει να το αντιμετωπίσετε με \\, αν το υλοποιήσετε καθαυτού στο πρόγραμμά σας. 33

Άσκηση 14 (1/3) Γράψτε ένα πρόγραμμα που προσομοιώνει μια μπάλα που αναπηδάει, υπολογίζοντας το ύψος της σε πόδια ανά δευτερόλεπτα, καθώς περνάει ο χρόνος σε ένα προσομοιωμένο ρολόι. Τη χρονική στιγμή μηδέν η μπάλα ξεκινάει από ύψος μηδέν και έχει μια αρχική ταχύτητα που δίνεται από το χρήστη. Μια αρχική ταχύτητα που είναι τουλάχιστον 100 πόδια ανά δευτερόλεπτο αποτελεί καλή επιλογή. 34

Άσκηση 14 (2/3) Μετά από κάθε δευτερόλεπτο, αλλάξτε το ύψος προσθέτοντας την τρέχουσα ταχύτητα, και κατόπιν αφαιρέστε από την ταχύτητα το 32. Αν το νέο ύψος είναι μικρότερο του μηδενός, πολλαπλασιάστε τόσο το ύψος όσο και την ταχύτητα με το -0,5, ώστε να προσομοιώσετε την αναπήδηση. Σταματήστε μετά από την πέμπτη αναπήδηση. 35

Άσκηση 14 (3/3) Η έξοδος του προγράμματός σας θα πρέπει να έχει την ακόλουθη μορφή: Enter the initial velocity of the ball: 100 Time: 0 Height: 0.0 Time: 1 Height: 100.0 Time: 2 Height: 168.0 Time: 3 Height: 204.0 Time: 4 Height: 208.0 Time: 5 Height: 180.0 Time: 6 Height: 120.0 Time: 7 Height: 28.0 Bounce! Time: 8 Height: 48.0... 36

Βιβλιογραφία (1/10) 1. Alexandrescu A. (2001) Modern C++ design: generic programming and design patterns applied. USA, Addison-Wesley Publishing Company. 323 pp. ISBN-13 978-0-201-70431-0. ( 22.85, 27,42). 2. Bennett S, McRobb S and R Farmer. (2002) Object-oriented systems analysis and design using UML. 2nd Edition. McGraw- Hill Education. ISBN 0-07-709864-1. 3. Booch G, Maksimchuk RA, Engle MW, Young BJ, Conallen J and Houston KA. (2007) Object-oriented analysis and design with applications. 3rd ed. USA, Addison-Wesley. 691 pp. ISBN10 0-201-89551-X. ISBN13 978-0-201-89551-3. ( 43.44, 52.56). 37

Βιβλιογραφία (2/10) 4. Carrano FM and Henry T. (2013) Data abstraction and problem solving with C++: walls and mirrors. 6th ed. UK, Pearson Education Limited. 833 pp. ISBN10 0-273-76841-7, ISBN13 978-0-76841-8. 5. Deitel HM and Deitel PJ. (2010) C++ προγραμματισμός. 6η Έκδοση. Ελλάδα, Εκδόσεις Μ. Γκιούρδα. 1448 σελ. ISBN13 978-960-512-591-2. 6. Fowler M. (1999) Refactoring: improving the design of existing code. USA, Addison Wesley Longman, Inc. 431 pp. ISBN13 978-0-201-48567-7. ( 38.62, 49.05). 38

Βιβλιογραφία (3/10) 7. Fowler M. (2004) UML distilled: a brief guide to the standard object modeling language. 3rd ed. USA, Pearson Education, Inc. 175 pp. ISBN13 978-0-321-19368-1. ( 30.10, 38.23). 8. Kruse RL and Ryba AJ. (1999) Data structures and program design in C++. USA, Prentice Hall. 717 pp. ISBN 0-13- 082640-5. ( 40.74). 9. Lafore R. (2006) Αντικειμενοστρεφής προγραμματισμός με τη C++. Ελλάδα, Εκδόσεις Κλειδάριθμος. 1040 σελ. ISBN10 960-209-904-6. 39

Βιβλιογραφία (4/10) 10. Lafore, R. (2002) Object-oriented programming in C++. 4th ed. USA, Sams Publishing. 1012 pp. ISBN-10 0-672-32308-7. ISBN-13 978-0-672-32308-9. ( 29.60, 33.35). 11. Lakos, J. (1996) Large-Scale Software Design in C++. USA, Addison-Wesley. 852 pp. ISBN-10 0-201-63362-0. ISBN-13 978-0-201-63362-7. ( 26.26, 30.20). 12. MacLennan BJ. (1987) Principles of programming languages: design, evaluation, and implementation. 2nd ed. USA, CBS College Publishing. 568 pp. ISBN 0-03-021999-X. ( 8.00). 40

Βιβλιογραφία (5/10) 13. Martin RC. (2012) Agile software development: principles, patterns, and practices. USA, Pearson Education, Inc. 529 pp. ISBN10 0-13-276068-4. ISBN13 978-0-13-276058-4. ( 54.21, 65.59). 14. McConnell S. (1993) Code complete: a practical handbook of software construction. USA, Microsoft Press. 857 pp. ( 25.99). 15. McConnell S. (1996) Rapid development: taming wild software schedules. USA, Microsoft Press. 647 pp. ISBN 1-55615-900-5. ( 25.99). 41

Βιβλιογραφία (6/10) 16. McConnell S. (2004) Professional software development: shorter schedules, higher quality products, more successful projects, enhanced careers. USA, Addison-Wesley. 243 pp. ISBN 0-321-19367-9. ( 19.79, 29.08). 17. McDermid J, ed. (1991) Software engineer s reference book. Great Britain, Butterworth-Heinemann Ltd. 1140 pp. ISBN 0-7506-0813-7. ( 40.00). 18. Meyers S. (1996) More effective C++: 35 new ways to improve your programs and designs. USA, Addison-Wesley. 318 pp. ISBN 0-201-63371-X. ( 25.29, 36.90). 42

Βιβλιογραφία (7/10) 19. Meyers S. (2005) Effective C++: 55 specific ways to improve your programs and designs. 3rd ed. USA, Pearson Education, Inc. 297 pp. ISBN 0-321-33487-6. ( 18.52, 27.01). 20. Pressman RS. (2005) Software engineering: a practitioner s approach. 6th int. ed. Singapore, McGraw-Hill. 912 pp. ISBN 007-123840-9. ( 45.06, 65.83). 21. Reddy M. (2011) API design for C++. USA, Morgan Kaufmann Publishers. 441 pp. ISBN13 978-0-12-385003-4. ( 28.01, 32.21). 22. Sahni S. (2004) Δομές δεδομένων, αλγόριθμοι, και εφαρμογές στη C++. Ελλάδα/ΗΠΑ, Εκδόσεις Τζιόλα/McGraw-Hill. 852 σελ. ISBN10 960-418-030-4. ( 66.56). 43

Βιβλιογραφία (8/10) 23. Savitch W and Mock K. (2013) Πλήρης C++. 4η Έκδοση. Ελλάδα, Εκδόσεις Τζιόλα. 1024 σελ. ISBN13 978-960-418-358-6. ( 76.14). 24. Savitch W. (2015) Java: and introduction to problem solving and programming. 7th ed. USA, Pearson Education, Inc. 989 pp (+204 pp web chapters). ISBN10 0-13-376626-8. ISBN13 978-0- 376626-4. ( 83.99, 97.85 104.75, $122.68). 25. Schildt H. (2000) Ο οδηγός της C++. 3η Έκδοση, Εκδόσεις Μ. Γκιούρδα. 748 σελ. ISBN10 960-512-229-4. ( 29.00). 26. Schildt H. (2004) Μάθετε τη C++ από το μηδέν. 3η Έκδοση. Ελλάδα, Εκδόσεις Κλειδάριθμος. 660 σελ. ISBN10 960-209-731-0. ( 46.90). 44

Βιβλιογραφία (9/10) 27. Sommerville I. (2004) Software Engineering. 7th ed. USA, Addison-Wesley. 759 pp. ISBN 0-321-21026-3. ( 40.95, 60.17). 28. Stroustrup B. (2000) The C++ programming language. Special Edition. USA, Addison-Wesley Longman, Inc. 1020 pp. ISBN 0-201-70073-5. ( 37.20, 54.26). 29. Sutter H and Alexandrescu A. (2005) C++ coding standards: 101 rules, guidelines, and best practices. USA, Pearson Education, Inc. 220 pp. ISBN10 0-321-11358-6. ISBN13 978-0-321-11358-0. ( 19.71, 22.67). 45

Βιβλιογραφία (10/10) 30. Sutter H. (2000) Exceptional C++: 47 engineering puzzles, programming problems, and solutions. USA, Addison- Wesley Longman, Inc. 215 pp. ISBN10 0-201-61562-2. ISBN13 978-0-201-61562-3. ( 24.32, 27.97). 31. Sutter H. (2002) More exceptional C++: 40 new engineering puzzles, programming problems, and solutions. USA, Pearson Education, Inc. 279 pp. ISBN10 0-201-70434-X. ISBN13 978-0-201-70434-1. ( 28.05, 32.26). 32. Χατζηγιαννάκης ΝΜ. (2014) Η γλώσσα C++ σε βάθος. 2η αναθεωρημένη έκδοση. Ελλάδα, Εκδόσεις Κλειδάριθμος. 974 σελ. ISBN13 978-960-461-620-6. ( 89.00). 46

Τέλος Ενότητας

Σημείωμα Αναφοράς Copyright ΤΕΙ Δυτικής Μακεδονίας, Σίσιας Γεώργιος. «Προγραμματισμός ΙΙ». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: 48

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 49

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 50