Σχεδίαση Αλγορίθμων (κεφάλαιο 2 του παρόντος μαθήματος) Αρχιτεκτονική Υπολογιστών (κεφάλαιο 4 του παρόντος μαθήματος)

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Σχεδίαση Αλγορίθμων (κεφάλαιο 2 του παρόντος μαθήματος) Αρχιτεκτονική Υπολογιστών (κεφάλαιο 4 του παρόντος μαθήματος)"

Transcript

1 TITΛΟΣ ΚΕΦΑΛΑΙΟΥ 6. Λογισμικό Συστήματος Στην ενότητα αυτή διαπραγματευόμαστε τα εξής θέματα : Μειονεκτήματα προγραμματισμού και χρήσης του υπολογιστή του προηγούμενου κεφαλαίου και αναγκαιότητα ύπαρξης λογισμικού συστήματος και σύντομη περιγραφή των τμημάτων του: Λειτουργικό Σύστημα Μεταφραστές Εκδότες-Συντάκτες Φορτωτές Λογισμικό Επικοινωνίας Επέκταση και εμβάθυνση στα πρώτα δύο τμήματα, το Λειτουργικό Σύστημα και τους Μεταφραστές TITΛΟΣ ΔΙΔΑΚΤΙΚΗΣ ΕΝΟΤΗΤΑΣ 6.1 Εισαγωγή ΠΡΟΑΠΑΙΤΟΥΜΕΝΗ ΓΝΩΣΗ Σχεδίαση Αλγορίθμων (κεφάλαιο 2 του παρόντος μαθήματος) Αρχιτεκτονική Υπολογιστών (κεφάλαιο 4 του παρόντος μαθήματος) ΣΥΝΟΨΗ Στην ενότητα αυτή θα εξετάσουμε τα μειονεκτήματα του υπολογιστή που αναπτύξαμε στο κεφάλαιο 4, όσο αφορά την χρήση του και τον προγραμματισμό του. Θα δούμε πως μπορούμε να αποφύγουμε τα μειονεκτήματα με το λογισμικό συστήματος. Το λογισμικό συστήματος αποτελείται κύρια από τα εξής τμήματα: το Λειτουργικό Σύστημα, τους Μεταφραστές, τους Εκδότες-Συντάκτες, τους Φορτωτές, και το Λογισμικό Επικοινωνίας. Θα περιγράψουμε σύντομα τα τμήματα του λογισμικού συστήματος και στις επόμενες ενότητες του κεφαλαίου θα επεκταθούμε στα δύο πρώτα τμήματα, το Λειτουργικό Σύστημα και τους Μεταφραστές. ΓΝΩΣΤΙΚΟΙ ΣΤΟΧΟΙ Στην ενότητα αυτή διαπραγματευόμαστε τα εξής θέματα : Μειονεκτήματα προγραμματισμού και χρήσης του υπολογιστή του προηγούμενου κεφαλαίου και αναγκαιότητα ύπαρξης λογισμικού συστήματος Σύντομη περιγραφή και χρησιμότητα των τμημάτων του λογισμικού συστήματος: Λειτουργικό Σύστημα Μεταφραστές Γλωσσών Προγραμματισμού Εκδότες-Συντάκτες Φορτωτές Λογισμικό Επικοινωνίας Λέξεις κλειδιά

2 Λογισμικό συστήματος, Λειτουργικό Σύστημα, Μεταφραστής, Εκδότες-Συντάκτες, Επεξεργαστής Κειμένου, Φορτωτές, Λογισμικό Επικοινωνίας. ΚΥΡΙΟ ΜΕΡΟΣ ΔΙΔΑΚΤΙΚΗΣ ΕΝΟΤΗΤΑΣ Εισαγωγή Στο προηγούμενο κεφάλαιο περιγράψαμε την δομή ενός τυπικού υπολογιστή και την εκτέλεση προγραμμάτων σε γλώσσα μηχανής. Αυτό το βασικό υπολογιστικό σύστημα έχει πολλά μειονεκτήματα: 1. Δυσκολία Εισαγωγής και Ενεργοποίησης Εκτέλεσης Προγράμματος. Δεν παρέχει εύκολο τρόπο για την εισαγωγή του προγράμματος στη μνήμη του υπολογιστή και την ενεργοποίηση της εκτέλεσης του. 2. Απαιτεί την Διαχείριση μονάδων εισόδου/εξόδου. Οι μονάδες εισόδου/εξόδου (Ι/Ο) είναι δύσκολο να χρησιμοποιηθούν καθώς ο προγραμματιστής θα πρέπει να γνωρίζει τις ιδιαιτερότητες του κάθε περιφερειακού. Τα προγράμματα πρέπει να ελέγχουν τους καταχωρητές κατάστασης περιφερειακών για να διαπιστώνει πότε η είσοδος ή η έξοδος έχει ολοκληρωθεί. Εναλλακτικά ο προγραμματιστής πρέπει να εφοδιάσει το σύστημα με στοιχεία διαχείρισης διακοπών. Η λεπτομερής οργάνωση των μονάδων εισόδου/εξόδου επιφορτίζει την προγραμματιστική προσπάθεια και παρεκτρέπει τον προγραμματιστή από την υλοποίηση του αλγόριθμου. 3. Περιορισμός Mνήμης. Δεν υπάρχει εύκολος τρόπος για το πρόγραμμα και τα δεδομένα του να υπερβούν το μέγεθος της κύριας μνήμης του υπολογιστή. 4. Δέσμευση και Υποαπασχόληση Υπολογιστή. Όλες οι μονάδες του υπολογιστή δεσμεύονται για την εκτέλεση ενός μόνο προγράμματος. Αυτό το πρόγραμμα ίσως καταλαμβάνει μικρό μέρος της μνήμης και να χρησιμοποιεί ένα ή δύο περιφερειακά αφήνοντας το υπόλοιπο της μνήμης και τα άλλα περιφερειακά αχρησιμοποίητα καθ όλη την διάρκεια της εκτέλεσης του. 5. Προγραμματισμός σε γλώσσα μηχανής. Ο υπολογιστής πρέπει να προγραμματιστεί σε γλώσσα μηχανής, η οποία δεν είναι πολύ κατάλληλη για την υλοποίηση αλγορίθμων. Το Λογισμικό Συστήματος Το συμπέρασμα που βγαίνει από τα παραπάνω είναι ότι το υλικό μέρος ενός υπολογιστή, όπως εκείνου που περιγράψαμε στο κεφάλαιο 4, έχει πολλά μειονεκτήματα και περιορισμούς, και για αυτόν τον λόγο απαιτούνται επιπλέον διευκολύνσεις για την εύκολη και οικονομικότερη εκμετάλλευσή του. Αυτές οι διευκολύνσεις παρέχονται από μια ποικιλία προγραμμάτων που συνήθως τα προμηθεύει ο κατασκευαστής του υπολογιστή. Τα προγράμματα αυτά θεωρούνται μέρος του υπολογιστικού συστήματος και είναι γνωστά ως λογισμικό συστήματος (system software) ή προγράμματα του συστήματος (system programs). Σε αυτό το κεφάλαιο περιγράφουμε τα κυριότερα τμήματα του λογισμικού συστήματος, το λειτουργικό σύστημα (operating system), μεταφραστές γλωσσών προγραμματισμού (language translators), εκδότες ή συντάκτες (editors), φορτωτές (loaders) και λογισμικό επικοινωνίας (communications software). Ακολουθεί σύντομη περιγραφή των τμημάτων του λογισμικού συστήματος. Το λειτουργικό σύστημα και οι μεταφραστές, αναλύονται διεξοδικότερα στις παραγράφους 6.2 έως 6.5 του παρόντος κεφαλαίου.

3 Το Λειτουργικό Σύστημα Οι σύγχρονοι υπολογιστές είναι εφοδιασμένοι με ένα λειτουργικό σύστημα (αν και είναι δυνατό ο κατασκευαστής να προσφέρει περισσότερα του ενός) που παρέχει τις εξής λειτουργίες: α) Παρέχει στον χρήστη μια εκτεταμένη (extended) ή ιδεατή (virtual) μηχανή πιο εύκολη στον προγραμματισμό και στην χρήση του υλικού. Απαλλάσσει τον χρήστη από τον προβληματισμό για ορισμένα χαρακτηριστικά του υπολογιστή, όπως η περιορισμένη μνήμη του ή οι ιδιομορφίες των μονάδων εισόδου/εξόδου. Παρέχει διευκολύνσεις στον χειρισμό προγραμμάτων ή δεδομένων, όπως για παράδειγμα να εκτελεστεί ένα πρόγραμμα με συγκεκριμένα δεδομένα και τα αποτελέσματα να εκτυπωθούν σε συγκεκριμένο εκτυπωτή. β) Ρυθμίζει την αποδοτική χρήση των πόρων του συστήματος (resource management). Παρακολουθεί και κρατά στοιχεία για την χρήση πόρων και συντονίζει την απόδοση πόρων προς χρήση. Επιτρέπει την καταμερισμένη χρήση του υπολογιστή από πολλούς χρήστες ή/και από πολλά προγράμματα ενός χρήστη και συντονίζει την απόδοση πόρων του υπολογιστή σύμφωνα με τις απαιτήσεις τους. Τα Λειτουργικά συστήματα περιγράφονται αναλυτικότερα στο εδάφιο 6.5. Γνωστά λειτουργικά συστήματα είναι το Unix, που είναι εφοδιασμένοι συνήθως οι υπολογιστές για πολλούς χρήστες, το DOS, τα Windows95/98/NT, που είναι εφοδιασμένοι οι προσωπικοί υπολογιστές. Μεταφραστές Γλωσσών Προγραμματισμού. Είδαμε στο κεφάλαιο 2 ότι οι αλγόριθμοι εκφράζονται σε δομές ελέγχου όπως ακολουθία βημάτων, επιλογές, επαναλήψεις και αναδρομές. Ακόμη είδαμε ότι τα δεδομένα που επεξεργάζεται ο αλγόριθμος έχουν μια λογική δομή σε αρχεία, ακολουθίες ή δένδρα. Όμως λίγες δομές ελέγχου και δεδομένων είναι άμεσα διαθέσιμες σε γλώσσα μηχανής. Οι δομές ελέγχου πρέπει να αναλυθούν και να εκφραστούν από πρωτόγονες λειτουργίες όπως η JUMP, ενώ οι δομές δεδομένων από πρωτόγονες αναφορές σε θέσεις μνήμης που είναι σειριακά διατεταγμένες. Για να μπορούμε να εκφράζουμε πιο άμεσα τις δομές ελέγχου και δεδομένων που χρησιμοποιούν οι αλγόριθμοι αναπτύχθηκαν οι γλώσσες υψηλού επιπέδου (π.χ., Fortran, Cobol, ALGOL, Pascal και C). Ένας αλγόριθμος για να εκφραστεί σε γλώσσα μηχανής χρειάζεται πολύ μεγαλύτερη ανάλυση απ ότι σε μια γλώσσα υψηλού επιπέδου. Έτσι η απαιτούμενη προσπάθεια, αλλά και η πιθανότητα λαθών είναι πολύ μεγαλύτερη, ενώ ακόμα δυσκολότερη είναι η κατανόηση ενός προγράμματος σε γλώσσα μηχανής. Όμως οι γλώσσες υψηλού επιπέδου δεν είναι άμεσα κατανοητές από τον υπολογιστή. Οι μεταφραστές κάνουν ακριβώς αυτό που υπονοεί το όνομά τους, μεταφράζουν δηλαδή ένα πρόγραμμα γλώσσας υψηλού επιπέδου σε πρόγραμμα γλώσσας μηχανής. Κάθε γλώσσα υψηλού επιπέδου χρειάζεται διαφορετικό μεταφραστή προς μια γλώσσα μηχανής. Εκτός από τα μειονεκτήματα της γλώσσας μηχανής που ήδη έχουμε αναφέρει ένα ακόμη μειονέκτημα είναι ότι αναφέρεται σε συγκεκριμένο υπολογιστή. Η μεταφορά ενός προγράμματος από ένα υπολογιστή σε άλλον είναι εξαιρετικά δύσκολη καθώς πρέπει να ξαναγραφτεί το πρόγραμμα σε άλλη γλώσσα μηχανής. Οι όροι μεταφερσιμότητα ή φορητότητα (portability) χρησιμοποιούνται για να δηλώσουν την ιδιότητα μεταφοράς ενός προγράμματος σε διαφορετικούς υπολογιστές και είναι πολύ χαμηλή για προγράμματα σε γλώσσα μηχανής και πολύ υψηλή για προγράμματα σε γλώσσα υψηλού επιπέδου. Κάθε γλώσσα μηχανής χρειάζεται διαφορετικό μεταφραστή από μια γλώσσα υψηλού επιπέδου.

4 Η γλώσσα μηχανής έχει και μερικά πλεονεκτήματα και χρησιμοποιείται σε ειδικές περιπτώσεις. Επιτρέπει στον προγραμματιστή να παράγει προγράμματα μικρότερα σε μέγεθος και ταχύτερα σε εκτέλεση απ ότι ένας μεταφραστής ενός προγράμματος σε γλώσσα υψηλού επιπέδου. Απαιτείται βεβαίως μεγάλη δεξιοτεχνία και κόστος σε ανθρώπινο δυναμικό, γενικά πολύ μεγαλύτερο της αποτελεσματικότερης εκτέλεσης του προγράμματος. Σε λίγες περιπτώσεις όπου απαιτείται μεγάλη αποδοτικότητα (όπως οι χρονικά κρίσιμες εφαρμογές που αναφέρθηκαν στο εδάφιο 3.2.1), μπορεί να επιτευχθεί με τον συντονισμό (tuning) του προγράμματος γλώσσας μηχανής που δίνει ο μεταφραστής. Ο συντονισμός συνίσταται στην αναγνώριση τμημάτων που εκτελούνται συχνότερα (όπως οι εσωτερικοί βρόχοι) και στην αντικατάστασή τους με ρουτίνες σε γλώσσα μηχανής ειδικά γραμμένες ώστε να έχουν μεγαλύτερη αποδοτικότητα. Ένα ακόμη πλεονέκτημα της γλώσσας μηχανής είναι ότι επιτρέπει στον προγραμματιστή την πρόσβαση σε στοιχεία του υλικού, όπως οι καταχωρητές CPU και οι καταχωρητές κατάστασης του περιφερειακού (βλέπε κεφ 4). Η πρόσβαση αυτή δεν είναι απαραίτητη στις συνήθεις εφαρμογές, γι αυτό οι περισσότερες γλώσσες προγραμματισμού δεν την παρέχουν. Όπου είναι απαραίτητη, ιδίως σε ορισμένα τμήματα του λειτουργικού συστήματος, χρησιμοποιούνται γλώσσες μηχανής. Συνοψίζοντας μπορούμε να πούμε ότι οι γλώσσες υψηλού επιπέδου χρησιμοποιούνται στις περισσότερες περιπτώσεις προγραμματισμού. Η γλώσσα μηχανής χρησιμοποιείται για συντονισμό ή για την πρόσβαση σε τμήματα του υπολογιστή που αλλιώς παραμένουν «κρυφά». Εκδότες-Συντάκτες Κατά την ανάπτυξη ή συντήρηση ενός προγράμματος απαιτούνται αλλαγές (διόρθωση λαθών, πρόσθεση στοιχείων κτλ). Για να αποφύγουμε την ολική επαναπληκτρολόγιση του διατηρούμε (αποθηκεύουμε) το ενημερωμένο πρόγραμμα σε αρχείο στην δευτερεύουσα μνήμη. Για την αρχική ανάπτυξή του και τις αλλαγές που χρειάζονται χρησιμοποιούμε το λογισμικό συστήματος που ονομάζεται εκδότης ή συντάκτης (editor). Ο συντάκτης μπορεί να χρησιμοποιηθεί όχι μόνο να αλλάξει προγράμματα αλλά οποιοδήποτε κείμενο που βρίσκεται στη δευτερεύουσα μνήμη. Η φύση των πληροφοριών ή του κειμένου εξαρτάται από την εφαρμογή. Μπορεί να είναι τεκμηρίωση προγράμματος, εγχειρίδια χρήστη, τυποποιημένα έγγραφα, κατάλογοι, βιβλιογραφίες, λογοτεχνικά κείμενα. Γνωστοί συντάκτες είναι το vi στο Unix και το Wordpad στα Windows. Οι διευκολύνσεις που παρέχει ο συντάκτης επιτρέπουν στο χρήστη να εντοπίσει, να σβήσει ή να αντικαταστήσει συγκεκριμένα τμήματα του κειμένου ή να εισαγάγει νέα τμήματα στα σημεία που επιθυμεί. Πολλοί συντάκτες χρησιμοποιούνται διαλογικά (interactively), δηλαδή ο χρήστης δίνει στον συντάκτη εντολές που εκτελούνται αμέσως. Τα τερματικά οθόνης προσφέρονται για διόρθωση καθώς ο χρήστης μπορεί να παρακολουθεί τις αλλαγές καθώς γίνονται. Ένας τέτοιος συντάκτης ονομάζεται επεξεργαστής κειμένου (word processor). Γνωστός επεξεργαστής κειμένου είναι ο Word της Microsoft. Φορτωτές Ορισμένοι μεταφραστές γλωσσών αποθηκεύουν τα μεταφρασμένα προγράμματα στη δευτερεύουσα μνήμη. Το λογισμικό συστήματος που είναι υπεύθυνο να μεταφέρει το πρόγραμμα στην μνήμη και να ενεργοποιήσει την εκτέλεση του

5 ονομάζεται φορτωτής (loader). Οι περισσότεροι φορτωτές μπορούν να συνενώσουν μεταφρασμένα μέρη προγραμμάτων σε ένα και μόνο πρόγραμμα. Τα μεταφρασμένα μέρη μπορεί να είναι έτοιμες βιβλιοθήκες ή μέρη προγραμμάτων τα οποία έχουν μεταφραστεί σε διαφορετικούς χρόνους. Με αυτό τον τρόπο μέρη του προγράμματος που δεν χρειάζονται αλλαγές δεν ξαναμεταφράζονται. Λογισμικό επικοινωνίας Όπως είδαμε στο προηγούμενο κεφάλαιο οι υπολογιστές μπορούν να επικοινωνούν μεταξύ τους μέσω δικτύων. Το λογισμικό συστήματος που είναι υπεύθυνο για την μετάδοση και λήψη δεδομένων ονομάζεται λογισμικό επικοινωνίας. Στις λειτουργίες του περιλαμβάνονται η μετατροπή δεδομένων στις διαφορετικές απεικονίσεις που απαιτεί κάθε υπολογιστής, ο εντοπισμός και η διόρθωση λαθών που προκύπτουν κατά την μετάδοση, η σωστή δρομολόγηση δεδομένων διαμέσου του δικτύου και η προστασία του δικτύου από υπερφόρτωση. Ολική Θεώρηση Συστήματος Σχηματικά, μπορούμε να παραστήσουμε την σχέση των προγραμμάτων ως εξής ΕΦΑΡΜΟΓΕΣ (Τραπεζικές, Συστήματα Διαχείρισης ΒΔ, Βάσεις Παιχνίδια, ) Λειτουργικό Σύστημα (Εντολές) Φορτωτές Εκδότες- Συντάκτες Μεταγλωττιστές Λογισμικό Επικοινωνίας Λειτουργικό Σύστημα (Πυρήνας) Υπολογιστής Κεφαλαίου 4 Φυσικοί πόροι (Κεντρική μονάδα, κύρια και δευτερεύουσα μνήμη, Ι/Ο, κλπ) Γλώσσα Μηχανής Μικροπρογραμματισμός Στις επόμενες ενότητες θα επικεντρωθούμε στους Μεταφραστές και στα Λειτουργικά Συστήματα. ΑΝΑΚΕΦΑΛΑΙΩΣΗ (απαντά στους αρχικούς στόχους) 1. Ο υπολογιστής του προηγούμενου κεφαλαίου έχει πολλά μειονεκτήματα χρήσης και προγραμματισμού: Δυσκολία Εισαγωγής και Ενεργοποίησης Εκτέλεσης Προγράμματος Απαιτεί την Διαχείριση μονάδων εισόδου/εξόδου Περιορισμός Mνήμης Δέσμευση και Υποαπασχόληση Υπολογιστή Προγραμματισμός σε γλώσσα μηχανής 2. Το λογισμικό συστήματος παρέχει διευκολύνσεις χρήσης και προγραμματισμού και κύρια αποτελείται από τα εξής τμήματα: το λειτουργικό σύστημα, τους μεταφραστές γλωσσών προγραμματισμού, τους συντάκτες ή εκδότες, τους φορτωτές και το λογισμικό επικοινωνίας. 3. Το λειτουργικό σύστημα παρέχει διευκολύνσεις στον χειρισμό προγραμμάτων ή δεδομένων και ρυθμίζει την αποδοτική χρήση των πόρων του συστήματος.

6 4. Οι μεταφραστές μεταφράζουν ένα πρόγραμμα γλώσσας υψηλού επιπέδου σε πρόγραμμα γλώσσας μηχανής. Ο προγραμματισμός σε γλώσσα υψηλού επιπέδου έχει τα εξής πλεονεκτήματα σε σχέση με αυτόν σε γλώσσα μηχανής: εκφράζουμε πιο άμεσα τις δομές ελέγχου και δεδομένων που χρησιμοποιούν οι αλγόριθμοι η απαιτούμενη προσπάθεια και η πιθανότητα λαθών είναι πολύ μικρότερη η κατανόηση προγραμμάτων υψηλού επιπέδου είναι ευκολότερη έχουν υψηλή μεταφερσιμότητα Οι γλώσσες μηχανής έχουν και πλεονεκτήματα: επιτρέπουν (με μεγάλη δεξιοτεχνία και κόστος) προγράμματα μικρότερα σε μέγεθος και ταχύτερα σε εκτέλεση απ ότι ένα μεταφρασμένο επιτρέπουν στον προγραμματιστή την πρόσβαση σε στοιχεία του υλικού 5. Οι συντάκτες-εκδότες χρησιμοποιούνται για την αρχική ανάπτυξή και τις αλλαγές προγραμμάτων, καθώς και οποιοδήποτε κειμένου. 6. Ο φορτωτής μεταφέρει εκτελέσιμα προγράμματα από την δευτερεύουσα μνήμη στην κύρια μνήμη και ενεργοποιεί την εκτέλεση του. 7. Το Λογισμικό Επικοινωνίας είναι υπεύθυνο για την μετάδοση και λήψη δεδομένων. Ασκήσεις Αυτοαξιολόγησης 1. Τι μειονεκτήματα έχει η χρήση και ο προγραμματισμός του βασικού υπολογιστή του προηγούμενου κεφαλαίου; 1. Δυσκολία εισαγωγής προγραμμάτων στην μνήμη και ενεργοποίησης της εκτέλεσης τους 2. Απαιτεί και επιφορτίζει τον προγραμματιστή με την διαχείριση μονάδων εισόδου/εξόδου 3. Πρόγραμμα και δεδομένα περιορίζονται στο μέγεθος της κύριας μνήμης 4. Δέσμευση και Υποαπασχόληση Υπολογιστή σε ένα πρόγραμμα 5. Απαιτεί προγραμματισμό σε γλώσσα μηχανής 2. Ποια είναι τα κύρια τμήματα του λογισμικού συστήματος; Το λειτουργικό σύστημα, οι μεταφραστές γλωσσών προγραμματισμού, οι συντάκτες, οι φορτωτές και λογισμικό επικοινωνίας. 3. Για ποιο λόγο χρειαζόμαστε το λογισμικό συστήματος; Το υλικό μέρος ενός υπολογιστή έχει πολλά μειονεκτήματα (δες ερώτηση 1)στην χρήση και τον προγραμματισμό του και απαιτούνται διευκολύνσεις. Τα προγράμματα του λογισμικού συστήματος παρέχουν διευκολύνσεις για την εύκολη και αποδοτικότερη χρήση και προγραμματισμό των υπολογιστών. 4. Τι διευκολύνσεις παρέχει το Λειτουργικό Σύστημα; 1. Παρέχει τον χρήστη μια εκτεταμένη μηχανή πιο εύκολη στον προγραμματισμό και την χρήση της. Απαλλάσσει τον χρήστη από περιορισμούς μνήμης και την διαχείριση μονάδων εισόδου/εξόδου.

7 2. Ρυθμίζει την αποδοτική χρήση των πόρων του συστήματος. Παρακολουθεί και κρατά στοιχεία για την χρήση πόρων και συντονίζει την απόδοση πόρων προς χρήση 5. Τι διευκολύνσεις παρέχουν οι μεταφραστές; Μεταφράζουν προγράμματα σε γλώσσες υψηλού επιπέδου σε ισοδύναμα προγράμματα γλώσσας μηχανής.. Οι αλγόριθμοι και τα δεδομένα που επεξεργάζονται μπορούν να εκφραστούν πιο άμεσα σε γλώσσες υψηλού επιπέδου από γλώσσες μηχανής. Οι μεταφραστές επιτρέπουν και διευκολύνουν τον προγραμματισμό. 6. Τι διευκολύνσεις παρέχουν οι Συντάκτες ή Εκδότες; Επιτρέπει την εισαγωγή, αλλαγή (πρόσθεση, αφαίρεση, διόρθωση) και αποθήκευση προγραμμάτων, πληροφοριών και κειμένων γενικά. 7. Τι διευκολύνσεις παρέχουν οι Φορτωτές; Ο φορτωτής μεταφέρει εκτελέσιμα προγράμματα από την δευτερεύουσα μνήμη στην κύρια μνήμη και ενεργοποιεί την εκτέλεση του. 8. Τι διευκολύνσεις παρέχει το Λογισμικό Επικοινωνίας; Το λογισμικό επικοινωνίας διευκολύνει την μετάδοση και λήψη δεδομένων μέσω δικτύων υπολογιστών. ΒΙΒΛΙΟΓΡΑΦΙΑ, ΠΗΓΕΣ 1. Εισαγωγή στη Σύγχρονη Επιστήμη των Υπολογιστών, Les Goldschlager & Andew Lister, εκδόσεις Δίαυλος 1994, σελ Σύγχρονα Λειτουργικά Συστήματα,

8 TITΛΟΣ ΔΙΔΑΚΤΙΚΗΣ ΕΝΟΤΗΤΑΣ 6.2 Μεταφραστές γλωσσών προγραμματισμού ΠΡΟΑΠΑΙΤΟΥΜΕΝΗ ΓΝΩΣΗ Σχεδίαση Αλγορίθμων (κεφάλαιο 2 του παρόντος μαθήματος) Αρχιτεκτονική Υπολογιστών (κεφάλαιο 4 του παρόντος μαθήματος) Υποενότητα 6.1 ΣΥΝΟΨΗ Παρουσιάζουμε και συγκρίνουμε τις μεθόδους μετάφρασης και εκτέλεσης ενός προγράμματος υψηλού επιπέδου. Ανάλογα με την μέθοδο που χρησιμοποιούν διαχωρίζονται σε διερμηνείς και μεταγλωττιστές. Οι διερμηνείς μεταφράζουν και αμέσως εκτελούν τις εντολές του προγράμματος, ενώ οι μεταγλωττιστές μεταφράζουν το πλήρες πρόγραμμα που κατόπιν εκτελείται. Εξετάζουμε πλεονεκτήματα και μειονεκτήματα των διερμηνέων και μεταγλωττιστών. ΓΝΩΣΤΙΚΟΙ ΣΤΟΧΟΙ Η διαδικασία της μετάφρασης γλώσσας υψηλού επιπέδου σε γλώσσα μηχανής Οι μέθοδοι μετάφρασης προγραμμάτων υψηλού επιπέδου σε γλώσσα μηχανής και η διαφοροποίησή των μεταφραστών σε δύο κατηγορίες, τους διερμηνείς και τους μεταγλωττιστές, ανάλογα με τον μέθοδο μετάφρασης και εκτέλεσης που χρησιμοποιούν. Οι βασικοί αλγόριθμοι μετάφρασης που χρησιμοποιούν οι διερμηνείς και οι μεταγλωττιστές. Πλεονεκτήματα και μειονεκτήματα των διερμηνέων και των μεταγλωττιστών. Λέξεις κλειδιά Διερμηνέας, μεταγλωττιστής, πηγαίο πρόγραμμα, αντικείμενο πρόγραμμα. ΚΥΡΙΟ ΜΕΡΟΣ ΔΙΔΑΚΤΙΚΗΣ ΕΝΟΤΗΤΑΣ Εισαγωγή Η λειτουργία του μεταφραστή γλωσσών προγραμματισμού είναι να μεταφράζει προγράμματα υψηλού επιπέδου σε ισοδύναμα προγράμματα γραμμένα σε γλώσσα μηχανής. Σ αυτήν την ενότητα θα εξετάσουμε πως πραγματοποιείται η μετάφραση προγραμμάτων υψηλού επιπέδου σε γλώσσα μηχανής. Σε ένα πρόγραμμα υψηλού επιπέδου υπάρχουν δύο οντότητες: οι εντολές και οι δομές δεδομένων. Ο μεταφραστής πρέπει να μετασχηματίσει ή να μετατρέψει τις οντότητες υψηλού επιπέδου σε αντίστοιχες ή ισοδύναμες της γλώσσας μηχανής. Οι εντολές γλώσσας υψηλού επιπέδου είναι γενικά πιο «δυνατές» από εκείνες της γλώσσας μηχανής, δηλαδή από την μια μεριά μπορούμε να υλοποιήσουμε πιο εύκολα τους αλγόριθμους, και από την άλλη χρειάζονται πολλές εντολές γλώσσας μηχανής για να περιγράψουμε μια εντολή γλώσσας υψηλού επιπέδου. Έτσι κάθε εντολή γλώσσας υψηλού επιπέδου συνήθως μεταφράζεται σε έναν αριθμό εντολών γλώσσας μηχανής.

9 Οι δομές δεδομένων που διαχειρίζεται μια γλώσσα υψηλού επιπέδου (π.χ. λίστες, δένδρα, συμβολοσειρές) δεν είναι άμεσα διαθέσιμες σε γλώσσα μηχανής. Πρέπει να αναπαρασταθούν ως bits, αριθμοί και διευθύνσεις, και ο μεταφραστής πρέπει να μετασχηματίσει τις δομές δεδομένων σε αναπαράσταση στο επίπεδο της γλώσσας μηχανής. Ανάλογα με την μέθοδο που χρησιμοποιούν οι μεταφραστές για τον μετασχηματισμό των οντοτήτων υψηλού επιπέδου τους κατατάσσονται σε δύο μεγάλες κατηγορίες, τους διερμηνείς (interpreters) και τους μεταγλωττιστές (compilers). Στις δύο επόμενες παραγράφους περιγράφουμε τις μεθόδους που χρησιμοποιούν και εξετάζουμε τα πλεονεκτήματα και μειονεκτήματα τους Διερμηνείς Ο βασικός Αλγόριθμος Ένας διερμηνέας μεταφράζει και εκτελεί άμεσα τις εντολές του προγράμματος υψηλού επιπέδου μια-μια, δηλαδή η εκτέλεση κάθε εντολής προηγείται της μετάφρασης της επόμενης. Ένας διερμηνέας εκτελεί τον εξής αλγόριθμο: Ξεκίνα από την αρχή του προγράμματος υψηλού επιπέδου Repeat Μετάφρασε την επόμενη εντολή υψηλού επιπέδου Κανόνισε να εκτελεστεί η μετάφραση Until το τέλος του προγράμματος υψηλού επιπέδου (6.1) Στις περισσότερες περιπτώσεις ο διερμηνέας είναι εφοδιασμένος με σειρά από έτοιμα στοιχεία (ρουτίνες-procedures) που αντιστοιχούν σε συγκεκριμένους τύπους εντολών υψηλού επιπέδου και αποτελούνται από σειρές ισοδύναμων εντολών σε γλώσσα μηχανής. Για να μεταφράσει κάθε εντολή υψηλού επιπέδου, ο διερμηνέας εξετάζει την εντολή για διαπιστώσει τον τύπο της και καλεί το αντίστοιχο στοιχείο. Τα δεδομένα στα οποία ενεργεί η εντολή υψηλού επιπέδου περνάνε στο στοιχείο ως παράμετροι. Όταν το στοιχείο εκτελεστεί ο διερμηνέας ξαναπαίρνει τον έλεγχο και επαναλαμβάνει τον κύκλο για την επόμενη εντολή υψηλού επιπέδου. Εξακρίβωση τύπου εντολής Ο διερμηνέας εξακριβώνει τον τύπο κάθε εντολής χρησιμοποιώντας τους συντακτικούς κανόνες της γλώσσας (βλ. Εδάφιο 2.2). Η ταχύτητα της μετάφρασης εξαρτάται από το συντακτικό της γλώσσας που μεταφράζεται. Όσο πιο πολύπλοκο το συντακτικό τόσο πιο αργή η μετάφραση. Αφού ο διερμηνέας μεταφράζει κάθε εντολή υψηλού επιπέδου κάθε φορά που εκτελείται είναι πλεονέκτημα να έχουμε όσο το δυνατό απλούστερο συντακτικό. Αυτός είναι και ο κυριότερος στόχος στη σχεδίαση γλωσσών υψηλού επιπέδου που συνήθως μεταφράζονται με διερμηνέα. Στην Basic, για παράδειγμα, ο τύπος κάθε εντολής καθορίζεται από την πρώτη λέξη. Υπάρχουν όμως και πολύπλοκες ανώτερες γλώσσες προγραμματισμού οι οποίες μεταφράζονται με διερμηνέα, όπως η APL. Ο τύπος μιας εντολής γλώσσας μηχανής καθορίζεται από τον κώδικα λειτουργίας της και ο μοναδικός της συντελεστής είναι τα δεδομένα που είναι αποθηκευμένα στη θέση της μνήμης που καθορίζεται από το πεδίο διεύθυνσής της. Μειονεκτήματα Διερμηνέα

10 Από τον αλγόριθμο του διερμηνέα 6.1 καθίσταται σαφές ότι μια εντολή προγράμματος μεταφράζεται όσες φορές εκτελείται. Αυτή η επαναλαμβανόμενη μετάφραση είναι εντελώς περιττή και σε αρκετές περιπτώσεις απαράδεκτη: 1. Ο απαιτούμενος χρόνος για να μεταφραστεί μια εντολή ξεπερνά τον χρόνο που χρειάζεται για να εκτελεστεί. 2. Το πρόγραμμα εκτελείται συχνά χωρίς αλλαγή (π.χ. πρόγραμμα μισθοδοσίας) 3. Η ταχύτητα εκτέλεσης έχει μεγάλη σημασία (π.χ. σύστημα κράτησης θέσεων ή ελέγχου μηχανών βιομηχανίας) Ο τρόπος για να αποφύγουμε την επιβάρυνση είναι να χρησιμοποιήσουμε διαφορετική μέθοδο μετάφρασης, την μεταγλώττιση Μεταγλωττιστές (Compilers) Εισαγωγή Η μεταφραστική μέθοδος που χρησιμοποιούν οι μεταγλωττιστές είναι ο διαχωρισμός της μετάφρασης από την εκτέλεση του προγράμματος. Το πρόγραμμα μεταφράζεται ολόκληρο σε γλώσσα μηχανής και κατόπιν εκτελείται. Η μετάφραση και η εκτέλεση του προγράμματος με αυτή την μέθοδο περιγράφεται από τον αλγόριθμο 6.2 Ξεκίνα από την αρχή του προγράμματος υψηλού επιπέδου Repeat Μετάφρασε την επόμενη εντολή υψηλού επιπέδου Until το τέλος του προγράμματος υψηλού επιπέδου Κανόνισε να εκτελεστεί ολόκληρο το μεταφρασμένο πρόγραμμα (6.2) Η μετάφραση του προγράμματος υψηλού επιπέδου όπως περιγράφεται από τις πρώτες τέσσερις γραμμές του αλγόριθμου 6.2, καλείται μεταγλώττιση (compilation) και πραγματοποιείται από ένα πρόγραμμα που καλείται μεταγλωττιστής (compiler). Απλά ένας μεταγλωττιστής μεταφράζει ένα πρόγραμμα σε γλώσσα υψηλού επιπέδου, που καλείται πηγαίο πρόγραμμα (source program), σε ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής, που καλείται αντικείμενο πρόγραμμα (object program). Πηγαίο πρόγραμμα μεταγλωττιστής Αντικείμενο Πρόγραμμα Μηνύματα Λαθών Σχήμα Το αντικείμενο πρόγραμμα είναι αυτό που εκτελείται. Κατά την μετάφραση μπορούν να διαπιστωθούν λάθη τα οποία κοινοποιούνται στον προγραμματιστή μέσω μηνυμάτων. Ανάλυση Συντακτικού Πηγαίου κώδικα Όπως και ο διερμηνέας, ο μεταγλωττιστής αναλύει το συντακτικό του πηγαίου κώδικα χρησιμοποιώντας τους συντακτικούς κανόνες της γλώσσα υψηλού επιπέδου. Στην

11 επόμενη ενότητα 6.3 θα δούμε πως ορίζουμε το συντακτικό γλωσσών προγραμματισμού και αργότερα στην 6.4 πώς γίνεται η ανάλυση του συντακτικού. Η Εκτέλεση του Αντικείμενου κώδικα Αφού η μεταγλώττιση και η εκτέλεση είναι ξεχωριστές διαδικασίες, ένα αντικείμενο πρόγραμμα, που έχει παραχθεί από έναν μεταγλωττιστή, μπορεί να εκτελεστεί πολλές φορές. Το μόνο που απαιτείται είναι ένα μέσο αποθήκευσης του αντικείμενου προγράμματος. Γι αυτό το σκοπό χρησιμοποιείται συνήθως η δευτερεύουσα μνήμη του υπολογιστή και μεταφέρεται στην κύρια μνήμη όταν απαιτείται η εκτέλεση του με την βοήθεια του φορτωτή. Μία ακόμη διαφοροποίηση διερμηνέων και μεταγλωττιστών είναι στον τρόπο που αντιμετωπίζουν λάθη κατά την εκτέλεση των προγραμμάτων. Ο διερμηνέας έχει το πηγαίο πρόγραμμα στη διάθεσή του όταν εκτελείται μία μεταφρασμένη εντολή. Αν συμβεί λάθος ο διερμηνέας μπορεί εύκολα να δώσει πληροφορίες για την θέση λάθους και την τρέχουσα κατάσταση υπολογισμού. Επιπλέον οι πληροφορίες αυτές εκφράζονται κατευθείαν με το πηγαίο πρόγραμμα, δηλαδή ποια εντολή εκτελείται και ποιες οι τιμές των δεδομένων. Αντίθετα όταν εκτελείται ένα μεταφρασμένο πρόγραμμα το πηγαίο πρόγραμμα μπορεί να μην είναι διαθέσιμο. Αυτό σημαίνει ότι όταν συμβεί λάθος είναι πολύ δύσκολο να έχουμε σημαντικές πληροφορίες. Εξαιτίας της μεγαλύτερης ικανότητάς του να δίνει πληροφορίες για λάθη, ο διερμηνέας είναι κατάλληλος κυρίως για ανάπτυξη προγράμματος και αποσφαλμάτωση. Αφού το πρόγραμμα διορθωθεί θα πρέπει να μεταγλωττιστεί για να εκτελείται γρηγορότερα, ειδικά αν πρόκειται να εκτελείται συχνά. Έχει υπολογιστεί ότι η εκτέλεση ενός προγράμματος με διερμηνέα είναι 5-10 φορές πιο αργή από την εκτέλεση του αντίστοιχου μεταγλωττισμένου προγράμματος. Οι διερμηνείς χρησιμοποιούνται συνήθως σε περιπτώσεις όπου το πρόγραμμα δεν εκτελείται συχνά, είναι συνήθως μικρά σε μέγεθος και η ταχύτητα εκτέλεσης δεν έχει ιδιαίτερη σημασία (π.χ. σε ένα εκπαιδευτικό περιβάλλον). Οι μεταγλωττιστές χρησιμοποιούνται όταν το πρόγραμμα εκτελείται συχνά ή η ταχύτητα εκτέλεσης είναι σημαντική. ΑΝΑΚΕΦΑΛΑΙΩΣΗ (απαντά στους αρχικούς στόχους) Ο μεταφραστής μεταφράζει προγράμματα γλώσσας υψηλού επιπέδου σε ισοδύναμα προγράμματα εκφρασμένα σε γλώσσα μηχανής. Εντολές υψηλού επιπέδου μεταφράζονται σε αριθμό εντολών γλώσσας μηχανής. Οι δομές δεδομένων υψηλού επιπέδου μετασχηματίζονται σε αναπαράσταση γλώσσας μηχανής. Οι δύο μέθοδοι μετάφρασης προγραμμάτων υψηλού επιπέδου σε γλώσσα μηχανής (διερμηνεία και μεταγλώττιση) διαφοροποιούν τους μεταφραστές σε δύο κατηγορίες, τους διερμηνείς και τους μεταγλωττιστές. Ο διερμηνέας μεταφράζει εντολές μια-μια και τις εκτελεί αμέσως. Ο μεταγλωττιστής μεταφράζει όλο το πρόγραμμα σε γλώσσα μηχανής που κατόπιν εκτελείται. Πλεονεκτήματα και μειονεκτήματα των διερμηνέων και των μεταγλωττιστών: Διερμηνείς Πλεονεκτήματα - Πλήρεις πληροφορίες για λάθη εκτέλεσης Μεταγλωττιστές - Ταχύτητα εκτέλεσης - Κατάλληλοι όταν τα

12 - Κατάλληλοι για ανάπτυξη και αποσφαλμάτωση και εκτέλεση όταν τα προγράμματα δεν τρέχουν συχνά ή η ταχύτητα δεν είναι σημαντική προγράμματα τρέχουν συχνά ή η ταχύτητα είναι σημαντική Μειονεκτήματα - Χαμηλή ταχύτητα εκτέλεσης - Περιορισμένες Πληροφορίες σε λάθη εκτέλεσης Άσκηση 1. Ποια είναι η λειτουργία του μεταφραστή; Η λειτουργία του μεταφραστή γλωσσών προγραμματισμού είναι να μεταφράζει προγράμματα υψηλού επιπέδου σε ισοδύναμα προγράμματα γραμμένα σε γλώσσα μηχανής. Σε ένα πρόγραμμα υψηλού επιπέδου υπάρχουν δύο οντότητες: οι εντολές και οι δομές δεδομένων. Ο μεταφραστής πρέπει να μετασχηματίσει ή να μετατρέψει τις οντότητες υψηλού επιπέδου σε αντίστοιχες ή ισοδύναμες της γλώσσας μηχανής. Άσκηση 2. Συμπληρώστε τις φράσεις με τις λέξεις «μηχανής» ή «υψηλού επιπέδου» Οι αλγόριθμοι υλοποιούνται πιο εύκολα σε γλώσσα... Για να περιγράψουμε μια εντολή γλώσσας.. χρειάζονται πολλές εντολές γλώσσας. Κάθε εντολή γλώσσας.. συνήθως μεταφράζεται σε έναν αριθμό εντολών γλώσσας.. Οι αλγόριθμοι υλοποιούνται πιο εύκολα σε γλώσσα υψηλού επιπέδου. Για να περιγράψουμε μια εντολή γλώσσας υψηλού επιπέδου χρειάζονται πολλές εντολές γλώσσας μηχανής. Κάθε εντολή γλώσσας υψηλού επιπέδου συνήθως μεταφράζεται σε έναν αριθμό εντολών γλώσσας μηχανής. Ερώτηση 3. Ποια η διαφορά διερμηνέα και μεταγλωττιστή; Ο διερμηνέας μεταφράζει εντολές μια-μια και τις εκτελεί αμέσως. Ο μεταγλωττιστής μεταφράζει όλο το πρόγραμμα σε γλώσσα μηχανής που κατόπιν εκτελείται. Ερώτηση 4. Ποια πλεονεκτήματα έχει ένας διερμηνέας και ποια μειονεκτήματα; Πλεονεκτήματα: Δίνει πλήρεις πληροφορίες για λάθη εκτέλεσης και κατά συνέπεια είναι κατάλληλοι για ανάπτυξη και εκσφαλμάτωση. Μειονεκτήματα: Η χαμηλή ταχύτητα εκτέλεσης των προγραμμάτων Ερώτηση 5. Ποια πλεονεκτήματα έχει ένας μεταγλωττιστής και ποια μειονεκτήματα; Πλεονεκτήματα: Η υψηλή ταχύτητα εκτέλεσης των προγραμμάτων. Κατάλληλοι όταν τα προγράμματα τρέχουν συχνά ή η ταχύτητα είναι σημαντική. Μειονεκτήματα: Δεν δίνει πλήρεις πληροφορίες για λάθη εκτέλεσης.

13 Ερώτηση 6. Συμπληρώστε τα κενά με τις λέξεις: εκσφαλμάτωσης, μεταγλωττιστή, διερμηνέα, ανάπτυξης, υψηλού επιπέδου, χαμηλή, γλώσσα μηχανής Για την ανάπτυξη ενός αλγόριθμου σε γλώσσα έχω να επιλέξω ανάμεσα σε έναν διερμηνέα και έναν μεταγλωττιστή. Αποφάσισα να συνδυάσω τα πλεονεκτήματα και των δύο. Έτσι κατά το αρχικό στάδιο της και.. χρησιμοποιώ τον., ώστε να με βοηθάει να εντοπίζω πιο εύκολα τα λάθη. Σε αυτό το στάδιο δεν με ενδιαφέρει η. ταχύτητα εκτέλεσης. Όταν είμαι σίγουρος ότι το πρόγραμμα δεν έχει λάθη το μεταφράζω σε.. χρησιμοποιώντας τον.. Για την ανάπτυξη ενός αλγόριθμου σε γλώσσα υψηλού επιπέδου έχω να επιλέξω ανάμεσα σε έναν διερμηνέα και έναν μεταγλωττιστή. Αποφάσισα να συνδυάσω τα πλεονεκτήματα και των δύο. Έτσι κατά το αρχικό στάδιο της ανάπτυξης και εκσφαλμάτωσης χρησιμοποιώ τον διερμηνέα ώστε να με βοηθάει να εντοπίζω πιο εύκολα τα λάθη. Σε αυτό το στάδιο δεν με ενδιαφέρει η χαμηλή ταχύτητα εκτέλεσης. Όταν είμαι σίγουρος ότι το πρόγραμμα δεν έχει λάθη το μεταφράζω σε γλώσσα μηχανής χρησιμοποιώντας τον μεταγλωττιστή. ΒΙΒΛΙΟΓΡΑΦΙΑ, ΠΗΓΕΣ 1. Εισαγωγή στη Σύγχρονη Επιστήμη των Υπολογιστών, Les Goldschlager & Andew Lister, εκδόσεις Δίαυλος 1994, σελ Compilers: Principles, Techniques and Tools, A. Aho, R. Sethi, J.D.Ullman, Addison Wesley, 1986, σελ TITΛΟΣ ΔΙΔΑΚΤΙΚΗΣ ΕΝΟΤΗΤΑΣ 6.3 Ορισμός Συντακτικού ΠΡΟΑΠΑΙΤΟΥΜΕΝΗ ΓΝΩΣΗ Σχεδίαση Αλγορίθμων (κεφάλαιο 2 του παρόντος μαθήματος) Ενότητα 6.2 του παρόντος κεφαλαίου ΣΥΝΟΨΗ Στην ενότητα αυτή εισάγουμε τον τυπικό ορισμό συντακτικού γλωσσών προγραμματισμού. Παρουσιάζεται ο συμβολισμός BNF, με τον οποίο ορίζεται τυπικά το συντακτικό γλωσσών προγραμματισμού. Δίνονται παραδείγματα BNF. ΓΝΩΣΤΙΚΟΙ ΣΤΟΧΟΙ Ορισμός συντακτικού γλωσσών προγραμματισμού Εισαγωγή στο BNF συμβολισμό Τερματικά και μη τερματικά σύμβολα Κανόνες παραγωγής Αναδρομή στους κανόνες παραγωγής

14 Λέξεις κλειδιά Ορισμός Συντακτικού, BNF Συμβολισμός, Τερματικά σύμβολα, Μη τερματικά σύμβολα, Συντακτικές κατηγορίες, Κανόνες Παραγωγής, Συντακτικό γλώσσας ΚΥΡΙΟ ΜΕΡΟΣ ΔΙΔΑΚΤΙΚΗΣ ΕΝΟΤΗΤΑΣ Εισαγωγή Για να γίνει η μετάφραση προγράμματος γλώσσας υψηλού επιπέδου πρέπει η σύνταξη του να είναι σωστή. Επιπλέον, η μετάφραση σωστών προγραμμάτων εξαρτάται άμεσα από το συντακτικό της γλώσσας υψηλού επιπέδου. Σε αυτήν την ενότητα περιγράφουμε πως μπορεί να καθοριστεί το συντακτικό γλωσσών προγραμματισμού. Σύμβολα και Συντακτικές Κατηγορίες Θυμίζουμε (από τα κεφ. 2 και 3) ότι ένα πρόγραμμα αποτελείται από μια σειρά βασικών συμβόλων όπως τα ονόματα μεταβλητών, κάποια σημεία στίξης, τελεστές και ειδικές λέξεις, όπως if και repeat. Τα επιτρεπόμενα σύμβολα μιας γλώσσας ονομάζονται τερματικά σύμβολα (terminal symbols). Όλα τα σωστά προγράμματα σε αυτή την γλώσσα περιέχουν μόνο τα τερματικά αυτά σύμβολα. Τα τερματικά σύμβολα μπορούν να συνδυαστούν με διάφορους τρόπους για το σχηματισμό προγραμματιστικών δομών, όπως οι συνθήκες (π.χ. X<=5) και οι παραστάσεις (π.χ. a+b*c). Κάθε είδος δομής που κατασκευάζεται με αυτό τον τρόπο ονομάζεται συντακτική κατηγορία (syntactic category) ή μη τερματικό σύμβολο (non-terminal symbol). Συντακτικές κατηγορίες μπορούν να συνδυαστούν με άλλες συντακτικές κατηγορίες ή και με τερματικά σύμβολα για να κατασκευαστούν άλλες ανώτερες συντακτικές κατηγορίες. Π.χ. Οι εντολές ανάθεσης τιμής αποτελούνται από ένα όνομα (το αριστερό μέρος), το σύμβολο απόδοσης (έστω :=) και μια παράσταση (δεξιό μέρος). Η μεγαλύτερη συντακτική κατηγορία, που συνδυάζει έμμεσα ή άμεσα όλες τις υπόλοιπες είναι ολόκληρο το πρόγραμμα. (Υπάρχει μια αναλογία με φυσικές γλώσσες, της οποίας τα τερματικά σύμβολα είναι οι αποδεκτές λέξεις και τα σημεία στίξης γραμματολογικά στοιχεία-, και οι συντακτικές κατηγορίες περιλαμβάνουν φράσεις, όρους και προτάσεις συντακτικά στοιχεία-). Ο συμβολισμός BNF Χρειαζόμαστε τον συντακτικό ορισμό ως την μέθοδο με την οποία κατασκευάζονται επακριβώς οι συντακτικές κατηγορίες μιας γλώσσας. Αυτό γίνεται διατυπώνοντας κανόνες ή παραγωγές (rules ή productions) καθένας από τους οποίους προσδιορίζει πως μπορεί να κτιστεί μια συντακτική κατηγορία από 1. μέλη άλλων συντακτικών κατηγοριών, και/ή 2. τερματικά σύμβολα της γλώσσας. Το σύνολο των τερματικών συμβόλων, των συντακτικών κατηγοριών και των κανόνων προσδιορίζουν το συντακτικό της γλώσσας. Η πρωτοποριακή δουλειά στο συντακτικό των γλωσσών προγραμματισμού έγινε στο τέλος της δεκαετίας του 50 και κορυφώθηκε με την έκδοση της έκθεσης της γλώσσας ALGOL60 το 1960 και Η ALGOL60 ήταν η πρώτη διαδεδομένη γλώσσα προγραμματισμού που το συντακτικό της ορίστηκε με ολοκληρωμένο και τυπικό ορισμό συντακτικού. Η σημειογραφία της έκθεσης ήταν η Backus-Naur Form (BNF) και φέρει τα ονόματα των επινοητών της. Η ίδια σημειογραφία, με μικρές διαφοροποιήσεις, χρησιμοποιήθηκε στη συνέχεια για να οριστεί

15 το συντακτικό πολλών άλλων γλωσσών προγραμματισμού. Η σημειογραφία που θα χρησιμοποιηθεί εδώ είναι μια παραλλαγή της. Παράδειγμα BNF Ως παράδειγμα θα θεωρήσουμε το συντακτικό ορισμό των καταχωρήσεων στον τηλεφωνικό κατάλογο που περιέχει τα ονόματα, διευθύνσεις και τηλέφωνα των συνδρομητών με μια συγκεκριμένη διάταξη. Έστω ότι μια τυπική καταχώρηση στον κατάλογο είναι Σιδηρόπουλος Ιωάννης, Πανεπιστημίου 20, Το συντακτικό των καταχωρήσεων μπορεί να προσδιοριστεί από μια BNF παραγωγή καταχώρηση -> όνομα_προσώπου, διεύθυνση, αριθμός όπου οι συντακτικές κατηγορίες («καταχώρηση», «όνομα_προσώπου» και «διεύθυνση») είναι με πλάγια μορφή, ενώ τα τερματικά σύμβολα («αριθμός» και το «,») σε κανονική. Το σύμβολο «->» ανήκει στην σημειογραφία του συμβολισμού BNF και σημαίνει ότι η συντακτική κατηγορία από τα αριστερά του συνδυάζει συντακτικές κατηγορίες και τερματικά στα δεξιά του. Η παραγωγή μπορεί να διαβαστεί ως εξής: μια καταχώρηση καθορίζεται ως ένα όνομα προσώπου, ακολουθούμενου από κόμμα, ακολουθούμενου από μια διεύθυνση, μετά από κόμμα και τέλος έναν αριθμό. Ξέρουμε ότι ένας αριθμός αποτελείται από συνεχόμενα ψηφία και γι αυτό θεωρούμε ότι είναι τερματικό σύμβολο. Χρειάζεται όμως να καθοριστούν οι κατηγορίες όνομα_προσώπου και διεύθυνση. Για το πρώτο μπορούμε να γράψουμε όνομα_προσώπου -> επίθετο μικρό_όνομα { μικρό_όνομα } Τα άγκιστρα ανήκουν στον συμβολισμό BNF και σημαίνουν ότι η περιεχόμενη κατηγορία ή σύμβολο μπορεί να εμφανιστεί σε εκείνο το σημείο μηδέν ή περισσότερες φορές. Έτσι η παραπάνω παραγωγή μπορεί να διαβαστεί ως: ένα όνομα_προσώπου ορίζεται ως ένα επίθετο ακολουθούμενο τουλάχιστον από ένα μικρό_όνομα. Αν δεχθούμε ότι ένα μικρό όνομα μπορεί να συντμηθεί σε αρχικό γράμμα, ορίζουμε μικρό_όνομα -> κύριο_όνομα αρχικό Η κάθετη γραμμή επίσης ανήκει στον συμβολισμό BNF και σημαίνει διάζευξη. Η παραγωγή διαβάζεται: ένα μικρό_όνομα ορίζεται ως ένα κύριο_όνομα ή ένα αρχικό. Ο ορισμός του αρχικού είναι αρχικό -> κεφαλαίο_γράμμα. Που σημαίνει ότι ένα αρχικό είναι ένα κεφαλαίο γράμμα ακολουθούμενο από μια τελεία (η οποία είναι τερματικό σύμβολο). Ο ορισμός του κεφαλαίου γράμματος είναι φυσικά κεφαλαίο_γράμμα -> Α Β Ω Ο ορισμός των υπόλοιπων συντακτικών κατηγοριών (επίθετο, κύριο όνομα, διεύθυνση) γίνεται με τον ίδιο τρόπο και φαίνεται στο σχήμα καταχώρηση -> όνομα_προσώπου, διεύθυνση, αριθμός όνομα_προσώπου -> επίθετο μικρό_όνομα { μικρό_όνομα } επίθετο -> όνομα μικρό_όνομα -> κύριο_όνομα αρχικό κύριο όνομα -> όνομα αρχικό -> κεφαλαίο_γράμμα. διεύθυνση -> όνομα_οδού αριθμός όνομα_οδού -> όνομα κεφαλαίο_γράμμα -> Α Β Ω Σχήμα Το συντακτικό των καταχωρήσεων σ έναν απλό τηλεφωνικό κατάλογο

16 Ασκήσεις Αυτοαξιολόγησης 1. Ποιοι είναι οι συντακτικοί κανόνες του σχήματος που ορίζουν τις συντακτικές κατηγορίες α. Επίθετο β. Διεύθυνση γ. όνομα α. Ένας κανόνας επίθετο -> όνομα β. Δύο κανόνες διεύθυνση -> όνομα_οδού αριθμός όνομα_οδού -> όνομα γ. Το όνομα δεν είναι συντακτική κατηγορία, αλλά τερματικό. Επομένως δεν αναλύεται με άλλον κανόνα. 2. Ορίστε ένα όνομα όχι ως τερματικό, αλλά ως συντακτική κατηγορία που ξεκινάει με κεφαλαίο γράμμα και συνεχίζει με ένα ή περισσότερα μικρά γράμματα. - αλλάζουμε όπου όνομα σε όνομα (πλάγια γράμματα), και - προσθέτουμε τους κανόνες όνομα -> κεφαλαίο_γράμμα μικρό_γράμμα { μικρό_γράμμα } μικρό_γράμμα -> α β ω (Ο κανόνας για το κεφαλαίο γράμμα ήδη υπάρχει) 3. Γράψτε άλλες καταχωρήσεις σύμφωνα με τους συντακτικούς κανόνες του Οι δυνατότητες είναι άπειρες αφού μπορούμε να γράψουμε οποιοδήποτε όνομα ως επίθετο, μικρό όνομα, όνομα οδού και οποιοδήποτε αριθμό για αριθμό οδού ή τηλεφώνου. Δύο («παράξενες» αλλά συντακτικά σωστές) καταχωρήσεις α) Πανεπιστημίου Ι. Ιωάννης Κ., Σιδηροπούλου , 524 β) Ιωάννης Σιδηρόπουλου Ι. Κ., Ιωάννης 20, Παρατηρούμε ότι με τους συντακτικούς κανόνες του δεν ελέγχουμε τα τηλέφωνα, που πρέπει να έχουν συγκεκριμένα ψηφία, ούτε τα κύρια, μικρά και ονόματα δρόμων, που μπορούν να μπουν σε οποιαδήποτε θέση ονόματος. Το BNF μιας απλής γλώσσας προγραμματισμού Το συντακτικό μιας γλώσσας προγραμματισμού είναι φυσικά πολυπλοκότερο από αυτό του παραδείγματος του τηλεφωνικού καταλόγου, αλλά μπορεί να οριστεί με τον ίδιο τρόπο. Η Pascal για παράδειγμα χρειάζεται εκατό περίπου παραγωγές. Το σχήμα δίνει μια μικρή γεύση ενός συντακτικού ορισμού μιας απλής υποθετικής γλώσσας προγραμματισμού, βασισμένου στην δομή που παρουσιάστηκε στο κεφάλαιο 2. εντολή -> υπό_συνθήκη βρόχος ανάθεση υπό_συνθήκη - > if συνθήκη then εντολή βρόχος -> while συνθήκη do εντολή ανάθεση -> θέσε το όνομα ίσο με έκφραση έκφραση -> όνομα τελεστής όνομα

17 τελεστής -> + συνθήκη -> όνομα σχέση αριθμός σχέση -> = ^= Σχήμα Τμήμα συντακτικού απλής γλώσσας προγραμματισμού Η γλώσσα περιέχει τριών ειδών εντολές: 1. Μια ανάθεση (assignment) που εκφράζει τον υπολογισμό μιας τιμής και την ανάθεση του αποτελέσματος σε ένα δεδομένο. Παραδείγματα ανάθεσης είναι θέσε το Χ ίσο με Υ + Ζ θέσε το NET ίσο με GROSS-TAX 2. Ένας βρόχος (loop) που εκφράζει επανάληψη 3. Μια υπό_συνθήκη (conditional) που εκφράζει επιλογή Οι συντακτικές κατηγορίες υπό_συνθήκη και βρόχος περιέχουν την συντακτική κατηγορία συνθήκη, η οποία αποτελεί έλεγχο της τιμής κάποιου δεδομένου. Παραδείγματα συνθήκης είναι Χ ^= 5 και GROSS=0 Κατά συνέπεια ένα παράδειγμα υπό_συνθήκη εντολής είναι if X^=5 then θέσε το Χ ίσο με Y + Z και παράδειγμα βρόχου το while Χ^=0 do θέσε Χ ίσο με Χ Υ Ασκήσεις Αυτοαξιολόγησης Βάσει των κανόνων του δώστε δύο ακόμη εντολές αναθέσεων Άπειρες εντολές μπορούν να δημιουργηθούν. Δίνουμε δύο θέσε το Χ ίσο με Χ 1 θέσε το Υ ίσο με Χ + Υ 2. δώστε δύο ακόμη συνθήκες Επίσης άπειρες συνθήκες μπορούν να δημιουργηθούν. Δίνουμε δύο Χ=3 και Υ^=0 3. Συνδυάστε τις αναθέσεις και τις συνθήκες και δώστε δύο εντολές υπό_συνθήκη και δύο βρόχους Επίσης άπειρες υπό_συνθήκη και βρόχοι μπορούν να δημιουργηθούν. Δίνουμε δύο παραδείγματα από την κάθε συντακτική κατηγορία συνδυάζοντας τις απαντήσεις στις προηγούμενες δύο ασκήσεις if Χ=3 then θέσε το Υ ίσο με Χ + Υ if Υ^=0 then θέσε το Χ ίσο με Χ 1 while Υ^=0 do θέσε το Υ ίσο με Χ + Υ while Χ=3 do θέσε το Χ ίσο με Χ 1 Αναδρομικοί Ορισμοί Παρατηρούμε ότι ο ορισμός της εντολής στο συντακτικό είναι αναδρομικός, αφού περιέχει συντακτικές κατηγορίες οι οποίες και οι ίδιες ορίζονται με εντολές. Έτσι για

18 παράδειγμα μια εντολή μπορεί να είναι μέρος βρόχου, που (ως εντολή και ο ίδιος) να περιέχεται σε άλλο βρόχο. Αυτό σημαίνει ότι μια εντολή αποτελείται από οποιοδήποτε αριθμό εμφωλιασμένων βρόχων. Όμοια μια εντολή μπορεί να περιέχει οποιοδήποτε αριθμό εμφωλιασμένων υπο_επιλογών, ή και οποιοδήποτε συνδυασμό εμφωλιασμένων βρόχων και υπο_επιλογών. Για παράδειγμα μια έγκυρη εντολή είναι if X^=0 then while Y^=0 do θέσε το Υ ίσο με Υ-Χ Ο αναδρομικός ορισμός είναι ένα πολύ ισχυρό εργαλείο του BNF, αφού επιτρέπει την δημιουργία οποιαδήποτε αριθμό εμφωλιασμένων δομών με σχετικά λίγες παραγωγές. Κατά συνέπεια μπορούμε με αυτές τις λίγες (και φυσικά πεπερασμένες) παραγωγές να περιγράφουμε το συντακτικό άπειρων προγραμμάτων. Σημειώνουμε, ότι οι αναδρομικές παραγωγές πρέπει να περιέχουν τουλάχιστον μία μη αναδρομική εναλλακτική λύση (συγκρίνετε το δρόμο διαφυγής escape route- από τους αναδρομικούς αλγόριθμους στο εδάφιο 2.9). Στο συντακτικό 6.3.2, η ανάθεση είναι ένας μη αναδρομικός ορισμός για την εντολή. Δεν θα ασχοληθούμε λεπτομερέστερα με τον ορισμό του συντακτικού. Ο ενδιαφερόμενος αναγνώστης παραπέμπεται στη βιβλιογραφία ή σε οποιοδήποτε σύγχρονο εγχειρίδιο γλώσσας προγραμματισμού το οποίο περιέχει τον τυπικό ορισμό του συντακτικού της γλώσσας. Η χρήση του ορισμού του συντακτικού στην ανάλυση του συντακτικού θα συζητηθεί στην υπο-ενότητα Ασκήσεις Αυτοαξιολόγησης 1. Συνδυάστε εμφωλιασμένες εντολές υπό_συνθήκη και βρόχους σε εντολές σύμφωνα με τους κανόνες του Άπειρες υπό_συνθήκη και βρόχοι μπορούν να εμφωλιαστούν σε εντολές. Δίνουμε τρία παραδείγματα if Χ=3 then if Υ^=0 then θέσε το Υ ίσο με Χ + Υ while Υ^=0 do if Χ=3 θέσε το Υ ίσο με Χ + Υ if Χ=3 then if Υ^=0 then while Χ=3 do θέσε το Χ ίσο με Χ 1 2. Αναπτύξτε συντακτικό ορισμό της γλώσσας δηλώσεων μεταβλητών της μορφής var x, y, z real Α τρόπος (με αναδρομή) Declaration -> var List real List -> name, List name Β τρόπος (με επανάληψη) Declaration -> var name {, name} real Παρατηρούμε ότι οι δύο συντακτικοί ορισμοί περιγράφουν με διαφορετικό τρόπο, με διαφορετικές συντακτικές κατηγορίες, την ίδια γλώσσα. 3. Πως αλλάζει ο ανωτέρω συντακτικός ορισμός για να δηλώσουμε επίσης τύπους μεταβλητών integer, boolean και char; Επέκταση Α τρόπου Declaration -> var List type List -> name, List name Type -> real integer boolean char

19 Επέκταση B τρόπου Declaration -> var name {, name} type Type -> real integer boolean char ΑΝΑΚΕΦΑΛΑΙΩΣΗ (απαντά στους αρχικούς στόχους) O συντακτικός ορισμός είναι η τυπική μέθοδος με την οποία κατασκευάζονται επακριβώς οι συντακτικές κατηγορίας μιας γλώσσας. Στον συμβολισμό BNF διατυπώνονται κανόνες ή παραγωγές καθένας από τους οποίους προσδιορίζει πως μπορεί να κτιστεί μια συντακτική κατηγορία συνδυάζοντας μέλη άλλων συντακτικών κατηγοριών, και/ή τερματικά σύμβολα της γλώσσας. Στους συνδυασμούς μπορεί α) το ένα σύμβολο να ακολουθεί το άλλο, β) σύμβολα να εμφανίζονται εναλλακτικά και γ) επαναληπτικά. Επίσης μπορεί να εφαρμοστεί αναδρομή στους κανόνες, που είναι ισχυρό στοιχείο του BNF, γιατί με λίγους κανόνες μπορούμε να περιγράψουμε το συντακτικό όλων των προγραμμάτων κάποιας γλώσσας προγραμματισμού. Το σύνολο των τερματικών συμβόλων, των συντακτικών κατηγοριών και των κανόνων προσδιορίζουν το συντακτικό της γλώσσας με ακριβή και αυστηρό τρόπο. ΒΙΒΛΙΟΓΡΑΦΙΑ, ΠΗΓΕΣ 1. Les Goldschlager & Andew Lister, Εισαγωγή στη Σύγχρονη Επιστήμη των Υπολογιστών, εκδόσεις Δίαυλος 1994, σελ A. Aho, R. Sethi, J.D.Ullman, Compilers: Principles, Techniques and Tools, Addison Wesley, 1986, σελ R.L. Backhouse, The syntax of programming languages: theory and practice. Hemel Hempstead: Prentice Hall TITΛΟΣ ΔΙΔΑΚΤΙΚΗΣ ΕΝΟΤΗΤΑΣ 6.4 Μεταγλωττιστές ΠΡΟΑΠΑΙΤΟΥΜΕΝΗ ΓΝΩΣΗ Σχεδίαση Αλγορίθμων (κεφάλαιο 2 του παρόντος μαθήματος) Αρχιτεκτονική Υπολογιστών (κεφάλαιο 4 του παρόντος μαθήματος) Διδακτικές ενότητες ΣΥΝΟΨΗ Εξετάζεται η δομή και η λειτουργία των μεταγλωττιστών σε διαδοχικές φάσεις. Παρουσιάζονται οι τρεις φάσεις της ανάλυσης του πηγαίου κώδικα (λεξική, συντακτική, σημασιολογική), οι τρεις φάσεις της σύνθεσης του αντικείμενου κώδικα (παραγωγή ενδιάμεσου κώδικα, βελτιστοποίηση ενδιάμεσου κώδικα, παραγωγή γλώσσας μηχανής), καθώς επίσης και δύο βοηθητικές φάσεις, η διαχείριση πίνακα συμβόλων και διαχείριση λαθών. Εξετάζουμε την ομαδοποίηση των φάσεων. Επίσης, παρουσιάζουμε βοηθητικά εργαλεία για την ανάπτυξη μεταγλωττιστών και μια ειδική κατηγορία μεταγλωττιστών, τους συμβολομεταφραστές.

20 ΓΝΩΣΤΙΚΟΙ ΣΤΟΧΟΙ Στην ενότητα αυτή θα γνωρίσετε την εσωτερική λειτουργία των μεταγλωττιστών. Θα γνωρίσετε τις φάσεις της μεταγλώττισης, δηλαδή την διαδικασία μετατροπής του πηγαίου κώδικα σε κώδικα μηχανής. Θα γνωρίσετε τις τρεις φάσεις της ανάλυσης ενός πηγαίου προγράμματος Την λεξική ανάλυση, όπου αναγνωρίζονται οι λέξεις του Την συντακτική ανάλυση, όπου προσδιορίζεται η συντακτική δομή του Την σημασιολογική ανάλυση, όπου ελέγχονται μη συντακτικά χαρακτηριστικά του Επίσης θα γνωρίσετε τις τρεις φάσεις της σύνθεσης του κώδικα μηχανής: Την παραγωγή ενός ενδιάμεσου κώδικα για μια αφηρημένη μηχανή Την βελτιστοποίηση του ενδιάμεσου κώδικα, που αφορά το μέγεθος και την ταχύτητα εκτέλεσης του, και Την παραγωγή του τελικού βελτιστοποιημένου κώδικα Επίσης θα γνωρίσετε δύο βοηθητικές φάσεις, που συνεργάζονται με όλες τις άλλες: Την διαχείριση πίνακα συμβόλων, και Την διαχείριση μηνυμάτων λαθών Θα γνωρίσετε διάφορους τρόπους και τους λόγους ομαδοποίησης των φάσεων, εργαλεία κατασκευής μεταγλωττιστών και τους συμβολομεταφραστές, μια ειδική κατηγορία μεταφραστών. Λέξεις κλειδιά Λεξική Aνάλυση, Κουπόνι Συντακτική Aνάλυση, Συντακτικό δένδρο, Σημασιολογική Aνάλυση, Δημιουργία Ενδιάμεσου Kωδικα, Βελτιστοποίηση Eνδιάμεσου Kώδικα, Παραγωγή Tελικού Kωδικα, Διαχείριση Πίνακα Συμβόλων, Διαχείριση λαθών, Γεννήτορας συντακτικών αναλυτών, Μεταγλωττιστής μεταγλωττιστών, Συμβολομεταφραστές ΚΥΡΙΟ ΜΕΡΟΣ ΔΙΔΑΚΤΙΚΗΣ ΕΝΟΤΗΤΑΣ Εισαγωγή H κατασκευή ενός μεταγλωττιστή είναι μια πολύπλοκη διαδικασία. Eιδικά για τους πρώτους μεταγλωττιστές (δεκαετία του 50) απαιτήθηκε τεράστια προσπάθεια. Aναφέρεται ότι ο πρώτος FORTRAN μεταγλωττιστής χρειάστηκε 18 ανθρωποέτη. Aπό τότε αφενός μεν έχουν συστηματικοποιηθεί οι τεχνικές για τον σχεδιασμό των διαφόρων διαδικασιών που εκτελούνται από ένα μεταγλωττιστή και αφετέρου έχουν αναπτυχθεί πολλά εργαλεία λογισμικού. Στην ενότητα 6.2 πήραμε μια γενική εικόνα της διαδικασίας της μετάφρασης ενός προγράμματος από διερμηνείς και μεταφραστές. Το περιεχόμενο αυτής της ενότητας μπορεί να το δει κανείς ως ανάλυση του βήματος: Μετάφρασε την επόμενη εντολή υψηλού επιπέδου που είναι η τρίτη γραμμή των αλγορίθμων για διερμηνείς και μεταγλωττιστές. Η παρουσίαση θα διεξαχθεί στο πλαίσιο των μεταγλωττιστών, αλλά πολλά ισχύουν και για τους διερμηνείς. Οι φάσεις της μεταγλώττισης

21 Τα στάδια της μετάφρασης ενός προγράμματος θα μπορούσαν να χωριστούν σε δύο στην ανάλυση και στη σύνθεση. Kατά την ανάλυση το πρόγραμμα εισόδου διαβάζεται, ελέγχεται η ορθότητά του, αναγνωρίζονται τα συστατικά μέρη του και το πηγαίο πρόγραμμα απεικονίζεται σε εσωτερικές δομές δεδομένων. Κατά την σύνθεση δημιουργείται ένας ενδιάμεσος κώδικας (ένα πρόγραμμα ισοδύναμο με αυτό της εισόδου), ο οποίος βετιστοποιείται, και από αυτόν παράγεται το τελικό πρόγραμμα σε γλώσσα assembler ή γλώσσα μηχανής. Αυτός όμως ο διαχωρισμός είναι πολύ γενικός. Αναλυτικότερα, ένας μεταγλωττιστής μεταφράζει σε διαδοχικές φάσεις. Tο στάδιο της ανάλυσης περιλαμβάνει 3 φάσεις: την Λεξική Aνάλυση, την Συντακτική Aνάλυση και την Σημασιολογική Aνάλυση. Tο στάδιο της σύνθεσης περιλαμβάνει επίσης 3 φάσεις: Δημιουργία Ενδιάμεσου Kωδικα, Βελτιστοποίηση Eνδιάμεσου Kώδικα και Παραγωγή Tελικου Kώδικα. Κάθε φάση μετατρέπει το αρχικό πρόγραμμα από μια απεικόνιση σε μια άλλη ισοδύναμη. Tο σχήμα απεικονίζει τις φάσεις της μετάφρασης.

22 Πηγαίο Πρόγραμμα Σε γλώσσα υψηλού επιπέδου Λεκτικός Αναλυτής Συντακτικός Αναλυτής Διαχείριση Πίνακα Συμβόλων Σημασιολογικός Αναλυτής Παραγωγή Ενδιάμεσου Κώδικα Διαχείριση Λαθών Βελτιστοποίηση Ενδιάμεσου Κώδικα Παραγωγή Τελικού Κώδικα Αντικείμενο Πρόγραμμα σε γλώσσα μηχανής Σχήμα Φάσεις της Μεταγλώττισης Στο σχήμα απεικονίζονται δυο επιπλέον διαδικασίες η Διαχείριση Πίνακα Συμβόλων και η Διαχείριση Λαθών που επικοινωνούν με τις έξι φάσεις που προαναφέραμε. Θα ονομάζουμε και αυτές φάσεις. Στην συνέχεια αναλύουμε την λειτουργία κάθε φάσης.

23 6.4.1 Διαχείριση Πίνακα Συμβόλων Μια σημαντική λειτουργία ενός μεταγλωττιστή είναι να καταγράφει τις μεταβλητές που χρησιμοποιούνται στο πηγαίο πρόγραμμα και να συλλέγει πληροφορίες για τα χαρακτηριστικά των μεταβλητών αυτών. Παραδείγματα χαρακτηριστικών είναι Η θέση στον πηγαίο κώδικα που δηλώθηκε Ο τύπος της μεταβλητής (ακέραιος, πραγματικός, πίνακας, εγγραφή, κλπ) Το πεδίο ισχύος της μεταβλητής (το block που είναι δηλωμένο) Σε περίπτωση procedure ή function τον αριθμό παραμέτρων της Τα χαρακτηριστικά αυτά δεν είναι τα ίδια για όλες τις γλώσσες. Κάθε γλώσσα μπορεί να απαιτεί ιδιαίτερα χαρακτηριστικά. Οι πληροφορίες αποθηκεύονται σε μια δομή, στον πίνακα συμβόλων που επιτρέπει την γρήγορη αναζήτηση κάποιας μεταβλητής καθώς και την αποθήκευση και ανάκτηση πληροφοριών για την μεταβλητή. Κάθε φάση συνεργάζεται με την διαχείριση πίνακα συμβόλων και αποθηκεύει και συμπληρώνει ορισμένα χαρακτηριστικά της μεταβλητής στον πίνακα. Καθώς εξετάζουμε τις φάσεις θα αναφερθούμε στα χαρακτηριστικά που αποθηκεύουν ή ανακτούν από τον πίνακα συμβόλων Αναγνώριση Λαθών και μηνύματα Κάθε φάση μπορεί να διαπιστώσει λάθη. Όταν ένα λάθος αναγνωριστεί δίδεται ένα αντίστοιχο μήνυμα λάθους και πρέπει να αντιμετωπιστεί ώστε να συνεχιστεί η μετάφραση του προγράμματος. Η λειτουργία αυτή ονομάζεται ανάκαμψη από λάθη (error recovery). Κάθε φάση έχει τις δικές της απαιτήσεις για ανάκαμψη. Ένας μεταγλωττιστής που σταματάει στο πρώτο λάθος δεν είναι ιδιαίτερα χρήσιμος, αν και υπάρχουν περιπτώσεις που κάποιος χρήστης θέλει να διορθώνει τα λάθη ένα-ένα καθώς αναγνωρίζονται. Στις περισσότερες περιπτώσεις είναι πιο χρήσιμο να μας δίνονται όλα τα λάθη ώστε να διορθώνονται όλα μαζί. H συντακτική και σημασιολογική ανάλυση αντιμετωπίζουν το μεγαλύτερο μέρος των λαθών Λεξική Ανάλυση (lexical analysis) Στην πρώτη φάση γίνεται η αναγνώριση των συμβόλων ή κουπονιών (tokens) του προγράμματος. Κουπόνι είναι κάθε μια στοιχειώδης νοηματική μονάδα (ένα σύμβολο) που χρησιμοποιεί μια γλώσσα προγραμματισμού π.χ δεσμευμένες λέξεις (reserved words), όπως while, if, ονόματα μεταβλητών, τελεστές (<, <=, :=) κλπ. O λεξικός αναλυτής διαβάζει τους χαρακτήρες του πηγαίου προγράμματος και από αυτούς αναγνωρίζει λεκτικά (lexemes) που ανταποκρίνονται σε σύμβολα (tokens) της γλώσσας. Ο λεξικός αναλυτής απλά φτιάχνει λέξεις από τους χαρακτήρες που πληκτρολογήσαμε. Ο λεξικός αναλυτής είναι όπως ένας ελεγκτής ορθογραφίας, που ελέγχει μόνο την ορθή γραμματική μορφή των λέξεων του κειμένου. Λειτουργίες Λεξικού Αναλυτή Πιο συγκεκριμένα ο λεξικός αναλυτής: 1. Προσδιορίζει αν ένας χαρακτήρας είναι άμεσα τερματικό σύμβολο (π.χ. +, -, ".", ",") ή αν πρέπει να ομαδοποιηθεί με επόμενους του για να σχηματίσουν τερματικό σύμβολο, π.χ. όνομα, αριθμό ή μια δεσμευμένη λέξη. Έτσι αναγνωρίζει σύμβολα όπως το ":=', που αποτελείται από δύο χαρακτήρες και το σύμβολο "begin" που αποτελείται από πέντε. Eπίσης αναγνωρίζει ως όνομα την λέξη GROSS,

24 ομαδοποιώντας τούς πέντε χαρακτήρες (γράμματα) της και ως αριθμό την λέξη 60, ομαδοποιώντας τους δύο χαρακτήρες (ψηφία) της. 2. Εισάγει ονόματα μεταβλητών στον πίνακα συμβόλων. Π.χ. όταν αναγνωρίσει ένα όνομα θα τοποθετήσει στον πίνακα συμβόλων το λεκτικό του αν δεν είναι ήδη στον πίνακα. 3. Απομακρύνει τους συντακτικά πλεονάζοντες χαρακτήρες, όπως πολλαπλά κενά και σχόλια προοριζόμενα για τον αναγνώστη του πηγαίου προγράμματος. 4. Απορρίπτει άσχετα σύμβολα, δηλαδή χαρακτήρες που δεν σχηματίζουν σύμβολα της γλώσσας, ως λάθη στο πηγαίο πρόγραμμα. Ο σχηματισμός κουπονιών Τα τερματικά σύμβολα περνάνε από τον λεξικό στον συντακτικό αναλυτή υπό μορφή κουπονιών (tokens), που μπορούν να έχουν δύο συστατικά: 1. το είδος του τερματικού συμβόλου που παριστάνει το κουπόνι που αναγνωρίστηκε, π.χ. την δεσμευμένη λέξη if, το σύμβολο «+», αριθμό ή όνομα. 2. Σε μερικά σύμβολα θα περιλαμβάνει και κάποια "λεκτική τιμή". Για παράδειγμα, η τιμή ενός αριθμητικού κουπονιού είναι απλά ο αριθμός που παριστάνει. Η τιμή ενός ονόματος είναι το όνομα το ίδιο ή ο δείκτης στον πίνακα συμβόλων όπου έχει εισαχθεί. Ο λεξικός αναλυτής, κατ αναλογία με την γραμματολογική αναγνώριση λέξεων κειμένου, είναι σαν να χαρακτηρίζει με το πρώτο συστατικό μια λέξη ως ρήμα, ουσιαστικό ή συγκεκριμένο σημείο στίξης, κλπ. και με το δεύτερο να δίδει είτε την ίδια την λέξη είτε μια αναφορά της σε λεξικό όπου μπορούμε να βρούμε περισσότερες πληροφορίες. Παράδειγμα Δημιουργίας Κουπονιών Θα εφαρμόσουμε τη λεξική ανάλυση στην εντολή προγράμματος: if X ^= 1 then θέσε το Υ ίσο με X + Y στη γλώσσα που ορίζεται στο σχήμα Αν υποθέσουμε ότι το Χ και το Υ έχουν αποθηκευτεί στις θέσεις 1 και 2 αντίστοιχα του πίνακα συμβόλων, όπως στο σχήμα 6.4.2, ο λεξικός αναλυτής μετασχηματίζει την εντολή στη σειρά των έντεκα κουπονιών <if> <όνομα θέση1> <^=> <αριθμός 1> <then> <θέσε το> <όνομα θέση2> <ίσο με> <όνομα θέση1> <+> <όνομα θέση2> Πίνακας Συμβόλων Θέση Όνομα χαρακτηριστικά 1 Χ 2 Υ 3 Σχήμα Ο Πίνακας Συμβόλων κατά τη λεξική ανάλυση Ας δούμε πως εισάγονται τα ονόματα στον πίνακα συμβόλων. Ο λεξικός αναλυτής αναγνωρίζει σύμβολα όπως if, then, θέσε το, ίσο με, ^= και +, από την ακολουθία των χαρακτήρων τους. Αναγνωρίζει επίσης ότι οι χαρακτήρες Χ και Υ είναι ονόματα, τα οποία αναζητά στον πίνακα συμβόλων. Αν βρει ένα όνομα στον πίνακα συμβόλων, πχ το Χ στη θέση 1, διαμορφώνει το αντίστοιχο κουπόνι, πχ <όνομα θέση1>. Αν δεν το βρει τότε πρώτα εισάγει το όνομα στον πίνακα συμβόλων και μετά διαμορφώνει το κουπόνι.

25 Παράδειγμα γλώσσας δηλώσεων μεταβλητών Η λειτουργία του λεξικού αναλυτή είναι περιορισμένη. Αναγνωρίζει μόνο λέξεις και όχι συνδυασμούς τους. Π.χ. δεν αναγνωρίζει ότι η πιο πάνω εντολή είναι σωστή. Ας δώσουμε ένα ακόμη παράδειγμα. Έστω ότι προσθέτουμε στη γλώσσα μας δηλώσεις μεταβλητών της μορφής: var Χ real; var Υ integer; (δες ασκήσεις 2 και 3 του 6.3.2). Ο λεξικός αναλυτής 1. απλά αναγνωρίζει τα οκτώ σύμβολα με την σειρά που εμφανίζονται 1) var 2) όνομα 3) real 4) ; 5) var 6) όνομα 7) integer 8) ; 2. αναγνωρίζει τα Χ και Υ ως ονόματα και τα εισάγει στον πίνακα συμβόλων στις θέσεις 1 και 2 αντίστοιχα και 3. στέλνει στον συντακτικό αναλυτή τα κουπόνια: <var> <όνομα θέση1> <real> <;> <var> <όνομα θέση2> <integer> <;> Ο λεξικός αναλυτής δεν αναγνωρίζει ότι πρόκειται για δήλωση μεταβλητών και πολύ περισσότερο δεν αναγνωρίζει τον τύπο των μεταβλητών. O συντακτικός αναλυτής θα αναγνωρίσει ότι πρόκειται για συντακτικά σωστή δήλωση και ο σημασιολογικός αναλυτής θα αναγνωρίσει τους τύπους των μεταβλητών. Οι περισσότεροι λεξικοί αναλυτές εκτυπώνουν ή εμφανίζουν στη οθόνη, για διευκόλυνση του προγραμματιστή, το πηγαίο πρόγραμμα όπως αυτό δίδεται. Όποιο λάθος βρεθεί κατά την λεξική ανάλυση ή σε άλλες φάσεις αναφέρεται στην εκτύπωση του προγράμματος. Ασκήσεις Αυτοαξιολόγησης Ερώτηση 1. Στην δήλωση μεταβλητών: var position, initial, rate real; Ποια σύμβολα αναγνωρίζει ο λεξικός αναλυτής, ποια ονόματα εισάγει στον πίνακα συμβόλων και τι κουπόνια στέλνει στον συντακτικό αναλυτή; ο λεξικός αναλυτής αναγνωρίζει επτά σύμβολα 1) var 2) όνομα 3), 4) όνομα 5), 6) όνομα 7) real εισάγοντας τα τρία ονόματα των συμβόλων 2,4,6 στον πίνακα συμβόλων. Πίνακας Συμβόλων Θέση Όνομα χαρακτηριστικά 1 position 2 initial 3 rate 4 ο λεξικός αναλυτής θα στείλει στον συντακτικό αναλυτής τα κουπόνια <var> <όνομα θέση1> <,> <όνομα θέση2> <,> <όνομα θέση3> <real> όπου θέση1, θέση2 και θέση3 είναι οι δείκτες στη θέση του πίνακα συμβόλων όπου έχουν αποθηκευτεί αντίστοιχα οι μεταβλητές position, initial, rate.

26 Ερώτηση 2 Στην εντολή του προγράμματος όπου ήδη έχουν οριστεί οι μεταβλητές position, initial και rate Θέσε position ίσο με initial + 60 ποιά κουπόνια στέλνει ο λεξικός αναλυτής; Διαμορφώνονται επτά κουπόνια: <θέσε> <όνομα θέση1> < ίσο με > <όνομα θέση2> < + > <αριθμός 60> O λεξικός αναλυτής αναγνωρίζει το θέσε ως ειδική λέξη της γλώσσας, τα position και initial ως ονόματα, τους τελεστές ":=" και "+" καθώς και τον αριθμό Συντακτική ανάλυση Εισαγωγή Aκολουθεί η δεύτερη φάση της μεταγλώττισης, η συντακτική ανάλυση (syntax analysis ή parsing). Σκοπός της είναι να αναλύσει το πηγαίο πρόγραμμα, δηλαδή να προσδιορίσει την συντακτική δομή του. Στη φάση αυτή από τη γραμμική έξοδο του λεξικού αναλυτή, την ακολουθία δηλαδή των κουπονιών, δημιουργούνται γραμματικές φράσεις σύμφωνα με τους συντακτικούς κανόνες της γλώσσας (δες 6.3). Συντακτικά δένδρα- Παράδειγμα Συνήθως οι γραμματικές αυτές φράσεις παριστάνoνται με ένα δένδρο το οποίο λέγεται συντακτικό δένδρο (syntax tree ή parse tree) και έχει τα τερματικά σύμβολα στα φύλλα του και στους εσωτερικούς κόμβους συντακτικές κατηγορίες. Για παράδειγμα, το συντακτικό δένδρο που αντιστοιχεί στην καταχώρηση του τηλεφωνικού καταλόγου: Σιδηρόπουλος Ιωάννης Β., Πανεπιστημίου 20, Φαίνεται στο σχήμα Το συντακτικό δένδρο κατασκευάστηκε σύμφωνα με τους συντακτικούς κανόνες του σχήματος

27 Καταχώρηση Όνομα-Προσώπου Διεύθυνση Κύριο όνομα Μικρό όνομα Μικρό όνομα Οδός Αρχικό Όνομα (Σιδηρόπουλος) Όνομα (Ιωάννης) Γράμμα (Β) Όνομα Αριθμός., (Πανεπιστημίου) (20), Αριθμός ( ) Σχήμα Το συντακτικό δένδρο του παραδείγματος καταχώρησης Άλλο Παράδειγμα Συντακτικού Δένδρου Το Σχήμα δείχνει ένα άλλο συντακτικό δένδρο αυτή την φορά της εντολής if Χ^=1 then put Y equal to X + Y με τους συντακτικούς κανόνες του

28 Δήλωση Υπο-συνθήκη Δήλωση Συνθήκη Ανάθεση Σχέση Έκφραση Τελεστής if Όνομα (X) ^= Αριθμός then θέσε το Όνομα Ίσο με Όνομα + Όνομα (1) (Υ) (X) (Υ) Σχήμα Συντακτικό δένδρο εντολής απλής γλώσσας προγραμματισμού Τα δύο συντακτικά δένδρα στα σχήματα και δείχνουν ότι οι συγκεκριμένες ακολουθίες από σύμβολα είναι σωστές για τις αντίστοιχες γλώσσες. Τα συντακτικά δένδρα περιέχουν επίσης πληροφορίες για την δομή της ακολουθίας, δηλαδή όχι μόνο ότι είναι αποδεκτές στις συγκεκριμένες γλώσσες, αλλά δείχνουν και τους κανόνες που εφαρμόζονται. Εναλλακτικός Συμβολισμός BNF Ας θεωρήσουμε τη γλώσσα που προσδιορίστηκε στο Σχήμα 6.3.2, αλλάζοντας όμως τα ελληνικά τερματικά (όνομα, αριθμός) σε αγγλικά (name, num). Τα μη τερματικά σύμβολα έχουν και αυτά μετατραπεί σε αγγλικές συντμήσεις. Τέλος το σύμβολο «->» μετατρέπεται σε «:». Οι αλλαγές γίνονται για να μπορέσετε αργότερα να χρησιμοποιήσετε ένα εργαλείο για την διερεύνηση γραμματικών το οποίο έχει μερικούς περιορισμούς, όπως π.χ. ότι δεν χειρίζεται ελληνικούς χαρακτήρες. Η νέα γραμματική μαζί με την αρχική μορφή για αντιπαράθεση είναι: stat : cond iter assign cond : if c then stat iter : while c do stat assign : put name eq expr expr : name oper name oper : + - c : name rel num rel : = ^= Νέα μορφή γραμματικής εντολή -> υπό_συνθήκη βρόχος ανάθεση υπό_συνθήκη - > if συνθήκη then εντολή βρόχος -> while συνθήκη do εντολή ανάθεση -> θέσε το όνομα ίσο με έκφραση έκφραση -> όνομα τελεστής όνομα τελεστής -> + συνθήκη -> όνομα σχέση αριθμός σχέση -> = ^= Τμήμα συντακτικού απλής γλώσσας προγραμματισμού Σχήμα Νέα μορφή Γραμματικής 6.3.2

29 Το αντίστοιχο συντακτικό δένδρο του σχήματος που παράγει το εργαλείο που προαναφέραμε φαίνεται στο σχήμα Σχήμα Συντακτικό δένδρο εντολής απλής γλώσσας προγραμματισμού που παράγεται από το εκπαιδευτικό εργαλείο Μπορείτε να πειραματιστείτε με το εργαλείο που βρίσκεται στην διεύθυνση Ακολουθεί το εγχειρίδιο χρήσης του. Οδηγός χρήσης Εργαλείου Ανάπτυξης και Διερεύνησης Γραμματικών Η πρώτη επαφή Από την έναρξη της ανάπτυξης του εργαλείου, επιδιώχθηκε ο τρόπος χρήσης του να είναι εύκολος αν όχι προφανής για ένα χρήστη που έχει θεωρητική επαφή με το αντικείμενο. Ο στόχος αυτός μάλλον επετεύχθη, ωστόσο προτιμήσαμε για κάθε ενδεχόμενο να δημιουργήσουμε το μικρό αυτόν οδηγό χρήσης, που μπορεί να επιλύσει οποιαδήποτε απορία. Ανεξαρτήτως του περιβάλλοντος στο οποίο θα αποφασίσει ο χρήστης να χρησιμοποιήσει το εργαλείο, η πρώτη επαφή που θα έχει μαζί του θα γίνει μέσο της κύριας οθόνης:

30 Τα στοιχεία διεπαφής του χρήστη με το εργαλείο φαίνονται στην εικόνα: 1. Editor BNF Γραμματικής: Εδώ βρίσκεται η γραμματική η οποία θα διερευνηθεί στη συνέχεια. Στον editor μπορεί να δημιουργηθεί μια γραμματική εξαρχής από το χρήστη, είτε να μεταφερθεί εκεί ένα από τα έτοιμα παραδείγματα που έχουν προεπιλεγεί. Επίσης μπορείτε να μεταφέρετε κάποια γραμματική με αντιγραφή (copy) και επικόλληση (paste) από οποιοδήποτε έγγραφο, όπως από αυτές εδώ τις σημειώσεις. Υπενθυμίζουμε εδώ ότι μεταξύ οποιοδήποτε συμβόλων στη γραμματική πρέπει να υπάρχει ένα τουλάχιστον κενό. 2. Λίστα Έτοιμων Παραδειγμάτων (Example Preview): Στη Λίστα αυτή απαριθμούνται τα παραδείγματα τα οποία μπορεί να χρησιμοποιήσει ο χρήστης. Το περιεχόμενο αυτών των παραδειγμάτων φαίνεται στο χώρο Χώρος Προεπισκόπησης Παραδειγμάτων: Μέσα σ αυτόν το χώρο μπορεί να δει ο χρήστης το περιεχόμενο του παραδείγματος που είναι εκείνη τη στιγμή επιλεγμένο στη λίστα. Με αυτόν τον τρόπο μπορεί όχι μόνο να δει αν μια γραμματική φαίνεται απλή ή περίπλοκη ανάλογα με τις ανάγκες εξάσκησης που έχει, αλλά να διαβάσει και ένα σχόλιο που υπάρχει στην πρώτη γραμμή του χώρου, στο οποίο ο διδάσκων υποδεικνύει κάποιο-κάποια σημαντικά γνωρίσματα του έτοιμου παραδείγματος. Αφού καταλήξει στο έτοιμο παράδειγμα με το οποίο επιθυμεί να εργαστεί, ο χρήστης μπορεί να το 11

31 μεταφέρει στον editor, είτε κάνοντας διπλό κλικ στο αντίστοιχο στοιχείο της λίστας είτε πιέζοντας το κουμπί Κουμπί Μεταφοράς στον Editor: Με την πίεση αυτού του κουμπιού το παράδειγμα που είναι επιλεγμένο και φαίνεται στην προεπισκόπηση παραδειγμάτων μεταφέρεται στον editor, χωρίς βέβαια την πρώτη γραμμή των σχολίων. Ας σημειωθεί εδώ ότι όταν ο χρήστης μεταφέρει ένα παράδειγμα στον editor, στη συνέχεια είναι ελεύθερος να το τροποποιήσει κατά τις επιθυμίες του, σαν να επρόκειτο για ένα παράδειγμα που δημιούργησε ο ίδιος. 5. Κουμπί Ελέγχου BNF Σύνταξης (Check BNF Syntax): Με την πίεση αυτού του κουμπιού από το χρήστη, το εργαλείο ελέγχει τη γραμματική που βρίσκεται στον editor για βασικά λάθη BNF σύνταξης. Αν δεν βρεθούν τέτοιους είδους σφάλματα π.χ. επαναλαμβανόμενο αριστερό μέρος κανόνων, κύκλοι, όμοιες παραγωγές στον ίδιο κανόνα, τότε ανάλογα με το σημείο από το οποίο καλείται το εργαλείο μέσα στο HTML κείμενο που το συνοδεύει, ενεργοποιούνται κουμπιά που επιτρέπουν στο χρήστη να προχωρήσει σε περαιτέρω διερεύνηση. Σε αντίθετη περίπτωση το σφάλμα που βρέθηκε εμφανίζεται στον χώρο Χώρος Εμφάνισης Σφαλμάτων BNF Σύνταξης (BNF Syntax Errors): Ο χώρος αυτός μένει κενός εκτός της περίπτωσης που βρεθεί λάθος BNF Σύνταξης, οπότε εμφανίζεται εκεί το σχόλιο για το λάθος που βρέθηκε σε κόκκινο φόντο. Ταυτόχρονα φωτίζεται το σημείο της γραμματικής όπου βρέθηκε το σφάλμα. 7. Κουμπί Εμφάνισης Συμβόλων Γραμματικής (Symbols): Με την πίεση του κουμπιού αυτού εμφανίζεται ένα παράθυρο με τα σύμβολα της γραμματικής. Περισσότερες λεπτομέρειες θα βρείτε σε παράγραφο που ακολουθεί. 8. Κουμπί Δημιουργίας Συντακτικού Δέντρου και Αριστερών Παραγωγών (Syntax Tree/Left Productions): Πιέζοντας αυτό το κουμπί, εμφανίζεται ένα παράθυρο όπου ο χρήστης επιλέγοντας τους κατάλληλους κανόνες κατασκευάζει ένα Συντακτικό Δέντρο και παράλληλα μπορεί να βλέπει και τις Αριστερές Παραγωγές.. Περισσότερες λεπτομέρειες θα βρείτε σε παράγραφο που ακολουθεί. 9. Κουμπί Εμφάνισης Ιδιοτήτων και Μετατροπών (Properties/Transformations): Με την πίεση του κουμπιού αυτού εμφανίζεται ένα παράθυρο με τις ιδιότητες (έμμεση και άμεση αναδρομή, δυνατότητα αριστερής παραγοντοποίησης που πιθανώς βρέθηκαν στη γραμματική. Περισσότερές λεπτομέρειες θα βρείτε σε παράγραφο που ακολουθεί. 10. Κουμπί Δημιουργίας Πίνακα (Table Construction): Πιέζοντας αυτό το κουμπί, εμφανίζεται ένα παράθυρο με τις διαδικασίες που μεσολαβούν για να

32 συμπληρωθεί ο πίνακας συντακτικής ανάλυσης. Περισσότερες λεπτομέρειες θα βρείτε σε παράγραφο που ακολουθεί. 11. Κουμπί Ελέγχου Συμβολοσειράς (Parse String): Πιέζοντας αυτό το κουμπί, εμφανίζεται ένα παράθυρο που προτρέπει το χρήστη να εισάγει μια συμβολοσειρά για να ελέγχει αν αυτή παράγεται από την εξεταζόμενη γραμματική. Περισσότερες λεπτομέρειες θα βρείτε σε παράγραφο που ακολουθεί. 12. Κουμπί Αρχικής Σελίδας (Home Page): Με το κουμπί αυτό ο χρήστης επιστρέφει στη σελίδα από την οποία κλήθηκε το εργαλείο και μάλιστα στο ακριβές σημείο της σελίδας όπου έγινε η κλήση. Σημειώνεται ότι κλείνουν και όσα παράθυρα έχουν μείνει ανοικτά λόγω και κατά τη διάρκεια της διερεύνησης. 13. Κουμπί Ακύρωσης (Reset): Όταν πιεστεί αυτό το κουμπί καθαρίζεται το περιεχόμενο του editor και ο χρήστης μπορεί να εισάγει και να ελέγξει μια νέα γραμματική προς εξέταση. 14. Κουμπί Ανάγνωσης (Open): Ανοίγει ένα παράθυρο επιλογής (file dialog) από το οποίο ο χρήστης καλείται τα επιλέξει ένα αρχείο με ένα έτοιμο παράδειγμα γραμματικής. Στη συνέχεια το παράδειγμα αυτό τοποθετείται στον editor για περαιτέρω επεξεργασία. Το κουμπί αυτό (όπως και το κουμπί αποθήκευσης στη συνέχεια) προς το παρόν λειτουργεί ορθώς μόνο στο ειδικό περιβάλλον του appletviewer που παρέχεται μαζί με το JDK(Java Development Kit). 15. Κουμπί Αποθήκευσης (Save As): Όπως και το προηγούμενο, με τη διαφορά ότι μπορεί να αποθηκεύσει το παράδειγμα γραμματικής που υπάρχει τη δεδομένη χρονική στιγμή στον editor σε ένα αρχείο. Ισχύουν οι ίδιοι περιορισμοί με το 14. Στα πλαίσια του εισαγωγικού αυτού μαθήματος θα χρησιμοποιήσετε τις λειτουργίες που έχουν σχέση με τα μέρη 1, 5, 6, 7, 8, εν μέρει το 9 και 11. Πιθανά αν θέλετε να δείτε ορισμένα έτοιμα παραδείγματα τα 2, 3, και 4. Δεν έχει νόημα να χρησιμοποιήσετε πολλές από τις λειτουργίες του 9 και όλες του 10 που αφορούν εξειδικευμένα θέματα. Περισσότερες λεπτομέρειες στην συνέχεια στις αντίστοιχες παραγράφους. Εισαγωγικές Έννοιες Οι γραμματικές τις οποίες χειρίζεται το παρόν εργαλείο ακολουθούν την BNF τυποποίηση με τη διαφορά ότι, για λόγους τόσο απλότητας όσο και συμβατότητας με περαιτέρω επεκτάσεις του, προτιμήθηκε η χρήση της σημειολογίας του μέτα-μεταγλωττιστή YACC (Yet Another Compiler-Compiler). Αυτή η απόφαση οφείλεται στην καθολική αποδοχή του YACC στο χώρο της Πληροφορικής. Τα σύμβολα μιας γραμματικής διακρίνονται σε τερματικά και μη ως εξής:

33 Τερματικά είναι τα βασικά σύμβολα από τα οποία σχηματίζονται οι συμβολοσειρές της γραμματικής. Τα μη τερματικά είναι συντακτικές μεταβλητές που δηλώνουν τις συντακτικές κατηγορίες της γλώσσας. Εξάλλου, επιβάλλουν στη γλώσσα μια ιεραρχική δομή χρήσιμη τόσο για τη συντακτική ανάλυση όσο και για τη μετάφραση. Ένα από τα μη τερματικά σύμβολα ορίζεται ως το αρχικό σύμβολο και το σύνολο των συμβολοσειρών που δηλώνει είναι η γλώσσα που ορίζει η γραμματική. Οι παραγωγές μιας γραμματικής ορίζουν τον τρόπο με τον οποίο μπορούν να συνδυαστούν τα τερματικά και τα μη τερματικά ώστε να σχηματίσουν συμβολοσειρές. Κάθε παραγωγή αποτελείται από ένα μη τερματικό (αριστερό μέρος) συνοδευόμενο από ένα ":" που ακολουθείται από μια σειρά τερματικών και μη συμβόλων (δεξί μέρος). Παραγωγές με το ίδιο αριστερό μέρος ομαδοποιούνται σε έναν κανόνα, με αριστερό μέρος το κοινό αριστερό μέρος των παραγωγών και δεξί μέρος τα δεξιά μέρη των παραγωγών χωρισμένα με " ". Δίνεται για παράδειγμα η γραμματική που περιγράφει αριθμητικές εκφράσεις: E : E + T T T : T * F F F : ( E ) id Στην περίπτωση αυτή οι τρεις γραμμές της γραμματικής ορίζουν έξι παραγωγές E : E + T E : T T : T * F T : F F : ( E ) F : id Στο παράδειγμα αυτό, τα τερματικά σύμβολα είναι τα: {+, *, (, ), id}. Τα μη τερματικά σύμβολα είναι τα: {E, T, F}, ενώ το αρχικό σύμβολο είναι το E (δηλαδή το αρχικό σύμβολο είναι το αριστερό μέρος του πρώτου κανόνα). Αν και έχει επικρατήσει η τάση τα τερματικά σύμβολα μιας γλώσσας να δηλώνονται με μικρούς λατινικούς χαρακτήρες και τα μη τερματικά με κεφαλαίους, στο παρόν εργαλείο η μόνη σύμβαση που τηρείται είναι ότι τα μη τερματικά αρχίζουν με λατινικό γράμμα. Η σειρά των παραγωγών μέσα σε έναν κανόνα δεν έχει σημασία. Αντιθέτως, η σειρά των κανόνων είναι σημαντική, όχι μόνο για την αναγνώριση του αρχικού συμβόλου αλλά και για τον προσδιορισμό και την απαλοιφή των αναδρομών, όπως θα αναλυθεί στη συνέχεια. Υπάρχει η γενική αρχή ότι σύμβολα που εμφανίζονται στο αριστερό μέρος ενός κανόνα γίνονται αποδεκτά μόνον εφόσον έχουν παρουσιαστεί στο δεξί μέρος προηγούμενου κανόνα. Για πρακτικούς λόγους, επιβάλλεται ο διαχωρισμός των συμβόλων με ένα τουλάχιστον κενό. Αυτό γίνεται προκειμένου το εργαλείο να είναι σε θέση να διακρίνει τα σύμβολα της γραμματικής. Εξάλλου, οι παραγωγές μιας γραμματικής γίνονται αποδεκτές για

34 περαιτέρω διερεύνηση μόνον εφόσον είναι ομαδοποιημένες σε κανόνες. Η κενή συμβολοσειρά συμβολίζεται με το null. Σύμβολα, Ιδιότητες και Μετατροπές Είδαμε προηγουμένως ότι με τη βοήθεια του Κουμπιού Εμφάνισης Συμβόλων (7) ο χρήστης μπορεί να έχει μια πλήρη εικόνα των συμβόλων της γραμματικής. Η οθόνη που παρουσιάζεται με την πίεση αυτού του κουμπιού είναι η ακόλουθη: Βλέπει κανείς εύκολα το αρχικό σύμβολο, ενώ, κινούμενος στις αντίστοιχες λίστες μπορεί να έχει πλήρη εικόνα των υπόλοιπων, τερματικών και μη συμβόλων. Συνιστάται μετά την εισαγωγή και τον έλεγχο μιας γραμματικής να ελέγχετε τα σύμβολα της γλώσσας. (Υπενθυμίζουμε εδώ ότι μεταξύ οποιοδήποτε συμβόλων πρέπει να υπάρχει ένα κενό). Συντακτικό Δέντρο και Αριστερές Παραγωγές Πιέζοντας το κουμπί Συντακτικό Δέντρο και Αριστερές Παραγωγές (8) ο χρήστης μπορεί με τους κανόνες που βρίσκονται εκείνη τη χρονική στιγμή στον editor και δεδομένου ότι είναι σωστή η BNF σύνταξη της γραμματικής, να

35 κατασκευάσει ένα συντακτικό δέντρο επιλέγοντας με το ποντίκι ένα κανόνα στη λίστα που βρίσκεται δεξιά στο παράθυρο. Το δέντρο κατασκευάζεται από αριστερά προς τα δεξιά, έτσι υπάρχει ένας τρέχων κόμβος στο δέντρο που έχει χρώμα μπλε και ο χρήστης θα πρέπει να επιλέξει ένα κανόνα που αριστερά του έχει ένα μη τερματικό σύμβολο ίδιο με αυτό που βρίσκεται μέσα στο μπλε τρέχων κόμβο. Οι κόμβοι που περιέχουν τα τερματικά σύμβολα έχουν χρώμα πράσινο ενώ όλοι οι υπόλοιποι ενδιάμεσοι κόμβοι έχουν κίτρινο χρώμα. Αν ο χρήστης κάνει κάποιο λάθος, δηλαδή επιλέξει λάθος κανόνα, εμφανίζεται ένα αντίστοιχο μήνυμα στη κάτω αριστερά περιοχή κειμένου (textarea). Κάτω από τη λίστα με τους κανόνες υπάρχει το κουμπί Undo το οποίο αναιρεί την τελευταία επιλογή κανόνα του χρήστη. Το κουμπί Undo δεν λειτουργεί μόνο για τον τελευταίο κανόνα αλλά μπορεί να αφαιρέσει, από ένα κάθε φορά, όλους τους κανόνες που έχει επιλέξει ο χρήστης και να φτάσει μέχρι και την ρίζα. Κάτω από το κουμπί Undo εμφανίζεται ο τελευταίος κανόνας που εμφανίζεται στο σ. δέντρο. Αυτός ο κανόνας αφαιρείται από το συντακτικό δέντρο αν πατήσει ο χρήστης το κουμπί Undo. Πατώντας το κουμπί Αριστερές Παραγωγές (Left Productions), ανοίγει ένα παράθυρο όπου ο χρήστης μπορεί να βλέπει, παράλληλα με την κατασκευή του συντακτικού δέντρου, και τις αριστερές παραγωγές. Οι αριστερές παραγωγές είναι ένας εναλλακτικός τρόπος (εκτός των συντακτικών δένδρων) να καταγράφουμε πώς παράγουμε βήμα-βήμα με την εφαρμογή των κανόνων την τελική συμβολοσειρά της γλώσσας.

36 Ιδιότητες και Μετατροπές της Γραμματικής Προτού να προχωρήσει κανείς στη διερεύνηση της κατασκευής του Σ.Α. μιας γραμματικής χρειάζεται να ελέγξει αν η γραμματική είναι στη μορφή που απαιτεί η συντακτική ανάλυση από πάνω-προς-τα-κάτω χωρίς οπισθοδρόμιση. Πατάτε το πλήκτρο 9 (properties-transformations). Όταν πιεστεί το κουμπί αυτό, εμφανίζεται το αντίστοιχο παράθυρο:

37 Αν η γραμματική σας είναι στην σωστή μορφή τότε απλά πατάτε OK στο παράθυρο που εμφανίζεται. Αν η γραμματική δεν είναι στη σωστή μορφή χρειάζεται μετατροπές οι οποίες είναι εκτός της ύλης του εισαγωγικού μαθήματος. Αν θέλετε αποδεχτείτε απλά τους μετασχηματισμούς και συνεχίστε. Πρέπει, συγκεκριμένα, να μετασχηματίσει τις (άμεσες και έμμεσες) αριστερές αναδρομές και να κάνει όπου είναι εφικτό αριστερή παραγοντοποίηση. Στον αντίστοιχο χώρο υπάρχουν δύο λίστες με τις άμεσες και τις έμμεσες αναδρομές. Φαίνεται στον τίτλο κάθε περιοχής πόσες άμεσες ή έμμεσες αναδρομές βρέθηκαν. Στην τελευταία περίπτωση υπάρχει και μία περιοχή κειμένου (textarea) όπου, λόγω του ότι σε μία έμμεση αναδρομή οι εμπλεκόμενες παραγωγές είναι πάνω από μία, εμφανίζονται οι παραγωγές αυτές. Στις άμεσες αναδρομές αυτό Δε χρειάζεται, αφού αρκεί να φαίνεται στη λίστα η παραγωγή όπου υπάρχει η άμεση αναδρομή. Η ίδια λογική ακολουθείται και για την επισήμανση της δυνατότητας εφαρμογής αριστερής παραγοντοποίησης: σε μια λίστα φαίνονται οι κανόνες όπου είναι δυνατή η εφαρμογή αυτού του μετασχηματισμού. Στο κάτω μέρος του παράθυρου φαίνεται σε μια περιοχή κειμένου η γραμματική η οποία εξετάζεται για πιθανές μετατροπές, Σημειώνεται πως όταν στο πάνω μέρος έχει επιλεχθεί στην αντίστοιχη λίστα κάποιος μετασχηματισμός, ο κανόνας ή η παραγωγή στην οποία αναφέρεται τονίζεται σε αυτήν την περιοχή κειμένου. Ακριβώς δεξιά αυτής της περιοχής κειμένου υπάρχει μία όμοια: εδώ, αν

38 υπάρχει δυνατότητα μετατροπών-μετασχηματισμών, και με την πίεση ενός ή και των δύο checkbox μεταξύ των περιοχών κειμένου, φαίνεται το αποτέλεσμα της εφαρμογής του μετασχηματισμού στη γραμματική. Ο χρήστης μπορεί με τα αντίστοιχα πλήκτρα να αποδεχθεί ή να ακυρώσει τις τυχόν μετατροπές. Ανάλογα με την επιλογή του, με το κλείσιμο του παράθυρου οι αλλαγές θα έχουν ή όχι αντίκτυπο στο περιεχόμενο του editor. ΠΡΟΣΟΧΗ. Συνιστούμε να αγνοήσετε τα κουμπιά επίδειξης. Αφορούν εξειδικευμένα ζητήματα στα πλαίσια του μαθήματος μεταγλωττιστές. Για αυτόν τον λόγο δεν αναφέρονται περαιτέρω σε αυτό το εγχειρίδιο. Τα κουμπιά αυτά που είναι ισάριθμα (τρία) με τους δυνατούς μετασχηματισμούς, δίνουν στο χρήστη τη δυνατότητα να ανοίξει ένα παράθυρο που θα του αναπαραστήσει οπτικά τη λειτουργία κάθε μετασχηματισμού. Η Δημιουργία του Πίνακα Συντακτικής Ανάλυσης Επίσης συνιστούμε να αγνοήσετε τα κουμπιά Table Construction (10). Αφορούν εξειδικευμένα ζητήματα στα πλαίσια του μαθήματος μεταγλωττιστές. Για αυτόν τον λόγο δεν αναφέρονται περαιτέρω σε αυτό το εγχειρίδιο. Λειτουργία του Συντακτικού Αναλυτή Χρησιμοποιώντας το αντίστοιχο κουμπί της αρχικής οθόνης, ο χρήστης οδηγείται σε ένα παράθυρο από το οποίο προτρέπεται να δώσει προς έλεγχο μία συμβολοσειρά για να ελέγξει αν είναι ή όχι αποδεκτή από το Σ.Α της θεωρούμενης γραμματικής:

39 Μόλις πιέσει το κουμπί Έλεγχος ο χρήστης μαθαίνει με ένα μήνυμα αν η συμβολοσειρά έγινε ή όχι δεκτή. Πατώντας το κουμπί Δέντρο (Tree) μπορεί ο χρήστης να δει το συντακτικό δέντρο της συμβολοσειράς που έχει πληκτρολογήσει και στη συνέχεια να δει και τις αριστερές παραγωγές της. Σε περίπτωση λάθους συμβολοσειράς η συντακτική αναγνώριση θα σταματήσει στο σημείο που διαπιστώθηκε το λάθος και θα εμφανιστεί το ημιτελές δένδρο. Συνιστούμε να μην χρησιμοποιήσετε το πλήκτρο Parsing Demo. Ασκήσεις Αυτοαξιολόγησης 1. Χρησιμοποιήστε το εργαλείο ανάλυσης γραμματικών (πατήστε την URL που ακολουθεί ) για να κατασκευάσετε τo συντακτικό δένδρο των παραδείγματος ώστε να πάρετε την ίδια εικόνα με το Εισάγετε την γραμματική του σχήματος (η ισοδύναμη της 6.3.2) στο παράθυρο εισαγωγής γραμματικής. Μπορείτε να χρησιμοποιήσετε αντιγραφή και επικόλληση. Στην συνέχεια ελέγξτε μορφολογικά την γραμματική με το πλήκτρο Check BNF syntax. Ελέγξτε με το Symbols αν σας δίνει το σωστό αρχικό σύμβολο (stat), τα σωστά υπόλοιπα 7 μη τερματικά σύμβολα (cond, iter, assign, expr, oper, c, rel) και τέλος τα 12 σωστά τερματικά (if, then, while, do, put, eq, name, num, +, -, =, ^=). Αν δεν πάρετε τα σωστά σύμβολα αντιπαραβάλετε την γραμματική με την Στην

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

Διαβάστε περισσότερα

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου Λογισμικό Συστήματος Κλειώ Σγουροπούλου Λογισμικό συστήματος Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς (interpreters) Μεταγλωττιστές (compilers) Εκδότες (editors) Φορτωτές (loaders)

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ Η έννοια του προγράμματος

Διαβάστε περισσότερα

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Κεφάλαιο 2: Μεταφραστές

Κεφάλαιο 2: Μεταφραστές Κεφάλαιο 2: Μεταφραστές Αρχές Γλωσσών και Προγραμματισμού Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ ΥΛΟΠΟΙΗΣΗΣ ΜΕΤΑΦΡΑΣΤΗ (Implementation) L Y ΤΕΛΙΚΗ ΓΛΩΣΣΑ (Target) L T Αρχικό Πρόγραμμα

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 1 ο Γλώσσα - Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση αλγορίθμων Ευκολία χρήσης Ακρίβεια και πληρότητα περιγραφής, όχι διφορούμενη! Μία περιγραφή για όλες τις μηχανές Μετάφραση

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

Διαβάστε περισσότερα

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,

Διαβάστε περισσότερα

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ Σκοπός: Το μάθημα αυτό αναφέρεται: 1 Ο Εργαστηριακό Μάθημα Εισαγωγή Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών Στα στάδια της μεταγλώττισης Θεωρία Πρόλογος Αφιερώνεται το πρώτο εργαστηριακό

Διαβάστε περισσότερα

Εισαγωγή στον προγραμματισμό

Εισαγωγή στον προγραμματισμό Ενότητες: Εισαγωγή στον προγραμματισμό Η έννοια του προγράμματος Ιστορική αναδρομή Φυσικές και τεχνητές γλώσσες Τεχνικές σχεδίασης προγραμμάτων Ιεραρχική Σχεδίαση Τμηματικός Προγραμματισμός Δομημένος προγραμματισμός

Διαβάστε περισσότερα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

Διαβάστε περισσότερα

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 2: Mεταφραστές Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ

Διαβάστε περισσότερα

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού

Διαβάστε περισσότερα

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος.

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος. Αλγόριθμος Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος. Εντολές ή οδηγίες ονομάζονται τα βήματα που αποτελούν έναν αλγόριθμο.

Διαβάστε περισσότερα

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

Διαβάστε περισσότερα

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

Διαβάστε περισσότερα

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού. Κεφάλαιο 6 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία σημαντικά στάδια : Σον ακριβή προσδιορισμό του προβλήματος Σην ανάπτυξη του αντίστοιχου αλγορίθμου

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ Κ Υ Κ Λ Ο Υ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Κ Α Ι Υ Π Η Ρ Ε Σ Ι Ω Ν Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Η

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία σημαντικά στάδια: 1. Τον ακριβή προσδιορισμό του προβλήματος. 2. Την ανάπτυξη

Διαβάστε περισσότερα

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το Σηµαντικά σηµεία κεφαλαίου Τα τρία στάδια επίλυσης ενός προβλήµατος: Ακριβής προσδιορισµό του προβλήµατος Ανάπτυξη του αντίστοιχου αλγορίθµου. ιατύπωση του αλγορίθµου σε κατανοητή µορφή από τον υπολογιστή.

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Γλώσσες Προγραμματισμού Μεταγλωττιστές Γλώσσες Προγραμματισμού Μεταγλωττιστές Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γλώσσες Προγραμματισμού Εισαγωγικά Γλώσσα Μηχανής Γλώσσες υψηλού επιπέδου Μεταγλωττιστές

Διαβάστε περισσότερα

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1 Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1 6.3 Φυσικές και τεχνητές γλώσσες Μια γλώσσα γενικά προσδιορίζεται από: 1. Το αλφάβητο: το σύνολο των στοιχείων που χρησιμοποιεί

Διαβάστε περισσότερα

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program) Μεταφραστές Εισαγωγή (source program) Τελικό πρόγραµµα (object program) Γιώργος Μανής Γλώσσες Είδη Μεταγλωττιστών Αρχική γλώσσα Γλώσσα υλοποίησης Τελική γλώσσα Απλοί µεταγλωττιστές Αντίστροφοι µεταγλωττιστές

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια. ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια. Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου.

Διαβάστε περισσότερα

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

Διαβάστε περισσότερα

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

Μεταγλωττιστές Ενότητα 1: Εισαγωγή Μεταγλωττιστές Ενότητα 1: Εισαγωγή Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

Διαβάστε περισσότερα

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1 ΚΕΦΑΛΑΙΟ 7 ο ΠΡΟΓΡΑΜΜΑ : Το πρόγραμμα αποτελείται από μια σειρά οδηγιών, που ονομάζονται εντολές, για την εκτέλεση τέτοιου είδους πράξεων, καθώς επίσης και από ένα σύνολο πρόσθετων οδηγιών ελέγχου, που

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Δοκιμή Έλεγχος Αλγορίθμου Για να

Διαβάστε περισσότερα

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Προτεινόμενα θέματα εξετάσεων Εργαστήριο Μέρος 1 ό ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Ιανουάριος 2011 Καλογιάννης Γρηγόριος Επιστημονικός/ Εργαστηριακός

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Στόχοι του μαθήματος Μετά το τέλος του μαθήματος οι μαθητές πρέπει να είναι σε θέση: Να περιγράφουν τι είναι πρόγραμμα Να εξηγούν την αναγκαιότητα για τη δημιουργία γλωσσών

Διαβάστε περισσότερα

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ - ΓΛΩΣΣΑ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ - ΓΛΩΣΣΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τεχνικές Σχεδίασης Αλγορίθμων Εισαγωγή στον Προγραμματισμό - ΓΛΩΣΣΑ Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών ο Θέμα 1 Α. α) Ποια είναι

Διαβάστε περισσότερα

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

Διαβάστε περισσότερα

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ 2.3.1.1. Παπαγιάννη Νάσια Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών ΕΜΠ 1 περιλαμβάνει: Η έννοια του προγράμματος Επίλυση προβλήματος 1. Ακριβή προσδιορισμό

Διαβάστε περισσότερα

Θεωρία Προγραμματισμού

Θεωρία Προγραμματισμού Θεωρία Προγραμματισμού 1) Τι ονομάζουμε Αλγόριθμο; Ονομάζεται μια ακολουθία από πεπερασμένο αριθμό εντολών, που αν εκτελεστούν με ακρίβεια, οδηγούν στη πραγματοποίηση μιας εργασίας. 2) Τι ονομάζουμε ανάλυση

Διαβάστε περισσότερα

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

Διαβάστε περισσότερα

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών

Προγραμματισμός Υπολογιστών Προγραμματισμός Υπολογιστών Βασικές γνώσεις Κ. Βασιλάκης, ΣΤΕΦ, ΤΕΙ Κρήτης Η Πληροφορική και τα εργαλεία της Παροχή έγκαιρης και έγκυρης πληροφόρησης. Καταχώριση στοιχείων Αποθήκευση Επεξεργασία ψηφιακών

Διαβάστε περισσότερα

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada

Διαβάστε περισσότερα

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

Διαβάστε περισσότερα

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY Mία γλώσσα προγραμματισμού συνίσταται από ένα περιορισμένο υποσύνολο της αγγλικής γλώσσας και το οποίο αποτελείται από εκφράσεις σαφώς ορισμένες, χωρίς παρερμηνεία.

Διαβάστε περισσότερα

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 2 Ο Εργαστηριακό Μάθημα Λεξική Ανάλυση Σκοπός: Το μάθημα αυτό αναφέρεται: Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση Στη δήλωση ορισμό κανονικών εκφράσεων Θεωρία Πρόλογος

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Εισαγωγή ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Όπως για όλες τις επιστήμες, έτσι και για την επιστήμη της Πληροφορικής, ο τελικός στόχος της είναι η επίλυση προβλημάτων. Λύνονται όμως όλα τα προβλήματα;

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής

Διαβάστε περισσότερα

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος. ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος 1 2 3 Εικόνα 43: Διάφορες πλακέτες υπολογιστών Μέσα σε δύο

Διαβάστε περισσότερα

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό ΚΕΦΑΛΑΙΟ VI Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου σημαντικά στάδια. Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου.

Διαβάστε περισσότερα

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις Προγραµµατισµός Η/Υ Ανασκόπηση - Ορισµοί Περιεχόµενα Ο κύκλος ανάπτυξης προγράµµατος Περιγραφή προβλήµατος Ανάλυση προβλήµατος Λογικό ιάγραµµα Ψευδοκώδικας Κωδικοποίηση Συντήρηση Γλώσσες Προγραµµατισµού

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού» ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραµµατισµού 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας 1 6.1 Γενιές γλωσσών προγραµµατισµού 2 Δεύτερη γενιά: γλώσσα assembly Ένα µνηµονικό σύστηµα για την αναπαράσταση προγραµµάτων

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

6. Εισαγωγή στον προγραµµατισµό

6. Εισαγωγή στον προγραµµατισµό 6. Εισαγωγή στον προγραµµατισµό 6.1 Η έννοια του προγράµµατος. 6.2 Ιστορική αναδροµή. 6.2.1 Γλώσσες µηχανής. ΗΜ04-Θ1Α 1. Ένα πρόγραµµα σε γλώσσα µηχανής είναι µια ακολουθία δυαδικών ψηφίων. 5. Ένα πρόγραµµα

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ Εισαγωγή στις Αρχές της επιστήμης των ΗΥ Ερωτήσεις και ασκήσεις για επανάληψη 1. Τι είναι πρόβλημα (σελ 14) 2. Ποιες είναι οι κατηγορίες προβλημάτων με βάση την επίλυση; Δώστε τον ορισμό για κάθε μια κατηγορία.

Διαβάστε περισσότερα

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Προγραµµατισµός Η/Υ Ο προγραµµατισµός είναι η διατύπωση του αλγορίθµου σε µορφή κατανοητή από τον Η/Υ ώστε να τον εκτελέσει («τρέξει» όπως λέµε στην ορολογία της

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης ΠΕΡΙΕΧΟΜΕΝΑ Εντολές επιλογής Εντολές επανάληψης Εισαγωγή Στο προηγούμενο κεφάλαιο αναπτύξαμε προγράμματα, τα οποία ήταν πολύ απλά και οι εντολές των οποίων εκτελούνται η μία μετά την άλλη. Αυτή η σειριακή

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΣΚΗΣΕΙΣ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΩΤΗΣΕΙΣ ΣΩΣΤΟ ΛΑΘΟΣ Σημειώστε αν είναι σωστή ή

Διαβάστε περισσότερα

6. 1 Η έννοια του προγράμματος

6. 1 Η έννοια του προγράμματος 6. 1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία στάδια. 1.Τον ακριβή προσδιορισμό του προβλήματος. 2.Την ανάπτυξη του αντίστοιχου αλγορίθμου. 3.Τη διατύπωση

Διαβάστε περισσότερα

Προγραμματισμός I (Θ)

Προγραμματισμός I (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός I (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Οκτώβριος 2017 Δρ. Δημήτρης Βαρσάμης Οκτώβριος

Διαβάστε περισσότερα

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΕΡΛΙΑΟΥΝΤΑΣ ΣΤΕΦΑΝΟΣ, ΠΕ19 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι 3. Αλγόριθμοι 2 3. Αλγόριθμοι 3.1 Η έννοια του αλγορίθμου 3.2 Χαρακτηριστικά αλγορίθμου 3.3 Ανάλυση αλγορίθμων

Διαβάστε περισσότερα

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

Διαβάστε περισσότερα

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ 9.1 Εντολές Εισόδου/εξόδου Στην Pascal, 1. Tα δεδομένα των προγραμμάτων λαμβάνονται: είτε από το πληκτρολόγιο είτε από ένα αρχείο με τη χρήση των διαδικασιών read και readln,

Διαβάστε περισσότερα

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή Αντίρριο, 05/04/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» To δεύτερο μέρος της εργασίας έχει ως στόχο την ανάπτυξη του συντακτικού αναλυτή με χρήση του bison / byacc. Στο

Διαβάστε περισσότερα

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE ΕΡΓΑΣΤΗΡΙΟ 7 Ο Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE Βασικές Έννοιες: Δομή Επανάληψης, Εντολές Επανάληψης (For, While do, Repeat until), Αλγόριθμος, Αθροιστής, Μετρητής, Παράσταση

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΘΕΜΑ 1 ο : Α. Να αναφέρετε ονομαστικά τις βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων. Μονάδες 8 Β. Στον

Διαβάστε περισσότερα

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΠΡΟΓΡΑΜΜΑ ΠΑΙΔΑΓΩΓΙΚΗΣ ΚΑΤΑΡΤΙΣΗΣ 2 η ΕΡΓΑΣΙΑ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ ΠΑΡΑΤΗΡΗΣΕΙΣ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΠΡΟΓΡΑΜΜΑ ΠΑΙΔΑΓΩΓΙΚΗΣ ΚΑΤΑΡΤΙΣΗΣ 2 η ΕΡΓΑΣΙΑ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ ΠΑΡΑΤΗΡΗΣΕΙΣ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ ΠΑΡΑΤΗΡΗΣΕΙΣ (υποχρεωτικές για τον/την επόπτη/τρια) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΠΡΟΓΡΑΜΜΑ ΠΑΙΔΑΓΩΓΙΚΗΣ ΚΑΤΑΡΤΙΣΗΣ 2 η ΕΡΓΑΣΙΑ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ ΣΤΟΙΧΕΙΑ ΑΣΚΗΣΗΣ Επώνυμο: ΣΕΪΤΑΡΙΔΗΣ Όνομα: ΝΙΚΟΛΑΟΣ

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

Διαβάστε περισσότερα

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος Η έννοια του προβλήματος 1. Αναφέρετε μερικά από τα προβλήματα που συναντάτε στην καθημερινότητά σας. Απλά προβλήματα Ποιο δρόμο θα ακολουθήσω για να πάω στο σχολείο; Πως θα οργανώσω μια εκδρομή; Πως θα

Διαβάστε περισσότερα

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888 ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό

Διαβάστε περισσότερα

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός: Θέμα 1ο Α) Απαντήστε στις παρακάτω ερωτήσεις επιλέγοντας Σ (Σωστό) ή Λ (Λάθος). 1. Ένας πίνακας έχει σταθερό μέγεθος, αλλά μεταβαλλόμενο

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος Κεφάλαιο 1 1. Πρόβλημα είναι μια μαθηματική κατάσταση που πρέπει να αντιμετωπίσουμε 2. Αν υποβάλλουμε τα δεδομένα σε επεξεργασία παίρνουμε πληροφορίες 3. Ο υπολογιστής

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Κεφάλαιο 6 «Εισαγωγή στον Προγραμματισμό» Στέφανος Ουγιάρογλου Διαφάνειες από υλικό του Χ. Μουρατίδη Προγραμματισμός Η/Υ Ο προγραμματισμός είναι η διατύπωση

Διαβάστε περισσότερα

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Μεταβλητές 2 Δήλωση μεταβλητών Η δήλωση (declaration) πληροφορεί το μεταγλωττιστή για το όνομα και

Διαβάστε περισσότερα