📌 Στάδια Επίλυσης Προβλήματος με Υπολογιστή

Τα τρία στάδια επίλυσης ενός προβλήματος με τον υπολογιστή είναι:

  1. Ο ακριβής προσδιορισμός του προβλήματος. Πρέπει να κατανοήσουμε πλήρως τι ζητάει η εκφώνηση και να ορίσουμε τα δεδομένα, τα ζητούμενα και τους περιορισμούς.
  2. Η ανάπτυξη του αντίστοιχου αλγορίθμου. Σχεδιάζουμε τη λύση με έναν αλγόριθμο, χρησιμοποιώντας ψευδοκώδικα, λογικά διαγράμματα ή άλλες τεχνικές.
  3. Η διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον υπολογιστή. Αυτό είναι το στάδιο του προγραμματισμού, όπου ο αλγόριθμος μετατρέπεται σε πρόγραμμα γραμμένο σε κάποια γλώσσα προγραμματισμού.

📌 Τι είναι ο Προγραμματισμός;

Προγραμματισμός είναι η διαδικασία που γίνεται για τη δημιουργία του προγράμματος, δηλαδή το σύνολο των εντολών που πρέπει να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος.

Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση ότι οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα. Στην πραγματικότητα, ο υπολογιστής μπορεί απλά να:

  • Αποθηκεύει στη μνήμη ακολουθίες δυαδικών ψηφίων
  • Τις ανακτά
  • Κάνει αριθμητικές πράξεις
  • Τις συγκρίνει
💡 Σημείωση: Οι γλώσσες προγραμματισμού δημιουργήθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη μηχανή.

📌 Φυσικές και Τεχνητές Γλώσσες

Ορισμοί

  • Φυσικές γλώσσες: Χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων (π.χ. ελληνικά, αγγλικά).
  • Τεχνητές γλώσσες: Χρησιμοποιούνται για την επικοινωνία ανθρώπου και μηχανής. Με αυτές τις γλώσσες ο προγραμματιστής μπορεί να δίνει εντολές που πρέπει να εκτελεί ο υπολογιστής.

Κοινά Χαρακτηριστικά (6.4)

Οι φυσικές και τεχνητές γλώσσες εμφανίζουν τα εξής κοινά χαρακτηριστικά:

  1. Αλφάβητο: Το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα.
  2. Λεξιλόγιο: Υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου — οι λέξεις που είναι δεκτές από τη γλώσσα.
  3. Γραμματική: Αποτελείται από:
    • Τυπικό-Τυπολογικό: Το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.
    • Συντακτικό: Το σύνολο των κανόνων που καθορίζει τη νομιμότητα της διάταξης και της σύνδεσης των λέξεων για τη δημιουργία σωστών προτάσεων (ή εντολών).
  4. Σημασιολογία: Σύνολο κανόνων που καθορίζει το νόημα των λέξεων και κατ' επέκταση των εκφράσεων και προτάσεων. Στις τεχνητές γλώσσες ο δημιουργός τους αποφασίζει τη σημασιολογία.

Διαφορές (6.5)

Η βασικότερη διαφορά είναι η δυνατότητα εξέλιξης:

  • Φυσικές: Εξελίσσονται συνεχώς. Δημιουργούνται νέες λέξεις, ενώ κανόνες γραμματικής και σύνταξης αλλάζουν με την πάροδο του χρόνου, γιατί η γλώσσα χρησιμοποιείται για την επικοινωνία μεταξύ των ανθρώπων που εξελίσσονται.
  • Τεχνητές: Χαρακτηρίζονται από στασιμότητα, αφού κατασκευάζονται συνειδητά για έναν συγκεκριμένο σκοπό. Βελτιώνονται και μεταβάλλονται από τους δημιουργούς τους για να διορθωθούν αδυναμίες, να καλύψουν μεγαλύτερο εύρος εφαρμογών και να ακολουθήσουν τις νέες τεχνολογίες.

📌 Μεθοδολογίες Προγραμματισμού

Ιεραρχική Σχεδίαση (6.6)

Η ιεραρχική σχεδίαση ή «από πάνω προς τα κάτω» (top-down program design) περιλαμβάνει:

  • Τον καθορισμό των βασικών λειτουργιών ενός προγράμματος σε ανώτερο επίπεδο.
  • Τη διάσπαση των λειτουργιών του σε όλο και μικρότερες λειτουργίες, μέχρι το τελευταίο επίπεδο που οι λειτουργίες είναι πολύ απλές (συνεχής διαίρεση του προβλήματος σε υποπροβλήματα).

Σκοπός: Η διάσπαση ενός προβλήματος σε μια σειρά από απλούστερα υποπροβλήματα, τα οποία να είναι εύκολο να επιλυθούν, οδηγώντας στην επίλυση του αρχικού.

Μπορεί να παρασταθεί με τη βοήθεια διαγραμματικών τεχνικών (π.χ. δομημένα διαγράμματα).

Τμηματικός Προγραμματισμός (6.7)

Ο τμηματικός προγραμματισμός υλοποιεί την ιεραρχική σχεδίαση:

  • Το πρόβλημα αναλύεται σε επιμέρους υποπροβλήματα.
  • Κάθε υποπρόβλημα αποτελεί ανεξάρτητη ενότητα που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα.

Πλεονεκτήματα: Διευκολύνει τη δημιουργία του προγράμματος, μειώνει τα λάθη και επιτρέπει την ευκολότερη παρακολούθηση, κατανόηση και συντήρηση.

Δομημένος Προγραμματισμός (6.8)

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

⚠️ Η εντολή GOTO: Έχει ως συνέπεια την αλλαγή της ροής του προγράμματος, τη διακλάδωση σε μια άλλη εντολή του προγράμματος εκτός από την επόμενη. Όλες οι σύγχρονες γλώσσες υποστηρίζουν το δομημένο προγραμματισμό και καθιστούν τη GOTO περιττή (τη διατηρούν όμως για λόγους συμβατότητας).

Βασικές Αρχές:

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

Ο δομημένος προγραμματισμός περιέχει τόσο την ιεραρχική σχεδίαση όσο και τον τμηματικό προγραμματισμό.

Πλεονεκτήματα Δομημένου Προγραμματισμού (6.9)

  1. Δημιουργία απλούστερων προγραμμάτων.
  2. Άμεση μεταφορά του αλγορίθμου σε πρόγραμμα.
  3. Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα.
  4. Περιορισμός των λαθών κατά την ανάπτυξη.
  5. Διευκόλυνση στην ανάγνωση και κατανόηση από τρίτους.
  6. Ευκολότερη διόρθωση και συντήρηση.

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

Ένα πρόγραμμα περιγράφει «ενέργειες» (επεξεργασία) που εφαρμόζονται πάνω σε δεδομένα. Το βασικό ερώτημα είναι αν η φιλοσοφία του προγράμματος είναι προτιμότερο να στηρίζεται στις ενέργειες ή στα δεδομένα.

  • Η αντικειμενοστραφής σχεδίαση εκλαμβάνει ως πρωτεύοντα δομικά στοιχεία τα δεδομένα, από τα οποία δημιουργούνται με κατάλληλη μορφοποίηση τα αντικείμενα (objects).
  • Τα προγράμματα που δημιουργούνται είναι περισσότερο ευέλικτα και εύκολα στη συντήρηση.
  • Χρησιμοποιεί την ιεραρχική σχεδίαση, τον τμηματικό προγραμματισμό και ακολουθεί τις αρχές του δομημένου προγραμματισμού.

📌 Εργαλεία Προγραμματισμού

Συντάκτης (Editor) (6.11)

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

Μεταγλωττιστής (Compiler) (6.12)

Δέχεται σαν είσοδο ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής, το οποίο μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή και είναι ανεξάρτητο από το αρχικό.

Διερμηνευτής (Interpreter) (6.12)

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

Πηγαίο και Αντικείμενο Πρόγραμμα (6.13)

  • Πηγαίο (source): Το αρχικό πρόγραμμα που γράφεται από τον προγραμματιστή.
  • Αντικείμενο (object): Το πρόγραμμα που παράγεται από το μεταγλωττιστή.

Συνδέτης – Φορτωτής (Linker-Loader) (6.14)

Το αντικείμενο πρόγραμμα είναι σε μορφή κατανοητή από τον υπολογιστή, αλλά δεν μπορεί να εκτελεστεί αμέσως. Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα:

  • Τμήματα που γράφει ο προγραμματιστής
  • Τμήματα που βρίσκονται σε βιβλιοθήκες (libraries) της γλώσσας

Το πρόγραμμα που επιτρέπει αυτή τη σύνδεση ονομάζεται συνδέτης – φορτωτής. Το αποτέλεσμα είναι το εκτελέσιμο πρόγραμμα (executable), που είναι το τελικό πρόγραμμα που εκτελείται από τον υπολογιστή.

📌 Διαδικασία Μετάφρασης και Εκτέλεσης (6.15)

Η διαδικασία από τον πηγαίο κώδικα μέχρι την εκτέλεση ακολουθεί τα εξής στάδια:

  1. Πηγαίο Πρόγραμμα → γραμμένο από τον προγραμματιστή
  2. Μεταγλωττιστής (Ανάλυση, Έλεγχος Συντακτικών Λαθών) → παράγει το αντικείμενο πρόγραμμα
  3. Αντικείμενο Πρόγραμμα → σε γλώσσα μηχανής αλλά μη εκτελέσιμο
  4. Συνδέτης (Σύνδεση με βιβλιοθήκη) → συνδέει με εξωτερικά τμήματα
  5. Εκτελέσιμο Πρόγραμμα → το τελικό πρόγραμμα που εκτελείται
💡 Σημείωση: Η δημιουργία ενός εκτελέσιμου προγράμματος γίνεται μόνο στην περίπτωση όπου το αρχικό πρόγραμμα δεν περιέχει συντακτικά λάθη.

📌 Λάθη σε ένα Πρόγραμμα (6.16)

Σε ένα πρόγραμμα μπορούν να εμφανιστούν δύο είδη λαθών:

Συντακτικά Λάθη

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

Λογικά Λάθη

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

📌 Διαφορές Μεταγλωττιστή και Διερμηνευτή (6.17)

Χαρακτηριστικό Μεταγλωττιστής Διερμηνευτής
Τρόπος εκτέλεσης Μετατρέπει όλο το πρόγραμμα πριν την εκτέλεση Διαβάζει και εκτελεί μία προς μία τις εντολές
Ταχύτητα Πιο γρήγορη εκτέλεση του τελικού προγράμματος Πιο αργή εκτέλεση
Διόρθωση λαθών Πρέπει να περάσει από μεταγλώττιση και σύνδεση πριν χρησιμοποιηθεί Άμεση εκτέλεση και άμεση διόρθωση
Αποτέλεσμα Παράγει ανεξάρτητο εκτελέσιμο/αντικείμενο πρόγραμμα Δεν παράγει ανεξάρτητο πρόγραμμα

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

📌 Προγραμματιστικό Περιβάλλον (6.18)

Ένα προγραμματιστικό περιβάλλον πρέπει να περιέχει τρία προγράμματα:

  1. Συντάκτη
  2. Μεταγλωττιστή
  3. Συνδέτη – Φορτωτή

Τα σύγχρονα περιβάλλοντα παρέχουν αυτά τα προγράμματα με ενιαίο τρόπο (IDE). Το κάθε περιβάλλον έχει διαφορετικά εργαλεία και ιδιότητες. Για παράδειγμα, ένα περιβάλλον οπτικού προγραμματισμού (visual) πρέπει να περιέχει έναν ειδικό συντάκτη που διευκολύνει τη δημιουργία γραφικών αντικειμένων (φόρμες, λίστες κ.τ.λ.).

💡 Συμβουλή: Κάνε κλικ σε κάθε ερώτηση για να δεις την αναλυτική απάντηση.

6.1 Ποια είναι τα τρία στάδια επίλυσης προβλήματος με υπολογιστή;

▼

Τα στάδια επίλυσης ενός προβλήματος με τον υπολογιστή είναι:

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

6.2 Τι είναι ο προγραμματισμός;

▼

Προγραμματισμός είναι η διαδικασία που γίνεται για τη δημιουργία του προγράμματος, δηλαδή το σύνολο των εντολών που πρέπει να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος.

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

Οι γλώσσες προγραμματισμού δημιουργήθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη μηχανή.

6.3 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές;

▼

Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων, ενώ οι τεχνητές γλώσσες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων και της μηχανής. Με αυτές τις γλώσσες ο προγραμματιστής μπορεί να δίνει εντολές που πρέπει να εκτελεί ο υπολογιστής.

6.4 Ποια κοινά χαρακτηριστικά εμφανίζουν οι φυσικές και τεχνητές γλώσσες;

▼

Οι φυσικές και τεχνητές γλώσσες εμφανίζουν τα εξής κοινά χαρακτηριστικά:

  1. Αλφάβητο: Το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα.
  2. Λεξιλόγιο: Υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου, τις λέξεις που είναι δεκτές από τη γλώσσα.
  3. Γραμματική: Αποτελείται από:
    • Το Τυπικό-Τυπολογικό, το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.
    • Το Συντακτικό, το σύνολο των κανόνων που καθορίζει τη νομιμότητα της διάταξης και της σύνδεσης των λέξεων της γλώσσας για τη δημιουργία σωστών προτάσεων.
    Η γνώση του συντακτικού επιτρέπει τη δημιουργία σωστών προτάσεων στις φυσικές γλώσσες, ενώ στις γλώσσες προγραμματισμού τη δημιουργία σωστών εντολών.
  4. Σημασιολογία: Σύνολο κανόνων που καθορίζει το νόημα των λέξεων και κατ' επέκταση των εκφράσεων και προτάσεων που χρησιμοποιούνται σε μια γλώσσα. Στις τεχνητές γλώσσες ο δημιουργός τους αποφασίζει τη σημασιολογία των λέξεων της.

6.5 Ποιες οι διαφορές μεταξύ φυσικών και τεχνητών γλωσσών;

▼

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

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

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

6.6 Τι γνωρίζετε για την ιεραρχική σχεδίαση προγράμματος;

▼

Η ιεραρχική σχεδίαση ή «από πάνω προς τα κάτω» (top-down program design) περιλαμβάνει τον καθορισμό των βασικών λειτουργιών ενός προγράμματος σε ανώτερο επίπεδο, και στη συνέχεια τη διάσπαση των λειτουργιών του σε όλο και μικρότερες λειτουργίες μέχρι το τελευταίο επίπεδο που οι λειτουργίες του είναι πολύ απλές ώστε να επιλυθούν εύκολα (συνεχής διαίρεση του προβλήματος σε υποπροβλήματα).

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

Η ιεραρχική σχεδίαση μπορεί να παρασταθεί με τη βοήθεια διαγραμματικών τεχνικών.

6.7 Τι γνωρίζετε για τον τμηματικό προγραμματισμό;

▼

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

Ο τμηματικός προγραμματισμός διευκολύνει τη δημιουργία του προγράμματος, μειώνει τα λάθη και επιτρέπει την ευκολότερη παρακολούθηση, κατανόηση και συντήρηση του προγράμματος από τρίτους.

6.8 Τι είναι ο δομημένος προγραμματισμός, η εντολή GOTO και ποιες οι αρχές από τις οποίες διέπεται;

▼

Ο δομημένος προγραμματισμός αναπτύχθηκε από την ανάγκη να υπάρχει μια κοινή μεθοδολογία σύνταξης προγραμμάτων και τη μείωση των εντολών GOTO, που χρησιμοποιούνταν στο παρελθόν.

Η εντολή GOTO έχει ως συνέπεια την αλλαγή της ροής του προγράμματος, τη διακλάδωση σε μια άλλη εντολή του προγράμματος εκτός από την επόμενη.

Όλες οι σύγχρονες γλώσσες προγραμματισμού υποστηρίζουν το δομημένο προγραμματισμό και διαθέτουν εντολές που καθιστούν τη χρήση της εντολής GOTO περιττή. Για λόγους συμβατότητας με παλιότερες εκδόσεις και συντήρησης παλιών προγραμμάτων, μερικές τη διατηρούν στο ρεπερτόριό τους.

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

Βασικές Αρχές Δομημένου Προγραμματισμού:

  • Ο δομημένος προγραμματισμός στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών: τη δομή ακολουθίας, τη δομή επιλογής και τη δομή επανάληψης.
  • Όλα τα προγράμματα μπορούν να γραφούν χρησιμοποιώντας μόνο αυτές τις τρεις δομές καθώς και συνδυασμό τους.
  • Κάθε πρόγραμμα, όπως και κάθε ενότητα προγράμματος, έχει μόνο μία είσοδο και μία έξοδο.

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

6.9 Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού;

▼

Ο δομημένος προγραμματισμός εμφανίζει τα εξής πλεονεκτήματα:

  1. Δημιουργία απλούστερων προγραμμάτων.
  2. Άμεση μεταφορά του αλγορίθμου σε πρόγραμμα.
  3. Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα.
  4. Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος.
  5. Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους.
  6. Ευκολότερη διόρθωση και συντήρηση.

6.10 Τι γνωρίζετε για τον αντικειμενοστραφή προγραμματισμό;

▼

Η ιδέα του αντικειμενοστραφούς προγραμματισμού έχει τις ρίζες της σε πολύ απλή ιδέα. Ένα πρόγραμμα περιγράφει «ενέργειες» (επεξεργασία) που εφαρμόζονται πάνω σε δεδομένα. Ένα βασικό ερώτημα που τίθεται είναι αν η φιλοσοφία, η δομή του προγράμματος είναι προτιμότερο να στηρίζεται στις «ενέργειες» ή στα δεδομένα.

Η απάντηση σε αυτό το ερώτημα προσδιορίζει και τη βασική διαφορά ανάμεσα στις παραδοσιακές προγραμματιστικές τεχνικές και στην αντικειμενοστραφή σχεδίαση.

Η αντικειμενοστραφής σχεδίαση εκλαμβάνει ως πρωτεύοντα δομικά στοιχεία ενός προγράμματος τα δεδομένα, από τα οποία δημιουργούνται με κατάλληλη μορφοποίηση τα αντικείμενα (objects). Αυτή η σχεδίαση αποδείχθηκε ότι επιφέρει καλύτερα αποτελέσματα, αφού τα προγράμματα που δημιουργούνται είναι περισσότερο ευέλικτα και εύκολα στη συντήρηση.

Ο αντικειμενοστραφής προγραμματισμός χρησιμοποιεί την ιεραρχική σχεδίαση, τον τμηματικό προγραμματισμό και ακολουθεί τις αρχές του δομημένου προγραμματισμού.

6.11 Τι είναι ο συντάκτης προγραμμάτων;

▼

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

6.12 Τι είναι ο μεταγλωττιστής και τι ο διερμηνευτής;

▼

Κάθε πρόγραμμα που γράφεται σε οποιαδήποτε γλώσσα προγραμματισμού πρέπει να μετατραπεί σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον υπολογιστή, δηλαδή σε εντολές γλώσσας μηχανής. Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων: του μεταγλωττιστή και του διερμηνευτή.

Μεταγλωττιστής (compilers): Δέχεται σαν είσοδο ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής, το οποίο μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή και είναι ανεξάρτητο από το αρχικό.

Διερμηνευτής (interpreters): Διαβάζει μία προς μία τις εντολές του αρχικού προγράμματος και για κάθε μία εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής.

6.13 Ποιο πρόγραμμα ονομάζεται πηγαίο και ποιο αντικείμενο;

▼

Το αρχικό πρόγραμμα που γράφεται από τον προγραμματιστή ονομάζεται πηγαίο (source), ενώ το πρόγραμμα που παράγεται από το μεταγλωττιστή ονομάζεται αντικείμενο πρόγραμμα (object).

6.14 Τι ονομάζεται συνδέτης – φορτωτής και για ποιο λόγο χρησιμοποιείται;

▼

Το αντικείμενο πρόγραμμα που προκύπτει από το μεταγλωττιστή είναι σε μορφή κατανοητή από τον υπολογιστή, αλλά δεν είναι σε θέση να εκτελεστεί. Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα του προγράμματος, απαραίτητα για την εκτέλεσή του:

  • Τμήματα που τα γράφει ο προγραμματιστής
  • Άλλα τμήματα που βρίσκονται σε βιβλιοθήκες (libraries) της γλώσσας

Το πρόγραμμα που επιτρέπει τη σύνδεση αυτή ονομάζεται συνδέτης – φορτωτής (linker - loader). Το αποτέλεσμα του συνδέτη είναι η παραγωγή του εκτελέσιμου προγράμματος (executable), το οποίο είναι το τελικό πρόγραμμα που εκτελείται από τον υπολογιστή.

6.15 Ποια είναι η διαδικασία για τη μετάφραση και την εκτέλεση ενός προγράμματος;

▼

Η διαδικασία για τη μετάφραση και την εκτέλεση ενός προγράμματος είναι η εξής:

  1. Ο προγραμματιστής γράφει το πηγαίο πρόγραμμα σε μια γλώσσα υψηλού επιπέδου.
  2. Το πηγαίο πρόγραμμα εισάγεται στον μεταγλωττιστή, ο οποίος ελέγχει για συντακτικά λάθη (ανάλυση, συντακτικός έλεγχος).
  3. Αν δεν υπάρχουν λάθη, παράγεται το αντικείμενο πρόγραμμα σε γλώσσα μηχανής.
  4. Το αντικείμενο πρόγραμμα εισάγεται στον συνδέτη – φορτωτή, ο οποίος το συνδέει με τμήματα από βιβλιοθήκες και άλλα απαραίτητα τμήματα.
  5. Το αποτέλεσμα είναι το εκτελέσιμο πρόγραμμα, το οποίο μπορεί να εκτελεστεί από τον υπολογιστή.
💡 Σημείωση: Η δημιουργία ενός εκτελέσιμου προγράμματος γίνεται μόνο στην περίπτωση όπου το αρχικό πρόγραμμα δεν περιέχει συντακτικά λάθη.

6.16 Τι λάθη μπορεί να εμφανίζονται σε ένα πρόγραμμα; Με ποιον τρόπο ανιχνεύονται;

▼

Σε ένα πρόγραμμα μπορούν να εμφανιστούν δύο είδη λαθών: τα συντακτικά και τα λογικά.

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

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

6.17 Ποιες οι διαφορές μεταγλωττιστή και διερμηνευτή; (πλεονεκτήματα – μειονεκτήματα)

▼

Η χρήση μεταγλωττιστή έχει το μειονέκτημα ότι πριν χρησιμοποιηθεί ένα πρόγραμμα πρέπει να περάσει από το στάδιο της μεταγλώττισης και σύνδεσης.

Η χρήση διερμηνευτή έχει το πλεονέκτημα της άμεσης εκτέλεσης και της άμεσης διόρθωσης, καθιστώντας όμως την εκτέλεση του προγράμματος πιο αργή από εκείνη του ισοδύναμου προγράμματος που παράγει ο μεταγλωττιστής.

Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρουσιάζουν μεικτές υλοποιήσεις: χρήση διερμηνευτή κατά τη φάση της δημιουργίας του προγράμματος και μεταγλώττισης κατά την τελική έκδοση.

6.18 Ποια προγράμματα και εργαλεία περιέχει ένα προγραμματιστικό περιβάλλον;

▼

Ένα προγραμματιστικό περιβάλλον πρέπει να περιέχει τρία προγράμματα:

  • Συντάκτη
  • Μεταγλωττιστή
  • Συνδέτη – Φορτωτή

Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν αυτά τα προγράμματα με ενιαίο τρόπο.

Το κάθε προγραμματιστικό περιβάλλον έχει επίσης διαφορετικά εργαλεία και ιδιότητες. Για παράδειγμα, ένα περιβάλλον οπτικού προγραμματισμού (visual) πρέπει να περιέχει οπωσδήποτε έναν ειδικό συντάκτη που να διευκολύνει τη δημιουργία γραφικών αντικειμένων (φόρμες, λίστες κ.τ.λ.), παρέχοντας στον προγραμματιστή τα αντίστοιχα γραφικά εργαλεία.

🎯 Οδηγίες: Επίλεξε μία απάντηση σε κάθε ερώτηση. Θα δεις άμεση ανατροφοδότηση. Στο τέλος εμφανίζεται το συνολικό σκορ.

1. Τα τρία στάδια επίλυσης προβλήματος με υπολογιστή είναι:

Α. Αλγόριθμος, Πρόγραμμα, Εκτέλεση
Β. Προσδιορισμός, Αλγόριθμος, Προγραμματισμός
Γ. Σχεδίαση, Κωδικοποίηση, Έλεγχος
Δ. Ανάλυση, Σχεδίαση, Συντήρηση
✅ Σωστά! Τα τρία στάδια είναι: ακριβής προσδιορισμός, ανάπτυξη αλγορίθμου και διατύπωση σε μορφή κατανοητή από τον υπολογιστή (προγραμματισμός).
❌ Λάθος. Τα σωστά στάδια είναι: ακριβής προσδιορισμός προβλήματος, ανάπτυξη αλγορίθμου και προγραμματισμός.

2. Ο προγραμματισμός είναι:

Α. Η διαδικασία δημιουργίας αλγορίθμου
Β. Η διαδικασία δημιουργίας του προγράμματος
Γ. Η εκτέλεση του αλγορίθμου
Δ. Η ανάλυση του προβλήματος
✅ Σωστά! Ο προγραμματισμός είναι η διαδικασία δημιουργίας του προγράμματος, δηλαδή του συνόλου των εντολών για τον υπολογιστή.
❌ Λάθος. Ο προγραμματισμός είναι η διαδικασία δημιουργίας του προγράμματος, όχι του αλγορίθμου (αυτό είναι η σχεδίαση).

3. Ποιο χαρακτηριστικό διαφοροποιεί κυρίως τις φυσικές από τις τεχνητές γλώσσες;

Α. Το αλφάβητο
Β. Το λεξιλόγιο
Γ. Η δυνατότητα εξέλιξης
Δ. Η γραμματική
✅ Σωστά! Οι φυσικές γλώσσες εξελίσσονται συνεχώς, ενώ οι τεχνητές χαρακτηρίζονται από στασιμότητα.
❌ Λάθος. Η βασικότερη διαφορά είναι η δυνατότητα εξέλιξης. Οι φυσικές εξελίσσονται, οι τεχνητές είναι στατικές.

4. Οι τρεις βασικές δομές του δομημένου προγραμματισμού είναι:

Α. Ακολουθία, Επιλογή, Επανάληψη
Β. Αρχή, Μέση, Τέλος
Γ. Είσοδος, Επεξεργασία, Έξοδος
Δ. Διακλάδωση, Βρόχος, Υποπρόγραμμα
✅ Σωστά! Οι τρεις δομές είναι: ακολουθίας, επιλογής και επανάληψης. Με αυτές μπορούν να γραφούν όλα τα προγράμματα.
❌ Λάθος. Οι τρεις βασικές δομές είναι: ακολουθία, επιλογή και επανάληψη.

5. Ο μεταγλωττιστής παράγει:

Α. Το πηγαίο πρόγραμμα
Β. Το αντικείμενο πρόγραμμα
Γ. Το εκτελέσιμο πρόγραμμα
Δ. Τη βιβλιοθήκη
✅ Σωστά! Ο μεταγλωττιστής παράγει το αντικείμενο πρόγραμμα σε γλώσσα μηχανής.
❌ Λάθος. Ο μεταγλωττιστής παράγει το αντικείμενο πρόγραμμα. Το εκτελέσιμο παράγεται από τον συνδέτη.

6. Ο διερμηνευτής:

Α. Διαβάζει όλο το πρόγραμμα και το μετατρέπει σε γλώσσα μηχανής
Β. Διαβάζει μία προς μία τις εντολές και τις εκτελεί αμέσως
Γ. Συνδέει το πρόγραμμα με βιβλιοθήκες
Δ. Ελέγχει μόνο τα συντακτικά λάθη
✅ Σωστά! Ο διερμηνευτής διαβάζει μία προς μία τις εντολές και για κάθε μία εκτελεί αμέσως ισοδύναμες εντολές γλώσσας μηχανής.
❌ Λάθος. Αυτό που περιγράφεις είναι ο μεταγλωττιστής. Ο διερμηνευτής διαβάζει μία προς μία τις εντολές.

7. Τα συντακτικά λάθη:

Α. Εμφανίζονται κατά την εκτέλεση
Β. Ανιχνεύονται από τον προγραμματιστή
Γ. Ανιχνεύονται από το μεταγλωττιστή
Δ. Είναι τα πιο σοβαρά λάθη
✅ Σωστά! Τα συντακτικά λάθη ανιχνεύονται από το μεταγλωττιστή ή το διερμηνευτή κατά τη μεταγλώττιση.
❌ Λάθος. Τα συντακτικά λάθη ανιχνεύονται από το μεταγλωττιστή/διερμηνευτή. Τα λογικά είναι τα πιο σοβαρά.

8. Ποιο είναι το πλεονέκτημα του διερμηνευτή έναντι του μεταγλωττιστή;

Α. Ταχύτερη εκτέλεση
Β. Άμεση εκτέλεση και διόρθωση
Γ. Παραγωγή εκτελέσιμου προγράμματος
Δ. Ανεξαρτησία από το αρχικό πρόγραμμα
✅ Σωστά! Ο διερμηνευτής επιτρέπει άμεση εκτέλεση και άμεση διόρθωση, χωρίς να περιμένουμε μεταγλώττιση και σύνδεση.
❌ Λάθος. Το πλεονέκτημα του διερμηνευτή είναι η άμεση εκτέλεση και διόρθωση. Ο μεταγλωττιστής είναι ταχύτερος στην εκτέλεση.

9. Το πρόγραμμα που γράφει ο προγραμματιστής ονομάζεται:

Α. Αντικείμενο
Β. Εκτελέσιμο
Γ. Πηγαίο
Δ. Βιβλιοθήκη
✅ Σωστά! Το αρχικό πρόγραμμα που γράφει ο προγραμματιστής ονομάζεται πηγαίο (source).
❌ Λάθος. Το πρόγραμμα που γράφει ο προγραμματιστής ονομάζεται πηγαίο. Το αντικείμενο παράγεται από το μεταγλωττιστή.

10. Ένα προγραμματιστικό περιβάλλον πρέπει να περιέχει:

Α. Μόνο μεταγλωττιστή
Β. Συντάκτη, Μεταγλωττιστή, Συνδέτη-Φορτωτή
Γ. Μόνο διερμηνευτή
Δ. Μόνο συντάκτη
✅ Σωστά! Τα τρία απαραίτητα προγράμματα είναι: συντάκτης, μεταγλωττιστής και συνδέτης-φορτωτής.
❌ Λάθος. Το περιβάλλον πρέπει να περιέχει και τα τρία: συντάκτη, μεταγλωττιστή και συνδέτη-φορτωτή.

🏆 Τελικό Σκορ

Σκορ: 0 / 10

💪 Προκλήσεις: Προσπάθησε να τις λύσεις μόνος σου πριν δεις την απάντηση!

Άσκηση 1: Συμπλήρωση Κενών

⭐⭐

Συμπλήρωσε τα κενά με τις κατάλληλες λέξεις:

«Τα τρία στάδια επίλυσης προβλήματος με υπολογιστή είναι: ο ακριβής ___________ του προβλήματος, η ανάπτυξη του ___________ και η διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον υπολογιστή, δηλαδή ο ___________.»

Λύση: προσδιορισμός, αλγορίθμου, προγραμματισμός.

Άσκηση 2: Αντιστοίχιση Γλωσσών

⭐⭐⭐

Αντιστοίχισε τα χαρακτηριστικά της Στήλης Α με τον τύπο γλώσσας της Στήλης Β:

Στήλη ΑΣτήλη Β
1. Επικοινωνία ανθρώπου-μηχανήςα. Φυσικές γλώσσες
2. Εξελίσσονται συνεχώςβ. Τεχνητές γλώσσες
3. Χαρακτηρίζονται από στασιμότητα
4. Επικοινωνία μεταξύ ανθρώπων

Λύση:

  • 1 → β (Τεχνητές γλώσσες)
  • 2 → α (Φυσικές γλώσσες)
  • 3 → β (Τεχνητές γλώσσες)
  • 4 → α (Φυσικές γλώσσες)

Άσκηση 3: Σωστό ή Λάθος

⭐⭐

Χαρακτήρισε τις παρακάτω προτάσεις ως Σωστό (Σ) ή Λάθος (Λ):

  1. Ο δομημένος προγραμματισμός βασίζεται σε τρεις δομές: ακολουθία, επιλογή και επανάληψη.
  2. Η εντολή GOTO είναι απαραίτητη σε όλες τις σύγχρονες γλώσσες προγραμματισμού.
  3. Τα λογικά λάθη ανιχνεύονται από το μεταγλωττιστή.
  4. Ο διερμηνευτής παράγει ανεξάρτητο εκτελέσιμο πρόγραμμα.
  5. Ο αντικειμενοστραφής προγραμματισμός χρησιμοποιεί τα δεδομένα ως πρωτεύοντα δομικά στοιχεία.

Λύση:

  1. Σωστό (Σ) — Αυτές είναι οι τρεις βασικές δομές.
  2. Λάθος (Λ) — Οι σύγχρονες γλώσσες καθιστούν τη GOTO περιττή.
  3. Λάθος (Λ) — Τα λογικά λάθη ανιχνεύονται μόνο από τον προγραμματιστή.
  4. Λάθος (Λ) — Ο μεταγλωττιστής παράγει το αντικείμενο/εκτελέσιμο. Ο διερμηνευτής δεν παράγει ανεξάρτητο πρόγραμμα.
  5. Σωστό (Σ) — Τα δεδομένα και τα αντικείμενα είναι πρωτεύοντα στον αντικειμενοστραφή προγραμματισμό.

Άσκηση 4: Αντιστοίχιση Εργαλείων

⭐⭐⭐

Αντιστοίχισε τα εργαλεία της Στήλης Α με τη λειτουργία της Στήλης Β:

Στήλη Α (Εργαλείο)Στήλη Β (Λειτουργία)
1. Μεταγλωττιστήςα. Διαβάζει μία προς μία τις εντολές και τις εκτελεί
2. Διερμηνευτήςβ. Παράγει το εκτελέσιμο πρόγραμμα
3. Συνδέτης – Φορτωτήςγ. Παράγει το αντικείμενο πρόγραμμα
4. Συντάκτηςδ. Επεξεργαστής κειμένου για σύνταξη προγράμματος

Λύση:

  • 1 → γ (Παράγει αντικείμενο πρόγραμμα)
  • 2 → α (Διαβάζει μία προς μία και εκτελεί)
  • 3 → β (Παράγει εκτελέσιμο πρόγραμμα)
  • 4 → δ (Επεξεργαστής κειμένου)

Άσκηση 5: Ανάπτυξη

⭐⭐⭐⭐

Περιγράψε με λεπτομέρεια τη διαδικασία από τη στιγμή που ο προγραμματιστής γράφει τον κώδικα μέχρι την εκτέλεση του προγράμματος, αναφέροντας:

  • Τα ενδιάμεσα στάδια
  • Τα προγράμματα που εμπλέκονται σε κάθε στάδιο
  • Τα είδη λαθών που μπορεί να εμφανιστούν και ποιος τα ανιχνεύει

Λύση:

  1. Σύνταξη: Ο προγραμματιστής γράφει το πηγαίο πρόγραμμα χρησιμοποιώντας τον συντάκτη (editor).
  2. Μεταγλώττιση: Το πηγαίο πρόγραμμα εισάγεται στον μεταγλωττιστή, ο οποίος ελέγχει για συντακτικά λάθη. Αν υπάρχουν, εμφανίζει διαγνωστικά μηνύματα και το πρόγραμμα διορθώνεται. Αν δεν υπάρχουν, παράγεται το αντικείμενο πρόγραμμα.
  3. Σύνδεση: Το αντικείμενο πρόγραμμα εισάγεται στον συνδέτη – φορτωτή, ο οποίος το συνδέει με τμήματα από βιβλιοθήκες και άλλα απαραίτητα τμήματα.
  4. Εκτέλεση: Παράγεται το εκτελέσιμο πρόγραμμα που εκτελείται από τον υπολογιστή. Κατά την εκτέλεση μπορεί να εμφανιστούν λογικά λάθη, τα οποία ανιχνεύονται μόνο από τον προγραμματιστή.