37
1 Κεφάλαιο 1ο : Ανάλυση Προβλήματος 1.1 Τι είναι πρόβλημα ; Με τον όρο Πρόβλημα εννοείται μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. 1.2 Δώστε 3 παραδείγματα προβλημάτων Το πρόβλημα με το ψύχος που αντιμετώπισαν τα στρατεύματα του Ναπολέοντα στην εκστρατεία του στη Ρωσία, είχε σαν αποτέλεσμα την ανακοπή της προέλασης και την οπισθοχώρησή του. Σοβαρότατα προβλήματα επιδημιών, όπως η πανούκλα, η χολέρα και η λύσσα, αφάνιζαν καθημερινά χιλιάδες ανθρώπους τον περασμένο αιώνα μέχρις ότου επιστήμονες, όπως ο Pasteur και ο Fleming, να ανακαλύψουν τα κατάλληλα εμβόλια. Το πρόβλημα της μεταφοράς της ηλεκτρικής ενέργειας από τον τόπο παραγωγής στα σημεία κατανάλωσης πονοκεφάλιασε πολύ τους υπεύθυνους περασμένων εποχών μέχρι να εμφανιστούν οι μετασχηματιστές οι οποίοι έδωσαν λύση στο πρόβλημα. 1.3 Συνάρτηση ποιών παραγόντων είναι η κατανόηση ενός προβλήματος; Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δύο παραγόντων, της σωστής διατύπωσης εκ μέρους του δημιουργού του και της αντίστοιχα σωστής ερμηνείας από τη μεριά εκείνου που καλείται να το αντιμετωπίσει. 1.4. Από ποιους παράγοντες εξαρτάται η κατανόηση ενός προβλήματος; Για να γίνει πλήρως κατανοητό ένα πρόβλημα απαιτείται: 1. Σαφής διατύπωση εκ μέρους του δημιουργού του. 2. Σωστή ερμηνεία από εκείνον που καλείται να το αντιμετωπίσει. Όσον αφορά τη διατύπωση, η άστοχη χρήση ορολογίας και λανθασμένη σύνταξη, είναι δύο στοιχεία που μπορούν να προκαλέσουν παρερμηνείες και παραπλανήσεις. Όσον αφορά τη σωστή ερμηνεία, σημαντικό ρόλο παίζει το επίπεδο της γνώσης και της αντίληψης του λύτη, το οποίο καθορίζεται από τις γενικές και τις ειδικές γνώσεις του πάνω στο αντικείμενο του προβλήματος. 1.6 Τι ονομάζεται δεδομένο ; Με τον όρο δεδομένο δηλώνεται οποιοδήποτε στοιχείο μπορεί να γίνει αντιληπτό από έναν τουλάχιστον παρατηρητή με μία από τις πέντε αισθήσεις του. 1.6.B. Τι είναι πληροφορία ; Με τον όρο πληροφορία αναφέρεται οποιοδήποτε γνωσιακό στοιχείο προέρχεται από επεξεργασία δεδομένων. 1.7 Τι δηλώνει ο όρος επεξεργασία δεδομένων; Ο όρος επεξεργασία δεδομένων δηλώνει εκείνη τη διαδικασία κατά την οποία ένας “μηχανισμός” δέχεται δεδομένα, τα επεξεργάζεται σύμφωνα με έναν προκαθορισμένο τρόπο και αποδίδει πληροφορίες. 1.8 Τι ονομάζουμε δομή ενός προβλήματος ; Με τον όρο δομή ενός προβλήματος αναφερόμαστε στα συστατικά του μέρη, στα επιμέρους τμήματα που το αποτελούν καθώς επίσης και στον τρόπο που αυτά τα μέρη συνδέονται μεταξύ τους. 1.9 Με ποιο τρόπο αντιμετωπίζουμε δύσκολα προβλήματα ; Η δυσκολία αντιμετώπισης των προβλημάτων ελαττώνεται όσο περισσότερο προχωράει η ανάλυση τους σε απλούστερα προβλήματα. Ο κατακερματισμός ενός προβλήματος σε άλλα απλούστερα είναι μια από τις διαδικασίες που ενεργοποιούν και αμβλύνουν τόσο τη σκέψη, αλλά κυρίως την αναλυτική ικανότητα του ατόμου.

Κεφάλαιο 1ο : Ανάλυση Προβλήματος3lyk-korop.att.sch.gr/main/students/classC/AEPP_2019_2020.pdf · Κεφάλαιο 1ο : Ανάλυση Προβλήματος

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

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 τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα