Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
1.Ανάλυση Προβλήματος
Τι εννοείται με τον όρο πρόβλημα;
Με τον όρο Πρόβλημα εννοείται μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. (ΑΕΠΠ, Βιβλίο Μαθητή, σελ. 15)
Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δυο παραγόντων. Να τους αναφέρετε.(2009)
Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δύο παραγόντων, της σωστής διατύπωσης εκ μέρους του δημιουργού του και της αντίστοιχα σωστής ερμηνείας από τη μεριά εκείνου που καλείται να το αντιμετωπίσει. (ΑΕΠΠ, Βιβλίο Μαθητή, σελ. 17)
Τι εννοούμε με τον όρο δεδομένο;
Με τον όρο δεδομένο δηλώνεται οποιοδήποτε στοιχείο μπορεί να γίνει αντιληπτό από έναν τουλάχιστον παρατηρητή με μία από τις πέντε
αισθήσεις του. (ΑΕΠΠ, Βιβλίο Μαθητή, σελ. 19)
Τι εννοούμε με τον όρο πληροφορία;
Με τον όρο πληροφορία αναφέρεται οποιοδήποτε γνωσιακό στοιχείο
προέρχεται από επεξεργασία δεδομένων. (ΑΕΠΠ, Βιβλίο Μαθητή, σελ. 19)
Τι εννοούμε με τον όρο επεξεργασία δεδομένων;
Ο όρος επεξεργασία δεδομένων δηλώνει εκείνη τη διαδικασία κατά
την οποία ένας “μηχανισμός” δέχεται δεδομένα, τα επεξεργάζεται σύμφωνα με έναν προκαθορισμένο τρόπο και αποδίδει πληροφορίες.
Επί χιλιετίες ο “μηχανισμός” επεξεργασίας των δεδομένων ήταν και
εξακολουθεί να είναι ο ανθρώπινος εγκέφαλος. Στις μέρες μας, ένας
άλλος “μηχανισμός” επεξεργασίας δεδομένων είναι ο υπολογιστής. (ΑΕΠΠ, Βιβλίο Μαθητή, σελ. 19)
Να δώσετε τον ορισμό της δομής ενός προβλήματος. (2007,2014Ε)
Με τον όρο δομή ενός προβλήματος αναφερόμαστε στα συστατικά
του μέρη, στα επιμέρους τμήματα που το αποτελούν καθώς επίσης και
στον τρόπο που αυτά τα μέρη συνδέονται μεταξύ τους. (ΑΕΠΠ, Βιβλίο Μαθητή, σελ. 19)
Να γράψετε τον ορισμό της Δομής Δεδομένων. (2026)
Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. (ΑΕΠΠ, Βιβλίο Μαθητή, σελ. 56)
Να κάνετε τη διαγραμματική αναπαράσταση του προβλήματος
«Αντιμετώπιση ναρκωτικών», που περιγράφεται παρακάτω:
Για την αντιμετώπιση του προβλήματος των ναρκωτικών, απαιτείται
τόσο η πρόληψη όσο και η θεραπεία των εξαρτημένων ατόμων, ενώ
σημαντικό ρόλο έχει και η διαδικασία επανένταξης των
απεξαρτημένων ατόμων στην κοινωνία. Η πρόληψη περιλαμβάνει την
ενημέρωση των πολιτών. Εξίσου σημαντική για την πρόληψη κρίνεται
η ανάπτυξη ενδιαφερόντων για άτομα «αυξημένης προδιάθεσης». Στον
τομέα της θεραπείας, εκτός από την ενίσχυση των υπαρχουσών
θεραπευτικών κοινοτήτων, σκόπιμη είναι και η δημιουργία κατάλληλων
τμημάτων στα δημόσια νοσοκομεία. Σημαντικοί παράγοντες για
αποτελεσματική επανένταξη είναι τόσο η καταπολέμηση της
κοινωνικής προκατάληψης, όσο και η επιδότηση θέσεων εργασίας για
τους απεξαρτημένους πρώην χρήστες. (2014Ε)

Να περιγράψετε τα στάδια αντιμετώπισης ενός προβλήματος.(2013Ε,2021Ε)
Τα στάδια αντιμετώπισης ενός προβλήματος είναι τρία: (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 25)
- Κατανόηση, όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδομένων και των ζητούμενων του προβλήματος
- Ανάλυση, όπου το αρχικό πρόβλημα διασπάται σε άλλα επιμέρους απλούστερα προβλήματα
- Επίλυση, όπου υλοποιείται η λύση του προβλήματος, μέσω της λύσης των επιμέρους προβλημάτων.
2. Βασικές Έννοιες Αλγορίθμων
Τι είναι ο αλγόριθμος;
Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην
επίλυση ενός προβλήματος. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 33)
Ποια είναι τα κριτήρια που πρέπει να ικανοποιεί ένας σωστός αλγόριθμος; (2005,2021, 2023)
Κάθε αλγόριθμος απαραίτητα ικανοποιεί τα επόμενα κριτήρια. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 33)
Είσοδος (input). Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.
Έξοδος (output). Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν άλλο αλγόριθμο.
Καθοριστικότητα (definiteness). Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. Λόγου χάριν, μία εντολή διαίρεσης πρέπει να θεωρεί και την περίπτωση όπου ο διαιρέτης λαμβάνει μηδενική τιμή.
Περατότητα (finiteness). Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Μία διαδικασία που δεν τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται απλά υπολογιστική διαδικασία (computational procedure).
Αποτελεσματικότητα (effectiveness). Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή. Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί, αλλά πρέπει να είναι και εκτελέσιμη.
Να αναφέρεται τους τρόπους αναπαράστασης ενός αλγορίθμου. (2000, 2020)
Στη βιβλιογραφία συναντώνται διάφοροι τρόποι αναπαράστασης ενός
αλγορίθμου (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 35):
με ελεύθερο κείμενο (free text), με διαγραμματικές τεχνικές (diagramming techniques), με φυσική γλώσσα (natural language) κατά βήματα, με κωδικοποίηση (coding).
Να περιγράψετε τα προβλήματα που είναι δυνατόν να παρουσιαστούν κατά την αναπαράσταση ενός αλγορίθμου, αν χρησιμοποιηθεί ελεύθερο κείμενο και φυσική γλώσσα κατά βήματα. (2012Ε,Α4)
Σε περίπτωση που χρησιμοποιηθεί ελεύθερο κείμενο εγκυμονείτε ο κίνδυνος ότι μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγορίθμων, δηλαδή την αποτελεσματικότητα.
Στην περίπτωση που επιλεγεί η φυσική γλώσσα κατά βήματα χρειάζεται πάλι προσοχή, γιατί μπορεί να παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου, δηλαδή το κριτήριο του καθορισμού. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 35)
Να περιγράψετε τα γεωμετρικά σχήματα που χρησιμοποιούνται σε ένα διάγραμμα ροής και να αναλύσετε τη χρησιμότητά τους.
Τα κυριότερα χρησιμοποιούμενα γεωμετρικά σχήματα είναι τα εξής (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 36):
Έλλειψη, που δηλώνει την αρχή και το τέλος του κάθε αλγορίθμου,
Ρόμβος, που δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση,
Ορθογώνιο, που δηλώνει την εκτέλεση μίας ή περισσότερων πράξεων, και
Πλάγιο παραλληλόγραμμο, που δηλώνει είσοδο ή έξοδο στοιχείων. Πολλές φορές το σχήμα αυτό μπορεί να διαφοροποιείται προκειμένου να προσδιορίζεται και το είδος της συσκευής απ’ όπου γίνεται η είσοδος ή η έξοδος.
Τι είναι οι σταθερές και τι οι μεταβλητές;
Σταθερές (constants). Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου. Οι σταθερές διακρίνονται σε
l αριθμητικές, π.χ. 123, +5, -1,25
l αλφαριθμητικές π.χ. “Τιμή”, “Κατάσταση αποτελεσμάτων”
l λογικές που είναι ακριβώς δύο, Αληθής και Ψευδής
Μεταβλητές (variables). Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο, που χρησιμοποιείται για να παραστήσει ένα στοιχείο δεδομένου. Στη μεταβλητή εκχωρείται μια τιμή, η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου. Ανάλογα με το είδος της τιμής που μπορούν να λάβουν,
οι μεταβλητές διακρίνονται σε αριθμητικές, αλφαριθμητικές και λογικές. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 37)
Τι είναι οι τελεστές και τι οι εκφράσεις;
Τελεστές (operators). Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις. Οι τελεστές διακρίνονται σε αριθμητικούς, λογικούς και συγκριτικούς.
Εκφράσεις (expressions). Οι εκφράσεις διαμορφώνονται από τους τελεστέους (operands), που είναι σταθερές και μεταβλητές και από τους τελεστές. Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών στις μεταβλητές και στην εκτέλεση των πράξεων. Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των πράξεων και τη χρήση των παρενθέσεων. Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά μέχρι μια πολύπλοκη μαθηματική παράσταση. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 37)
Να αποτυπώσετε το διάγραμμα ροής της εντολής επανάληψης ΟΣΟ. (2019)

Να αποτυπώσετε το διάγραμμα ροής της εντολής επανάληψης ΓΙΑ.

Να αποτυπώσετε το διάγραμμα ροής της εντολής επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ. (2019)

Να γράψετε στο τετράδιό σας: (2014) α)Ένα συγκριτικό τελεστή, β)Ένα λογικό τελεστή, γ)Μία λογική σταθερά, δ)Μία απλή λογική έκφραση, ε)Μία σύνθετη λογική έκφραση
| α. | Οποιονδήποτε από τους: >, >=,<>,<,<= |
| β. | Οποιονδήποτε από τους: και (σύζευξη), ή (διάζευξη), όχι (άρνηση). |
| γ. | Οποιαδήποτε από τις Αληθής, Ψευδής |
| δ. | x<5 |
| ε. | x>2 KAI x<20 |
3. Δομές δεδομένων και Αλγόριθμοι
Από ποιες σκοπιές θεωρείται ότι μελετά τα δεδομένα η επιστήμη της Πληροφορικής;
Η Πληροφορική μελετά τα δεδομένα από τις ακόλουθες σκοπιές (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 55,56):
Υλικού. Το υλικό (hardware), δηλαδή η μηχανή, επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη και στις περιφερειακές συσκευές του υπολογιστή με διάφορες αναπαραστάσεις (representations). Τέτοιες μορφές είναι η δυαδική, ο κώδικας ASCII (βλ. παράρτημα), ο κώδικας EBCDIC, το συμπλήρωμα του 1 ή του 2 κ.λπ.
Γλωσσών προγραμματισμού. Οι γλώσσες προγραμματισμού υψηλού επιπέδου (high level programming languages) επιτρέπουν τη χρήση διάφορων τύπων (types) μεταβλητών (variables) για να περιγράψουν ένα δεδομένο. Ο μεταφραστής κάθε γλώσσας φροντίζει για την αποδοτικότερη μορφή αποθήκευσης, από πλευράς υλικού, κάθε μεταβλητής στον υπολογιστή.
Δομών Δεδομένων. Δομή δεδομένων (data structure) είναι ένα
σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών επί
αυτών. Για παράδειγμα, μία τέτοια δομή είναι η εγγραφή (record),
που μπορεί να περιγράφει ένα είδος, ένα πρόσωπο κ.λπ. Η εγγραφή
αποτελείται από τα πεδία (fields) που αποθηκεύουν χαρακτηριστικά
(attributes) διαφορετικού τύπου, όπως για παράδειγμα ο κωδικός, η
περιγραφή κ.λπ. Άλλη μορφή δομής δεδομένων είναι το αρχείο που
αποτελείται από ένα σύνολο εγγραφών. Μία επιτρεπτή λειτουργία σε
ένα αρχείο είναι η σειριακή προσπέλαση όλων των εγγραφών του.
Ανάλυσης Δεδομένων. Τρόποι καταγραφής και αλληλοσυσχέτισης
των δεδομένων μελετώνται έτσι ώστε να αναπαρασταθεί η γνώση
για πραγματικά γεγονότα. Οι τεχνολογίες των Βάσεων Δεδομένων
(Databases), της Μοντελοποίησης Δεδομένων (Data Modelling) και της Αναπαράστασης Γνώσης (Knowledge Representation) ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων.
Να αναφέρετε ονομαστικά τις σκοπιές, από τις οποίες μελετά η επιστήμη της Πληροφορικής τα δεδομένα. (2025Ε)
Η Πληροφορική μελετά τα δεδομένα από τις ακόλουθες σκοπιές (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 55,56): Υλικού, Γλωσσών προγραμματισμού, Δομών Δεδομένων, Ανάλυσης Δεδομένων.
Τι είναι η Δομή Δεδομένων;
Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που
υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 56)
Να γράψετε τον ορισμό της Δομής Δεδομένων. (2026)
Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που
υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 56)
Ποιες είναι οι βασικές λειτουργίες (ή αλλιώς πράξεις) επί των δομών δεδομένων; (2002)
Οι βασικές λειτουργίες (ή αλλιώς πράξεις) επί των δομών δεδομένων είναι οι ακόλουθες (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 56):
Προσπέλαση (access), πρόσβαση σε έναν κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του.
Εισαγωγή (insertion), δηλαδή η προσθήκη νέων κόμβων σε μία υπάρχουσα δομή.
Διαγραφή (deletion), που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή ένας κόμβος αφαιρείται από μία δομή.
Αναζήτηση (searching), κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα.
Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά.
Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής αντιγράφονται σε μία άλλη δομή.
Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή.
Διαχωρισμός (separation), που αποτελεί την αντίστροφη πράξη της συγχώνευσης.
Τι είναι δομή δεδομένων; Να αναφέρετε ονομαστικά 4 λειτουργίες επί των δομών δεδομένων. (2017)
Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Οι βασικές λειτουργίες (ή αλλιώς πράξεις) επί των δομών δεδομένων είναι οι ακόλουθες: Προσπέλαση (access), Εισαγωγή (insertion), Διαγραφή (deletion), Αναζήτηση (searching), Ταξινόμηση (sorting), Αντιγραφή (copying), Συγχώνευση (merging), Διαχωρισμός (separation. (Βιβλίο ΑΕΠΠ, σελ. 56)
Να αναφέρετε και να περιγράψετε τέσσερεις από τις βασικές λειτουργίες επί των δομών δεδομένων που μπορούν να χρησιμοποιηθούν στους πίνακες. (2019)
Οι βασικές λειτουργίες επί των δομών δεδομένων που μπορούν να χρησιμοποιηθούν στους πίνακες είναι: (Βιβλίο μαθητή, σελίδα 56)
- Προσπέλαση (access), πρόσβαση σε έναν κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του.
- Αναζήτηση (searching), κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα.
- Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά.
- Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής αντιγράφονται σε μία άλλη δομή.
- Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή.
- Διαχωρισμός (separation), που αποτελεί την αντίστροφη πράξη της συγχώνευσης.
Τι είναι η στατική και τι η μη στατική δομή δεδομένων; Δώστε από ένα παράδειγμα.
Με τον όρο στατική δομή δεδομένων εννοείται ότι το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους, και κατά συνέπεια κατά τη στιγμή της μετάφρασής τους και όχι κατά τη στιγμή της εκτέλεσης τους προγράμματος. Μία άλλη σημαντική διαφορά σε σχέση με τις μη στατικές (δυναμικές δομές) είναι ότι τα στοιχεία των στατικών δομών αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.Στην πράξη, οι στατικές δομές υλοποιούνται με πίνακες που μας είναι γνωστοί από άλλα μαθήματα και υποστηρίζονται από κάθε γλώσσα προγραμματισμού.
Στη δυναμική δομή δεδομένων (μη στατική) το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά την εκτέλεση του προγράμματος και οι θέσεις μνήμης που δεσμεύονται δεν είναι απαραίτητο να είναι συνεχόμενες, μπορεί να είναι διάσπαρτες στον αποθηκευτικό χώρο. Παράδειγμα δυναμικής δομής είναι η λίστα. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 58)
Τι εννοείται με τον όρο «Στατική Δομή Δεδομένων» και πώς υλοποιείται στη ΓΛΩΣΣΑ; (2018)
Με τον όρο στατική δομή δεδομένων εννοείται ότι το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους, και κατά συνέπεια κατά τη στιγμή της μετάφρασής τους και όχι κατά τη στιγμή της εκτέλεσης τους προγράμματος. Μία άλλη σημαντική διαφορά σε σχέση με τις δυναμικές δομές είναι ότι τα στοιχεία των στατικών δομών αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Στην πράξη, οι στατικές δομές υλοποιούνται με πίνακες που μας είναι γνωστοί από άλλα μαθήματα και υποστηρίζονται από κάθε γλώσσα προγραμματισμού. Μπορούμε να ορίσουμε τον πίνακα ως μια δομή που περιέχει στοιχεία του ίδιου τύπου (δηλαδή ακέραιους, πραγματικούς κ.λπ). Η δήλωση των στοιχείων ενός πίνακα και η μέθοδος αναφοράς τους εξαρτάται από τη συγκεκριμένη γλώσσα υψηλού επιπέδου που χρησιμοποιείται. Όμως, γενικά η αναφορά στα στοιχεία ενός πίνακα γίνεται με τη χρήση του συμβολικού ονόματος του πίνακα ακολουθούμενου από την τιμή ενός ή περισσότερων δεικτών (indexes) σε παρένθεση ή αγκύλη. (Βιβλίο ΑΕΠΠ, σελίδα 58)
Να αναφέρετε δύο περιπτώσεις στις οποίες συνιστάται η χρήση σειριακής αναζήτησης σε ταξινομημένο πίνακα. (2018Ε)
Όταν ο πίνακας είναι μικρού μεγέθους ή όταν η αναζήτηση γίνεται σπάνια σε αυτόν τον πίνακα (Βιβλίο ΑΕΠΠ, Σελίδα 64)
Ποια είναι τα πλεονεκτήματα και ποια τα μειονεκτήματα της στατικής δομής δεδομένων;
Πλεονεκτήματα
- Άμεση πρόσβαση: Επιτρέπει την πολύ γρήγορη εύρεση οποιουδήποτε στοιχείου.
- Συνεχής μνήμη: Τα δεδομένα αποθηκεύονται δίπλα-δίπλα στη μνήμη, γεγονός που βοηθάει στην αποδοτική διαχείριση.
- Χωρίς επιπλέον κόστος: Δεν απαιτείται αποθήκευση επιπλέον πληροφοριών (όπως δείκτες/pointers προς επόμενα στοιχεία).
- Απλότητα: Είναι εύκολη στην κατανόηση και στην εφαρμογή της σε βασικά προγράμματα.
Μειονεκτήματα
- Σταθερό μέγεθος: Το μέγεθος δεν μπορεί να αλλάξει (να μεγαλώσει ή να μικρύνει) κατά τη διάρκεια της εκτέλεσης.
- Σπατάλη μνήμης: Αν δηλωθεί μεγαλύτερος πίνακας από αυτόν που τελικά χρειάζεται, ο υπόλοιπος χώρος πάει χαμένος.
- Έλλειψη ευελιξίας: Αν τα δεδομένα ξεπεράσουν το προβλεπόμενο όριο, το πρόγραμμα δεν μπορεί να τα χωρέσει.
Τι είναι ο τετραγωνικός, άνω τριγωνικός και κάτω τριγωνικός πίνακας;
Ένας πίνακας μπορεί να είναι μονοδιάστατος, αλλά στη γενικότερη περίπτωση μπορεί να είναι δισδιάστατος, τρισδιάστατος και γενικά ν-διάστατος πίνακας. Όσον αφορά στους δισδιάστατους πίνακες σημειώνεται
ότι, αν το μέγεθος των δύο διαστάσεων είναι ίσο, τότε ο πίνακας λέγεται
τετραγωνικός (square) και γενικά συμβολίζεται ως πίνακας n x n. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 55)
Άνω τριγωνικός είναι ένας τετραγωνικός πίνακας στο οποίο όλα τα στοιχεία κάτω από την κύρια διαγώνιο είναι 0.
Κάτω τριγωνικός είναι ένας τετραγωνικός πίνακας στο οποίο όλα τα στοιχεία πάνω από την κύρια διαγώνιο είναι 0.
Ποια είναι η κύρια διαγώνιος και ποια η δευτερεύουσα διαγώνιος ενός τετραγωνικού πίνακα;
Κύρια διαγώνιος είναι εκείνη της οποίας για κάθε στοιχείο ο αριθμός γραμμής είναι ίσος με τον αριθμό της στήλης της.
Δευτερεύουσα διαγώνιος είναι εκείνη της οποίας το άθροισμα του αριθμού γραμμής και του αριθμού της στήλης είναι πάντα ίσο με τη διάσταση του πίνακα αυξημένη κατά ένα.
Τι είναι η στοίβα;
Στοίβα (stack), ονομάζεται μια δομή δεδομένων το σύνολο των στοιχείων της οποίας είναι διατεταγμένο με τέτοιο τρόπο, ώστε τα στοιχεία που βρίσκονται στην κορυφή της στοίβας λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος της στοίβας λαμβάνονται τελευταία. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 13)
Να περιγράψετε την υλοποίηση στοίβας με τη βοήθεια μονοδιάστατου πίνακα. (2008Ε)
Μία στοίβα δεδομένων μοιάζει με μία στοίβα από πιάτα. Για παράδειγμα, κάθε πιάτο που πλένεται τοποθετείται στην κορυφή (top) της στοίβας των πιάτων, ενώ για σκούπισμα λαμβάνεται και πάλι το πιάτο της κορυφής. Αντίστοιχα, τα δεδομένα που βρίσκονται στην κορυφή της στοίβας λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος της στοίβας λαμβάνονται τελευταία. Αυτή η μέθοδος επεξεργασίας ονομάζεται Τελευταίο μέσα, πρώτο έξω ή απλούστερα με την αγγλική συντομογραφία LIFO (Last-In-First-Out). Στα αριστερά του επόμενου σχήματος δίνεται μία στοίβα με τρία στοιχεία, ενώ στο κέντρο παρουσιάζεται η ίδια στοίβα με ένα πρόσθετο στοιχείο στην κορυφή της. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 60)
Ποιες είναι οι κύριες λειτουργίες που εκτελούνται σε μια στοίβα;
Δύο είναι οι κύριες λειτουργίες σε μία στοίβα (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 60):
Η ώθηση (push) στοιχείου στην κορυφή της στοίβας, και η απώθηση (pop) στοιχείου από τη στοίβα.
Τι είναι η υπερχείλιση (overflow) και τι η υποχείλιση (underflow);
Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει, αν η στοίβα είναι γεμάτη, οπότε λέγεται ότι συμβαίνει υπερχείλιση (overflow) της στοίβας. Αντίστοιχα, η διαδικασία απώθησης ελέγχει, αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα, δηλαδή ελέγχει αν γίνεται υποχείλιση (underflow) της στοίβας. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 61)
Τι είναι η ουρά;
Η ουρά (queue) είναι άλλη μία θεμελιώδης δομή δεδομένων στην πληροφορική, η οποία λειτουργεί ακριβώς όπως μια ουρά αναμονής στην καθημερινή ζωή — για παράδειγμα, η ουρά στο ταμείο ενός σουπερμάρκετ ή σε μία στάση λεωφορείου.
Ο πρώτος που μπαίνει στην ουρά είναι και ο πρώτος που θα εξυπηρετηθεί και θα φύγει από αυτήν.
Ποιες είναι οι κύριες λειτουργίες που εκτελούνται σε μια ουρά;
Δύο είναι οι κύριες λειτουργίες που εκτελούνται σε μία ουρά (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 61):
Η εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς, και η εξαγωγή (dequeue) στοιχείου από το εμπρός άκρο της ουράς.
Περιγράψτε τους δείκτες που χρειαζόμαστε σε μια ουρά και τους αντίστοιχους σε μια στοίβα.
Σε αντίθεση με τη δομή της στοίβας, στην περίπτωση της ουράς απαιτούνται δύο δείκτες: ο εμπρός (front) και ο πίσω (rear) δείκτης, που μας δίνουν τη θέση του στοιχείου που σε πρώτη ευκαιρία θα εξαχθεί και τη θέση του στοιχείου που μόλις εισήλθε. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 61)
Μια βοηθητική μεταβλητή (με όνομα συνήθως top) χρησιμοποιείται για να δείχνει το στοιχείο που τοποθετήθηκε τελευταίο στην κορυφή της στοίβας. Για την εισαγωγή ενός νέου στοιχείου στη στοίβα (ώθηση) αρκεί να αυξηθεί η μεταβλητή top κατά ένα και στη θέση αυτή να εισέλθει το στοιχείο. Αντίθετα για την εξαγωγή ενός στοιχείου από τη στοίβα (απώθηση) εξέρχεται πρώτα το στοιχείο που δείχνει η μεταβλητή top και στη συνέχεια η top μειώνεται
κατά ένα για να δείχνει τη νέα κορυφή. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 61)
Πόσοι δείκτες απαιτούνται για την υλοποίηση μιας ουράς με μονοδιάστατο πίνακα (μονάδες 2) και τι δείχνει ο καθένας; (2015)
Απαιτούνται δύο δείκτες ((ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 61): ο εμπρός (front) και ο πίσω (rear) δείκτης, που μας δίνουν τη θέση του στοιχείου που σε πρώτη ευκαιρία θα εξαχθεί και τη θέση του στοιχείου που μόλις εισήλθε.
Ποιος δείκτης της ουράς μεταβάλλεται κατά τη λειτουργία της εξαγωγής; (2015)
Για τη λειτουργία της εξαγωγής (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 61), εξέρχεται το στοιχείο που δείχνει ο δείκτης front, ο οποίος στη συνέχεια αυξάνεται κατά ένα, για να δείχνει το επόμενο στοιχείο που πρόκειται να εξαχθεί, αν αυτό υπάρχει, αλλιώς επαναρχικοποιείται.
Πότε δικαιολογείται η χρήση της σειριακής αναζήτησης; (2005Ε, 2013)
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η λιγότερη αποτελεσματική μέθοδος αναζήτησης. Έτσι, δικαιολογείται η χρήση της μόνο σε περιπτώσεις όπου: (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 65)
- ο πίνακας είναι μη ταξινομημένος,
- ο πίνακας είναι μικρού μεγέθους (για παράδειγμα, n ≤ 20),
- η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια
Ποια είναι τα πλεονεκτήματα και ποια τα μειονεκτήματα της σειριακής αναζήτησης;
Η σειριακή (ή γραμμική) αναζήτηση (linear / sequential search) είναι ο απλούστερος αλγόριθμος για την εύρεση ενός στοιχείου σε μια δομή δεδομένων (π.χ. σε έναν πίνακα). Η λειτουργία της βασίζεται στη σάρωση των στοιχείων ένα προς ένα, ξεκινώντας από την αρχή μέχρι να βρεθεί το ζητούμενο στοιχείο ή να φτάσουμε στο τέλος.
Πλεονεκτήματα
- Απλότητα υλοποίησης. Είναι εξαιρετικά εύκολη στην κατανόηση και στη συγγραφή κώδικα.
- Δεν απαιτεί ταξινομημένα δεδομένα: Λειτουργεί εξίσου καλά σε πίνακες που είναι εντελώς αταξινόμητοι, πράγμα που γλιτώνει το χρόνιο κόστος της προηγούμενης ταξινόμησης.
- Καθολική εφαρμογή: Μπορεί να χρησιμοποιηθεί σε οποιαδήποτε δομή δεδομένων, ακόμα και σε δυναμικές δομές όπως οι συνδεδεμένες λίστες (linked lists), όπου η τυχαία πρόσβαση στα στοιχεία δεν είναι εφικτή.
- Αποδοτική για μικρά σύνολα δεδομένων: Όταν ο πίνακας είναι μικρός, η διαφορά ταχύτητας σε σχέση με πιο σύνθετους αλγόριθμους είναι αμελητέα, ενώ δεν απαιτεί επιπλέον μνήμη.
Μειονεκτήματα
- Χαμηλή αποδοτικότητα σε μεγάλα σύνολα.
- Αργή σε αποτυχία: Αν το στοιχείο δεν υπάρχει στον πίνακα (ή βρίσκεται στην τελευταία θέση), ο αλγόριθμος αναγκάζεται να προσπελάσει υποχρεωτικά όλα τα στοιχεία.
- Μη βέλτιστη για ταξινομημένα δεδομένα: Αν τα δεδομένα είναι ήδη ταξινομημένα, η σειριακή αναζήτηση σπαταλά υπολογιστικούς πόρους, καθώς δεν αξιοποιεί τη διάταξη.
Ποια είναι τα πλεονεκτήματα και ποια τα μειονεκτήματα της δυαδικής αναζήτησης;
Η δυαδική αναζήτηση (binary search) είναι ένας από τους πιο αποδοτικούς αλγόριθμους αναζήτησης. Λειτουργεί με τη λογική του «διαίρει και βασίλευε» (divide and conquer): συγκρίνει το ζητούμενο στοιχείο με το μεσαίο στοιχείο της δομής και χωρίζει το πεδίο αναζήτησης στη μέση σε κάθε βήμα, απορρίπτοντας το μισό σύνολο δεδομένων.
Πλεονεκτήματα
- Εξαιρετικά υψηλή ταχύτητα / αποδοτικότητα.
- Σταθερή απόδοση σε μεγάλα δεδομένα.
- Χαμηλή κατανάλωση μνήμης.
Μειονεκτήματα
- Απαιτεί ταξινομημένα δεδομένα:Είναι η σημαντικότερη προϋπόθεση: η δυαδική αναζήτηση δεν μπορεί να εφαρμοσθεί σε αταξινόμητο πίνακα. Αν τα δεδομένα δεν είναι ταξινομημένα, πρέπει πρώτα να ταξινομηθούν.
- Απαιτεί τυχαία πρόσβαση (Random Access):Για να λειτουργήσει αποδοτικά, πρέπει να μπορεί να προσπελάσει ακαριαία το μεσαίο στοιχείο (όπως συμβαίνει στους πίνακες). Δεν ενδείκνυται για δομές όπως οι απλά συνδεδεμένες λίστες (linked lists), όπου η προσπέλαση στο μεσαίο στοιχείο απαιτεί προσπέλαση όλων των προηγούμενων.
- Υψηλότερο κόστος για συχνές αλλαγές:Αν η δομή δεδομένων τροποποιείται συχνά (συχνές εισαγωγές ή διαγραφές στοιχείων), η διατήρηση της ταξινόμησης είναι πολυδάπανη, καθιστώντας τη συνολική διαδικασία ασύμφορη.
- Πιο σύνθετη υλοποίηση:Σε σύγκριση με τη σειριακή αναζήτηση, ο κώδικας είναι ελαφρώς πιο σύνθετος και απαιτεί προσοχή στις οριακές συνθήκες.
Τι είναι η ταξινόμηση;
Δοθέντων των στοιχείων a1, a2, …, an η ταξινόμηση συνίσταται στη μετάθεση (permutation) της θέσης των στοιχείων, ώστε να τοποθετηθούν σε μία σειρά ak1, ak2, …, akn έτσι ώστε, δοθείσης μίας συνάρτησης διάταξης (ordering function), f, να ισχύει: f(ak1) ≤ f(ak2) ≤ … ≤ f(akn) (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 65)
Τι είναι η ταξινόμηση ευθείας ανταλλαγής;
Η μέθοδος της ταξινόμησης ευθείας ανταλλαγής (straight exchange sort) βασίζεται στην αρχή της σύγκρισης και ανταλλαγής ζευγών γειτονικών στοιχείων, μέχρις ότου διαταχθούν όλα τα στοιχεία. Σύμφωνα με τη μέθοδο αυτή κάθε φορά γίνονται διαδοχικές προσπελάσεις στον πίνακα και μετακινείται το μικρότερο κλειδί της ακολουθίας προς το αριστερό άκρο του πίνακα. Αν ο πίνακας θεωρηθεί σε κατακόρυφη θέση αντί σε οριζόντια και οι ακέραιοι θεωρηθούν –επιστρατεύοντας αρκετή φαντασία– ως φυσαλίδες (bubbles) σε μία δεξαμενή νερού με βάρη σύμφωνα με την τιμή τους, τότε κάθε προσπέλαση στον πίνακα έχει ως αποτέλεσμα την άνοδο της φυσαλίδας στο κατάλληλο επίπεδο βάρους. Η μέθοδος είναι γνωστή ως ταξινόμηση φυσαλίδας (bubblesort). (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 66)
Τι είναι η δευτερεύουσα μνήμη;
Σε μεγάλες πρακτικές εμπορικές/επιστημονικές εφαρμογές, το μέγεθος της κύριας μνήμης δεν επαρκεί για την αποθήκευση των δεδομένων. Στην περίπτωση αυτή χρησιμοποιούνται ειδικές δομές για την αποθήκευση των δεδομένων στη δευτερεύουσα μνήμη, δηλαδή κυρίως στο μαγνητικό δίσκο.
Οι ειδικές αυτές δομές ονομάζονται αρχεία (files). Είναι γνωστό ότι μία σημαντική διαφορά μεταξύ κύριας μνήμης και μαγνητικού δίσκου είναι ότι στην περίπτωση του δίσκου, τα δεδομένα δεν χάνονται, αν διακοπεί η ηλεκτρική παροχή. Έτσι, τα δεδομένα των αρχείων διατηρούνται ακόμη και μετά τον τερματισμό ενός προγράμματος, κάτι που δεν συμβαίνει στην περίπτωση των δομών της κύριας μνήμης, όπως είναι οι πίνακες, όπου τα δεδομένα χάνονται όταν τελειώσει το πρόγραμμα. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 66)
4. Τεχνικές Σχεδίασης Αλγορίθμων
Τι περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα σύγχρονο υπολογιστικό περιβάλλον;
Η ανάλυση ενός προβλήματος σε ένα σύγχρονο υπολογιστικό περιβάλ-
λον περιλαμβάνει (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 77):
την καταγραφή της υπάρχουσας πληροφορίας για το πρόβλημα,
την αναγνώριση των ιδιαιτεροτήτων του προβλήματος,
την αποτύπωση των συνθηκών και προϋποθέσεων υλοποίησής του
και στη συνέχεια:
την πρόταση επίλυσης με χρήση κάποιας μεθόδου, και
την τελική επίλυση με χρήση υπολογιστικών συστημάτων.
Σε ποιες ερωτήσεις θα πρέπει να δοθεί απάντηση κατά την ανάλυση ενός προβλήματος;
Kατά την ανάλυση ενός προβλήματος θα πρέπει να δοθεί απάντηση
σε καθεμία από τις επόμενες ερωτήσεις (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 77):
1. Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος,
2.Ποιες είναι οι συνθήκες που πρέπει να πληρούνται για την επίλυση του προβλήματος,
3.Ποια είναι η πλέον αποδοτική μέθοδος επίλυσής τους (σχεδίαση αλγορίθμου),
4.Πώς θα καταγραφεί η λύση σε ένα πρόβλημα (π.χ. σε ψευδογλώσσα) και
5.Ποιος είναι ο τρόπος υλοποίησης στο συγκεκριμένο υπολογιστικό σύστημα (π.χ. επιλογή γλώσσας προγραμματισμού).
6. Εισαγωγή στον Προγραμματισμό
Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με τον υπολογιστή;
Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 105):
1. Τον ακριβή προσδιορισμό του προβλήματος.
2. Την ανάπτυξη του αντίστοιχου αλγορίθμου.
3. Τη διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον υπολογιστή
Να αναφέρετε ονομαστικά τα στοιχεία που προσδιορίζουν μία γλώσσα. (2017)
Μία γλώσσα προσδιορίζεται από το αλφάβητό της, το λεξιλόγιό της, τη γραμματική της και τέλος τη σημασιολογία της. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Ποιες οι διαφορές μεταξύ φυσικών και τεχνητών γλωσσών;
Μία βασική διαφορά μεταξύ φυσικών και τεχνητών γλωσσών είναι η δυνατότητα εξέλιξής τους. Οι φυσικές γλώσσες εξελίσσονται συνεχώς, νέες λέξεις δημιουργούνται, κανόνες γραμματικής και σύνταξης αλλάζουν με την πάροδο του χρόνου και αυτό γιατί η γλώσσα χρησιμοποιείται για την επικοινωνία μεταξύ ανθρώπων, που εξελίσσονται και αλλάζουν ανάλογα με τις εποχές και τον κοινωνικό περίγυρο.
Αντίθετα οι τεχνητές γλώσσες χαρακτηρίζονται από στασιμότητα, αφού κατασκευάζονται συνειδητά για ένα συγκεκριμένο σκοπό. Ωστόσο συχνά οι γλώσσες προγραμματισμού βελτιώνονται και μεταβάλλονται από τους δημιουργούς τους, με σκοπό να διορθωθούν αδυναμίες ή να καλύψουν μεγαλύτερο εύρος εφαρμογών ή τέλος να ακολουθήσουν τις νέες εξελίξεις. Οι γλώσσες προγραμματισμού αλλάζουν σε επίπεδο διαλέκτου (για παράδειγμα GW-Basic και QuickBasic) ή σε επίπεδο επέκτασης (για παράδειγμα Basic και Visual Basic). (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 116)
Τι καλείται αλφάβητο μιας γλώσσας; (2004Ε)
Αλφάβητο μίας γλώσσας καλείται το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα. Για παράδειγμα, η ελληνική γλώσσα περιέχει τα εξής στοιχεία: Τα γράμματα του αλφαβήτου πεζά και κεφαλαία 48 δηλαδή χαρακτήρες (Α-Ω και α-ω), τα 10 ψηφία (0-9) και όλα τα σημεία στίξης. Αντίστοιχα η αγγλική γλώσσα περιλαμβάνει τα γράμματα του αγγλικού αλφαβήτου (Α-Ζ και a-z) καθώς και τα ψηφία και όλα τα σημεία στίξης που χρησιμοποιούνται. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Από τι αποτελείται το λεξιλόγιο μιας γλώσσας; (2004Ε)
Το λεξιλόγιο αποτελείται από ένα υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου, τις λέξεις που είναι δεκτές από τη γλώσσα. Για παράδειγμα, στην ελληνική γλώσσα η ακολουθία των γραμμάτων ΑΒΓΑ είναι δεκτή αφού αποτελεί λέξη, αλλά η ακολουθία ΑΒΓΔΑ δεν αποτελεί λέξη της ελληνικής γλώσσας, άρα δεν είναι δεκτή. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Τι είναι η γραμματική μιας γλώσσας και από τι αποτελείται;
Η γραμματική μιας γλώσσας προγραμματισμού είναι το αυστηρό σύνολο κανόνων που καθορίζει ποιες ακολουθίες χαρακτήρων και συμβόλων αποτελούν έγκυρο πρόγραμμα. Η γραμματική αποτελείται από το τυπικό ή τυπολογικό (accidence) και το συντακτικό (syntax). (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Τι εννοούμε με τον όρο «τυπικό» και τι με τον όρο «συντακτικό» μιας γλώσσας; (2004Ε, 2018)
Τυπικό είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μία λέξη είναι αποδεκτή. Για παράδειγμα, στην ελληνική γλώσσα οι λέξεις γλώσσα, γλώσσας, γλώσσες είναι δεκτές, ενώ η λέξη γλώσσατ δεν είναι αποδεκτή. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Συντακτικό είναι το σύνολο των κανόνων που καθορίζει τη νομιμότητα της διάταξης και της σύνδεσης των λέξεων της γλώσσας για τη δημιουργία προτάσεων. Η γνώση του συντακτικού επιτρέπει τη δημιουργία σωστών προτάσεων στις φυσικές γλώσσες, ενώ στις γλώσσες προγραμματισμού τη δημιουργία σωστών εντολών. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Τι είναι η σημασιολογία μιας γλώσσας;
Η σημασιολογία (Semantics) είναι το σύνολο των κανόνων που καθορίζει
το νόημα των λέξεων και κατά επέκταση των εκφράσεων και προτάσεων
που χρησιμοποιούνται σε μία γλώσσα. Στις γλώσσες προγραμματισμού οι οποίες είναι τεχνητές γλώσσες, ο δημιουργός της γλώσσας αποφασίζει τη σημασιολογία των λέξεων της γλώσσας. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Τι είναι η ιεραρχική σχεδίαση ενός προγράμματος;
Η τεχνική της ιεραρχικής σχεδίασης και επίλυσης ή η διαδικασία σχεδίασης “από επάνω προς τα κάτω” όπως συχνά ονομάζεται (top-down program design) περιλαμβάνει τον καθορισμό των βασικών λειτουργιών ενός προγράμματος, σε ανώτερο επίπεδο, και στη συνέχεια τη διάσπαση των λειτουργιών αυτών σε όλο και μικρότερες λειτουργίες, μέχρι το τελευταίο επίπεδο που οι λειτουργίες είναι πολύ άπλες, ώστε να επιλυθούν εύκολα. Σκοπός της ιεραρχικής σχεδίασης είναι η διάσπαση λοιπόν του προβλήματος σε μια σειρά από απλούστερα υποπροβλήματα, τα οποία να είναι εύκολο να επιλυθούν οδηγώντας στην επίλυση του αρχικού προβλήματος. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 116)
Τι είναι ο τμηματικός προγραμματισμός;
Η ιεραρχική σχεδίαση προγράμματος υλοποιείται με τον τμηματικό προγραμματισμό. Μετά την ανάλυση του προβλήματος σε αντίστοιχα υποπροβλήματα, κάθε υποπρόβλημα αποτελεί ανεξάρτητη ενότητα (module), που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα προγράμματος.
Η σωστή διαίρεση του αρχικού προβλήματος σε υποπροβλήματα και κατά συνέπεια του αρχικού προγράμματος σε τμήματα προγράμματος είναι μία διαδικασία αρκετά πολύπλοκη και θα εξεταστεί σε επόμενο κεφάλαιο.
Εδώ πρέπει να σημειωθεί ότι ο τμηματικός προγραμματισμός διευκολύνει τη δημιουργία του προγράμματος, μειώνει τα λάθη και επιτρέπει την ευκολότερη παρακολούθηση, κατανόηση και συντήρηση του προγράμματος από τρίτους. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 116,117)
Τι γνωρίζεται για τον δομημένο προγραμματισμό; Σε ποιες στοιχειώδεις λογικές δομές στηρίζεται ο δομημένος προγραμματισμός; (2003Ε)
Η μεθοδολογία που σήμερα έχει επικρατήσει απόλυτα και σχεδόν όλες οι
σύγχρονες γλώσσες προγραμματισμού υποστηρίζουν είναι ο δομημένος
προγραμματισμός (structured programming). Ο δομημένος προγραμματισμός παρουσιάστηκε στα μέσα του 1960.
Συγκεκριμένα το 1964 σε ένα συνέδριο στο Ισραήλ παρουσιάστηκε ένα
κείμενο των Bohm και Jacopini με τις θεωρητικές αρχές του δομημένου
προγραμματισμού. Οι απόψεις τους δεν έγιναν αρχικά ευρύτερα γνωστές
και αποδεκτές, αλλά το 1968 ο καθηγητής Edsger Dijkstra δημοσίευσε
ένα κείμενο που έκανε ιδιαίτερη αίσθηση και έμελλε να αλλάξει σταδιακά
τον τρόπο προγραμματισμού καθώς και τις ίδιες τις γλώσσες προγραμματισμού. Ο τίτλος της μελέτης αυτής ήταν “GO TO Statement Considered Harmful – η εντολή GOTO θεωρείται επιβλαβής” και θεμελίωνε το δομημένο προγραμματισμό. Χρειάστηκε όμως να περάσουν αρκετά χρόνια, ώστε να αρχίσει να διαδίδεται η χρήση του δομημένου προγραμματισμού.
Την εποχή εκείνη δεν υπήρχε μία μεθοδολογία για την ανάπτυξη των προγραμμάτων, τα προγράμματα ήταν μεγάλα και ιδιαίτερα μπερδεμένα με
αποτέλεσμα να ξοδεύεται πάρα πολύς χρόνος τόσο στη συγγραφή όσο
κύρια στη διόρθωση και τη μετέπειτα συντήρησή τους. Βασικός λόγος για τα προβλήματα αυτά ήταν η αλόγιστη χρήση μίας εντολής, της εντολής GOTO που χρησιμοποιούμενη άλλαζε διαρκώς τη ροή του προγράμματος.
Ο δομημένος προγραμματισμός αναπτύχθηκε από την ανάγκη να υπάρχει
μία κοινή μεθοδολογία στην ανάπτυξη των προγραμμάτων και τη μείωση
των εντολών GOTO που χρησιμοποιούνται στο πρόγραμμα.Ο δομημένος προγραμματισμός δεν είναι απλώς ένα είδος προγραμματισμού, είναι μία μεθοδολογία σύνταξης προγραμμάτων που έχει σκοπό να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων, να μειώσει τα λάθη, να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων και να διευκολύνει τις διορθώσεις και τις αλλαγές σε αυτά.
Ο δομημένος προγραμματισμός στηρίζεται στη χρήση τριών και μόνο
στοιχειωδών λογικών δομών, τη δομή της ακολουθίας, τη δομή της
επιλογής και τη δομή της επανάληψης. Όλα τα προγράμματα μπορούν
να γραφούν χρησιμοποιώντας μόνο αυτές τις τρεις δομές καθώς και
συνδυασμό τους. Κάθε πρόγραμμα όπως και κάθε ενότητα προγράμ-
ματος έχει μόνο μία είσοδο και μόνο μία έξοδο.
Αν και ο δομημένος προγραμματισμός αρχικά εμφανίστηκε σαν μία προ-
σπάθεια περιορισμού των εντολών GOTO, σήμερα αποτελεί τη βασική
μεθοδολογία προγραμματισμού.
Ο δομημένος προγραμματισμός ενθαρρύνει και βοηθάει την ανάλυση
του προγράμματος σε επιμέρους τμήματα, έτσι ώστε σήμερα ο όρος δο-
μημένος προγραμματισμός περιέχει τόσο την ιεραρχική σχεδίαση όσο
και τον τμηματικό προγραμματισμό. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 118,119)
Τι γνωρίζετε για την εντολή GOTO;
Η εντολή GOTO έχει ως αποτέλεσμα την αλλαγή της ροής του προγράμματος, της διακλάδωσης σε μία άλλη εντολή του προγράμματος εκτός από την επόμενη. Η εντολή αυτή χώρισε τους προγραμματιστές σε δύο αντιμαχόμενες ομάδες. Η μία αποτελείτο από φανατικούς υποστηρικτές της χρήσης του GOTO, οι οποίοι με τη χρήση της έλυναν εύκολα και αβασάνιστα προβλήματα της ανάπτυξης των προγραμμάτων τους και η δεύτερη με πολέμιους που έβλεπαν ότι η εντολή αυτή ήταν υπεύθυνη για τη δυσκολία στην αρχική σχεδίαση της λύσης, στην παρακολούθηση και κατανόηση του προγράμματος και τέλος στη συντήρηση. Ο δομημένος προγραμματισμός προήλθε από την ανάγκη του περιορισμού της ανεξέλεγκτης χρήσης του GOTO.
Όλες οι σύγχρονες γλώσσες προγραμματισμού υποστηρίζουν το δομημένο προγραμματισμό και διαθέτουν εντολές που καθιστούν τη χρήση του GOTO περιττή. Για λόγους όμως συμβατότητας με τις παλιότερες εκδόσεις τους καθώς και για λόγους συντήρησης παλιών προγραμμάτων, μερικές τη διατηρούν στο ρεπερτόριο των εντολών τους. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 118)
Να αναφέρετε επιγραμματικά πέντε από τα πλεονεκτήματα του δομημένου προγραμματισμού. (2016 Παλιό Σύστημα,2020Ε)
Επιγραμματικά μπορούμε να αναφέρουμε τα εξής πλεονεκτήματα του δομημένου προγραμματισμού. (ΑΕΠΠ, Βιβλίο Μαθητή, σελίδα 119)
- Δημιουργία απλούστερων προγραμμάτων.
- Άμεση μεταφορά των αλγορίθμων σε προγράμματα.
- Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα.
- Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος.
- Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους.
- Ευκολότερη διόρθωση και συντήρηση.
Να αναφέρετε τέσσερα πλεονεκτήματα του δομημένου προγραμματισμού. (2003Ε)
Μπορούμε να αναφέρουμε οποιαδήποτε από τα παρακάτω πλεονεκτήματα του δομημένου προγραμματισμού. (ΑΕΠΠ, Βιβλίο Μαθητή, σελίδα 119)
- Δημιουργία απλούστερων προγραμμάτων.
- Άμεση μεταφορά των αλγορίθμων σε προγράμματα.
- Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα.
- Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος.
- Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους.
- Ευκολότερη διόρθωση και συντήρηση.
Που στηρίζεται η ιδέα του αντικειμενοστραφούς προγραμματισμού;
Η ιδέα του αντικειμενοστραφούς προγραμματισμού ή της αντικειμενοστραφούς σχεδίασης έχει τις ρίζες της σε πολύ απλοϊκή ιδέα. Ένα πρόγραμμα περιγράφει “ενέργειες” (επεξεργασία) που εφαρμόζονται πάνω σε δεδομένα. Ένα βασικό ερώτημα που τίθεται είναι αν η φιλοσοφία, η δομή του προγράμματος είναι προτιμότερο να στηρίζεται στις “ενέργειες” ή στα δεδομένα. Η απάντηση σε αυτό το ερώτημα προσδιορίζει και τη βασική διαφορά ανάμεσα στις παραδοσιακές προγραμματιστικές τεχνικές και στην αντικειμενοστραφή προσέγγιση.
Η αντικειμενοστραφής σχεδίαση εκλαμβάνει ως πρωτεύοντα δομικά στοιχεία ενός προγράμματος τα δεδομένα, από τα οποία δημιουργούνται
με κατάλληλη μορφοποίηση τα αντικείμενα (objects). Αυτή η σχεδίαση
αποδείχθηκε ότι επιφέρει καλύτερα αποτελέσματα, αφού τα προγράμματα που δημιουργούνται είναι περισσότερο ευέλικτα και επαναχρησιμοποιήσιμα. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 119,120)
Τι ονομάζεται αντικείμενο πρόγραμμα; (2021)
Αντικείμενο (object) πρόγραμμα λέγεται το πρόγραμμα που παράγεται από το μεταγλωττιστή. (ΑΕΠΠ, Βιβλίο Μαθητή, σελ. 121)
Ποιος είναι ο ρόλος του συνδέτη – φορτωτή σε ένα προγραμματιστικό περιβάλλον; (2014)
Το πρόγραμμα που κάνει τη σύνδεση μεταξύ του αντικείμενου προγράμματος και των τμημάτων προγράμματος που είναι απαραίτητα για να εκτελεστεί το αντικείμενο πρόγραμμα λέγεται συνδέτης – φορτωτής (linker- loader). Το αποτέλεσμα του συνδέτη είναι η παραγωγή του εκτελέσιμου προγράμματος (executable), το οποίο είναι το τελικό πρόγραμμα που εκτελείται από τον υπολογιστή. Για το λόγο αυτό η συνολική διαδικασία αποκαλείται μεταγλώττιση και σύνδεση. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 121)
Ποια/Ποιές είναι η διαφορά μεταξύ διερμηνευτή και μεταγλωττιστή; (2002Ε,2008)
Κάθε πρόγραμμα που γράφτηκε σε οποιαδήποτε γλώσσα προγραμματισμού πρέπει να μετατραπεί σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον υπολογιστή, δηλαδή σε εντολές γλώσσας μηχανής. Η μετατροπή αυτή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων. Υπάρχουν δύο μεγάλες κατηγορίες τέτοιων προγραμμάτων, οι μεταγλωττιστές (compilers) και οι διερμηνευτές (interpreters).
Παρακάτω μπορούμε να δούμε τις κυριότερες διαφορές τους.
| Χαρακτηριστικό | Μεταγλωττιστής (Compiler) | Διερμηνέας (Interpreter) |
| Τρόπος μετάφρασης | Όλο το πρόγραμμα μαζί εκ των προτέρων | Γραμμή προς γραμμή κατά την εκτέλεση |
| Τελικό προϊόν | Δημιουργεί αυτόνομο εκτελέσιμο αρχείο (binary) | Δεν δημιουργεί αρχείο, χρειάζεται πάντα τον interpreter |
| Ταχύτητα εκτέλεσης | Πολύ υψηλή | Χαμηλότερη |
| Χρόνος έναρξης | Καθυστερεί (απαιτείται στάδιο compilation) | Άμεσος |
| Εντοπισμός λαθών | Αναφέρει όλα τα λάθη μαζεμένα πριν την εκτέλεση | Σταματάει στο πρώτο λάθος που θα συναντήσει |
| Ιδιωτικότητα κώδικα | Ο αρχικός κώδικας κρύβεται στο εκτελέσιμο | Ο πηγαίος κώδικας είναι εμφανής και προσβάσιμος |
Ποιος είναι ο ρόλος του μεταγλωττιστή σε ένα προγραμματιστικό περιβάλλον;(2014)
Ο μεταγλωττιστής έχοντας ως είσοδο το πηγαίο πρόγραμμα (source) παράγει το αντικείμενο πρόγραμμα (object) το οποίο είναι μεν σε μορφή κατανοητή από τον υπολογιστή, αλλά συνήθως δεν είναι σε θέση να εκτελεστεί. Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα προγράμματος απαραίτητα για την εκτέλεσή του, τμήματα που είτε τα γράφει ο προγραμματιστής είτε βρίσκονται στις βιβλιοθήκες (libraries) της γλώσσας. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 121)
Ποια είναι η διαδικασία μεταγλώττισης και σύνδεσης ενός προγράμματος; Να περιγράψετε τη διαδικασία για τη μετατροπή με μεταγλωττιστή ενός πηγαίου προγράμματος σε εκτελέσιμο πρόγραμμα, συμπεριλαμβανομένης της ανίχνευσης και διόρθωσης λαθών. (2002)
Στο παρακάτω σχήμα (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 121) μπορούμε να παρατηρήσουμε ότι η διαδικασία μεταγλώττισης και σύνδεσης περιλαμβάνει τα παρακάτω στάδια:
- Μεταγλώττιση του αρχικού προγράμματος
- Αν υπάρχουν συντακτικά σφάλματα επιστροφή στο Αρχικό Πρόγραμμα, διαφορετικά δημιουργία Αντικείμενου Προγράμματος.
- Σύνδεση του Αντικείμενου Προγράμματος με βιβλιοθήκες κτλ
- Εφόσον η σύνδεση είναι επιτυχής δημιουργία του Εκτελέσιμου Προγράμματος.

Ποιος είναι ο ρόλος του συντάκτη σε ένα προγραμματιστικό περιβάλλον (2014)
Ο συντάκτης είναι ουσιαστικά ένας μικρός επεξεργαστής κειμένου, με δυνατότητες όμως που διευκολύνουν τη γρήγορη γραφή των εντολών των προγραμμάτων. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 122)
7. Βασικές Έννοιες Προγραμματισμού
Από τι αποτελείται το λεξιλόγιο μιας γλώσσας; (2004)
Το λεξιλόγιο αποτελείται από ένα υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου, τις λέξεις που είναι δεκτές από τη γλώσσα. Για παράδειγμα, στην ελληνική γλώσσα η ακολουθία των γραμμάτων ΑΒΓΑ είναι δεκτή αφού αποτελεί λέξη, αλλά η ακολουθία ΑΒΓΔΑ δεν αποτελεί λέξη της ελληνικής γλώσσας, άρα δεν είναι δεκτή. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Από τι αποτελείται η γραμματική μιας γλώσσας; (2018)
Η Γραμματική αποτελείται από το τυπικό ή τυπολογικό (accidence) και
το συντακτικό (syntax).
Τυπικό είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες
μία λέξη είναι αποδεκτή. Για παράδειγμα, στην ελληνική γλώσσα οι λέξεις
γλώσσα, γλώσσας, γλώσσες είναι δεκτές, ενώ η λέξη γλώσσατ δεν είναι
αποδεκτή.
Συντακτικό είναι το σύνολο των κανόνων που καθορίζει τη νομιμότητα
της διάταξης και της σύνδεσης των λέξεων της γλώσσας για τη δημιουργία προτάσεων. Η γνώση του συντακτικού επιτρέπει τη δημιουργία σωστών προτάσεων στις φυσικές γλώσσες, ενώ στις γλώσσες προγραμματισμού τη δημιουργία σωστών εντολών. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Τι καλείται αλφάβητο μιας γλώσσας; (2004)
Αλφάβητο μίας γλώσσας καλείται το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα.
Για παράδειγμα, η ελληνική γλώσσα περιέχει τα εξής στοιχεία: Τα γράμ-
ματα του αλφαβήτου πεζά και κεφαλαία 48 δηλαδή χαρακτήρες (Α-Ω και
α-ω), τα 10 ψηφία (0-9) και όλα τα σημεία στίξης. Αντίστοιχα η αγγλική
γλώσσα περιλαμβάνει τα γράμματα του αγγλικού αλφαβήτου (Α-Ζ και
a-z) καθώς και τα ψηφία και όλα τα σημεία στίξης που χρησιμοποιούνται. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 115)
Να αναφέρετε τους τύπους των μεταβλητών που υποστηρίζει η ΓΛΩΣΣΑ. Για κάθε τύπο μεταβλητής να γράψετε μια εντολή εκχώρησης σταθερής τιμής σε μεταβλητή. (2010)
Οι τύποι των μεταβλητών που υποστηρίζει η ΓΛΩΣΣΑ είναι (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 128):
ΑΚΕΡΑΙΕΣ, ΠΡΑΓΜΑΤΙΚΕΣ, ΧΑΡΑΚΤΗΡΕΣ και ΛΟΓΙΚΕΣ
Ας δούμε παρακάτω ένα παράδειγμα εκχώρησης σταθερής τιμής σε μεταβλητή:
x <– 1 !Ακέραιες
y<– 1.5 !Πραγματικές
z<–‘Πληροφορική’ !Χαρακτήρες
k<–Αληθής !Λογικές
Ποιοι είναι οι τύποι δεδομένων της ΓΛΩΣΣΑΣ;
Παρακάτω ακολουθούν οι τύποι δεδομένων της ΓΛΩΣΣΑΣ (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 128):
Ακέραιος τύπος. Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι
γνωστοί από τα μαθηματικά. Οι ακέραιοι μπορούν να είναι θετικοί, αρνητικοί ή μηδέν. Παραδείγματα ακεραίων είναι οι αριθμοί 1, 3409, 0, -980.
Πραγματικός τύπος. Ο τύπος αυτός περιλαμβάνει τους πραγματικούς
αριθμούς που γνωρίζουμε από τα μαθηματικά. Οι αριθμοί 3.14159,
2.71828, -112.45, 0.45 είναι πραγματικοί αριθμοί. Και οι πραγματικοί αριθμοί μπορούν να είναι θετικοί, αρνητικοί ή μηδέν.
Χαρακτήρας. Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο
και μία σειρά χαρακτήρων. Τα δεδομένα αυτού του τύπου μπορούν να
περιέχουν οποιονδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο.
Παραδείγματα χαρακτήρων είναι ‘Κ’, ‘Κώστας’, ‘σήμερα είναι Τετάρτη’, ‘Τα
πολλαπλάσια του 15 είναι’. Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά, ‘ ‘. Τα δεδομένα αυτού του τύπου, επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες, ονομάζονται συχνά αλφαριθμητικά.
Λογικός. Αυτός ο τύπος δέχεται μόνο δύο τιμές: ΑΛΗΘΗΣ και ΨΕΥΔΗΣ. Οι
τιμές αντιπροσωπεύουν αληθείς ή ψευδείς συνθήκες.
Να αναφέρετε επιγραμματικά τους τύπους Δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ. (2024Ε)
Οι τύποι Δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι ακέραιος, πραγματικός, χαρακτήρας και λογικός. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 128)
Τι είναι οι συμβολικές σταθερές;
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα, εφό-
σον αυτά δηλωθούν στην αρχή του προγράμματος (στο τμήμα δήλωσης
σταθερών). (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 128)
Τι είναι οι δεσμευμένες λέξεις;
Επειδή μερικές λέξεις χρησιμοποιούνται από την ίδια τη ΓΛΩΣΣΑ για συγκεκριμένους λόγους, όπως οι λέξεις ΠΡΟΓΡΑΜΜΑ, ΑΚΕΡΑΙΕΣ, ΠΡΑΓΜΑΤΙΚΕΣ, ΑΝ κ.λπ., αυτές οι λέξεις δεν μπορούν να χρησιμοποιηθούν ως ονόματα. Οι λέξεις αυτές αποκαλούνται δεσμευμένες. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 129)
Ποιοι περιορισμοί υπάρχουν στην ονοματοδοσία μιας μεταβλητής;
Κάθε πρόγραμμα, καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα όνομα, με το οποίο αναφερόμαστε σε αυτά. Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω, Α-Ζ), ψηφία (0-9) καθώς και τον χαρακτήρα κάτω παύλα (underscore) ( _ ), ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 129)
Τι είναι μια μεταβλητή;
Μια μεταβλητή παριστάνει μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται.Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες θέσεις μνήμης του υπολογιστή. Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης και όπως αναφέρθηκε μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος.
Μπορούμε να παρομοιάσουμε τη μεταβλητή και την αντίστοιχη θέση μνήμης σαν ένα γραμματοκιβώτιο, το οποίο εξωτερικά έχει ως όνομα το όνομα της μεταβλητής και ως περιεχόμενο εσωτερικά την τιμή που έχει εκείνη τη συγκεκριμένη στιγμή η μεταβλητή. Ενώ η τιμή της μεταβλητής μπορεί να αλλάζει κατά την εκτέλεση του προγράμματος, αυτό που μένει υποχρεωτικά αναλλοίωτο είναι ο τύπος της μεταβλητής. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 129,130)
Ποιους αριθμητικούς τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ γνωρίζετε;
Παρακάτω μπορούμε να δούμε τους αριθμητικούς τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 131):

Να αναφέρεται τέσσερις από τις μαθηματικές συναρτήσεις που περιέχονται στη ΓΛΩΣΣΑ. (2020)
Οι μαθηματικές συναρτήσεις που περιέχονται στη γλώσσα είναι (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 131):
- ΗΜ(Χ) Υπολογισμός ημιτόνου
- ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
- ΕΦ(Χ) Υπολογισμός εφαπτομένης
- Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
- ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
- Ε(Χ) Υπολογισμός του ex
- Α_Μ(Χ) Ακέραιο μέρος του Χ
- Α_Τ(Χ) Απόλυτη τιμή του Χ
Τι είναι η αριθμητική έκφραση;
Όταν μια τιμή προκύπτει από υπολογισμό, τότε αναφερόμαστε σε εκφράσεις (expressions). Για τη σύνταξη μιας αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές, μεταβλητές, συναρτήσεις, αριθμητικοί τελεστές και παρενθέσεις. Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις. Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή, η οποία βρίσκεται μετά την εκτέλεση των πράξεων. Γι’ αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα, δηλαδή να έχουν κάποια τιμή.(ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 131)
Ποια είναι η ιεραρχία των πράξεων που παρουσιάζονται σε μια έκφραση;
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα
με την ακόλουθη ιεραρχία
- Ύψωση σε δύναμη
- Πολλαπλασιασμός και διαίρεση
- Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια, τότε οι πράξεις εκτελούνται από τ’ αριστερά
προς τα δεξιά. Σε πολλές όμως περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας. Αυτό επιτυγχάνεται με την εισαγωγή των παρενθέσεων. Η πράξη που πρέπει να προηγηθεί περικλείεται σε ένα ζεύγος παρενθέσεων, οπότε και εκτελείται πρώτη. Π.χ. η έκφραση 2 + 34 δίδει ως αποτέλεσμα 14, ενώ η (2 + 3)4 δίδει 20, διότι εκτελείται πρώτα η πρόσθεση και μετά ο πολλαπλασιασμός. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 132)
8. Επιλογή και Επανάληψη
Με ποιο τρόπο γίνεται η σύγκριση μεταβλητών τύπου ΧΑΡΑΚΤΗΡΕΣ;
Η σύγκριση ατομικών χαρακτήρων στηρίζεται στην αλφαβητική σειρά, για παράδειγμα το ‘α’ θεωρείται μικρότερο από το ‘β’. Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις ότου βρεθεί κάποια διαφορά, για παράδειγμα η λέξη ‘κακός’ θεωρείται μικρότερη από τη λέξη ‘καλός’ αφού το γράμμα κ προηγείται του γράμματος λ. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 139)
Με ποιο τρόπο γίνεται η σύγκριση μεταβλητών τύπου ΛΟΓΙΚΕΣ;
Η σύγκριση λογικών μεταβλητών έχει έννοια μόνο στην περίπτωση του ίσου ( = ) και του διάφορου (<>), αφού οι τιμές που μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 139)
Τι είναι τα εμφωλευμένα ΑΝ;
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορ-
φής ΑΝ…ΤΟΤΕ…ΑΛΛΙΩΣ που περιέχονται η μία μέσα στην άλλη. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 142)
Ποιες δομές επανάληψης γνωρίζετε;
Γνωρίζουμε τρεις εντολές επανάληψης, την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς όσο η συνθήκη είναι Αληθής, την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος την εντολή ΓΙΑ, με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο αριθμό φορών. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 145)
Να περιγράψετε τη σύνταξη των τριών εντολών επανάληψης που υποστηρίζει η ΓΛΩΣΣΑ. (2018Ε)

(ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 145-150)
Να γράψετε σε ψευδογλώσσα (ψευδοκώδικα) τη γενική μορφή (σύνταξη) κάθε μιας από τις τρεις δομές επανάληψης.(2000Ε)

Να γράψετε τη σύνταξη της εντολής ΟΣΟ… ΕΠΑΝΑΛΑΒΕ και να περιγράψετε τη λειτουργία της. (2015Ε)
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
…
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Λειτουργία Ελέγχεται η συνθήκη και αν είναι Αληθής, εκτελούνται οι εντολές που βρίσκονται ανάμεσα στις ΟΣΟ_ΕΠΑΝΑΛΑΒΕ και ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ. Στη συνέχεια ελέγχεται πάλι η συνθήκη και αν ισχύει, εκτελούνται πάλι οι ίδιες εντολές. Όταν η λογική έκφραση γίνει Ψευδής, τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 146)
Τι είναι η τιμή φρουρός;
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό. Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος. Η τιμή αυτή είναι τέτοια, ώστε να μην είναι λογικά σωστή για το πρόβλημα. Η τιμή αυτή συχνά αποκαλείται “τιμή φρουρός“. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 147)
Ποια είναι η σημαντικότερη δομή επανάληψης;
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ… ΕΠΑΝΑΛΑΒΕ. Σε αυτή, η συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται συνεχώς, όσο η συνθήκη αυτή ισχύει. Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι’ αυτό η εντολή ΟΣΟ… ΕΠΑΝΑΛΑΒΕ
είναι η σημαντικότερη από όλες τις εντολές επανάληψης. Χαρακτηριστικό της επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός, ούτε μπορεί να υπολογιστεί πριν από την εκτέλεση του προγράμματος. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 145)
Πότε συνίσταται να επιλέγουμε να χρησιμοποιήσουμε τη δομή επανάληψης ΓΙΑ;
Όταν είναι γνωστό από την αρχή το πλήθος των επαναλήψεων που απαιτείται να πραγματοποιηθούν. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 149)
Πότε συνίσταται να επιλέγουμε να χρησιμοποιήσουμε τη δομή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ;
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά, είναι προτιμότερη η χρήση της ΜΕΧΡΙΣΟΤΟΥ. Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 148)
Ποιοι κανόνες ισχύουν στη χρήση εμφωλευμένων βρόχων; (2023Ε)
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων. Σε αυτή την περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο. Στη χρήση των εμφωλευμένων βρόχων ισχύουν συγκεκριμένοι κανόνες που πρέπει να ακολουθούνται αυστηρά για τη σωστή λειτουργία των προγραμμάτων. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 150). Συγκεκριμένα:
- Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό. Ο βρόχος που ξεκινάει τελευταίος, πρέπει να ολοκληρώνεται πρώτος.
- Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του.
- Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας βρίσκεται στο εσωτερικό του άλλου.
Να γράψετε τους κανόνες που πρέπει να ακολουθούνται στη χρήση των εμφωλευμένων βρόχων με εντολές ΓΙΑ. (2014)
Στη χρήση των εμφωλευμένων βρόχων ισχύουν συγκεκριμένοι κανόνες που πρέπει να ακολουθούνται αυστηρά για τη σωστή λειτουργία των προγραμμάτων.
Συγκεκριμένα: (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 150)
- Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό. Ο βρόχος που ξεκινάει τελευταίος, πρέπει να ολοκληρώνεται πρώτος.
- Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του.
- Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας βρίσκεται στο εσωτερικό του άλλου.
9. Πίνακες
Τι ονομάζεται πίνακας στη ΓΛΩΣΣΑ; (2014Ε)
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Η αναφορά σε ατομικά στοιχεία του πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 156)
Ποια εντολή επανάληψης συνηθίζουμε να χρησιμοποιούμε με τους πίνακες;
Η ανάγνωση, η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους, οι οποίοι επαναλαμβάνονται προκαθορισμένο αριθμό φορών, όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης ΓΙΑ. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 157)
Ποιοι είναι οι δύο πλέον διαδεδομένοι αλγόριθμοι αναζήτησης; Ποιος είναι ο πλέον αποδοτικός και τι περιορισμό έχει; (2017Ε)
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης:
- Η σειριακή αναζήτηση
- Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η λιγότερο αποτελεσματική μέθοδος. Χρησιμοποιείται όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι. Αντίθετα η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 166)
Πότε πρέπει να χρησιμοποιούνται πίνακες;
H χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών
δεδομένων ιδίου τύπου, αλλά συχνά η χρήση τους είναι περιττή και επι-
ζήμια στην ανάπτυξη του προγράμματος. Hαπόφαση για τη χρήση ή όχι πίνακα για τη διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον προγραμματισμό. Γενικά, αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη μέχρι το τέλος της εκτέλεσης, τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του προβλήματος. Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 160)
Να αναφέρετε δύο μειονεκτήματα της χρήσης των πινάκων. (2004)
Yπάρχουν δύο μειονεκτήματα από τη χρήση πινάκων.
Οι πίνακες απαιτούν μνήμη. Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης. Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και σε αδυναμία εκτέλεσης του προγράμματος.
Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος. Στο προηγούμενο πρόγραμμα του υπολογισμού των στατιστικών μεγεθών, υπάρχει ανώτατο όριο στο πλήθος των αριθμών ίσο με 100. Αυτό γιατί οι πίνακες είναι στατικές δομές και το μέγεθός τους πρέπει να δηλώνεται στην αρχή του προγράμματος, ενώ παραμένει υποχρεωτικά σταθερό κατά την εκτέλεση του προγράμματος. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 160)
Τι είναι οι πολυδιάστατοι πίνακες;
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες
με περισσότερες διαστάσεις, τρισδιάστατοι, τετραδιάστατοι και γενικά
πολυδιάστατοι, ανάλογα με τον αριθμό των δεικτών που χρησιμοποιούνται για τον καθορισμό των στοιχείων. Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη χρήση πινάκων μονοδιάστατων ή δισδιάστατων. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 162)
Να αναφέρετε ονομαστικά τις τυπικές επεξεργασίες πινάκων. (2016Ε-Παλιό Σύστημα)
Οι τυπικές αυτές επεξεργασίες είναι: (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 165)
- Υπολογισμός αθροισμάτων στοιχείων του πίνακα.
- Εύρεση του μέγιστου ή του ελάχιστου στοιχείου.
- Ταξινόμηση των στοιχείων του πίνακα.
- Αναζήτηση ενός στοιχείου του πίνακα.
- Συγχώνευση δύο πινάκων.
Να αναφέρετε επιγραμματικά τις τυπικές επεξεργασίες πινάκων. (2024)
Οι τυπικές επεξεργασίες πινάκων είναι (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 165,166):
- Υπολογισμός αθροισμάτων στοιχείων του πίνακα.
- Εύρεση του μέγιστου ή του ελάχιστου στοιχείου.
- Ταξινόμηση των στοιχείων του πίνακα.
- Αναζήτηση ενός στοιχείου του πίνακα.
- Συγχώνευση δύο πινάκων.
Να αναφέρετε τις τυπικές επεξεργασίες πινάκων. (2020)
Οι τυπικές επεξεργασίες πινάκων είναι (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 165,166):
- Υπολογισμός αθροισμάτων στοιχείων του πίνακα.
- Εύρεση του μέγιστου ή του ελάχιστου στοιχείου.
- Ταξινόμηση των στοιχείων του πίνακα.
- Αναζήτηση ενός στοιχείου του πίνακα.
- Συγχώνευση δύο πινάκων.
Να αναφέρετε τέσσερις τυπικές επεξεργασίες που γίνονται στα στοιχεία των πινάκων. (2003)
Μπορούμε να αναφέρουμε οποιεσδήποτε από τις παρακάτω (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 165,166):
- Υπολογισμός αθροισμάτων στοιχείων του πίνακα.
- Εύρεση του μέγιστου ή του ελάχιστου στοιχείου.
- Ταξινόμηση των στοιχείων του πίνακα.
- Αναζήτηση ενός στοιχείου του πίνακα.
- Συγχώνευση δύο πινάκων.

Τι ονομάζεται τμηματικός προγραμματισμός; (2011)
Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 171)
Τι λέγεται υποπρόγραμμα; (2011)
Υποπρόγραμμα είναι ένα αυτοτελές (ανεξάρτητο) τμήμα προγράμματος που επιτελεί μια συγκεκριμένη εργασία, γράφεται ξεχωριστά από το κύριο πρόγραμμα και μπορεί να κληθεί/εκτελεστεί από αυτό (ή από άλλο υποπρόγραμμα) όσες φορές χρειαστεί.
Αναφέρετε τις ιδιότητες που πρέπει να διακρίνουν τα υποπρογράμματα.(2005Ε)
Υπάρχουν τρεις ιδιότητες που πρέπει να διακρίνουν τα υποπρογράμματα (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 173):
1. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Στην πραγματικότητα κάθε υποπρόγραμμα ενεργοποιείται με την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του, εκτελεί ορισμένες ενέργειες, και απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του.
2. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. Αυτό σημαίνει ότι κάθε υποπρόγραμμα μπορεί να σχεδιαστεί, να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα υποπρογράμματα. Στην πράξη βέβαια η απόλυτη ανεξαρτησία είναι δύσκολο να επιτευχθεί.
3. Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο. Η έννοια του μεγάλου προγράμματος είναι υποκειμενική, αλλά πρέπει κάθε υποπρόγραμμα να είναι τόσο, ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται. Γενικά κάθε υποπρόγραμμα πρέπει να εκτελεί μόνο μία λειτουργία. Αν εκτελεί περισσότερες λειτουργίες, τότε συνήθως μπορεί και πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα.
Να αναφέρετε τις ιδιότητες που πρέπει να διακρίνουν τα υποπρογράμματα και να περιγράψετε μια από αυτές. (2009Ε)
Υπάρχουν τρεις ιδιότητες που πρέπει να διακρίνουν τα υποπρογράμματα (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 173):
1. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Στην πραγματικότητα κάθε υποπρόγραμμα ενεργοποιείται με την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του, εκτελεί ορισμένες ενέργειες, και απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του.
2. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. Αυτό σημαίνει ότι κάθε υποπρόγραμμα μπορεί να σχεδιαστεί, να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα υποπρογράμματα. Στην πράξη βέβαια η απόλυτη ανεξαρτησία είναι δύσκολο να επιτευχθεί.
3. Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο. Η έννοια του μεγάλου προγράμματος είναι υποκειμενική, αλλά πρέπει κάθε υποπρόγραμμα να είναι τόσο, ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται. Γενικά κάθε υποπρόγραμμα πρέπει να εκτελεί μόνο μία λειτουργία. Αν εκτελεί περισσότερες λειτουργίες, τότε συνήθως μπορεί και πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα.
Να αναπτύξετε τρία χαρακτηριστικά των υποπρογραμμάτων. (2003Ε)
Η σωστή χρήση του τμηματικού προγραμματισμού, δηλαδή ο σωστός χωρισμός ενός σύνθετου προγράμματος σε υποπρογράμματα εξασφαλίζει τέσσερα βασικά χαρακτηριστικά του σωστού προγραμματισμού (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 173,174):
1. Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου
προγράμματος. Επιτρέπει την εξέταση και την επίλυση απλών προβλημάτων και όχι στην αντιμετώπιση του συνολικού προβλήματος. Με τη σταδιακή
επίλυση των υποπροβλημάτων και τη δημιουργία των αντιστοίχων
υποπρογραμμάτων τελικά επιλύεται το συνολικό πρόβλημα.
2. Διευκολύνει την κατανόηση και διόρθωση του προγράμματος.
Ο χωρισμός του προγράμματος σε μικρότερα αυτοτελή τμήματα επιτρέπει τη γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα. Επίσης διευκολύνει οποιονδήποτε χρειαστεί να διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα. Όπως έχει πολλές φορές τονιστεί αυτό είναι πολύ σημαντικό χαρακτηριστικό του σωστού προγραμματισμού, αφού ένα μεγάλο πρόγραμμα στον κύκλο της ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές.
3. Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προ-
γράμματος. Πολύ συχνά χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή που ένα υποπρόγραμμα έχει γραφεί,
μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος. Έτσι
μειώνονται το μέγεθος του προγράμματος, ο χρόνος που απαιτείται
για τη συγγραφή του και οι πιθανότητες λάθους, ενώ ταυτόχρονα το πρόγραμμα γίνεται πιο εύληπτο και κατανοητό.
4. Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού. Ένα υποπρόγραμμα που έχει γραφεί μπορεί να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα. Από τη στιγμή που έχει δημιουργηθεί, η χρήση του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού, όπως για τον υπολογισμό του ημίτονου ή του συνημίτονου ή την εντολή με την οποία εκτελεί μία συγκεκριμένη διαδικασία, για παράδειγμα γράφει στην οθόνη (εντολή ΓΡΑΨΕ). Αν λοιπόν χρειάζεται συχνά κάποια λειτουργία που δεν υποστηρίζεται απευθείας από τη γλώσσα, όπως για παράδειγμα η εύρεση του μικρότερου δύο αριθμών, τότε μπορεί να γραφεί το αντίστοιχο υποπρόγραμμα. Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά, ουσιαστικά
επεκτείνουν την ίδια τη γλώσσα προγραμματισμού.
Ποια είναι τα τέσσερα βασικά χαρακτηριστικά του σωστού προγραματισμού;
Η σωστή χρήση του τμηματικού προγραμματισμού, δηλαδή ο σωστός χωρισμός ενός σύνθετου προγράμματος σε υποπρογράμματα εξασφαλίζει τέσσερα βασικά χαρακτηριστικά του σωστού προγραμματισμού (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 173,174):
1. Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου
προγράμματος. Επιτρέπει την εξέταση και την επίλυση απλών προβλημάτων και όχι στην αντιμετώπιση του συνολικού προβλήματος. Με τη σταδιακή
επίλυση των υποπροβλημάτων και τη δημιουργία των αντιστοίχων
υποπρογραμμάτων τελικά επιλύεται το συνολικό πρόβλημα.
2. Διευκολύνει την κατανόηση και διόρθωση του προγράμματος.
Ο χωρισμός του προγράμματος σε μικρότερα αυτοτελή τμήματα επιτρέπει τη γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα. Επίσης διευκολύνει οποιονδήποτε χρειαστεί να διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα. Όπως έχει πολλές φορές τονιστεί αυτό είναι πολύ σημαντικό χαρακτηριστικό του σωστού προγραμματισμού, αφού ένα μεγάλο πρόγραμμα στον κύκλο της ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές.
3. Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προ-
γράμματος. Πολύ συχνά χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή που ένα υποπρόγραμμα έχει γραφεί,
μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος. Έτσι
μειώνονται το μέγεθος του προγράμματος, ο χρόνος που απαιτείται
για τη συγγραφή του και οι πιθανότητες λάθους, ενώ ταυτόχρονα το πρόγραμμα γίνεται πιο εύληπτο και κατανοητό.
4. Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού. Ένα υποπρόγραμμα που έχει γραφεί μπορεί να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα. Από τη στιγμή που έχει δημιουργηθεί, η χρήση του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού, όπως για τον υπολογισμό του ημίτονου ή του συνημίτονου ή την εντολή με την οποία εκτελεί μία συγκεκριμένη διαδικασία, για παράδειγμα γράφει στην οθόνη (εντολή ΓΡΑΨΕ). Αν λοιπόν χρειάζεται συχνά κάποια λειτουργία που δεν υποστηρίζεται απευθείας από τη γλώσσα, όπως για παράδειγμα η εύρεση του μικρότερου δύο αριθμών, τότε μπορεί να γραφεί το αντίστοιχο υποπρόγραμμα. Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά, ουσιαστικά
επεκτείνουν την ίδια τη γλώσσα προγραμματισμού.
Να αναφέρετε τέσσερα και να αναλύσετε δύο πλεονεκτήματα του τμηματικού προγραμματισμού. (2004);
Η σωστή χρήση του τμηματικού προγραμματισμού, δηλαδή ο σωστός χωρισμός ενός σύνθετου προγράμματος σε υποπρογράμματα εξασφαλίζει τέσσερα βασικά χαρακτηριστικά του σωστού προγραμματισμού (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 173,174):
1. Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου
προγράμματος. Επιτρέπει την εξέταση και την επίλυση απλών προβλημάτων και όχι στην αντιμετώπιση του συνολικού προβλήματος. Με τη σταδιακή
επίλυση των υποπροβλημάτων και τη δημιουργία των αντιστοίχων
υποπρογραμμάτων τελικά επιλύεται το συνολικό πρόβλημα.
2. Διευκολύνει την κατανόηση και διόρθωση του προγράμματος.
Ο χωρισμός του προγράμματος σε μικρότερα αυτοτελή τμήματα επιτρέπει τη γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα. Επίσης διευκολύνει οποιονδήποτε χρειαστεί να διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα. Όπως έχει πολλές φορές τονιστεί αυτό είναι πολύ σημαντικό χαρακτηριστικό του σωστού προγραμματισμού, αφού ένα μεγάλο πρόγραμμα στον κύκλο της ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές.
3. Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προ-
γράμματος. Πολύ συχνά χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή που ένα υποπρόγραμμα έχει γραφεί,
μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος. Έτσι
μειώνονται το μέγεθος του προγράμματος, ο χρόνος που απαιτείται
για τη συγγραφή του και οι πιθανότητες λάθους, ενώ ταυτόχρονα το πρόγραμμα γίνεται πιο εύληπτο και κατανοητό.
4. Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού. Ένα υποπρόγραμμα που έχει γραφεί μπορεί να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα. Από τη στιγμή που έχει δημιουργηθεί, η χρήση του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού, όπως για τον υπολογισμό του ημίτονου ή του συνημίτονου ή την εντολή με την οποία εκτελεί μία συγκεκριμένη διαδικασία, για παράδειγμα γράφει στην οθόνη (εντολή ΓΡΑΨΕ). Αν λοιπόν χρειάζεται συχνά κάποια λειτουργία που δεν υποστηρίζεται απευθείας από τη γλώσσα, όπως για παράδειγμα η εύρεση του μικρότερου δύο αριθμών, τότε μπορεί να γραφεί το αντίστοιχο υποπρόγραμμα. Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά, ουσιαστικά
επεκτείνουν την ίδια τη γλώσσα προγραμματισμού.
Να αναφέρετε επιγραμματικά τα πλεονεκτήματα του τμηματικού προγραμματισμού. (2024Ε)
Τα πλεονεκτήματα του τμηματικού προγραμματισμού, επιγραμματικά, είναι (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 173,174):
- Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος.
- Διευκολύνει την κατανόηση και διόρθωση του προγράμματος.
- Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος.
- Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού.
Τι ονομάζεται παράμετρος ενός υποπρογράμματος; (2011)
Μία παράμετρος είναι μία μεταβλητή που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 175)
Να δώσετε τον ορισμό της διαδικασίας και της συνάρτησης. (2003, 2021)
Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος.
Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της (όπως οι μαθηματικές συναρτήσεις). (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 175)
Όταν καλείται ένα υποπρόγραμμα, η διεύθυνση επιστροφής αποθηκεύεται σε μια στοίβα. Να εξηγήσετε γιατί απαιτείται η χρήση στοίβας και όχι ουράς. (2014Ε)
Αυτό που χρειάζεται κατά την κλήση του υποπρογράμματος είναι να υπάρχει ένας μηχανισμός ο οποίος θα αποθηκεύει την τρέχουσα θέση μνήμης έτσι ώστε να έχουμε μια διεύθυνση επιστροφής μόλις ολοκληρωθεί το υποπρόγραμμα. Αν είχαμε ουρά αντί για στοίβα, η διεύθυνση επιστροφής ναι μεν θα αποθηκευόταν, αλλά όταν χρειαζόταν να την ανακαλέσουμε αυτό δεν θα ήταν εφικτό (εκτός και αν στην ουρά ήταν μόνο αυτή η διεύθυνση αποθηκευμένη και καμία άλλη) διότι θα επιστρεφόταν η θέση που θα υποδείκνυε ο δείκτης front της ουράς και όχι η θέση που υποδεικνύει ο δείκτης rear που εμείς χρειαζόμαστε. Για αυτό το λόγο δεν μπορούμε να χρησιμοποιήσουμε την ουρά για την αποθήκευση των διευθύνσεων επιστροφής παρά μόνο τη στοίβα.
Να αιτιολογήσετε γιατί ένα από τα πλεονεκτήματα του τμηματικού προγραμματισμού είναι το ότι απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος. (2015Ε)
Πολύ συχνά χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή που ένα υποπρόγραμμα έχει γραφεί, μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος. Έτσι μειώνονται το μέγεθος του προγράμματος, ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους, ενώ ταυτόχρονα το πρόγραμμα γίνεται πιο εύληπτο και κατανοητό. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 174)
Τι είναι οι πραγματικές και τι οι τυπικές παράμετροι;
Η λίστα των πραγματικών παραμέτρων (actual parameter list) καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 181)
Η λίστα των τυπικών παραμέτρων (formal parameter list) καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος.
Να αναφέρετε τους κανόνες που πρέπει να ακολουθούν οι λίστες των παραμέτρων κατά την κλήση ενός υποπρογράμματος. (2006)
Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 182):
- Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να
είναι ίδιος. - Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση. Για παράδειγμα, η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κ.ο.κ.
- Η τυπική παράμετρος και η αντίστοιχή της πραγματική πρέπει να είναι
του ιδίου τύπου.
Να αναφέρετε τους κανόνες που πρέπει να ακολουθούν οι λίστες των παραμέτρων στη χρήση υποπρογραμμάτων. (2010Ε)
Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 182):
- Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να
είναι ίδιος. - Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση. Για παράδειγμα, η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κ.ο.κ.
- Η τυπική παράμετρος και η αντίστοιχή της πραγματική πρέπει να είναι
του ιδίου τύπου.
Ποιοι είναι οι κανόνες που πρέπει να ακολουθούν οι λίστες των παραμέτρων στα υποπρογράμματα; (2020)
Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 182):
- Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να
είναι ίδιος. - Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση. Για παράδειγμα, η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κ.ο.κ.
- Η τυπική παράμετρος και η αντίστοιχή της πραγματική πρέπει να είναι
του ιδίου τύπου.
Τι ονομάζεται εμβέλεια σε προγραμματιστικό περιβάλλον; Τι εμβέλεια χρησιμοποιείται στη Γλώσσα; (2017Ε)
Το τμήμα του προγράμματος που ισχύουν οι μεταβλητές λέγεται εμβέλεια (scope). (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 183).
Η περιορισμένη εμβέλεια υποχρεώνει όλες τις μεταβλητές που χρησιμοποιούνται σε ένα τμήμα προγράμματος, να δηλώνονται σε αυτό το τμήμα. Όλες οι μεταβλητές είναι τοπικές, ισχύουν δηλαδή για το υποπρόγραμμα στο οποίο δηλώθηκαν. Στη ΓΛΩΣΣΑ έχουμε περιορισμένη εμβέλεια. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 184)
Τι είναι η εμβέλεια (scope) μεταβλητών;
Το τμήμα του προγράμματος που ισχύουν οι μεταβλητές λέγεται εμβέλεια (scope) μεταβλητών. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 183)
Ποιες μεταβλητές ονομάζονται καθολικές; (2016)
Καθολικές λέγονται όλες οι μεταβλητές που μπορούν να χρησιμοποιούνται σε οποιοδήποτε τμήμα του προγράμματος, άσχετα που δηλώθηκαν. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 184)
Η χρήση καθολικών μεταβλητών σε ένα πρόγραμμα καταστρατηγεί μία από τις βασικές αρχές του τμηματικού προγραμματισμού (ιδιότητες που πρέπει να διακρίνουν τα υποπρογράμματα). Να αναφέρετε ποια είναι αυτή η ιδιότητα και να εξηγήσετε γιατί καταστρατηγείται. (2016)
Η απεριόριστη εμβέλεια καταστρατηγεί την αρχή της αυτονομίας των υποπρογραμμάτων, δημιουργεί πολλά προβλήματα και τελικά είναι αδύνατη για μεγάλα προγράμματα με πολλά υποπρογράμματα, αφού ο καθένας που γράφει κάποιο υποπρόγραμμα πρέπει να γνωρίζει τα ονόματα όλων των μεταβλητών που χρησιμοποιούνται στα υπόλοιπα υποπρογράμματα. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 184)
Να αναφέρετε και να περιγράψετε το είδος της εμβέλειας (σταθερών, μεταβλητών) που υπάρχει στη ΓΛΩΣΣΑ. (2019Ε)
Το είδος της εμβέλειας που έχουμε στη ΓΛΩΣΣΑ είναι η περιορισμένη. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 184) Η περιορισμένη εμβέλεια υποχρεώνει όλες τις μεταβλητές που χρησιμοποιούνται σε ένα τμήμα προγράμματος, να δηλώνονται σε αυτό το τμήμα. Όλες οι μεταβλητές είναι τοπικές, ισχύουν δηλαδή για το υποπρόγραμμα στο οποίο δηλώθηκαν. Τα πλεονεκτήματα της περιορισμένης εμβέλειας είναι η απόλυτη αυτονομία όλων των υποπρογραμμάτων και η δυνατότητα να χρησιμοποιείται οποιοδήποτε όνομα, χωρίς να ενδιαφέρει αν το ίδιο χρησιμοποιείται σε άλλο υποπρόγραμμα.
Να αναλύσετε τα τρία είδη εμβέλειας.
Ακολουθούν τα τρία είδη εμβέλειας (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 184):
Απεριόριστη εμβέλεια
Σύμφωνα με αυτή την αρχή όλες οι μεταβλητές και όλες οι σταθερές είναι γνωστές και μπορούν να χρησιμοποιούνται σε οποιοδήποτε τμήμα του προγράμματος, άσχετα που δηλώθηκαν. Όλες οι μεταβλητές είναι καθολικές. Η απεριόριστη εμβέλεια καταστρατηγεί την αρχή της αυτονομίας των υποπρογραμμάτων, δημιουργεί πολλά προβλήματα και τελικά είναι αδύνατη για μεγάλα προγράμματα με πολλά υποπρογράμματα, αφού ο καθένας που γράφει κάποιο υποπρόγραμμα πρέπει να γνωρίζει τα ονόματα όλων των μεταβλητών που χρησιμοποιούνται στα υπόλοιπα υποπρογράμματα.
Περιορισμένη εμβέλεια
Η περιορισμένη εμβέλεια υποχρεώνει όλες τις μεταβλητές που χρησιμοποιούνται σε ένα τμήμα προγράμματος, να δηλώνονται σε αυτό το τμήμα. Όλες οι μεταβλητές είναι τοπικές, ισχύουν δηλαδή για το υποπρόγραμμα στο οποίο δηλώθηκαν. Στη ΓΛΩΣΣΑ έχουμε περιορισμένη εμβέλεια. Τα πλεονεκτήματα της περιορισμένης εμβέλειας είναι η απόλυτη αυτονομία όλων των υποπρογραμμάτων και η δυνατότητα να χρησιμοποιείται οποιοδήποτε όνομα, χωρίς να ενδιαφέρει αν το ίδιο χρησιμοποιείται σε άλλο υποπρόγραμμα.
Μερικώς περιορισμένη εμβέλεια
Σύμφωνα με αυτή την αρχή άλλες μεταβλητές είναι τοπικές και άλλες καθολικές. Κάθε γλώσσα προγραμματισμού έχει τους δικούς της κανόνες και μηχανισμούς για τον τρόπο και τις προϋποθέσεις που ορίζονται οι μεταβλητές ως τοπικές ή καθολικές. Η μερικώς περιορισμένη εμβέλεια προσφέρει μερικά πλεονεκτήματα στον πεπειραμένο προγραμματιστή, αλλά για τον αρχάριο περιπλέκει το πρόγραμμα δυσκολεύοντας την ανάπτυξή του.
Να αναφέρετε ονομαστικά τα είδη της εμβέλειας μεταβλητών. Ποια εμβέλεια μεταβλητών χρησιμοποιείται στη ΓΛΩΣΣΑ; (2025)
Έχουμε τρία είδη εμβέλειας μεταβλητών: Απεριόριστη εμβέλεια, Περιορισμένη εμβέλεια και μερικώς περιορισμένη εμβέλεια. Στη ΓΛΩΣΣΑ έχουμε περιορισμένη εμβέλεια. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 184)

Να αναλύσετε τις τρεις διαφορετικές βασικές κατηγορίες λαθών που είναι δυνατό να παρουσιαστούν.
Σε ένα πρόγραμμα είναι δυνατό να παρουσιαστούν διαφορετικής μορφής λάθη, τα οποία μπορούν να χωριστούν σε τρεις βασικές κατηγορίες (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδες 233, 234):
Λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος. Τέτοια λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας δομής ελέγχου χωρίς την εντολή τερματισμού της.
Ένα λάθος που προκαλείται κατά τη συγγραφή του προγράμματος ανιχνεύεται από το μεταγλωττιστή, ο οποίος εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα. Αν το πρόγραμμα περιέχει ένα λάθος αυτής της μορφής, δεν επιτρέπεται η εκτέλεσή του, μέχρι να το διορθώσει ο προγραμματιστής.
Τα σύγχρονα προγραμματιστικά περιβάλλοντα μας προφυλάσσουν αυτόματα από τα λάθη κατά την υλοποίηση, αφού παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος. Μόλις διαπιστώσουν κάποιο συντακτικό λάθος, σταματούν και απαιτούν τη διόρθωσή του. Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε και προτείνουν αναλυτικά τον τρόπο διόρθωσής του, εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της εντολής που προκλήθηκε το λάθος.
Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος.
Όταν ένα λάθος προκληθεί κατά την εκτέλεση της εφαρμογής, είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και εκτελούν τις κατάλληλες διαδικασίες χειρισμού του.
Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη, αφού συνήθως οφείλονται ε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή, ενώ πολλές φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα. Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί, όπως η αναζήτηση διαγραμμένων αρχείων, η προσπάθεια διαίρεσης ενός αριθμού με το μηδέν, η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού μέρους του υπολογιστή, όπως η καταστροφή του σκληρού δίσκου του συστήματος, ο τερματισμός μιας σύνδεσης δικτύου και η αποσύνδεση του εκτυπωτή.
Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος. Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων, τελικά δεν παράγονται τα επιθυμητά αποτελέσματα.
Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των προγραμμάτων.
Τι είναι το πρόβλημα του έτους 2000 (millennium bug);
Το πιο δημοφιλές λάθος που παρουσιάστηκε στην ιστορία των υπολογιστών είναι το πρόβλημα του έτους 2000 (millennium bug). Το πρόβλημα αυτό είναι ιδιόμορφο, γιατί οφείλεται σε συνδυασμένη προβληματική λειτουργία του λογισμικού και του υλικού μέρους του υπολογιστή και ακόμη απασχόλησε χρονικά την κοινωνία μας αρκετά πριν από την ουσιαστική εμφάνιση των συνεπειών του. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 234)
Τι είναι η εκσφαλμάτωση;
Η διαδικασία ελέγχου, εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση (debugging). Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που προκαλούν προβλήματα στη λειτουργία του. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 235)
Συμπληρωματικό Εκπαιδευτικό Υλικό
1. Δομές Δεδομένων και Αλγόριθμοι
Να δώσετε τον ορισμό της στοίβας. (2021Ε)
Στοίβα (stack), ονομάζεται μια δομή δεδομένων το σύνολο των στοιχείων της οποίας είναι διατεταγμένο με τέτοιο τρόπο, ώστε τα στοιχεία που βρίσκονται στην κορυφή της στοίβας λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος της στοίβας λαμβάνονται τελευταία. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 13)
Τι είναι η μέθοδος LIFO;
Η μέθοδος κατά την οποία τα στοιχεία που βρίσκονται στην κορυφή της στοίβας λαμβάνονται ρώτα, ενώ αυτά που βρίσκονται στος βάθος της λαμβάνονται τελευταία λέγεται Τελευταίο Μέσα, Πρώτο Έξω ή LIFO (=Last In First Out).
Μπορούμε να φανταστούμε την τοποθέτηση των στοιχείων μιας στοίβας σε κατακόρυφη σειρά. Χαρακτηριστικό παράδειγμα είναι μια στοίβα από πιάτα. Παίρνουμε προς χρήση το πιάτο που τοποθετήσαμε τελευταίο. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 13)
Ποιες είναι οι κύριες λειτουργίες που εκτελούνται σε μια στοίβα;
Οι κύριες λειτουργίες σε μια στοίβα είναι δύο (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 13):
- Η ώθηση (push) στοιχείου στην κορυφή της στοίβας.
Στη διαδικασία της ώθησης ελέγχουμε αν η στοίβα είναι γεμάτη. Στην περίπτωση που προσπαθήσουμε να «προσθέσουμε» ένα στοιχείο σε μια ήδη γεμάτη στοίβα, έχουμε υπερχείλιση (overflow) της στοίβας. - Η απώθηση (pop) στοιχείου από τη στοίβα.
Στη διαδικασία της απώθησης ελέγχουμε αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα. Στην περίπτωση που προσπαθήσουμε να «αφαιρέσουμε» ένα στοιχείο από μία κενή στοίβα, έχουμε υποχείλιση (underflow) της στοίβας.
Να περιγράψετε τις κύριες λειτουργίες σε μια στοίβα και να αναφέρετε τι πρέπει να ελέγχει κάθε λειτουργία, προκειμένου να μην παρουσιάζεται πρόβλημα στη λειτουργία της στοίβας. (2010Ε);
Οι κύριες λειτουργίες σε μια στοίβα είναι δύο (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 13):
- Η ώθηση (push) στοιχείου στην κορυφή της στοίβας.
Στη διαδικασία της ώθησης ελέγχουμε αν η στοίβα είναι γεμάτη. Στην περίπτωση που προσπαθήσουμε να «προσθέσουμε» ένα στοιχείο σε μια ήδη γεμάτη στοίβα, έχουμε υπερχείλιση (overflow) της στοίβας. - Η απώθηση (pop) στοιχείου από τη στοίβα.
Στη διαδικασία της απώθησης ελέγχουμε αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα. Στην περίπτωση που προσπαθήσουμε να «αφαιρέσουμε» ένα στοιχείο από μία κενή στοίβα, έχουμε υποχείλιση (underflow) της στοίβας.
Πώς ονομάζονται οι δύο κύριες λειτουργίες που εκτελούνται σε μία ΣΤΟΙΒΑ δεδομένων; Τι λειτουργία επιτελούν και τι πρέπει να ελέγχεται πριν την εκτέλεσή τους; (2012);
Οι κύριες λειτουργίες σε μια στοίβα είναι δύο (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 13):
- Η ώθηση (push) στοιχείου στην κορυφή της στοίβας.
Στη διαδικασία της ώθησης ελέγχουμε αν η στοίβα είναι γεμάτη. Στην περίπτωση που προσπαθήσουμε να «προσθέσουμε» ένα στοιχείο σε μια ήδη γεμάτη στοίβα, έχουμε υπερχείλιση (overflow) της στοίβας. - Η απώθηση (pop) στοιχείου από τη στοίβα.
Στη διαδικασία της απώθησης ελέγχουμε αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα. Στην περίπτωση που προσπαθήσουμε να «αφαιρέσουμε» ένα στοιχείο από μία κενή στοίβα, έχουμε υποχείλιση (underflow) της στοίβας.
Να δώσετε τον ορισμό της ουράς. (2021Ε)
Ουρά (Queue), ονομάζεται μια δομή δεδομένων το σύνολο των στοιχείων της οποίας είναι διατεταγμένο με τέτοιο τρόπο, ώστε τα στοιχεία που τοποθετήθηκαν πρώτα στην ουρά να λαμβάνονται επίσης πρώτα. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 23)
Τι είναι η μέθοδος FIFO;
Η μέθοδος κατά την οποία τα στοιχεία που τοποθετήθηκαν πρώτα στην ουρά λαμβάνονται επίσης πρώτα ονομάζεται Πρώτο Μέσα, Πρώτο Έξω ή FIFO (=First In First Out). Μπορούμε να φανταστούμε την τοποθέτηση των στοιχείων μιας ουράς σε οριζόντια σειρά. Ο πελάτης μιας τράπεζας που μπαίνει πρώτος σε μια ουρά για να εξυπηρετηθεί, είναι αυτός που εξυπηρετείται και πρώτος, με την έξοδό του από την ουρά αναμονής. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 23)
Ποιες είναι οι κύριες λειτουργίες που εκτελούνται σε μια ουρά;
Οι κύριες λειτουργίες που εκτελούνται σε μια ουρά είναι δύο (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 23):
- Η εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς.
- Η εξαγωγή (dequeue) στοιχείου από το εμπρός άκρο της ουράς.
Τι είναι η λίστα;
Η λίστα δεν είναι τίποτα άλλο παρά μία συλλογή από αντικείμενα του ίδιου τύπου. Μπορούμε να έχουμε δηλαδή λίστες από λέξεις, από ονόματα αλλά και από αριθμούς. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 37)
Τι είναι μια απλά συνδεδεμένη λίστα;
Μία (απλά) συνδεδεμένη λίστα (linked list) είναι ένα σύνολο κόμβων διατεταγμένων γραμμικά (ο ένας μετά τον άλλο). Κάθε κόμβος περιέχει εκτός από τα δεδομένα του και έναν δείκτη που δείχνει προς τον επόμενο κόμβο. Ο δείκτης του τελευταίου κόμβου δε δείχνει σε κάποιον κόμβο (δείκτης στο κενό). Για να το δηλώσουμε αυτό λέμε ότι το πεδίο δείκτη του τελευταίου κόμβου έχει την τιμή NULL.Για να προσπελάσουμε τους κόμβους της λίστας χρειάζεται να γνωρίζουμε τη διεύθυνση (θέση στη μνήμη) του πρώτου κόμβου της λίστας. Η διεύθυνση αυτή αποθηκεύεται σε μία ειδική μεταβλητή που την ονομάζουμε συνήθως Κεφαλή (Head). (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδες 38,39)
Τι είναι μια απλά συνδεδεμένη λίστα; Να εξηγήσετε τι είναι NULL και τι Κεφαλή σε μια απλά συνδεδεμένη λίστα.
Μία (απλά) συνδεδεμένη λίστα (linked list) είναι ένα σύνολο κόμβων διατεταγμένων γραμμικά (ο ένας μετά τον άλλο). Κάθε κόμβος περιέχει εκτός από τα δεδομένα του και έναν δείκτη που δείχνει προς τον επόμενο κόμβο. Ο δείκτης του τελευταίου κόμβου δε δείχνει σε κάποιον κόμβο (δείκτης στο κενό). Για να το δηλώσουμε αυτό λέμε ότι το πεδίο δείκτη του τελευταίου κόμβου έχει την τιμή NULL.Για να προσπελάσουμε τους κόμβους της λίστας χρειάζεται να γνωρίζουμε τη διεύθυνση (θέση στη μνήμη) του πρώτου κόμβου της λίστας. Η διεύθυνση αυτή αποθηκεύεται σε μία ειδική μεταβλητή που την ονομάζουμε συνήθως Κεφαλή (Head). (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδες 38,39)
Δίδεται η λίστα: Α->Κ->Φ, να περιγράψετε τη διαδικασία για την εισαγωγή του κόμβου με δεδομένα Ε ανάμεσα στον δεύτερο και τρίτο κόμβο της λίστας. Να περιγράψετε τη διαδικασία για τη διαγραφή του κόμβου με δεδομένα Κ από την αρχική λίστα. (2016)
Για να εισάγουμε (παρεμβάλουμε) τον κόμβο με δεδομένα Ε ανάμεσα στον δεύτερο και τρίτο κόμβο της λίστας αρκεί να (Συμπληρωματικό Εκπαιδευτικό λικό, σελ. 40):
• Φροντίσουμε ώστε ο δείκτης του δεύτερου κόμβου να δείχνει τον νέο κόμβο και
• Ο δείκτης του νέου κόμβου να δείχνει τον τέταρτο κόμβο
Για τη διαγραφή του κόμβου με δεδομένα Κ από την αρχική λίστα (Συμπληρωματικό Εκπαιδευτικό υλικό, σελ. 40), αρκεί ο δείκτης του προηγούμενο κόμβου (με δεδομένα Α) να δείχνει πλέον στον επόμενο αυτού που διαγράφεται. Ο κόμβος που διαγράφηκε αποτελεί πλέον «άχρηστο δεδομένο» και ο χώρος μνήμης που καταλάμβανε παραχωρείται για άλλη χρήση.
Τι είναι μια διπλά συνδεδεμένη λίστα;
Μια λίστα μπορεί να είναι απλά συνδεδεμένη, δηλαδή να μπορούμε να κινηθούμε προς μία μόνο κατεύθυνση, ξεκινώντας από τον πρώτο κόμβο και μετακινούμενοι προς τον τελευταίο, ή να είναι διπλά συνδεδεμένη (doubly linked list), δηλαδή, να μπορούμε να τη διατρέξουμε και προς τις δύο κατευθύνσεις. Η χρήση του δεύτερου δείκτη προσφέρει τη δυνατότητα ξεκινώντας από οποιοδήποτε κόμβο της λίστας να μπορούμε να διαβάσουμε τη λίστα και προς τις δυο κατευθύνσεις. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 41)
Ποια είναι τα πλεονεκτήματα των λιστών έναντι των πινάκων;
Στα πλεονεκτήματα των λιστών (έναντι των πινάκων) συγκαταλέγονται τα εξής (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 42):
- Το δυναμικό τους μέγεθος,
- η ευκολία εισαγωγής και διαγραφής από οποιοδήποτε μέρος της λίστας, καθώς και
- η μη αναγκαιότητα δήλωσης του μεγέθους τους.
Ποια είναι τα μειονεκτήματα των λιστών έναντι των πινάκων;
Στα μειονεκτήματα των λιστών (έναντι των πινάκων) περιλαμβάνονται τα εξής (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 42):
- Η τυχαία πρόσβαση στη λίστα δεν επιτρέπεται. Είναι αδύνατο να φτάσετε στον n-οστό κόμβο μιας απλά συνδεδεμένης λίστας χωρίς πρώτα να περάσετε από όλους τους κόμβους διαδοχικά μέχρι τον συγκεκριμένο κόμβο ξεκινώντας από τον πρώτο κόμβο. Εναλλακτικά, στην περίπτωση της διπλά συνδεμένης λίστας μπορείτε να ξεκινήσετε και από τον τελευταίο κόμβο. Επομένως, δεν μπορούμε να πραγματοποιήσουμε με αποτελεσματικό τρόπο δυαδική αναζήτηση σε συνδεδεμένες λίστες.
- Οι συνδεδεμένες λίστες έχουν πολύ μεγαλύτερη επιβάρυνση από τους πίνακες, αφού οι συνδεδεμένοι κόμβοι της λίστας είναι δυναμικά κατανεμημένοι (οι οποίοι είναι λιγότερο αποτελεσματικοί στη χρήση της μνήμης) και κάθε κόμβος στη λίστα πρέπει, επιπλέον, να αποθηκεύσει
έναν πρόσθετο δείκτη που θα δείχνει στον επόμενο κόμβο. Στην περίπτωση των διπλά συνδεδεμένων λιστών χρειαζόμαστε επιπλέον έναν δεύτερο δείκτη που θα δείχνει στον προηγούμενο κόμβο.
Ποιές είναι οι διαφορές μεταξύ πινάκων και λιστών;
Οι διαφορές μεταξύ πινάκων και λιστών είναι οι παρακάτω (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 42):
- O πίνακας θεωρείται μια δομή τυχαίας προσπέλασης, σε αντίθεση με μια λίστα που είναι στην ουσία μια δομή ακολουθιακής ή σειριακής προσπέλασης. Για να φθάσουμε, δηλαδή, σ’ έναν κόμβο μιας λίστας πρέπει να περάσουμε από όλους τους προηγούμενους ξεκινώντας από τον
πρώτο. - O πίνακας έχει σταθερό μέγεθος, το οποίο δηλώνεται εξαρχής κατά την υλοποίηση. Αυτό γίνεται, διότι ο πίνακας είναι στατική δομή δεδομένων σε αντίθεση με τη λίστα που είναι δυναμική δομή και το μέγεθός της μπορεί να μεταβάλλεται καθώς εισέρχονται νέοι κόμβοι στη λίστα ή διαγράφονται κάποιοι άλλοι.
- Oι κόμβοι της λίστας αποθηκεύονται σε μη συνεχόμενες θέσεις μνήμης σε αντιδιαστολή με τους πίνακες, όπου τα στοιχεία αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.
Να αναφέρετε τις βασικές πράξεις των συνδεδεμένων λιστών. (2023)
Οι βασικές πράξεις των συνδεδεμένων λιστών είναι οι παρακάτω: (Βιβλίο Μαθητή, Συμπληρωματικό Εκπαιδευτικό Υλικό,Σελίδα 43)
- Εισαγωγή κόμβου στη λίστα (εισαγωγή κόμβου στην αρχή, στο τέλος της λίστας ή ενδιάμεσα).
- Διαγραφή κόμβου από τη λίστα (διαγραφή από την αρχή, το τέλος της λίστας ή ενδιάμεσα).
- Έλεγχος για το αν η λίστα είναι κενή.
- Αναζήτηση κόμβου για την εύρεση συγκεκριμένου στοιχείου.
Διάσχιση της λίστας και προσπέλαση των στοιχείων της (π.χ. εκτύπωση των δεδομένων που περιέχονται σε όλους τους κόμβους της λίστας).
Τι είναι ένα δένδρο;
Ένα δένδρο (tree) είναι μία δομή που αποτελείται από ένα σύνολο κόμβων και ένα σύνολο ακμών μεταξύ των κόμβων με βάση τους εξής κανόνες (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 45):
- Υπάρχει ένας ξεχωριστός κόμβος που ονομάζεται ρίζα. Αυτός είναι ένας κόμβος χωρίς γονέα.
- Για κάθε κόμβο c, εκτός από τη ρίζα, υπάρχει μόνο μια ακμή που καταλήγει στον κόμβο αυτόν ξεκινώντας από κάποιον άλλον κόμβο p. Ο κόμβος p ονομάζεται γονέας του c και ο κόμβος c παιδί του p.
- Για κάθε κόμβο υπάρχει μία μοναδική διαδρομή, δηλαδή, μια ακολουθία διαδοχικών ακμών, που ξεκινάει από τη ρίζα και τερματίζει σε αυτόν τον κόμβο.
Δένδρο θεωρούμε και το κενό δένδρο, δηλαδή το δένδρο που δεν έχει ούτε κόμβους, ούτε ακμές. Το κενό δένδρο είναι το μόνο δένδρο χωρίς ρίζα.
Τι είναι μια απλά συνδεδεμένη λίστα; Να εξηγήσετε τι είναι NULL και τι Κεφαλή σε μια απλά συνδεδεμένη λίστα. (2026)
Μία (απλά) συνδεδεμένη λίστα (linked list) είναι ένα σύνολο κόμβων διατεταγμένων γραμμικά (ο ένας μετά τον άλλο). Κάθε κόμβος περιέχει εκτός από τα δεδομένα του και έναν δείκτη που δείχνει προς τον επόμενο κόμβο.
Ο δείκτης του τελευταίου κόμβου δε δείχνει σε κάποιον κόμβο (δείκτης στο κενό). Για να το δηλώσουμε αυτό λέμε ότι το πεδίο δείκτη του τελευταίου κόμβου έχει την τιμή NULL.
Για να προσπελάσουμε τους κόμβους της λίστας χρειάζεται να γνωρίζουμε τη διεύθυνση (θέση στη μνήμη) του πρώτου κόμβου της λίστας. Η διεύθυνση αυτή αποθηκεύεται σε μία ειδική μεταβλητή που την ονομάζουμε συνήθως Κεφαλή (Head). (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδες 38,39)
Τι είναι η ρίζα, ο γονέας, το παιδί, τα αδέλφια, τα φύλλα και τα υποδένδρα σε ένα δένδρο;
- Ρίζα (Root)
Είναι ο πρώτος και ανώτερος κόμβος του δένδρου. Δεν έχει κανέναν γονέα.Κάθε μη άδειο δένδρο έχει ακριβώς μία ρίζα. Όλοι οι υπόλοιποι κόμβοι ξεκινάνε και διακλαδώνονται από αυτήν. - Γονέας (Parent)
Γονέας είναι ο κόμβος που βρίσκεται αμέσως ένα επίπεδο πάνω από έναν άλλο κόμβο και συνδέεται απευθείας μαζί του. Κάθε κόμβος (εκτός από τη ρίζα) έχει ακριβώς έναν γονέα. - Παιδί (Child)
Παιδί είναι ο κόμβος που βρίσκεται αμέσως ένα επίπεδο κάτω από έναν άλλο κόμβο και συνδέεται απευθείας με αυτόν. Ένας γονέας μπορεί να έχει ένα, κανένα ή περισσότερα παιδιά. - Αδέλφια (Siblings)
Αδέλφια ορίζονται οι κόμβοι που μοιράζονται τον ίδιο γονέα. Βρίσκονται στο ίδιο επίπεδο ιεραρχίας κάτω από την ίδια διακλάδωση. - Φύλλα (Leaves / Leaf Nodes)
Φύλλα (ή τερματικοί κόμβοι) είναι οι κόμβοι που δεν έχουν κανένα παιδί. Βρίσκονται στα άκρα του δένδρου και αποτελούν τα τέρματα των διαδρομών. - Υποδένδρα (Subtrees)
Ένα υποδένδρο είναι οποιοδήποτε τμήμα του δένδρου το οποίο αποτελείται από έναν κόμβο-γονέα (ως τοπική «ρίζα») και όλους τους απογόνους του (παιδιά, εγγόνια κ.λπ.). Η δομή του δένδρου είναι αναδρομική (recursive): κάθε υποδένδρο συμπεριφέρεται και το ίδιο ως αυτοτελές δένδρο.
Με βάση ποιους κανόνες ένα σύνολο από κόμβους και ακμές μπορεί να ονομαστεί δένδρο;
Με βάση τους εξής κανόνες (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 45):
- Υπάρχει ένας ξεχωριστός κόμβος που ονομάζεται ρίζα. Αυτός είναι ένας κόμβος χωρίς γονέα.
- Για κάθε κόμβο c, εκτός από τη ρίζα, υπάρχει μόνο μια ακμή που καταλήγει στον κόμβο αυτόν ξεκινώντας από κάποιον άλλον κόμβο p. Ο κόμβος p ονομάζεται γονέας του c και ο κόμβος c παιδί του p.
- Για κάθε κόμβο υπάρχει μία μοναδική διαδρομή, δηλαδή, μια ακολουθία διαδοχικών ακμών, που ξεκινάει από τη ρίζα και τερματίζει σε αυτόν τον κόμβο.
Δένδρο θεωρούμε και το κενό δένδρο, δηλαδή το δένδρο που δεν έχει ούτε κόμβους, ούτε ακμές. Το κενό δένδρο είναι το μόνο δένδρο χωρίς ρίζα.
Τι ονομάζεται δυαδικό δένδρο; (2022)
Ένα δυαδικό δένδρο (binary tree) είναι ένα διατεταγμένο δένδρο, στο οποίο κάθε κόμβος έχει το πολύ δύο παιδιά, το αριστερό και το δεξί παιδί. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελ 50)
Τι ονομάζεται δυαδικό δένδρο αναζήτησης;
Ένα δυαδικό δένδρο αναζήτησης (binary search tree) είναι ένα δυαδικό δένδρο, όπου για κάθε κόμβο u, όλοι οι κόμβοι του αριστερού υποδένδρου έχουν τιμές μικρότερες της τιμής του κόμβου u και όλοι οι κόμβοι του δεξιού υποδένδρου έχουν τιμές μεγαλύτερες (ή ίσες) της τιμής του κόμβου u. Για λόγους απλούστευσης θεωρούμε ότι δεν υπάρχουν τιμές ίσες με την τιμή του κόμβου u. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 52)
Τι ονομάζεται γράφος; (2024)
Ένας γράφος (graph) είναι μία δομή που αποτελείται από ένα σύνολο κόμβων (ή σημείων ή κορυφών) και ένα σύνολο γραμμών (ή ακμών ή τόξων) που ενώνουν μερικούς ή όλους τους κόμβους. Ο γράφος αποτελεί την πιο γενική δομή δεδομένων. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελ. 54)
Να αναφέρεται επιγραμματικά τους τύπους των γράφων. (2024)
Έχουμε δυο τύπους γράφων, τους κατευθυνόμενους, στους οποίους όλες οι ακμές έχουν κατεύθυνση και τους μη κατευθυνόμενους στους οποίους δεν έχουν όλες οι ακμές κατεύθυνση. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελ. 55)
Τι είναι ο κατευθυνόμενος και τι ο μη κατευθυνόμενος γράφος;
Εάν όλες οι ακμές σε έναν γράφο έχουν κατεύθυνση, ο γράφος ονομάζεται κατευθυνόμενος γράφος (directed graph). Εάν όλες οι ακμές σε έναν γράφο δεν έχουν κατεύθυνση, ο γράφος ονομάζεται μη κατευθυνόμενος γράφος (undirected graph). (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 55)
2. Τεχνικές Σχεδίασης Αλγορίθμων
Τι είναι η μέθοδος διαίρει και βασίλευε;
Η «Διαίρει και Βασίλευε» (divide and conquer) αποτελεί μια μέθοδο σχεδίασης αλγορίθμων στην οποία εντάσσονται οι τεχνικές που υποδιαιρούν ένα πρόβλημα σε μικρότερα υποπροβλήματα, που έχουν την ίδια τυποποίηση με το αρχικό πρόβλημα, αλλά είναι μικρότερα σε μέγεθος. Με όμοιο τρόπο, τα υποπροβλήματα αυτά μπορούν να διαιρεθούν σε ακόμη μικρότερα υποπροβλήματα κ.ο.κ. Έτσι η επίλυση ενός προβλήματος έγκειται στη σταδιακή επίλυση των όσο το δυνατόν μικρότερων υποπροβλημάτων, ώστε τελικά να προκύψει η συνολική λύση του αρχικού ευρύτερου προβλήματος.
Η προσέγγιση αυτή ονομάζεται «από πάνω προς τα κάτω» (top-down). (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 68)
Να αναφέρετε τα βήματα με τα οποία μπορεί να αποδοθεί η μέθοδος «Διαίρει και Βασίλευε» (2020Ε)
Η μέθοδος σχεδίασης αλγορίθμων «Διαίρει και Βασίλευε» μπορεί να αποδοθεί με τα επόμενα βήματα: (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελ 68
1. Δίνεται για επίλυση ένα στιγμιότυπο ενός προβλήματος.
2. Το στιγμιότυπο του προβλήματος υποδιαιρείται σε υπο-στιγμιότυπα του ίδιου προβλήματος.
3. Δίνεται ανεξάρτητη λύση σε κάθε ένα υπο-στιγμιότυπο.
4. Συνδυάζονται όλες οι μερικές λύσεις που βρέθηκαν για τα υπο-στιγμιότυπα, έτσι ώστε να δοθεί η συνολική λύση του προβλήματος.
3. Επιλογή και επανάληψη
Γιατί να επιλέξω την εντολή ΕΠΙΛΕΞΕ αντί της ΑΝ;
Θα διαλέξω την ΕΠΙΛΕΞΕ για πολλαπλή επιλογή όταν χρειάζομαι:
- Καθαρότερη και Πιο Ευανάγνωστη Δομή
2. Ευκολία στην Ομαδοποίηση Τιμών & Διαστημάτων
3. Ευκολότερη Συντήρηση & Διόρθωση (Debugging)
4. Σύγχρονα Προγραμματιστικά Περιβάλλοντα
Τι είναι ο αντικειμενοστραφής προγραμματισμός;
Αντικειμενοστραφής προγραμματισμός (object-oriented programming) ή αντικειμενοστραφής σχεδίαση είναι μια μεθοδολογία ανάπτυξης εφαρμογών η οποία στηρίζεται σε αυτόνομες προγραμματιστικές οντότητες με δική τους ταυτότητα και συμπεριφορά. Οι οντότητες αυτές καλούνται αντικείμενα (objects), αντιστοιχούν σε φυσικές οντότητες ή έννοιες του φυσικού μας κόσμου, και δομούνται με βάση δεδομένα (ιδιότητες) που προσδιορίζουν την υπόστασή τους και ενέργειες (κανόνες συμπεριφοράς) που εφαρμόζονται πάνω στα δεδομένα. Σε μια εφαρμογή, ένα αντικείμενο είναι ο ομαδοποιημένος συνδυασμός δεδομένων και κώδικα, τα οποία έχουμε τη δυνατότητα να χειριστούμε ενιαία. Tα δεδομένα αποτελούν τα χαρακτηριστικά ενός αντικειμένου και αναφέρονται ως ιδιότητες (properties) ενώ οι ενέργειες καθορίζουν τη συμπεριφορά του. Οι ενέργειες στον αντικειμενοστραφή προγραμματισμό αναφέρονται και ως μέθοδοι (methods). (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 86)
Τι καθορίζουν οι ιδιότητες και τι οι μέθοδοι ενός αντικειμένου; (2022)
Οι ιδιότητες καθορίζουν τα δεδομένα ενός αντικειμένου που αποτελούν τα χαρακτηριστικά του και οι μέθοδοι είναι οι ενέργειες που καθορίζουν τη συμπεριφορά του (Βιβλίο Μαθητή, Συμπληρωματικό Εκπαιδευτικό Υλικό, Σελίδα 86)
Τι είναι η ενθυλάκωση;
Σε μια αντικειμενοστραφή εφαρμογή κάθε αντικείμενο αποτελεί ξεχωριστή οντότητα και περιέχει ενσωματωμένες τις ιδιότητες (δεδομένα) και τους κανόνες συμπεριφοράς του (μεθόδους). Η δυνατότητα ενός αντικειμένου να συνδυάζει εσωτερικά τα δεδομένα και τις μεθόδους χειρισμού του καλείται ενθυλάκωση (encapsulation). Την ενθυλάκωση μπορούμε να την παρομοιάσουμε σαν ένα κέλυφος που υπάρχει γύρω από κάθε αντικείμενο και διαχωρίζει τον εσωτερικό από τον εξωτερικό του κόσμο. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 92)
Τι είναι η κλάση;
Ο γενικός τύπος ενός αντικειμένου καλείται κλάση (class) και καθορίζει τις αρχικές ιδιότητες και τη συμπεριφορά κάθε αντικειμένου που προέρχεται από αυτή. Μια κλάση αποτελεί ένα αφαιρετικό (abstract) στοιχείο (τύπο) και μπορεί να παράγει ένα απεριόριστο πλήθος δομικά ίδιων αντικειμένων. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 92)
Τι καλείται κληρονομικότητα στον αντικειμενοστραφή προγραμματισμό; (2023Ε)
Η δυνατότητα δημιουργίας ιεραρχιών αντικειμένων καλείται κληρονομικότητα (inheritance). Με βάση την κληρονομικότητα, μια κλάση μπορεί να περιγραφεί γενικά και στη συνέχεια μέσω αυτής της κλάσης να οριστούν υποκλάσεις αντικειμένων. Η κλάση απόγονος (υποκλάση) κληρονομεί και μπορεί να χρησιμοποιήσει όλα τα δεδομένα (ιδιότητες) και τις μεθόδους που περιέχει η κλάση πρόγονος (υπερκλάση). (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 99)
Τι είναι ο πολυμορφισμός στον αντικειμενοστραφή προγραμματισμό; (2025Ε)
Πολυμορφισμός (polymorphism) είναι μια ιδιότητα του αντικειμενοστραφούς προγραμματισμού με την οποία μια λειτουργία μπορεί να υλοποιείται με πολλούς διαφορετικούς τρόπους. (Συμπληρωματικό Εκπαιδευτικό Υλικό, Βιβλίο Μαθητή, σελ. 106)
5. Εκσφαλμάτωση Προγράμματος
Ποιες κατηγορίες λαθών μπορούμε να διακρίνουμε; Να τις αναλύσετε.
Μπορούμε να διακρίνουμε τις παρακάτω 3 κατηγορίες (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδες 115-120):
- Συντακτικά λάθη
Κάποιες φορές ένα πρόγραμμα δεν μπορεί να εκτελεστεί, επειδή κατά τη μετάφραση εντοπίζονται συντακτικά λάθη. Π.χ. δε γράψαμε σωστά μια δεσμευμένη λέξη, παραλείψαμε μια δεσμευμένη λέξη ή παραλείψαμε να δηλώσουμε μια μεταβλητή. - Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος
Ένα πρόγραμμα μπορεί να τερματίσει αντικανονικά λόγω διαφόρων λαθών. Για παράδειγμα, αν επιχειρήσουμε να διαιρέσουμε με το μηδέν ή αν κατά την ανάγνωση ενός ακεραίου αριθμού εισαχθεί ένα γράμμα. - Λογικά λάθη
Ακόμη κι αν το πρόγραμμά μας δεν περιέχει συντακτικά λάθη και μπορεί να εκτελεστεί, πρέπει οπωσδήποτε να ελεγχθεί, ώστε να διαπιστώσουμε αν κατά την εκτέλεσή του εμφανίζονται λογικά λάθη. Τα λογικά λάθη έχουν ως συνέπεια το πρόγραμμα σε κάποιες περιπτώσεις να εξάγει λανθασμένα αποτελέσματα. Για να εντοπίσουμε τα λογικά λάθη μπορούμε να κάνουμε δοκιμαστικές εκτελέσεις του προγράμματός μας και να ελέγξουμε αν για συγκεκριμένες τιμές εισόδου, το πρόγραμμά μας εξάγει
σωστά αποτελέσματα.
Τι είναι η εκσφαλμάτωση;
Η διαδικασία ελέγχου, εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση (debugging). Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που προκαλούν προβλήματα στη λειτουργία του. (ΑΕΠΠ,Βιβλίο Μαθητή, σελίδα 235)
Πότε εμφανίζονται τα συντακτικά λάθη ενός προγράμματος και πότε τα λογικά; (2009)
Τα συντακτικά λάθη εμφανίζονται όταν ένα πρόγραμμα δεν μπορεί ούτε καν να εκτελεστεί, δηλαδή να περάσει τη φάση της μετάφρασης. Π.χ. δε γράψαμε σωστά μια δεσμευμένη λέξη, παραλείψαμε μια δεσμευμένη λέξη ή
παραλείψαμε να δηλώσουμε μια μεταβλητή.
Τα λογικά λάθη εμφανίζονται όταν το πρόγραμμα σε κάποιες περιπτώσεις εξάγει λανθασμένα αποτελέσματα. (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδες 115-120)
Με τι μπορεί να σχετίζονται τα λογικά λάθη που μπορεί να εμφανιστούν σε μια δομή επιλογής;
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 121):
- τη συνθήκη ή τις συνθήκες
- τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής.
Με τι μπορεί να σχετίζονται τα λογικά λάθη που μπορεί να εμφανιστούν σε μια δομή επανάληψης;
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 125):
- τη συνθήκη επανάληψης ή τερματισμού,
- την αρχικοποίηση της συνθήκης,
- την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης,
- τις εντολές που περιλαμβάνονται εντός του βρόχου.
Που πρέπει να δώσουμε προσοχή κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες;
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 132) :
- στο μέγεθος των πινάκων κατά τη δήλωσή τους,
- στους δείκτες των πινάκων κατά την προσπέλασή τους,
- στη μη υπέρβαση των ορίων του πίνακα.
Να αναφέρετε τις 4 περιπτώσεις με τις οποίες σχετίζονται τα λογικά λάθη που μπορεί να εμφανιστούν σε μια δομή επανάληψης. (2022Ε)
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με (Συμπληρωματικό Εκπαιδευτικό Υλικό, σελίδα 125):
- τη συνθήκη επανάληψης ή τερματισμού,
- την αρχικοποίηση της συνθήκης,
- την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης,
- τις εντολές που περιλαμβάνονται εντός του βρόχου.