Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων, ενώ οι τεχνητές γλώσσες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων και της μηχανής, με αυτές τιε γλώσσες ο προγραμματιστής μπορεί να δίνει εντολές που πρέπει να εκτελεί ο υπολογιστής. Ποια κοινά χαρακτηριστικά εμφανίζουν οι φυσικές και τεχνητές γλώσσες; Οι φυσικές και τεχνητές γλώσσες εμφανίζουν τα εξής κοινά χαρακτηριστικά: 1. Αλφάβητο: Το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα. 2. Λεξιλόγιο: Υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου, τις λέξεις που είναι δεκτές από τη γλώσσα. 3. Γραμματική, η οποία αποτελείται από: Το Τυπικό - Τυπολογικό, το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή και Το Συντακτικό, το σύνολο των κανόνων που καθορίζει τη νομιμόμητα της διάταξης και της σύνδεσης των λέξεων της γλώσσα για τη δημιουργία σωστών προτάσεων. Η γνώση του συντακτικού επιτρέπει τη δημιουργία σωστών προτάσεων στις φυσικές γλώσσες ενώ στις γλώσσες προγραμματισμού τη δημιουργία σωστών εντολών. 4. Σημασιολογία: Σύνολο κανόνων που καθορίζει το νόημα των λέξεων και κατά επέκταση των εκφράσεων και προτάσεων που χρησιμοποιούνται σε μία γλώσσα. (Στις τεχνητές γλώσσες ο δημιουργός τους αποφασίζει τη σημασιολογία των λέξεών της) Ποιες οι διαφορές μεταξύ φυσικών και τεχνητών γλωσσών; Η βασικότερη διαφορά μεταξύ των φυσικών και τεχνητών γλωσσών είναι η δυνατότητα εξέλιξής τους. Οι φυσικές γλώσσες εξελίσσονται συνεχώς, δημιουργούνται νέες λέξεις, ενώ κανόνες γραμματικής και σύνταξης αλλάζουν με την πάροδο του χρόνου γιατί η γλώσσα χρησιμοποιείται για την επικοινωνία μεταξύ των ανθρώπων που εξελίσσονται και αλλάζουν ανάλογα με τις εποχές και τον κοινωνικό περίγυρο. Οι τεχνητές γλώσσες χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για ένα συγκεκριμένο σκοπό. Βελτιώνονται και μεταβάλλονται από τους δημιουργούς τους με σκοπό να διορθωθούν αδυναμίες, να καλύψουν μεγαλύτερο εύρος εφαρμογών και για να ακολουθήσουν τις νέες εξελίξεις. Τι γνωρίζετε για την ιεραρχική σχεδίαση προγράμματος; Η ιεραρχική σχεδίαση ή "από πάνω προς τα κάτω" (top down program design) προγραμματισμός (ιεραρικός προγραμματισμός), περιλαμβάνει τον καθορισμό των βασικών λειτουργιών ενός προγράμματος, σε ανώτερο επίπεδο, και στη συνέχεια τη διάσπαση των λειτουργιών του σε όλο και μικρότερες λειτουργίες μέχρι το τελευταίο επίπεδο που οι λειτουργίες του είναι πολύ απλές ώστε να επιλυθούν εύκολα, (συνεχής διαίρεση του προβλήματος σε υποπροβλήματα). Σκοπός λοιπόν της ιεραρχικής σχεδίασης είναι η διάσπαση ενός προβλήματος σε μια σειρά από απλούστερα υποπροβλήματα τα οποία να είναι εύκολο να επιλυθούν οδηγώντας στην επίλυση του αρχικού προβλήματος. 1 Oι παράγραφοι 6.1 Η έννοια του προγράμματος, 6.2 Ιστορική αναδρομή, 6.5 Αντικειμενοστραφής προγραμματισμός και 6.6 Παράλληλος προγραμματισμός εκτός ύλης. 1
Η ιεραρχικής σχεδίασης μπορεί να παρασταθεί με τη βοήθεια διαγραμματικών τεχνικών. Γ ΛΥΚΕΙΟΥ Τι γνωρίζετε για τον τμηματικό προγραμματισμό; Ο τμηματικός προγραμματισμός υλοποιεί την ιεραρχική σχεδίαση προγράμματος. Το πρόβλημα αναλύεται σε επιμέρους υποπροβλήματα κάθε ένα από τα οποία αποτελεί ανεξάρτητη ενότητα που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα προγράμματος. Ο τμηματικός προγραμματισμός διευκολύνει τη δημιουργία του προγράμματος, μειώνει τα λάθη και επιτρέπει την ευκολότερη παρακολούθηση, κατανόηση και συντήρηση του προγράμματος από τρίτους. Τι είναι ο δομημένος προγραμματισμός, η εντολή GOTO και ποιες οι αρχές από τις οποίες διέπεται ο δομημένος προγραμματισμός; Ο δομημένος προγραμματισμός αναπτύχθηκε από την ανάγκη να υπάρχει μία κοινή μεθοδολογία σύνταξης προγραμμάτων και τη μείωση των εντολών GOTO, που χρησιμοποιούνταν στο πρόγραμμα. Η εντολή GOTO έχει ως συνέπεια την αλλαγή της ροής του προγράματος, της διακλάδωσης σε μία άλλη εντολή του προγράμματος εκτός από την επόμενη. Ολες οι σύγχρονες γλώσσες προγραμματισμού, υποστηρίζουν το δομημένο προγραμματισμό και διαθέτουν εντολές που καθιστούν τη χρήση της εντολής GOTO περιττή. Για λόγους όμως συμβατότητας με τις παλιότεςρες εκδόσεις τους καθώς και για λόγους συντήρησης παλιώς προγραμμάτων, μερικές τη διατηρούν στο ρεπερτόριό τους. Ο δομημένος προγραμματισμός δεν είναι απλώς ένα είδος προγράμματος είναι μια μεθοδολογία σύνταξης προγραμμάτων που έχει σκοπό να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων, να μειώσει τα λάθη, να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων και να διευκολύνει τις διορθώσεις και τις αλλαγές σε αυτά. Ο δομημένος προγραμματισμός στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών, τη δομή ακολουθίας, τη δομή επιλογής και τη δομή επανάληψης. Όλα τα προγράμματα μπορούν να γραφούν χρησιμοποιώντας μόνο αυτές τις τρεις δομές καθώς και συνδυασμό τους. Κάθε πρόγραμμα όπως και κάθε ενότητα προγράμματος έχει μόνο μία είσοδο και μία έξοδο. Αν και ο δομημένος προγραμματισμός αρχικά εμφανίστηκε σαν μία προσπάθεια περιορισμού των εντολών GOTO, σήμερα αποτελεί τη βασική μεθοδολογία προγραμματισμού, ανθαρρύνοντας και βοηθώντας στην ανάλυση του προγράμμαος σε επί μέρους τμήματα, περιέχοντας τόσο την ιεραρχική σχεδίαση όσο και τον τμηματικό προγραμματισμό. Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού; Ο δομημένος προγραμματισμός εμφανίζει τα εξής πλεονεκτήματα: 1. Δημιουργία απλούστερων προγραμμάτων. 2. Άμεση μεταφορά του αλγόριθμου σε πρόγραμμα. 3. Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα. 4. Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος. 5. Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους. 6. Ευκολότερη διόρθωση και συντήρηση. Τι είναι ο μεταγλωττιστής και τι ο διερμηνευτής; 2
Κάθε πρόγραμμα που γράφεται σε οποιαδήποτε γλώσσα προγραμματισμού πρέπει να μετατραπεί σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον υπολογιστή δηλαδή σε εντολές γλώσσας μηχανής. Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων του μεταγλωττιστή και του διερμηνευτή. Μεταγλωττιστής (compilers): Δέχεται σαν είσοδο ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής, το οποίο μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή και είναι ανεξάρτητο από το αρχικό πρόγραμμα. Διερμηνευτής (interpreters): Διαβάζει μία προς μία τις εντολές του αρχικού προγράμματος και για κάθε μία εκτελεί αμέσως μία ισοδύναμη ακολουθία εντολών μηχανής. Ποιο πρόγραμμα ονομάζεται πηγαίο και ποιο αντικείμενο; Το αρχικό πρόγραμμα που γράφεται από τον προγραμματιστή ονομάζεται πηγαίο (source) ενώ το πρόγραμμα που παράγεται από το μεταγλωττιστή ονομάζεται αντικείμενο πρόγραμμα (object). Τι ονομάζεται συνδέτης φορτωτής και για ποιο λόγο χρησιμοποιείται; Απάντηση: Το αντικείμενο πρόγραμμα που προκύπτει από το μεταγλωττιστή είναι σε μορφή κατανοητή από τον υπολογιστή αλλά δεν είναι σε θέση να εκτελεστέι. Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα του προγράμματος, απαραίτητα για την εκτέλεσή του, τμήματα που τα γράφει ο προγραμματιστής είτε άλλα τμήματα που βρίσκονται σε βιβλιοθήκες (libraries) της γλώσσας. Το πρόγραμμα που επιτρέπει τη σύνδεση αυτή ονομάζεται συνδέτης φορτωτής (linker - loader). Το αποτέλεσμα του συνδέτη είναι η παραγωγή του εκτελέσιμου προγράμματος (executable) το οποίο είναι το τελικό πρόγραμμα που εκτελείται από τον υπολογιστή. Διαδικασία για τη μετάφραση και την εκτέλεση ενός προγράμματος. ΑΡΧΙΚΟ (ΠΗΓΑΙΟ) ΜΕΤΑΓΛΩΤ- ΤΙΣΤΗΣ ΑΝΤΙΚΕΙΜΕΝΟ ΣΥΝΔΕΤΗΣ ΕΚΤΕΛΕΣΙΜΟ Τι λάθη μπορεί να εμφανίζονται σε ένα πρόγραμμα; Με ποιον τρόπο ανιχνεύονται; Η δημιουργία ενός εκτελέσιμου προγράμματος γίνεται μόνο στην περίπτωση όπου το αρχικό πρόγραμμα δεν περιέχει συντακτικά λάθη. Σε ένα πρόγραμμα μπορούν να εμφανιστούν 2 είδη λαθών τα συντακτικά και τα λογικά: 3
Τα συντακτικά λάθη εμφανίζονται κατά το στάδιο της μεταγλώττισης και ανιχνεύονται από το μεταγλωττιστή ή το διερμηνευτή εμφανίζοντας κατάλληλα διαγνωστικά μηνύματα. Οφείλονται σε αναγραμματισμούς ονομάτων εντολών, παραλήψεις δηλώσεων κ.τ.λ. Το διορθωμένα προγράμματα επαναϋποβάλλονται για μεταγλώττιση μέχρι να εξαλειφθούν πλήρως τα λάθη ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα. Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση, ανιχνεύονται μόνο από τον προγραμματιστή, είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση, οφείλονται σε σφάλματα κατά την υλοποίηση του αλγόριθμου. Ποιες οι διαφορές μεταγλωττιστή και διερμηνευτή; (πλενεκήματα μειονεκτήματα) Η χρήση μεταγλωττιστή έχει το μειονέκτημα ότι πριν χρησιμοποιηθεί ένα πρόγραμμα πρέπει να περάσει από το στάδιο της μεταγλώττισης και σύνδεσης ενώ η χρήση διερμηνευτή έχει το πλεονέκτημα της άμεσης εκτέλεσης και της άμεσης διόρθωσης καθιστώντας όμως την εκτέλεση του προγράμματος πιο αργή, από εκείνη του ισοδύναμου προγράμματος που παράγει ο μεταγλωττιστής. Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρουσιάζουν μεικτές υλοποιήσεις, χρήση διερμηνευτή κατά τη φάση της δημιουργίας του προγράμματος και μεταγλώττισης κατά την τελική έκδοση. Τι είναι ο συντάκτης προγραμμάτων; Συντάκτης (editor) ονομάζεται το πρόγραμμα το οποίο χρησιμοποιείται για την αρχική σύνταξη και τη διόρθωση των προγραμμάτων. Είναι ουσιαστικά ένας μικρός επεξεργαστής κειμένου με δυνατότητες που διευκολύνουν τη γρήγορη γραφή των εντολών των προγραμμάτων. Ποια προγράμματα και εργαλεία περιέχει ένα προγραμματιστικό περιβάλλον; Ένα προγραμματιστικό περιβάλλον πρέπει να περιέχει τρία προγράμματα: Συντάκτη Μεταγλωττιστή 4
Συνδέτη Φορτωτή Γ ΛΥΚΕΙΟΥ Το κάθε προγραμματιστικό περιβάλλον έχει επίσης διαφορετικά εργαλεία και ιδιότητες. Για παράδειγμα ένα περιβάλλον οπτικού προγραμματισμού (visual) πρέπει να περιέχει οπωσδήποτε ένα ειδικό συντάκτη που να διευκολύνει τη δημιουργία γραφικών αντικειμένων (φόρμες, λίστες κ.τ.λ.) παρέχοντας στον προγραμματιστή τα αντίστοιχα γραφικά εργαλεία. 5