Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Β΄ ΠΛΗΡΟΦΟΡΙΚΗΣ 3.6 ΔΙΑΔΙΚΑΣΙΑ ΣΥΓΓΡΑΦΗΣ, ΜΕΤΑΦΡΑΣΗΣ ΚΑΙ ΕΚΤΕΛΕΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ 3.6.1 Διερμηνευτής και Μεταγλωττιστής
Για να αναπαρασταθούν οι αλγόριθμοι σε μορφή κατανοητή από τον υπολογιστή αναπτύσσονται προγράμματα Πρόγραμμα είναι το σύνολο των εντολών που χρειάζεται να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος
προγραμματιστές : άτομα που γράφουν και συντάσσουν ένα πρόγραμμα προγραμματισμός : η εργασία σύνταξης των προγραμμάτων σε κάποια γλώσσα προγραμματισμού προγραμματιστές : άτομα που γράφουν και συντάσσουν ένα πρόγραμμα Αλγόριθμος + Δομές Δεδομένων = προγράμματα
Τεχνητές Γλώσσες: Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη μηχανή (υπολογιστή). Ο υπολογιστής κάνει στοιχειώδεις ενέργειες σε ακολουθίες των δύο ψηφίων 0 και 1 (δυαδικά ψηφία, bits), αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα
Συγκεκριμένα μπορεί να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων, να τις ανακτά, να κάνει στοιχειώδεις αριθμητικές πράξεις με αυτές και να τις συγκρίνει. Ο υπολογιστής εκτελεί 3 μόνο πράξεις: Πρόσθεση Μεταφορά δεδομένων Σύγκριση δεδομένων
4 γενιές γλωσσών προγραμματισμού Γλώσσα Μηχανής Συμβολική Γλώσσα ή Γλώσσες Χαμηλού Επιπέδου Γλώσσες Υψηλού Επιπέδου Γλώσσες 4ης Γενιάς
1. Γλώσσα μηχανής Ακολουθίες δυαδικών ψηφίων, που αποτελούν εντολές προς τον επεξεργαστή για στοιχειώδεις λειτουργίες.
1. Γλώσσα μηχανής επίπονος τρόπος γραφής προγραμμάτων ελάχιστοι μπορούν να τον κατανοήσουν και να τον υλοποιήσουν απαιτεί βαθιά γνώση του υλικού και της αρχιτεκτονικής του υπολογιστή Δυσκολία στην απομνημόνευση εντολών Συχνά λάθη με δύσκολο εντοπισμό αυτών
2. Συμβολικές Γλώσσες χρήση εντολών που αποτελούνται από συμβολικά ονόματα τα οποία αντιστοιχούν σε εντολές της γλώσσας μηχανής. assembly
2. Συμβολικές Γλώσσες Το έργο της μετάφρασης των εντολών σε γλώσσα μηχανής το αναλαμβάνει ένα ειδικό πρόγραμμα, ο συμβολομεταφραστής (assembler)
2. Συμβολικές Γλώσσες Μακροσκελή προγράμματα Στενά συνδεδεμένα με την αρχιτεκτονική του υπολογιστή Όχι δυνατότητα μεταφερσιμότητας
3. Γλώσσες Υψηλού Επιπέδου
3. Γλώσσες Υψηλού Επιπέδου Οι γλώσσες Υψηλού επιπέδου χρησιμοποιούν ως εντολές απλές λέξεις της αγγλικής γλώσσας ακολουθώντας αυστηρούς κανόνες σύνταξης, οι οποίες μεταφράζονται από τον ίδιο τον υπολογιστή σε γλώσσα μηχανής
3. Γλώσσες Υψηλού Επιπέδου είναι φυσικότερος και πιο ανθρώπινος ο τρόπος έκφρασης των προβλημάτων «μεταφερσιμότητα»: εκτέλεση προγραμμάτων σε οποιοδήποτε υπολογιστή εύκολη εκμάθηση εύκολη διόρθωση λαθών εύκολη συντήρηση των προγραμμάτων
Γλώσσες 4ης γενιάς Προγραμματιστικά εργαλεία που αποκρύπτουν τις τεχνικές λεπτομέρειες Δεν απευθύνονται σε προγραμματιστές Υλοποίηση απλών εφαρμογών SQL – Γλώσσα Ερωταποκρίσεων
ΕΙΔΙΚΟ ΜΕΤΑΦΡΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΓΛΩΣΣΑ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ ΕΙΔΙΚΟ ΜΕΤΑΦΡΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΣΥΜΒΟΛΙΚΗ ΓΛΩΣΣΑ ΣΥΜΒΟΛΟΜΕΤΑΦΡΑΣΤΗΣ ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ
Πηγαίο πρόγραμμα το πρόγραμμα που γράφεται σε κάποια γλώσσα προγραμματισμού Για την σύνταξη του πηγαίου προγράμματος χρησιμοποιείται ένα ειδικό πρόγραμμα ο συντάκτης
ΠΗΓΑΙΟ ΠΡΟΓΡΑΜΜΑ ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ Το πηγαίο πρόγραμμα πρέπει να μετατραπεί σε μορφή εκτελέσιμη από τον υπολογιστή δηλαδή σε γλώσσα μηχανής Αυτό γίνεται από ειδικά μεταφραστικά προγράμματα: Μεταγλωττιστής Διερμηνευτής
Μεταγλωττιστής
Διερμηνευτής Διαβάζει μία προς μία τις εντολές του πηγαίου προγράμματος για κάθε μία εκτελεί μία ισοδύναμη ακολουθία εντολών μηχανής
ΠΛΕΟΝΕΚΤΗΜΑΤΑ - ΜΕΙΟΝΕΚΤΗΜΑΤΑ Η εκτέλεση ενός προγράμματος με μεταγλωττιστή είναι πιο γρήγορη Η εκτέλεση με Διερμηνευτή διευκολύνει τον εντοπισμό των συντακτικών- λογικών λαθών Για αυτό προτιμάται η συγγραφή ενός προγράμματος να γίνεται με Διερμηνευτή και η παραγωγή του τελικού εκτελέσιμου να γίνεται με Μεταγλωττιστή
Διερμηνευτής Python Η Python αποτελεί γλώσσα με δυνατότητα τα προγράμματά της να εκτελούνται από διερμηνευτή Υπάρχουν δύο τρόποι χρήσης του διερμηνευτή: διαδραστική λειτουργία (interactive mode) σεναριακή λειτουργία (script mode)
Διερμηνευτής Python Στην διαδραστική λειτουργία, πληκτρολογούμε προγράμματα σε Python και ο διερμηνέας εμφανίζει το αποτέλεσμα: Όταν πληκτρολογήσουμε 15 + 1, ο διερμηνέας ελέγχει την έκφραση, την μεταφράζει ώστε να εκτελεστεί και στην οθόνη εμφανίζεται το αποτέλεσμα 16. Το σύμβολο, >>>, είναι ο προτροπέας (prompt) που χρησιμοποιεί ο διερμηνευτής για να υποδείξει ότι είναι έτοιμος.
Διερμηνευτής Python Εναλλακτικά, μπορούμε να αποθηκεύσουμε κώδικα σε ένα φάκελο και να χρησιμοποιήσουμε το διερμηνέα για να εκτελέσει τα περιεχόμενα του φακέλου, το οποίο ονομάζεται ένα σενάριο
Βιβλιοθήκες Συλλογή από έτοιμα υποπρογράμματα που μπορούν να χρησιμοποιηθούν στη συγγραφή καινούργιων προγραμμάτων Επαναχρησιμοποίηση έτοιμου κώδικα Πλεονεκτήματα: Περιορίζει τα λάθη Μειώνει το χρόνο που απαιτείται για την συγγραφή ενός προγράμματος
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Β΄ ΠΛΗΡΟΦΟΡΙΚΗΣ 3.6 ΔΙΑΔΙΚΑΣΙΑ ΣΥΓΓΡΑΦΗΣ, ΜΕΤΑΦΡΑΣΗΣ ΚΑΙ ΕΚΤΕΛΕΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ 3.6.2 Είδη Σφαλμάτων στον Προγραμματισμό
Λάθη στον προγραμματισμό ΣΥΝΤΑΚΤΙΚΑ Εμφανίζονται κατά την μετάφραση Αναγραμματισμοί εντολών, παράληψη δήλωσης μεταβλητών Ανιχνεύονται από τον μεταφραστή και εμφανίζονται κατάλληλα διαγνωστικά μηνύματα ΛΟΓΙΚΑ Εμφανίζονται κατά την εκτέλεση Αφορά σφάλματα στην υλοποίηση του αλγορίθμου Το αποτέλεσμα δεν είναι σωστό Είναι πιο δύσκολο να ανιχνευθούν
Συντακτικά Λάθη Λάθος στη σύνταξη του προγράμματος (στη δομή και στους κανόνες αυτής) Ο διερμηνευτής εμφανίζει κατάλληλο μήνυμα λάθους Π.χ X=inpyt(‘Δώσε αριθμό’) mo = ( b1 + b2 ) \ 2
Σφάλματα χρόνου εκτέλεσης Παράγονται από τον διερμηνευτή αν πάει κάτι στραβά κατά την εκτέλεση του προγράμματος Εμφανίζει μήνυμα λάθους που περιέχει πληροφορίες σχετικά με το που συνέβη το σφάλμα και τι συναρτήσεις εκτελούνταν Π.χ. εξαντλήθηκε η μνήμη δεν έγινε σωστός χειρισμός και απαιτείται άπειρος χρόνος κ.ά.
Σημασιολογικά ή λογικά Σφάλματα Οι εντολές εκτελούνται αλλά το αποτέλεσμα δεν είναι σωστό Δυσκολότερη κατηγορία σφαλμάτων Π.χ. mo = B1 + B2 / 2
Συνηθισμένα συντακτικά λάθη στην Python Κεφαλαία αντί μικρά γράμματα Διπλά και μονά εισαγωγικά Κάτω παύλα _ και μεσαία παύλα – Χρήση ελληνικών χαρακτήρων Ταίριασμα παρενθέσεων (),{},[] Κενά διαστήματα Ορθογραφία εντολών Έτοιμος κώδικας από διαφορετικές εκδόσεις της Python