Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ...

16
Επανάληψη Θεωρίας Καστούμης Γιώργος ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΨΗ ΘΕΩΡΙΑΣ ΚΕΦΑΛΑΙΟ 1 Ορισµοί: Με τον όρο πρόβληµα εννοείται µια κατάσταση η οποία χρήζει αντιµετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. Με τον όρο δοµή ενός προβλήµατος αναφερόµαστε στα συστατικά του µέρη, στα επιµέρους τµήµατα που το αποτελούν καθώς επίσης και στον τρόπο που αυτά συνδέονται µεταξύ τους. Τα απλούστερα προβλήµατα στα οποία αναλύεται ένα πρόβληµα καλούνται υποπροβλήµατα του αρχικού προβλήµατος. ∆εδοµένο είναι οποιοδήποτε στοιχείο µπορεί να γίνει αντιληπτό από ένα τουλάχιστον παρατηρητή µε µια από τις πέντε αισθήσεις του. Πληροφορία είναι οποιοδήποτε γνωσιακό στοιχείο προέρχεται από την επεξεργασία δεδοµένων. Επεξεργασία δεδοµένων είναι η διαδικασία κατά την οποία ένας ΄΄µηχανισµός΄΄ δέχεται τα δεδοµένα, τα επεξεργάζεται σύµφωνα µε ένα προκαθορισµένο τρόπο και αποδίδει πληροφορίες. Για την γραφική απεικόνιση της δοµής ενός προβλήµατος χρησιµοποιείται η διαγραµµατική αναπαράσταση Η διαγραµµατική αναπαράσταση βοηθάει στη δηµιουργία µιας πληρέστερης εικόνας του προβλήµατος. Για την υλοποίηση της διαγραµµατικής αναπαράστασης : 1. Το αρχικό πρόβληµα αναπαρίσταται από ένα ορθογώνιο παραλληλόγραµµο. 2. Κάθε ένα από τα απλούστερα προβλήµατα στα οποία αναλύεται ένα οποιοδήποτε πρόβληµα, αναπαρίσταται επίσης από ένα ορθογώνιο παραλληλόγραµµο. 3. Τα παραλληλόγραµµα που αντιστοιχούν στα απλούστερα προβλήµατα σχεδιάζονται ένα επίπεδο χαµηλότερα. Τα στάδια αντιµετώπισης ενός προβλήµατος: 1. Κατανόηση, όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδοµένων και των ζητουµένων του προβλήµατος 2. Ανάλυση, όπου το αρχικό πρόβληµα διασπάται σε άλλα επί µέρους απλούστερα προβλήµατα 3. Επίλυση, όπου υλοποιείται η λύση του προβλήµατος µέσω της λύσης των επιµέρους προβληµάτων Λειτουργίες που εκτελεί ένας υπολογιστής: 1. Πρόσθεση, η οποία αποτελεί τη βασική αριθµητική πράξη, µε το σκεπτικό ότι και οι άλλες αριθµητικές πράξεις µπορούν να αντιµετωπιστούν σαν διαδικασίες πρόσθεσης. 2. Σύγκριση, για την εκτέλεση των λογικών πράξεων. 3. Μεταφορά δεδοµένων, λειτουργία που προηγείται και έπεται της επεξεργασίας δεδοµένων. ΚΑΤΗΓΟΡΙΕΣ ΠΡΟΒΛΗΜΑΤΩΝ Τα προβλήµατα διακρίνονται σε κατηγορίες ανάλογα: Με τη δυνατότητα επίλυσης τους. Με το βαθµό δόµησης των λύσεων των επιλύσιµων προβληµάτων. Με το είδος επίλυσης που επιζητούν. Σύµφωνα µε την επιλυσιµότητα διακρίνονται σε τρεις κατηγορίες: 1. Επιλύσιµα είναι εκείνα τα προβλήµατα για τα οποία η λύση τους είναι ήδη γνωστή και έχει διατυπωθεί. 2. Ανοικτά ονοµάζονται εκείνα για τα οποία η λύση τους δεν έχει µεν βρεθεί, αλλά παράλληλα δεν έχει αποδειχθεί ότι δεν επιδέχονται λύση. 3. Άλυτα χαρακτηρίζονται εκείνα για τα οποία έχουµε φτάσει στην παραδοχή ότι δεν επιδέχονται λύση.

description

ΣΥΝΟΠΤΙΚΗ ΘΕΩΡΙΑ ΣΤΟ ΜΑΘΗΜΑ "ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ"

Transcript of Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ...

Page 1: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΕΠΑΝΑΛΗΨΗ ΘΕΩΡΙΑΣ ΚΕΦΑΛΑΙΟ 1

Ορισµοί:

Με τον όρο πρόβληµα εννοείται µια κατάσταση η οποία χρήζει αντιµετώπισης, απαιτεί

λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. Με τον όρο δοµή ενός προβλήµατος αναφερόµαστε στα συστατικά του µέρη, στα επιµέρους

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

Τα απλούστερα προβλήµατα στα οποία αναλύεται ένα πρόβληµα καλούνται υποπροβλήµατα

του αρχικού προβλήµατος.

∆εδοµένο είναι οποιοδήποτε στοιχείο µπορεί να γίνει αντιληπτό από ένα τουλάχιστον

παρατηρητή µε µια από τις πέντε αισθήσεις του. Πληροφορία είναι οποιοδήποτε γνωσιακό στοιχείο προέρχεται από την επεξεργασία

δεδοµένων.

Επεξεργασία δεδοµένων είναι η διαδικασία κατά την οποία ένας ΄΄µηχανισµός΄΄ δέχεται τα

δεδοµένα, τα επεξεργάζεται σύµφωνα µε ένα προκαθορισµένο τρόπο και αποδίδει πληροφορίες.

Για την γραφική απεικόνιση της δοµής ενός προβλήµατος χρησιµοποιείται η

διαγραµµατική αναπαράσταση Η διαγραµµατική αναπαράσταση βοηθάει στη δηµιουργία µιας πληρέστερης εικόνας του

προβλήµατος. Για την υλοποίηση της διαγραµµατικής αναπαράστασης :

1. Το αρχικό πρόβληµα αναπαρίσταται από ένα ορθογώνιο παραλληλόγραµµο. 2. Κάθε ένα από τα απλούστερα προβλήµατα στα οποία αναλύεται ένα οποιοδήποτε

πρόβληµα, αναπαρίσταται επίσης από ένα ορθογώνιο παραλληλόγραµµο.

3. Τα παραλληλόγραµµα που αντιστοιχούν στα απλούστερα προβλήµατα σχεδιάζονται ένα

επίπεδο χαµηλότερα.

Τα στάδια αντιµετώπισης ενός προβλήµατος:

1. Κατανόηση, όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδοµένων και των

ζητουµένων του προβλήµατος 2. Ανάλυση, όπου το αρχικό πρόβληµα διασπάται σε άλλα επί µέρους απλούστερα

προβλήµατα

3. Επίλυση, όπου υλοποιείται η λύση του προβλήµατος µέσω της λύσης των επιµέρους

προβληµάτων

Λειτουργίες που εκτελεί ένας υπολογιστής:

1. Πρόσθεση, η οποία αποτελεί τη βασική αριθµητική πράξη, µε το σκεπτικό ότι και οι άλλες

αριθµητικές πράξεις µπορούν να αντιµετωπιστούν σαν διαδικασίες πρόσθεσης. 2. Σύγκριση, για την εκτέλεση των λογικών πράξεων.

3. Μεταφορά δεδοµένων, λειτουργία που προηγείται και έπεται της επεξεργασίας δεδοµένων.

ΚΑΤΗΓΟΡΙΕΣ ΠΡΟΒΛΗΜΑΤΩΝ Τα προβλήµατα διακρίνονται σε κατηγορίες ανάλογα:

Με τη δυνατότητα επίλυσης τους.

Με το βαθµό δόµησης των λύσεων των επιλύσιµων προβληµάτων.

Με το είδος επίλυσης που επιζητούν.

Σύµφωνα µε την επιλυσιµότητα διακρίνονται σε τρεις κατηγορίες:

1. Επιλύσιµα είναι εκείνα τα προβλήµατα για τα οποία η λύση τους είναι ήδη γνωστή και έχει

διατυπωθεί. 2. Ανοικτά ονοµάζονται εκείνα για τα οποία η λύση τους δεν έχει µεν βρεθεί, αλλά

παράλληλα δεν έχει αποδειχθεί ότι δεν επιδέχονται λύση.

3. Άλυτα χαρακτηρίζονται εκείνα για τα οποία έχουµε φτάσει στην παραδοχή ότι δεν επιδέχονται λύση.

Page 2: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Σύµφωνα µε το βαθµό δόµησης διακρίνονται σε τρεις κατηγορίες:

1. ∆οµηµένα χαρακτηρίζονται εκείνα τα προβλήµατα των οποίων η επίλυση προέρχεται από µια αυτοµατοποιηµένη διαδικασία.

2. Ηµιδοµηµένα ονοµάζονται εκείνα ,των οποίων η λύση επιδιώκεται στα πλαίσια ενός

εύρους πιθανών λύσεων, αφήνοντας στον ανθρώπινο παράγοντα περιθώρια επιλογής.

3. Αδόµητα χαρακτηρίζονται εκείνα ,των οποίων οι λύσεις δεν µπορούν να δοµηθούν ή δεν έχει διερευνηθεί σε βάθος η δυνατότητα δόµησης τους. Πρωτεύοντα ρόλο στην επίλυση

αυτού του τύπου προβληµάτων κατέχει η ανθρώπινη διαίσθηση.

Σύµφωνα µε το είδος επίλυσης που επιζητούν διακρίνονται σε τρεις κατηγορίες: 1. Απόφασης όπου η απόφαση που πρόκειται να ληφθεί σαν λύση του προβλήµατος που

τίθεται, απαντά σε ένα ερώτηµα και πιθανόν αυτή η απάντηση να είναι ένα ΄΄ναι΄΄ ή ένα

΄΄όχι΄ . 2. Υπολογιστικά όπου το πρόβληµα που τίθεται απαιτεί τη διενέργεια υπολογισµών για να

µπορέσει να δοθεί µια απάντηση στο πρόβληµα.

3. Βελτιστοποίησης όπου το πρόβληµα που τίθεται επιζητά το βέλτιστο αποτέλεσµα για τα

συγκεκριµένα δεδοµένα που διαθέτει.

Λόγοι για τους οποίους αναθέτουµε την επίλυση ενός προβλήµατος σε υπολογιστή:

Την πολυπλοκότητα των υπολογισµών,

Την επαναληπτικότητα των διαδικασιών, Την ταχύτητα εκτέλεσης των πράξεων,

Το µεγάλο πλήθος δεδοµένων.

ΚΕΦΑΛΑΙΟ 2

Ορισµοί:

Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και

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

τα δεξιά ισοδυναµεί µε την ακέραια διαίρεση δια δύο.

Κριτήρια που πρεπει να ικανοποιεί ο αλγόριθµος: • ΕΙΣΟ∆ΟΣ: Καµία, µια ή περισσότερες τιµές δεδοµένων πρέπει να δίνονται ως είσοδοι στον

αλγόριθµο.

• ΕΞΟ∆ΟΣ: Κάθε αλγόριθµος πρέπει να δηµιουργεί τουλάχιστον µια τιµή

δεδοµένων ως αποτέλεσµα • ΚΑΘΟΡΙΣΤΙΚΟΤΗΤΑ : Κάθε εντολή του αλγόριθµου πρέπει να

καθορίζεται χωρίς καµιά αµφιβολία για τον τρόπο εκτέλεσης της

• ΠΕΡΑΤΟΤΗΤΑ: Κάθε αλγόριθµος πρέπει να τελειώνει µετά από πεπερασµένο αριθµό βηµάτων σε πεπερασµένο χρόνο.

• ΑΠΟΤΕΛΕΣΜΑΤΙΚΟΤΗΤΑ: Κάθε εντολή του αλγορίθµου πρέπει να

είναι απλή, εκτελέσιµη και να µην είναι περιττή.

Τρόποι αναπαράστασης αλγόριθµων:

Ελεύθερο κείµενο: Ο πιο ανεπεξέργαστος και αδόµητος τρόπος παρουσίασης ενός

αλγορίθµου.

Κίνδυνος να παραβιαστεί το κριτήριο της αποτελεσµατικότητας.! ∆ιαγραµµατικές τεχνικές: Γραφικός τρόπος παρουσίασης της αλγορίθµου µε πιο γνωστά τα

διαγράµµατα ροής.

Φυσική γλώσσα µε βήµατα: Κίνδυνος να παραβιαστεί το κριτήριο της καθοριστικότητας.! Κωδικοποίηση: ∆ηλαδή µε ένα πρόγραµµα που όταν εκτελεσθεί θα δώσει τα ίδια

αποτελέσµατα µε τον αλγόριθµο.

Page 3: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Βασικές έννοιες αλγορίθµου:

Σταθερές: Με τον όρο σταθερές αναφερόµαστε σε προκαθορισµένες τιµές που παραµένουν αµετάβλητες σε όλη την διάρκεια της εκτέλεσης του αλγόριθµου. Τις διακρίνουµε ως εξής:

αριθµητικές, αλφαριθµητικές, λογικές

Μεταβλητές: Μια µεταβλητή είναι ένα γλωσσικό αντικείµενο που χρησιµοποιείται για να

παραστήσει ένα στοιχείο δεδοµένου. Η τιµή της µεταβλητής είναι η τιµή που βρίσκεται στην αντίστοιχη θέση µνήµης και µπορεί να µεταβάλλεται κατά την διάρκεια της εκτέλεσης του

αλγορίθµου. Ανάλογα µε το είδος της τιµής που µπορούν να λάβουν οι µεταβλητές, τις

διακρίνουµε ως εξής: αριθµητικές (περιέχουν µόνο αριθµούς), αλφαριθµητικές (περιέχουν οποιαδήποτε γράµµατα, αριθµούς, κενά ή σύµβολα και περικλείονται σε διπλά ή µονά

εισαγωγικά), λογικές (παίρνουν µια από δύο προκαθορισµένες τιµές, αληθές ή ψευδές)

Τελεστές: Ονοµάζονται τα γνωστά σύµβολα που χρησιµοποιούνται για τις πράξεις. ∆ιακρίνονται σε: αριθµητικούς ( +, -, *, /, ^, div, mod ) , λογικούς ( και, ή, όχι ) και

συγκριτικούς ( <, >, >=, =<, =, <> ).

Εκφράσεις: Οι εκφράσεις διαµορφώνονται από τους τελεστέους (σταθερές και µεταβλητές)

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

την ιεραρχία των πράξεων και την χρήση των παρενθέσεων. Μια έκφραση µπορεί να

αποτελείται από µια µόνο µεταβλητή ή σταθερά µέχρι µια πολύπλοκη µαθηµατική έκφραση. ΚΕΦΑΛΑΙΟ 3

Ορισμοί:

∆οµή δεδοµένων είναι ένα σύνολο αποθηκευµένων δεδοµένων που υφίσταται επεξεργασία από ένα σύνολο λειτουργιών.

Κάθε µορφή δοµής δεδοµένων αποτελείται από ένα σύνολο κόµβων.

Σκοπιές από τις οποίες µελετάει η πληροφορική τα δεδοµένα:

Υλικού: ∆ηλαδή η µηχανή επιτρέπει στα δεδοµένα ενός προγράµµατος να αποθηκεύονται στην κύρια µνήµη και στις περιφερειακές συσκευές µε διάφορες αναπαραστάσεις.

Γλωσσών προγραµµατισµού: Οι γλώσσες προγραµµατισµού υψηλού επιπέδου επιτρέπουν τη

χρήση διαφόρων τύπων µεταβλητών για να περιγράψουν ένα δεδοµένο. ∆οµών δεδοµένων: ∆οµή δεδοµένων είναι ένα σύνολο δεδοµένων µαζί µε ένα σύνολο

επιτρεπτών λειτουργιών επί αυτών.

Ανάλυσης δεδοµένων: Τρόποι καταγραφής και αλληλοσυσχέτισης των δεδοµένων

µελετώνται έτσι ώστε να αναπαρασταθεί η γνώση για πραγµατικά γεγονότα Το πρόγραµµα πρέπει να θεωρεί τη δοµή δεδοµένων και τον αλγόριθµο ως µια αδιάσπαστη

ενότητα. Εξίσωση Wirth (1976):

αλγόριθµος + δοµές δεδοµένων=πρόγραµµα

Βασικές πράξεις επί των δοµών δεδοµένων:

Προσπέλαση, πρόσβαση σε ένα κόµβο µε σκοπό να εξετασθεί ή να τροποποιηθεί το

περιεχόµενο του Εισαγωγή, δηλαδή η προσθήκη νέων κόµβων σε µια ήδη υπάρχουσα δοµή

∆ιαγραφή, είναι το αντίστροφο της εισαγωγής

Αναζήτηση, όπου προσπελαύνονται οι κόµβοι µιας δοµής προκειµένου να εντοπιστούν ένας

ή περισσότεροι που έχουν µια δεδοµένη ιδιότητα Ταξινόµηση, όπου οι κόµβοι µιας δοµής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά

Αντιγραφή, κατά την οποία όλοι οι κόµβοι ή µερικοί από τους κόµβους µιας δοµής

αντιγράφονται σε µια άλλη δοµή Συγχώνευση, κατά την οποία δύο ή περισσότερες δοµές συνενώνονται σε µια άλλη δοµή

∆ιαχωρισµός, που αποτελεί την αντίστροφη πράξη της συγχώνευσης

Page 4: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Οι δοµές δεδοµένων διακρίνονται σε:

1)Στατικές: Στις στατικές δοµές το ακριβές µέγεθος της απαιτούµενης κύριας µνήµης καθορίζεται κατά την στιγµή του προγραµµατισµού και της µετάφρασης τους και όχι κατά

την στιγµή εκτέλεσης του προγράµµατος. ∆ηλαδή το πλήθος των κόµβων µιας στατικής

δοµής καθορίζεται κατά τη φάση του προγραµµατισµού (και συγκεκριµένα των δηλώσεων)

και δεν µπορεί να αλλάζει κατά την εκτέλεση του αλγορίθµου ή του προγράµµατος. Επίσης στις στατικές δοµές τα στοιχεία τους αποθηκεύονται σε συνεχόµενες θέσεις µνήµης.

2)∆υναµικές: Οι δυναµικές δοµές δεν έχουν σταθερό µέγεθος, αλλά ο αριθµός των κόµβων

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

µνήµης αλλά σε περιοχές µνήµης µεταβλητού µεγέθους.

Στην πράξη, οι στατικές δοµές υλοποιούνται συχνά µε πίνακες που µας είναι γνωστοί από άλλα

µαθήµατα και υποστηρίζονται από κάθε γλώσσα προγραµµατισµού.

Στοίβα: Αυτή χρησιμοποιεί την μεθοδο επεξεργασίας που ονοµάζεται τελευταίο µέσα ,πρώτο έξω ή

αλλιώς µε την αγγλική συντοµογραφία LIFO(Last In First Out). ∆υο είναι οι κύριες

λειτουργίες σε µια στοίβα: Η ώθηση (push) στοιχείου στην κορυφή της στοίβας.

Η απώθηση (pop) στοιχείου από τη στοίβα.

Η διαδικασία της ώθησης πρέπει να ελέγχει αν η στοίβα είναι γεµάτη, οπότε συµβαίνει υπερχείλιση και αντίστοιχα η διαδικασία της απώθησης ελέγχει αν υπάρχει τουλάχιστον ένα

στοιχείο στην στοίβα, δηλαδή ελέγχει αν γίνεται υποχείλιση.

Μια στοίβα µπορεί να υλοποιηθεί µε τη βοήθεια µονοδιάστατου πίνακα. Μια βοηθητική

µεταβλητή (top) χρησιµοποιείται για να δείχνει το στοιχείο που τοποθετήθηκε τελευταίο στην κορυφή της στοίβας. Για την εισαγωγή ενός νέου στοιχείου στη στοίβα (ώθηση) αρκεί να

αυξηθεί η µεταβλητή top κατά ένα και στη θέση αυτή να εισέλθει το στοιχείο. Αντίθετα για

την εξαγωγή ενόςστοιχείου (απώθηση) εξέρχεται πρώτα το στοιχείο και στη συνέχεια η top µειώνεται κατά ένα για να δείχνει την νέα κορυφή.

Ουρά:

Η ουρά είναι µια δοµή δεδοµένων µε δύο άκρα στην οποία το πρώτο στοιχείο που εισάγεται

είναι και το πρώτο στοιχείο που µπορεί να εξαχθεί, γι’ αυτό έχει και την αγγλική συντοµογραφία FIFO (First In First Out). ∆ύο είναι οι βασικές λειτουργίες που γίνονται σε

µια ουρά:

Η εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς Η εξαγωγή (dequeue) στοιχείου από το εµπρός άκρο της ουράς

Στην περίπτωση της ουράς απαιτούνται δύο δείκτες: ο εµπρός (front) και ο πίσω (rear). Μια

ουρά µπορεί να υλοποιηθεί µε τη βοήθεια µονοδιάστατου πίνακα. Για την εισαγωγή ενός νέου στοιχείου στην ουρά αυξάνεται ο δείκτης rear κατά ένα και στη θέση αυτή

αποθηκεύεται το στοιχείο. Αντίστοιχα για την λειτουργία της εξαγωγής, εξέρχεται το

στοιχείο που δείχνει ο δείκτης front, ο οποίος στη συνέχεια αυξάνεται κατά ένα για να δείχνει

το επόµενο στοιχείο που πρόκειται να εξαχθεί.

Page 5: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Η χρήση των πινάκων παρουσιάζει τα παρακάτω πλεονεκτήµατα και µειονεκτήµατα:

Πλεονεκτήµατα Ταχεία προσπέλαση στοιχείων

Άµεση πρόσβαση των στοιχείων µε τη χρήση δεικτών

Μειονεκτήµατα

Οι πίνακες απαιτούν µνήµη. Ένας πίνακας δεσµεύει πολλές θέσεις µνήµης µε αποτέλεσµα η αλόγιστη χρήση πινάκων να οδηγεί ακόµη και σε αδυναµία εκτέλεσης του προγράµµατος.

Οι πίνακες περιορίζουν την ελευθερία του προγραµµατιστή. Οι πίνακες είναι στατικές

δοµές και το πλήθος των στοιχείων τους είναι σταθερό και προκαθορισµένο. Κατά συνέπεια πρέπει να προσδιοριστεί στο τµήµα δηλώσεων και δεν µπορεί να αλλάξει αν αυτό χρειαστεί.

Η χρήση της σειριακής αναζήτησης δικαιολογείται στις περιπτώσεις:

1. Ο πίνακας είναι µη ταξινοµηµένος

2. Ο πίνακας είναι µικρού µεγέθους(ν<=20) 3. Η αναζήτηση σε ένα συγκεκριµένο πίνακα γίνεται σπάνια

ΚΕΦΑΛΑΙΟ 6

Η επίλυση ενός προβλήµατος µε τον υπολογιστή περιλαµβάνει, τρία εξίσου σηµαντικά

στάδια: Τον ακριβή προσδιορισµό του προβλήµατος. Την ανάπτυξη του αντίστοιχου αλγόριθµου.

Τη διατύπωση του αλγόριθµου σε κατανοητή µορφή από τον υπολογιστή.

Γλώσσες πρώτης γενιάς(γλώσσες µηχανής):

Ένα πρόγραµµα σε γλώσσα µηχανής είναι γραµµένη στο δυαδικό σύστηµα. Είναι η µόνη γλώσσα που καταλαβαίνει ο µικροεπεξεργαστής για στοιχειώδης λειτουργίες. Αποτελεί

κώδικα άµεσα εκτελέσιµο και οι εντολές παριστάνονται µε ακολουθίες από 0 και 1 (δυαδικό

σύστηµα). ∆ίνει προγράµµατα πολύ µεγάλα, είναι δύσκολος o προγραµµατισµός, η εκτέλεση όµως αυτών των προγραµµάτων είναι πολύ γρήγορη διότι εκτελείται άµεσα από τον

µικροεπεξεργαστή. Οι εντολές ενός προγράµµατος και σήµερα µετατρέπονται σε γλώσσα

µηχανής για να εκτελεστούν.

Γλώσσες δεύτερης γενιάς(γλώσσες χαµηλού επιπέδου ή συµβολικές γλώσσες): Είναι αποτέλεσµα της προσπάθειας δηµιουργία ς µιας συµβολικής γλώσσας που θα έχει

νόηµα για τον άνθρωπο και θα µετατρέπεται εσωτερικά σε γλώσσα µηχανής µε ένα ειδικό

πρόγραµµα, τον συµβολοµεταφραστή (Assembler). Αποτελείται συνήθως από µικρές λέξεις και αριθµούς στο δεκαδικό σύστηµα(0,1,…,9). Τα χαρακτηριστικά τους είναι:

• Είναι στενά συνδεδεµένες µε την αρχιτεκτονική του υπολογιστή

• Τα προγράµµατα µεταφέρονται δύσκολα από την µια µηχανή στην άλλη ακόµη και να είναι του ίδιου κατασκευαστή

• ∆εν διαθέτουν εντολές πιο σύνθετων λειτουργιών και οδηγούν σε µακροσκελή

προγράµµατα ,που είναι δύσκολο να γραφούν και να συντηρηθούν.

Γλώσσες τρίτης γενιάς(γλώσσες υψηλού επιπέδου):(+σελ.119-126,παρ.6.2.3.)

Οι δυσκολίες στον προγραµµατισµό µε τις προηγούµενες γλώσσες οδήγησε στην δηµιουργία

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

μετταγλωτιστών (compilers). Επίσης µεταφέρονται εύκολα από έναν τύπο υπολογιστή σε ένα

άλλο. Τα βασικά τους χαρακτηριστικά(πλεονεκτήµατα) είναι: • Η ανεξαρτησία από τον τύπο του υπολογιστή. Μεταφέρονται εύκολα από την µια µηχανή

σε άλλη, µε τυχόν µικρές µετατροπές που είναι η δυνατότητα της µεταφερσιµότητας των

προγραµµάτων.

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

Page 6: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

• Οι εντολές τους είναι απλές λέξεις ή φράσεις ή µαθηµατικές εκφράσεις και είναι εύκολες

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

πολύ ευκολότερο έργο.

Συνοπτικά οι γλώσσες υψηλού επιπέδου:

Fortran→Επίλυση μαθηματικών προβλημάτων(μαθηματική) Cobol→Eμπορική

Algol→Γενικής Χρήσης

PL/I→Γενικής Χρήσης Lisp→Τεχνητής Νοημοσύνης

Prolog→Τεχνητής Νοημοσύνης

Basic→Γενικής Χρήσης(Eκπαιδευτική) Pascal→Γενικής Χρήσης

C/C++→Γενικής Χρήσης(Αντικειμενοστραφής)

Java→Εφαρμογές στο Διαδίκτυο(Αντικειμενοστραφής)

Visual Basic→Γενικής Χρήσης Visual C++→Γενικής Χρήσης

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

Εννοούμε την δυνατότητα να ενεργοποιούνται λειτουργίες του προγράμματος με την εκτέλεση ενός γεγονότος (πχ κλικ του ποντικιού).

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

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

Γλώσσες τέταρτης γενιάς(γλώσσες ερωταπαντήσεων):

Είναι γλώσσες ή προσθήκες στις υπάρχουσες γλώσσες, µε τις οποίες ο χρήστης µπορεί να

θέσει περίπλοκα και δοµηµένα ερωτήµατα σε µια βάση δεδοµένων. Γνωστή γλώσσα τέταρτης γενιάς η SQL.

Κάθε γλώσσα προσδιορίζεται από τα εξής:

ΤΟ ΑΛΦΑΒΗΤΟ: Αλφάβητο µιας γλώσσας καλείται το σύνολο των στοιχείων που χρησιµοποιούνται από τη γλώσσα.

ΤΟ ΛΕΞΙΛΟΓΙΟ: Το λεξιλόγιο αποτελείται από ένα υποσύνολο όλων των ακολουθιών που

δηµιουργούνται από τα στοιχεία του αλφαβήτου, τις λέξεις που είναι δεκτές από την

γλώσσα. Η ΓΡΑΜΜΑΤΙΚΗ: Η γραµµατική αποτελείται από το τυπικό(ή τυπολογικό) και το

συντακτικό .

• Τυπικό είναι το σύνολο των κανόνων που ορίζει τις µορφές µε τις οποίες µια λέξη είναι αποδεκτή.

• Συντακτικό είναι το σύνολο των κανόνων που καθορίζει τη νοµιµότητα της διάταξης και

της σύνδεσης των λέξεων της γλώσσας για την δηµιουργία προτάσεων. Η ΣΗΜΑΣΙΟΛΟΓΙΑ: Είναι το σύνολο των κανόνων που καθορίζει το νόηµα των λέξεων και

κατ’ επέκταση των εκφράσεων και των προτάσεων που χρησιµοποιούνται σε µια γλώσσα.

ΤΕΧΝΙΚΕΣ ΣΧΕ∆ΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ:

Ιεραρχική σχεδίαση προγράµµατος:

Ονοµάζεται αλλιώς διαδικασία σχεδίασης ΄΄από πάνω προς τα κάτω΄΄ και περιλαµβάνει τον καθορισµό των βασικών λειτουργιών ενός προγράµµατος σε ανώτερο επίπεδο και στη

συνέχεια στην διάσπαση των λειτουργιών αυτών σε όλο και µικρότερες λειτουργίες µέχρι το

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

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

του αρχικού προβλήµατος.

Ταξινόμηση των γλωσσών προγραμματισμού

Οι γλώσσες υψηλού επιπέδου διακρίνονται στις παρακάτω κατηγορίες:

Ταξινόμηση ως προς την δόμηση

1.Διαδικασιακές - αλγοριθμικές γλώσσες. Είναι σχεδιασμένες για την

υλοποίηση αλγορίθμων. Πχ Pascal , Basic .

2.Αντικειμενοστραφείς γλώσσες. Πχ Java,C++ 3.Συναρτησιακές γλώσσες.

Πχ LISP 4.Μη διαδικασιακές γλώσσες. Χαρακτηρίζονται ως γλώσσες πολύ

υψηλού επιπέδου.Πχ PROLOG 5.Γλώσσες ερωτοαπαντήσεων. Πχ SQL

Page 7: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Τµηµατικός προγραµµατισµός:

Η ιεραρχική σχεδίαση προγράµµατος υλοποιείται µε τον τµηµατικό προγραµµατισµό. Μετά την ανάλυση του προβλήµατος σε αντίστοιχα υποπροβλήµατα, κάθε υποπρόβληµα αποτελεί

ανεξάρτητη ενότητα που γράφεται ξεχωριστά από τα υπόλοιπα τµήµατα του προγράµµατος.

Πλεονέκτηματα του τµηµατικού προγραµµατισµού είναι ότι διευκολύνει τη δηµιουργία

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

∆οµηµένος προγραµµατισµός:

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

µειώσει τα λάθη, να εξασφαλίσει την εύκολη κατανόηση των προγραµµάτων και να

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

λογικών δοµών, τη δοµή της ακολουθίας, τη δοµή της επιλογής και τη δοµή της επανάληψης.

Όλα τα προγράµµατα µπορούν να γραφούν χρησιµοποιώντας µόνο αυτές τις τρεις δοµές

καθώς και συνδυασµό τους. Κάθε πρόγραµµα όπως και κάθε ενότητα προγράµµατος έχει µόνο µια είσοδο και µόνο µια έξοδο. Ο δοµηµένος προγραµµατισµός ενθαρρύνει και

βοηθάει την ανάλυση του προγράµµατος σε επί µέρους τµήµατα έτσι ώστε να εµπεριέχεται

τόσο η ιεραρχική σχεδίαση όσο και ο τµηµατικός προγραµµατισµός.

Πλεονεκτήµατα του δοµηµένου προγραµµατισµού:

• ∆ηµιουργία απλούστερων προγραµµάτων.

• Άµεση µεταφορά των αλγορίθµων σε προγράµµατα. • ∆ιευκόλυνση ανάλυσης του προγράµµατος σε τµήµατα.

• Περιορισµός των λαθών κατά την ανάπτυξη του προγράµµατος.

• ∆ιευκόλυνση στην ανάγνωση και κατανόηση του προγράµµατος από τρίτους.

• Ευκολότερη διόρθωση και συντήρηση.

Αντικειμενοστραφής Προγραμματισμός: Η Αντικειμενοστραφής σχεδίαση εκλαμβάνει ως

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

Παράλληλος Προγραμματισμός: Οι σύγχρονοι υπολογιστές έχουν περισσότερους από έναν

επεξεργαστές. Αυτοί λειτουργούν παράλληλα εκτελώντας διαφορετικές εντολές του ίδιου

προγράμματος.

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ

Κάθε πρόγραµµα που γράφτηκε σε οποιαδήποτε γλώσσα προγραµµατισµού πρέπει να

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

(πρόγραµµα) που ονοµάζεται συντάκτης-διορθωτής. Ο συντάκτης είναι απλά ένας

κειµενογράφος που επιτρέπει την αρχική σύνταξη (γράψιµο) του προγράµµατος και τη διόρθωσή του στη συνέχεια (π.χ. σβήσιµο χαρακτήρων-εντολών). Το σύνολο των εντολών

της γλώσσας προγραµµατισµού (δηλ. ο αρχικός κώδικας) που γράφουµε ονοµάζεται πηγαίο

πρόγραµµα (ή πηγαίος κώδικας). Είναι προφανές ότι το πηγαίο πρόγραµµα δε µπορεί να εκτελεστεί, αφού είναι απαραίτητη η µετάφρασή του σε δυαδικό σύστηµα. Μόνο στη

περίπτωση που το πηγαίο πρόγραµµα έχει γραφεί σε γλώσσα µηχανής, το πηγαίο πρόγραµµα

είναι και εκτελέσιµο. Για να γίνει αυτή η µετάφραση, στις γλώσσες υψηλού επιπέδου,

ακολουθούνται δύο διαφορετικές τεχνικές. Του µεταγλωττιστή (compiler) και του διερµηνευτή (interpreter). Ο µεταγλωττιστής και ο διερµηνευτής είναι δύο ειδικά

µεταφραστικά προγράµµατα.

Page 8: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Ο µεταγλωττιστής δέχεται στην είσοδο ένα πρόγραµµα γραµµένο σε µια γλώσσα υψηλού

επιπέδου και παράγει ένα ισοδύναµο πρόγραµµα σε γλώσσα µηχανής (η Pascal, η Cobol και η Fortran είναι αντιπροσωπευτικές γλώσσες που υποστηρίζονται από µεταγλωττιστή).

Ο διερµηνευτής διαβάζει µια προς µια τις εντολές του αρχικού προγράµµατος και για κάθε

µια εκτελεί αµέσως µια ισοδύναµη ακολουθία εντολών µηχανής (η Basic και η Lisp

υποστηρίζονται από διερµηνευτή).

∆ΙΑ∆ΙΚΑΣΙΑ ΜΕ ΤΗΝ ΟΠΟΙΑ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΦΡΑΖΕΤΑΙ ΣΕ

ΕΝΤΟΛΕΣ ΓΛΩΣΣΑΣ ΜΗΧΑΝΗΣ ΜΕ ΤΗ ΒΟΗΘΕΙΑ ΤΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΗ Πολλές παραδοσιακές γλώσσες χρησιµοποιούν µεταγλωττιστή. Αρχικά από όλο το πηγαίο

(source) πρόγραµµα παράγεται µετά τη µεταγλώττιση ένα ενδιάµεσο πρόγραµµα, που

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

τυπικά ή συντακτικά στον πηγαίο κώδικα). Αν υπάρχουν λάθη, κατάλληλα µηνύµατα µας

βοηθούν να τα διορθώσουµε. Το αντικείµενο πρόγραµµα είναι κατανοητό από τον

υπολογιστή (σε µορφή δυαδικού συστήµατος) αλλά δεν είναι δυνατό να εκτελεστεί. Είναι απαραίτητο να συνδεθεί µε άλλα τµήµατα (π.χ. βιβλιοθήκες γλώσσας). Αυτή τη λειτουργία

την αναλαµβάνει ο συνδέτης-φορτωτής (linker-loader) που παράγει και το τελικό εκτελέσιµο

(executable) πρόγραµµα (κώδικα).

Εποµένως σε ένα σύστηµα µε µεταγλωττιστή, η διαδικασία είναι:

Σύνταξη Μεταγλώττιση Σύνδεση Εκτέλεση

Ένα προγραµµατιστικό περιβάλλον που χρησιµοποιεί µεταγλωττιστή θα πρέπει να έχει

τουλάχιστον τα εξής τρία εργαλεία:

τον συντάκτη τον µεταγλωττιστή

και τον συνδέτη

∆ΙΑ∆ΙΚΑΣΙΑ ΜΕ ΤΗΝ ΟΠΟΙΑ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΦΡΑΖΕΤΑΙ ΣΕ

ΕΝΤΟΛΕΣ ΓΛΩΣΣΑΣ ΜΗΧΑΝΗΣ ΜΕ ΤΗ ΒΟΗΘΕΙΑ ΤΟΥ ∆ΙΕΡΜΗΝΕΥΤΗ Ορισµένες άλλες γλώσσες χρησιµοποιούν διερµηνευτή ή διερµηνέα. Αρχικά µετά από κάθε

εντολή (γραµµή) του πηγαίου (source) κώδικα γίνεται η µετάφραση (διερµηνεία). Αν

υπάρχουν λάθη στην εντολή, κατάλληλα µηνύµατα µας βοηθούν να τα διορθώσουµε. Αν δεν

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

εντολή του προγράµµατος κ.ο.κ. Λόγω της διαδικασίας αυτής η εκτέλεση ενός

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

βασική διαφορά του διερµηνευτή (interpreter) µε το µεταγλωττιστή (compiler) είναι ότι η

διερµηνεία γίνεται εντολή-εντολή (γραµµή-γραµµή), ενώ η µεταγλώττιση γίνεται για όλο το

πρόγραµµα. Σε συστήµατα µε διερµηνευτή δε δηµιουργείται αντικείµενο πρόγραµµα. Ακόµη δεν υπάρχει συνδέτης-φορτωτής και µετά από τη διερµηνεία το πρόγραµµα µπορεί να

εκτελεστεί άµεσα.

Page 9: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Εποµένως σε ένα σύστηµα µε διερµηνευτή, η διαδικασία είναι:

Σύνταξη Διερμηνεία Εκτέλεση

Ένα προγραµµατιστικό περιβάλλον που χρησιµοποιεί διερµηνευτή θα πρέπει να έχει

τουλάχιστοντα εξής δύο εργαλεία:

τον συντάκτη τον διερµηνευτή

∆ΙΑΦΟΡΑ ΜΕΤΑΞΥ ΜΕΤΑΓΛΩΤΤΙΣΤΗ ΚΑΙ ∆ΙΕΡΜΗΝΕΥΤΗ

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

µιας γλώσσας τύπου διερµηνευτή, το τµήµα προγράµµατος µέχρι το σηµείο του λάθους

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

να γίνει η παραγωγή του εκτελέσιµου προγράµµατος.

Η τεχνική του µεταγλωττιστή έχει το µειονέκτηµα ότι προτού χρησιµοποιηθεί ένα

πρόγραµµα πρέπει να περάσει από την διαδικασία της µεταγλώττισης και της σύνδεσης (χρονική καθυστέρηση). Από την άλλη µεριά ο διερµηνευτής έχει το πλεονέκτηµα της

άµεσης εκτέλεσης και συνεπώς της άµεσης διόρθωσης. Όµως το παραγόµενο εκτελέσιµο

πρόγραµµα που παράγεται από τον µεταγλωττιστή είναι ταχύτερο από την εκτέλεση του προγράµµατος µε διερµηνευτή και µάλιστα µεταφέρσιµο.

Συµπερασµατικά µπορούµε να πούµε ότι τα συστήµατα µε διερµηνευτή είναι πολύ

αποτελεσµατικά για σύντοµα προγράµµατα .∆ιαφορετικά, τα συστήµατα µε µεταγλωττιστή πλεονεκτούν.

Τα σύγχρονα προγραµµατιστικά περιβάλλοντα παρουσιάζονται συνήθως µε µεικτές

υλοποιήσεις,όπου χρησιµοποιείται διερµηνευτής κατά την φάση της δηµιουργίας και

µεταγλωττιστής για την τελική έκδοση και εκµετάλλευση του προγράµµατος (βλέπε Σχ. 6.6 Σχολικού Βιβλίου στη σελ. 139).

ΑΝΙΧΝΕΥΣΗ ΛΑΘΩΝ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ

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

α) Συντακτικά Λάθη (syntax errors)

Ονοµάζονται τα λάθη που προκύπτουν από την παραβίαση των συντακτικών κανόνων της

γλώσσας που χρησιµοποιούµε. Αναφέρονται και ως λάθη κατά την υλοποίηση. Τα συντακτικά λάθη οφείλονται κυρίως στη λανθασµένη σύνταξη εντολών. Τέτοια λάθη µπορεί

να είναι:

Η λανθασµένη γραφή µιας δεσµευµένης λέξης της γλώσσας προγραµµατισµού. Η λανθασµένη γραφή των µεταβλητών (για παράδειγµα αν ονοµάσουµε µια µεταβλητή µε

όνοµα που δεν επιτρέπεται από τους κανόνες ονοµατολογίας της γλώσσας).

Η λανθασµένη χρήση σηµείων στίξης ή άλλων συµβόλων (για παράδειγµα στις περισσότερες

γλώσσες προγραµµατισµού χρειάζεται στο τέλος κάθε εντολής το ερωτηµατικό, το οποίο αν

παραλειφθεί αποτελεί συντακτικό λάθος).

Η λανθασµένη σύνταξη εντολών (για παράδειγµα 3+Β Α) Η λανθασµένη γραφή πράξεων ή παραστάσεων (για παράδειγµα 4*/3)

Η µη δήλωση των µεταβλητών πριν τη χρησιµοποίηση τους.

β) Λογικά Λάθη (logical errors)

Ονοµάζονται τα λάθη που γίνονται στο σχεδιασµό του προγράµµατος. ∆εν προκαλούν τη

διακοπή εκτέλεσης του παρά µόνο, όταν υπάρχουν, το πρόγραµµα δεν δίνει τα επιθυµητά

αποτελέσµατα.

Οι αιτίες που προκαλούν τα λογικά λάθη είναι:

Λανθασµένη απόδοση αλγορίθµου (η λανθασµένη µεταφορά ενός αλγορίθµου σε πηγαίο κώδικα, είναι σίγουρο ότι θα δώσει ένα λανθασµένο πρόγραµµα π.χ. αν πρέπει να µεταφερθεί

σε ένα πρόγραµµα η παράσταση πρόκειται για ένα λογικό λάθος)

Page 10: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Κακή σχεδίαση του προγράµµατος (ένα πρόγραµµα το οποίο δεν έχει σχεδιαστεί και

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

πρόγραµµα µισθοδοσίας δεν έχει γίνει πρόβλεψη για τον υπολογισµό κάποιων εισοδηµάτων,

τότε το πρόγραµµα δεν θα τα λαµβάνει υπ’ όψη του και θα κάνει λάθη στον υπολογισµό της

µισθοδοσίας) ΚΕΦΑΛΑΙΟ 7

Κανόνες ∆ηµιουργίας Ονοµάτων Στην ΓΛΩΣΣΑ

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

Κάθε αναγνωριστικό αναφέρεται σε ορισµένη θέση µνήµης του Η/Υ. Για να δώσουµε ένα

όνοµα στο ίδιο το πρόγραµµα ή σε µια µεταβλητή ή σε µια σταθερά ή σε µια συνάρτηση ή σε µια διαδικασία ακολουθούµε τους παρακάτω κανόνες:

Οι δεσµευµένες λέξεις δεν µπορούν να χρησιµοποιηθούν ως ονόµατα.

∆εν πρέπει να περιλαµβάνει κανέναν από τους ειδικούς χαρακτήρες εκτός του_

Ένα όνοµα αρχίζει υποχρεωτικά µε γράµµα (ελληνικού ή λατινικού αλφαβήτου) και ακολουθεί τυχαίο πλήθος γραµµάτων ή και αριθµών.

∆εν µπορεί να χρησιµοποιηθεί το ίδιο όνοµα για δύο διαφορετικές σταθερές ή µεταβλητές

ή συναρτήσεις ή διαδικασίες.

Οι τύποι δεδοµένων που υποστηρίζει η ΓΛΩΣΣΑ είναι:

Ακέραιος τύπος: Περιλαµβάνει όλους τους ακεραίους αριθµούς που είναι γνωστοί από τα

Μαθηµατικά. Πραγµατικός τύπος: Περιλαµβάνει όλους τους πραγµατικούς αριθµούς που είναι γνωστοί

από τα Μαθηµατικά.

Χαρακτήρας (ή αλφαριθµητικός ή λεκτικό): Τα δεδοµένα αυτού του τύπου µπορούν να

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

σε µονά εισαγωγικά (‘ ‘).

Λογικός τύπος: Αυτός ο τύπος δέχεται µόνο δύο τιµές: ΑΛΗΘΗΣ και ΨΕΥ∆ΗΣ. ∆εδοµένα αυτού του τύπου χρησιµοποιούνται για τη σύνταξη λογικών συνθηκών.

∆οµή προγράµµατος: Η πρώτη εντολή κάθε προγράµµατος είναι υποχρεωτικά η επικεφαλίδα του προγράµµατος, η

οποία είναι η λέξη ΠΡΟΓΡΑΜΜΑ ακολουθούµενη από το όνοµα του προγράµµατος.

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

Αµέσως µετά είναι το τµήµα δήλωσης των µεταβλητών, όπου δηλώνονται υποχρεωτικά τα

ονόµατα όλων των µεταβλητών καθώς και ο τύπος τους.

Ακολουθεί το κύριο µέρος του προγράµµατος που περιλαµβάνει όες τις εκτελέσιµες εντολές ανάµεσα στις λέξεις ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.

Τέλος αν το πρόγραµµα χρησιµοποιεί διαδικασίες-συναρτήσεις αυτές γράφονται µετά το

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ. ΚΕΦΑΛΑΙΟ 8

Τιµή φρουρός:Η χρήση τιµών για τον τερµατισµό µιας επαναληπτικής διαδικασίας είναι

συνήθης στον προγραµµατισµό. Η τιµή αυτή ορίζεται από τον προγραµµατιστή και αποτελεί µια σύµβαση για το τέλος του προγράµµατος και είναι τέτοια ώστε να µην είναι λογικά

σωστή για το πρόβληµα. Η τιµή αυτή αποκαλείται τιµή φρουρός.

Εµφωλευµένοι βρόχοι:

Πολύ συχνά για την επίλυση των προβληµάτων απαιτείται η χρήση εµφωλευµένων βρόχων. (Βρόχος είναι το τµήµα του αλγορίθµου που επαναλαµβάνεται.) Σε αυτήν την περίπτωση ο

ένας βρόχος βρίσκεται µέσα στον άλλο.

Page 11: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Στην χρήση εµφωλευµένων βρόχων ισχύουν συγκεκριµένοι κανόνες που πρέπει να

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

ξεκινάει τελευταίος, πρέπει να ολοκληρώνεται πρώτος.

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

• ∆εν µπορεί να χρησιµοποιηθεί η ίδια µεταβλητή ως µετρητής δύο ή περισσότερων βρόχων που ο ένας βρίσκεται στο εσωτερικό του άλλου.

Παρατηρήσεις για τις επαναληπτικές δοµές: 1)Όπως και στην επαναληπτική δοµή Όσο…επανάλαβε, έτσι και στην δοµή

Αρχή_επανάληψης…Μέχρις_ότου, το πόσες φορές θα εκτελεστεί η οµάδα εντολών της

επανάληψης καθορίζεται από τον έλεγχο µιας συνθήκης. Η επαναληπτική δοµή Αρχή_επανάληψης…Μέχρις_ότου διαφέρει από την Όσο…επανάλαβε στα εξής:

• Η οµάδα εντολών της επαναληπτικής δοµής Αρχή_επανάληψης…Μέχρις_ότου εκτελείται

καθ’ όλη τη διάρκεια που η συνθήκη επανάληψης είναι ψευδής, ενώ η οµάδα εντολών της

επαναληπτικής δοµής Όσο…επανάλαβε εκτελείται καθ’ όλη τη διάρκεια που η συνθήκη επανάληψης είναι αληθής.

• Η οµάδα εντολών της επαναληπτικής δοµής Αρχή_επανάληψης…Μέχρις_ότου θα

εκτελεστεί τουλάχιστον µια φορά, ανεξάρτητα από το αν η συνθήκη επανάληψης είναι ψευδής ή αληθής, ενώ η οµάδα εντολών της επαναληπτικής δοµής Όσο…επανάλαβε µπορεί

να µην εκτελεστεί και καµία φορά εφόσον η συνθήκη είναι ψευδής εξ’ αρχής. Γενικά σε

περιπτώσεις όπου η επανάληψη θα συµβεί υποχρεωτικάµιαφορά,είναιπροτιµότερηηχρήσητης Αρχή_επανάληψης…Μέχρις_ότου.

2)Η επαναληπτική δοµή Για…από…µέχρι σε σχέση µε τις δυο προηγούµενες έχει τα

ακόλουθα χαρακτηριστικά και περιορισµούς:

• ∆εν ελέγχει άµεσα κάποια συνθήκη για να αποφασίσει τον τερµατισµό των επαναλήψεων. • Η χρήση της περιορίζεται µόνο σε εκείνες τις περιπτώσεις που γνωρίζουµε εκ των

προτέρων τον αριθµό των επαναλήψεων που πρέπει να εκτελεστούν.

• Οι επαναληπτικές διαδικασίες στις οποίες γνωρίζουµε εκ των προτέρων τον αριθµό των επαναλήψεων µπορούν να αντιµετωπιστούν και µε την χρήση των προηγούµενων δοµών

επανάληψης. ∆ηλαδή κάθε επανάληψη που εκτελείται µε µια εντολή Για…από…µέχρι

µπορεί να υλοποιηθεί και µε τη χρήση των βασικών εντολών επανάληψης Όσο…επανάλαβε

και Αρχή_επανάληψης…Μέχρις_ότου.

ΚΕΦΑΛΑΙΟ 9

Ορισµοί:

Πίνακας είναι ένα σύνολο αντικειµένων ίδιου τύπου, τα οποία αναφέρονται µε ένα κοινό όνοµα. Κάθε ένα από τα αντικείµενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του

πίνακα. Η αναφορά σε στοιχεία του πίνακα γίνεται µε το όνοµα του πίνακα ακολουθούµενο

από ένα δείκτη. Το όνοµα του πίνακα καθορίζει µια οµάδα διαδοχικών θέσεων στη µνήµη.

Για την αρίθµηση των θέσεων ενός πίνακα χρησιµοποιούνται διαδοχικοί φυσικοί αριθµοί που ονοµάζονται διατακτικοί αριθµοί ή δείκτες. Ο δείκτης είναι µια µεταβλητή που µπορεί να

έχει οποιοδήποτε δεκτό όνοµα. Συνήθως όµως στον προγραµµατισµό ως δείκτες

χρησιµοποιούνται οι µεταβλητές i, j, k. Οι πίνακες που χρησιµοποιούν ένα µόνο δείκτη για την αναφορά των στοιχείων τους, ονοµάζονται µονοδιάστατοι πίνακες.

Μειονεκτήµατα χρήσης πινάκων:

Οι πίνακες απαιτούν µνήµη. Κάθε πίνακας δεσµεύει από την αρχή του προγράµµατος πολλές θέσεις µνήµης. Σε ένα µεγάλο και σύνθετο πρόγραµµα η άσκοπη χρήση µεγάλων

πινάκων µπορεί να οδηγήσει ακόµη και σε αδυναµία εκτέλεσης του ππρογράµµατος.

Οι πίνακες περιορίζουν τις δυνατότητες του προγράµµατος. Αυτό γιατί είναι στατικές δοµές

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

Page 12: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Τυπικές επεξεργασίες πινάκων:

Υπολογισµός αθροισµάτων στοιχείων του πίνακα. Ευρεση µεγίστου ή ελαχίστου στοιχείου.

Ταξινόµηση των στοιχείων του πίνακα.

Αναζήτηση ενός στοιχείου του πίνακα: δύο είναι οι πλέον διαδεδοµένοι αλγόριθµοι

αναζήτησης: 1. Η σειριακή αναζήτηση

2. Η δυαδική αναζήτηση

Η σειριακή χρησιµοποιείται για πίνακες που δεν είναι ταξινοµηµένοι ενώ αντίθετα η δυαδική

χρησιµοποιείται µόνο σε ταξινοµηµένους πίνακες.

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

ΚΕΦΑΛΑΙΟ 10

Ορισµοί: Τµηµατικός προγραµµατισµός ονοµάζεται η τεχνική σχεδίασης και ανάπτυξης των

προγραµµάτων ως ένα σύνολο από απλούστερα τµήµατα προγραµµάτων.

Όταν ένα τµήµα προγράµµατος επιτελεί ένα αυτόνοµο έργο και έχει γραφεί χωριστά από το

υπόλοιπο πρόγραµµα, τότε αναφερόµαστε σε υποπρόγραµµα. Παράµετρος είναι µια µεταβλητή που επιτρέπει το πέρασµα της τιµής της από ένα τµήµα

προγράµµατος σε ένα άλλο. Οι παράµετροι είναι σαν τις κοινές µεταβλητές ενός

προγράµµατος µε µια ουσιώδη διαφορά, χρησιµοποιούνται για να περνούν τιµές στα υποπρογράµµατα.

Ιδιότητες υποπρογραµµάτων:

Κάθε υποπρόγραµµα έχει µόνο µια είσοδο και µια έξοδο. Το υποπρόγραµµα ενεργοποιείται µε την είσοδο σε αυτό που γίνεται πάντοτε από την αρχή του, εκτελεί ορισµένες ενέργειες,

και

απενεργοποιείται µε την έξοδο από αυτό που γίνεται πάντα από το τέλος του.

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

Κάθε υποπρόγραµµα πρέπει να µην είναι πολύ µεγάλο. Η έκταση του προγράµµατος είναι

υποκειµενική, ωστόσο κάθε υποπρόγραµµα πρέπει να είναι τόσο µεγάλο, έτσι ώστε να είναι εύκολα κατανοητό και ελέγξιµο. Σε περίπτωση που ένα υποπρόγραµµα εκτελεί περισσότερες

από µια λειτουργίες συνήθως µπορεί και πρέπει να διασπαστεί σε ακόµη µικρότερα

υποπρογράµµατα.

Πλεονεκτήµατα τµηµατικού προγραµµατισµού:

∆ιευκολύνει την ανάπτυξη του αλγορίθµου και του αντίστοιχου προγράµµατος. Το πρόβληµα

διασπάται σε µικρότερα υποπροβλήµατα. Η σταδιακή επίλυση των υποπροβληµάτων και η ανάπτυξη τους σε υποπρογράµµατα οικοδοµεί την συνολική επίλυση του προβλήµατος.

∆ιευκολύνει την κατανόηση και διόρθωση του προγράµµατος. Ο χωρισµός του

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

πρόγραµµα. Επίσης διευκολύνει την εύκολη µελέτη και κατανόηση από τρίτους. Απαιτείται

λιγότερος χρόνος και προσπάθεια στη συγγραφή του προγράµµατος. Πολύ συχνά χρειάζεται

η ίδια λειτουργία σε διαφορετικά σηµεία ενός προγράµµατος (οπότε την γράφου µε µια φορά και την ζητάµε όποτε την χρειαζόµαστε). Επεκτείνει τις δυνατότητες των γλωσσών

προγραµµατισµού. Η γλώσσα µπορεί να επεκταθεί µε την συγγραφή υποπρογραµµάτων και

τη δηµιουργία βιβλιοθηκών από αυτές.

Page 13: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Υπάρχουν δύο ειδών υποπρογράµµατα:

• ∆ιαδικασίες: Μπορούν να εκτελέσουν οποιαδήποτε λειτουργία από αυτές που µπορεί να εκτελέσει ένα πρόγραµµα. Να εισάγουν δεδοµένα, να εκτελέσουν υπολογισµούς, να

µεταβάλλουν τις τιµές των µεταβλητών και να τυπώσουν αποτελέσµατα. Με τη χρήση των

παραµέτρων αυτές τις τιµές µπορούν να τις µεταφέρουν στα άλλα υποπρογράµµατα.

• Συναρτήσεις: Η λειτουργία τους είναι πιο περιορισµένη. Οι συναρτήσεις υπολογίζουν µόνο µια τιµή, αριθµητική, χαρακτήρα ή λογική και µόνο αυτήν επιστρέφουν στο

υποπρόγραµµα που την κάλεσε. Οι συναρτήσεις µοιάζουν µε τις συναρτήσεις των

µαθηµατικών και η χρήση τους είναι όµοια µε την χρήση των ενσωµατωµένων συναρτήσεων που υποστηρίζει η γλώσσα προγραµµατισµού.

Οι συναρτήσεις εκτελούνται απλά µε την εµφάνιση του ονόµατος τους σε οποιαδήποτε

έκφραση, ενώ για να εκτελεστούν οι διαδικασίες χρησιµοποιείται η ειδική εντολή ΚΑΛΕΣΕ και το όνοµα της διαδικασίας.

ΤΥΠΟΙ ΠΑΡΑΜΕΤΡΩΝ

Πραγµατικές: Είναι οι παράµετροι που δηλώνονται στο καλούν πρόγραµµα. Η λίστα των

πραγµατικών (actual) παραµέτρων καθορίζει τις παραµέτρους στην κλήση του υποπρογράµµατος.

Τυπικές:

Είναι οι παράµετροι που δηλώνονται στο υποπρόγραµµα. Η λίστα των τυπικών (formal) παραµέτρων καθορίζει τις παραµέτρους στη δήλωση του υποπρογράµµατος.

ΚΑΝΟΝΕΣ ΛΙΣΤΑΣ ΠΑΡΑΜΕΤΡΩΝ ∆ΙΑ∆ΙΚΑΣΙΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΩΝ

Η λίστα παραµέτρων ορίζει τις τιµές που µεταβιβάζονται στο υποπρόγραµµα και τις τιµές που επιστρέφει στο κυρίως πρόγραµµα. Οι λίστες των παραµέτρων θα πρέπει να ακολουθούν

τους εξής κανόνες:

1. Η λίστα των παραµέτρων περιλαµβάνει ονόµατα µεταβλητών που ορίζουν την επικοινωνία

του υποπρογράµµατος µε το πρόγραµµα που το κάλεσε. 2. Ο αριθµός των πραγµατικών και των τυπικών παραµέτρων πρέπει να είναι ο ίδιος.

3. Κάθε πραγµατική παράµετρος αντιστοιχεί στην τυπική παράµετρο που βρίσκεται στην

αντίστοιχη θέση. Για παράδειγµα η πρώτη της λίστας των τυπικών παραµέτρων στην πρώτη της λίστας των πραγµατικών παραµέτρων κ.ο.κ.

4. Η τυπική παράµετρος και η αντίστοιχη της πραγµατική πρέπει να είναι του ίδιου τύπου.

ΧΡΗΣΗ ΤΗΣ ΣΤΟΙΒΑΣ ΣΤΗΝ ΚΛΗΣΗ ∆ΙΑ∆ΙΚΑΣΙΩΝ

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

εκτέλεση του προγράµµατος µε τις αντίστοιχες διευθύνσεις. Όταν µια διαδικασία ή

συνάρτηση καλείται από το κύριο πρόγραµµα, τότε η επόµενη διεύθυνση του κυρίως προγράµµατος (return address) αποθηκεύεται σε µια στοίβα που καλείται στοίβα χρόνου

εκτέλεσης (execution time stack). Μετά την εκτέλεση της διαδικασίας ή συνάρτησης η

διεύθυνση επιστροφής απωθείται από τη στοίβα και ο έλεγχος µεταφέρεται στο κυρίως πρόγραµµα. (Βλέπε στο σχολικό βιβλίο το Σχήµα 10.3 στη σελίδα 219)

Θέματα Θεωρίας που έχουν μπεί Να αναφέρετε ονομαστικά ποιοι είναι οι εναλλακτικοί τρόποι παρουσίασης (αναπαράστασης)

ενόςαλγορίθμου. Μον. 8

Να αναφέρετε ονομαστικά τις βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων. Μον. 8

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

Τι γνωρίζετε για τον παράλληλο προγραμματισμό; Μον. 10

Να αναφέρετε τέσσερις τυπικές επεξεργασίες που γίνονται στα στοιχεία των πινάκων. Μον. 4

Page 14: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Τι είναι συνάρτηση (σε προγραμματιστικό περιβάλλον); Μον. 4

Tι είναι διαδικασία (σε προγραμματιστικό περιβάλλον); Μον. 4

Να αναφέρετε τρία πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις συμβολικές

γλώσσες.

Να αναφέρετε δύο μειονεκτήματα της χρήσης των πινάκων. Μον.

Να αναφέρετε τέσσερα πλεονεκτήματα του τμηματικού προγραμματισμού. Μον.

Να αναπτύξετε δύο από τα παραπάνω πλεονεκτήματα του τμηματικού προγραμματισμού. Μον.6

Να αναφέρετε ονομαστικά τα κριτήρια που πρέπει απαραίτητα να ικανοποιεί ένας αλγόριθμος.

Μον. 5

Να αναφέρετε τους κανόνες που πρέπει να ακολουθούν οι λίστες των παραμέτρων κατά την

κλήση ενός υποπρογράμματος. Μον. 9

Να εξηγήσετε τι εννοούμε με τον όρο μεταφερσιμότητα των προγραμμάτων.Μονάδες 3

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

Ποιά η διαφορά μεταξύ διερμηνευτή και μεταγλωττιστή; μονάδες 6

Να αναφέρετε ονομαστικά τις κατηγορίες προβλημάτων με κριτήριο τη δυνατότητα επίλυσής τους (επιλυσιμότητα). Μον. 9

Να γράψετε σε ψευδογλώσσα (ψευδοκώδικα) τη γενική μορφή (σύνταξη) κάθε μιας από τις τρεις δομές επανάληψης. Μον. 15

Για τις απλές αριθμητικές πράξεις :α)να αναφερθούν οι αντίστοιχοι τελεστές. Μον. 2 β)να

δοθεί η σειρά προτεραιότητας (ιεραρχία) των τελεστών αυτών στις αριθμητικές εκφράσεις. Μον. 2

Ποιες είναι οι διαφορές μεταξύ μεταγλωττιστή (compiler) και διερμηνευτή (interpreter). Μον. 10

Σε ποιες στοιχειώδεις λογικές δομές στηρίζεται ο δομημένος προγραμματισμός; Μον. 3

Να αναφέρετε τέσσερα πλεονεκτήματα του δομημένου προγραμματισμού Μον. 4

Να αναπτύξετε τρία χαρακτηριστικά των υποπρογραμμάτων.Μον. 9 1.Τι καλείται αλφάβητο μιας γλώσσας;

2. Από τι αποτελείται το λεξιλόγιο μιας γλώσσας;

3 Τι είναι το συντακτικό μιας γλώσσας;

Να περιγράψετε τους τύπους δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ. Μον. 8

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

αναζήτησης.

Αναφέρατε τις ιδιότητες που πρέπει να διακρίνουν τα υποπρογράμματα. Μον. 3

Page 15: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

Να αναφέρετε ονομαστικά τις κατηγορίες στις οποίες διακρίνονται τα προβλήματα, με κριτήριο

το είδος της επίλυσης που επιζητούν αυτά. Μονάδες3

Να αναφέρετε δύο βασικές λειτουργίες επί των δομών δεδομένων που δεν μπορούν να

χρησιμοποιηθούν στους πίνακες. Να αιτιολογήσετε την απάντησή σας. Μονάδες 4

Ποια η διαφορά μεταξύ:

α. μεταβλητών και παραμέτρων; Μονάδες 3

β. τυπικών και πραγματικών παραμέτρων; Μονάδες 3

Να περιγράψετε την υλοποίηση στοίβας με τη βοήθεια μονοδιάστατου πίνακα. μονάδες 6

Δώστε τον ορισμό του αλγορίθμου. Μον. 10

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

Να αναφέρετε τους τελεστές σύγκρισης. Μον.5

Να αναφέρετε συνοπτικά τους λόγους, για τους οποίους αναθέτουμε την επίλυση ενός προβλήματος σε υπολογιστή. Μον.4

Να περιγράψετε τη «στοίβα» με ένα παράδειγμα από την καθημερινή ζωή. Μον.6

Να περιγράψετε τις κύριες λειτουργίες της «στοίβας». Μον. 4

Τι είναι δυναμική δομή δεδομένων; Μον. 3

Τι είναι στατική δομή δεδομένων; Μον. 3

Να αναφερθούν οι βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων. Μον. 8

Να αναφέρετε τα κριτήρια που πρέπει να ικανοποιεί κάθε αλγόριθμος. Μον. 5

Να περιγράψετε τους τύπους δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ. Μον. 8

Πότε ένα πρόβλημα χαρακτηρίζεται 1) ημιδομημένο, 2) ανοικτό, 3) δομημένο Μον. 6

Να αναφέρετε τους αριθμητικούς τύπους δεδομένων της «ΓΛΩΣΣΑΣ». Μον. 2

Τι είναι σταθερά και τι είναι μεταβλητή; Μον. 2

Να δώσετε από ένα παράδειγμα δήλωσης σταθεράς και δήλωσης μεταβλητής στη «ΓΛΩΣΣΑ».

Μον. 2

Να δώσετε τον ορισμό του προβλήματος. Μον. 3

Να περιγράψετε τα στάδια αντιμετώπισης ενός προβλήματος. Μον.3

Να περιγράψετε τους τύπους δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ. Μον. 8

Τι είναι οι τελεστές και ποιες είναι οι κατηγορίες των τελεστών; Μονάδες 4

Να δώσετε τον ορισμό της δομής δεδομένων. Μονάδες 3

Page 16: Συνοπτική Θεωρία ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επανάληψη Θεωρίας

Καστούμης Γιώργος

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

Μονάδες 9

Ποια είναι τα κυριότερα χρησιμοποιούμενα γεωμετρικά σχήματα σε ένα διάγραμμα ροής και τι

ενέργεια ή λειτουργία δηλώνει το καθένα; μονάδες 8

Πότε ένα πρόβλημα χαρακτηρίζεται απόφασης και πότε βελτιστοποίησης μονάδες 8