Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/
Η έννοια του προγράμματος 2 Η επίλυση ενός προβλήματος περιλαμβάνει 3 στάδια: Ακριβής προσδιορισμός Ανάπτυξη του αντίστοιχου αλγορίθμου Διατύπωση του αλγορίθμου σε μορφή κατανοητή από τον υπολογιστή ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ: Η δημιουργία του προγράμματος, δηλαδή του συνόλου των εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος.
Φυσικές και τεχνητές γλώσσες 3 Οι γλώσσες προγραμματισμού αναπτύχθηκαν για να δίνουμε εντολές στον υπολογιστή (τεχνητές γλώσσες) Χρησιμοποιούνται για την επικοινωνία ανθρώπου - υπολογιστή, όπως οι φυσικές γλώσσες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων. Ακολουθούν τις βασικές έννοιες & αρχές της γλωσσολογίας Μια γλώσσα προσδιορίζεται από: Το αλφάβητό της Το λεξιλόγιό της Τη γραμματική της Τη σημασιολογία της
Αλφάβητο Λεξιλόγιο 4 Αλφάβητο μιας γλώσσας καλείται το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα. Το αλφάβητο της ελληνικής γλώσσας περιέχει τα γράμματα Α-Ω και α-ω, τα 10 ψηφία (0-9) και όλα τα σημεία στίξης. Λεξιλόγιο: Το λεξιλόγιο είναι ένα υποσύνολο όλων των δυνατών ακολουθιών που δημιουργούνται από το σύνολο του αλφαβήτου της γλώσσας Η ακολουθία ΣΧΟΛΕΙΟ είναι αποδεκτή, ενώ η ακολουθία ΑΝΤΚΠΗΝΝ δεν είναι
Γραμματική - Σημασιολογία 5 Η γραμματική αποτελείται από το τυπικό ή τυπολογικό (accidence) και το συντακτικό (syntax) Τυπικό: Το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή Συντακτικό: Το σύνολο των κανόνων που καθορίζει τη νομιμότητα της διάταξης και της σύνδεσης των λέξεων της γλώσσας για τη δημιουργία προτάσεων (ή εντολών στις γλώσσες προγραμματισμού) Σημασιολογία (semantics):το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων, των εκφράσεων & προτάσεων. Στις γλώσσες προγραμματισμού η σημασιολογία των λέξεων αποφασίζεται από τον δημιουργό της γλώσσας.
Διαφορές Φυσικών Τεχνητών γλωσσών 6 Δυνατότητα εξέλιξης: Οι φυσικές γλώσσες εξελίσσονται συνεχώς, γιατί και ο άνθρωπος αλλάζει και εξελίσσεται ανάλογα με την εποχή δημιουργούνται νέες λέξεις κανόνες γραμματικής και συντακτικού αλλάζουν με την πάροδο του χρόνου Αντίθετα οι τεχνητές γλώσσες χαρακτηρίζονται από στασιμότητα Ωστόσο, συχνά οι γλώσσες προγραμματισμού βελτιώνονται & μεταβάλλονται για να καλύψουν περισσότερες εφαρμογές ή για να διορθώσουν αδυναμίες τους Οι γλώσσες προγραμματισμού αλλάζουν σε επίπεδο διαλέκτου ή σε επίπεδο επέκτασης
Τεχνικές σχεδίασης προγραμμάτων 7 Ιεραρχική σχεδίαση προγράμματος Τμηματικός προγραμματισμός Δομημένος προγραμματισμός
Ιεραρχική Σχεδίαση Προγράμματος 8 Προσέγγιση «από πάνω προς τα κάτω» (top-down approach) Περιλαμβάνει Τον καθορισμό των βασικών λειτουργιών σε ανώτατο επίπεδο Στη συνέχεια τη διάσπαση σε όλο και μικρότερες λειτουργίες Στο τελευταίο επίπεδο οι λειτουργίες είναι τόσο απλές που λύνονται πολύ εύκολα. Χρησιμοποιούνται διαγραμματικές τεχνικές
Παράδειγμα Ιεραρχικής Σχεδίασης 9
Τμηματικός Προγραμματισμός 10 Η ιεραρχική σχεδίαση του προγράμματος υλοποιείται με τον τμηματικό προγραμματισμό Μετά την ανάλυση, κάθε υποπρόγραμμα αποτελεί ξεχωριστή ανεξάρτητη ενότητα (module), που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα Ο τμηματικός προγραμματισμός Διευκολύνει τη δημιουργία του προγράμματος Μειώνει τα λάθη Επιτρέπει την ευκολότερη παρακολούθηση, κατανόηση και συντήρηση του προγράμματος από τρίτους
Δομημένος Προγραμματισμός 11 Παρουσιάστηκε στα μέσα του 1960 και έχει επικρατήσει σχεδόν απόλυτα, σε όλες τις σύγχρονες γλώσσες προγραμματισμού Πρόκειται για μια μεθοδολογία σύνταξης προγραμμάτων, με σκοπό: Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων Να μειώσει τα λάθη Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων και Να διευκολύνει τις διορθώσεις και τις αλλαγές Ενθαρρύνει και βοηθάει την ανάλυση του προβλήματος σε επιμέρους τμήματα Περιέχει την ιεραρχική σχεδίαση και τον τμηματικό προγραμματισμό
12 Η εντολή GOTO Το «μαύρο πρόβατο» του προγραμματισμού ΑΝ αριθμός > 0 τότε GOTO 1 ΑΝ αριθμός = 0 τότε GOTO 2 ΓΡΑΨΕ Αρνητικός GOTO 4 1: ΓΡΑΨΕ Θετικός GOTO 4 2: ΓΡΑΨΕ Μηδέν GOTO 4 4:! Συνέχεια Αν Αριθμός>0 τότε Εμφάνισε Θετικός αλλιώς_αν Αριθμός=0 τότε Εμφάνισε Μηδέν αλλιώς Εμφάνισε Αρνητικός Τέλος_αν
Χαρακτηριστικά εντολών τύπου «GOTO» 13 Αλλαγή της ροής του προγράμματος Δημιουργία διακλαδώσεων Βοηθάει στην εξεύρεση «εύκολων λύσεων» για δύσκολες περιπτώσεις Δημιουργεί προβλήματα στη συνολική σχεδίαση, στην παρακολούθηση και στην κατανόηση του προγράμματος Δυσκολίες στη συντήρηση του προγράμματος
Δομημένος Προγραμματισμός (Ορισμός) 14 Ο δομημένος προγραμματισμός στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών, τη δομή της ακολουθίας, τη δομή της επιλογής και τη δομή της επανάληψης. Όλα τα προγράμματα μπορούν να γραφούν χρησιμοποιώντας μόνο αυτές τις τρεις δομές καθώς και συνδυασμό τους. Κάθε πρόγραμμα όπως και κάθε ενότητα προγράμματος έχει μόνο μία είσοδο και μόνο μία έξοδο.
15 Πλεονεκτήματα του δομημένου προγραμματισμού Δημιουργία απλούστερων προγραμμάτων Άμεση μεταφορά των αλγορίθμων σε προγράμματα Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους Ευκολότερη διόρθωση και συντήρηση
Προγραμματιστικά περιβάλλοντα 16 Κάθε πρόγραμμα που γράφτηκε σε οποιαδήποτε γλώσσα προγραμματισμού, πρέπει να γραφεί σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον υπολογιστή (γλώσσα μηχανής) Η μετατροπή γίνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων: Μεταγλωττιστές (compilers) Διερμηνευτές (interpreters)
Διερμηνευτής 17 Διαβάζει μια προς μια τις εντολές του προγράμματος Για κάθε εντολή που διαβάζει, εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής
Μεταγλωττιστής 18 Δέχεται στην είσοδο ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου (πηγαίο πρόγραμμα) Παράγει ισοδύναμο πρόγραμμα σε γλώσσα μηχανής (αντικείμενο) Ανεξάρτητο από το αρχικό πρόγραμμα Μπορεί να εκτελεστεί οποτεδήποτε από τον υπολογιστή
Μεταγλωττιστές 19 Το αντικείμενο πρόγραμμα συνήθως, αν και σε κατανοητή μορφή, δεν είναι σε θέση να εκτελεστεί Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα προγράμματος απαραίτητα για την εκτέλεσή του Τα τμήματα αυτά είτε τα γράφει ο προγραμματιστής, είτε βρίσκονται στις βιβλιοθήκες (libraries) Το πρόγραμμα που εκτελεί αυτή τη σύνδεση ονομάζεται συνδέτης φορτωτής (linker loader) Το αποτέλεσμα του συνδέτη είναι η παραγωγή του εκτελέσιμου προγράμματος H συνολική διαδικασία αποκαλείται μεταγλώττιση και σύνδεση
Λάθη 20 Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το αρχικό πρόγραμμα δεν έχει συντακτικά λάθη. Δύο είδη λαθών: Λογικά λάθη: Εμφανίζονται μόνο στην εκτέλεση του προγράμματος. Είναι τα πιο σοβαρά και δύσκολα στη διόρθωσή τους Οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου Συντακτικά λάθη: Εμφανίζονται στο στάδιο της μεταγλώττισης Πρέπει πάντα να διορθωθούν ώστε να δημιουργηθεί το εκτελέσιμο πρόγραμμα Οφείλονται συνήθως σε αναγραμματισμούς, παραλείψεις
Ανίχνευση Διόρθωση λαθών 21 Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύει τα συντακτικά λάθη και εμφανίζει τα κατάλληλα διαγνωστικά μηνύματα Ακολουθεί το στάδιο της διόρθωσης των λαθών Το διορθωμένο πρόγραμμα υποβάλλεται σε νέα μεταγλώττιση Η διαδικασία επαναλαμβάνεται μέχρι να μην υπάρχουν καθόλου λάθη Με τη χρήση μεταγλωττιστή πρέπει πριν χρησιμοποιηθεί ένα πρόγραμμα να περάσει από τη διαδικασία μεταγλώττισης και σύνδεσης Αντίθετα, με τη χρήση διερμηνευτή υπάρχει το πλεονέκτημα της άμεσης εκτέλεσης, και επομένως της άμεσης διόρθωσης, με το μειονέκτημα όμως την πιο αργή εκτέλεση του προγράμματος.
22
Προγραμματιστικά περιβάλλοντα 23 Στα σύγχρονα προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις, με την παράλληλη ύπαρξη διερμηνευτή (φάση ανάπτυξης) και μεταγλωττιστή (χρήση προγράμματος) Για την αρχική σύνταξη & διόρθωση των προγραμμάτων χρησιμοποιείται ο συντάκτης (editor): Ένας επεξεργαστής κειμένου με ειδικές λειτουργίες & δυνατότητες για ευκολότερη γραφή εντολών Για τη δημιουργία, μετάφραση και εκτέλεση ενός προγράμματος απαιτούνται συνολικά τρία προγράμματα τουλάχιστον: ο συντάκτης, ο μεταγλωττιστής και ο συνδετής. Στα σύγχρονα προγραμματιστικά περιβάλλοντα, αυτά παρέχονται με ενιαίο τρόπο. Κάθε προγραμματιστικό περιβάλλον έχει διαφορετικά εργαλεία και ιδιότητες (π.χ. ένα γραφικό περιβάλλον (visual) έχει ειδικά εργαλεία για σχεδίαση γραφικών αντικειμένων)