Οι υπολογιστές και ο προγραμματισμός τους
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Καλώς ήρθατε
Σύγχρονες γλώσσες προγραμματισμού H/Y
Τι περιλαμβάνει το μάθημα
- Οι υπολογιστές και ο προγραμματισμός τους
- Το περιβάλλον της Visual Basic
- Υπολογισμοί με μεταβλητές, είσοδος και έξοδος
- Τελεστές σύγκρισης, λογικής και επαναλήψεις
- Προγραμματισμός με συμβολοσειρές, αποφάσεις
- Πρόσθετες δομές ελέγχου: select, on error
- Ορισμός συναρτήσεων και διαδικασιών
- Συναρτήσεις και διαδικασίες της Visual Basic
- Βασικές αρχές αντικειμενοστρεφούς προγραμματισμού
- Διεπαφή χρήστη
- Ιδιότητες και μέθοδοι για υλοποίηση διεπαφών
- Μεταγλώττιση και εγκατάσταση προγραμμάτων
- Διαχείριση δεδομένων: σύνδεση με βάσεις δεδομένων, συλλογές αντικειμένων, πίνακες, αρχεία κειμένου, πολυμέσα
- Προγραμματισμός με εξαρτήματα, σύνδεση με άλλες εφαρμογές
- Προγραμματισμός στο διαδίκτυο
- Από τη Visual Basic στη Java
Τρόπος διδασκαλίας
- Συμμετοχή
- Ερωτήσεις
- Ασκήσεις
Οι σημειώσεις
Υλικό και λογισμικό
- Υλικό (hardware) καλούμε τα φυσικά στοιχεία του
υπολογιστή.
- Λογισμικό (software) καλούμε το σύνολο των προγραμμάτων
που χρησιμοποιεί ο υπολογιστής.
- Τα προγράμματα είναι αποθηκευμένες οδηγίες που εκτελούνται από το
υλικό.
Ιστορική ανασκόπηση
- Προγραμματισμός με διακόπτες
- Γλώσσα μηχανής
- Συμβολική γλώσσα
- Fortran
- Algol, C, Pascal, Modula-2
- Lisp, Simula, Prolog, ML
- Smalltalk, C++, Java
- Visual Basic, TCL/TK, Perl
Χαρακτηριστικές αλγοριθμικές γλώσσες
Σε μια αλγοριθμική (imperative) γλώσσα
το πρόγραμμα εκφράζει άμεσα τα βήματα που επιθυμούμε να
εκτελέσει ο υπολογιστής.
- Fortran, Fortran 9X
- Cobol
- Algol-60
- Basic
- PL/I
- Pascal, Modula-2, Oberon
- C
- Ada
- Smalltalk
- C++
- Awk, Perl, Tcl/Tk
- Java
- Python
Χαρακτηριστικές δηλωτικές γλώσσες
Σε μια δηλωτική (declarative) γλώσσα
το πρόγραμμα εκφράζει τη δομή του προβλήματος που θέλουμε
να επιλύσουμε.
Η γλώσσα προγραμματισμού παρέχει τον κατάλληλο μηχανισμό ελέγχου
ο οποίος χρησιμοποιώντας τη δομή που έχουμε ορίσει καταλήγει
στο επιθυμητό αποτέλεσμα.
Γλώσσες βασισμένες στη λογική
Γλώσσες βασισμένες σε συναρτήσεις
Βασικά γλωσσικά εργαλεία
- Προετοιμαστής/Διορθωτής (Editor)
- Επιτρέπει τη συγγραφή και την αλλαγή του προγράμματος.
- Προεπεξεργαστής (Preprocessor)
- Επεξεργάζεται το πρόγραμμα εκτελώντας απλούς
συμβολικούς μετασχηματισμούς και παράγει ένα αντίστοιχο πρόγραμμα.
Χρησιμοποιείται σε συμβολικές γλώσσες, τη Fortran (Ratfor), τη C, και τη C++.
- Συμβολομεταφραστής (Assembler)
- Μετατρέπει τη συμβολική γλώσσα του επεξεργαστή σε γλώσσα
μηχανής.
- Μεταγλωττιστής (Compiler)
- Μεταφράζει μια γλώσσα υψηλού επιπέδου σε γλώσσα επιπέδου μηχανής.
- Διερμηνευτής (Interpreter)
- Εκτελεί άμεσα ένα πρόγραμμα σε γλώσσα υψηλού επιπέδου.
- Συνδέτης (Linker)
- Συρράφει τμήματα ενός προγράμματος που έχουν μεταγλωττιστεί ξεχωριστά
σε ένα συνεχές πρόγραμμα.
- Φορτωτής (Loader)
- Φορτώνει το πρόγραμμα στη μνήμη του επεξεργαστή διορθώνοντας αναφορές
σε σχετικές θέσεις μνήμης.
Συνήθως τμήμα του λειτουργικού συστήματος.
- Αποσφαλματωτής (Debuger)
- Επιτρέπει την εκτέλεση του προγράμματος βήμα-βήμα, την
εξέταση και αλλαγή μεταβλητών του
και γενικά ενέργειες που αποσκοπούν στην ανίχνευση
λαθών που μπορεί να περιέχει το πρόγραμμα.
- Διερμηνευτής (Interpreter)
- Εκτελεί απευθείας τις εντολές του προγράμματος χωρίς ενδιάμεσο στάδιο
μεταγλώττισης.
Η διεργασία του προγραμματισμού
- Προσδιορισμός απαιτήσεων
- Ανάλυση / σχεδίαση
- Συγγραφή σε ψευδοκώδικα
- Συγγραφή στη γλώσσα προγραμματισμού
- Μεταγλώττιση
- Εκτέλεση
- Έλεγχος / επαλήθευση
- Αποσφαλμάτωση
Βιβλιογραφία
- Michael Halvorson
Visual Basic 6 Βήμα προς βήμα.
Εκδόσεις Κλειδάριθμος, Αθήνα.
- Alfred V. Aho, Ravi Sethi,
and Jeffrey D. Ullman.
Compilers, Principles, Techniques, and Tools.
Addison-Wesley, 1985.
- Alfred V. Aho, Brian W.
Kernighan, and Peter J. Weinberger.
The
AWK Programming Language.
Addison-Wesley, 1988.
- J.W. Backus, F.L.
Bauer, J.Green, C.Katz, J.McCarthy, P. Naur, A.J.Perlis, H. Rutishauser,
K. Samuelson, B. Vauquois, J.H. Wegstein, A. van Vinjgaarden, and M. Woodger.
Revised report on the algorthmic language ALGOL 60.
IFIP, 1960.
- David Boctor.
Microsoft Office 2000 Visual Basic Fundamentals.
Microsoft Press, Redmond, WA, USA, 1999.
- Jean D. Ichbiah et al.
Reference Manual for the Ada Programming Language, ANSI/MIL-STD-1815
A-1983.
Castle House Publication Ltd., 1983.
- David Flanagan.
Java
in a Nutshell.
O'Reilly and Associates, Sebastopol, CA, USA, 1997.
- Kathleen Jensen and
Niklaus Wirth.
PASCAL User Manual and Report.
Springer Verlag, second edition, 1975.
- Brian W. Kernighan
and Dennis M. Ritchie.
The C
Programming Language, pages ix–4.
Prentice-Hall, second edition, 1988.
- Brian W. Kernighan.
Why Pascal is not my favorite programming language.
Technical Report 100, Bell Laboratories, Murray Hill, New Jersey 07974, July
1981.
- Günther Lamprecht.
Introduction to SIMULA-67.
Friedr. Vieweg & Sohn, Braunschweig, Wiesbaden, Germany, 1981.
- Mark Lutz.
Programming Python.
O'Reilly and Associates, 1996.
- Charles Petzold.
Code: The Hidden Language of Computer Hardware and Software.
Microsoft Press, Redmond, Washington, USA, 1999.
- Martin
Richards and Colin Whitby-Strevens.
BCPL — The Language and its Compiler.
Cambridge University Press, 1979.
- Michael L. Scott.
Programming Language Pragmatics.
Morgan Kaufmann Publishers, 1999.
- Ravi Sethi.
Programming Languages: Concepts and Constructs.
Addison-Wesley, 1989.
- Bjarne Stroustrup.
The
C++ Programming Language.
Addison-Wesley, second edition, 1991.
- R. D. Tennent.
Princliples of Programming Languages.
Prentice Hall, 1981.
- Larry Wall and
Randal L. Schwartz.
Programming Perl.
O'Reilly and Associates, Sebastopol, CA, USA, 1990.
- Richard L. Wexelblat.
Maxims for malfeasant designers, or how to design languages to make programming
as difficult as possible.
In Proceedings of the 2nd International Conference on Software
Engineering, pages 331–336, San Fransisco, CA, USA, October 1976.
IEEE Computer Society Press.