Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής 1Ο Λύκειο Ρόδου ΑΕΠΠ 6ο Κεφάλαιο Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
Η έννοια του Προγράμματος Στάδια επίλυσης προβλήματος: Προσδιορισμός του προβλήματος Ανάπτυξη του αλγορίθμου Διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον Η/Υ
Γλώσσες προγραμματισμού Γλώσσες Μηχανής Συμβολικές Γλώσσες (Γλώσσες χαμηλού επιπέδου) Γλώσσες υψηλού επιπέδου Γλώσσες 4ης γενιάς
Συμβολική Γλώσσα (Assembly) Γλώσσα Μηχανής Συμβολική Γλώσσα (Assembly)
Γλώσσες Μηχανής Κάθε εντολή είναι μια ακολουθία από 0 και 1. Άμεσα κατανοητή από τον Η/Υ αλλά όχι από τον άνθρωπο. Αποτέλεσε τον πρώτο τρόπο προγραμματισμού ενός Η/Υ. Χρησιμοποιείται και σήμερα αφού η εκτέλεση οποιουδήποτε προγράμματος προϋποθέτει τη μετάφρασή του (μέσω ειδικού προγράμματος) σε γλώσσα μηχανής. Το παραγόμενο πρόγραμμα εκτελείται μόνο από τον Η/Υ για τον οποίο φτιάχτηκε. (Εξαρτώμενο από την αρχιτεκτονική του Η/Υ).
Συμβολικές Γλώσσες (Γλώσσες χαμηλού επιπέδου) Κάθε εντολή είναι μια συμβολική λέξη (π.χ. ADD). Πιο κατανοητή από τον άνθρωπο αλλά όχι από τον Η/Υ. Απαιτείται η χρήση ειδικού προγράμματος (συμβολομεταφραστής) για τη μετάφρασή .προγράμματος σε γλώσσα μηχανής. Χρησιμοποιείται και σήμερα για ειδικούς σκοπούς. Το παραγόμενο πρόγραμμα εκτελείται μόνο από τον Η/Υ για τον οποίο φτιάχτηκε. (Εξαρτώμενο από την αρχιτεκτονική του Η/Υ).
Γλώσσες υψηλού επιπέδου Κάθε εντολή χρησιμοποιεί απλές λέξεις της αγγλικής γλώσσας ακολουθώντας αυστηρούς κανόνες σύνταξης, π.χ. (γλώσσα Pascal): readln (arithmos); for i:=1 to 10 do dinami := arithmos * arithmos; Κατανοητή από τον άνθρωπο αλλά όχι από τον Η/Υ . Απαιτείται η χρήση μεταφραστικού προγράμματος για τη μετάφρασή του κώδικα σε γλώσσα μηχανής.
Γλώσσες υψηλού επιπέδου Πλεονεκτήματα: Ανεξαρτησία από τον τύπο του Η/Υ. Μεταφερσιμότητα σε οποιονδήποτε Η/Υ. Εύκολη εκμάθηση της γλώσσας. Εύκολη διόρθωση και συντήρηση του προγράμματος. Γνωστές γλώσσες υψηλού επιπέδου : Fortran, Cobol, Lisp, Prolog, Basic, Pascal, C, C++, Java, Algol, PL1, κ.α.
Γλώσσες υψηλού επιπέδου Προγραμματισμός οδηγούμενος από το γεγονός (event driven): Δυνατότητα εκτέλεσης λειτουργιών με την πραγματοποίηση κάποιου γεγονότος (π.χ.: κλικ ποντικιού, πάτημα πλήκτρου). Οπτικός προγραμματισμός (visual programming): Δυνατότητα δημιουργίας γραφικού περιβάλλοντος (μενού, πλαίσια διαλόγου). Γλώσσες που υποστηρίζουν τα παραπάνω χαρακτηριστικά: Visual Basic, Visual C++, Java.
Γλώσσες 4ης γενιάς Πρόκειται για γλώσσες ερωταπαντήσεων που επιτρέπουν την ανάκτηση, εμφάνιση και επεξεργασία πληροφοριών από βάσεις δεδομένων. Π.χ. SQL Select ename, job, sal from employes where deptno = 20 and sal > 1000
Ποια είναι η καλύτερη ΓΠ; Δεν υπάρχει… Η επιλογή της κατάλληλης γλώσσας γίνεται με βάση: Το είδος της εφαρμογής (προβλήματος). Το υπολογιστικό περιβάλλον στο οποίο θα εκτελεστεί η εφαρμογή. Το διαθέσιμο προγραμματιστικό περιβάλλον και τις γνώσεις μας.
Φυσικές - Τεχνητές Γλώσσες Αλφάβητο Το σύνολο των συμβόλων (στοιχείων) της. Λεξιλόγιο Το σύνολο των αποδεκτών συμβολο-ακολουθιών. Γραμματική Τυπικό (Τυπολογικό) κανόνες ορθότητας λέξεων Συντακτικό κανόνες διάταξης λέξεων (σχηματισμός προτάσεων) Σημασιολογία Κανόνες που καθορίζουν το νόημα των λέξεων και των προτάσεων.
Φυσικές vs Τεχνητές Γλώσσες Φυσικές Γλώσσες Δυνατότητα συνεχούς εξέλιξης - μετάλλαξης. Τεχνητές Γλώσσες Χαρακτηρίζονται από στασιμότητα η οποία διακόπτεται μόνο σε περίπτωση ανάπτυξης κάποιας νέας έκδοσης.
Τεχνικές Σχεδίασης Προγραμμάτων Ιεραρχική Σχεδίαση Τμηματικός προγραμματισμός Δομημένος προγραμματισμός
Ιεραρχική Σχεδίαση Σχεδίαση από πάνω προς τα κάτω με συνεχή διαίρεση του προβλήματος σε υποπροβλήματα.
Ιεραρχική Σχεδίαση
Τμηματικός προγραμματισμός Κάθε υποπρόβλημα που προκύπτει από την ιεραρχική σχεδίαση είναι ανεξάρτητη ενότητα που γράφεται ξεχωριστά. Πλεονεκτήματα: Ευκολότερη δημιουργία (Λύση απλούστερων προβλημάτων). Εξοικονόμηση χρόνου Ευκολότερη: Κατανόηση διόρθωση Παρακολούθηση Συντήρηση Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού
Δομημένος προγραμματισμός Στηρίζεται στη χρήση τριών και μόνο δομών: Ακολουθία Επιλογή Επανάληψη Κάθε πρόγραμμα ή τμήμα προγράμματος έχει μία μόνο είσοδο και μία μόνο έξοδο. Εμπεριέχει τις αρχές της ιεραρχικής σχεδίασης και του τμηματικού προγραμματισμού.
GOTO Αν αριθμός > 0 τότε goto 1 Αν αριθμός = 0 τότε goto 2 Γράψε ‘Αρνητικός’ goto 4 1: Γράψε ‘θετικός’ 2: Γράψε ‘Μηδέν’ 4: ! Συνέχεια
Δομημένος προγραμματισμός Αρχικός του σκοπός ήταν η μείωση των εντολών GOTO. Επικράτησε ως μεθοδολογία σύνταξης προγραμμάτων γιατί εξασφαλίζει: Δημιουργία απλούστερων προγραμμάτων Άμεση μεταφορά των αλγορίθμων σε προγράμματα Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος Ευκολότερη ανάγνωση και κατανόηση από τρίτους Ευκολότερη διόρθωση και συντήρηση
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Θεωρεί ως πρωτεύοντα δομικά στοιχεία τα δεδομένα από τα οποία δημιουργούνται με κατάλληλη μορφοποίηση τα αντικείμενα. Τα δεδομένα αποτελούν τα χαρακτηριστικά ενός αντικειμένου. Το πρόγραμμα περιγράφει ενέργειες που εφαρμόζονται πάνω στα δεδομένα. Οι ενέργειες περιγράφουν τη συμπεριφορά των αντικειμένων. Τα προγράμματα που προκύπτουν είναι πιο ευέλικτα και επαναχρησιμοποιήσιμα. Ο ΑΠ χρησιμοποιεί την ιεραρχική σχεδίαση, τον τμηματικό προγραμματισμό και ακολουθεί τις αρχές του δομημένου προγραμματισμού.
ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Το πρόγραμμα εκτελείται σε Η/Υ που διαθέτει παράλληλους επεξεργαστές οι οποίοι χρησιμοποιούν κοινή μνήμη. Το πρόγραμμα διαιρείται σε τμήματα που εκτελούνται παράλληλα. Τα τμήματα αυτά προγραμματίζονται σε περιβάλλον που επιτρέπει τον παράλληλο προγραμματισμό.
Ταξινόμηση Γλωσσών Προγραμματισμού Διαδικασιακές (Αλγοριθμικές) Μη διαδικασιακές Συναρτησιακές Ερωταπαντήσεων Γενικής χρήσης Επιστημονικής κατεύθυνσης Εμπορικής κατεύθυνσης Προγραμματισμού συστημάτων Τεχνητής νοημοσύνης Ειδικής χρήσης Βλ. Εφαρμογή
Άσκηση GOTO Αν αριθμός > 0 τότε goto 1 Αν αριθμός = 0 τότε goto 2 Γράψε ‘Αρνητικός’ goto 4 1: Γράψε ‘θετικός’ 2: Γράψε ‘Μηδέν’ 4: ! Συνέχεια Να μετατραπεί ώστε να ακολουθεί τις αρχές του δομημένου προγραμματισμού.
Για το σπίτι: Καλό Διάβασμα!!! Α) Τετράδιο μαθητή: Κεφάλαιο 6: σελ.117 – 137 Ερωτήσεις 1 – 11, σελ. 141 (Να τις αριθμήσετε) Β) Τετράδιο μαθητή: Ερωτήσεις : 2-7, 9, 11-14, σελ. 59 – 60 Γ) Εφαρμογή: Καταγραφή χαρακτηριστικών των Γλωσσών προγραμματισμού Δ) Ασκήσεις (goto) : Λυμένο παράδειγμα, σελ. 134 βιβλίο μαθητή Τετράδιο μαθητή: ΔΤ1 & ΔΣ2, σελ. 58-59 Καλό Διάβασμα!!!
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ ΜΕΤΑΦΡΑΣΗ ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ
Συντάκτης (Editor) Το περιβάλλον στο οποίο πληκτρολογούμε τις εντολές του προγράμματος Το πρόγραμμα που προκύπτει ονομάζεται πηγαίο (source)
ΜΕΤΑΦΡΑΣΗ ΜΕΤΑΓΛΩΤΙΣΤΗΣ (Compiler) Δέχεται ως είσοδο ένα πρόγραμμα σε γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής ΔΙΕΡΜΗΝΕΥΤΗΣ (Interpreter) Διαβάζει μια προς μία τις εντολές του αρχικού προγράμματος και για κάθε εντολή εκτελεί μια ισοδύναμη ακολουθία εντολών μηχανής.
ΜΕΤΑΓΛΩΤΙΣΤHΣ (Compiler) ΜΕΤΑΦΡΑΣΗ ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ (compiler) ΑΝΤΙΚΕΙΜΕΝΟ ΠΡΟΓΡΑΜΜΑ ΠΗΓΑΙΟ ΠΡΟΓΡΑΜΜΑ source object
ΜΕΤΑΓΛΩΤΙΣΤHΣ (Compiler) Συντάκτης: Πηγαίο Πρόγραμμα Μεταγλωττιστής: Αντικείμενο πρόγραμμα Συνδέτης – Φορτωτής: Εκτελέσιμο πρόγραμμα
Συνδέτης – Φορτωτής Συνδέτης – Φορτωτής (Linker – Loader) ΑΝΤΙΚΕΙΜΕΝΟ object ΑΝΤΙΚΕΙΜΕΝΟ ΠΡΟΓΡΑΜΜΑ executable ΕΚΤΕΛΕΣΙΜΟ ΠΡΟΓΡΑΜΜΑ
Συνδέτης – Φορτωτής (Linker – Loader) Κάνει τη σύνδεση του αντικείμενου προγράμματος με: άλλα τμήματα προγράμματος που καλούνται μέσα από αυτό, με βιβλιοθήκες (libraries) της γλώσσας προγραμματισμού και παράγει το εκτελέσιμο (executable) πρόγραμμα.
ΜΕΤΑΓΛΩΤΙΣΤHΣ (Compiler) Συντάκτης: Πηγαίο Πρόγραμμα Μεταγλωττιστής: Αντικείμενο πρόγραμμα Συνδέτης – Φορτωτής: Εκτελέσιμο πρόγραμμα
ΔΙΕΡΜΗΝΕΥΤHΣ (Interpreter) ΕΝΤΟΛΗ 1 ΕΝΤΟΛΗ 2 … ΕΝΤΟΛΗ ν Ανάλυση → Έλεγχος → Ανίχνευση → Εκτέλεση Ανάλυση → Έλεγχος → Ανίχνευση → Εκτέλεση ……… Ανάλυση → Έλεγχος → Ανίχνευση → Εκτέλεση
ΔΙΕΡΜΗΝΕΥΤHΣ ΜΕΤΑΓΛΩΤΙΣΤHΣ Έχει το πλεονέκτημα της άμεσης εκτέλεσης και διόρθωσης. Η εκτέλεση γίνεται πιο αργά σε σχέση με την εκτέλεση του αντικείμενου προγράμματος που παράγει ο μεταγλωττιστής. Χρησιμοποιείται κατά τη φάση δημιουργίας του προγράμματος. ΜΕΤΑΓΛΩΤΙΣΤHΣ Για την εκτέλεση προαπαιτείται η μετάφραση και η σύνδεση. Η εκτέλεση γίνεται πιο γρήγορα. Χρησιμοποιείται για την τελική έκδοση και εκμετάλλευση του προγράμματος.
Για τη δημιουργία τη μετάφραση και την εκτέλεση ενός προγράμματος απαιτούνται τουλάχιστον τρία προγράμματα: Συντάκτης Μεταγλωττιστής Συνδέτης
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΣΦΑΛΜΑΤΑ ΣΥΝΤΑΚΤΙΚΑ Παραβίαση των κανόνων γραμματικής της γλώσσας προγραμματισμού. Ανιχνεύονται στο στάδιο της μεταγλώττισης είτε από τον μεταγλωττιστή είτε από το διερμηνευτή. ΛΟΓΙΚΑ Λάθη κατά την υλοποίηση του αλγορίθμου. Είναι τα πιο σημαντικά και εμφανίζονται μόνο κατά την εκτέλεση του προγράμματος.
Για το σπίτι: Καλό Διάβασμα!!! Α) Τετράδιο μαθητή: Κεφάλαιο 6: σελ.137 – 141 Ερωτήσεις 12 – 14, σελ. 141 (Να τις αριθμήσετε) Β) Τετράδιο μαθητή: Ερωτήσεις : 1, 8, 10, σελ. 59 – 60 Γ) Μετατροπή αλγορίθμου σε πρόγραμμα: …. Καλό Διάβασμα!!!