Κεφάλαιο 1ο : Ανάλυση...
Post on 06-Jul-2020
16 Views
Preview:
TRANSCRIPT
1
Κεφάλαιο 1ο Ανάλυση Προβλήματος
11 Τι είναι πρόβλημα
Με τον όρο Πρόβλημα εννοείται μια κατάσταση η οποία χρήζει αντιμετώπισης απαιτεί λύση η δε λύση της δεν
είναι γνωστή ούτε προφανής
12 Δώστε 3 παραδείγματα προβλημάτων
1048766 Το πρόβλημα με το ψύχος που αντιμετώπισαν τα στρατεύματα του Ναπολέοντα στην εκστρατεία του στη Ρωσία
είχε σαν αποτέλεσμα την ανακοπή της προέλασης και την οπισθοχώρησή του
1048766 Σοβαρότατα προβλήματα επιδημιών όπως η πανούκλα η χολέρα και η λύσσα αφάνιζαν καθημερινά χιλιάδες
ανθρώπους τον περασμένο αιώνα μέχρις ότου επιστήμονες όπως ο Pasteur και ο Fleming να ανακαλύψουν τα
κατάλληλα εμβόλια
1048766 Το πρόβλημα της μεταφοράς της ηλεκτρικής ενέργειας από τον τόπο παραγωγής στα σημεία κατανάλωσης
πονοκεφάλιασε πολύ τους υπεύθυνους περασμένων εποχών μέχρι να εμφανιστούν οι μετασχηματιστές οι οποίοι
έδωσαν λύση στο πρόβλημα
13 Συνάρτηση ποιών παραγόντων είναι η κατανόηση ενός προβλήματος
Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δύο παραγόντων
1048766 της σωστής διατύπωσης εκ μέρους του δημιουργού του και
1048766 της αντίστοιχα σωστής ερμηνείας από τη μεριά εκείνου που καλείται να το αντιμετωπίσει
14 Από ποιους παράγοντες εξαρτάται η κατανόηση ενός προβλήματος
Για να γίνει πλήρως κατανοητό ένα πρόβλημα απαιτείται
1 Σαφής διατύπωση εκ μέρους του δημιουργού του
2 Σωστή ερμηνεία από εκείνον που καλείται να το αντιμετωπίσει
Όσον αφορά τη διατύπωση η άστοχη χρήση ορολογίας και λανθασμένη σύνταξη είναι δύο στοιχεία που μπορούν
να προκαλέσουν παρερμηνείες και παραπλανήσεις Όσον αφορά τη σωστή ερμηνεία σημαντικό ρόλο παίζει το
επίπεδο της γνώσης και της αντίληψης του λύτη το οποίο καθορίζεται από τις γενικές και τις ειδικές γνώσεις
του πάνω στο αντικείμενο του προβλήματος
16 Τι ονομάζεται δεδομένο
Με τον όρο δεδομένο δηλώνεται οποιοδήποτε στοιχείο μπορεί να γίνει αντιληπτό από έναν τουλάχιστον
παρατηρητή με μία από τις πέντε αισθήσεις του
16B Τι είναι πληροφορία
Με τον όρο πληροφορία αναφέρεται οποιοδήποτε γνωσιακό στοιχείο προέρχεται από επεξεργασία δεδομένων
17 Τι δηλώνει ο όρος επεξεργασία δεδομένων
Ο όρος επεξεργασία δεδομένων δηλώνει εκείνη τη διαδικασία κατά την οποία ένας ldquoμηχανισμόςrdquo δέχεται
δεδομένα τα επεξεργάζεται σύμφωνα με έναν προκαθορισμένο τρόπο και αποδίδει πληροφορίες
18 Τι ονομάζουμε δομή ενός προβλήματος
Με τον όρο δομή ενός προβλήματος αναφερόμαστε στα συστατικά του μέρη στα επιμέρους τμήματα που το
αποτελούν καθώς επίσης και στον τρόπο που αυτά τα μέρη συνδέονται μεταξύ τους
19 Με ποιο τρόπο αντιμετωπίζουμε δύσκολα προβλήματα
Η δυσκολία αντιμετώπισης των προβλημάτων ελαττώνεται όσο περισσότερο προχωράει η ανάλυση τους σε
απλούστερα προβλήματα Ο κατακερματισμός ενός προβλήματος σε άλλα απλούστερα είναι μια από τις
διαδικασίες που ενεργοποιούν και αμβλύνουν τόσο τη σκέψη αλλά κυρίως την αναλυτική ικανότητα του ατόμου
2
110 Ποιες οι προϋποθέσεις σωστής επίλυσης ενός προβλήματος
Η σωστή επίλυση ενός προβλήματος προϋποθέτει τον επακριβή προσδιορισμό των δεδομένων που παρέχει το
πρόβλημα καθώς και την λεπτομερειακή καταγραφή των ζητούμενων που αναμένονται σαν αποτελέσματα της
επίλυσης του προβλήματος
Θα πρέπει να δοθεί μεγάλη προσοχή στην ανίχνευση των δεδομένων ενός προβλήματος Υπάρχουν πολλές
περιπτώσεις προβλημάτων όπου τα δεδομένα θα πρέπει να ldquoανακαλυφθούνrdquo μέσα στα λεγόμενα του προβλήματος
Η διαδικασία αυτή απαιτεί προσοχή συγκέντρωση και σκέψη
Το ίδιο προσεκτικά θα πρέπει να αποσαφηνιστούν και τα ζητούμενα του προβλήματος Θα πρέπει να θέτονται μια
σειρά από ερωτήσεις με στόχο την διευκρίνηση πιθανών αποριών σχετικά με τα ζητούμενα τον τρόπο
παρουσίασής τους το εύρος τους κλπ Οι ερωτήσεις αυτές μπορούν να απευθύνονται είτε στο δημιουργό του
προβλήματος είτε στον ίδιο μας τον εαυτό αν εμείς καλούμαστε να αντιμετωπίσουμε το πρόβλημα
111 Ποια τα στάδια αντιμετώπισης ενός προβλήματος
1048766 κατανόηση όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδομένων και των ζητούμενων του
προβλήματος
1048766 ανάλυση όπου το αρχικό πρόβλημα διασπάται σε άλλα επί μέρους απλούστερα προβλήματα
1048766 επίλυση όπου υλοποιείται η λύση του προβλήματος μέσω της λύσης των επιμέρους προβλημάτων
112 Με κριτήριο τη δυνατότητα επίλυσης ενός προβλήματος ποιες κατηγορίες προβλημάτων διακρίνουμε
1048766 Επιλύσιμα είναι εκείνα τα προβλήματα για τα οποία η λύση τους είναι ήδη γνωστή και έχει διατυπωθεί
Επιλύσιμα μπορεί επίσης να χαρακτηριστούν και προ-βλήματα των οποίων η λύση δεν έχει ακόμα διατυπωθεί
αλλά ή συνάφειά τους με άλλα ήδη επιλυμένα μας επιτρέπει να θεωρούμε σαν βέβαιη τη δυνατότητα επίλυσής
τους
1048766 Ανοικτά ονομάζονται εκείνα τα προβλήματα για τα οποία η λύση τους δεν έχει μεν ακόμα βρεθεί αλλά
παράλληλα δεν έχει αποδειχθεί ότι δεν επιδέχονται λύση Σαν παράδειγμα ανοικτού προβλήματος μπορούμε να
αναφέρουμε το πρόβλημα της ενοποίησης των τεσσάρων πεδίων δυνάμεων που αναφέρουμε σε προηγούμενη
παράγραφο
1048766 Άλυτα χαρακτηρίζονται εκείνα τα προβλήματα για τα οποία έχουμε φτάσει στην παραδοχή ότι δεν επιδέχονται
λύση Τέτοιου είδους πρόβλημα είναι το γνωστό από τους αρχαίους ελληνικούς χρόνους πρόβλημα του
τετραγωνισμού του κύκλου Το πρόβλημα αυτό θεωρείται άλυτο στην πραγματικότητα η λύση που επιδέχεται
είναι προσεγγιστική
113 Με κριτήριο το βαθμό δόμησης των λύσεών τους τα επιλύσιμα προβλήματα σε ποιες κατηγορίες
μπορούν να διακριθούν
1048766 Δομημένα χαρακτηρίζονται εκείνα τα προβλήματα των οποίων η επίλυση προέρχεται από μια
αυτοματοποιημένη διαδικασία Για παράδειγμα η επίλυση της δευτεροβάθμιας εξίσωσης αποτελεί ένα δομημένο
πρόβλημα αφού ο τρόπος επίλυσης της εξίσωσης είναι γνωστός και αυτοματοποιημένος
1048766 Ημιδομημένα ονομάζονται τα προβλήματα εκείνα των οποίων η λύση επιδιώκεται στα πλαίσια ενός εύρους
πιθανών λύσεων αφήνοντας στον ανθρώπινο παράγοντα περιθώρια επιλογής της
1048766 Αδόμητα χαρακτηρίζονται τα προβλήματα εκείνα των οποίων οι λύσεις δεν μπορούν να δομηθούν ή δεν έχει
διερευνηθεί σε βάθος η δυνατότητα δόμησής τους Πρωτεύοντα ρόλο στην επίλυση αυτού του τύπου
προβλημάτων κατέχει η ανθρώπινη διαίσθηση
114 Με κριτήριο το είδος της επίλυσης που επιζητούν τα προβλήματα σε ποιες κατηγορίες διακρίνονται
1048766 Απόφασης όπου η απόφαση που πρόκειται να ληφθεί σαν λύση του προβλήματος που τίθεται απαντά σε ένα
ερώτημα και πιθανόν αυτή η απάντηση να είναι ένα ldquoΝαιrdquo ή ένα ldquoΌχιrdquo Αυτό που θέλουμε να διαπιστώσουμε σε
ένα πρόβλημα απόφασης είναι αν υπάρχει απάντηση που ικανοποιεί τα δεδομένα που θέτονται από το πρόβλημα
1048766 Υπολογιστικά όπου το πρόβλημα που τίθεται απαιτεί τη διενέργεια υπολογισμών για να μπορεί να δοθεί μία
απάντηση στο πρόβλημα Σε ένα υπολογιστικό πρόβλημα ζητάμε να βρούμε τη τιμή της απάντησης που ικανοποιεί
τα δεδομένα που παρέχει το πρόβλημα
1048766 Βελτιστοποίησης όπου το πρόβλημα που τίθεται επιζητά το βέλτιστο αποτέλεσμα για τα συγκεκριμένα
δεδομένα που διαθέτει Σε ένα πρόβλημα βελτιστοποίησης αναζητούμε την απάντηση που ικανοποιεί κατά τον
καλύτερο τρόπο τα δεδομένα που παρέχει το πρόβλημα
3
115 Ποιοι οι λόγοι που αναθέτουμε την επίλυση ενός προβλήματος σε υπολογιστή
1048766 η πολυπλοκότητα των υπολογισμών
1048766 η επαναληπτικότητα των διαδικασιών
1048766 η ταχύτητα εκτέλεσης των πράξεων
1048766 το μεγάλο πλήθος των δεδομένων
116 Ποιες οι λειτουργίες που μπορεί να εκτελεί ο υπολογιστής
1048766 πρόσθεση η οποία αποτελεί τη βασική αριθμητική πράξη δεδομένου ότι και οι άλλες αριθμητικές πράξεις
μπορούν να αντιμετωπιστούν σαν διαδικασίες πρόσθεσης
1048766 σύγκριση η οποία συνιστά τη βασική λειτουργία για την επιτέλεση όλων των λογικών πράξεων
1048766 μεταφορά δεδομένων λειτουργία που προηγείται και έπεται της επεξεργασίας δεδομένων
117 Τι είναι διαγραμματική αναπαράσταση
Για τη γραφική απεικόνιση της δομής ενός προβλήματος χρησιμοποιείται συχνότατα η διαγραμματική
αναπαράσταση
Σύμφωνα με αυτή
1048766 το αρχικό πρόβλημα αναπαρίσταται από ένα ορθογώνιο παραλληλόγραμμο
1048766 κάθε ένα από τα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε πρόβλημα αναπαρίσταται
επίσης από ένα ορθογώνιο παραλληλόγραμμο
1048766 τα παραλληλόγραμμα που αντιστοιχούν στα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε
πρόβλημα σχηματίζονται ένα επίπεδο χαμηλότερα Έτσι σε κάθε κατώτερο επίπεδο δημιουργείται η γραφική
αναπαράσταση των προβλημάτων στα οποία αναλύονται τα προβλήματα του αμέσως ψηλότερου επιπέδου
118 Από ποια άποψη υπερτερεί ο υπολογιστής έναντι του ανθρώπου
Η ανωτερότητα που παρουσιάζει ο υπολογιστής εκδηλώνεται σε ποσοτικό επίπεδο και όχι σε ποιοτικό Μπορεί να
αντιμετωπίσει σε πάρα πολύ μικρό χρόνο σύνθετα λογικά προβλήματα μόνο εφόσον ο άνθρωπος έχει φροντίσει
προηγούμενα με τη χρήση κατάλληλων προγραμμάτων να του ldquoδιδάξειrdquo τον τρόπο αντιμετώπισης και επίλυσης
αυτού του είδους των προβλημάτων Τα προβλήματα και οι λύσεις τους προϋπήρξαν και εξακολουθούν να
υπάρχουν ανεξάρτητα από τους υπολογιστές
4
Κεφάλαιο 2
21 Τι είναι αλγόριθμος
Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο
χρόνο που στοχεύουν στην επίλυση ενός προβλήματος
22 Ποια τα απαραίτητα κριτήρια που ικανοποιεί ο κάθε αλγόριθμος
bull Είσοδος (input)
Καμία μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο Η περίπτωση που δεν
δίνονται τιμές δεδομένων εμφανίζεται όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς
τιμές με την βοήθεια συ-ναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών
bull Έξοδος (output)
Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν
άλλο αλγόριθμο
bull Καθοριστικότητα (definiteness)
Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της Λόγου χάριν μία εντολή
διαίρεσης πρέπει να θεωρεί και την περίπτωση όπου ο διαιρέτης λαμβάνει μηδενική τιμή
bull Περατότητα (finiteness)
Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του Μία διαδικασία που δεν
τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο αλλά λέγεται απλά υπολογιστική
διαδικασία (computational procedure)
bull Αποτελεσματικότητα (effectiveness)
Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί
αλλά πρέπει να είναι και εκτελέσιμη
23 Η έννοια του αλγόριθμου συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής
Η έννοια του αλγόριθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής
24 Από ποιες σκοπιές μελετά τους αλγορίθμους η Πληροφορική Να αναλύσετε καθεμία από αυτές
Η Πληροφορική μελετά τους αλγορίθμους από τις σκοπιές
α Υλικού Η ταχύτητα εκτέλεσης ενός αλγορίθμου επηρεάζεται από τις διάφορες τεχνολογίες υλικού και την
αρχιτεκτονική του υπολογιστή
β Γλωσσών προγραμματισμού Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (δηλαδή
χαμηλότερου ή υψηλότερου επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός αλγορίθμου Γενικά μια
γλώσσα χαμηλότερου επιπέδου είναι ταχύτερη από μια άλλη γλώσσα που είναι υψηλότερου επιπέδου
γ Θεωρητική Διερευνά αν υπάρχει ή όχι αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος Η
προσέγγιση προσδιορίζει τα όρια της λύσης που θα βρεθεί σε συγκεκριμένο πρόβλημα
δ Αναλυτική Μελετώνται οι υπολογιστικοί πόροι που απαιτούνται από έναν αλγόριθμο (πχ το μέγεθος κύριας
και δευτερεύουσας μνήμης ο χρόνος λειτουργίας της CPU και των λειτουργιών εισόδου εξόδου κλπ)
25 Ποια η διαφορά της θεωρητικής από την αναλυτική προσέγγιση στην επίλυση ενός προβλήματος με
χρήση αλγορίθμου
Η θεωρητική προσέγγιση προσδιορίζει τα όρια της λύσης και την αποδοτικότητα ενός αλγορίθμου που επιλύει ένα
συγκεκριμένο πρόβλημα ενώ η αναλυτική προσέγγιση μελετά τους υπολογιστικούς πόρους που απαιτούνται για
την εκτέλεση του αλγορίθμου
5
26 Ποιοι οι τρόποι αναπαράστασης ενός αλγορίθμου
bull με ελεύθερο κείμενο (free text) που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης
αλγορίθμου Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση
παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγορίθμων δηλαδή την αποτελεσματικότητα
bull με διαγραμματικές τεχνικές (diagramming techniques) που συνιστούν ένα γραφικό τρόπο παρουσίασης του
αλγορίθμου Από τις διάφορες διαγραμματικές τεχνικές που έχουν επινοηθεί η πιο παλιά και η πιο γνωστή ίσως
είναι το διάγραμμα ροής (flow chart) Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν
αποτελεί την καλύτερη λύση γιrsquo αυτό και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη
bull με φυσική γλώσσα (natural language) κατά βήματα Στην περίπτωση αυτή χρειάζεται προσοχή γιατί μπορεί να
παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου όπως προσδιορίσθηκε προηγουμένως δηλαδή το
κριτήριο του καθορισμού
bull με κωδικοποίηση (coding) δηλαδή με ένα πρόγραμμα που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με
τον αλγόριθμο
27 Ποια τα Σύμβολα διαγράμματος ροής
bull έλλειψη που δηλώνει την αρχή και το τέλος του κάθε αλγορίθμου
bull ρόμβος που δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση
bull ορθογώνιο που δηλώνει την εκτέλεση μίας ή περισσότερων πράξεων και
bull πλάγιο παραλληλόγραμμο που δηλώνει είσοδο ή έξοδο στοιχείων
28 Πότε χρησιμοποιείται η ακολουθιακή (σειριακή) δομή εντολών
Η ακολουθιακή δομή εντολών (σειριακών βημάτων) χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών
προβλημάτων όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών
29 Τι ονομάζεται εντολή
Κάθε μία λέξη της χρησιμοποιούμενης ψευδογλώσσας που προσδιορίζει μια σαφή ενέργεια θα αποκαλείται
εντολή
210 Είδη εντολών
bull Εκτελεστέα εντολή πχ Διάβασε
bull Δηλωτική εντολή πχ Αλγόριθμος
bull Δηλωτική εντολή είναι αυτή που χρησιμοποιείται για να δηλώσει κάτι χωρίς να περιγράφει καμία ενέργεια
πάνω σε οποιοδήποτε στοιχείο Είναι οι εντολές που χρησιμοποιούνται συνήθως στο τμήμα δηλώσεων ενός
προγράμματος για να δηλώσουν πχ Διάφορες σταθερές ή μεταβλητές (Σταθερές Μεταβλητές Ακέραιες
κτλπ)
bull Εκτελεστέα εντολή είναι αυτή που περιγράφει κάποια ενέργεια επάνω σε κάποιο στοιχείο Όταν εκτελεστεί
επιφέρει αλλαγές στην τιμή κάποιων μεγεθών (μεταβλητών) ή επιτρέπει τη είσοδο δεδομένων ή την έξοδο
αποτελεσμάτων όπως πχ x ltmdash x + 1
211 Τι ονομάζουμε σταθερές
Σταθερές (constands) Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες
σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου
212 Πως διακρίνουμε τις σταθερές
Οι σταθερές διακρίνονται σε
bull αριθμητικές πχ 123 +5 -125
bull αλφαριθμητικές πχ ldquoΤιμήrdquo ldquoΚατάσταση αποτελεσμάτωνrdquo
bull λογικές που είναι ακριβώς δύο Αληθής και Ψευδής
213 Τι είναι μεταβλητές
Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο που χρησιμοποιεί-ται για να παραστήσει ένα στοιχείο δεδομένου
Στη μεταβλητή εκχωρείται μια τιμή η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου
6
214 Πως διακρίνουμε τις μεταβλητές
Ανάλογα με το είδος της τιμής που μπορούν να λάβουν οι μεταβλητές διακρίνονται σε
bull Αριθμητικές
bull Αλφαριθμητικές
bull Λογικές
215 Τι είναι τελεστές
Τελεστές (operators) Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις Οι
τελεστές διακρίνονται σε αριθμητικούς λογικούς και συγκριτικούς
216 Τι είναι εκφράσεις
Εκφράσεις (expressions) Οι εκφράσεις διαμορφώνονται από τους τελεστέους (operands) που είναι σταθερές
και μεταβλητές και από τους τελεστές Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών
στις μεταβλητές και στην εκτέλεση των πράξεων Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των
πράξεων και τη χρήση των παρενθέσεων Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά
μέ-χρι μια πολύπλοκη μαθηματική παράσταση
217 Να περιγράψετε τη γενική μορφή τίτλου ενός αλγορίθμου
bull Αλγόριθμος όνομα_αλγορίθμου
bull Δεδομένα ονόματα δεδομένων
bull Αποτελέσματα ονόματα αποτελεσμάτων
218 Να περιγράψετε τη γενική μορφή ενός αλγορίθμου με ψευδοκώδικα
ΑΛΓΟΡΙΘΜΟΣ όνομα_αλγορίθμου
Δεδομένα ονόματα δεδομένων
hellip hellip hellip
εντολές
Αποτελέσματα ονόματα αποτελεσμάτων
hellip hellip hellip
ΤΕΛΟΣ όνομα_αλγορίθμου
219 Με ποιον τρόπο μπορούμε να σημειώσουμε σχόλια σrsquo έναν αλγόριθμο
Οτιδήποτε ακολουθεί το θαυμαστικό () θεωρείται ότι είναι σχόλιο
220 Να σημειώσετε σrsquo έναν πίνακα το συμβολισμό των αριθμητικών πράξεων στους αλγορίθμους
Σύμβολο Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
mod Υπολογισμός ακεραίου υπολοίπου
div Υπολογισμός ακεραίου πηλίκου
^ Υπολογισμός δύναμης
221 Τι γνωρίζεται για την εντολή εκχώρησης
Το σύμβολο χρησιμοποιείται προκειμένου να συμβολίζουμε την εντολή εκχώρησης τιμής Στα αριστερά του
συμβόλου βρίσκεται η μεταβλητή της οποίας η τιμή είναι άγνωστη ενώ στα δεξιά βρίσκεται μια παράσταση που
χρησιμοποιεί σταθερές και μεταβλητές των οποίων η τιμή είναι γνωστή Για τον υπολογισμό της τιμής της
παράστασης ισχύουν οι κανόνες υπολογισμού από τα μαθηματικά
7
222 Πότε χρησιμοποιείται η δομή επιλογής
Η δομή επιλογής χρησιμοποιείται όταν πρέπει να ληφθεί μία απόφαση με έλεγχο συνθήκης και ανάλογα να
εκτελεστούν διαφορετικές ενέργειες
223 Πότε χρησιμοποιείται η δομή πολλαπλής επιλογής
Οι διαδικασία των πολλαπλής επιλογής εφαρμόζεται στα προβλήματα όπου μπορεί να ληφθούν διαφορετικές
αποφάσεις ανάλογα με την τιμή που παίρνει μία έκφραση
224 Τι είναι εμφωλευμένη διαδικασία
Είναι μια διαδικασία κατά την οποία μια εντολή Αντότε εκτελείται όταν ισχύει (ή δεν) ισχύει η συνθήκη μίας
άλλης εντολής Αντότε
Η λογική αυτή επεκτείνεται δηλαδή να έχουμε νέα εμφωλευμένη δομή μέσα σε μία εμφωλευμένη δομή κοκ
225 Ποιες οι τιμές των τριών λογικών πράξεων
Πρόταση Α Πρόταση Β Α ή Β Α και Β όχι Α
Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Αληθής Ψευδής Ψευδής
Ψευδής Αληθής Αληθής Ψευδής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής
226 Πότε χρησιμοποιείται η δομή επανάληψης
Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μία ακολουθία εντολών πρέπει να
εφαρμοσθεί σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό
227 Τι ονομάζεται βρόχος
Το τμήμα του αλγορίθμου που επαναλαμβάνεται δηλαδή κάθε δομή επανάληψης ονομάζεται βρόχος
228 Μπορεί ένας βρόχος επανάληψης να μην εκτελεστεί ποτέ
Ο βρόχος επανάληψης μπορεί να μην εκτελεσθεί καμία φορά
229 Ποιες είναι οι δομές επανάληψης
bull Η ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ
bull Η ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
230 ποια η δομή επανάληψης ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ και το διάγραμμα ροής
της
ΌΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
231 ποια η δομή επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ και το διάγραμμα ροής της
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές
ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη
8
232 ποια η δομή επανάληψης ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip και το διάγραμμα ροής της
ΓΙΑ i ΑΠΟ αρχή ΜΕΧΡΙ τέλος ΜΕ_ΒΗΜΑ βήμα
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
233 Πότε συνήθως χρησιμοποιούμε την εκάστοτε δομή επανάληψης
bull Την ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε
εκ των προτέρων το πλήθος των επαναλήψεων και δεν μας ενδιαφέρει αν η δομή επανάληψης εκτελεστεί
τουλάχιστον μια φορά
bull Την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων το πλήθος των επαναλήψεων και μας ενδιαφέρει η δομή επανάληψης να εκτελεστεί τουλάχιστον μια
φορά
bull Την ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν γνωρίζουμε εκ
των προτέρων το πλήθος των επαναλήψεων
234 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ n πόσες φορές εκτελείται
Ακριβώς μια φορά
235 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ 1 πόσες φορές εκτελείται
Δεν εκτελείται καμία φορά
236 Ποια η πρακτική σημασία του αλγορίθμου του lsquoπολλαπλασιασμού αλά ρωσικά Πότε και πως γίνεται
χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων
Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός) αλλά η μέθοδος
μπορεί εύκολα να μετατραπεί ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων Πως ακριβώς
λειτουργεί η μέθοδος θα φανεί με το επόμενο παράδειγμα όπου περιγράφεται ο αλγόριθμος με ελεύθερο κείμενο
Έστω λοιπόν ότι δίνονται δύο θετικοί ακέραιοι αριθμοί οι αριθμοί 45 και 19 Οι αριθμοί γράφονται δίπλα δίπλα
και ο πρώτος διπλασιάζεται αγνοώντας το δεκαδικό μέρος ενώ ο δεύτερος υποδιπλασιάζεται Στο σχήμα
παρουσιάζεται η επαναλαμβανόμενη διαδικασία που συνεχίζεται μέχρις ότου στη δεύτερη στήλη να προκύψει
μονάδα Τελικώς το γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όπου αντίστοιχα στη
δεύτερη στήλη υπάρχει περιττός αριθμός Για το παράδειγμά μας τα στοιχεία αυτά παρουσιάζονται στην τρίτη
στήλη
Η μέθοδος αυτή χρησιμοποιείται πρακτικά στους υπολογιστές γιατί υλοποιείται πολύ πιο απλά απrsquo ότι ο γνωστός
μας χειρωνακτικός τρόπος πολλαπλασιασμού Πιο συγκεκριμένα απαιτεί πολλαπλασιασμό επί δύο διαίρεση διά
δύο και πρόσθεση Σε αντίθεση η γνωστή μας διαδικασία πολλαπλασιασμού απαιτεί πολλαπλασιασμό με
οποιοδήποτε ακέραιο και πρόσθεση Σε επίπεδο λοιπόν κυκλωμάτων υπολογιστή ο πολλαπλασιασμός
επί δύο και η διαίρεση διά δύο μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή ολίσθησης (shift) σε
αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία Το τελευταίο
γεγονός είναι ο λόγος που ο πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απrsquo ότι ο χειρωνακτικός τρόπος
πολλαπλασιασμού δύο ακεραίων
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
2
110 Ποιες οι προϋποθέσεις σωστής επίλυσης ενός προβλήματος
Η σωστή επίλυση ενός προβλήματος προϋποθέτει τον επακριβή προσδιορισμό των δεδομένων που παρέχει το
πρόβλημα καθώς και την λεπτομερειακή καταγραφή των ζητούμενων που αναμένονται σαν αποτελέσματα της
επίλυσης του προβλήματος
Θα πρέπει να δοθεί μεγάλη προσοχή στην ανίχνευση των δεδομένων ενός προβλήματος Υπάρχουν πολλές
περιπτώσεις προβλημάτων όπου τα δεδομένα θα πρέπει να ldquoανακαλυφθούνrdquo μέσα στα λεγόμενα του προβλήματος
Η διαδικασία αυτή απαιτεί προσοχή συγκέντρωση και σκέψη
Το ίδιο προσεκτικά θα πρέπει να αποσαφηνιστούν και τα ζητούμενα του προβλήματος Θα πρέπει να θέτονται μια
σειρά από ερωτήσεις με στόχο την διευκρίνηση πιθανών αποριών σχετικά με τα ζητούμενα τον τρόπο
παρουσίασής τους το εύρος τους κλπ Οι ερωτήσεις αυτές μπορούν να απευθύνονται είτε στο δημιουργό του
προβλήματος είτε στον ίδιο μας τον εαυτό αν εμείς καλούμαστε να αντιμετωπίσουμε το πρόβλημα
111 Ποια τα στάδια αντιμετώπισης ενός προβλήματος
1048766 κατανόηση όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδομένων και των ζητούμενων του
προβλήματος
1048766 ανάλυση όπου το αρχικό πρόβλημα διασπάται σε άλλα επί μέρους απλούστερα προβλήματα
1048766 επίλυση όπου υλοποιείται η λύση του προβλήματος μέσω της λύσης των επιμέρους προβλημάτων
112 Με κριτήριο τη δυνατότητα επίλυσης ενός προβλήματος ποιες κατηγορίες προβλημάτων διακρίνουμε
1048766 Επιλύσιμα είναι εκείνα τα προβλήματα για τα οποία η λύση τους είναι ήδη γνωστή και έχει διατυπωθεί
Επιλύσιμα μπορεί επίσης να χαρακτηριστούν και προ-βλήματα των οποίων η λύση δεν έχει ακόμα διατυπωθεί
αλλά ή συνάφειά τους με άλλα ήδη επιλυμένα μας επιτρέπει να θεωρούμε σαν βέβαιη τη δυνατότητα επίλυσής
τους
1048766 Ανοικτά ονομάζονται εκείνα τα προβλήματα για τα οποία η λύση τους δεν έχει μεν ακόμα βρεθεί αλλά
παράλληλα δεν έχει αποδειχθεί ότι δεν επιδέχονται λύση Σαν παράδειγμα ανοικτού προβλήματος μπορούμε να
αναφέρουμε το πρόβλημα της ενοποίησης των τεσσάρων πεδίων δυνάμεων που αναφέρουμε σε προηγούμενη
παράγραφο
1048766 Άλυτα χαρακτηρίζονται εκείνα τα προβλήματα για τα οποία έχουμε φτάσει στην παραδοχή ότι δεν επιδέχονται
λύση Τέτοιου είδους πρόβλημα είναι το γνωστό από τους αρχαίους ελληνικούς χρόνους πρόβλημα του
τετραγωνισμού του κύκλου Το πρόβλημα αυτό θεωρείται άλυτο στην πραγματικότητα η λύση που επιδέχεται
είναι προσεγγιστική
113 Με κριτήριο το βαθμό δόμησης των λύσεών τους τα επιλύσιμα προβλήματα σε ποιες κατηγορίες
μπορούν να διακριθούν
1048766 Δομημένα χαρακτηρίζονται εκείνα τα προβλήματα των οποίων η επίλυση προέρχεται από μια
αυτοματοποιημένη διαδικασία Για παράδειγμα η επίλυση της δευτεροβάθμιας εξίσωσης αποτελεί ένα δομημένο
πρόβλημα αφού ο τρόπος επίλυσης της εξίσωσης είναι γνωστός και αυτοματοποιημένος
1048766 Ημιδομημένα ονομάζονται τα προβλήματα εκείνα των οποίων η λύση επιδιώκεται στα πλαίσια ενός εύρους
πιθανών λύσεων αφήνοντας στον ανθρώπινο παράγοντα περιθώρια επιλογής της
1048766 Αδόμητα χαρακτηρίζονται τα προβλήματα εκείνα των οποίων οι λύσεις δεν μπορούν να δομηθούν ή δεν έχει
διερευνηθεί σε βάθος η δυνατότητα δόμησής τους Πρωτεύοντα ρόλο στην επίλυση αυτού του τύπου
προβλημάτων κατέχει η ανθρώπινη διαίσθηση
114 Με κριτήριο το είδος της επίλυσης που επιζητούν τα προβλήματα σε ποιες κατηγορίες διακρίνονται
1048766 Απόφασης όπου η απόφαση που πρόκειται να ληφθεί σαν λύση του προβλήματος που τίθεται απαντά σε ένα
ερώτημα και πιθανόν αυτή η απάντηση να είναι ένα ldquoΝαιrdquo ή ένα ldquoΌχιrdquo Αυτό που θέλουμε να διαπιστώσουμε σε
ένα πρόβλημα απόφασης είναι αν υπάρχει απάντηση που ικανοποιεί τα δεδομένα που θέτονται από το πρόβλημα
1048766 Υπολογιστικά όπου το πρόβλημα που τίθεται απαιτεί τη διενέργεια υπολογισμών για να μπορεί να δοθεί μία
απάντηση στο πρόβλημα Σε ένα υπολογιστικό πρόβλημα ζητάμε να βρούμε τη τιμή της απάντησης που ικανοποιεί
τα δεδομένα που παρέχει το πρόβλημα
1048766 Βελτιστοποίησης όπου το πρόβλημα που τίθεται επιζητά το βέλτιστο αποτέλεσμα για τα συγκεκριμένα
δεδομένα που διαθέτει Σε ένα πρόβλημα βελτιστοποίησης αναζητούμε την απάντηση που ικανοποιεί κατά τον
καλύτερο τρόπο τα δεδομένα που παρέχει το πρόβλημα
3
115 Ποιοι οι λόγοι που αναθέτουμε την επίλυση ενός προβλήματος σε υπολογιστή
1048766 η πολυπλοκότητα των υπολογισμών
1048766 η επαναληπτικότητα των διαδικασιών
1048766 η ταχύτητα εκτέλεσης των πράξεων
1048766 το μεγάλο πλήθος των δεδομένων
116 Ποιες οι λειτουργίες που μπορεί να εκτελεί ο υπολογιστής
1048766 πρόσθεση η οποία αποτελεί τη βασική αριθμητική πράξη δεδομένου ότι και οι άλλες αριθμητικές πράξεις
μπορούν να αντιμετωπιστούν σαν διαδικασίες πρόσθεσης
1048766 σύγκριση η οποία συνιστά τη βασική λειτουργία για την επιτέλεση όλων των λογικών πράξεων
1048766 μεταφορά δεδομένων λειτουργία που προηγείται και έπεται της επεξεργασίας δεδομένων
117 Τι είναι διαγραμματική αναπαράσταση
Για τη γραφική απεικόνιση της δομής ενός προβλήματος χρησιμοποιείται συχνότατα η διαγραμματική
αναπαράσταση
Σύμφωνα με αυτή
1048766 το αρχικό πρόβλημα αναπαρίσταται από ένα ορθογώνιο παραλληλόγραμμο
1048766 κάθε ένα από τα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε πρόβλημα αναπαρίσταται
επίσης από ένα ορθογώνιο παραλληλόγραμμο
1048766 τα παραλληλόγραμμα που αντιστοιχούν στα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε
πρόβλημα σχηματίζονται ένα επίπεδο χαμηλότερα Έτσι σε κάθε κατώτερο επίπεδο δημιουργείται η γραφική
αναπαράσταση των προβλημάτων στα οποία αναλύονται τα προβλήματα του αμέσως ψηλότερου επιπέδου
118 Από ποια άποψη υπερτερεί ο υπολογιστής έναντι του ανθρώπου
Η ανωτερότητα που παρουσιάζει ο υπολογιστής εκδηλώνεται σε ποσοτικό επίπεδο και όχι σε ποιοτικό Μπορεί να
αντιμετωπίσει σε πάρα πολύ μικρό χρόνο σύνθετα λογικά προβλήματα μόνο εφόσον ο άνθρωπος έχει φροντίσει
προηγούμενα με τη χρήση κατάλληλων προγραμμάτων να του ldquoδιδάξειrdquo τον τρόπο αντιμετώπισης και επίλυσης
αυτού του είδους των προβλημάτων Τα προβλήματα και οι λύσεις τους προϋπήρξαν και εξακολουθούν να
υπάρχουν ανεξάρτητα από τους υπολογιστές
4
Κεφάλαιο 2
21 Τι είναι αλγόριθμος
Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο
χρόνο που στοχεύουν στην επίλυση ενός προβλήματος
22 Ποια τα απαραίτητα κριτήρια που ικανοποιεί ο κάθε αλγόριθμος
bull Είσοδος (input)
Καμία μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο Η περίπτωση που δεν
δίνονται τιμές δεδομένων εμφανίζεται όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς
τιμές με την βοήθεια συ-ναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών
bull Έξοδος (output)
Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν
άλλο αλγόριθμο
bull Καθοριστικότητα (definiteness)
Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της Λόγου χάριν μία εντολή
διαίρεσης πρέπει να θεωρεί και την περίπτωση όπου ο διαιρέτης λαμβάνει μηδενική τιμή
bull Περατότητα (finiteness)
Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του Μία διαδικασία που δεν
τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο αλλά λέγεται απλά υπολογιστική
διαδικασία (computational procedure)
bull Αποτελεσματικότητα (effectiveness)
Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί
αλλά πρέπει να είναι και εκτελέσιμη
23 Η έννοια του αλγόριθμου συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής
Η έννοια του αλγόριθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής
24 Από ποιες σκοπιές μελετά τους αλγορίθμους η Πληροφορική Να αναλύσετε καθεμία από αυτές
Η Πληροφορική μελετά τους αλγορίθμους από τις σκοπιές
α Υλικού Η ταχύτητα εκτέλεσης ενός αλγορίθμου επηρεάζεται από τις διάφορες τεχνολογίες υλικού και την
αρχιτεκτονική του υπολογιστή
β Γλωσσών προγραμματισμού Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (δηλαδή
χαμηλότερου ή υψηλότερου επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός αλγορίθμου Γενικά μια
γλώσσα χαμηλότερου επιπέδου είναι ταχύτερη από μια άλλη γλώσσα που είναι υψηλότερου επιπέδου
γ Θεωρητική Διερευνά αν υπάρχει ή όχι αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος Η
προσέγγιση προσδιορίζει τα όρια της λύσης που θα βρεθεί σε συγκεκριμένο πρόβλημα
δ Αναλυτική Μελετώνται οι υπολογιστικοί πόροι που απαιτούνται από έναν αλγόριθμο (πχ το μέγεθος κύριας
και δευτερεύουσας μνήμης ο χρόνος λειτουργίας της CPU και των λειτουργιών εισόδου εξόδου κλπ)
25 Ποια η διαφορά της θεωρητικής από την αναλυτική προσέγγιση στην επίλυση ενός προβλήματος με
χρήση αλγορίθμου
Η θεωρητική προσέγγιση προσδιορίζει τα όρια της λύσης και την αποδοτικότητα ενός αλγορίθμου που επιλύει ένα
συγκεκριμένο πρόβλημα ενώ η αναλυτική προσέγγιση μελετά τους υπολογιστικούς πόρους που απαιτούνται για
την εκτέλεση του αλγορίθμου
5
26 Ποιοι οι τρόποι αναπαράστασης ενός αλγορίθμου
bull με ελεύθερο κείμενο (free text) που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης
αλγορίθμου Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση
παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγορίθμων δηλαδή την αποτελεσματικότητα
bull με διαγραμματικές τεχνικές (diagramming techniques) που συνιστούν ένα γραφικό τρόπο παρουσίασης του
αλγορίθμου Από τις διάφορες διαγραμματικές τεχνικές που έχουν επινοηθεί η πιο παλιά και η πιο γνωστή ίσως
είναι το διάγραμμα ροής (flow chart) Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν
αποτελεί την καλύτερη λύση γιrsquo αυτό και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη
bull με φυσική γλώσσα (natural language) κατά βήματα Στην περίπτωση αυτή χρειάζεται προσοχή γιατί μπορεί να
παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου όπως προσδιορίσθηκε προηγουμένως δηλαδή το
κριτήριο του καθορισμού
bull με κωδικοποίηση (coding) δηλαδή με ένα πρόγραμμα που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με
τον αλγόριθμο
27 Ποια τα Σύμβολα διαγράμματος ροής
bull έλλειψη που δηλώνει την αρχή και το τέλος του κάθε αλγορίθμου
bull ρόμβος που δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση
bull ορθογώνιο που δηλώνει την εκτέλεση μίας ή περισσότερων πράξεων και
bull πλάγιο παραλληλόγραμμο που δηλώνει είσοδο ή έξοδο στοιχείων
28 Πότε χρησιμοποιείται η ακολουθιακή (σειριακή) δομή εντολών
Η ακολουθιακή δομή εντολών (σειριακών βημάτων) χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών
προβλημάτων όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών
29 Τι ονομάζεται εντολή
Κάθε μία λέξη της χρησιμοποιούμενης ψευδογλώσσας που προσδιορίζει μια σαφή ενέργεια θα αποκαλείται
εντολή
210 Είδη εντολών
bull Εκτελεστέα εντολή πχ Διάβασε
bull Δηλωτική εντολή πχ Αλγόριθμος
bull Δηλωτική εντολή είναι αυτή που χρησιμοποιείται για να δηλώσει κάτι χωρίς να περιγράφει καμία ενέργεια
πάνω σε οποιοδήποτε στοιχείο Είναι οι εντολές που χρησιμοποιούνται συνήθως στο τμήμα δηλώσεων ενός
προγράμματος για να δηλώσουν πχ Διάφορες σταθερές ή μεταβλητές (Σταθερές Μεταβλητές Ακέραιες
κτλπ)
bull Εκτελεστέα εντολή είναι αυτή που περιγράφει κάποια ενέργεια επάνω σε κάποιο στοιχείο Όταν εκτελεστεί
επιφέρει αλλαγές στην τιμή κάποιων μεγεθών (μεταβλητών) ή επιτρέπει τη είσοδο δεδομένων ή την έξοδο
αποτελεσμάτων όπως πχ x ltmdash x + 1
211 Τι ονομάζουμε σταθερές
Σταθερές (constands) Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες
σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου
212 Πως διακρίνουμε τις σταθερές
Οι σταθερές διακρίνονται σε
bull αριθμητικές πχ 123 +5 -125
bull αλφαριθμητικές πχ ldquoΤιμήrdquo ldquoΚατάσταση αποτελεσμάτωνrdquo
bull λογικές που είναι ακριβώς δύο Αληθής και Ψευδής
213 Τι είναι μεταβλητές
Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο που χρησιμοποιεί-ται για να παραστήσει ένα στοιχείο δεδομένου
Στη μεταβλητή εκχωρείται μια τιμή η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου
6
214 Πως διακρίνουμε τις μεταβλητές
Ανάλογα με το είδος της τιμής που μπορούν να λάβουν οι μεταβλητές διακρίνονται σε
bull Αριθμητικές
bull Αλφαριθμητικές
bull Λογικές
215 Τι είναι τελεστές
Τελεστές (operators) Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις Οι
τελεστές διακρίνονται σε αριθμητικούς λογικούς και συγκριτικούς
216 Τι είναι εκφράσεις
Εκφράσεις (expressions) Οι εκφράσεις διαμορφώνονται από τους τελεστέους (operands) που είναι σταθερές
και μεταβλητές και από τους τελεστές Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών
στις μεταβλητές και στην εκτέλεση των πράξεων Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των
πράξεων και τη χρήση των παρενθέσεων Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά
μέ-χρι μια πολύπλοκη μαθηματική παράσταση
217 Να περιγράψετε τη γενική μορφή τίτλου ενός αλγορίθμου
bull Αλγόριθμος όνομα_αλγορίθμου
bull Δεδομένα ονόματα δεδομένων
bull Αποτελέσματα ονόματα αποτελεσμάτων
218 Να περιγράψετε τη γενική μορφή ενός αλγορίθμου με ψευδοκώδικα
ΑΛΓΟΡΙΘΜΟΣ όνομα_αλγορίθμου
Δεδομένα ονόματα δεδομένων
hellip hellip hellip
εντολές
Αποτελέσματα ονόματα αποτελεσμάτων
hellip hellip hellip
ΤΕΛΟΣ όνομα_αλγορίθμου
219 Με ποιον τρόπο μπορούμε να σημειώσουμε σχόλια σrsquo έναν αλγόριθμο
Οτιδήποτε ακολουθεί το θαυμαστικό () θεωρείται ότι είναι σχόλιο
220 Να σημειώσετε σrsquo έναν πίνακα το συμβολισμό των αριθμητικών πράξεων στους αλγορίθμους
Σύμβολο Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
mod Υπολογισμός ακεραίου υπολοίπου
div Υπολογισμός ακεραίου πηλίκου
^ Υπολογισμός δύναμης
221 Τι γνωρίζεται για την εντολή εκχώρησης
Το σύμβολο χρησιμοποιείται προκειμένου να συμβολίζουμε την εντολή εκχώρησης τιμής Στα αριστερά του
συμβόλου βρίσκεται η μεταβλητή της οποίας η τιμή είναι άγνωστη ενώ στα δεξιά βρίσκεται μια παράσταση που
χρησιμοποιεί σταθερές και μεταβλητές των οποίων η τιμή είναι γνωστή Για τον υπολογισμό της τιμής της
παράστασης ισχύουν οι κανόνες υπολογισμού από τα μαθηματικά
7
222 Πότε χρησιμοποιείται η δομή επιλογής
Η δομή επιλογής χρησιμοποιείται όταν πρέπει να ληφθεί μία απόφαση με έλεγχο συνθήκης και ανάλογα να
εκτελεστούν διαφορετικές ενέργειες
223 Πότε χρησιμοποιείται η δομή πολλαπλής επιλογής
Οι διαδικασία των πολλαπλής επιλογής εφαρμόζεται στα προβλήματα όπου μπορεί να ληφθούν διαφορετικές
αποφάσεις ανάλογα με την τιμή που παίρνει μία έκφραση
224 Τι είναι εμφωλευμένη διαδικασία
Είναι μια διαδικασία κατά την οποία μια εντολή Αντότε εκτελείται όταν ισχύει (ή δεν) ισχύει η συνθήκη μίας
άλλης εντολής Αντότε
Η λογική αυτή επεκτείνεται δηλαδή να έχουμε νέα εμφωλευμένη δομή μέσα σε μία εμφωλευμένη δομή κοκ
225 Ποιες οι τιμές των τριών λογικών πράξεων
Πρόταση Α Πρόταση Β Α ή Β Α και Β όχι Α
Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Αληθής Ψευδής Ψευδής
Ψευδής Αληθής Αληθής Ψευδής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής
226 Πότε χρησιμοποιείται η δομή επανάληψης
Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μία ακολουθία εντολών πρέπει να
εφαρμοσθεί σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό
227 Τι ονομάζεται βρόχος
Το τμήμα του αλγορίθμου που επαναλαμβάνεται δηλαδή κάθε δομή επανάληψης ονομάζεται βρόχος
228 Μπορεί ένας βρόχος επανάληψης να μην εκτελεστεί ποτέ
Ο βρόχος επανάληψης μπορεί να μην εκτελεσθεί καμία φορά
229 Ποιες είναι οι δομές επανάληψης
bull Η ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ
bull Η ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
230 ποια η δομή επανάληψης ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ και το διάγραμμα ροής
της
ΌΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
231 ποια η δομή επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ και το διάγραμμα ροής της
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές
ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη
8
232 ποια η δομή επανάληψης ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip και το διάγραμμα ροής της
ΓΙΑ i ΑΠΟ αρχή ΜΕΧΡΙ τέλος ΜΕ_ΒΗΜΑ βήμα
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
233 Πότε συνήθως χρησιμοποιούμε την εκάστοτε δομή επανάληψης
bull Την ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε
εκ των προτέρων το πλήθος των επαναλήψεων και δεν μας ενδιαφέρει αν η δομή επανάληψης εκτελεστεί
τουλάχιστον μια φορά
bull Την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων το πλήθος των επαναλήψεων και μας ενδιαφέρει η δομή επανάληψης να εκτελεστεί τουλάχιστον μια
φορά
bull Την ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν γνωρίζουμε εκ
των προτέρων το πλήθος των επαναλήψεων
234 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ n πόσες φορές εκτελείται
Ακριβώς μια φορά
235 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ 1 πόσες φορές εκτελείται
Δεν εκτελείται καμία φορά
236 Ποια η πρακτική σημασία του αλγορίθμου του lsquoπολλαπλασιασμού αλά ρωσικά Πότε και πως γίνεται
χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων
Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός) αλλά η μέθοδος
μπορεί εύκολα να μετατραπεί ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων Πως ακριβώς
λειτουργεί η μέθοδος θα φανεί με το επόμενο παράδειγμα όπου περιγράφεται ο αλγόριθμος με ελεύθερο κείμενο
Έστω λοιπόν ότι δίνονται δύο θετικοί ακέραιοι αριθμοί οι αριθμοί 45 και 19 Οι αριθμοί γράφονται δίπλα δίπλα
και ο πρώτος διπλασιάζεται αγνοώντας το δεκαδικό μέρος ενώ ο δεύτερος υποδιπλασιάζεται Στο σχήμα
παρουσιάζεται η επαναλαμβανόμενη διαδικασία που συνεχίζεται μέχρις ότου στη δεύτερη στήλη να προκύψει
μονάδα Τελικώς το γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όπου αντίστοιχα στη
δεύτερη στήλη υπάρχει περιττός αριθμός Για το παράδειγμά μας τα στοιχεία αυτά παρουσιάζονται στην τρίτη
στήλη
Η μέθοδος αυτή χρησιμοποιείται πρακτικά στους υπολογιστές γιατί υλοποιείται πολύ πιο απλά απrsquo ότι ο γνωστός
μας χειρωνακτικός τρόπος πολλαπλασιασμού Πιο συγκεκριμένα απαιτεί πολλαπλασιασμό επί δύο διαίρεση διά
δύο και πρόσθεση Σε αντίθεση η γνωστή μας διαδικασία πολλαπλασιασμού απαιτεί πολλαπλασιασμό με
οποιοδήποτε ακέραιο και πρόσθεση Σε επίπεδο λοιπόν κυκλωμάτων υπολογιστή ο πολλαπλασιασμός
επί δύο και η διαίρεση διά δύο μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή ολίσθησης (shift) σε
αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία Το τελευταίο
γεγονός είναι ο λόγος που ο πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απrsquo ότι ο χειρωνακτικός τρόπος
πολλαπλασιασμού δύο ακεραίων
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
3
115 Ποιοι οι λόγοι που αναθέτουμε την επίλυση ενός προβλήματος σε υπολογιστή
1048766 η πολυπλοκότητα των υπολογισμών
1048766 η επαναληπτικότητα των διαδικασιών
1048766 η ταχύτητα εκτέλεσης των πράξεων
1048766 το μεγάλο πλήθος των δεδομένων
116 Ποιες οι λειτουργίες που μπορεί να εκτελεί ο υπολογιστής
1048766 πρόσθεση η οποία αποτελεί τη βασική αριθμητική πράξη δεδομένου ότι και οι άλλες αριθμητικές πράξεις
μπορούν να αντιμετωπιστούν σαν διαδικασίες πρόσθεσης
1048766 σύγκριση η οποία συνιστά τη βασική λειτουργία για την επιτέλεση όλων των λογικών πράξεων
1048766 μεταφορά δεδομένων λειτουργία που προηγείται και έπεται της επεξεργασίας δεδομένων
117 Τι είναι διαγραμματική αναπαράσταση
Για τη γραφική απεικόνιση της δομής ενός προβλήματος χρησιμοποιείται συχνότατα η διαγραμματική
αναπαράσταση
Σύμφωνα με αυτή
1048766 το αρχικό πρόβλημα αναπαρίσταται από ένα ορθογώνιο παραλληλόγραμμο
1048766 κάθε ένα από τα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε πρόβλημα αναπαρίσταται
επίσης από ένα ορθογώνιο παραλληλόγραμμο
1048766 τα παραλληλόγραμμα που αντιστοιχούν στα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε
πρόβλημα σχηματίζονται ένα επίπεδο χαμηλότερα Έτσι σε κάθε κατώτερο επίπεδο δημιουργείται η γραφική
αναπαράσταση των προβλημάτων στα οποία αναλύονται τα προβλήματα του αμέσως ψηλότερου επιπέδου
118 Από ποια άποψη υπερτερεί ο υπολογιστής έναντι του ανθρώπου
Η ανωτερότητα που παρουσιάζει ο υπολογιστής εκδηλώνεται σε ποσοτικό επίπεδο και όχι σε ποιοτικό Μπορεί να
αντιμετωπίσει σε πάρα πολύ μικρό χρόνο σύνθετα λογικά προβλήματα μόνο εφόσον ο άνθρωπος έχει φροντίσει
προηγούμενα με τη χρήση κατάλληλων προγραμμάτων να του ldquoδιδάξειrdquo τον τρόπο αντιμετώπισης και επίλυσης
αυτού του είδους των προβλημάτων Τα προβλήματα και οι λύσεις τους προϋπήρξαν και εξακολουθούν να
υπάρχουν ανεξάρτητα από τους υπολογιστές
4
Κεφάλαιο 2
21 Τι είναι αλγόριθμος
Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο
χρόνο που στοχεύουν στην επίλυση ενός προβλήματος
22 Ποια τα απαραίτητα κριτήρια που ικανοποιεί ο κάθε αλγόριθμος
bull Είσοδος (input)
Καμία μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο Η περίπτωση που δεν
δίνονται τιμές δεδομένων εμφανίζεται όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς
τιμές με την βοήθεια συ-ναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών
bull Έξοδος (output)
Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν
άλλο αλγόριθμο
bull Καθοριστικότητα (definiteness)
Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της Λόγου χάριν μία εντολή
διαίρεσης πρέπει να θεωρεί και την περίπτωση όπου ο διαιρέτης λαμβάνει μηδενική τιμή
bull Περατότητα (finiteness)
Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του Μία διαδικασία που δεν
τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο αλλά λέγεται απλά υπολογιστική
διαδικασία (computational procedure)
bull Αποτελεσματικότητα (effectiveness)
Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί
αλλά πρέπει να είναι και εκτελέσιμη
23 Η έννοια του αλγόριθμου συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής
Η έννοια του αλγόριθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής
24 Από ποιες σκοπιές μελετά τους αλγορίθμους η Πληροφορική Να αναλύσετε καθεμία από αυτές
Η Πληροφορική μελετά τους αλγορίθμους από τις σκοπιές
α Υλικού Η ταχύτητα εκτέλεσης ενός αλγορίθμου επηρεάζεται από τις διάφορες τεχνολογίες υλικού και την
αρχιτεκτονική του υπολογιστή
β Γλωσσών προγραμματισμού Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (δηλαδή
χαμηλότερου ή υψηλότερου επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός αλγορίθμου Γενικά μια
γλώσσα χαμηλότερου επιπέδου είναι ταχύτερη από μια άλλη γλώσσα που είναι υψηλότερου επιπέδου
γ Θεωρητική Διερευνά αν υπάρχει ή όχι αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος Η
προσέγγιση προσδιορίζει τα όρια της λύσης που θα βρεθεί σε συγκεκριμένο πρόβλημα
δ Αναλυτική Μελετώνται οι υπολογιστικοί πόροι που απαιτούνται από έναν αλγόριθμο (πχ το μέγεθος κύριας
και δευτερεύουσας μνήμης ο χρόνος λειτουργίας της CPU και των λειτουργιών εισόδου εξόδου κλπ)
25 Ποια η διαφορά της θεωρητικής από την αναλυτική προσέγγιση στην επίλυση ενός προβλήματος με
χρήση αλγορίθμου
Η θεωρητική προσέγγιση προσδιορίζει τα όρια της λύσης και την αποδοτικότητα ενός αλγορίθμου που επιλύει ένα
συγκεκριμένο πρόβλημα ενώ η αναλυτική προσέγγιση μελετά τους υπολογιστικούς πόρους που απαιτούνται για
την εκτέλεση του αλγορίθμου
5
26 Ποιοι οι τρόποι αναπαράστασης ενός αλγορίθμου
bull με ελεύθερο κείμενο (free text) που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης
αλγορίθμου Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση
παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγορίθμων δηλαδή την αποτελεσματικότητα
bull με διαγραμματικές τεχνικές (diagramming techniques) που συνιστούν ένα γραφικό τρόπο παρουσίασης του
αλγορίθμου Από τις διάφορες διαγραμματικές τεχνικές που έχουν επινοηθεί η πιο παλιά και η πιο γνωστή ίσως
είναι το διάγραμμα ροής (flow chart) Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν
αποτελεί την καλύτερη λύση γιrsquo αυτό και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη
bull με φυσική γλώσσα (natural language) κατά βήματα Στην περίπτωση αυτή χρειάζεται προσοχή γιατί μπορεί να
παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου όπως προσδιορίσθηκε προηγουμένως δηλαδή το
κριτήριο του καθορισμού
bull με κωδικοποίηση (coding) δηλαδή με ένα πρόγραμμα που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με
τον αλγόριθμο
27 Ποια τα Σύμβολα διαγράμματος ροής
bull έλλειψη που δηλώνει την αρχή και το τέλος του κάθε αλγορίθμου
bull ρόμβος που δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση
bull ορθογώνιο που δηλώνει την εκτέλεση μίας ή περισσότερων πράξεων και
bull πλάγιο παραλληλόγραμμο που δηλώνει είσοδο ή έξοδο στοιχείων
28 Πότε χρησιμοποιείται η ακολουθιακή (σειριακή) δομή εντολών
Η ακολουθιακή δομή εντολών (σειριακών βημάτων) χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών
προβλημάτων όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών
29 Τι ονομάζεται εντολή
Κάθε μία λέξη της χρησιμοποιούμενης ψευδογλώσσας που προσδιορίζει μια σαφή ενέργεια θα αποκαλείται
εντολή
210 Είδη εντολών
bull Εκτελεστέα εντολή πχ Διάβασε
bull Δηλωτική εντολή πχ Αλγόριθμος
bull Δηλωτική εντολή είναι αυτή που χρησιμοποιείται για να δηλώσει κάτι χωρίς να περιγράφει καμία ενέργεια
πάνω σε οποιοδήποτε στοιχείο Είναι οι εντολές που χρησιμοποιούνται συνήθως στο τμήμα δηλώσεων ενός
προγράμματος για να δηλώσουν πχ Διάφορες σταθερές ή μεταβλητές (Σταθερές Μεταβλητές Ακέραιες
κτλπ)
bull Εκτελεστέα εντολή είναι αυτή που περιγράφει κάποια ενέργεια επάνω σε κάποιο στοιχείο Όταν εκτελεστεί
επιφέρει αλλαγές στην τιμή κάποιων μεγεθών (μεταβλητών) ή επιτρέπει τη είσοδο δεδομένων ή την έξοδο
αποτελεσμάτων όπως πχ x ltmdash x + 1
211 Τι ονομάζουμε σταθερές
Σταθερές (constands) Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες
σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου
212 Πως διακρίνουμε τις σταθερές
Οι σταθερές διακρίνονται σε
bull αριθμητικές πχ 123 +5 -125
bull αλφαριθμητικές πχ ldquoΤιμήrdquo ldquoΚατάσταση αποτελεσμάτωνrdquo
bull λογικές που είναι ακριβώς δύο Αληθής και Ψευδής
213 Τι είναι μεταβλητές
Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο που χρησιμοποιεί-ται για να παραστήσει ένα στοιχείο δεδομένου
Στη μεταβλητή εκχωρείται μια τιμή η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου
6
214 Πως διακρίνουμε τις μεταβλητές
Ανάλογα με το είδος της τιμής που μπορούν να λάβουν οι μεταβλητές διακρίνονται σε
bull Αριθμητικές
bull Αλφαριθμητικές
bull Λογικές
215 Τι είναι τελεστές
Τελεστές (operators) Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις Οι
τελεστές διακρίνονται σε αριθμητικούς λογικούς και συγκριτικούς
216 Τι είναι εκφράσεις
Εκφράσεις (expressions) Οι εκφράσεις διαμορφώνονται από τους τελεστέους (operands) που είναι σταθερές
και μεταβλητές και από τους τελεστές Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών
στις μεταβλητές και στην εκτέλεση των πράξεων Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των
πράξεων και τη χρήση των παρενθέσεων Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά
μέ-χρι μια πολύπλοκη μαθηματική παράσταση
217 Να περιγράψετε τη γενική μορφή τίτλου ενός αλγορίθμου
bull Αλγόριθμος όνομα_αλγορίθμου
bull Δεδομένα ονόματα δεδομένων
bull Αποτελέσματα ονόματα αποτελεσμάτων
218 Να περιγράψετε τη γενική μορφή ενός αλγορίθμου με ψευδοκώδικα
ΑΛΓΟΡΙΘΜΟΣ όνομα_αλγορίθμου
Δεδομένα ονόματα δεδομένων
hellip hellip hellip
εντολές
Αποτελέσματα ονόματα αποτελεσμάτων
hellip hellip hellip
ΤΕΛΟΣ όνομα_αλγορίθμου
219 Με ποιον τρόπο μπορούμε να σημειώσουμε σχόλια σrsquo έναν αλγόριθμο
Οτιδήποτε ακολουθεί το θαυμαστικό () θεωρείται ότι είναι σχόλιο
220 Να σημειώσετε σrsquo έναν πίνακα το συμβολισμό των αριθμητικών πράξεων στους αλγορίθμους
Σύμβολο Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
mod Υπολογισμός ακεραίου υπολοίπου
div Υπολογισμός ακεραίου πηλίκου
^ Υπολογισμός δύναμης
221 Τι γνωρίζεται για την εντολή εκχώρησης
Το σύμβολο χρησιμοποιείται προκειμένου να συμβολίζουμε την εντολή εκχώρησης τιμής Στα αριστερά του
συμβόλου βρίσκεται η μεταβλητή της οποίας η τιμή είναι άγνωστη ενώ στα δεξιά βρίσκεται μια παράσταση που
χρησιμοποιεί σταθερές και μεταβλητές των οποίων η τιμή είναι γνωστή Για τον υπολογισμό της τιμής της
παράστασης ισχύουν οι κανόνες υπολογισμού από τα μαθηματικά
7
222 Πότε χρησιμοποιείται η δομή επιλογής
Η δομή επιλογής χρησιμοποιείται όταν πρέπει να ληφθεί μία απόφαση με έλεγχο συνθήκης και ανάλογα να
εκτελεστούν διαφορετικές ενέργειες
223 Πότε χρησιμοποιείται η δομή πολλαπλής επιλογής
Οι διαδικασία των πολλαπλής επιλογής εφαρμόζεται στα προβλήματα όπου μπορεί να ληφθούν διαφορετικές
αποφάσεις ανάλογα με την τιμή που παίρνει μία έκφραση
224 Τι είναι εμφωλευμένη διαδικασία
Είναι μια διαδικασία κατά την οποία μια εντολή Αντότε εκτελείται όταν ισχύει (ή δεν) ισχύει η συνθήκη μίας
άλλης εντολής Αντότε
Η λογική αυτή επεκτείνεται δηλαδή να έχουμε νέα εμφωλευμένη δομή μέσα σε μία εμφωλευμένη δομή κοκ
225 Ποιες οι τιμές των τριών λογικών πράξεων
Πρόταση Α Πρόταση Β Α ή Β Α και Β όχι Α
Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Αληθής Ψευδής Ψευδής
Ψευδής Αληθής Αληθής Ψευδής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής
226 Πότε χρησιμοποιείται η δομή επανάληψης
Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μία ακολουθία εντολών πρέπει να
εφαρμοσθεί σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό
227 Τι ονομάζεται βρόχος
Το τμήμα του αλγορίθμου που επαναλαμβάνεται δηλαδή κάθε δομή επανάληψης ονομάζεται βρόχος
228 Μπορεί ένας βρόχος επανάληψης να μην εκτελεστεί ποτέ
Ο βρόχος επανάληψης μπορεί να μην εκτελεσθεί καμία φορά
229 Ποιες είναι οι δομές επανάληψης
bull Η ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ
bull Η ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
230 ποια η δομή επανάληψης ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ και το διάγραμμα ροής
της
ΌΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
231 ποια η δομή επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ και το διάγραμμα ροής της
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές
ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη
8
232 ποια η δομή επανάληψης ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip και το διάγραμμα ροής της
ΓΙΑ i ΑΠΟ αρχή ΜΕΧΡΙ τέλος ΜΕ_ΒΗΜΑ βήμα
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
233 Πότε συνήθως χρησιμοποιούμε την εκάστοτε δομή επανάληψης
bull Την ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε
εκ των προτέρων το πλήθος των επαναλήψεων και δεν μας ενδιαφέρει αν η δομή επανάληψης εκτελεστεί
τουλάχιστον μια φορά
bull Την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων το πλήθος των επαναλήψεων και μας ενδιαφέρει η δομή επανάληψης να εκτελεστεί τουλάχιστον μια
φορά
bull Την ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν γνωρίζουμε εκ
των προτέρων το πλήθος των επαναλήψεων
234 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ n πόσες φορές εκτελείται
Ακριβώς μια φορά
235 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ 1 πόσες φορές εκτελείται
Δεν εκτελείται καμία φορά
236 Ποια η πρακτική σημασία του αλγορίθμου του lsquoπολλαπλασιασμού αλά ρωσικά Πότε και πως γίνεται
χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων
Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός) αλλά η μέθοδος
μπορεί εύκολα να μετατραπεί ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων Πως ακριβώς
λειτουργεί η μέθοδος θα φανεί με το επόμενο παράδειγμα όπου περιγράφεται ο αλγόριθμος με ελεύθερο κείμενο
Έστω λοιπόν ότι δίνονται δύο θετικοί ακέραιοι αριθμοί οι αριθμοί 45 και 19 Οι αριθμοί γράφονται δίπλα δίπλα
και ο πρώτος διπλασιάζεται αγνοώντας το δεκαδικό μέρος ενώ ο δεύτερος υποδιπλασιάζεται Στο σχήμα
παρουσιάζεται η επαναλαμβανόμενη διαδικασία που συνεχίζεται μέχρις ότου στη δεύτερη στήλη να προκύψει
μονάδα Τελικώς το γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όπου αντίστοιχα στη
δεύτερη στήλη υπάρχει περιττός αριθμός Για το παράδειγμά μας τα στοιχεία αυτά παρουσιάζονται στην τρίτη
στήλη
Η μέθοδος αυτή χρησιμοποιείται πρακτικά στους υπολογιστές γιατί υλοποιείται πολύ πιο απλά απrsquo ότι ο γνωστός
μας χειρωνακτικός τρόπος πολλαπλασιασμού Πιο συγκεκριμένα απαιτεί πολλαπλασιασμό επί δύο διαίρεση διά
δύο και πρόσθεση Σε αντίθεση η γνωστή μας διαδικασία πολλαπλασιασμού απαιτεί πολλαπλασιασμό με
οποιοδήποτε ακέραιο και πρόσθεση Σε επίπεδο λοιπόν κυκλωμάτων υπολογιστή ο πολλαπλασιασμός
επί δύο και η διαίρεση διά δύο μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή ολίσθησης (shift) σε
αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία Το τελευταίο
γεγονός είναι ο λόγος που ο πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απrsquo ότι ο χειρωνακτικός τρόπος
πολλαπλασιασμού δύο ακεραίων
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
4
Κεφάλαιο 2
21 Τι είναι αλγόριθμος
Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο
χρόνο που στοχεύουν στην επίλυση ενός προβλήματος
22 Ποια τα απαραίτητα κριτήρια που ικανοποιεί ο κάθε αλγόριθμος
bull Είσοδος (input)
Καμία μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο Η περίπτωση που δεν
δίνονται τιμές δεδομένων εμφανίζεται όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς
τιμές με την βοήθεια συ-ναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών
bull Έξοδος (output)
Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν
άλλο αλγόριθμο
bull Καθοριστικότητα (definiteness)
Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της Λόγου χάριν μία εντολή
διαίρεσης πρέπει να θεωρεί και την περίπτωση όπου ο διαιρέτης λαμβάνει μηδενική τιμή
bull Περατότητα (finiteness)
Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του Μία διαδικασία που δεν
τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο αλλά λέγεται απλά υπολογιστική
διαδικασία (computational procedure)
bull Αποτελεσματικότητα (effectiveness)
Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί
αλλά πρέπει να είναι και εκτελέσιμη
23 Η έννοια του αλγόριθμου συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής
Η έννοια του αλγόριθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής
24 Από ποιες σκοπιές μελετά τους αλγορίθμους η Πληροφορική Να αναλύσετε καθεμία από αυτές
Η Πληροφορική μελετά τους αλγορίθμους από τις σκοπιές
α Υλικού Η ταχύτητα εκτέλεσης ενός αλγορίθμου επηρεάζεται από τις διάφορες τεχνολογίες υλικού και την
αρχιτεκτονική του υπολογιστή
β Γλωσσών προγραμματισμού Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (δηλαδή
χαμηλότερου ή υψηλότερου επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός αλγορίθμου Γενικά μια
γλώσσα χαμηλότερου επιπέδου είναι ταχύτερη από μια άλλη γλώσσα που είναι υψηλότερου επιπέδου
γ Θεωρητική Διερευνά αν υπάρχει ή όχι αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος Η
προσέγγιση προσδιορίζει τα όρια της λύσης που θα βρεθεί σε συγκεκριμένο πρόβλημα
δ Αναλυτική Μελετώνται οι υπολογιστικοί πόροι που απαιτούνται από έναν αλγόριθμο (πχ το μέγεθος κύριας
και δευτερεύουσας μνήμης ο χρόνος λειτουργίας της CPU και των λειτουργιών εισόδου εξόδου κλπ)
25 Ποια η διαφορά της θεωρητικής από την αναλυτική προσέγγιση στην επίλυση ενός προβλήματος με
χρήση αλγορίθμου
Η θεωρητική προσέγγιση προσδιορίζει τα όρια της λύσης και την αποδοτικότητα ενός αλγορίθμου που επιλύει ένα
συγκεκριμένο πρόβλημα ενώ η αναλυτική προσέγγιση μελετά τους υπολογιστικούς πόρους που απαιτούνται για
την εκτέλεση του αλγορίθμου
5
26 Ποιοι οι τρόποι αναπαράστασης ενός αλγορίθμου
bull με ελεύθερο κείμενο (free text) που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης
αλγορίθμου Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση
παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγορίθμων δηλαδή την αποτελεσματικότητα
bull με διαγραμματικές τεχνικές (diagramming techniques) που συνιστούν ένα γραφικό τρόπο παρουσίασης του
αλγορίθμου Από τις διάφορες διαγραμματικές τεχνικές που έχουν επινοηθεί η πιο παλιά και η πιο γνωστή ίσως
είναι το διάγραμμα ροής (flow chart) Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν
αποτελεί την καλύτερη λύση γιrsquo αυτό και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη
bull με φυσική γλώσσα (natural language) κατά βήματα Στην περίπτωση αυτή χρειάζεται προσοχή γιατί μπορεί να
παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου όπως προσδιορίσθηκε προηγουμένως δηλαδή το
κριτήριο του καθορισμού
bull με κωδικοποίηση (coding) δηλαδή με ένα πρόγραμμα που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με
τον αλγόριθμο
27 Ποια τα Σύμβολα διαγράμματος ροής
bull έλλειψη που δηλώνει την αρχή και το τέλος του κάθε αλγορίθμου
bull ρόμβος που δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση
bull ορθογώνιο που δηλώνει την εκτέλεση μίας ή περισσότερων πράξεων και
bull πλάγιο παραλληλόγραμμο που δηλώνει είσοδο ή έξοδο στοιχείων
28 Πότε χρησιμοποιείται η ακολουθιακή (σειριακή) δομή εντολών
Η ακολουθιακή δομή εντολών (σειριακών βημάτων) χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών
προβλημάτων όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών
29 Τι ονομάζεται εντολή
Κάθε μία λέξη της χρησιμοποιούμενης ψευδογλώσσας που προσδιορίζει μια σαφή ενέργεια θα αποκαλείται
εντολή
210 Είδη εντολών
bull Εκτελεστέα εντολή πχ Διάβασε
bull Δηλωτική εντολή πχ Αλγόριθμος
bull Δηλωτική εντολή είναι αυτή που χρησιμοποιείται για να δηλώσει κάτι χωρίς να περιγράφει καμία ενέργεια
πάνω σε οποιοδήποτε στοιχείο Είναι οι εντολές που χρησιμοποιούνται συνήθως στο τμήμα δηλώσεων ενός
προγράμματος για να δηλώσουν πχ Διάφορες σταθερές ή μεταβλητές (Σταθερές Μεταβλητές Ακέραιες
κτλπ)
bull Εκτελεστέα εντολή είναι αυτή που περιγράφει κάποια ενέργεια επάνω σε κάποιο στοιχείο Όταν εκτελεστεί
επιφέρει αλλαγές στην τιμή κάποιων μεγεθών (μεταβλητών) ή επιτρέπει τη είσοδο δεδομένων ή την έξοδο
αποτελεσμάτων όπως πχ x ltmdash x + 1
211 Τι ονομάζουμε σταθερές
Σταθερές (constands) Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες
σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου
212 Πως διακρίνουμε τις σταθερές
Οι σταθερές διακρίνονται σε
bull αριθμητικές πχ 123 +5 -125
bull αλφαριθμητικές πχ ldquoΤιμήrdquo ldquoΚατάσταση αποτελεσμάτωνrdquo
bull λογικές που είναι ακριβώς δύο Αληθής και Ψευδής
213 Τι είναι μεταβλητές
Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο που χρησιμοποιεί-ται για να παραστήσει ένα στοιχείο δεδομένου
Στη μεταβλητή εκχωρείται μια τιμή η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου
6
214 Πως διακρίνουμε τις μεταβλητές
Ανάλογα με το είδος της τιμής που μπορούν να λάβουν οι μεταβλητές διακρίνονται σε
bull Αριθμητικές
bull Αλφαριθμητικές
bull Λογικές
215 Τι είναι τελεστές
Τελεστές (operators) Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις Οι
τελεστές διακρίνονται σε αριθμητικούς λογικούς και συγκριτικούς
216 Τι είναι εκφράσεις
Εκφράσεις (expressions) Οι εκφράσεις διαμορφώνονται από τους τελεστέους (operands) που είναι σταθερές
και μεταβλητές και από τους τελεστές Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών
στις μεταβλητές και στην εκτέλεση των πράξεων Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των
πράξεων και τη χρήση των παρενθέσεων Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά
μέ-χρι μια πολύπλοκη μαθηματική παράσταση
217 Να περιγράψετε τη γενική μορφή τίτλου ενός αλγορίθμου
bull Αλγόριθμος όνομα_αλγορίθμου
bull Δεδομένα ονόματα δεδομένων
bull Αποτελέσματα ονόματα αποτελεσμάτων
218 Να περιγράψετε τη γενική μορφή ενός αλγορίθμου με ψευδοκώδικα
ΑΛΓΟΡΙΘΜΟΣ όνομα_αλγορίθμου
Δεδομένα ονόματα δεδομένων
hellip hellip hellip
εντολές
Αποτελέσματα ονόματα αποτελεσμάτων
hellip hellip hellip
ΤΕΛΟΣ όνομα_αλγορίθμου
219 Με ποιον τρόπο μπορούμε να σημειώσουμε σχόλια σrsquo έναν αλγόριθμο
Οτιδήποτε ακολουθεί το θαυμαστικό () θεωρείται ότι είναι σχόλιο
220 Να σημειώσετε σrsquo έναν πίνακα το συμβολισμό των αριθμητικών πράξεων στους αλγορίθμους
Σύμβολο Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
mod Υπολογισμός ακεραίου υπολοίπου
div Υπολογισμός ακεραίου πηλίκου
^ Υπολογισμός δύναμης
221 Τι γνωρίζεται για την εντολή εκχώρησης
Το σύμβολο χρησιμοποιείται προκειμένου να συμβολίζουμε την εντολή εκχώρησης τιμής Στα αριστερά του
συμβόλου βρίσκεται η μεταβλητή της οποίας η τιμή είναι άγνωστη ενώ στα δεξιά βρίσκεται μια παράσταση που
χρησιμοποιεί σταθερές και μεταβλητές των οποίων η τιμή είναι γνωστή Για τον υπολογισμό της τιμής της
παράστασης ισχύουν οι κανόνες υπολογισμού από τα μαθηματικά
7
222 Πότε χρησιμοποιείται η δομή επιλογής
Η δομή επιλογής χρησιμοποιείται όταν πρέπει να ληφθεί μία απόφαση με έλεγχο συνθήκης και ανάλογα να
εκτελεστούν διαφορετικές ενέργειες
223 Πότε χρησιμοποιείται η δομή πολλαπλής επιλογής
Οι διαδικασία των πολλαπλής επιλογής εφαρμόζεται στα προβλήματα όπου μπορεί να ληφθούν διαφορετικές
αποφάσεις ανάλογα με την τιμή που παίρνει μία έκφραση
224 Τι είναι εμφωλευμένη διαδικασία
Είναι μια διαδικασία κατά την οποία μια εντολή Αντότε εκτελείται όταν ισχύει (ή δεν) ισχύει η συνθήκη μίας
άλλης εντολής Αντότε
Η λογική αυτή επεκτείνεται δηλαδή να έχουμε νέα εμφωλευμένη δομή μέσα σε μία εμφωλευμένη δομή κοκ
225 Ποιες οι τιμές των τριών λογικών πράξεων
Πρόταση Α Πρόταση Β Α ή Β Α και Β όχι Α
Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Αληθής Ψευδής Ψευδής
Ψευδής Αληθής Αληθής Ψευδής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής
226 Πότε χρησιμοποιείται η δομή επανάληψης
Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μία ακολουθία εντολών πρέπει να
εφαρμοσθεί σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό
227 Τι ονομάζεται βρόχος
Το τμήμα του αλγορίθμου που επαναλαμβάνεται δηλαδή κάθε δομή επανάληψης ονομάζεται βρόχος
228 Μπορεί ένας βρόχος επανάληψης να μην εκτελεστεί ποτέ
Ο βρόχος επανάληψης μπορεί να μην εκτελεσθεί καμία φορά
229 Ποιες είναι οι δομές επανάληψης
bull Η ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ
bull Η ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
230 ποια η δομή επανάληψης ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ και το διάγραμμα ροής
της
ΌΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
231 ποια η δομή επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ και το διάγραμμα ροής της
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές
ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη
8
232 ποια η δομή επανάληψης ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip και το διάγραμμα ροής της
ΓΙΑ i ΑΠΟ αρχή ΜΕΧΡΙ τέλος ΜΕ_ΒΗΜΑ βήμα
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
233 Πότε συνήθως χρησιμοποιούμε την εκάστοτε δομή επανάληψης
bull Την ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε
εκ των προτέρων το πλήθος των επαναλήψεων και δεν μας ενδιαφέρει αν η δομή επανάληψης εκτελεστεί
τουλάχιστον μια φορά
bull Την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων το πλήθος των επαναλήψεων και μας ενδιαφέρει η δομή επανάληψης να εκτελεστεί τουλάχιστον μια
φορά
bull Την ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν γνωρίζουμε εκ
των προτέρων το πλήθος των επαναλήψεων
234 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ n πόσες φορές εκτελείται
Ακριβώς μια φορά
235 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ 1 πόσες φορές εκτελείται
Δεν εκτελείται καμία φορά
236 Ποια η πρακτική σημασία του αλγορίθμου του lsquoπολλαπλασιασμού αλά ρωσικά Πότε και πως γίνεται
χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων
Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός) αλλά η μέθοδος
μπορεί εύκολα να μετατραπεί ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων Πως ακριβώς
λειτουργεί η μέθοδος θα φανεί με το επόμενο παράδειγμα όπου περιγράφεται ο αλγόριθμος με ελεύθερο κείμενο
Έστω λοιπόν ότι δίνονται δύο θετικοί ακέραιοι αριθμοί οι αριθμοί 45 και 19 Οι αριθμοί γράφονται δίπλα δίπλα
και ο πρώτος διπλασιάζεται αγνοώντας το δεκαδικό μέρος ενώ ο δεύτερος υποδιπλασιάζεται Στο σχήμα
παρουσιάζεται η επαναλαμβανόμενη διαδικασία που συνεχίζεται μέχρις ότου στη δεύτερη στήλη να προκύψει
μονάδα Τελικώς το γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όπου αντίστοιχα στη
δεύτερη στήλη υπάρχει περιττός αριθμός Για το παράδειγμά μας τα στοιχεία αυτά παρουσιάζονται στην τρίτη
στήλη
Η μέθοδος αυτή χρησιμοποιείται πρακτικά στους υπολογιστές γιατί υλοποιείται πολύ πιο απλά απrsquo ότι ο γνωστός
μας χειρωνακτικός τρόπος πολλαπλασιασμού Πιο συγκεκριμένα απαιτεί πολλαπλασιασμό επί δύο διαίρεση διά
δύο και πρόσθεση Σε αντίθεση η γνωστή μας διαδικασία πολλαπλασιασμού απαιτεί πολλαπλασιασμό με
οποιοδήποτε ακέραιο και πρόσθεση Σε επίπεδο λοιπόν κυκλωμάτων υπολογιστή ο πολλαπλασιασμός
επί δύο και η διαίρεση διά δύο μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή ολίσθησης (shift) σε
αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία Το τελευταίο
γεγονός είναι ο λόγος που ο πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απrsquo ότι ο χειρωνακτικός τρόπος
πολλαπλασιασμού δύο ακεραίων
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
5
26 Ποιοι οι τρόποι αναπαράστασης ενός αλγορίθμου
bull με ελεύθερο κείμενο (free text) που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης
αλγορίθμου Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση
παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγορίθμων δηλαδή την αποτελεσματικότητα
bull με διαγραμματικές τεχνικές (diagramming techniques) που συνιστούν ένα γραφικό τρόπο παρουσίασης του
αλγορίθμου Από τις διάφορες διαγραμματικές τεχνικές που έχουν επινοηθεί η πιο παλιά και η πιο γνωστή ίσως
είναι το διάγραμμα ροής (flow chart) Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν
αποτελεί την καλύτερη λύση γιrsquo αυτό και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη
bull με φυσική γλώσσα (natural language) κατά βήματα Στην περίπτωση αυτή χρειάζεται προσοχή γιατί μπορεί να
παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου όπως προσδιορίσθηκε προηγουμένως δηλαδή το
κριτήριο του καθορισμού
bull με κωδικοποίηση (coding) δηλαδή με ένα πρόγραμμα που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με
τον αλγόριθμο
27 Ποια τα Σύμβολα διαγράμματος ροής
bull έλλειψη που δηλώνει την αρχή και το τέλος του κάθε αλγορίθμου
bull ρόμβος που δηλώνει μία ερώτηση με δύο ή περισσότερες εξόδους για απάντηση
bull ορθογώνιο που δηλώνει την εκτέλεση μίας ή περισσότερων πράξεων και
bull πλάγιο παραλληλόγραμμο που δηλώνει είσοδο ή έξοδο στοιχείων
28 Πότε χρησιμοποιείται η ακολουθιακή (σειριακή) δομή εντολών
Η ακολουθιακή δομή εντολών (σειριακών βημάτων) χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών
προβλημάτων όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών
29 Τι ονομάζεται εντολή
Κάθε μία λέξη της χρησιμοποιούμενης ψευδογλώσσας που προσδιορίζει μια σαφή ενέργεια θα αποκαλείται
εντολή
210 Είδη εντολών
bull Εκτελεστέα εντολή πχ Διάβασε
bull Δηλωτική εντολή πχ Αλγόριθμος
bull Δηλωτική εντολή είναι αυτή που χρησιμοποιείται για να δηλώσει κάτι χωρίς να περιγράφει καμία ενέργεια
πάνω σε οποιοδήποτε στοιχείο Είναι οι εντολές που χρησιμοποιούνται συνήθως στο τμήμα δηλώσεων ενός
προγράμματος για να δηλώσουν πχ Διάφορες σταθερές ή μεταβλητές (Σταθερές Μεταβλητές Ακέραιες
κτλπ)
bull Εκτελεστέα εντολή είναι αυτή που περιγράφει κάποια ενέργεια επάνω σε κάποιο στοιχείο Όταν εκτελεστεί
επιφέρει αλλαγές στην τιμή κάποιων μεγεθών (μεταβλητών) ή επιτρέπει τη είσοδο δεδομένων ή την έξοδο
αποτελεσμάτων όπως πχ x ltmdash x + 1
211 Τι ονομάζουμε σταθερές
Σταθερές (constands) Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες
σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου
212 Πως διακρίνουμε τις σταθερές
Οι σταθερές διακρίνονται σε
bull αριθμητικές πχ 123 +5 -125
bull αλφαριθμητικές πχ ldquoΤιμήrdquo ldquoΚατάσταση αποτελεσμάτωνrdquo
bull λογικές που είναι ακριβώς δύο Αληθής και Ψευδής
213 Τι είναι μεταβλητές
Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο που χρησιμοποιεί-ται για να παραστήσει ένα στοιχείο δεδομένου
Στη μεταβλητή εκχωρείται μια τιμή η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου
6
214 Πως διακρίνουμε τις μεταβλητές
Ανάλογα με το είδος της τιμής που μπορούν να λάβουν οι μεταβλητές διακρίνονται σε
bull Αριθμητικές
bull Αλφαριθμητικές
bull Λογικές
215 Τι είναι τελεστές
Τελεστές (operators) Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις Οι
τελεστές διακρίνονται σε αριθμητικούς λογικούς και συγκριτικούς
216 Τι είναι εκφράσεις
Εκφράσεις (expressions) Οι εκφράσεις διαμορφώνονται από τους τελεστέους (operands) που είναι σταθερές
και μεταβλητές και από τους τελεστές Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών
στις μεταβλητές και στην εκτέλεση των πράξεων Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των
πράξεων και τη χρήση των παρενθέσεων Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά
μέ-χρι μια πολύπλοκη μαθηματική παράσταση
217 Να περιγράψετε τη γενική μορφή τίτλου ενός αλγορίθμου
bull Αλγόριθμος όνομα_αλγορίθμου
bull Δεδομένα ονόματα δεδομένων
bull Αποτελέσματα ονόματα αποτελεσμάτων
218 Να περιγράψετε τη γενική μορφή ενός αλγορίθμου με ψευδοκώδικα
ΑΛΓΟΡΙΘΜΟΣ όνομα_αλγορίθμου
Δεδομένα ονόματα δεδομένων
hellip hellip hellip
εντολές
Αποτελέσματα ονόματα αποτελεσμάτων
hellip hellip hellip
ΤΕΛΟΣ όνομα_αλγορίθμου
219 Με ποιον τρόπο μπορούμε να σημειώσουμε σχόλια σrsquo έναν αλγόριθμο
Οτιδήποτε ακολουθεί το θαυμαστικό () θεωρείται ότι είναι σχόλιο
220 Να σημειώσετε σrsquo έναν πίνακα το συμβολισμό των αριθμητικών πράξεων στους αλγορίθμους
Σύμβολο Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
mod Υπολογισμός ακεραίου υπολοίπου
div Υπολογισμός ακεραίου πηλίκου
^ Υπολογισμός δύναμης
221 Τι γνωρίζεται για την εντολή εκχώρησης
Το σύμβολο χρησιμοποιείται προκειμένου να συμβολίζουμε την εντολή εκχώρησης τιμής Στα αριστερά του
συμβόλου βρίσκεται η μεταβλητή της οποίας η τιμή είναι άγνωστη ενώ στα δεξιά βρίσκεται μια παράσταση που
χρησιμοποιεί σταθερές και μεταβλητές των οποίων η τιμή είναι γνωστή Για τον υπολογισμό της τιμής της
παράστασης ισχύουν οι κανόνες υπολογισμού από τα μαθηματικά
7
222 Πότε χρησιμοποιείται η δομή επιλογής
Η δομή επιλογής χρησιμοποιείται όταν πρέπει να ληφθεί μία απόφαση με έλεγχο συνθήκης και ανάλογα να
εκτελεστούν διαφορετικές ενέργειες
223 Πότε χρησιμοποιείται η δομή πολλαπλής επιλογής
Οι διαδικασία των πολλαπλής επιλογής εφαρμόζεται στα προβλήματα όπου μπορεί να ληφθούν διαφορετικές
αποφάσεις ανάλογα με την τιμή που παίρνει μία έκφραση
224 Τι είναι εμφωλευμένη διαδικασία
Είναι μια διαδικασία κατά την οποία μια εντολή Αντότε εκτελείται όταν ισχύει (ή δεν) ισχύει η συνθήκη μίας
άλλης εντολής Αντότε
Η λογική αυτή επεκτείνεται δηλαδή να έχουμε νέα εμφωλευμένη δομή μέσα σε μία εμφωλευμένη δομή κοκ
225 Ποιες οι τιμές των τριών λογικών πράξεων
Πρόταση Α Πρόταση Β Α ή Β Α και Β όχι Α
Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Αληθής Ψευδής Ψευδής
Ψευδής Αληθής Αληθής Ψευδής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής
226 Πότε χρησιμοποιείται η δομή επανάληψης
Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μία ακολουθία εντολών πρέπει να
εφαρμοσθεί σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό
227 Τι ονομάζεται βρόχος
Το τμήμα του αλγορίθμου που επαναλαμβάνεται δηλαδή κάθε δομή επανάληψης ονομάζεται βρόχος
228 Μπορεί ένας βρόχος επανάληψης να μην εκτελεστεί ποτέ
Ο βρόχος επανάληψης μπορεί να μην εκτελεσθεί καμία φορά
229 Ποιες είναι οι δομές επανάληψης
bull Η ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ
bull Η ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
230 ποια η δομή επανάληψης ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ και το διάγραμμα ροής
της
ΌΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
231 ποια η δομή επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ και το διάγραμμα ροής της
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές
ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη
8
232 ποια η δομή επανάληψης ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip και το διάγραμμα ροής της
ΓΙΑ i ΑΠΟ αρχή ΜΕΧΡΙ τέλος ΜΕ_ΒΗΜΑ βήμα
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
233 Πότε συνήθως χρησιμοποιούμε την εκάστοτε δομή επανάληψης
bull Την ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε
εκ των προτέρων το πλήθος των επαναλήψεων και δεν μας ενδιαφέρει αν η δομή επανάληψης εκτελεστεί
τουλάχιστον μια φορά
bull Την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων το πλήθος των επαναλήψεων και μας ενδιαφέρει η δομή επανάληψης να εκτελεστεί τουλάχιστον μια
φορά
bull Την ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν γνωρίζουμε εκ
των προτέρων το πλήθος των επαναλήψεων
234 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ n πόσες φορές εκτελείται
Ακριβώς μια φορά
235 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ 1 πόσες φορές εκτελείται
Δεν εκτελείται καμία φορά
236 Ποια η πρακτική σημασία του αλγορίθμου του lsquoπολλαπλασιασμού αλά ρωσικά Πότε και πως γίνεται
χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων
Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός) αλλά η μέθοδος
μπορεί εύκολα να μετατραπεί ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων Πως ακριβώς
λειτουργεί η μέθοδος θα φανεί με το επόμενο παράδειγμα όπου περιγράφεται ο αλγόριθμος με ελεύθερο κείμενο
Έστω λοιπόν ότι δίνονται δύο θετικοί ακέραιοι αριθμοί οι αριθμοί 45 και 19 Οι αριθμοί γράφονται δίπλα δίπλα
και ο πρώτος διπλασιάζεται αγνοώντας το δεκαδικό μέρος ενώ ο δεύτερος υποδιπλασιάζεται Στο σχήμα
παρουσιάζεται η επαναλαμβανόμενη διαδικασία που συνεχίζεται μέχρις ότου στη δεύτερη στήλη να προκύψει
μονάδα Τελικώς το γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όπου αντίστοιχα στη
δεύτερη στήλη υπάρχει περιττός αριθμός Για το παράδειγμά μας τα στοιχεία αυτά παρουσιάζονται στην τρίτη
στήλη
Η μέθοδος αυτή χρησιμοποιείται πρακτικά στους υπολογιστές γιατί υλοποιείται πολύ πιο απλά απrsquo ότι ο γνωστός
μας χειρωνακτικός τρόπος πολλαπλασιασμού Πιο συγκεκριμένα απαιτεί πολλαπλασιασμό επί δύο διαίρεση διά
δύο και πρόσθεση Σε αντίθεση η γνωστή μας διαδικασία πολλαπλασιασμού απαιτεί πολλαπλασιασμό με
οποιοδήποτε ακέραιο και πρόσθεση Σε επίπεδο λοιπόν κυκλωμάτων υπολογιστή ο πολλαπλασιασμός
επί δύο και η διαίρεση διά δύο μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή ολίσθησης (shift) σε
αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία Το τελευταίο
γεγονός είναι ο λόγος που ο πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απrsquo ότι ο χειρωνακτικός τρόπος
πολλαπλασιασμού δύο ακεραίων
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
6
214 Πως διακρίνουμε τις μεταβλητές
Ανάλογα με το είδος της τιμής που μπορούν να λάβουν οι μεταβλητές διακρίνονται σε
bull Αριθμητικές
bull Αλφαριθμητικές
bull Λογικές
215 Τι είναι τελεστές
Τελεστές (operators) Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις Οι
τελεστές διακρίνονται σε αριθμητικούς λογικούς και συγκριτικούς
216 Τι είναι εκφράσεις
Εκφράσεις (expressions) Οι εκφράσεις διαμορφώνονται από τους τελεστέους (operands) που είναι σταθερές
και μεταβλητές και από τους τελεστές Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών
στις μεταβλητές και στην εκτέλεση των πράξεων Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των
πράξεων και τη χρήση των παρενθέσεων Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά
μέ-χρι μια πολύπλοκη μαθηματική παράσταση
217 Να περιγράψετε τη γενική μορφή τίτλου ενός αλγορίθμου
bull Αλγόριθμος όνομα_αλγορίθμου
bull Δεδομένα ονόματα δεδομένων
bull Αποτελέσματα ονόματα αποτελεσμάτων
218 Να περιγράψετε τη γενική μορφή ενός αλγορίθμου με ψευδοκώδικα
ΑΛΓΟΡΙΘΜΟΣ όνομα_αλγορίθμου
Δεδομένα ονόματα δεδομένων
hellip hellip hellip
εντολές
Αποτελέσματα ονόματα αποτελεσμάτων
hellip hellip hellip
ΤΕΛΟΣ όνομα_αλγορίθμου
219 Με ποιον τρόπο μπορούμε να σημειώσουμε σχόλια σrsquo έναν αλγόριθμο
Οτιδήποτε ακολουθεί το θαυμαστικό () θεωρείται ότι είναι σχόλιο
220 Να σημειώσετε σrsquo έναν πίνακα το συμβολισμό των αριθμητικών πράξεων στους αλγορίθμους
Σύμβολο Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
mod Υπολογισμός ακεραίου υπολοίπου
div Υπολογισμός ακεραίου πηλίκου
^ Υπολογισμός δύναμης
221 Τι γνωρίζεται για την εντολή εκχώρησης
Το σύμβολο χρησιμοποιείται προκειμένου να συμβολίζουμε την εντολή εκχώρησης τιμής Στα αριστερά του
συμβόλου βρίσκεται η μεταβλητή της οποίας η τιμή είναι άγνωστη ενώ στα δεξιά βρίσκεται μια παράσταση που
χρησιμοποιεί σταθερές και μεταβλητές των οποίων η τιμή είναι γνωστή Για τον υπολογισμό της τιμής της
παράστασης ισχύουν οι κανόνες υπολογισμού από τα μαθηματικά
7
222 Πότε χρησιμοποιείται η δομή επιλογής
Η δομή επιλογής χρησιμοποιείται όταν πρέπει να ληφθεί μία απόφαση με έλεγχο συνθήκης και ανάλογα να
εκτελεστούν διαφορετικές ενέργειες
223 Πότε χρησιμοποιείται η δομή πολλαπλής επιλογής
Οι διαδικασία των πολλαπλής επιλογής εφαρμόζεται στα προβλήματα όπου μπορεί να ληφθούν διαφορετικές
αποφάσεις ανάλογα με την τιμή που παίρνει μία έκφραση
224 Τι είναι εμφωλευμένη διαδικασία
Είναι μια διαδικασία κατά την οποία μια εντολή Αντότε εκτελείται όταν ισχύει (ή δεν) ισχύει η συνθήκη μίας
άλλης εντολής Αντότε
Η λογική αυτή επεκτείνεται δηλαδή να έχουμε νέα εμφωλευμένη δομή μέσα σε μία εμφωλευμένη δομή κοκ
225 Ποιες οι τιμές των τριών λογικών πράξεων
Πρόταση Α Πρόταση Β Α ή Β Α και Β όχι Α
Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Αληθής Ψευδής Ψευδής
Ψευδής Αληθής Αληθής Ψευδής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής
226 Πότε χρησιμοποιείται η δομή επανάληψης
Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μία ακολουθία εντολών πρέπει να
εφαρμοσθεί σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό
227 Τι ονομάζεται βρόχος
Το τμήμα του αλγορίθμου που επαναλαμβάνεται δηλαδή κάθε δομή επανάληψης ονομάζεται βρόχος
228 Μπορεί ένας βρόχος επανάληψης να μην εκτελεστεί ποτέ
Ο βρόχος επανάληψης μπορεί να μην εκτελεσθεί καμία φορά
229 Ποιες είναι οι δομές επανάληψης
bull Η ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ
bull Η ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
230 ποια η δομή επανάληψης ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ και το διάγραμμα ροής
της
ΌΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
231 ποια η δομή επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ και το διάγραμμα ροής της
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές
ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη
8
232 ποια η δομή επανάληψης ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip και το διάγραμμα ροής της
ΓΙΑ i ΑΠΟ αρχή ΜΕΧΡΙ τέλος ΜΕ_ΒΗΜΑ βήμα
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
233 Πότε συνήθως χρησιμοποιούμε την εκάστοτε δομή επανάληψης
bull Την ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε
εκ των προτέρων το πλήθος των επαναλήψεων και δεν μας ενδιαφέρει αν η δομή επανάληψης εκτελεστεί
τουλάχιστον μια φορά
bull Την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων το πλήθος των επαναλήψεων και μας ενδιαφέρει η δομή επανάληψης να εκτελεστεί τουλάχιστον μια
φορά
bull Την ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν γνωρίζουμε εκ
των προτέρων το πλήθος των επαναλήψεων
234 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ n πόσες φορές εκτελείται
Ακριβώς μια φορά
235 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ 1 πόσες φορές εκτελείται
Δεν εκτελείται καμία φορά
236 Ποια η πρακτική σημασία του αλγορίθμου του lsquoπολλαπλασιασμού αλά ρωσικά Πότε και πως γίνεται
χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων
Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός) αλλά η μέθοδος
μπορεί εύκολα να μετατραπεί ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων Πως ακριβώς
λειτουργεί η μέθοδος θα φανεί με το επόμενο παράδειγμα όπου περιγράφεται ο αλγόριθμος με ελεύθερο κείμενο
Έστω λοιπόν ότι δίνονται δύο θετικοί ακέραιοι αριθμοί οι αριθμοί 45 και 19 Οι αριθμοί γράφονται δίπλα δίπλα
και ο πρώτος διπλασιάζεται αγνοώντας το δεκαδικό μέρος ενώ ο δεύτερος υποδιπλασιάζεται Στο σχήμα
παρουσιάζεται η επαναλαμβανόμενη διαδικασία που συνεχίζεται μέχρις ότου στη δεύτερη στήλη να προκύψει
μονάδα Τελικώς το γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όπου αντίστοιχα στη
δεύτερη στήλη υπάρχει περιττός αριθμός Για το παράδειγμά μας τα στοιχεία αυτά παρουσιάζονται στην τρίτη
στήλη
Η μέθοδος αυτή χρησιμοποιείται πρακτικά στους υπολογιστές γιατί υλοποιείται πολύ πιο απλά απrsquo ότι ο γνωστός
μας χειρωνακτικός τρόπος πολλαπλασιασμού Πιο συγκεκριμένα απαιτεί πολλαπλασιασμό επί δύο διαίρεση διά
δύο και πρόσθεση Σε αντίθεση η γνωστή μας διαδικασία πολλαπλασιασμού απαιτεί πολλαπλασιασμό με
οποιοδήποτε ακέραιο και πρόσθεση Σε επίπεδο λοιπόν κυκλωμάτων υπολογιστή ο πολλαπλασιασμός
επί δύο και η διαίρεση διά δύο μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή ολίσθησης (shift) σε
αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία Το τελευταίο
γεγονός είναι ο λόγος που ο πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απrsquo ότι ο χειρωνακτικός τρόπος
πολλαπλασιασμού δύο ακεραίων
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
7
222 Πότε χρησιμοποιείται η δομή επιλογής
Η δομή επιλογής χρησιμοποιείται όταν πρέπει να ληφθεί μία απόφαση με έλεγχο συνθήκης και ανάλογα να
εκτελεστούν διαφορετικές ενέργειες
223 Πότε χρησιμοποιείται η δομή πολλαπλής επιλογής
Οι διαδικασία των πολλαπλής επιλογής εφαρμόζεται στα προβλήματα όπου μπορεί να ληφθούν διαφορετικές
αποφάσεις ανάλογα με την τιμή που παίρνει μία έκφραση
224 Τι είναι εμφωλευμένη διαδικασία
Είναι μια διαδικασία κατά την οποία μια εντολή Αντότε εκτελείται όταν ισχύει (ή δεν) ισχύει η συνθήκη μίας
άλλης εντολής Αντότε
Η λογική αυτή επεκτείνεται δηλαδή να έχουμε νέα εμφωλευμένη δομή μέσα σε μία εμφωλευμένη δομή κοκ
225 Ποιες οι τιμές των τριών λογικών πράξεων
Πρόταση Α Πρόταση Β Α ή Β Α και Β όχι Α
Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Αληθής Ψευδής Ψευδής
Ψευδής Αληθής Αληθής Ψευδής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής
226 Πότε χρησιμοποιείται η δομή επανάληψης
Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μία ακολουθία εντολών πρέπει να
εφαρμοσθεί σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό
227 Τι ονομάζεται βρόχος
Το τμήμα του αλγορίθμου που επαναλαμβάνεται δηλαδή κάθε δομή επανάληψης ονομάζεται βρόχος
228 Μπορεί ένας βρόχος επανάληψης να μην εκτελεστεί ποτέ
Ο βρόχος επανάληψης μπορεί να μην εκτελεσθεί καμία φορά
229 Ποιες είναι οι δομές επανάληψης
bull Η ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ
bull Η ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
230 ποια η δομή επανάληψης ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ και το διάγραμμα ροής
της
ΌΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
231 ποια η δομή επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ και το διάγραμμα ροής της
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές
ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη
8
232 ποια η δομή επανάληψης ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip και το διάγραμμα ροής της
ΓΙΑ i ΑΠΟ αρχή ΜΕΧΡΙ τέλος ΜΕ_ΒΗΜΑ βήμα
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
233 Πότε συνήθως χρησιμοποιούμε την εκάστοτε δομή επανάληψης
bull Την ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε
εκ των προτέρων το πλήθος των επαναλήψεων και δεν μας ενδιαφέρει αν η δομή επανάληψης εκτελεστεί
τουλάχιστον μια φορά
bull Την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων το πλήθος των επαναλήψεων και μας ενδιαφέρει η δομή επανάληψης να εκτελεστεί τουλάχιστον μια
φορά
bull Την ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν γνωρίζουμε εκ
των προτέρων το πλήθος των επαναλήψεων
234 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ n πόσες φορές εκτελείται
Ακριβώς μια φορά
235 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ 1 πόσες φορές εκτελείται
Δεν εκτελείται καμία φορά
236 Ποια η πρακτική σημασία του αλγορίθμου του lsquoπολλαπλασιασμού αλά ρωσικά Πότε και πως γίνεται
χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων
Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός) αλλά η μέθοδος
μπορεί εύκολα να μετατραπεί ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων Πως ακριβώς
λειτουργεί η μέθοδος θα φανεί με το επόμενο παράδειγμα όπου περιγράφεται ο αλγόριθμος με ελεύθερο κείμενο
Έστω λοιπόν ότι δίνονται δύο θετικοί ακέραιοι αριθμοί οι αριθμοί 45 και 19 Οι αριθμοί γράφονται δίπλα δίπλα
και ο πρώτος διπλασιάζεται αγνοώντας το δεκαδικό μέρος ενώ ο δεύτερος υποδιπλασιάζεται Στο σχήμα
παρουσιάζεται η επαναλαμβανόμενη διαδικασία που συνεχίζεται μέχρις ότου στη δεύτερη στήλη να προκύψει
μονάδα Τελικώς το γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όπου αντίστοιχα στη
δεύτερη στήλη υπάρχει περιττός αριθμός Για το παράδειγμά μας τα στοιχεία αυτά παρουσιάζονται στην τρίτη
στήλη
Η μέθοδος αυτή χρησιμοποιείται πρακτικά στους υπολογιστές γιατί υλοποιείται πολύ πιο απλά απrsquo ότι ο γνωστός
μας χειρωνακτικός τρόπος πολλαπλασιασμού Πιο συγκεκριμένα απαιτεί πολλαπλασιασμό επί δύο διαίρεση διά
δύο και πρόσθεση Σε αντίθεση η γνωστή μας διαδικασία πολλαπλασιασμού απαιτεί πολλαπλασιασμό με
οποιοδήποτε ακέραιο και πρόσθεση Σε επίπεδο λοιπόν κυκλωμάτων υπολογιστή ο πολλαπλασιασμός
επί δύο και η διαίρεση διά δύο μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή ολίσθησης (shift) σε
αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία Το τελευταίο
γεγονός είναι ο λόγος που ο πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απrsquo ότι ο χειρωνακτικός τρόπος
πολλαπλασιασμού δύο ακεραίων
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
8
232 ποια η δομή επανάληψης ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip και το διάγραμμα ροής της
ΓΙΑ i ΑΠΟ αρχή ΜΕΧΡΙ τέλος ΜΕ_ΒΗΜΑ βήμα
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
233 Πότε συνήθως χρησιμοποιούμε την εκάστοτε δομή επανάληψης
bull Την ΟΣΟ hellip ΕΠΑΝΑΛΑΒΕ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε
εκ των προτέρων το πλήθος των επαναλήψεων και δεν μας ενδιαφέρει αν η δομή επανάληψης εκτελεστεί
τουλάχιστον μια φορά
bull Την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ hellip ΜΕΧΡΙΣ_ΟΤΟΥ την χρησιμοποιούμε συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων το πλήθος των επαναλήψεων και μας ενδιαφέρει η δομή επανάληψης να εκτελεστεί τουλάχιστον μια
φορά
bull Την ΓΙΑ hellipΑΠΟ hellip ΜΕΧΡΙ hellip ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ την χρησιμοποιούμε συνήθως όταν γνωρίζουμε εκ
των προτέρων το πλήθος των επαναλήψεων
234 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ n πόσες φορές εκτελείται
Ακριβώς μια φορά
235 Ο βρόχος ΓΙΑ k ΑΠΟ n ΜΕΧΡΙ 1 πόσες φορές εκτελείται
Δεν εκτελείται καμία φορά
236 Ποια η πρακτική σημασία του αλγορίθμου του lsquoπολλαπλασιασμού αλά ρωσικά Πότε και πως γίνεται
χρήση αυτού του τρόπου πολλαπλασιασμού δύο ακεραίων
Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός) αλλά η μέθοδος
μπορεί εύκολα να μετατραπεί ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων Πως ακριβώς
λειτουργεί η μέθοδος θα φανεί με το επόμενο παράδειγμα όπου περιγράφεται ο αλγόριθμος με ελεύθερο κείμενο
Έστω λοιπόν ότι δίνονται δύο θετικοί ακέραιοι αριθμοί οι αριθμοί 45 και 19 Οι αριθμοί γράφονται δίπλα δίπλα
και ο πρώτος διπλασιάζεται αγνοώντας το δεκαδικό μέρος ενώ ο δεύτερος υποδιπλασιάζεται Στο σχήμα
παρουσιάζεται η επαναλαμβανόμενη διαδικασία που συνεχίζεται μέχρις ότου στη δεύτερη στήλη να προκύψει
μονάδα Τελικώς το γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όπου αντίστοιχα στη
δεύτερη στήλη υπάρχει περιττός αριθμός Για το παράδειγμά μας τα στοιχεία αυτά παρουσιάζονται στην τρίτη
στήλη
Η μέθοδος αυτή χρησιμοποιείται πρακτικά στους υπολογιστές γιατί υλοποιείται πολύ πιο απλά απrsquo ότι ο γνωστός
μας χειρωνακτικός τρόπος πολλαπλασιασμού Πιο συγκεκριμένα απαιτεί πολλαπλασιασμό επί δύο διαίρεση διά
δύο και πρόσθεση Σε αντίθεση η γνωστή μας διαδικασία πολλαπλασιασμού απαιτεί πολλαπλασιασμό με
οποιοδήποτε ακέραιο και πρόσθεση Σε επίπεδο λοιπόν κυκλωμάτων υπολογιστή ο πολλαπλασιασμός
επί δύο και η διαίρεση διά δύο μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή ολίσθησης (shift) σε
αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία Το τελευταίο
γεγονός είναι ο λόγος που ο πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απrsquo ότι ο χειρωνακτικός τρόπος
πολλαπλασιασμού δύο ακεραίων
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
9
Στη συνέχεια παρουσιάζεται ο αλγόριθμος πολλαπλασιασμού ακεραίων αλά ρωσικά με φυσική γλώσσα κατά
βήματα
Ακολουθεί ο αλγόριθμος σε ψευδοκώδικα για το ίδιο πρόβλημα του πολλαπλασιασμού αλά ρωσικά
ΑΛΓΟΡΙΘΜΟΣ Πολλαπλασιασμός_αλά_ρωσικά
ΔΕΔΟΜΕΝΑ Μ1Μ2 ακέραιοι
P larr0
ΌΣΟ M2 gt 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ M2 MOD 2 = 1 ΤΟΤΕ
P larrP+M1
ΤΕΛΟΣ_ΑΝ
M1 larrM12
M2 larrΑ_Μ(M22)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ P το γινόμενο των ακεραίων Μ1Μ2
ΤΕΛΟΣ Πολλαπλασιασμός_αλά_ρωσικά
237 Τι ονομάζουμε Ολίσθηση (shift)
Η ολίσθηση προς τα αριστερά (προσθήκη ενός 0 στο τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των
υπολοίπων προς τα αριστερά) ισοδυναμεί με πολλαπλασιασμό επί δύο ενώ η ολίσθηση προς τα δεξιά (αποκοπή
του τελευταίου ψηφίου από το τέλος ενός αριθμού σε δυαδική μορφή και μετατόπιση των υπολοίπων προς τα
δεξιά) ισοδυναμεί με την ακέραια διαίρεση δια δύο
238 Ποια είναι τα στοιχεία της ψευδογλώσσας
1) Σταθερές
Αριθμητικές χρησιμοποιούνται οι αριθμητικοί χαρακτήρες το + το ndash και η τελεία ως δε-καδικό σημείο
Αλφαριθμητικές σχηματίζονται από οποιουσδήποτε χαρακτήρες εντός διπλών εισαγωγικών
Λογικές υπάρχουν δύο οι Αληθής και Ψευδής
2) Μεταβλητές
Για τη σύνθεση του ονόματος μιας μεταβλητής χρησιμοποιούνται οι αριθμητικοί χαρακτήρες οι αλφαβητικοί
χαρακτήρες πεζοί και κεφαλαίοι καθώς και ο χαρακτήρας _ (underscore) Οι μεταβλητές μπορούν επίσης να
είναι αριθμητικές αλφαριθμητικές και λογικές
3) Τελεστές
Αριθμητικοί + - ^
Συγκριτικοί lt= lt = ltgt gt lt=
Λογικοί και (σύζευξη) ή (διάζευξη) όχι (άρνηση)
4) Εκφράσεις
Σχηματίζονται από σταθερές μεταβλητές συναρτήσεις τελεστές και παρενθέσεις
5) Εντολή εκχώρησης
Μεταβλητή larr έκφραση
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
10
6) Δομές Επιλογής
Απλή επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
ltεντολέςgt
ΤΕΛΟΣ_ΑΝ
Σύνθετη επιλογή
ΑΝ ltσυνθήκηgt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ
lt εντολές _2gt
ΤΕΛΟΣ_ΑΝ
Πολλαπλή επιλογή
ΑΝ ltσυνθήκη_1gt ΤΟΤΕ
lt εντολές _1gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_2gt ΤΟΤΕ
lt εντολές _2gt
ΑΛΛΙΩΣ_ΑΝ ltσυνθήκη_νgt ΤΟΤΕ
lt εντολές _νgt
ΑΛΛΙΩΣ
lt εντολέςgt
ΤΕΛΟΣ_ΑΝ
7) Επαναληπτικές Δομές
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή
ΌΣΟ ltσυνθήκηgt ΕΠΑΝΑΛΑΒΕ
διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
bull Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Διαδικασία
ΜΕΧΡΙΣ_ΟΤΟΥ ltσυνθήκηgt
bull Επαναληπτικό σχήμα ορισμένων φορών επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ_ΒΗΜΑ β
Διαδικασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
8) Ρήματα σε προστακτική
Για παράδειγμα ldquoΔιάβασεrdquo ldquoΓράψεrdquo ldquoΕκτέλεσεrdquo κλπ
9) Ουσιαστικά
Σε ορισμένες περιπτώσεις όταν οι ζητούμενες ενέργειες είναι πολλές ή προφανείς καθορίζονται με τη χρήση
ουσιαστικών αντί ρημάτων όπως ldquoεισαγωγή δεδομένωνrdquo ldquoεμφάνιση πεδίων στην οθόνηrdquo κλπ
10) Σχόλια
Προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου στις πρώτες
προτάσσεται το σύμβολο για παράδειγμα Σχόλια
11) Πρώτη και τελευταία γραμμή ενός αλγορίθμου είναι αντίστοιχα
Αλγόριθμος ltόνομα_αλγορίθμουgt και Τέλος ltόνομα_αλγορίθμουgt
12) Δεδομένα και αποτελέσματα
Τα δεδομένα εισόδου (αν υπάρχουν) περιγράφονται στη δεύτερη γραμμή του αλγορίθμου εντός των συμβόλων
Αντίστοιχα τα αποτελέσματα εξόδου δίνονται στην προτελευταία γραμμή του αλγορίθμου εντός των
συμβόλων
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
11
Κεφάλαιο 7
71 Από τι εξαρτάται η επιλογή της γλώσσας προγραμματισμού που θα χρησιμοποιήσουμε
Η επιλογή της κατάλληλής γλώσσας δεν είναι εύκολη και εξαρτάται από
bull το είδος του προγράμματος
bull το διαθέσιμο εξοπλισμό και σαφώς
bull τις γνώσεις και τις ιδιαίτερες προτιμήσεις του προγραμματιστή
Συχνά το ίδιο πρόβλημα μπορεί να λυθεί εξίσου ικανοποιητικά με πολλές διαφορετικές γλώσσες
προγραμματισμού
72 Ποιοι οι λόγοι δημιουργίας τόσων διαφορετικών γλωσσών προγραμματισμού
Πρέπει να έχουμε πάντα υπόψη μας ότι
bull Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό δίνοντας ι-διαίτερη έμφαση σε ορισμένα
χαρακτηριστικά σε βάρος βέβαια κάποιων άλλων Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού απλά υπάρχει
γλώσσα καταλληλότερη για την ανάπτυξη συγκεκριμένου τύπου εφαρμογών
bull Οι γλώσσες προγραμματισμού περιέχουν πολλές πληροφορίες που σχετίζονται με τεχνικά θέματα Αυτά τα
χαρακτηριστικά αλλάζουν αρκετά συχνά όπως η γλώσσα εξελίσσεται και εξαρτώνται σε μεγάλο βαθμό από τον
εξοπλισμό και το λειτουργικό σύστημα Οι νεώτερες εκδόσεις των γλωσσών συνήθως διαθέτουν πλουσιότερο ρε-
περτόριο εντολών και άλλων δυνατοτήτων χωρίς όμως να προσθέτουν οτιδήποτε στην εκμάθηση της
δημιουργίας σωστών προγραμμάτων
bull Σχεδόν όλες οι γλώσσες προγραμματισμού έχουν κοινά χαρακτηριστικά επεξεργάζονται κατά κανόνα τους
ίδιους τύπους δεδομένων υποστηρίζουν τις ίδιες βασικές δομές και έχουν παρόμοιες εντολές
73 Ποια τα χαρακτηριστικά της γλώσσας προγραμματισμού ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ είναι σχεδιασμένη έτσι ώστε να αποτελεί ένα εργαλείο προγραμματισμού κα-τάλληλο για
εκπαιδευτικούς σκοπούς Περιέχει τα χαρακτηριστικά τις δομές και τις εντολές που περιέχονται σε διάφορες
σύγχρονες γλώσσες προγραμματισμού όπως η Pascal Visual Basic C C++ Java και άλλες χωρίς όμως να
ασχολείται με τις τεχνικές λεπτομέρειες αυτών Ο προγραμματισμός με τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη
του αλγορίθμου και τη μετα-τροπή του σε σωστό πρόγραμμα
74 Ποιο το αλφάβητο της ΓΛΩΣΣΑΣ
Το αλφάβητο της ΓΛΩΣΣΑΣ αποτελείται από
bull τα γράμματα του ελληνικού αλφαβήτου
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
o Πεζά ελληνικού αλφαβήτου (α-ω)
bull τα γράμματα του λατινικού αλφαβήτου
o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
o Πεζά λατινικού αλφαβήτου (a-z)
bull τα ψηφία 0-9
bull τα ειδικά σύμβολα που χρησιμοποιούνται για προκαθορισμένες ενέργειες + - = ^ ( ) lsquo amp κενός
χαρακτήρας
75 Ποιους τύπους δεδομένων υποστηρίζει η ΓΛΩΣΣΑ
Οι τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ είναι
bull οι αριθμητικοί που περιλαμβάνουν τους ακέραιους και τους πραγματικούς αριθμούς
bull οι χαρακτήρες και τέλος
bull οι λογικοί
76 Τι είναι ακέραιος τύπος
Ακέραιος τύπος Ο τύπος αυτός περιλαμβάνει τους ακέραιους που είναι γνωστοί από τα μαθηματικά Οι ακέραιοι
μπορούν να είναι θετικοί αρνητικοί ή μηδέν Παραδείγματα ακεραίων είναι οι αριθμοί 1 3409 0 -980
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
12
77 Τι είναι πραγματικός τύπος
Πραγματικός τύπος Ο τύπος αυτός περιλαμβάνει τους πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά Οι αριθμοί 314159 271828 -11245 045 είναι πραγματικοί αριθμοί Και οι πραγματικοί αριθμοί
μπορούν να είναι θετικοί αρνητικοί ή μηδέν
78 Τι είναι τύπος χαρακτήρας
Χαρακτήρας Ο τύπος αυτός αναφέρεται τόσο σε ένα χαρακτήρα όσο και μία σειρά χαρακτήρων Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιοδήποτε χαρακτήρα παράγεται από το πληκτρολόγιο Παραδείγματα
χαρακτήρων είναι lsquoΚrsquo lsquoΚώσταςrsquo lsquoσήμερα είναι Τετάρτηrsquo lsquoΤα πολλαπλάσια του 15 είναιrsquo
Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται μέσα σε απλά εισαγωγικά lsquo lsquo Τα δεδομένα αυτού του τύπου
επειδή περιέχουν τόσο αλφαβητικούς όσο και αριθμητικούς χαρακτήρες ονομάζονται συχνά αλφαριθμητικά
79 Τι είναι λογικός χαρακτήρας
Λογικός Αυτός ο τύπος δέχεται μόνο δύο τιμές ΑΛΗΘΗΣ και ΨΕΥΔΗΣ Οι τιμές αντιπροσωπεύουν αληθείς ή
ψευδείς συνθήκες
710 Τι είναι σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης του
προγράμματος Οι σταθερές ακέραιες πραγματικές αλφαριθμητικές ή λογικές
711 Τι είναι συμβολικές σταθερές
Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα εφόσον αυτά δηλωθούν στην αρχή του
προγράμματος (στο τμήμα δήλωσης σταθερών βλέπε παρακάτω)
712 Πως γίνεται η σύνταξη των σταθερών
ΣΤΑΘΕΡΕΣ
Ονομα-1 = σταθερή-τιμή-1
Όνομα-2 = σταθερά-τιμή-2
Όνομα-ν = σταθερά-τιμή-ν
713 Που καταχωρούνται τα δεδομένα
Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη του υπολογιστή καταλαμβάνοντας συγκεκριμένο
αριθμό θέσεων (bytes) Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο αριθμό bytes ποικίλει και το
εύρος τιμών που μπορούν να λάβουν Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο ακεραίων ή πραγματικών
αριθμών Συνήθεις τύποι
δεδομένων στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος (integer) σε 1 2 ή 4 bytes και ο
πραγματικός (real) σε 4 ή 8 bytes
714 Το είναι τα ονόματα
Κάθε πρόγραμμα καθώς και τα δεδομένα που χρησιμοποιεί (συμβολικές σταθερές και μεταβλητές) έχουν ένα
όνομα με το οποίο αναφερόμαστε σε αυτά Τα ονόματα αυτά μπορούν να αποτελούνται από γράμματα πεζά ή
κεφαλαία του ελληνικού ή του λατινικού αλφαβήτου (Α-Ω Α-Ζ) ψηφία (0-9) καθώς και τον χαρακτήρα κάτω
παύλα (underscore) (_) ενώ πρέπει υποχρεωτικά να αρχίζουν με γράμμα
715 Ποιες ονομάζονται δεσμευμένες λέξεις
∆εσμευμένες λέξεις ονομάζονται κάποιες λέξεις της ελληνικής γλώσσας που έχουν αυστηρά καθορισμένη σημασία
και τρόπο χρήσης προκειμένου να επιτυγχάνεται ομοιομορφία κατά τη συγγραφή προγραμμάτων Παραδείγματα
δεσμευμένων λέξεων είναι οι εξής ΠΡΟΓΡΑΜΜΑ ΑΡΧΗ ΑΚΕΡΑΙΕΣ ∆ΙΑΒΑΣΕ ΓΡΑΨΕ ΤΕΛΟΣ
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
13
716 Δώστε παραδείγματα ονομάτων αποδεκτά και μη αποδεκτά από την ΓΛΩΣΣΑ
Παραδείγματα ονομάτων που είναι αποδεκτά από τη ΓΛΩΣΣΑ είναι Α Όνομα Τυπική_Απόκλιση Α100 ΦΠΑ
Παραδείγματα ονομάτων που δεν είναι αποδεκτά είναιo 100Α Μέση Τιμή Κόστος$
717 Τι είναι μεταβλητή
Μια μεταβλητή είναι μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται
Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα αντιστοιχούνται από το μεταγλωττιστή σε συγκεκριμένες
θέσεις μνήμης του υπολογιστή Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση μνήμης
και μπορεί να μεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράμματος Ενώ μένει υποχρεωτικά
αναλλοίωτος ο τύπος της μεταβλητής
718 Τι τύπους μεταβλητών έχουμε
Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων που αναφέρθηκαν δηλαδή ακεραίων
πραγματικών χαρακτήρων και λογικών ενώ η δήλωση του τύπου κάθε μεταβλητής γίνεται υποχρεωτικά στο
τμήμα δήλωσης μεταβλητών
719 Ποιοι είναι οι κανόνες ονοματολογίας των μεταβλητών
Επίσης καλό το όνομα να ταιριάζει με το περιεχόμενό του)
720 Πως γίνεται η σύνταξη των μεταβλητών
ΜΕΤΑΒΛΗΤΕΣ
τύπος-1 Λίστα-μεταβλητών-1
τύπος-2 Λίστα-μεταβλητών-2
Τύπος-ν Λίστα-μεταβλητών-ν
Αν και όπως αναφέρθηκε το όνομα των μεταβλητών μπορεί να είναι οποιοσδήποτε συν-δυασμός χαρακτήρων
είναι καλή πρακτική να χρησιμοποιούνται ονόματα τα οποία να υπονοούν το περιεχόμενό τους κάνοντας το
πρόγραμμα ευκολότερο στην ανάγνωση του και στην κατανόηση του
721 Ποιοι είναι οι αριθμητικοί τελεστές
Οι αριθμητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις πρόσθεση
αφαίρεση πολλαπλασιασμό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναμη η ακέραια διαίρεση και το
υπόλοιπο της ακέραιας διαίρεσης
Οι τελεστές και οι αντίστοιχες πράξεις είναι Αριθμητικός
τελεστής
Πράξη
+ Πρόσθεση
- Αφαίρεση
Πολλαπλασιασμός
Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
MOD Υπόλοιπο ακέραιας διαίρεσης
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
14
722 Ποιες συναρτήσεις χρησιμοποιούμε στην ΓΛΩΣΣΑ
Πολλές γνωστές συναρτήσεις από τα μαθηματικά χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ Οι
συναρτήσεις αυτές είναι
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Τ_Ρ(Χ) Υπολογισμός τετραγωνικής ρίζας
ΛΟΓ(Χ) Υπολογισμός φυσικού λογαρίθμου
Ε(Χ) Υπολογισμός του ex
A_M(X) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ
723 Τι είναι αριθμητικές εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό τότε αναφερόμαστε σε εκφράσεις (expressions) Για τη σύνταξη μιας
αριθμητικής έκφρασης χρησιμοποιούνται αριθμητικές σταθερές μεταβλητές συναρτήσεις αριθμητικοί τελεστές
και παρενθέσεις Οι αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις
Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή η οποία βρίσκεται μετά την εκτέλεση των πράξεων
Γιrsquo αυτό είναι απαραίτητο όλες οι μεταβλητές που εμφανίζονται σε μια έκφραση να έχουν οριστεί προηγούμενα
δηλαδή να έχουν κάποια τιμή
724 Ποια είναι η ιεραρχία των πράξεων
Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται σύμφωνα με την επόμενη ιε-ραρχία
1 Ύψωση σε δύναμη
2 Πολλαπλασιασμός και διαίρεση
3 Πρόσθεση και αφαίρεση
Όταν η ιεραρχία είναι ίδια τότε οι πράξεις εκτελούνται από τrsquo αριστερά προς τα δεξιά Σε πολλές όμως
περιπτώσεις είναι απαραίτητο να προηγηθεί μια πράξη χαμηλότερης ιεραρχίας Αυτό επιτυγχάνεται με την
εισαγωγή των παρενθέσεων
725 Τι είναι η εντολή εκχώρησης
Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του
προγράμματος Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
726 Πως συντάσσεται η εντολή εκχώρησης
Σύνταξη
Όνομα-Μεταβλητής έκφραση
Μια εντολή εκχώρησης σε καμιά περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση Στην εξίσωση το αριστερό
μέλος ισούται με το δεξιό ενώ στην εντολή εκχώρησης η τιμή του δε-ξιού μέλους εκχωρείται μεταβιβάζεται
αποδίδεται στη μεταβλητή του αριστερού μέλους Για το λόγο αυτό ως τελεστής εκχώρησης χρησιμοποιείται το
σύμβολο 1048773 προκειμένου να διαφοροποιείται από το ίσον (=) Ωστόσο ας σημειωθεί ότι οι διάφορες γλώσσες
προγραμματισμού χρησιμοποιούν διαφορετικά σύμβολα για το σκοπό αυτό
727 Ποιος ο σκοπός των εντολών εισόδου εξόδου
Σχεδόν όλα τα προγράμματα υπολογιστή δέχονται κάποια δεδομένα τα επεξεργάζονται υπολογίζουν τα
αποτελέσματα και τέλος τα εμφανίζουν
Τα δεδομένα εισάγονται κατά τη διάρκεια της εκτέλεσης του προγράμματος από μία μονά-δα εισόδου για
παράδειγμα το πληκτρολόγιο και τα αποτελέσματα γράφονται σε μία μονά-δα εξόδου για παράδειγμα την οθόνη
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
15
728 Ποιες είναι οι εντολές εισόδου-εξόδου για την ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει για την εισαγωγή δεδομένων από το πληκτρολόγιο την εντολή ΔΙΑΒΑΣΕ και για την
εμφάνιση των αποτελεσμάτων την εντολή ΓΡΑΨΕ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα ονόματα μεταβλητών Αν υπάρχουν
περισσότερες από μία μεταβλητές τότε αυτές χωρίζονται με κόμμα () Κατά την εκτέλεση του προγράμματος η
εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραμμα περιμένει την εισαγωγή από το πληκτρολόγιο
τιμών που θα εκχωρηθούν στις με-ταβλητές Μετά την ολοκλήρωση της εντολής η εκτέλεση του προγράμματος
συνεχίζεται με την επόμενη εντολή
Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου Συσκευή εξόδου μπορεί να είναι η
οθόνη του υπολογιστή ο εκτυπωτής βοηθητική μνήμη ή γενικά οποιαδήποτε συσκευή εξόδου έχει οριστεί στο
πρόγραμμα Για τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η εμφάνιση γίνεται πάντοτε στην οθόνη Η
λίστα των στοιχείων μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί την εμφάνιση στην οθόνη των σταθερών τιμών
Όταν κάποιο όνομα μεταβλητής περιέχεται στη λίστα τότε αρχικά α-νακτάται η τιμή της και στη συνέχεια η τιμή
αυτή εμφανίζεται στην οθόνη
Η χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων από τον υπολογιστή καθώς και αποτελεσμάτων
που περιέχονται στις μεταβλητές
729 Ποια η δομή προγράμματος της ΓΛΩΣΣΑΣ
Όπως κάθε εντολή ακολουθεί αυστηρούς συντακτικούς κανόνες έτσι και ολόκληρο το πρόγραμμα έχει αυστηρούς
κανόνες για τον τρόπο που δομείται Η πρώτη εντολή κάθε προ-γράμματος είναι υποχρεωτικά η επικεφαλίδα του
προγράμματος η οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος Το
τελευταίο πρέπει να υπακούει στους κανόνες δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ
Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών του προγράμματος αν βέβαια το πρόγραμμα μας
χρησιμοποιεί σταθερές
Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών όπου δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους
Ακολουθεί το κύριο μέρος του προγράμματος που περιλαμβάνει όλες τις εκτελέσιμες εντολές Οι εντολές αυτές
περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τέλος αν το πρόγραμμα χρησιμοποιεί διαδικασίες αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Κάθε εντολή γράφεται σε ξεχωριστή γραμμή Αν μία εντολή πρέπει να συνεχιστεί και στην επόμενη γραμμή τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο χαρακτήρας amp
Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό () σημαίνει ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
16
Κεφάλαιο 8
81 Τι είναι εντολές επιλογής
Μία από τις βασικότερες δομές που εμφανίζονται σε ένα πρόγραμμα είναι η επιλογή Σχεδόν σε όλα τα
προβλήματα περιλαμβάνονται κάποιοι έλεγχοι και ανάλογα με το αποτέλεσμα αυτών των ελέγχων επιλέγονται οι
ενέργειες που θα ακολουθήσουν
82 Πως συντάσσεται μια λογική έκφραση
Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης χρησιμοποιούνται σταθερές μεταβλητές αριθμητικές
παραστάσεις συγκριτικοί και λογικοί τελεστές καθώς και παρενθέσεις Στις λογικές εκφράσεις γίνεται σύγκριση
της τιμής μίας έκφρασης που βρίσκεται αριστερά από το συγκριτικό τελεστή με την τιμή μιας άλλης έκφρασης
που βρίσκεται δεξιά Το απο-τέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ
83 Ποιοι είναι οι συγκριτικοί τελεστές
Οι χρησιμοποιούμενοι συγκριτικοί τελεστές παρουσιάζονται στον επόμενο πίνακα Συγκριτικοί τελεστές
Τελεστής Ελεγχόμενη σχέση Παράδειγμα
= Ισότητα Αριθμός=0
ltgt Ανισότητα Ονομα1 ltgt lsquoΚώσταςrsquo
gt Μεγαλύτερο από Τιμήgt10000
gt= Μεγαλύτερο ή ίσο Χ+Υ gt= (Α+Β)Γ
lt Μικρότερο από Β^2-4ΑΓ lt 0
lt= Μικρότερο ή ίσο Βάρος lt= 500
84 Πώς γίνονται οι συγκρίσεις στα διάφορα είδη δεδομένων
Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά αλφαριθμητικά και λογικά
Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο αριθμό ψηφίων Η σύγκριση ατομικών χαρακτήρων στηρίζεται
στην αλφαβητική σειρά για παράδειγμα το lsquoαrsquo θεωρείται μικρότερο από το lsquoβrsquo
Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρις
ότου βρεθεί κάποια διαφορά για παράδειγμα η λέξη lsquoκακόςrsquo θεωρείται μικρότερη από τη λέξη lsquoκαλόςrsquo αφού το
γράμμα κ προηγείται του γράμματος λ
Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου (ltgt) αφού οι τιμές που
μπορούν να έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ
85 Ποια η προτεραιότητα ανάμεσα σε αριθμητικούς και συγκριτικούς τελεστές
Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μια έκφραση οι αριθμητικές πράξεις εκτελούνται
πρώτες
86 Πως επιτυγχάνεται η δημιουργία σύνθετων εκφράσεων Να δοθούν δυο παραδείγματα
Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές λογικές παραστάσεις όπως αυτές οι οποίες
αναφέρθηκαν αλλά χρειάζεται να συνδυαστούν μία ή περισσότερες λογικές παραστάσεις Αυτό επιτυγχάνεται με
τη χρήση των τριών βασικών λογικών τελεστών ΟΧΙ ΚΑΙ lsquoΗ
Παραδείγματα
0ltΧlt5 Χgt0 ΚΑΙ Χlt5
Χ=1 ή 2 ή 3 Χ=1 lsquoΗ Χ=2 lsquoΗ Χ=3
Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
17
87 Να αναλυθεί η εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ Η εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές
μορφές
Την απλή εντολή ΑΝΤΟΤΕ την εντολή ΑΝΤΟΤΕΑΛΛΙΩΣ και τέλος την εντολή
ΑΝΤΟΤΕΑΛΛΙΩΣ ΑΝ Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ
Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και αν αυτή ισχύει (είναι αληθής) τότε εκτελούνται
οι εντολές που περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ
Αν για παράδειγμα θέλουμε να υπολογίσουμε τη τετραγωνική ρίζα των αριθμών που διαβάζουμε από το
πληκτρολόγιο τότε το αντίστοιχο τμήμα προγράμματος είναι
ΔΙΑΒΑΣΕ α
ΑΝ α gt=0 ΤΟΤΕ
Ρίζα Τ_Ρ(α)
ΤΕΛΟΣ_ΑΝ
88 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
89 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ
ΑΝ συνθήκη ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
810 Πως συντάσσεται η ΑΝ hellip ΤΟΤΕ hellip ΑΛΛΙΩΣ_ΑΝ
ΑΝ συνθήκη-1 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ_AN συνθήκη-2 ΤΟΤΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΑΛΛΙΩΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΑΝ
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
18
811 Τι ονομάζονται εμφωλευμένα ΑΝ
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ ΤΟΤΕ ΑΛΛΙΩΣ που
περιέχονται η μία μέσα στην άλλη
812 Τι είναι δομή επανάληψης ή βρόχος
Η δομή επανάληψης ή βρόχος είναι η δομή η οποία επιτρέπει την εκτέλεση εντολών πε-ρισσότερες από μία
φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η ο-ποία καθορίζει την έξοδο από το βρόχο
813 Ποιες δομές επανάληψης υποστηρίζει η ΓΛΩΣΣΑ
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης
bull την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική έκφραση στην αρχή και εκτελείται συνεχώς
όσο η συνθήκη είναι Αληθής
bull την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος του βρόχου και εκτελείται συνεχώς
μέχρις ότου η συνθήκη αυτή γίνει Αληθής και τέλος
bull την εντολή ΓΙΑ με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο α-ριθμό φορών
814 Πως συντάσσεται η εντολή ΟΣΟΕΠΑΝΑΛΑΒΕ
Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ Σε αυτή η
συνθήκη που ελέγχει την επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος επαναλαμβάνεται
συνεχώς όσο η συνθήκη αυτή ισχύει Με τη δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι αυτό η
εντολή ΟΣΟ ΕΠΑΝΑ-ΛΑΒΕ είναι η σημαντικότερη από όλες τις εντολές επανάληψης Χαρακτηριστικό της
επανάληψης αυτής είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός ούτε μπορεί να υπολογιστεί πριν από
την εκτέλεση του προγράμματος
Σύνταξη
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Εφόσον μετά από κάθε επανάληψη ελέγχεται εκ νέου η συνθήκη πρέπει υποχρεωτικά μέ-σα στο βρόχο να
υπάρχει μία εντολή η οποία να μεταβάλει την τιμή της μεταβλητής που ελέγχεται με τη συνθήκη Σε αντίθετη
περίπτωση η επανάληψη δε θα τερματίζεται και θα εκτελείται συνεχώς
817 Τι ονομάζουμε τιμή φρουρός
Η χρήση τιμών για τον τερματισμό μίας επαναληπτικής διαδικασίας είναι συνήθης στον προγραμματισμό
Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια σύμβαση για το τέλος του προγράμματος Η τιμή
αυτή είναι τέτοια ώστε να μην είναι λογικά σωστή για το πρόβλημα Η τιμή αυτή συχνά αποκαλείται ldquoτιμή
φρουρόςrdquo
818 Πως συντάσσεται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
Σε αυτή οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί κάποια συνθήκη η οποία ελέγχεται στο
τέλος της επανάληψης
Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί εξίσου σωστά χρησιμο-ποιώντας είτε τη δομή
ΟΣΟΕΠΑΝΑΛΑΒΕ είτε τη δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του προγραμματιστή ποια από
τις δυο θα χρησιμοποιήσει Υπάρχουν όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε
απλούστερα και πιο ευ-κολονόητα προγράμματα
Γενικά σε περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία φορά είναι προτι-μότερη η χρήση της
ΜΕΧΡΙΣ_ΟΤΟΥ
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
19
Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών
καθώς και στην επιλογή από προκαθορισμένες απαντήσεις ή μενού
Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολή-1
εντολή-2
hellip
εντολή-ν
ΜΕΧΡΙΣ_ΟΤΟΥ λογική-έκφραση
Όταν η λογική έκφραση γίνει Αληθής τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ
Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά
819 Πως συντάσσεται η εντολή ΓΙΑΑΠΟΜΕΧΡΙ
Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή Αν και αυτού
του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των προηγούμενων εντολών επανάληψης η
ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ Η εντολή αυτή χειρίζεται μια μεταβλητή στην οποία αρχικά εκχωρείται η
αρχική τιμή Η τι-μή της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι μικρότερη από αυτή τότε
εκτελούνται οι εντολές που βρίσκονται στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕ-ΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ)
Στη συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που ορίζει το ΒΗΜΑ Αν η νέα τιμή είναι μικρότερη
της τελικής τότε ο βρόχος εκτελείται ξανά Η διαδικασία αυτή επαναλαμβάνεται συνεχώς έως ότου η τιμή
ελέγχου γίνει μεγαλύτερη της τελικής τιμής οπότε η τερματίζεται η επανάληψη και το πρόγραμμα συνεχίζει με
την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ας σημειωθεί ότι αν η τιμή του βήματος είναι 1 τότε μπορεί να παραληφθεί
Η εντολή ΓΙΑΑΠΟΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων
εντολών για προκαθορισμένο αριθμό επαναλήψεων
Σύνταξη
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ_ΒΗΜΑ τιμή3
εντολή-1
εντολή-2
hellip
εντολή-ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
820 Ποια δομή επανάληψης μπορεί να υλοποιηθεί πάντα με την χρήση των άλλων δομών επανάληψης
Κάθε επανάληψη που εκτελείται με μία εντολή ΓΙΑΑΠΟΜΕΧΡΙ μπορεί να υλοποιηθεί και με τη χρήση των
βασικών εντολών επανάληψης ΟΣΟΕΠΑΝΑΛΑΒΕ και ΜΕΧΡΙΣΟΤΟΥ
Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η χρήση εμφωλευμένων βρόχων Σε αυτή την
περίπτωση ο ένας βρόχος βρίσκεται μέσα στον άλλο
821 Ποιοι οι κανόνες χρήσης των εμφωλευμένων βρόχων
bull Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό Ο βρόχος που ξεκινάει
τελευταίος πρέπει να ολοκληρώνεται πρώτος
bull Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του
bull Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
20
ΚΕΦΑΛΑΙΟ 3 ΚΑΙ 9
Δομή Δεδομένων Σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο
λειτουργιώνΚάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων Οι βασικές λειτουργίες επί των δομών
δεδομένων είναι οι εξής
bull Προσπέλαση Πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του
bull Εισαγωγή Προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
bull Διαγραφή Το αντίστροφο της εισαγωγής αφαίρεση ενός κόμβου από τη δομή
bull Αναζήτηση Προσπέλαση των κόμβων μιας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που
έχουν μια συγκεκριμένη ιδιότητα
bull Ταξινόμηση Οι κόμβοι μιας δομής διατάσσονται κατ αύξουσα ή φθίνουσα σειρά
bull Αντιγραφή Όλοι ή κάποιοι κόμβοι μιας δομής αντιγράφονται σε μια άλλη δομή
bull Συγχώνευση Δύο ή περισσότερες δομές συνενώνονται σε μια ενιαία δομή
bull Διαχωρισμός Αντίστροφη πράξη της συγχώνευσης
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες τις στατικές και τις δυναμικές
bull Οι δυναμικές δομές δεδομένων δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης δεν έχουν σταθερό
μέγεθος στηρίζονται στην τεχνική της laquoδυναμικής παραχώρησης μνήμηςraquo δηλαδή ο αριθμός των κόμβων
τους μεγαλώνει ή μικραίνει κάθε φορά που σε αυτήν εισάγονται νέα δεδομένα ή διαγράφονται κάποια
δεδομένα αντίστοιχα
bull Στις στατικές δομές δεδομένων το ακριβές μέγεθος της κύριας μνήμης καθορίζεται κατά τη στιγμή του
προγραμματισμού και μετάφρασής και όχι κατά τη στιγμή της εκτέλεσης του προγράμματος τα στοιχεία τους
αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και έχουν σταθερό μέγεθος
Πίνακας είναι ένα σύνολο από αντικείμενα ιδίου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Το κάθε ένα
από αυτά τα αντικείμενα που αποτελούν τον πίνακα ονομάζεται στοιχείο του πίνακα και η αναφορά στο κάθε ένα
στοιχείο γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα ή περισσότερους δείκτες μέσα σε αγκύλες
Ο δείκτης του πίνακα είναι μια ακέραια έκφραση(αριθμός η μεταβλητή) που τοποθετείται μέσα στα σύμβολα [ και
] Όταν ο δείκτης είναι μια μεταβλητή συνηθίζεται στον προγραμματισμό να χρησιμοποιούνται ως ονόματα
δεικτών οι μεταβλητές i j k
341 Παρατηρήσεις στους πίνακες
bull Ένας πίνακας μπορεί να είναι μονοδιάστατος δισδιάστατος τρισδιάστατος και γενικά ν-διάστατος
bull Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε αποδεκτό όνομα
bull Κάθε πίνακας πρέπει υποχρεωτικά να έχει δεδομένα ιδίου τύπου
bull Ο πίνακας είναι μια στατική δομή δεδομένων
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
21
35 Πότε πρέπει να χρησιμοποιούνται πίνακες - Αναγκαιότητα χρήσης πινάκων
Με την χρήση των πινάκων έχουμε την δυνατότητα για διαχείριση πολλών δεδομένων ιδίου τύπου μαζί
Η χρήση των πινάκων ενδείκνυται όταν τα δεδομένα που εισάγονται σε ένα πρόγραμμα ή αλγόριθμο πρέπει να
διατηρούνται στη μνήμη του υπολογιστή μέχρι το τέλος της εκτέλεσης του προγράμματος ή του αλγορίθμου Δεν
είναι αποδεκτό όμως να ζητιέται από το χρήστη να εισάγει εκ νέου δεδομένα που έχει ήδη εισάγει Παράδειγμα
Να διαβαστούν 20 αριθμοί και να εκτυπωθεί το ποσοστό των στοιχείων που είναι μεγαλύτερα του μέσου όρου Η
χρήση ή όχι πίνακα στην λύση ενός προβλήματος είναι θέμα εμπειρίας στον προγραμματισμό
36 Μειονεκτήματα από την χρήση των πινάκων
Από την χρήση των πινάκων υπάρχουν δυο μειονεκτήματα
1 Οι πίνακες απαιτούν μνήμη γιατί κάθε πίνακας επειδή έχει μέγεθος σταθερό δεσμεύει από την αρχή του
προγράμματος πολλές θέσεις μνήμης Σε ένα μεγάλο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει σε αδυναμία εκτέλεσης του
2 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Επειδή οι πίνακες έχουν σταθερό μέγεθος πρέπει
το μέγεθος τους να δηλώνεται στην αρχή και παραμένει σταθερό κατά την εκτέλεση του προγράμματος δεν
υπάρχει δυνατότητα εισαγωγής περισσοτέρων δεδομένων από το μέγεθος τους
37 Τυπικές επεξεργασίες πινάκων
Οι τυπικές επεξεργασίες που γίνονται σε έναν πίνακα είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα δηλαδή η εύρεση των στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου του πίνακα Αν ο πίνακας είναι ταξινομημένος το
μέγιστο και το ελάχιστο βρίσκονται στα άκρα του Αν δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν
ένα προς ένα τα στοιχεία
bull Ταξινόμηση των στοιχείων του πίνακα Χρησιμοποιείται η μέθοδος της ευθείας
ανταλλαγής(παρουσιάζεται παρακάτω) Δεν είναι αποδοτική αλλά είναι η πιο απλή
bull Αναζήτηση ενός στοιχείου του πίνακα Υπάρχουν δυο αλγόριθμοι αναζήτησης η σειριακή αναζήτηση και
η δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή και λιγότερη αποτελεσματική Η δυαδική
αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες
bull Συγχώνευση δύο πινάκων Σκοπός της συγχώνευσης είναι να συνενώσει τα στοιχεία δύο η
περισσοτέρων ταξινομημένων πινάκων ώστε να δημιουργηθεί ένα νέος πίνακας που θα είναι και αυτός
ταξινομημένος
38 Μονοδιάστατοι Πίνακες
Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά στα στοιχεία του ονομάζεται μονοδιάστατος
πίνακας Παρακάτω φαίνεται ένας πίνακας ο οποίος έχει 5 διαφορετικές τιμές και όνομα Α
Α 10 18 19 11 23
Η κάθε μια τιμή αποτελεί και ένα στοιχείο του πίνακα και η αναφορά του σε αυτό γίνεται γράφοντας το όνομα του
πίνακα και δίπλα μέσα σε αγκύλες τον αύξοντα αριθμό του στοιχείου
ΠΧ Το στοιχείο Α[2] είναι το 2ο στοιχείο του πίνακα με περιεχόμενο την τιμή 18
Ο αριθμός μέσα στην αγκύλες είναι ο δείκτης που laquoδείχνειraquo το 2ο στοιχείο του πίνακα
91 Τι είναι πίνακες
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου τα οποία αναφέρονται με ένα κοινό όνομα Κάθε ένα από τα
αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνα-κα Η αναφορά σε ατομικά στοιχεία του πίνακα
γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
22
92 Ποια τα χαρακτηριστικά του πίνακα
Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια
έκφραση σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ] Το όνομα του πίνακα καθορίζει μία
ομάδα διαδοχικών θέσεων στη μνήμη
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ιδίου τύπου δηλαδή ακέραια πραγματικά λογικά ή
αλφαριθμητικά Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές του προγράμματος στο τμήμα
δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που
περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για
να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
93 Τι είναι μονοδιάστατος πίνακας
Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά των στοιχείων τους ονομάζονται μονοδιάστατοι
πίνακες
Η καλύτερη λύση στο πρόβλημα αυτό είναι η χρήση μεταβλητής με δείκτες έννοια που είναι γνωστή από τα
μαθηματικά και υλοποιείται στον προγραμματισμό με τη δομή δεδομένων του πίνακα Χρησιμοποιείται λοιπόν μόνο
ένα όνομα Θερμοκρασία που αναφέρεται και στις τριάντα διαφορετικές θερμοκρασίες
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα Είναι σύνηθες όμως στον
προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές ijk
Η ανάγνωση η επεξεργασία και η εκτύπωση των στοιχείων των πινάκων γίνεται πάντοτε από βρόχους οι οποίοι
επαναλαμβάνονται προκαθορισμένο αριθμό φορών όσα είναι τα στοιχεία του πίνακα και υλοποιούνται καλύτερα
στον προγραμματισμό με την εντολή επανάληψης
94 Πότε πρέπει να χρησιμοποιούνται πίνακες
Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου αλλά συχνά η
χρήση τους είναι περιττή και επιζήμια στην ανάπτυξη του προγράμματος
95 Ποια είναι τα μειονεκτήματα από την χρήση πινάκων
bull Οι πίνακες απαιτούν μνήμη Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης
Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη και
σε αδυναμία εκτέλεσης του προγράμματος
bull Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος Γιατί οι πίνακες είναι στατικές δομές και το
μέγεθος τους πρέπει να δηλώνεται στην αρχή του προγράμματος ενώ παραμένει υποχρεωτικά σταθερό
κατά την εκτέλεση του προγράμματος
96 Ποιο το κριτήριο χρήσης των πινάκων
Η απόφαση για την χρήση ή όχι πίνακα για την διαχείριση των δεδομένων είναι κυρίως θέμα εμπειρίας στον
προγραμματισμό Γενικά αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του
προβλήματος Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους
97 Τι είναι πολυδιάστατοι πίνακες
Εκτός από μονοδιάστατους και δισδιάστατους πίνακες υπάρχουν πίνακες με περισσότερες διαστάσεις
τρισδιάστατοι τετραδιάστατοι και γενικά πολυδιάστατοι ανάλογα με τον αριθμό των δεικτών που
χρησιμοποιούνται για τον καθορισμό των στοιχείων Ωστόσο τα περισσότερα προβλήματα αντιμετωπίζονται με τη
χρήση πινάκων μονοδιάστατων ή δισδιάστατων
98 Πως γίνεται η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχεί-ων πολυδιάστατων
πινάκων
Η ανάγνωση η επεξεργασία καθώς και η εκτύπωση των στοιχείων πολυδιάστατων πινάκων γίνεται πάντοτε από
βρόχους οι οποίοι υλοποιούνται στον προγραμματισμό με εμφωλευμένες εντολές επανάληψης ΓΙΑ
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
23
99 Ποιες είναι οι τυπικές επεξεργασίες πινάκων
Τα προγράμματα τα οποία χρησιμοποιούν πίνακες πολύ συχνά απαιτούν συγκεκριμένες επεξεργασίες στα στοιχεία
του πίνακα Οι τυπικές αυτές επεξεργασίες είναι
bull Υπολογισμός αθροισμάτων στοιχείων του πίνακα
bull Εύρεση του μέγιστου ή του ελάχιστου στοιχείου
bull Ταξινόμηση των στοιχείων του πίνακα
bull Αναζήτηση ενός στοιχείου του πίνακα
bull Συγχώνευση δύο πινάκων
910 Τι εννοούμε υπολογισμός αθροισμάτων στοιχείων του πίνακα
Πολύ συχνά απαιτείται ο υπολογισμός του αθροίσματος στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά
για παράδειγμα βρίσκονται στην ίδια στήλη ή στην ίδια γραμμή
911 Τι εννοούμε εύρεση του μέγιστου ή του ελάχιστου στοιχείου
Αν ο πίνακας δεν είναι ταξινομημένος τότε πρέπει να συγκριθούν τα στοιχεία ένα προς έ-να για να βρεθεί το
μέγιστο ή το ελάχιστο Αν ο πίνακας είναι ταξινομημένος τότε προφα-νώς το μέγιστο και το ελάχιστο βρίσκονται
στα δύο ακριανά στοιχεία του πίνακα
912 Τι γνωρίζεται για την ταξινόμηση των στοιχείων του πίνακα
Η μέθοδος ταξινόμησης της ευθείας ανταλλαγής είναι από τις απλούστερες αλλά δεν είναι η πιο αποδοτική
Υπάρχουν πολλές άλλες μέθοδοι ταξινόμησης καθώς και παραλλαγές αυτών Η επιλογή του καλύτερου
αλγόριθμου εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη αν δηλαδή ο
πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος
913 Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης Ποιες οι διαφορές τους
Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης
bull Η σειριακή αναζήτηση
bull Η δυαδική αναζήτηση
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή αλλά και η λιγότερη αποτελεσματική μέθοδος Χρησιμοποιείται
όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι Α-ντίθετα η δυαδική αναζήτηση χρησιμοποιείται
μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή μέθοδο
914 Τι γνωρίζεται για την συγχώνευση δύο πινάκων
Η συγχώνευση είναι μία από τις βασικές λειτουργίες σε πίνακες Σκοπός της είναι η δη-μιουργία από τα στοιχεία
δύο (ή περισσότερων) ταξινομημένων πινάκων ενός άλλου που είναι και αυτός ταξινομημένος
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
24
Κεφάλαια 41 Ανάλυση προβλημάτων και 61 Η έννοια του προγράμματος
Ερωτήσεις ανάπτυξης για την παράγραφο 41
1 Γιατί κάθε πρόβλημα πρέπει να αναλύεται πριν από την επίλυσή του
Είναι πιθανόν ένα πρόβλημα να μην επιλύεται με μία μόνο λύση αλλά με περισσότερες Γενικά η λύση σε ένα
πρόβλημα μπορεί να προέλθει από ποικίλες και διαφορετικές προσεγγίσεις τεχνικές και μεθόδους Η καλή
ανάλυση οδηγεί στο να προταθεί μια συγκεκριμένη μεθοδολογία και ακολουθία βημάτων καθώς και στο να
προταθούν έξυπνες και αποδοτικές λύσεις
2 Ποια βήματα περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα προγραμματιστικό περιβάλλον
Καταγραφή υπάρχουσας πληροφορίας αναγνώριση ιδιαιτεροτήτων προβλήματος αποτύπωση συνθηκών και
προϋποθέσεων υλοποίησης πρόταση επίλυσης με κάποια μέθοδο και επίλυση με υπολογιστικό σύστημα
3 Ποιες ερωτήσεις πρέπει να απαντήσει η ανάλυση προβλήματος
Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος Ποιες συνθήκες πρέπει να πληρούνται για την επίλυση
του προβλήματος Ποια είναι η πιο αποδοτική μέθοδος Πώς θα αποτυπωθεί η λύση Ποιος είναι ο τρόπος
υλοποίησης στο υπολογιστικό σύστημα Ας πάρουμε για παράδειγμα το laquoπρόβλημα του ταχυδρόμουraquo ο οποίος
πρέπει να ξεκινήσει από ένα χωριό να επισκεφθεί όλα τα γειτονικά χωριά για να μοιράσει τα γράμματα και να
επιστρέψει στην αφετηρία περνώντας μόνο μία φορά από κάθε χωριό και διανύοντας τον μικρότερο δυνατό αριθμό
χιλιομέτρων
Πώς θα επιλυθεί το συγκεκριμένο πρόβλημα
Μια πρώτη προσέγγιση είναι να πραγματοποιείται κάθε φορά μετάβαση στο κοντινότερο χωριό σε σχέση με εκείνο
όπου βρίσκεται ο ταχυδρόμος Μια άλλη προσέγγιση είναι να αποτυπωθούν όλες οι πιθανές διαδρομές και οι
αποστάσεις τους και να επιλεγεί η συντομότερη Αναρωτηθείτε όμως τι πόροι απαιτούνται για την υλοποίηση της
δεύτερης προσέγγισης
4 Ποια είναι τα πλεονεκτήματα των μεθόδων ανάλυσης προβλημάτων
Εντοπίζεται η πλέον κατάλληλη και αποδοτική λύση και έτσι έχουμε εξοικονόμηση υπολογιστικών πόρων και
κόστους για την επίλυση
5 Υπάρχει ενιαίος κανόνας που να αναφέρεται στην επίλυση όλων των προβλημάτων Ποια προβλήματα
αποκαλούνται laquoσυγγενήraquo
Δεν υπάρχει ένας ενιαίος κανόνας μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων Υπάρχουν όμως laquoσυγγενήraquo προβλήματα δηλαδή προβλήματα που μπορούν να αναλυθούν με
παρόμοιο τρόπο και να αντιμετωπιστούν με αντίστοιχες μεθόδους και τεχνικές
6 Γιατί παρουσιάζουν ιδιαίτερο ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Παρέχουν γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας μπορούν να
αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου και παρέχουν τη δυνατότητα καταγραφής χρονικών και
χωρικών απαιτήσεων της μεθόδου επίλυσης
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
25
Ερωτήσεις ανάπτυξης για την παράγραφο 61
1 Τι είναι προγραμματισμός Τι είναι πρόγραμμα
Ο προγραμματισμός ασχολείται με τη δημιουργία του προγράμματος δηλαδή του συνόλου των εντολών που
πρέπει να δοθούν στον υπολογιστή για την επίλυση ενός προβλήματος Το πρόγραμμα το οποίο γράφεται σε
κάποια γλώσσα προγραμματισμού δεν είναι απλώς η υλοποίηση του αλγορίθμου αλλά βασικό στοιχείο του είναι τα
δεδομένα και οι δομές δεδομένων επί των οποίων ενεργεί
2 Ποια είναι τα βασικά στοιχεία ενός προγράμματος
Αλγόριθμος δεδομένα και δομές δεδομένων
3 Ποια στάδια περιλαμβάνει η επίλυση ενός προβλήματος με υπολογιστή
Προσδιορισμός προβλήματος ανάπτυξη αλγορίθμου συγγραφή προγράμματος (μορφή κατανοητή από τον
υπολογιστή)
4 Για ποιον λόγο αναπτύχθηκαν οι γλώσσες προγραμματισμού
Οι γλώσσες προγραμματισμού αναπτύχθηκαν με σκοπό την επικοινωνία του ανθρώπου (προγραμματιστή) με τη
μηχανή (υπολογιστή)
5 Οι υπολογιστές είναι έξυπνες μηχανές που επιλύουν πολύπλοκα προβλήματα
Ποιες είναι οι στοιχειώδεις ενέργειες που μπορεί να κάνει ένας υπολογιστής
Ο προγραμματισμός είναι αυτός που δίνει την εντύπωση αυτή αλλά είναι απλώς μια ψευδαίσθηση Ο υπολογιστής
είναι μια μηχανή που καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται με το μηδέν και το ένα
τα ψηφία του δυαδικού συστήματος Το μόνο πράγμα που κάνει ο υπολογιστής είναι στοιχειώδεις ενέργειες σε
ακολουθίες αυτών των δύο ψηφίων αλλά αυτές τις ενέργειες τις εκτελεί με ασύλληπτη ταχύτητα Ο υπολογιστής
μπορεί απλώς να αποθηκεύει στη μνήμη τις ακολουθίες των δυαδικών ψηφίων να τις ανακτά να κάνει
στοιχειώδεις
αριθμητικές πράξεις με αυτές και να τις συγκρίνει
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
26
ΚΕΦΑΛΑΙΟ 6ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Ενότητα 63 Φυσικές και Τεχνητές γλώσσες
Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού
bull Το αλφάβητο
bull το λεξιλόγιο τα
bull η γραμματική και
bull τη σημασιολογία
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα
Παράδειγμα
Μια γλώσσα περιέχει 52 γράμματα (πεζά και κεφαλαία) 10 ψηφία από 0 έως 9 και τα σημεία στίξης
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου που είναι δεκτές
από τη γλώσσα
Παράδειγμα
Οι λέξεις ΟΣΟ ΓΙΑ ΔΙΑΒΑΣΕ κλπ είναι δεκτές από τη γλώσσα ενώ οι λέξεις ΔΙΑΒΒΑΣΕ ΟΣΣΟ δεν
αναγνωρίζονται ως έγκυρες
ΓΡΑΜΜΑΤΙΚΗ
Αποτελείται από δύο μέρη το τυπικό και το συντακτικό
bull Τυπικό είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι ορθογραφικά αποδεκτή
Παράδειγμα
Η λέξη ΓΡΑΨΕ είναι δεκτή ενώ η ΓΡΑΠΣΕ δεν είναι)
bull Συντακτικό είναι το σύνολο των κανόνων που ορίζει τη νομιμότητα της σύνδεσης και διάταξης των
λέξεων για τη δημιουργία προτάσεων Αφορά δηλαδή στην ορθή σύνταξη των εντολών)
Παράδειγμα
Η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή ενώ η ΑΝ (Χ = 0) ΕΠΑΝΕΛΑΒΕ είναι λάθος
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων εκφράσεων και προτάσεων σε μια γλώσσα
Είναι δηλαδή η εσωτερική σημασία των εντολών
Παράδειγμα
Η σημασιολογία της εντολής ΓΡΑΨΕ Χ θα προκαλέσει την εμφάνιση της τιμής της Χ στην οθόνη
Ποιες είναι οι βασικές διαφορές φυσικών και τεχνητών γλωσσών
Οι φυσικές Γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι για να επικοινωνήσουν μεταξύ τους
Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες
γραμματικής και σύνταξης αλλάζουν
Οι τεχνητές Γλώσσες όπως είναι οι γλώσσες Προγραμματισμού χρησιμοποιούνται για να επικοινωνεί ο
άνθρωπος με τη μηχανή Αυτές χαρακτηρίζονται από στασιμότητα αφού κατασκευάζονται συνειδητά για
συγκεκριμένο λόγο Οι αλλαγές που δέχονται είναι συνήθως σε επίπεδο διαλέκτου (GW Basic Quick Basic
Visual Basic)
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
27
Ενότητα 64 Τεχνικές σχεδίασης προγραμμάτων
Τι είναι ιεραρχική σχεδίαση (Top down design)
Είναι μια τεχνική σχεδίασης προγραμμάτων κατά την οποία το πρόβλημα αναλύεται σε μια σειρά από απλούστερα
υποπροβλήματα των οποίων η λύση ή εύκολη ή προφανής
Τι είναι τμηματικός προγραμματισμός
Τμηματικός Προγραμματισμός λέγεται η τεχνική σχεδίασης και ανάπτυξης προγραμμάτων ως σύνολο από
απλούστερα τμήματα προγραμμάτων Τα προγράμματα αυτά συνδέονται στη συνέχεια μεταξύ τους μεταφέροντας
δεδομένα και αντλώντας αποτελέσματα το ένα από το άλλο προκειμένου να οδηγήσουν στη λύση του αρχικού
σύνθετου προβλήματος
Τι είναι δομημένος προγραμματισμός
Δομημένος προγραμματισμός είναι μια μεθοδολογία σύνταξης και ανάπτυξης προγραμμάτων βασίζεται στην
μελέτη του καθηγητή Edsger Dijkstra (1968) με τίτλο GO TO Statement Considered Harmful = Η εντολή GO
TO θεωρείται βλαβερή και σκοπό έχει
1 Να βοηθήσει τον προγραμματιστή στην ανάπτυξη σύνθετων προγραμμάτων
2 Να μειώσει τα λάθη
3 Να εξασφαλίσει την εύκολη κατανόηση των προγραμμάτων
4 Να διευκολύνει τη συντήρηση και τις διορθώσεις του προγράμματος
Ποια τα χαρακτηριστικά του δομημένου προγραμματισμού
Α) Ο δομημένος προγραμματισμός στηρίζεται στη χρήση 3 στοιχειωδών λογικών δομών
1)Ακολουθία 2)Επιλογή και 3)Επανάληψη
Β) Όλα τα προγράμματα γράφονται χρησιμοποιώντας αυτές τις δομές ή και συνδυασμό τους
Γ)Ο δομημένος προγραμματισμός ως τεχνική εμπεριέχει τις λογικές του ιεραρχικού και του τμηματικού
προγραμματισμού και κάθε ενότητα ή τμήμα του έχει 1 είσοδο και 1 έξοδο
Δ) Αποφεύγει τη χρήση της από παλιά γνωστής εντολής GOTO
Ποια τα πλεονεκτήματα του δομημένου προγραμματισμού
1 Δημιουργία απλών προγραμμάτων
2 Άμεση μεταφορά των αλγορίθμων σε προγράμματα
3 Διευκόλυνση της ανάλυσης του προγράμματος κατά τμήματα ανεξάρτητα μεταξύ τους
4 Διευκόλυνση στην ανάγνωση του προγράμματος από τρίτους
5 Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6 Ευκολότερη διόρθωση και συντήρηση του προγράμματος
Ενότητα 67 Προγραμματιστικά Περιβάλλοντα
Πως επιτυγχάνεται η μετατροπή ενός προγράμματος που είναι γραμμένο σε γλώσσα προγραμματισμού
υψηλού επιπέδου σε μορφή αναγνωρίσιμη και εκτελέσιμη από τον ΗΥ
Η μετατροπή επιτυγχάνεται με τη χρήση ειδικών μεταφραστικών προγραμμάτων όπως είναι
Α)οι μεταγλωττιστές και
Β)οι διερμηνευτές
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
28
Τι είναι μεταγλωττιστής
Μεταγλωττιστής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και παρέχει ως έξοδο ένα ισοδύναμο πρόγραμμα γλώσσας μηχανής
Ο μεταγλωττιστής στη φάση της μετάφρασης ανιχνεύει τα συντακτικά λάθη (λανθασμένη σύνταξη εντολών ή
έλλειψη σωστών σημείων στίξης) προτρέπει τον προγραμματιστή να τα διορθώσει με τη βοήθεια του συντάκτη
και στην περίπτωση που το πρόγραμμα υποβληθεί ξανά για μετάφραση και είναι πράγματι συντακτικά ορθό ο
μεταγλωττιστής δημιουργεί ένα νέο πρόγραμμα σε γλώσσα μηχανής ισοδύναμο με το αρχικό (Το αρχικό
πρόγραμμα λέγεται πηγαίο)
Τι είναι συντάκτης
Συντάκτης είναι ένα ειδικό πρόγραμμα επεξεργασίας κειμένου που χρησιμεύει για την αρχική σύνταξη ενός
πηγαίου προγράμματος ή στην μετέπειτα διόρθωση ή τροποποίησή του
Τι είναι διερμηνευτής
Διερμηνευτής είναι το μεταφραστικό πρόγραμμα που δέχεται ως είσοδο ένα πρόγραμμα γλώσσας υψηλού
επιπέδου και διαβάζει μια προς μια τις εντολές του αρχικού προγράμματος (πηγαίου) και στη περίπτωση που η
εντολή είναι σωστή συντακτικά εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής Στην περίπτωση που
η εντολή είναι λανθασμένη εμφανίζει μήνυμα laquoΛΑΘΟΥΣraquo και όταν ο προγραμματιστής τη διορθώσει εκτελεί μια
ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Η λειτουργία του διερμηνευτή μοιάζει με αυτή του διερμηνέα
που μεταφράζει επί τόπου κάθε πρόταση
Τι είναι πηγαίο τι αντικείμενο και τι εκτελέσιμο πρόγραμμα
Πηγαίο (Source program) = το αρχικό πρόγραμμα που γράφει ο προγραμματιστής σε γλώσσα προγραμματισμού
υψηλού επιπέδου
Αντικείμενο (Object program) = το πρόγραμμα που έχει παραχθεί μετά τη διαδικασία της μεταγλώττισης είναι
σε μορφή γλώσσας μηχανής αλλά δεν είναι εκτελέσιμο
Εκτελέσιμο (Executable program) = το πρόγραμμα που είναι σε γλώσσα μηχανής και είναι έτοιμο πια να
εκτελεστεί Έχει προκύψει από το αντικείμενο πρόγραμμα και μετά τη σύνδεσή του με διάφορα προγράμματα από
τις βιβλιοθήκες της γλώσσας προγραμματισμού Τη σύνδεση έκανε ειδικό πρόγραμμα που λέγεται συνδέτης-
φορτωτής
Τι είναι συνδέτης-φορτωτής
Συνδέτης -φορτωτής είναι ένα ειδικό πρόγραμμα που αναλαμβάνει τη σύνδεση του αντικείμενου προγράμματος με
ειδικά προγράμματα απαραίτητα για την εκτέλεσή του και παράγει ένα πρόγραμμα που εκτελείται από τον
υπολογιστή το λεγόμενο εκτελέσιμο
Τι αποθηκεύεται στις βιβλιοθήκες της γλώσσας προγραμματισμού υψηλού επιπέδου
Στις βιβλιοθήκες της γλώσσας προγραμματισμού βρίσκονται αποθηκευμένα τμήματα προγραμμάτων ή
προγράμματα που συνδέονται με το αντικείμενο πρόγραμμα προκειμένου αυτό να γίνει εκτελέσιμο
Ποια τα στάδια μετάφρασης προγράμματος με τη χρήση διερμηνευτή
Οι εντολές του προγράμματος που έχει αναπτυχθεί με γλώσσα ΥΨΗΛΟΎ ΕΠΙΠΈΔΟΥ διαβάζεται μία-μία από
τον διερμηνευτή Κάθε εντολή ελέγχεται από τον διερμηνευτή και αν είναι απαλλαγμένη από συντακτικά λάθη
εκτελείται αμέσως μια ισοδύναμη ακολουθία εντολών γλώσσας μηχανής Στην περίπτωση που η εντολή δεν είναι
ορθή ο διερμηνευτής εμφανίζει μήνυμα λάθους και ο προγραμματιστής θα πρέπει να τη διορθώσει και να ζητήσει
επανεκτέλεση του προγράμματος
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
29
Ποια προγράμματα απαιτούνται για τη συγγραφή τη μετάφραση και την εκτέλεση ενός προγράμματος
Απαιτούνται 2 προγράμματα
1)ο συντάκτης για τη συγγραφή του προγράμματος και
2)το μεταφραστικό πρόγραμμα (μεταγλωττιστής ή διερμηνευτής) Στην περίπτωση που χρησιμοποιείται
μεταγλωττιστής απαιτείται επίσης και ο συνδέτης-φορτωτής που παράγει ένα ακόμη πρόγραμμα το τελικό αφού
συνδέσει το αντικείμενο πρόγραμμα με απαραίτητα προγράμματα από τις βιβλιοθήκες της γλώσσας Το τελικό
πρόγραμμα λέγεται εκτελέσιμο (executable)
Στα σύγχρονα προγραμματιστικά περιβάλλοντα όλα τα παραπάνω προγράμματα παρέχονται σαν μια ολοκληρωμένη
ενότητα
Ποια τα πλεονεκτήματα του μεταγλωττιστή και ποια του διερμηνευτή
Η τεχνική του μεταγλωττιστή έχει το μειονέκτημα των διαδικασιών μεταγλώττισης και σύνδεσης δηλαδή χρονική
καθυστέρηση Αλλά το παραγόμενο εκτελέσιμο είναι ταχύτερο και μεταφέρσιμο
Τα προγραμματιστικά περιβάλλοντα με διερμηνευτή είναι πολύ αποτελεσματικά για σύντομα προγράμματα Δεν
παράγεται εκτελέσιμο και αυτό σημαίνει ότι ακόμα και όταν έχουν γίνει όλες οι διορθώσεις στα συντακτικά λάθη
και το πηγαίο πρόγραμμα είναι αλάνθαστο η διαδικασία της διερμηνείας επιβάλλεται πάντα κατά την εκτέλεση του
προγράμματος με επιβάρυνση στην ταχύτητα εκτέλεσης
Τα συστήματα με μεταγλωττιστή πλεονεκτούν Από τη στιγμή που θα παραχθεί το εκτελέσιμο δεν χρειαζόμαστε
το περιβάλλον της γλώσσας
Σήμερα σε πολλά προγραμματιστικά περιβάλλοντα υπάρχουν μεικτές υλοποιήσεις
Ποια είδη λαθών μπορούν να συμβούν σε ένα πρόγραμμα Η δημιουργία του εκτελέσιμου
προγράμματος γίνεται μόνο στην περίπτωση που το αρχικό πρόγραμμα δεν περιέχει λάθη Τις
περισσότερες φορές κάθε πρόγραμμα αρχικά θα έχει λάθη Τα λάθη του προγράμματος είναι γενικά δύο ειδών λογικά και συντακτικά Τα λογικά λάθη εμφανίζονται μόνο στην εκτέλεση ενώ τα συντακτικά
λάθη στο στάδιο της μεταγλώττισης Τα λογικά λάθη που είναι τα πλέον σοβαρά και δύσκολα στη διόρθωση
τους οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου ενώ τα συντακτικά οφείλονται σε
αναγραμματισμούς ονομάτων εντολών παράληψη δήλωσης δεδομένων και πρέπει πάντα να διορθωθούν
ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα
Πως διορθώνονται τα λάθη Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύουν τα συντακτικά λάθη και εμφανίζει
κατάλληλα διαγνωστικά μηνύματα Το στάδιο που ακολουθεί είναι η διόρθωση των λαθών Το διορθωμένο
πρόγραμμα υποβάλλεται ξανά σε μεταγλώττιση και η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου εξαλειφθούν
πλήρως όλα τα λάθη Τα λογικά λάθη αν δεν εντοπιστούν και διορθωθούν από τον ίδιο τον προγραμματιστή
μπορεί στη συνέχεια να γίνουν αντιληπτά από κάποιο χρήστη κατά την εκτέλεση του προγράμματος (αδυναμία
ολοκλήρωσης ή λάθος αποτελέσματα)
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
30
Κεφάλαιο 10 Υποπρογράμματα
Θ 111 Τι είναι τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική
σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων
Θ 112 Τι ονομάζουμε υποπρόγραμμα
Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο
πρόγραμμα τότε αναφερόμαστε σε υποπρόγραμμα
Θ 113 Από τι καλούνται τα υποπρογράμματα και τι εννοούμε μrsquo αυτό
Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα για να εκτελέσουν
συγκεκριμένες λειτουργίες Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται όπως λέγεται από ένα άλλο
υποπρόγραμμα ή το αρχικό πρόγραμμα το οποίο ονομάζεται κύριο πρόγραμμα
Θ 114 Ποια είναι τα πλεονεκτήματά του τμηματικού προγραμματισμού
Τα πλεονεκτήματά του τμηματικού προγραμματισμού είναι τα εξής
bull Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος Επιτρέπει την εξέταση
και την επίλυση απλών προβλημάτων και όχι την αντιμετώπιση του συνολικού προβλήματος Με τη σταδιακή
επίλυση τελικά επιλύεται το συνολικό πρόβλημα
bull Διευκολύνει την κατανόηση και διόρθωση του προγράμματος Ο χωρισμός του προγράμματος σε
μικρότερα αυτοτελή τμήματα επιτρέπει την γρήγορη διόρθωση ενός συγκεκριμένου τμήματός του χωρίς οι
αλλαγές αυτές να επηρεάσουν όλο το υπόλοιπο πρόγραμμα Επίσης διευκολύνει οποιονδήποτε χρειαστεί να
διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το πρόγραμμα (ένα μεγάλο πρόγραμμα στον κύκλο της
ζωής του χρειάζεται να συντηρηθεί από διαφορετικούς προγραμματιστές)
bull Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος Πολύ συχνά χρειάζεται η
ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος Από τη στιγμή που ένα υποπρόγραμμα έχει
γραφεί μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος Έτσι μειώνονται το μέγεθος του
προγράμματος ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους ενώ ταυτόχρονα το
πρόγραμμα γίνεται πιο εύληπτο και κατανοητό
bull Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού Ένα υποπρόγραμμα που έχει γραφεί μπορεί
να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα Από τη στιγμή που έχει δημιουργηθεί η χρήση
του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού
Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά ουσιαστικά επεκτείνουν την
ίδια τη γλώσσα προγραμματισμού
Θ 115 Ποιες ιδιότητες πρέπει να διακρίνουν ένα υποπρόγραμμα
bull Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μόνο μια έξοδο Κάθε υποπρόγραμμα ενεργοποιείται με
την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του εκτελεί ορισμένες ενέργειες και
απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος του
bull Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα Αυτό σημαίνει ότι κάθε υποπρόγραμμα
μπορεί να σχεδιαστεί να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα
υποπρογράμματα
bull Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο Συγκεκριμένα πρέπει κάθε υποπρόγραμμα
να είναι τόσο ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται Γενικά κάθε υποπρόγραμμα
πρέπει να εκτελεί μόνο μία λειτουργία Αν εκτελεί περισσότερες λειτουργίες τότε συνήθως μπορεί και
πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
31
Θ 116 Ποια υποπρογράμματα ονομάζονται συναρτήσεις και ποια διαδικασίες
bull Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις)
bull Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος
(δηλ να εισάγουν δεδομένα να εκτελέσουν υπολογισμούς να μεταβάλλουν τις τιμές των μεταβλητών και να
εμφανίζουν αποτελέσματα)
Θ 117 Τι είναι οι παράμετροι
Το υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος αλλά πρέπει να επικοινωνεί με το
υπόλοιπο πρόγραμμα Δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεση επιστρέφει
σε αυτό νέες τιμές αποτελέσματα Οι μεταβλητές που περνούν τιμές από το ένα υποπρόγραμμα στο άλλο
λέγονται παράμετροι
Οι παράμετροι λοιπόν είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μία ουσιώδη διαφορά
χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα και να επιστρέφουν άλλες στο κύριο πρόγραμμα
(αυτό που καλεί το υποπρόγραμμα εκτός από το αρχικό πρόγραμμα μπορεί να είναι και ένα άλλο υποπρόγραμμα)
bull Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ
bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται στην συνάρτηση όταν την καλούμε
bull Ο τύπος μιας συνάρτησης μπορεί να είναι ΧΑΡΑΚΤΗΡΑΣ ΠΡΑΓΜΑΤΙΚΗ ΑΚΕΡΑΙΑ ή ΛΟΓΙΚΗ
bull Η λίστα παραμέτρων είναι η είσοδος της συνάρτησης
bull Το όνομα της συνάρτησης είναι η έξοδος της συνάρτησης
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
32
Θ 119 Πώς εκτελείται μια συνάρτηση Έστω η πραγματική συνάρτηση Εμβαδό_κύκλου() όπου πραγματική μεταβλητή
Έστω ότι στο κύριο πρόγραμμα Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Η συνάρτηση καλείται από
το πρόγραμμα με την εντολή Ε Εμβαδό_κύκλου(Α) Η τιμή της Α μεταβιβάζεται στην αντίστοιχη μεταβλητή της
συνάρτησης και εκτελούνται οι εντολές της συνάρτησης Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα και η τιμή της συνάρτησης εκχωρείται στη μεταβλητή Ε
bull Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ bull Οι παράμετροι είναι μεταβλητές των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία όταν την καλούμε bull Η λίστα παραμέτρων είναι είσοδος ήκαι έξοδος της διαδικασίας
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων
Θ 121 Πώς εκτελείται μια διαδικασία
Κάθε διαδικασία μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση με την εντολή
ΚΑΛΕΣΕ που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο από κάποιες παραμέτρους σε παρένθεση
δηλαδή ΚΑΛΕΣΕ όνομα(λίστα παραμέτρων)
Έστω η διαδικασία Εκτύπωσε(Αποτέλεσμα) όπου Αποτέλεσμα πραγματική μεταβλητή Έστω ότι στο κύριο πρόγραμμα
Κύκλος έχει εισαχθεί η τιμή της ακτίνας του κύκλου έστω Α Όπως είδαμε στη μεταβλητή Ε έχει εκχωρηθεί το
εμβαδόν του κύκλου όπως υπολογίστηκε από την αντίστοιχη συνάρτηση Η διαδικασία καλείται από το πρόγραμμα με
την εντολή ΚΑΛΕΣΕ Εκτύπωση(Ε) Η τιμή της Ε μεταβιβάζεται στην αντίστοιχη μεταβλητή Αποτέλεσμα της
διαδικασίας και εκτελούνται οι εντολές αυτής
Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί Με την
επιστροφή στο κύριο πρόγραμμα όλες οι θέσεις μνήμης που είχαν δοθεί στη μνήμη απελευθερώνονται
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
33
Θ 122 Ποιους κανόνες πρέπει να ακολουθούν οι λίστες των παραμέτρων Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες bull Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος bull Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για
παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ
bull Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες παράμετροι ονομάζονται πραγματικές και ποιες τυπικές
Οι πραγματικές παράμετροι είναι μεταβλητές του προγράμματος (κύριου ή υποπρογράμματος) το οποίο καλεί ένα
υποπρόγραμμα (δηλαδή έχουν δηλωθεί στο πρόγραμμα που κάνει την κλήση) Η λίστα των πραγματικών παραμέτρων
καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος
Οι τυπικές παράμετροι είναι μεταβλητές του υποπρογράμματος το οποίο καλείται (δηλαδή έχουν δηλωθεί στο
υποπρόγραμμα που δέχεται την κλήση)
Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος
Ποια είναι η ισχύς των μεταβλητών άρα και των παραμέτρων
Όλες οι μεταβλητές είναι γνωστές έχουν ισχύ όπως λέγεται μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα
Κανόνες για τις λίστες παραμέτρων
Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος
Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση Για παράδειγμα
η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ
Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου
Ποιες οι διαφορές μεταξύ διαδικασίας και συνάρτησης
Η συνάρτηση ενεργοποιείται με απλή αναφορά του ονόματός της μέσα σε μία αλγοριθμική έκφραση ενώ η διαδικασία με
τη χρήση της δεσμευμένης λέξη ΚΑΛΕΣΕ
Η συνάρτηση πρέπει να έχει τουλάχιστον μία παράμετρο (είσοδος) ενώ η διαδικασία μπορεί και να μην έχει
παραμέτρους πχ ΚΑΛΕΣΕ Διαδικασία( )
Η συνάρτηση υπολογίζει και επιστρέφει (έξοδος) μία (και μόνο) τιμή με το όνομά της ενώ η διαδικασία μπορεί να
επιστρέψει από καμία έως και πολλές τιμές (ακόμα και ολόκληρο πίνακα) μέσω των παραμέτρων της
Η μεταβολή των τιμών των παραμέτρων της συνάρτησης (τυπικές) δεν αντανακλά στις αντίστοιχες παραμέτρους του
προγράμματος που την κάλεσε (πραγματικές) ενώ στη διαδικασία όλες οι μεταβολές μεταφέρονται και στο πρόγραμμα
που την κάλεσε (υπάρχει αλληλεπίδραση)
Στη συνάρτηση πρέπει να δηλώνεται στην αρχή αμέσως μετά το όνομα της συνάρτησης ο τύπος της τιμής που
επιστρέφει (ΑΚΕΡΑΙΑ ΠΡΑΓΜΑΤΙΚΗ ΧΑΡΑΚΤΗΡΑΣ ΛΟΓΙΚΗ)
Η συνάρτηση δεν εκτελεί τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ ενώ η διαδικασία εκτελεί όσες εντολές εκτελεί και ένα
κανονικό πρόγραμμα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
34
Μην ξεχνάμε επίσης ότι
bull Η λίστα παραμέτρων της συνάρτησης είναι η είσοδος της
bull Το όνομα της συνάρτησης είναι η έξοδος της
bull Στη λίστα παραμέτρων της διαδικασίας κάποιες παράμετροι μπορεί να είναι μόνο για είσοδο άλλες μόνο για έξοδο και
κάποιες για είσοδο και έξοδο Όσες είναι μόνο για έξοδο δεν παίρνουν τιμή από το πρόγραμμα (η αντίστοιχη πραγματική
παράμετρος του προγράμματος δεν έχει πάρει κάποια αρχική τιμή όταν καλείται η διαδικασία)
bull Μια διαδικασία μπορεί να έχει κενή λίστα παραμέτρων Χωρίς δηλαδή να παίρνει ή να επιστρέφει τιμές απόπρος το
πρόγραμμα όταν καλείται από αυτό απλά εκτελούνται οι εντολές της
Θ 124 Ποια είναι η σχέση στοίβας και υποπρογραμμάτων
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό των γλωσσών προγραμματισμού Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος που
ονομάζεται διεύθυνση επιστροφής (return address) αποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται
στοίβα χρόνου εκτέλεσης (execution time stack) Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση
επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κύριο πρόγραμμα Η
τεχνική αυτή εφαρμόζεται και γενικότερα δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή
συνάρτηση
(δηλ ο μεταφραστής κάνει χρήση στοίβας για το χειρισμό κλήσεων διαδικασιών και επιστροφών από αυτές)
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
1
Εκσφαλμάτωση Προγράμματος Κατηγορίες λαθών
Τι είναι ένα τα bugs
με τον οποίο bugs αναφερόμαστε στα λάθη που εμφανίζονται σε ένα πρόγραμμα Μια από τις πρώτες βλάβες που
εμφανίστηκαν στους υπολογιστές ήταν ένα βραχυκύκλωμα που οφειλόταν στον εγκλωβισμό ενός εντόμου (bug) στο
εσωτερικό ενός υπολογιστή Από το γεγονός αυτό είναι πολύ πιθανό να προέρχεται ο όρος bugs
Περιγράψτε τις τρεις βασικές κατηγορίες λαθών και δώστε ένα παράδειγμα για κάθε μία από αυτές
Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών
bull Συντακτικά λάθη (Λάθη κατά την υλοποίηση)
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της
bull Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος (Λάθη κατά την εκτέλεση)
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Τέτοια λάθη είναι δυνατό να προκληθούν από
την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί καθώς και η προσπάθεια διαίρεσης ενός
αριθμού με το μηδέν
bull Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ωστόσο δεν παράγονται τα επιθυμητά αποτελέσματα Τέτοιο λάθος θα μπορούσε να είναι ο υπολογισμός του μέσου
όρου στοιχείων όταν δεν διαιρούμε το συνολικό άθροισμα δια του πλήθους των στοιχείων πχ μο α +β +γ3
Τι γνωρίζετε για τα λάθη κατά την υλοποίηση
Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος Τέτοια
λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας
δομής ελέγχου χωρίς την εντολή τερματισμού της Τα λάθη αυτά εντοπίζονται από το μεταγλωττιστή ο οποίος
εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα Για να συνεχιστεί η εκτέλεσή του προγράμματος
πρέπει να διορθώσει το λάθος ο προγραμματιστής
Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν εργαλεία αυτόματου ελέγχου σύνταξης των εντολών και
παρακολουθούν τον προγραμματιστή κατά τη συγγραφή του προγράμματος Μόλις διαπιστώσουν κάποιο συντακτικό
λάθος σταματούν και απαιτούν τη διόρθωσή του Συνήθως αντιλαμβάνονται ακριβώς το λάθος που δημιουργήθηκε
και προτείνουν αναλυτικά τον τρόπο διόρθωσής του εμφανίζοντας σε ενημερωτικό πλαίσιο την ορθή σύνταξη της
εντολής που προκλήθηκε το λάθος
Τι γνωρίζετε για τα Λάθη κατά την εκτέλεση
Τα λάθη που προκαλούνται κατά το χρόνο εκτέλεσης του προγράμματος είναι πιο επώδυνα γιατί συνήθως
εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης και τις περισσότερες φορές προκαλούν τον αντικανονικό
τερματισμό της εφαρμογής και το κρέμασμα (crash) του συστήματος Όταν ένα λάθος προκληθεί κατά την εκτέλεση
της εφαρμογής είναι δυνατό να αντιμετωπισθεί μόνο με τη χρήση εντολών προγράμματος που το παγιδεύουν και
εκτελούν τις κατάλληλες διαδικασίες χειρισμού του Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη αφού
συνήθως οφείλονται σε καταστάσεις που δεν είναι εύκολο να ελεγχθούν από τον προγραμματιστή ενώ πολλές
φορές εμφανίζονται μετά από μεγάλο χρονικό διάστημα Τέτοια λάθη είναι δυνατό να προκληθούν από την κλήση
μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί όπως η αναζήτηση διαγραμμένων αρχείων η προσπάθεια
διαίρεσης ενός αριθμού με το μηδέν η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού
μέρους του υπολογιστή όπως η καταστροφή του σκληρού δίσκου του συστήματος ο τερματισμός μιας σύνδεσης
δικτύου και η αποσύνδεση του εκτυπωτή
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
2
Τι γνωρίζετε για τα Λογικά λάθη
Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος
Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση
του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων τελικά δεν παράγονται τα επιθυμητά
αποτελέσματα Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του
υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των
προγραμμάτων
Εκσφαλμάτωση Η διαδικασία ελέγχου εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση
(debugging) Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που
προκαλούν προβλήματα στη λειτουργία του
Η εργασία της εκσφαλμάτωσης
bull δεν είναι εύκολη
bull απαιτεί καλές γνώσεις και ικανότητες προγραμματισμού
bull Η εκσφαλμάτωση είναι ένα πρόβλημα λογικής όσο πιο καλά αντιλαμβάνεται ο προγραμματιστής τον τρόπο
που εργάζεται το πρόγραμμα τόσο πιο εύκολα και σύντομα θα εντοπίσει λάθη που προκαλούν δυσλειτουργίες
Τα λάθη που κυρίως μας απασχολούν στη φάση της εκσφαλμάτωσης είναι λογικά λάθη και λάθη που παρουσιάζονται
κατά το χρόνο εκτέλεσης του προγράμματος Η εκσφαλμάτωση τέτοιων λαθών μπορεί να γίνει μέσα από εργαλεία
εκσφαλμάτωσης ή από ειδικές εντολές ή συναρτήσεις που προσφέρει το περιβάλλον προγραμματισμού
Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη ή τις συνθήκες
bull τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής
Μερικές φορές κατά την εκτέλεση της δομής επιλογής εμφανίζονται λανθασμένα αποτελέσματα τα οποία σχετίζονται
με λογικά λάθη σε προηγούμενες εντολές που επηρεάζουν την τιμή που λαμβάνει η συνθήκη
Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στην ενότητα αυτή θα ασχοληθούμε με την εκσφαλμάτωση κάποιων συνηθισμένων λαθών στις δομές επανάληψης
Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με
bull τη συνθήκη επανάληψης ή τερματισμού
bull την αρχικοποίηση της συνθήκης
bull την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης
bull τις εντολές που περιλαμβάνονται εντός του βρόχου
Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα
συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη
Συμβουλή Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής
bull στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού
bull στην αρχικοποίηση της συνθήκης
bull στην ενημέρωση της συνθήκης εντός του βρόχου
bull στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους
bull στο κριτήριο της περατότητας
bull στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά
bull στην τελευταία επανάληψη
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
3
Εκσφαλμάτωση λογικών λαθών σε πίνακες
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή
bull στο μέγεθος των πινάκων κατά τη δήλωσή τους
bull στους δείκτες των πινάκων κατά την προσπέλασή τους
bull στη μη υπέρβαση των ορίων του πίνακα
Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα
Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον
εντοπισμό λογικών λαθών που σχετίζονται με
bull την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων
bull τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα
top related