Προγραμματισμός ΙΙ Ενότητα 1: Προαπαιτούμενα Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Προαπαιτούμενα
Σκοποί ενότητας Σε αυτή την ενότητα αναφέρονται τα προαπαιτούμενα του μαθήματος. Αφορούν τις γνώσεις που πρέπει να έχουν οι φοιτητές πριν παρακολουθήσουν το συγκεκριμένο μάθημα, καθώς και το υλικό και το λογισμικό που θα χρειαστούν. 5
Περιεχόμενα ενότητας Απαιτούμενες γνώσεις. Υλικό και λογισμικό. Εισαγωγή στο περιβάλλον εργασίας της C++. CodeGear RAD Studio 2007. Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate. Βιβλιογραφία. 6
Απαιτούμενες γνώσεις (1/3) Για την παρακολούθηση του παρόντος μαθήματος απαιτούνται οι γνώσεις του Προγραμματισμού Ι (C). Ο Προγραμματισμός ΙΙ (C++) βασίζεται στην ύλη του Προγραμματισμού Ι, και συνεχίζει με τις έννοιες του αντικειμενοστρεφούς προγραμματισμού. 7
Απαιτούμενες γνώσεις (2/3) Πριν παρακολουθήσετε τον Προγραμματισμό ΙΙ, πρέπει να γνωρίζετε τουλάχιστον τα παρακάτω: Θεμελιώδεις τύποι δεδομένων. Μεταβλητές και σταθερές. Αριθμητικές και λογικές παραστάσεις. Ροές ελέγχου (if, switch). Βρόχοι (for, while, do-while). 8
Απαιτούμενες γνώσεις (3/3) Πριν παρακολουθήσετε τον Προγραμματισμό ΙΙ, πρέπει να γνωρίζετε τουλάχιστον τα παρακάτω (συνέχεια): Πίνακες. Δείκτες. Συναρτήσεις. Σύνθετοι τύποι δεδομένων. 9
Υλικό και λογισμικό (1/2) Για την παρακολούθηση του μαθήματος και τη λύση των ασκήσεων θα χρειαστείτε οποιονδήποτε υπολογιστή μπορεί να τρέξει κάποιο μεταγλωττιστή της ANSI C++ που υποστηρίζει τις δυνατότητες της γλώσσας από το 2003 και μετά. Αυτό σημαίνει: Προσωπικό υπολογιστή με Windows ή Linux. Mac. Οποιονδήποτε σταθμό εργασίας UNIX. 10
Υλικό και λογισμικό (2/2) Τα παραδείγματα του παρόντος μαθήματος είναι υλοποιημένα σε προσωπικό υπολογιστή, κάτω από Windows 7, χρησιμοποιώντας τα περιβάλλοντα: CodeGear RAD Studio 2007. Microsoft Visual Studio 2010. Microsoft Visual Studio 2013. Ο κώδικας των παραδειγμάτων δεν είναι γραμμένος με τρόπο που απαιτεί κάποιο από τα παραπάνω περιβάλλοντα ανάπτυξης. 11
Εισαγωγή στο περιβάλλον εργασίας της C++ Όταν ασχολείστε με κάποιο από τα παραδείγματα ή τις ασκήσεις, φροντίστε να δημιουργείτε καινούριο Project για κάθε ένα καινούργιο πρόγραμμα που κάνετε. Το πρώτο αρχείο που θα δημιουργείτε θα ονομάζεται main.cpp. Το παραπάνω ισχύει για κάθε ένα από τα παρακάτω Ολοκληρωμένα Περιβάλλοντα Ανάπτυξης. Integrated Development Environments (IDEs). 12
CodeGear RAD Studio 2007 (1/7) Βήμα 1: Από το κύριο μενού του περιβάλλοντος επιλέγετε File Other, και επιλέγετε Console Application: Εικόνα 1: CodeGear RAD Studio 2007 (1/4). Πηγή: Διδάσκων (2015). 13
CodeGear RAD Studio 2007 (2/7) Βήμα 2: Αφού επιλέξετε Console Application και πατήσετε ΟΚ, εμφανίζεται το παρακάτω παράθυρο: Εικόνα 2: CodeGear RAD Studio 2007 (2/4). Πηγή: Διδάσκων (2015). 14
CodeGear RAD Studio 2007 (3/7) Βήμα 3: Επιλέγετε ΟΚ, και εμφανίζεται το παρακάτω παράθυρο. Ακόμη δεν έχουμε αποθηκεύσει το Project. Ωστόσο, προχωρήστε στην υλοποίηση που βλέπετε στην εικόνα που ακολουθεί. Η συνάρτηση main είναι δηλωμένη ως: void main(). 15
CodeGear RAD Studio 2007 (4/7) Βήμα 3 (Συνέχεια): Υπάρχει περίπτωση το περιβάλλον που δουλεύετε να απαιτεί η main να επιστρέφει πάντοτε ακέραιο. Σε τέτοια περίπτωση να δηλώσετε τη main ως εξής: int main(). και η τελευταία εντολή της main να είναι (αν επιστρέφει int): return 0;. 16
CodeGear RAD Studio 2007 (5/7) Εικόνα 3: CodeGear RAD Studio 2007 (3/4). Πηγή: Διδάσκων (2015). 17
CodeGear RAD Studio 2007 (6/7) Βήμα 4: Αποθηκεύστε το Project (File Save Project as...), καθώς και το κυρίως αρχείο ως main.cpp. Εδώ φροντίστε το πρώτο αρχείο σας να έχει όνομα main.cpp, και στο επόμενο παράθυρο που θα εμφανιστεί, να δώσετε όνομα στο Project. 18
CodeGear RAD Studio 2007 (7/7) Εικόνα 4: CodeGear RAD Studio 2007 (4/4). Πηγή: Διδάσκων (2015). 19
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (1/9) Οι επιλογές των δύο αυτών εργαλείων είναι παρόμοιες, και γι' αυτό παρουσιάζουμε μόνο το δεύτερο από αυτά τα εργαλεία. Βήμα 1: Από το κύριο μενού του περιβάλλοντος επιλέγετε File New Project, και επιλέγετε Win32 Console Application. Φροντίζετε ώστε να έχετε επιλέξει σωστά τους υποκαταλόγους και όνομα του Project, με τις επιλογές που είναι διαθέσιμες στο κάτω μέρος του παραθύρου. 20
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (2/9) Εικόνα 5: Visual Studio (1/5). Πηγή: Διδάσκων (2015). 21
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (3/9) Βήμα 2: Στο επόμενο παράθυρο επιλέξτε Next. Εικόνα 6: Visual Studio (2/5). Πηγή: Διδάσκων (2015). 22
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (4/9) Βήμα 3: Στο παράθυρο που ακολουθεί πρέπει να είστε λίγο προσεκτικοί, ώστε να αφαιρέσετε την επιλογή των Precompiled header. ΠΡΙΝ επιλέξετε Empty project. 23
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (5/9) Εικόνα 7: Visual Studio (3/5). Πηγή: Διδάσκων (2015). 24
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (6/9) Βήμα 4: Στο κυρίως παράθυρο της εφαρμογής επιλέξτε με το δεξί κουμπί του ποντικού, όπως βλέπετε στην παρακάτω εικόνα, στο Source Files και μετά Add New Item. Βήμα 5: Κατόπιν διαλέξτε C++ File, ονομάστε το αρχείο main.cpp, και επιλέξτε Add. 25
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (7/9) Εικόνα 8: Visual Studio (4/5). Πηγή: Διδάσκων (2015). 26
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (8/9) Εικόνα 9: Visual Studio (5/5). Πηγή: Διδάσκων (2015). 27
Visual Studio 2010 Ultimate και Visual Studio 2013 Ultimate (9/9) Βήμα 6: Εδώ φροντίστε ώστε ο αρχικός σας κώδικας να μοιάζει με τον παραπάνω, πριν ξεκινήσετε την υλοποίηση. Ό,τι ισχύει στην περίπτωση του CodeGear RAD Studio, ισχύει κι εδώ. Αν έχετε πρόβλημα με τη δήλωση της main, ακολουθήστε όσα αναφέρονται παραπάνω. Για να τρέξετε το πρόγραμμά σας, επιλέξτε Debug Start Without Debugging. 28
Βιβλιογραφία (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). 29
Βιβλιογραφία (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). 30
Βιβλιογραφία (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. 31
Βιβλιογραφία (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). 32
Βιβλιογραφία (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). 33
Βιβλιογραφία (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). 34
Βιβλιογραφία (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). 35
Βιβλιογραφία (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). 36
Βιβλιογραφία (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). 37
Βιβλιογραφία (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). 38
Τέλος Ενότητας
Σημείωμα Αναφοράς Copyright ΤΕΙ Δυτικής Μακεδονίας, Σίσιας Γεώργιος. «Προγραμματισμός ΙΙ». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: 40
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 41
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 42