22
ΠΑΠΑΜΗΤΣΙΟΥ ΖΑΧΑΡΟΥΛΑ Σχ. Έτος 2011-2012 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Θεωρία Γ’ Λυκείου - Τεχνολογική Κατεύθυνση

θεωρίαAEPP

Tags:

Embed Size (px)

Citation preview

Page 1: θεωρίαAEPP

ΠΑΠΑΜΗΤΣΙΟΥ ΖΑΧΑΡΟΥΛΑ

. Σχ Έτος2011-2012

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝΣΕ

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

ΘεωρίαΓ’ Λυκείου - Τεχνολογική Κατεύθυνση

Page 2: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

2

Κεφάλαιο 1 ο Ορισμός Προβλήματος: Με τον όρο πρόβλημα εννοείται μια κατάσταση η οποία χρήζει

αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής.

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

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

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

Ορισμός Δεδομένων: Με τον όρο δεδομένο δηλώνεται οποιοδήποτε στοιχείο μπορεί να γίνει αντιληπτό από τουλάχιστο έναν παρατηρητή με μια από τις πέντε αισθήσεις του (σελ. 8). Τα δεδομένα (data) είναι μια αφαιρετική αναπαράσταση της πραγματικότητας και επομένως μια απλοποιημένη όψη της. Είναι ακατέργαστα γεγονότα και κάθε φορά η επιλογή τους εξαρτάται από τον τύπο του προβλήματος (σελ. 53). Τα δεδομένα αποθηκεύονται στον υπολογιστή είτε στην κύρια είτε στη δευτερεύουσα μνήμη του (σελ. 54) .

Ορισμός Πληροφορίας: Με τον όρο πληροφορία αναφέρεται οποιοδήποτε γνωσιακό στοιχείο προέρχεται από την επεξεργασία δεδομένων (σελ. 8). Η συλλογή ακατέργαστων δεδομένων και ο συσχετισμός τους δίνει ως αποτέλεσμα την πληροφορία (information). Ο αλγόριθμος είναι το μέσο για την παραγωγή της πληροφορίας από τα δεδομένα (σελ. 53).

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

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

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

Ορισμός Διαγραμματικής αναπαράστασης: η γραφική απεικόνιση της δομής ενός προβλήματος. Σύμφωνα με αυτή:

1. το αρχικό πρόβλημα αναπαρίσταται από ένα ορθογώνιο παραλληλόγραμμο

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

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

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

Παπαμήτσιου Ζαχαρούλα

Page 3: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

3

Στάδια αντιμετώπισης προβλήματος: 1. κατανόηση: σωστή και πλήρης αποσαφήνιση δεδομένων και ζητούμενων

2. ανάλυση: το αρχικό πρόβλημα διασπάται σε επιμέρους απλούστερα προβλήματα

3. επίλυση: υλοποιείται η λύση του προβλήματος μέσω της λύσης των επιμέρους προβλημάτων

Κατηγορίες Προβλημάτων:

1. με κριτήριο τη δυνατότητα επίλυσης

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

o Ανοικτά: η λύση τους δεν έχει ακόμα βρεθεί, αλλά δεν έχει αποδειχθεί ότι δεν επιδέχονται λύση

o Άλυτα: έχει αποδειχθεί ότι δεν επιδέχονται λύση

2. (τα επιλύσιμα) με κριτήριο το βαθμό δόμησης της λύσης

o Δομημένα: η επίλυση προέρχεται από μια αυτοματοποιημένη διαδικασία

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

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

3. (τα επιλύσιμα) με κριτήριο το είδος της επίλυσης (του αλγορίθμου)

o Απόφασης: η απόφαση απαντά σε ένα ερώτημα, και πιθανόν η απάντηση να είναι «Ναι» ή «Όχι». Θέλουμε να διαπιστώσουμε αν υπάρχει απάντηση που ικανοποιεί τα δεδομένα που τίθενται από το πρόβλημα

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

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

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

o Πολυπλοκότητα των υπολογισμών

o Επαναληπτικότητα των διαδικασιών

o Ταχύτητα εκτέλεσης των πράξεων

o Μεγάλο πλήθος των δεδομένων

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

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

o Σύγκριση: βασική λειτουργία για την επιτέλεση όλων των λογικών πράξεων

Παπαμήτσιου Ζαχαρούλα

Page 4: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

4

o Μεταφορά δεδομένων: προηγείται και έπεται της επεξεργασίας δεδομένων

Κεφάλαιο 2 ο - 7 ο - 8 ο Ορισμός Αλγορίθμου: Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά

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

Αλγοριθμικά Κριτήρια:

o Είσοδος: Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο (καμία τιμή: χρήση συναρτήσεων παραγωγής τυχαίων αριθμών)

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

o Καθοριστικότητα: κάθε εντολή πρέπει να καθορίζεται χωρίς αμφιβολία για τον τρόπο εκτέλεσής της.

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

o Αποτελεσματικότητα: κάθε μεμονωμένη εντολή του αλγορίθμου πρέπει να είναι απλή και εκτελέσιμη

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

o Ελεύθερο κείμενο: ανεπεξέργαστος και αδόμητος τρόπος παρουσίασης. Κίνδυνος παραβίασης κριτηρίου αποτελεσματικότητας (μη εκτέλεση αλγορίθμου)

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

o Φυσική γλώσσα κατά βήματα: κίνδυνος παραβίασης καθοριστικότητας

o Κωδικοποίηση: πρόγραμμα (ψευδογλώσσα ή γλώσσα προγραμματισμού) που όταν εκτελεστεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο

Στοιχεία Αλγορίθμων:

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

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

Παπαμήτσιου Ζαχαρούλα

Page 5: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

5

o Τελεστές: Σύμβολα των πράξεων. Διακρίνονται σε αριθμητικούς (+, -, *, /, ^, mod, div), συγκριτικούς (>, <, =, >=, <=, <>) και λογικούς (ΚΑΙ - σύζευξη, Η’ - διάζευξη, ΟΧΙ - άρνηση).

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

o Ιεραρχία πράξεων: Αριθμητικές (ύψωση σε δύναμη πολλαπλασιασμός και διαίρεση πρόσθεση και αφαίρεση) Συγκριτικές Λογικές

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

i. ΚΑΙ: η σύζευξη δύο λογικών προτάσεων είναι αληθής όταν και οι δύο λογικές προτάσεις είναι αληθείς.

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

iii. ΟΧΙ: η άρνηση μιας λογικής πρότασης είναι αληθής όταν η πρόταση είναι ψευδής.

o Συναρτήσεις: Ημίτονο: ΗΜ(Χ), Συνημίτονο: ΣΥΝ(Χ), Εφαπτομένη: ΕΦ(Χ), Τετραγωνική ρίζα: Τ_Ρ(Χ), Φυσικός Λογάριθμος: ΛΟΓ(Χ), Εκθετικό: Ε(Χ), Ακέραιο μέρος: Α_Μ(Χ), Απόλυτη τιμή: Α_Τ(Χ)

o Εντολή: Σαφής ενέργεια. Διακρίνονται σε δηλωτικές (π.χ. Αλγόριθμος) και εκτελεστέες (π.χ. Διάβασε)

Αλγοριθμικές Συνιστώσες

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

Είσοδος δεδομένων: Διάβασε λίστα_μεταβλητών Είσοδος τιμών από το πληκτρολόγιο. Η εντολή εκτελείται από αριστερά προς τα δεξιά. Μετά την εκτέλεσή της ο αλγόριθμος συνεχίζει στην επόμενη εντολή. Όταν η ροή του αλγορίθμου συναντήσει την εντολή Διάβασε η εκτέλεση σταματάει και ο αλγόριθμος περιμένει από το χρήστη να πληκτρολογήσει μία (ή περισσότερες, πάντα όμως όσες και οι μεταβλητές στη λίστα) τιμή (τιμές), η οποία (οι οποίες) θα αποθηκευτεί (αποθηκευτούν) στη (στις) μεταβλητή (αντίστοιχες μεταβλητές). Αυτό σημαίνει ότι από αυτή τη στιγμή (και μέχρι να αλλάξει με κάποιο τρόπο), στη θέση μνήμης που αντιστοιχεί στο όνομα αυτής της μεταβλητής θα βρίσκεται αποθηκευμένη η τιμή που ο χρήστης έδωσε από το πληκτρολόγιο (σελ. 156).

Εκχώρηση: ΜεταβλητήΈκφραση Γίνονται οι πράξεις στην έκφραση και το αποτέλεσμα αποδίδεται, μεταβιβάζεται, εκχωρείται στη μεταβλητή. Το βέλος δηλώνει τη φορά εκχώρησης. Δεν πρόκειται για εξίσωση. Η μεταβλητή και η έκφραση πρέπει να είναι ίδιου τύπου (σελ. 155).

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

Παπαμήτσιου Ζαχαρούλα

Page 6: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

6

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

o Επιλογή: λήψη αποφάσεων με βάση κάποια δεδομένα κριτήρια. Περιλαμβάνει τον έλεγχο κάποιας συνθήκης που μπορεί να έχει δύο τιμές (Αληθής/Ψευδής) και ακολουθεί η απόφαση εκτέλεσης κάποιας ενέργειας με βάση την τιμή της λογικής συνθήκης. Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές επιλογής (των παρακάτω μορφών) που περιέχονται η μία μέσα στην άλλη.

(1)

(2)

(1). Όταν η συνθήκη είναι αληθής εκτελούνται όλες οι εντολές και μετά εκτελείται το τέλος_αν. Αν η συνθήκη είναι ψευδής, η εκτέλεση του αλγορίθμου συνεχίζει με την εντολή που ακολουθεί μετά το τέλος_αν, και παραλείπεται η εκτέλεση των εντολές (σελ. 167).

(2). Όταν η ροή του αλγορίθμου συναντήσει την εντολή Αν, τότε γίνεται ο έλεγχος της συνθήκης. Αν η συνθήκη είναι αληθής, τότε και μόνο τότε εκτελούνται οι εντολές1. Διαφορετικά, αν δηλαδή η συνθήκη είναι ψευδής, τότε παραλείπεται η εκτέλεση των εντολές1, ο αλγόριθμος συνεχίζει με την εντολή αλλιώς, εκτελούνται οι εντολές2 και τελικά εκτελείται η εντολή τέλος_αν, και ο έλεγχος μεταφέρεται στην εντολή που ακολουθεί μετά το τέλος_αν (σελ. 168).

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

(1) (2)

(3)

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

Παπαμήτσιου Ζαχαρούλα

Αν «συνθήκη» τότε«εντολές»

τέλος_αν

Αν «συνθήκη» τότε«εντολές1»

Αλλιώς«εντολές2»

τέλος_αν

Αν «συνθήκη_1» τότε«εντολές_1»

αλλιώς_αν «συνθήκη_2» τότε «εντολές_2»

αλλιώς_αν «συνθήκη_3» τότε «εντολές_3»

...Αλλιώς

«εντολές_ν»τέλος_αν

Όσο «συνθήκη» επανάλαβε«εντολές»

τέλος_επανάληψης

Αρχή_επανάληψης«εντολές»

Μέχρις_ότου «συνθήκη»

Για «μεταβλητή» από «αρχ_τιμή» μέχρι «τελ_τιμή» με_βήμα «βήμα»«εντολές»

Τέλος_επανάληψης

Page 7: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

7

εντολή που μεταβάλει την τιμή της συνθήκη προκειμένου κάποια στιγμή η συνθήκη να γίνει ψευδής και ο βρόχος να τερματίσει (σελ. 173-175).

Παρατηρήσεις:1. είναι η γενικότερη μορφή εντολής επανάληψης2. ο αριθμός των επαναλήψεων δεν είναι γνωστός εκ των προτέρων ούτε

μπορεί να υπολογιστεί πριν την εκτέλεση του αλγορίθμου.3. είναι δυνατόν η επανάληψη να μη εκτελεστεί ποτέ, στην περίπτωση

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

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

5. χρήση τιμών τερματισμού («τιμή φρουρός»)a. προσδιορίζουν τον τρόπο τερματισμού της επανάληψης.b. Πρέπει να είναι λογικά σωστές για το πρόβλημαc. Μπορεί να επιλεγούν αυθαίρετα από τον προγραμματιστή (σε

κάποιες περιπτώσεις), αρκεί να μη παραβιάζουν την ορθότητα του αλγορίθμου.

(2). Όταν η ροή του αλγορίθμου συναντήσει την εντολή Αρχή_επανάληψης, τότε εκτελούνται οι εντολές, και στη συνέχεια εκτελείται η εντολή Μέχρις_ότου, και γίνεται ο έλεγχος της συνθήκη. Αν η συνθήκη βρεθεί ψευδής, ο έλεγχος επιστρέφει στην Αρχή_επανάληψης. Η επανάληψη συνεχίζει για όσες φορές η συνθήκη είναι ψευδής, και τερματίζει όταν γίνει αληθής. Πρέπει να φροντίζουμε ώστε μεταξύ των εντολές να υπάρχει μια εντολή που μεταβάλει την τιμή της συνθήκη προκειμένου κάποια στιγμή η συνθήκη να γίνει αληθής και ο βρόχος να τερματίσει (σελ. 175-177).

Παρατηρήσεις:1. η εντολή Αρχή_επανάληψης εκτελείται οπωσδήποτε μια φορά, αφού ο

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

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

Αρχή_επανάληψης χρησιμοποιείται όταν δεν γνωρίζουμε εκ των προτέρων το πλήθος εκτέλεσης των επαναλήψεων

4. η μεταβλητή της συνθήκη πρέπει να αλλάζει τιμή με κάποια εντολή εντός του βρόχου. Επίσης, θα πρέπει να έχει σωστή αρχική τιμή

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

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

(3). Όταν η ροή του αλγορίθμου συναντήσει την εντολή Για, τότε εκχωρεί στη μεταβλητή την τιμή αρχ_τιμή, στη συνέχεια γίνεται ο έλεγχος αν η τιμή αυτή είναι μικρότερη, μεγαλύτερη ή ίση με την τελ_τιμή, και ανάλογα είτε εκτελούνται οι εντολές, είτε δεν εκτελούνται. Με την ολοκλήρωση της εκτέλεσης των εντολών, η μεταβλητή μεταβάλει την τιμή της κατά βήμα και ξαναγίνεται ο έλεγχος της νέας αυτής τιμής σε σχέση με την τελ_τιμή. Υπάρχουν οι εξής περιπτώσεις:

α) αν βήμα=0 , τότε παραβιάζεται το κριτήριο της περατότητας και η εντολή δεν είναι αποδεκτή εντολή αλγορίθμουβ) αν αρχ_τιμή < τελ_τιμή και βήμα>0, τότε οι εντολές εκτελούνται,

Παπαμήτσιου Ζαχαρούλα

Page 8: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

8

γ) αν αρχ_τιμή > τελ_τιμή και βήμα <0, τότε οι εντολές εκτελούνται,δ) αν αρχ_τιμή = τελ_τιμή και βήμα<>0, τότε οι εντολές εκτελούνται μία μόνο φορά και ο βρόχος τερματίζει.

Η εκτέλεση των εντολών ολοκληρώνεται όταν η τιμή της αρχ_τιμή γίνει τέτοια ώστε να παραβιάζεται η σχέση της με την τελ_τιμή. Τότε εκτελείται το Τέλος_επανάληψης και ο αλγόριθμος συνεχίζει με την αμέσως επόμενη εντολή (σελ. 178-180).

Παρατηρήσεις:1. το βήμα μπορεί να παραληφθεί. Όταν παραλείπεται εννοείται βήμα=1. 2. Η εντολή για χρησιμοποιείται όταν εκ των προτέρων ξέρουμε πόσες

φορές θα εκτελεστεί η επανάληψη.3. Δεν επιτρέπεται να μεταβάλουμε την τιμή της μεταβλητή με κάποια

εντολή μέσα στο βρόχο της επανάληψης.4. Η εντολή για μπορεί να εκτελεστεί καμία (όταν αρχ_τιμή < τελ_τιμή και

βήμα<0, ή όταν αρχ_τιμή>τελ_τιμή και βήμα>0), μία (όταν αρχ_τιμή=τελ_τιμή και βήμα<>0), ή άπειρες φορές [ατέρμον βρόχος] (όταν βήμα=0).

5. Η εντολή για μπορεί πάντα να μετατραπεί στην ισοδύναμη εντολή Όσο…επανάλαβε.

6. Χρησιμοποιούμε την εντολή για για να διαχειριστούμε πίνακες.

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

Πολλαπλασιασμός αλά Ρωσικά:

Κεφάλαιο 3 ο – 9 ο Σκοπιές μελέτης των δεδομένων:

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

o Γλωσσών προγραμματισμού: τι υποστηρίζουν οι γλώσσες για την περιγραφή των δεδομένων

o Δομών δεδομένων: σύνολα δεδομένων με σύνολα λειτουργιών επί αυτώνo Ανάλυσης δεδομένων: καταγραφή και αλληλοσυσχέτιση δεδομένων ώστε

να αναπαραχθεί η γνώση για πραγματικά γεγονότα (Βάσεις δεδομένων, Μοντελοποίηση Δεδομένων, Αναπαράσταση γνώσης)

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

Λειτουργίες (Πράξεις) επί των δομών:

o Προσπέλαση: πρόσβαση σε κόμβο για να εξεταστεί/τροποποιηθεί το περιεχόμενο

o Εισαγωγή: προσθήκη νέων κόμβων σε υπάρχουσα δομή

Παπαμήτσιου Ζαχαρούλα

Page 9: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

9

o Διαγραφή: αντίστροφο της εισαγωγής. Αφαίρεση κόμβου από δομή

o Αντιγραφή: όλοι οι κόμβοι (ή μερικοί από αυτούς) αντιγράφονται σε μια άλλη δομή

o Αναζήτηση: προσπέλαση των κόμβων για να εντοπιστούν όσοι έχουν μια ιδιότητα

o Ταξινόμηση: διάταξη των κόμβων με αύξουσα ή φθίνουσα σειρά

o Συγχώνευση: δύο ή περισσότερες δομές συνενώνονται σε μία

o Διαχωρισμός: αντίστροφη πράξη της συγχώνευσης

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

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

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

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

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

Παρατηρήσεις:1. Το όνομα του πίνακα καθορίζει μια ομάδα διαδοχικών θέσεων στη μνήμη. Κάθε

συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή δείκτη (σελ. 186)

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

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

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

Μειονεκτήματα:

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

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

1. Υπολογισμός αθροίσματος στοιχείων του πίνακα2. εύρεση μεγίστου / ελαχίστου στοιχείου πίνακα

Παπαμήτσιου Ζαχαρούλα

Page 10: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

10

3. ταξινόμηση στοιχείων πίνακα4. αναζήτηση στοιχείου σε πίνακα5. συγχώνευση δυο πινάκων

Οι πίνακες χρησιμεύουν για την αποθήκευση και διαχείριση δύο δομών: της στοίβας (stack) και της ουράς (queue).

Δομή Στοίβας: μια στοίβα μπορεί να υλοποιηθεί με τη βοήθεια ενός μονοδιάστατου πίνακα. Μια βοηθητική μεταβλητή (με όνομα συνήθως top) χρησιμοποιείται για να δείχνει το στοιχείο που έχει τοποθετηθεί τελευταίο στην κορυφή της στοίβας. Για την εισαγωγή νέου στοιχείου στη στοίβα (ώθηση-push), αρκεί να αυξηθεί η μεταβλητή top κατά ένα και στη θέση αυτή να εισέλθει το στοιχείο. Αντίθετα, για την εξαγωγή στοιχείου από τη στοίβα (απώθηση-pop) εξέρχεται πρώτα το στοιχείο που δείχνει η μεταβλητή top και στη συνέχεια η top μειώνεται κατά ένα για να δείχνει τη νέα κορυφή. Τα δεδομένα που βρίσκονται στην κορυφή της στοίβας λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος της στοίβας λαμβάνονται τελευταία. Αυτή η μέθοδος επεξεργασίας ονομάζεται πρώτο μέσα, τελευταίο έξω (Last In First Out- LIFO). Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει αν η στοίβα είναι γεμάτη (υπερχείλιση-overflow). Αντίθετα, η διαδικασία της απώθησης πρέπει να ελέγχει αν υπάρχει τουλάχιστο ένα στοιχείο στη στοίβα, δηλαδή αν γίνεται υποχείλιση (underflow).

Δομή Ουράς: μια ουρά μπορεί να υλοποιηθεί με τη βοήθεια ενός μονοδιάστατου πίνακα. Στην περίπτωση της ουράς απαιτούνται δύο δείκτες: ο εμπρός (front) και ο πίσω (rear), οι οποίοι δείχνουν τη θέση του στοιχείου που πρόκειται να εξαχθεί και τη θέση του στοιχείου που μόλις εισήλθε αντίστοιχα. Για την εισαγωγή ενός στοιχείου στο πίσω άκρο της ουράς (enqueue) αυξάνεται ο δείκτης rear κατά ένα και στη θέση αυτή αποθηκεύεται το στοιχείο. Αντίστοιχα για τη λειτουργία της εξαγωγής ενός στοιχείου από το εμπρός άκρο της ουράς (dequeue), εξέρχεται το στοιχείο που δείχνει ο δείκτης front, ο οποίος στη συνέχεια αυξάνεται κατά ένα, για να δείχνει το επόμενο στοιχείο που πρόκειται να εξαχθεί. Η μέθοδος επεξεργασίας στην ουρά ονομάζεται Πρώτο μέσα, πρώτο έξω (First In First Out- FIFO), γιατί το στοιχείο που εισέρχεται πρώτο, εξέρχεται και πρώτο. Σε κάθε περίπτωση πρέπει να γίνεται έλεγχος αν υπάρχει ελεύθερος χώρος στον πίνακα για την εισαγωγή και αν υπάρχει τουλάχιστο ένα στοιχείο για την εξαγωγή.

Σειριακή (Γραμμική) Αναζήτηση: η πιο απλή, αλλά και η λιγότερο αποτελεσματική μέθοδος αναζήτησης. Δικαιολογείται σε περιπτώσεις που: α) ο πίνακας είναι μη ταξινομημένος, β) ο πίνακας είναι μικρού μεγέθους, γ) η αναζήτηση στον πίνακα γίνεται σπάνια.

Ορισμός Ταξινόμησης: Δοθέντων των στοιχείων α1, α2, …, αν η ταξινόμηση συνίσταται στη μετάθεση της θέσης των στοιχείων, ώστε να τοποθετηθούν με μια σειρά α κ1, ακ2, …ακν, έτσι ώστε δοθείσης μιας συνάρτησης διάταξης f, να ισχύει f(ακ1)<=f(ακ2)<=…<=f(ακν)

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

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

Κεφάλαιο 6 ο

Παπαμήτσιου Ζαχαρούλα

Page 11: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

11

Η έννοια του προβλήματος: Πρόγραμμα = Δεδομένα + Αλγόριθμοι

Ακριβής προσδιορισμός προβλήματοςo Καταγραφή πληροφοριώνo Ιδιαιτερότητεςo Συνθήκες/ προϋποθέσεις

Ανάπτυξη αλγορίθμου Υλοποίηση σε γλώσσα προγραμματισμού Πρόγραμμα = Διατύπωση αλγορίθμου σε κατανοητή μορφή από τον υπολογιστή (δηλ. σε

δυαδικό σύστημα) Ο άνθρωπος επικοινωνεί με τον Η/Υ μέσω προγραμμάτων

Γλώσσες Μηχανής: Ακολουθίες από 0 και 1 που εκτελούνται από τον υπολογιστή / στοιχειώδεις εντολές προς τον επεξεργαστή. Χρησιμοποιήθηκε στους πρώτους υπολογιστές ενώ σήμερα παράγεται από τις γλώσσες υψηλού επιπέδου

o Επίπονη διαδικασία γιατί:

Εξάρτηση από τη μηχανή/ διαφορετική για κάθε υπολογιστή

Απαιτεί βαθιά γνώση του υλικού

Μη μεταφερσιμότητα προγραμμάτων

Συνεχής αναδιάρθρωση του υπολογιστή

Συμβολικές γλώσσες: Γλώσσα χαμηλού επιπέδου που αποτελείται από συμβολικές λέξεις κατανοητές από τον άνθρωπο (π.χ. ADD, LDA, κλπ). Στενά συνδεδεμένες με την αρχιτεκτονική υπολογιστή. Μεταφράζεται από τον υπολογιστή σε μια ακολουθία δυαδικών ψηφίων. Παράγει αυτόματα γλώσσα μηχανής αφού διαθέτει συμβολομεταφραστή (assembler). Μακροσκελή προγράμματα

Γλώσσες υψηλού επιπέδου: Αποτελούνται από κατανοητές εντολές συνήθως στην αγγλική γλώσσα (π.χ.PRINT, INPUT κλπ). Είναι ίδιες για κάθε υπολογιστή που διαθέτει μεταγλωττιστή ή διερμηνευτή της συγκεκριμένης γλώσσας (FORTRAN, COBOL, BASIC, PASCAL, κλπ). Είναι εύκολες στη χρήση και δεν απαιτούν βαθιά γνώση του υλικού του υπολογιστή. Παράγουν αυτόματα γλώσσα μηχανής

FORTRAN: 1η γλώσσα υψηλού επιπέδου (1960). Μετάφραση στις ακολουθίες εντολών της γλώσσας μηχανής με τη βοήθεια μεταγλωττιστή-compiler(επιτρέπει την εκτέλεση του ίδιου προγράμματος σε άλλους υπολογιστέςανεξαρτησία από τη μηχανή). Επίλυση μαθηματικών και επιστημονικών προβλημάτων. Αδυναμία να διαχειριστεί αρχεία. Συνεχείς βελτιώσεις, αλλά πια δεν χρησιμοποιείται

COBOL-ALGOL: COBOL: αναπτύχθηκε για ανάπτυξη εμπορικών/ διαχειριστικών εφαρμογών. ρησιμοποιείται ακόμα και σήμερα. ALGOL: αναπτύχθηκε για να ενοποιήσει την FORTRAN με την COBOL. Χρησιμοποιείται για γενικά προγράμματα ανεξάρτητα από συγκεκριμένες εφαρμογές.

LISP-PROLOG: Είναι γλώσσες τεχνητής νοημοσύνης κι όχι αλγοριθμικές. LISP: είναι βασισμένη στη δομή δεδομένων της λίστας και σε συναρτήσεις μεταξύ λιστών. PROLOG: είναι μία λογική γλώσσα πολύ υψηλού επιπέδου. Μη διαδικαστικός προγραμματισμός

BASIC: Δημιουργήθηκε για εκπαιδευτικούς σκοπούς. Χρησιμοποιεί διερμηνευτή εντολών-interpreter. Εξελίχθηκε στην QBasic και τη VisualBasicπρότυπο για την ανάπτυξη εφαρμογών σε προσωπικούς υπολογιστές.

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

Παπαμήτσιου Ζαχαρούλα

Page 12: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

12

αλγοριθμικής γλώσσας. Δημιουργεί δομημένα προγράμματα κάθε τύπου(εύκολα στη συγγραφή και τη διόρθωση). Παράγει αυτόματα γλώσσα μηχανής αφού διαθέτει μεταγλωττιστή (compiler). Αποτέλεσε βάση για ανάπτυξη άλλων δομημένων γλωσσών όπως οι ADA, DELPHI, κλπ

C-C++: C: χρησιμοποιήθηκε για την ανάπτυξη του UNIX. Δομημένες εφαρμογές και δυνατότητες χαμηλού επιπέδου. Πλούσια συλλογή τύπων και τελεστών. Εξελίχθηκε στη C++. C++: γλώσσα αντικειμενοστραφούς προγραμματισμού.

JAVA: Είναι μία νέα αντικειμενοστραφής γλώσσα υψηλού επιπέδου. Χρησιμοποιείται ευρύτατα για ανάπτυξη εφαρμογών στο διαδίκτυο (internet). Είναι αποδοτική σε κατανεμημένα περιβάλλοντα. Σήμερα εξαπλώνεται με ιδιαίτερα ταχείς ρυθμούς

Οπτικός Προγραμματισμός: Δημιουργία ολόκληρου του περιβάλλοντος της εφαρμογής με τη χρήση γραφικών (π.χ. Πλαίσια διαλόγου, μενού). Εκμεταλλευόμαστε τον παραθυρικό τρόπο επικοινωνίας μεταξύ ανθρώπου και υπολογιστή (WINDOWS). Παραδείγματα γλωσσών: Visual Basic, Visual C++, κ.α.

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

Πλεονεκτήματα γλωσσών υψηλού επιπέδου

o Φυσικός τρόπος έκφρασης

o Ανεξαρτησία από τύπο υπολογιστή-μεταφερσιμότητα

o Ευκολία εκμάθησης

o Εύκολη διόρθωση λαθών και συντήρηση προγραμμάτων

Γλώσσες 4ης γενιάς: Απαλλάσσουν το χρήστη τους από προγραμματιστικές λεπτομέρειες, αλλά απευθύνονται μόνο σε προγραμματιστές. Υποβολή επερωτήσεων προς το σύστημα. Χρησιμοποιούνται για ειδικές εφαρμογές ή ως γλώσσες ερωτήσεων σε βάσεις δεδομένων (π.χ. SQL). Πολλές γλώσσες τεχνητής νοημοσύνης (π.χ. PROLOG) θεωρούνται γλώσσες 4ης γενιάς

Ταξινόμηση Γλωσσών ανάλογα με το Επίπεδο Προγραμματισμού

• Πολύ χαμηλού επιπέδου ή 1ης γενιάς είναι οι γλώσσες μηχανής• Χαμηλού επιπέδου ή 2ης γενιάς είναι οι συμβολικές γλώσσες (assembly)• Υψηλού επιπέδου ή 3ης γενιάς είναι οι FORTRAN, COBOL, BASIC, PASCAL, C, C++, JAVA,

κλπ• Πολύ υψηλού επιπέδου ή 4ης γενιάς είναι οι SQL, PROLOG, κλπ

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

• Αλγοριθμικές ή διαδικασιακές (procedural) όπως FORTRAN, COBOL, ALGOL, PASCAL, BASIC κλπ

• Μη διαδικαστικές (non procedural) ή λογικές όπως η PROLOG• Αντικειμενοστραφείς (object – oriented) όπως SMALLTALK, C++, JAVA, κλπ• Οπτικές (visual) όπως VISUAL BASIC, VISUAL C, VISUAL C++, κλπ• Συναρτησιακές (functional) όπως η LISP• Ερωταπαντήσεων (query languages) όπως η SQL

Ταξινόμηση Γλωσσών ανάλογα με τη Χρήση

• Γενικής χρήσης όπως PASCAL, BASIC κλπ– Επιστημονικής κατεύθυνσης π.χ. FORTRAN– Εμπορικής κατεύθυνσης π.χ. COBOL

Παπαμήτσιου Ζαχαρούλα

Page 13: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

13

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

δεδομένων, κλπ)Καμία γλώσσα δεν υπερέχει από όλες τις άλλες

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

Αλφάβητο: το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα

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

Γραμματική: αποτελείται από το τυπικό ή τυπολογικό και το συντακτικό.

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

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

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

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

Τεχνικές Σχεδίασης Προγραμμάτων:

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

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

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

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

o Δημιουργία απλούστερων προγραμμάτων

o Άμεση μεταφορά των αλγορίθμων σε προγράμματα

o Διευκόλυνση της ανάλυσης του προγράμματος σε τμήματα

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

o Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος

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

Παπαμήτσιου Ζαχαρούλα

Page 14: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

14

Προγραμματιστικά Περιβάλλοντα:

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

Μεταγλωττιστής: δέχεται στην είσοδο ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής. Το τελευταίο μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή και είναι τελείως ανεξάρτητο από το αρχικό πρόγραμμα. Το αρχικό πρόγραμμα λέγεται πηγαίο, ενώ το πρόγραμμα που παράγει ο μεταγλωττιστής λέγεται αντικείμενο πρόγραμμα. Το αντικείμενο πρόγραμμα δεν είναι σε θέση να εκτελεστεί. Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα προγράμματος (βιβλιοθήκες). Το πρόγραμμα που επιτρέπει αυτή τη σύνδεση ονομάζεται συνδέτης-φορτωτής. Το αποτέλεσμα είναι η παραγωγή του εκτελέσιμου προγράμματος. Γι’ αυτό η συνολική διαδικασία αποκαλείται μεταγλώττιση και σύνδεση.

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

Κατηγορίες λαθών: λογικά και συντακτικά.

Λογικά λάθη: εμφανίζονται κατά την εκτέλεση. Σφάλματα κατά την υλοποίηση του αλγορίθμου

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

Κεφάλαιο 10 ο Ορισμός Τμηματικού προγραμματισμού: τμηματικός προγραμματισμός ονομάζεται η τεχνική

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

Ορισμός Υποπρογράμματος: όταν ένα τμήμα προγράμματος επιτελεί αυτόνομο έργο και έχει γραφτεί χωριστά από το υπόλοιπο πρόγραμμα, τότε αναφερόμαστε σε υποπρόγραμμα.

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

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

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

o Κάθε υποπρόγραμμα πρέπει να μη είναι πολύ μεγάλο: γενικά κάθε υποπρόγραμμα θα πρέπει να εκτελεί μόνο μια λειτουργία.

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

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

Παπαμήτσιου Ζαχαρούλα

Page 15: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

15

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

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

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

Τα υποπρογράμματα ενεργοποιούνται από κάποιο άλλο πρόγραμμα ή υποπρόγραμμα, το οποίο ονομάζεται κύριο.

Ορισμός Παραμέτρου: Μια παράμετρος είναι μια μεταβλητή που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο.

Είδη υποπρογραμμάτων:

Διαδικασίες: είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος (εισαγωγή δεδομένων, εκτέλεση πράξεων, μεταβολή τιμών μεταβλητών, εκτύπωση-έξοδο αποτελεσμάτων). Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ. Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές μεταβιβάζονται προς τη διαδικασία κατά την κλήση ή/και επιστρέφονται στο κυρίως πρόγραμμα μετά το τέλος της διαδικασίας. Χρησιμοποιούν τις παραμέτρους για να μεταβιβάζουν τιμές από και προς το πρόγραμμα που τις κάλεσε. Οι διαδικασίες καλούνται από το κυρίως πρόγραμμα με την εντολή ΚΑΛΕΣΕ, που ακολουθείται από το όνομα της διαδικασίας συνοδευόμενο μέσα σε παρενθέσεις με τη λίστα παραμέτρων. Η εκτέλεση του προγράμματος διακόπτεται και εκτελούνται οι εντολές της διαδικασίας που καλείται. Μετά το τέλος της διαδικασίας, η εκτέλεση του προγράμματος συνεχίζει από την εντολή που ακολουθεί. Η λίστα παραμέτρων δεν είναι υποχρεωτική. Στη γενική περίπτωση μπορεί να υπάρχουν καμία, μία ή περισσότερες παράμετροι. Όταν υπάρχουν πολλές παράμετροι, τότε άλλες χρησιμοποιούνται για να μεταβιβάσουν τιμές στη διαδικασία και άλλες για να επιστρέψουν τιμές στο κύριο πρόγραμμα.

Συναρτήσεις: είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μια τιμή με το όνομά της (όπως και οι μαθηματικές συναρτήσεις). Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ. Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές μεταβιβάζονται στη συνάρτηση κατά την κλήση. Οι συναρτήσεις μπορούν να επιστρέφουν τιμές όλων των τύπων δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ. Στις εντολές της συνάρτησης θα πρέπει να υπάρχει μια εντολή εκχώρησης τιμής σε μεταβλητή που έχει το όνομα της συνάρτησης. Κάθε συνάρτηση εκτελείται όπως ακριβώς οι ενσωματωμένες συναρτήσεις της γλώσσας (τετραγωνική ρίζα, ημίτονο, συνημίτονο, κλπ.). Απλώς αναφέρεται το όνομά της σε μια έκφραση ή σε μια εντολή εκχώρησης και επιστρέφεται η τιμής της. Το κυρίως πρόγραμμα «γνωρίζει» τις τιμές των μεταβλητών της λίστας_παραμέτρων και κατά την κλήση τις μεταβιβάζει στις αντίστοιχες μεταβλητές της συνάρτησης. Η συνάρτηση υπολογίζει την τιμή και την εκχωρεί στο όνομα

Παπαμήτσιου Ζαχαρούλα

Page 16: θεωρίαAEPP

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Σχ. Έτος 2011-2012

16

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

Πραγματικές και τυπικές παράμετροι:

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

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

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

Κανόνες:

o ο αριθμός των πραγματικών και τυπικών παραμέτρων πρέπει να είναι ίδιος

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

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

Στοίβα χρόνου εκτέλεσης: Όταν μια διαδικασία ή συνάρτηση καλείται από το κύριο πρόγραμμα, τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος –διεύθυνση επιστροφής- αποθηκεύεται από το μεταφραστή σε μια στοίβα-στοίβα χρόνου εκτέλεσης. Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση επιστροφής απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κυρίως πρόγραμμα. Η τεχνική αυτή εφαρμόζεται γενικότερα κατά την κλήση υποπρογραμμάτων από το κυρίως πρόγραμμα ή από άλλα υποπρογράμματα.

Παπαμήτσιου Ζαχαρούλα