Καθηγητής: Σπύρος Ξουργιάς1 Η Έννοια του Προγράμματος Ακριβής προσδιορισμός προβλήματος Ακριβής προσδιορισμός προβλήματος Ανάπτυξη αντίστοιχου αλγορίθμου Ανάπτυξη αντίστοιχου αλγορίθμου Διατύπωση του αλγορίθμου σε μορφή κατανοητή από τον υπολογιστή Διατύπωση του αλγορίθμου σε μορφή κατανοητή από τον υπολογιστή Στάδια επίλυσης προβλήματος
Καθηγητής: Σπύρος Ξουργιάς2 Προγραμματισμός είναι η δημιουργία του προγράμματος Ένα σύνολο εντολών δίνονται στον Η/Υ, ώστε να υλοποιηθεί ο αλγόριθμος επίλυσης του προβλήματος Ένα σύνολο εντολών δίνονται στον Η/Υ, ώστε να υλοποιηθεί ο αλγόριθμος επίλυσης του προβλήματος Το πρόγραμμα γράφεται σε μια γλώσσα προγραμματισμού Το πρόγραμμα γράφεται σε μια γλώσσα προγραμματισμού Αλγόριθμος + Δεδομένα = Πρόγραμμα Αλγόριθμος + Δεδομένα = Πρόγραμμα
Καθηγητής: Σπύρος Ξουργιάς3 Γλώσσες Προγραμματισμού Γλώσσες Μηχανής Γλώσσες Μηχανής Συμβολικές Γλώσσες (χαμηλού επιπέδου) με χρήση συμβολομεταφραστή (assembler) Συμβολικές Γλώσσες (χαμηλού επιπέδου) με χρήση συμβολομεταφραστή (assembler) Γλώσσες υψηλού επιπέδου (1957 FORTRAN, 1960 COBOL, ALGOL, PL1,LISP, BASIC, PASCAL 1970 PROLOG, 1972 C, JAVA κ.λ.π.) Γλώσσες υψηλού επιπέδου (1957 FORTRAN, 1960 COBOL, ALGOL, PL1,LISP, BASIC, PASCAL 1970 PROLOG, 1972 C, JAVA κ.λ.π.) Γλώσσες 4ης Γενιάς Γλώσσες 4ης Γενιάς
Καθηγητής: Σπύρος Ξουργιάς4 Παράδειγμα κώδικα που υπολογίζει το άθροισμα από 1 μέχρι 10 Σε ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ Σε Assembler INDEX=$01SUM=$02 LDA #10 STA INTEX CLA LOOP ADD INDEX DEC INDEX BNE SUM BRK Σε ΓΛΩΣΣΑ basic sum = 0 FOR index=1 TO 10 Sum=sum+index NEXT index END
Καθηγητής: Σπύρος Ξουργιάς5 Πλεονεκτήματα γλωσσών υψηλού επιπέδου Τρόπος έκφρασης κατανοητός από τον άνθρωπο Τρόπος έκφρασης κατανοητός από τον άνθρωπο Ανεξαρτησία από τον Η/Υ Ανεξαρτησία από τον Η/Υ Ευκολία στην εκμάθηση και εκπαίδευση Ευκολία στην εκμάθηση και εκπαίδευση Εύκολη διόρθωση λαθών και συντήρηση προγραμμάτων Εύκολη διόρθωση λαθών και συντήρηση προγραμμάτων
Καθηγητής: Σπύρος Ξουργιάς6 Γλώσσες 4ης Γενιάς Αποκρύπτουν την αρχιτεκτονική του υλικού και της τεχνικής του προγραμματισμού. Αποκρύπτουν την αρχιτεκτονική του υλικού και της τεχνικής του προγραμματισμού. Ο χρήστης έχει τη δυνατότητα να υποβάλει ερωτήσεις στο σύστημα, να δημιουργεί σενάρια και να αναπτύσσει εφαρμογές. Ο χρήστης έχει τη δυνατότητα να υποβάλει ερωτήσεις στο σύστημα, να δημιουργεί σενάρια και να αναπτύσσει εφαρμογές. Οι πληροφορίες ανακτώνται από βάσεις δεδομένων σύμφωνα με τις εκάστοτε απαιτήσεις. Οι πληροφορίες ανακτώνται από βάσεις δεδομένων σύμφωνα με τις εκάστοτε απαιτήσεις.
Καθηγητής: Σπύρος Ξουργιάς7 Ταξινόμηση Γλωσσών Προγραμματισμού Διαδικασιακές ή αλγοριθμικές π.χ. Pascal Διαδικασιακές ή αλγοριθμικές π.χ. Pascal Αντικειμενοστραφείς π.χ.Visual Basic Αντικειμενοστραφείς π.χ.Visual Basic Συναρτησιακές π.χ. LISP Συναρτησιακές π.χ. LISP Μη διαδικασιακές π.χ.PROLOG Μη διαδικασιακές π.χ.PROLOG Ερωταπαντήσεων SQL Ερωταπαντήσεων SQL
Καθηγητής: Σπύρος Ξουργιάς8 Ταξινόμηση με κριτήριο την περιοχή χρήσης Γενικής Χρήσης: Γενικής Χρήσης: Επιστημονικής κατεύθυνσης π.χ. FORTRAN Εμπορικής κατεύθυνσης π.χ. COBOL Προγραμματισμού συστημάτων π.χ. C Προγραμματισμού συστημάτων π.χ. C Τεχνητής νοημοσύνης π.χ. LISP, PROLOG Τεχνητής νοημοσύνης π.χ. LISP, PROLOG Ειδικής χρήσης που χρησιμοποιούνται στη ρομποτική, στη σχεδίαση ολοκληρωμένων κυκλωμάτων, βάσεων δεδομένων κ.λ.π. Ειδικής χρήσης που χρησιμοποιούνται στη ρομποτική, στη σχεδίαση ολοκληρωμένων κυκλωμάτων, βάσεων δεδομένων κ.λ.π.
Καθηγητής: Σπύρος Ξουργιάς9 Ποια είναι η καλύτερη Γλώσσα Προγραμματισμού; Δεν υπάρχει και ούτε πρόκειται να υπάρξει!
Καθηγητής: Σπύρος Ξουργιάς10 Οι γλώσσες προγραμματισμού είναι τεχνητές γλώσσες και προσδιορίζονται από: Το αλφάβητο π.χ. Α-Ω,α-ω, 0-9, !,$,),[,%,? Το λεξιλόγιο π.χ. INPUT, READ, ΓΡΑΨΕ Τη Γραμματική, Τυπικό, συντακτικό Τη σημασιολογία
Καθηγητής: Σπύρος Ξουργιάς11 Διαφορές φυσικών και τεχνικών γλωσσών προγραμματισμού Οι φυσικές γλώσσες εξελίσσονται Οι φυσικές γλώσσες εξελίσσονται Οι τεχνητές γλώσσες είναι στάσιμες Οι τεχνητές γλώσσες είναι στάσιμες Οι τεχνητές γλώσσες αλλάζουν επίπεδο διαλέκτου για να βελτιωθούν Οι τεχνητές γλώσσες αλλάζουν επίπεδο διαλέκτου για να βελτιωθούν π.χ. GW-Basic, QuickBasic, Visual Basic π.χ. GW-Basic, QuickBasic, Visual Basic
Καθηγητής: Σπύρος Ξουργιάς12 Τεχνικές σχεδίασης Προγραμμάτων Ιεραρχική σχεδίαση προγράμματος Ιεραρχική σχεδίαση προγράμματος Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός Δομημένος προγραμματισμός Δομημένος προγραμματισμός Αντικειμενοστραφής προγραμματισμός Αντικειμενοστραφής προγραμματισμός Παράλληλος προγραμματισμός Παράλληλος προγραμματισμός
Καθηγητής: Σπύρος Ξουργιάς13 Ιεραρχική σχεδίαση Καθορίζονται οι βασικές λειτουργίες σε ανώτερο επίπεδο και στη συνέχεια γίνεται διάσπαση σε όλο και μικρότερες λειτουργίες μέχρι το τελευταίο επίπεδο που οι λειτουργίες είναι απλές και επιλύονται εύκολα Καθορίζονται οι βασικές λειτουργίες σε ανώτερο επίπεδο και στη συνέχεια γίνεται διάσπαση σε όλο και μικρότερες λειτουργίες μέχρι το τελευταίο επίπεδο που οι λειτουργίες είναι απλές και επιλύονται εύκολα
Καθηγητής: Σπύρος Ξουργιάς14 Τμηματικός προγραμματισμός Στηρίζεται στον διαχωρισμό του προγράμματος σε επί μέρους τμήματα, κάθε ένα από τα οποία εκτελεί συγκεκριμένη λειτουργία και διασυνδέεται με τα υπόλοιπα ώστε να επιλύεται το αρχικό πρόβλημα Στηρίζεται στον διαχωρισμό του προγράμματος σε επί μέρους τμήματα, κάθε ένα από τα οποία εκτελεί συγκεκριμένη λειτουργία και διασυνδέεται με τα υπόλοιπα ώστε να επιλύεται το αρχικό πρόβλημα Πλεονεκτήματα είναι: η ευκολία στον προγραμματισμό, η μείωση των λαθών, η εύκολη κατανόηση και συντήρηση από τρίτους Πλεονεκτήματα είναι: η ευκολία στον προγραμματισμό, η μείωση των λαθών, η εύκολη κατανόηση και συντήρηση από τρίτους
Καθηγητής: Σπύρος Ξουργιάς15 Δομημένος προγραμματισμός Μεθοδολογία σύνταξης σύνθετων προγραμμάτων με σκοπό να μειώσει τα λάθη, να εξασφαλίσει την εύκολη κατανόηση και συντήρηση. Μεθοδολογία σύνταξης σύνθετων προγραμμάτων με σκοπό να μειώσει τα λάθη, να εξασφαλίσει την εύκολη κατανόηση και συντήρηση. Χρησιμοποιούνται οι δομές ακολουθίας, επιλογής και επανάληψης Χρησιμοποιούνται οι δομές ακολουθίας, επιλογής και επανάληψης Κάθε πρόγραμμα και κάθε ενότητα έχει μία είσοδο και μία έξοδο Κάθε πρόγραμμα και κάθε ενότητα έχει μία είσοδο και μία έξοδο
Καθηγητής: Σπύρος Ξουργιάς16 Πλεονεκτήματα Δομημένου Προγραμματισμού Απλά προγράμματα Απλά προγράμματα Μεταφορά αλγορίθμου σε πρόγραμμα Μεταφορά αλγορίθμου σε πρόγραμμα Ανάλυση κατά τμήματα Ανάλυση κατά τμήματα Περιορισμός λαθών Περιορισμός λαθών Εύκολη ανάγνωση – κατανόηση Εύκολη ανάγνωση – κατανόηση Εύκολη διόρθωση και συντήρηση Εύκολη διόρθωση και συντήρηση
Καθηγητής: Σπύρος Ξουργιάς17 Εντολή GOTO ΑΝ Αριθμός > 0 ΤΟΤΕ GOTO 1 ΑΝ Αριθμός = 0 ΤΟΤΕ GOTO 2 ΓΡΑΨΕ ‘Αρνητικός’ GOTO 4 1: ΓΡΑΨΕ ‘Θετικός’ GOTO 4 2: ΓΡΑΨΕ ‘ Μηδέν’ GOTO 4 4: ! Συνέχεια…
Καθηγητής: Σπύρος Ξουργιάς18 Δομημένος Προγραμματισμός ΑΝ Αριθμός >0 ΤΟΤΕ ΓΡΑΨΕ ‘Θετικός’ ΑΛΛΙΩΣ_ΑΝ Αριθμός =0 ΤΟΤΕ ΓΡΑΨΕ ‘Μηδέν’ ΑΛΛΙΩΣ ΓΡΑΨΕ ‘Αρνητικός’ ΤΕΛΟΣ_ΑΝ
Καθηγητής: Σπύρος Ξουργιάς19 Προγραμματιστικά περιβάλλοντα Τα προγράμματα που έχουν γραφεί σε οποιαδήποτε γλώσσα προγραμματισμού για να γίνουν αναγνωρίσιμα και εκτελέσιμα από τον υπολογιστή πρέπει να μετατραπούν σε γλώσσα μηχανής. Τα προγράμματα που έχουν γραφεί σε οποιαδήποτε γλώσσα προγραμματισμού για να γίνουν αναγνωρίσιμα και εκτελέσιμα από τον υπολογιστή πρέπει να μετατραπούν σε γλώσσα μηχανής. Η μετατροπή γίνεται με ειδικά μεταφραστικά προγράμματα τους μεταγλωττιστές και τους διερμηνευτές. Η μετατροπή γίνεται με ειδικά μεταφραστικά προγράμματα τους μεταγλωττιστές και τους διερμηνευτές. Ο μεταγλωττιστής (compiler) δέχεται στην είσοδο ένα πρόγραμμα σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής που μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή αφού είναι τελείως ανεξάρτητο από το αρχικό πρόγραμμα. Ο μεταγλωττιστής (compiler) δέχεται στην είσοδο ένα πρόγραμμα σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής που μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή αφού είναι τελείως ανεξάρτητο από το αρχικό πρόγραμμα. Ο διερμηνευτής (interpreter) διαβάζει μία προς μία τις εντολές του αρχικού προγράμματος και για κάθε μία εντολή εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Ο διερμηνευτής (interpreter) διαβάζει μία προς μία τις εντολές του αρχικού προγράμματος και για κάθε μία εντολή εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής
Καθηγητής: Σπύρος Ξουργιάς20 Συντάκτης (editor): Χρησιμοποιείται για τη σύνταξη και διόρθωση προγραμμάτων (είναι επεξεργαστής κειμένου). Συντάκτης (editor): Χρησιμοποιείται για τη σύνταξη και διόρθωση προγραμμάτων (είναι επεξεργαστής κειμένου). Το αρχικό πρόγραμμα λέγεται πηγαίο ( source). Το αρχικό πρόγραμμα λέγεται πηγαίο ( source). Το πρόγραμμα που παράγεται από τον μεταγλωττιστή λέγεται αντικείμενο (object) Το πρόγραμμα που παράγεται από τον μεταγλωττιστή λέγεται αντικείμενο (object) Το αντικείμενο πρόγραμμα είναι σε μορφή κατανοητή από τον υπολογιστή αλλά για να εκτελεστεί πρέπει να συνδεθεί με άλλα τμήματα προγράμματος. Το αντικείμενο πρόγραμμα είναι σε μορφή κατανοητή από τον υπολογιστή αλλά για να εκτελεστεί πρέπει να συνδεθεί με άλλα τμήματα προγράμματος. Συνδέτης-φορτωτής (linker-loader): Συνδέει το αντικείμενο πρόγραμμα που είναι σε γλώσσα μηχανής με άλλα τμήματα προγράμματος, που είτε είναι σε βιβλιοθήκες (libraries) της γλώσσας είτε τα γράφει ο προγραμματιστής και παράγεται το εκτελέσιμο πρόγραμμα (executable). Συνδέτης-φορτωτής (linker-loader): Συνδέει το αντικείμενο πρόγραμμα που είναι σε γλώσσα μηχανής με άλλα τμήματα προγράμματος, που είτε είναι σε βιβλιοθήκες (libraries) της γλώσσας είτε τα γράφει ο προγραμματιστής και παράγεται το εκτελέσιμο πρόγραμμα (executable). Η συνολική διαδικασία λέγεται μεταγλώττιση και σύνδεση. Η συνολική διαδικασία λέγεται μεταγλώττιση και σύνδεση.
Καθηγητής: Σπύρος Ξουργιάς21 Μεταγλώτισση και σύνδεση Το πηγαίο πρόγραμμα μετατρέπεται σε εκτελέσιμο Συντάκτης Μεταγλωττιστής Αντικείμενο πρόγραμμα Εκτελέσιμο πρόγραμμα Συνδέτης Φορτωτής Πηγαίο πρόγραμμα
Καθηγητής: Σπύρος Ξουργιάς22 Το εκτελέσιμο πρόγραμμα δημιουργείται μόνο αν το αρχικό πρόγραμμα (πηγαίο) δεν περιέχει συντακτικά λάθη. Το εκτελέσιμο πρόγραμμα δημιουργείται μόνο αν το αρχικό πρόγραμμα (πηγαίο) δεν περιέχει συντακτικά λάθη. Τα λάθη είναι συντακτικά (λάθος εντολές, αναγραμματισμοί, παράληψη δήλωσης μεταβλητών κλπ) και λογικά (λάθη λογικής, αλγορίθμου κλπ). Τα λάθη είναι συντακτικά (λάθος εντολές, αναγραμματισμοί, παράληψη δήλωσης μεταβλητών κλπ) και λογικά (λάθη λογικής, αλγορίθμου κλπ). Τα συντακτικά λάθη ανιχνεύονται από το μεταγλωττιστή (ή τον διερμηνευτή) και εμφανίζονται κατάλληλα διαγνωστικά μηνύματα. Το πρόγραμμα πρέπει να διορθωθεί και να μεταγλωττισθεί ξανά. Η διαδικασία επαναλαμβάνεται μέχρις ότου δεν ανιχνεύονται άλλα λάθη και δημιουργηθεί το αντικείμενο πρόγραμμα. Τα συντακτικά λάθη ανιχνεύονται από το μεταγλωττιστή (ή τον διερμηνευτή) και εμφανίζονται κατάλληλα διαγνωστικά μηνύματα. Το πρόγραμμα πρέπει να διορθωθεί και να μεταγλωττισθεί ξανά. Η διαδικασία επαναλαμβάνεται μέχρις ότου δεν ανιχνεύονται άλλα λάθη και δημιουργηθεί το αντικείμενο πρόγραμμα. Τα λογικά λάθη δεν ανιχνεύονται από τους μεταγλωττιστές και εμφανίζονται κατά την εκτέλεση και τον έλεγχο του προγράμματος με πραγματικά δεδομένα. Πρέπει να διορθωθεί ο αλγόριθμος και φυσικά να επαναληφθεί η μεταγλώττιση. Τα λογικά λάθη δεν ανιχνεύονται από τους μεταγλωττιστές και εμφανίζονται κατά την εκτέλεση και τον έλεγχο του προγράμματος με πραγματικά δεδομένα. Πρέπει να διορθωθεί ο αλγόριθμος και φυσικά να επαναληφθεί η μεταγλώττιση.
Καθηγητής: Σπύρος Ξουργιάς23 Ο διερμηνευτής (interpreter) έχει το πλεονέκτημα της άμεσης εκτέλεσης των εντολών και συνεπώς της άμεσης διόρθωσης σε περίπτωση λάθους. Μειονεκτεί στην ταχύτητα σε σχέση με το μεταγλωττιστή. Ο διερμηνευτής (interpreter) έχει το πλεονέκτημα της άμεσης εκτέλεσης των εντολών και συνεπώς της άμεσης διόρθωσης σε περίπτωση λάθους. Μειονεκτεί στην ταχύτητα σε σχέση με το μεταγλωττιστή. Ο μεταγλωττιστής (compiler) μειονεκτεί σε σχέση με το διερμηνευτή αφού δεν εκτελεί αμέσως τις εντολές, αλλά πρέπει το πρόγραμμα να περάσει από τη διαδικασία της μεταγλώττισης και σύνδεσης για να γίνει εκτελέσιμο. Ο μεταγλωττιστής (compiler) μειονεκτεί σε σχέση με το διερμηνευτή αφού δεν εκτελεί αμέσως τις εντολές, αλλά πρέπει το πρόγραμμα να περάσει από τη διαδικασία της μεταγλώττισης και σύνδεσης για να γίνει εκτελέσιμο. Ένα προγραμματιστικό περιβάλλον πρέπει να περιέχει τουλάχιστον συντάκτη, μεταγλωττιστή και συνδέτη για τη δημιουργία, μετάφραση και εκτέλεση του προγράμματος. Ένα προγραμματιστικό περιβάλλον πρέπει να περιέχει τουλάχιστον συντάκτη, μεταγλωττιστή και συνδέτη για τη δημιουργία, μετάφραση και εκτέλεση του προγράμματος. Τα σύγχρονα προγραμματιστικά περιβάλλοντα συνήθως χρησιμοποιούν διερμηνευτή κατά τη φάση της δημιουργίας του προγράμματος και μεταγλωττιστή για την τελική δημιουργία του εκτελέσιμου προγράμματος. Τα σύγχρονα προγραμματιστικά περιβάλλοντα συνήθως χρησιμοποιούν διερμηνευτή κατά τη φάση της δημιουργίας του προγράμματος και μεταγλωττιστή για την τελική δημιουργία του εκτελέσιμου προγράμματος.