Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
Επαναληπτικό Μάθημα ΑΕΠΠ
2
1ο Κεφάλαιο Τι είναι πρόβλημα.
Παράγοντες από τους οποίους εξαρτάται η κατανόηση ενός προβλήματος. Χώρος προβλήματος. Δομή προβλήματος. Ορισμοί: Δεδομένο, Επεξεργασία δεδομένων, Πληροφορία Πρόβλημα και υπολογιστής (Λόγοι ανάθεσης προβλήματος σε ΗΥ, λειτουργίες που μπορεί επιτελεί ένας ΗΥ). Κατηγορίες προβλημάτων με βάση τη δυνατότητα επίλυσης, το βαθμό δόμησης, το είδος επίλυσης και παραδείγματα). Καθορισμός απαιτήσεων. Στάδια αντιμετώπισης προβλήματος.
3
Ορισμοί: Δεδομένο, Επεξεργασία δεδομένων, Πληροφορία
Δεδομένο αποτελεί οποιοδήποτε στοιχείο μπορεί να γίνει αντιληπτό με μια από τις πέντε αισθήσεις του παρατηρητή, στον οποίο διατυπώνεται το πρόβλημα. Είναι δηλ. οποιοδήποτε στοιχείο μπορεί να εξαχθεί από τη διατύπωση του προβλήματος. Επεξεργασία δεδομένων είναι η διαδικασία κατά την οποία ένας “μηχανισμός” δέχεται τα δεδομένα, τα επεξεργάζεται σύμφωνα με έναν προκαθορισμένο τρόπο και αποδίδει πληροφορίες. Ο όρος πληροφορία αναφέρεται σε οποιοδήποτε στοιχείο προέρχεται από τη διαδικασία επεξεργασίας των δεδομένων. Δηλ. είναι το αποτέλεσμα της επεξεργασίας δεδομένων.
4
Ποιοι είναι οι μηχανισμοί επεξεργασίας δεδομένων
Ανθρώπινος εγκέφαλος. Υπολογιστής.
5
Δομή προβλήματος Με τον όρο δομή προβλήματος αναφερόμαστε στα συστατικά του μέρη, δηλ. στα επιμέρους τμήματα (υποπροβλήματα) που το αποτελούν καθώς και στον τρόπο που αυτά συνδέονται μεταξύ τους. Η καταγραφή της δομής ενός προβλήματος σημαίνει αυτόματα ότι έχει αρχίσει η διαδικασία ανάλυσης ενός προβλήματος σε άλλα απλούστερα. Τα πλεονεκτήματα της ανάλυσης του προβλήματος σε υποπροβλήματα, δηλ. της εύρεσης της δομής του είναι: 1. Η δυσκολία αντιμετώπισης του προβλήματος ελαττώνεται όσο προχωρά η ανάλυσή του σε απλούστερα υποπροβλήματα. 2. Ο κατακερματισμός ενός προβλήματος σε απλούστερα προβλήματα, ενεργοποιεί και οξύνει τη σκέψη και την αναλυτική ικανότητα του ατόμου. Ένα πρόβλημα μπορεί να αναπαρασταθεί (περιγραφεί) με δυο τρόπους: 1. Φραστικά, όπου καθένα από τα υποπροβλήματα, περιγράφεται με λόγια. 2. Διαγραμματικά (διαγραμματική αναπαράσταση), όπου τα υποπροβλήματα αναπαριστώνται γραφικά ως ορθογώνια παραλληλόγραμμα.
6
Διαγραμματική Αναπαράσταση προβλήματος (κανόνες)
Η διαγραμματική αναπαράσταση προσφέρει μια απτή απεικόνιση της δομής του προβλήματος. Η δημιουργία του σχετικού διαγράμματος βοηθάει τόσο στην καλύτερη κατανόηση του ίδιου του προβλήματος, όσο και στη σχεδίαση της λύσης του. Σύμφωνα με τη διαγραμματική αναπαράσταση: 1. Το αρχικό πρόβλημα αναπαρίσταται ως ένα ορθογώνιο παραλληλόγραμμο. 2. Τα επιμέρους προβλήματα αναπαρίστανται επίσης ως ορθογώνια παραλληλόγραμμα. 3. Τα παραλληλόγραμμα που αντιστοιχούν στα υποπροβλήματα σχηματίζονται ένα επίπεδο χαμηλότερα από το πρόβλημα που αναπαριστούν. Έτσι σε κάθε κατώτερο επίπεδο, δημιουργείται η γραφική αναπαράσταση των προβλημάτων στα οποία αναλύονται τα προβλήματα του αμέσως ψηλότερου επιπέδου.
7
Ποια είναι τα στάδια αντιμετώπισης ενός προβλήματος
Κατανόηση: γίνεται καθορισμός των απαιτήσεων του προβλήματος, δηλ. απόσαφήνιση των δεδομένων και καταγραφή των ζητουμένων. Ανάλυση: το αρχικό πρόβλημα διασπάται σε επιμέρους απλούστερα προβλήματα, βρίσκουμε δηλ. τη δομή του προβλήματος. Επίλυση: υλοποιείται η λύση του προβλήματος, μέσω της επίλυσης των επιμέρους προβλημάτων.
8
Κατηγορίες Προβλημάτων
Με κριτήριο τη δυνατότητα επίλυσης Επιλύσιμα, π.χ υπολογισμός εμβαδού κύκλου. Άλυτα, π.χ. τετραγωνισμός κύκλου. Ανοικτά, π.χ. το πρόβλημα της ενοποίησης των τεσσάρων πεδίων δυνάμεων. Με κριτήριο το βαθμό δόμησης των λύσεών τους: Δομημένα, π.χ. επίλυση δευτεροβάθμιας εξίσωσης. Ημιδομημένα, π.χ το μέσο μετακίνησης από μια πόλη σε μια άλλη. Αδόμητα, π.χ. επιλογή του τόπου, χρόνου και τρόπου ενός πάρτι. Πρωτεύοντα ρόλο στην επίλυση αυτού του τύπου προβλημάτων κατέχει η ανθρώπινη διαίσθηση. Με κριτήριο το είδος επίλυσης: Απόφασης, π.χ. δίνεται ο αριθμός Ν και ζητείται να απαντηθεί αν ο αριθμός αυτός είναι άρτιος. Αυτό που θέλουμε να διαπιστώσουμε σε ένα πρόβλημα απόφασης είναι αν υπάρχει απάντηση που ικανοποιεί τα δεδομένα του προβλήματος. Υπολογιστικά , π.χ δίνονται κάποιοι αριθμοί και ζητείται να υπολογιστεί ο μέσος όρος τους. Σε ένα υπολογιστικό πρόβλημα ζητάμε να βρούμε την τιμή της απάντησης που ικανοποιεί τα δεδομένα του προβλήματος. Βελτιστοποίησης. Σε ένα πρόβλημα βελτιστοποίησης αναζητούμε την απάντηση που ικανοποιεί κατά τον καλύτερο τρόπο τα δεδομένα του προβλήματος (π.χ. το πρόβλημα της εύρεσης της συντομότερης διαδρομής μεταξύ δυο πόλεων)
9
Λειτουργίες που μπορεί να εκτελεί ο υπολογιστής
Πρόσθεση Σύγκριση Μεταφορά δεδομένων
10
2ο, 7ο, 8ο Κεφάλαιο Αλγόριθμος Κριτήρια αλγορίθμων.
Σπουδαιότητα αλγορίθμων (σκοπιές μελέτης αλγορίθμων). Τρόποι αναπαράστασης αλγορίθμων. Αλγοριθμικές δομές (ή αλλιώς συνιστώσες ή εντολές αλγορίθμου) + Τα διαγράμματα ροής τους. Μετατροπή από μια αλγοριθμική δομή σε άλλη. Ορισμός της ολίσθησης. Αλγόριθμος πολλαπλασιασμού αλά Ρωσικά. Έτοιμες συναρτήσεις που μπορούμε να χρησιμοποιήσουμε (Παράγραφος 7.6). Κανόνες για τη χρήση των εμφωλευμένων βρόχων. Τύποι δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ Ιεραρχία τελεστών Η έννοια του αλγορίθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής.
11
Κριτήρια αλγορίθμων Είσοδος: Κάθε αλγόριθμος πρέπει να έχει καμία, μία ή περισσότερες τιμές δεδομένων ως είσοδο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών. Έξοδος: Ο αλγόριθμος πρέπει να παράγει τουλάχιστον ένα αποτέλεσμα, είτε προς τον χρήστη είτε προς έναν άλλο αλγόριθμο. Καθοριστικότητα: Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. Για παράδειγμα, μια εντολή διαίρεσης πρέπει να θεωρεί και την περίπτωση, όπου ο διαιρέτης λαμβάνει μηδενική τιμή. Περατότητα: Ο αλγόριθμος πρέπει να τερματίζει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Μια διαδικασία που δεν τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται απλά υπολογιστική διαδικασία. Αποτελεσματικότητα: κάθε εντολή του αλγορίθμου να είναι απλή, κατανοητή και εκτελέσιμη.
12
Σπουδαιότητα αλγορίθμων (σκοπιές μελέτης)
Υλικού (hardware): Η ταχύτητα εκτέλεσης (ολοκλήρωσης) ενός αλγορίθμου εξαρτάτα από την αρχιτεκτονική (δηλαδή ανάλογα με το αν ο υπολογιστής έχει κρυφή μνήμη και πόση, ανάλογα με την ταχύτητα της κύριας και δευτερεύουσας μνήμης κοκ.) και την ταχύτητα του υπολογιστή που εκτελείται. Γλωσσών Προγραμματισμού (programming languages): Η γλώσσα προγραμματισμού και οι δυνατότητες που προσφέρει επηρεάζει τη δομή και τον αριθμό των εντολών του αλγορίθμου. Για παράδειγμα οι γλώσσες χαμηλού επιπέδου (π.χ. C) είναι ταχύτερες από τις γλώσσες υψηλού επιπέδου (π.χ. Pascal). Επίσης σημειώνεται ότι διαφορές συναντώνται μεταξύ των γλωσσών σε σχέση με το πότε εμφανίσθηκαν. Θεωρητική (theoretical): Ελέγχεται αν πράγματι υπάρχει κάποιος αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος. Η προσέγγιση αυτή είναι ιδιαίτερα σημαντική, γιατί προσδιορίζει τα όρια λύσης που θα βρεθεί σε σχέση με ένα συγκεκριμένο πρόβλημα. Αναλυτική (analytical): Μελετώνται οι υπολογιστικοί πόροι (computer resources) που απαιτούνται για την εκτέλεση ενός αλγορίθμου, όπως για παράδειγμα το μέγεθος της κύριας και της δευτερεύουσας μνήμης, ο χρόνος για λειτουργίες επεξεργαστή (CPU) και για λειτουργίες εισόδου / εξόδου κλπ.
13
Σπουδαιότητα αλγορίθμων (σκοπιές μελέτης)
Σκοπιά Υλικού – Τεχνολογίες υλικού, αρχιτεκτονική. Σκοπιά Γλωσσών Προγραμματισμού – δομή αλγορίθμου, αριθμός εντολών. Θεωρητική – υπάρχει ή όχι αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος; Όρια λύσης. Αναλυτική – Υπολογιστικοί πόροι
14
Τρόποι περιγραφής/αναπαράστασης αλγορίθμων
Με ελεύθερο κείμενο, κίνδυνος παραβίασης κριτηρίου της αποτελεσματικότητας. Με διαγραμματίκές τεχνικές (η πιο γνωστή ίσως διαγραμματική τεχνική, είναι το διάγραμμα ροής). Ποια είναι η λειτουργία των κυριότερων σχημάτων; Με φυσική γλώσσα κατά βήματα, κίνδυνος παραβίασης του κριτηρίου της καθοριστικότητας των αλγορίθμων. Με κωδικοποίηση, δηλαδή με ένα πρόγραμμα γραμμένο, είτε σε ψευδογλώσσα είτε σε κάποιο προγραμματιστικό περιβάλλον που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο. Ο πιο καλά δομημένος τρόπος είναι η κωδικοποίηση, γιατί οι εντολές είναι σαφώς καθορισμένες και μπορεί να εκτελεσθούν άμεσα από τον υπολογιστή αν είναι γραμμένες σε γλώσσα προγραμματισμού.
15
Συνιστώσες ή εντολές αλγορίθμου
Δομή ακολουθίας Δομή επιλογής Δομή επανάληψης Παρατηρήσεις: Διάβασε = Εκτελεστέα εντολή Αλγόριθμος = Δηλωτική εντολή
16
Μεταβλητές - Σταθερές Ανάλογα με το είδος των τιμών που παίρνουν οι μεταβλητές και οι σταθερές διακρίνονται στους εξής τύπους: Αριθμητικές: Περιέχουν μόνο αριθμούς, τα σύμβολα +, - και την . για την υποδιαστολή. Διακρίνονται περαιτέρω σε Ακέραιες και Πραγματικές. Αλφαριθμητικές: Περιέχουν συνδυασμό γραμμάτων, αριθμών, κενών και συμβόλων. Στον προγραμματισμό ο τύπος αυτός των μεταβλητών / σταθερών αναφέρεται ως «ΧΑΡΑΚΤΗΡΕΣ». Λογικές: Παίρνουν μια από 2 προκαθορισμένες τιμές: Αληθής (true) ή Ψευδής (false).
17
Τελεστές Αριθμητικοί (+, -, *, /, ^, DIV, MOD)
Συγκριτικοί (=, <, >, <=, >=, <> (μη ίσο)) Λογικοί (και, ή, όχι) Προτεραιότητα των τελεστών: Αριθμητικοί > Συγκριτικοί > Λογικοί Παρατήρηση: Η σύγκριση αλφαριθμητικών τιμών στηρίζεται στην αλφαβητική σειρά, π.χ. το ‘α’ θεωρείται μικρότερο από το ‘β’. Συναρτήσεις που χρησιμοποιούνται στη ΓΛΩΣΣΑ για την εκτέλεση των αντίστοιχων πράξεων: ΗΜ(χ), ΣΥΝ(χ), ΕΦ(χ), Τ_Ρ(χ), ΛΟΓ(χ), Ε(Χ), Α_Μ(χ), Α_Τ(χ)
18
Τύποι Δεδομένων που υποστηρίζει η ΓΛΩΣΣΑ
Ακέραιος Πραγματικός Χαρακτήρας Λογικός Παρατήρηση: Το εύρος τιμών των ακέραιων τιμών είναι μικρότερο ή ίσο με το εύρος τιμών των πραγματικών τιμών
19
Δομή επιλογής Συνθήκη = Λογική έκφραση
Όχι (χ>0 ΚΑΙ χ<5) είναι ισοδύναμη με την έκφραση χ<=0 ΄Η χ>=5, όπως επίσης με την έκφραση ‘’η τιμή να μην είναι μεγαλύτερη του 0 και μικρότερη του 5’’. Απλή επιλογή Σύνθετη επιλογή Πολλαπλή επιλογή
20
Απλή επιλογή (Αν…τότε…Τέλος_αν)
Επεξήγηση: Ελέγχεται η συνθήκη και αν είναι αληθής (αν ισχύει), εκτελείται η ομάδα εντολών που περιέχεται μεταξύ της δεσμευμένης λέξης τότε και της Τέλος_αν. Αφού τελειώσει η εκτέλεση αυτής της ομάδας εντολών, η εκτέλεση του αλγορίθμου συνεχίζεται από την εντολή που ακολουθεί το Τέλος_αν. Στην περίπτωση που η συνθήκη δεν ισχύει (είναι ψευδής) τότε παρακάμπτεται η ομάδα εντολών (μεταξύ τότε και Τέλος_αν) και η εκτέλεση του αλγορίθμου συνεχίζεται από την εντολή που ακολουθεί το Τέλος_αν.
21
Σύνθετη επιλογή (Αν..Τότε..Αλλιώς)
Επεξήγηση: Ελέγχεται η συνθήκη και αν είναι αληθής (αν ισχύει), εκτελείται η ομάδα εντολών 1 που περιέχεται μεταξύ της δεσμευμένης λέξης τότε και της Αλλιώς. Αφού τελειώσει η εκτέλεση αυτής της ομάδας εντολών, η εκτέλεση του αλγορίθμου συνεχίζεται από την εντολή που ακολουθεί το Τέλος_αν. Στην περίπτωση που η συνθήκη δεν ισχύει (είναι ψευδής) τότε εκτελείται η ομάδα εντολών 2 (μεταξύ Αλλιώς και Τέλος_αν) και η εκτέλεση του αλγορίθμου συνεχίζεται από την εντολή που ακολουθεί το Τέλος_αν.
22
Πολλαπλή επιλογή (Αν…τότε…αλλιώς_αν)
23
Πολλαπλή επιλογή (Επίλεξε)
Παρατηρήσεις: Μόνο ένας συγκριτικός τελεστής μπορεί να χρησιμοποιηθεί σε μια συνθήκη. Δεν μπορεί να υπάρχουν λογικοί τελεστές, εκτός και αν έχουμε τον τελεστή ‘’ή’’ με ισότητες (π.χ. αν θέλουμε να περιγράψουμε χ=5 ή χ=7 ), οπότε έχουμε διακριτές τιμές χωρισμένες με ‘’,’’ (για το παράδειγμα Περίπτωση 5, 7).
24
Εμφωλευμένα Αν Αν (βάρος < 80 ) και (ύψος > 1.70) τότε
Εμφωλευμένα Αν (εμφωλευμένη επιλογή) ονομάζονται δυο ή περισσότερες εντολές της μορφής Αν…τότε…Αλλιώς που περιέχονται η μια μέσα στην άλλη. Οι εμφωλευμένες δομές επιλογής συνήθως μπορούν να αποδοθούν με την πολλαπλή επιλογή και κατάλληλο συνδυασμό των λογικών τελεστών. Αν βάρος < 80 τότε Αν ύψος > 1.70 τότε Εμφάνισε “Μπορεί να συμμετάσχει στον διαγωνισμό” Αλλιώς Εμφάνισε “Δεν μπορεί να συμμετάσχει στον διαγωνισμό” Τέλος_αν Μπορεί να αποδοθεί ως: Αν (βάρος < 80 ) και (ύψος > 1.70) τότε Εμφάνισε “Μπορεί να συμμετάσχει στον διαγωνισμό”
25
Μετατροπές μεταξύ δομών επιλογής
Επίλυση Αν (α<20) και (β=3 ή β=4) τότε Εμφάνισε ‘’1’’ Αλλιώς_αν α<20 τότε Εμφάνισε ‘’2’’ Αλλιώς_αν (α>=20) και (α mod 2 = 1) τότε Εμφάνισε ‘’3’’ Αλλιως Εμφάνισε ‘’4’’ Τέλος_αν Επίλυση της (μετατροπή από Εμφωλευμένη σε πολλαπλή) Αν α<20 τότε Αν β=3 ή β=4 τότε Εμφάνισε ‘’1’’ Αλλιώς Εμφάνισε ‘’2’’ Τέλος_αν Αν α mod 2 = 1 τότε Εμφάνισε ‘’3’’ Αλλιως Εμφάνισε ‘’4’’
26
Μετατροπή από εμφωλευμένη σε διαδοχικές επιλογές Αν (απλές)
Επίλυση Αν α<=0 τότε β ← 0 Τέλος_αν Αν (α>0) και (α<=5) τότε β ← 5 Αν (α>5) και (α<=10) τότε β ← 10 Αν α>10 τότε β ← 100 Επίλυση της 15.11 Αν α<=0 τότε β ← 0 Αλλιώς Αν α <=5 τότε β ← 5 Αλλιως Αν α<=10 τότε β ← 10 β ← 100 Τέλος_αν Τέλος-αν
27
Δομή επανάληψης Όσο…επανάλαβε
Όσο <Συνθήκη> επανάλαβε Ομάδα εντολών Τέλος_επανάληψης Πως λειτουργεί; Επεξήγηση Μπορεί να μην εκτελεστεί καμία φορά. Η ομάδα εντολών μιας δομής επανάληψης αποκαλείται βρόχος. Κύρια χρήση για άγνωστο πλήθος επαναλήψεων Δ.Ρ. Τι αποκαλείται ‘’τιμή φρουρός’’; Η βασικότερη δομή επανάληψης
28
Δομή επανάληψης Αρχή_επανάληψης…Μέχρις_ότου
Ομάδα εντολών Μέχρις_ότου <συνθήκη που αν είναι αληθής τερματίζεται η επανάληψη> Πως λειτουργεί; Επεξήγηση Θα εκτελεστεί οπωσδήποτε τουλάχιστον μια φορά. Κύρια χρήση για άγνωστο πλήθος επαναλήψεων και έλεγχο εγκυρότητας. Δ.Ρ.
29
Έλεγχος εγκυρότητας με την Αρχή_επανάληψης…Μέχρις_ότου
Σε όλες αυτές τις ασκήσεις που απαιτείται να εξασφαλίσουμε την εγκυρότητα των δεδομένων που διαβάζονται χρησιμοποιούμε τη δομή επανάληψης Αρχή_επανάληψης…Μέχρις_ότου ως εξής: Αρχή_επανάληψης Εμφάνιση μηνύματος σχετικά με το διάβασμα της τιμής. Διάβασμα τιμής Μέχρις_ότου <συνθήκη που να κάνει την τιμή αποδεκτή> Για παράδειγμα για το διάβασμα της ηλικίας ενός ατόμου θα έχουμε: Εμφάνισε ‘’Δώσε την ηλικία’’ Διάβασε Ηλικία Μέχρις_ότου Ηλικία > 0 Όσο δεν δίνεται αποδεκτή ηλικία, δηλαδή μεγαλύτερη του 0, ο χρήστης υποχρεώνεται να ξαναδώσει την ηλικία.
30
Διαφορές μεταξύ των δομών επανάληψης Όσο…επανάλαβε και Αρχή_επανάληψης…Μέχρις_ότου
Στην Όσο…επανάλαβε οι εντολές μπορεί να μην εκτελεστούν ποτέ, γιατί μπορεί να μην ισχύσει ποτέ η συνθήκη, ενώ στην Αρχή_επανάληψης…Μέχρις_ότου οι εντολές θα εκτελεστούν τουλάχιστον μια φορά. Στην Όσο…επανάλαβε ο έλεγχος της συνθήκης γίνεται στην αρχή, ενώ στην Αρχή_επανάληψης…Μέχρις_ότου στο τέλος. Οι συνθήκες στις Όσο…επανάλαβε και Αρχή_επανάληψης…Μέχρις_ότου είναι συμπληρωματικές: Στην Όσο…επανάλαβε η επανάληψη συνεχίζει όσο η συνθήκη είναι αληθής, ενώ στην Αρχή_επανάληψης…Μέχρις_ότου η επανάληψη συνεχίζει όσο η συνθήκη είναι ψευδής, δηλαδή μέχρι να γίνει αληθής.
31
Δομή επανάληψης Για..από..μέχρι…
Για i από α_τ μέχρι τ_τ με_βήμα β Ομάδα εντολών Τέλος_επανάληψης Λειτουργία; Επεξήγηση. Χρήση για γνωστό πλήθος επαναλήψεων (βασική διαφορά από τις άλλες 2). Το βήμα β δεν μπορεί να είναι 0, διότι δεν θα έχουμε περατότητα. Δυνατότητα υλοποίησης με Όσο και Μέχρις_ότου. Δ.Ρ.;
32
Δομή επανάληψης Για..από..μέχρι…
Ο βρόχος Για κ από 5 μέχρι 5 εκτελείται ακριβώς μια φορά. Ο βρόχος Για κ από 5 μέχρι 2 με_βήμα -1 εκτελείται 4 φορές. Ο βρόχος Για κ από 5 μέχρι 1 δεν εκτελείται καμία φορά. Με βάση το βήμα αρχικά και τις α_τ και τ_τ στη συνέχεια γίνεται ο έλεγχος για το πλήθος των φορών εκτέλεσης.
33
Κανόνες για τη χρήση των εμφωλευμένων βρόχων
Στη χρήση των εμφωλευμένων βρόχων ισχύουν συγκεκριμένοι κανόνες που πρέπει να ακολουθούνται αυστηρά για την σωστή λειτουργία των προγραμμάτων. Συγκεκριμένα: Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό. Ο βρόχος που ξεκινάει τελευταίος, πρέπει να ολοκληρώνεται πρώτος. Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την αρχή του. Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσοτέρων βρόχων που ο ένας βρίσκεται στο εσωτερικό του άλλου.
34
Πολλαπλασιασμός αλά Ρωσικά
Ο τρόπος με τον οποίο εκτελεί τον πολλαπλασιασμό ο υπολογιστής σε επίπεδο κυκλωμάτων. Χρησιμοποιείται, διότι υλοποιείται πολύ πιο απλά απ’ ότι ο γνωστός μας χειρωνακτικός τρόπος: Ο πολλ/σμός επί 2 και η διαίρεση δια 2 υλοποιούνται ταχύτατα με ολίσθηση προς τα αριστερά και προς τα δεξιά αντίστοιχα, σε αντίθεση με τον πολλαπλασιασμό με οποιοδήποτε ακέραιο που θεωρείται πιο χρονοβόρα διαδικασία. Αλγόριθμος Αλα_Ρωσικά Δεδομένα //Μ1, Μ2// P ← 0 Όσο Μ2>0 επανάλαβε Αν Μ2 mod 2 = 1 τότε P ← P + M1 Τέλος_αν Μ1 ← Μ1*2 Μ2 ← Μ2 div 2 Τέλος_επανάληψης Αποτελέσματα //P// Τέλος Αλα_Ρωσικά Π.χ. για Μ1=45 και Μ2=19 έχουμε Μ1 Μ2 Όροι αθροίσματος P 45 19 90 9 135 180 4 360 2 720 1 855 1440 Το γινόμενο είναι η τελική τιμή της P
35
Ολίσθηση Η ολίσθηση διακρίνεται σε ολίσθηση προς τα αριστερά και ολίσθηση προς τα δεξιά. Η ολίσθηση προς τα αριστερά είναι η λειτουργία κατά την οποία τα δυαδικά ψηφία μετακινούνται προς τα αριστερά κατά μια θέση και ισοδυναμεί με πολλαπλασιασμό επί 2. Η ολίσθηση προς τα δεξιά είναι η λειτουργία κατά την οποία τα δυαδικά ψηφία μετακινούνται προς τα δεξιά κατά μια θέση και ισοδυναμεί με την ακέραιη διαίρεση δια 2.
36
Κεφ. 3, 9-Δομές Δεδομένων και Αλγόριθμοι
Θεωρία πληροφοριών Σκοπιές μελέτης των δεδομένων από την Πληροφορική Δομή δεδομένων, Λειτουργίες επί των δομών δεδομένων, Σχέση μεταξύ δεδομένων και αλγορίθμων (Wirth 1976). Πίνακες Μεθοδολογίες για επεξεργασία μονοδιάστατων… Μεθοδολογίες για επεξεργασία δισδιάστατων… Εύρεση Max, min σε όλο τον πίνακα και κατά γραμμή και κατά στήλη… Αθροίσματα, μέσοι όροι συνολικά και κατά γραμμαή και κατά στήλη… Πότε χρειάζεται να καταχωρούμε υπολογισμούς από την επεξεργασία ενός πίνακα σε άλλο παράλληλο πίνακα… Αναζήτηση σε πίνακα… Πότε θεωρείται κατάλληλη η χρήση της σειριακής αναζήτησης; Ταξινόμηση πίνακα… Μειονεκτήματα χρήσης πινάκων Πότε χρειάζεται ένας πίνακας; Τυπικές επεξεργασίες πινάκων Δομή Στοίβας Δομή Ουράς
37
Σκοπιές μελέτης των δεδομένων από την Πληροφορική
Η πληροφορική εξετάζει τα δεδομένα ως προς: Υλικό: Η αποθήκευση των δεδομένων γίνεται σε τμήματα υλικού (hardware) (κύρια μνήμη, σκληρός δίσκος, περιφερειακές συσκευές) με διάφορες αναπαραστάσεις. Τέτοιες μορφές είναι η δυαδική και ο κώδικας ASCII. Γλώσσες προγραμματισμού: Εξετάζει τους διάφορους τύπους μεταβλητών που παρέχει η κάθε γλώσσα για αποθήκευση και αναπαράσταση δεδομένων. Ο μεταφραστής κάθε γλώσσας φροντίζει για την αποδοτικότερη μορφή αποθήκευσης, από πλευράς υλικού, κάθε μεταβλητής στον υπολογιστή. Ανάλυση δεδομένων: Εξετάζει τους τρόπους καταγραφής, οργάνωσης και αλληλοσυσχέτισης των δεδομένων, με σκοπό την αναπαράσταση της γνώσης και την εξαγωγή συμπερασμάτων. Οι τεχνολογίες των Βάσεων Δεδομένων, της Μοντελοποίησης δεδομένων και της Αναπαράστασης γνώσης ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων. Δομές δεδομένων: Είναι σύνολα αποθηκευμένων δεδομένων τα οποία υφίστανται επεξεργασία μέσω συγκεκριμένων λειτουργιών. Αποτελούνται από κόμβους. Παράδειγμα δομής δεδομένων είναι το αρχείο των μαθητών ενός σχολείου, στο οποίο κάθε κόμβος είναι και ένα σύνολο δεδομένων ενός μαθητή (εγγραφή – record).
38
Σκοπιές μελέτης των δεδομένων από την Πληροφορική
Υλικού – Αναπαραστάσεις αποθήκευσης των δεδομένων (ASCII, δυαδική, EBCDIC κλπ). Γλώσσών προγραμματισμού – τύποι μεταβλητών για την περιγραφή των δεδομένων. Ανάλυσης δεδομένων – τρόποι καταγραφής, οργάνωσης και αλληλοσυσχέτισης των δεδομένων. Δομών δεδομένων - Αρχείο με εγγραφές, πεδία
39
Βασικές Λειτουργίες (πράξεις) επί των δομών δεδομένων
Προσπέλαση (access). Η πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του. Εισαγωγή (insertion). Η προσθήκη νέων κόμβων σε μια υπάρχουσα δομή. Διαγραφή (deletion). Η αφαίρεση ενός κόμβου από τη δομή. Αναζήτηση (searching). Οι κόμβοι μιας δομής προσπελαύνονται, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα (π.χ. τιμή). Ταξινόμηση (sorting). Οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά. Αντιγραφή (copying). Όλοι οι κόμβοι ή μερικοί από τους κόμβους μιας δομής αντιγράφονται σε μια άλλη δομή. Συγχώνευση (merging). Δυο ή περισσότερες δομές συγχωνεύονται σε μια ενιαία δομή. Διαχωρισμός (separation). Αποτελεί την αντίστροφή πράξη της συγχώνευσης, δηλαδή είναι ο διαχωρισμός μια ς δομής σε μια η περισσότερες δομές. Στην πράξη σπάνια χρησιμοποιούνται και οι οκτώ λειτουργίες για κάποια δομή. Συνήθως παρατηρείται μια δομή να είναι αποδοτικότερη από μια άλλη με κριτήριο μια λειτουργία και λιγότερο αποδοτική για κάποια άλλη.
40
Κατηγορίες (είδη) δομών δεδομένων
Στατικές δομές: Είναι οι δομές που έχουν: συγκεκριμένο και σταθερό μέγεθος. το οποίο καθορίζεται (δηλώνεται) κατά τη δημιουργία τους (συγγραφή κώδικα). και τα στοιχεία τους αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Δυναμικές δομές: Είναι οι δομές που: Δεν έχουν σταθερό μέγεθος. Ο αριθμός των στοιχείων τους (κόμβων) αυξομειώνεται με τις ανάγκες του προγράμματος. Και τα στοιχεία δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά στηρίζονται στην τεχνική της λεγόμενης δυναμικής παραχώρησης μνήμης. Παρατήρηση: Οι στατικές δομές δεδομένων (άρα οι πίνακες) δεν υποστηρίζουν την εισαγωγή και τη διαγραφή.
41
Πίνακες Στατική δομή δεδομένων
Κάθε πίνακας επιτρέπεται να περιέχει στοιχεία μόνο του ιδίου τύπου. Οι δείκτες ενός πίνακα μπορεί να είναι οποιεσδήποτε ακέραιες εκφράσεις (εντός των ορίων του πίνακα (π.χ. Π[Π[2]] <- 5, με τον Π να είναι πίνακας ακεραίων). Ένας πίνακας μπορεί να είναι μονοδιάστατος, δισδιάστατος και γενικά ν-διάστατος.
42
Πίνακες Επεξεργασία μονοδιάστατου πίνακα Π Για i από τ1 μέχρι τ2
Τέλος_επανάληψης Όπου τ1 είναι η θέση του αρχικού στοιχείου που θέλουμε να επεξεργαστούμε και τ2 η θέση του τελικού στοιχείου που θέλουμε να επεξεργαστούμε. Επεξεργασία δισδιάστατου πίνακα Π Κατά γραμμή Για i από 1 μέχρι Ν Πιθανές εντολές αρχικοποίησης πριν την επεξεργασία της γραμμής Για j από 1 μέχρι M Εντολές επεξεργασίας της γραμμής i (π.χ. της 3ης γραμμής) Πιθανές εντολές εμφάνισης αποτελεσμάτων για κάθε γραμμή Τέλος επανάληψης
43
Πίνακες Επεξεργασία δισδιάστατου πίνακα Π Κατά στήλη Για j από 1 μέχρι M Πιθανές εντολές αρχικοποίησης πριν την επεξεργασία της στήλης Για i από 1 μέχρι N Εντολές επεξεργασίας της στήλης j (π.χ. της 2ης στήλης) Τέλος_επανάληψης Πιθανές εντολές εμφάνισης αποτελεσμάτων για κάθε στήλή Τέλος επανάληψης
44
Σειριακή Αναζήτηση της τιμής key στον πίνακα Α
1η περίπτωση: Σύμφωνα με την εκφώνηση σταματάμε μόλις το βρούμε Αλγόριθμος Σειριακή_αναζήτηση1 Δεδομένα //Α, Ν, key// toBrika Ψευδής i 1 θ 0 Όσο (i <= Ν) και (toBrika = Ψευδής) επανέλαβε Αν (Α[i] = key) τότε toBrika Αληθής θ i Αλλιώς i i+1 Τέλος_Αν Τέλος_Επανάληψης Αποτελέσματα //toBrika, θ// Τέλος Σειριακή_αναζήτηση1
45
Σειριακή Αναζήτηση της τιμής key στον πίνακα Α
Αλγόριθμος Σειριακή_αναζήτηση_ταξ Δεδομένα //Α, Ν, key// toBrika Ψευδής Stop Ψευδής i 1 θ 0 Όσο (i <= Ν) και (Stop = Ψευδής) επανέλαβε Αν (Α[i] = key) τότε toBrika Αληθής Stop Αληθής θ i Αλλιώς_αν Α[i] > key τότε Τέλος_Αν i i+1 Τέλος_Επανάληψης Αποτελέσματα //toBrika, θ// Τέλος Σειριακή_αναζήτησητ_ταξ
46
Σειριακή Αναζήτηση της τιμής key στον πίνακα Α
Αλγόριθμος Σειριακή_αναζήτηση2 Δεδομένα //Α, Ν, key// π 0 Για i από 1 μέχρι Ν Αν (Α[i] = key) τότε Εμφάνισε “Το στοιχείο”, key, “βρέθηκε στη θέση”, i π π + 1 Τέλος_Αν Τέλος_Επανάληψης Αν (π = 0) τότε Εμφάνισε “Το στοιχείο”, key, “δεν υπάρχει στον πίνακα” Αλλιώς Εμφάνισε “Ο συνολικός αριθμός εμφανίσεων του στοιχείου“, key, “είναι“, π Τέλος Σειριακή_αναζήτηση2
47
Αναζήτηση (Σειριακή, Δυαδική)
Η επιλογή του αλγορίθμου εξαρτάται κυρίως από το αν ο πίνακας είναι ταξινομημένος ή όχι και από το αν περιέχει στοιχεία που είναι όλα διαφορετικά μεταξύ τους ή όχι. Η σειριακή αναζήτηση είναι η πιο απλή αλλά και η λιγότερο αποδοτική μέθοδος αναζήτησης. Χρησιμοποιείται υποχρεωτικά για πίνακες μη ταξινομημένους. Η χρήση της σειριακής δικαιολογείται μόνο σε περιπτώσεις όπου: Ο πίνακας είναι μη ταξινομημένος. Ο πίνακας είναι μικρού μεγέθους. Η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια.
48
Ταξινόμηση Έχουν εκπονηθεί πάρα πολλοί αλγόριθμοι ταξινόμησης. Άλλοι αλγόριθμοι εκτός από την ταξινόμηση ευθείας ανταλλαγής είναι: Ταξινόμηση με επιλογή. Ταξινόμηση με παρεμβολή. Ο αλγόριθμος γρήγορης ταξινόμησης (quicksort) είναι ο πιο γρήγορος αλγόριθμος ταξινόμησης. Η επιλογή του καλύτερου αλγορίθμου ταξινόμησης εξαρτάται κυρίως από το πλήθος των στοιχείων του πίνακα και την αρχική τους διάταξη, αν δλδ ο πίνακας είναι τελείως αταξινόμητος ή μερικώς ταξινομημένος. Τα δεδομένα του πίνακα μπορεί να είναι αριθμητικά ή αλφαριθμητικά. Η μέθοδος ΔΕΝ ΑΛΛΑΖΕΙ!
49
Ταξινόμηση ευθείας ανταλλαγής (φυσαλίδας)
Ταξινόμηση πίνακα σε αύξουσα σειρά με τη μέθοδο της φυσαλίδας Αλγόριθμος Φυσαλίδα Δεδομένα // Ν, Table // Για i από 2 μέχρι Ν Για j από N μέχρι i με_βήμα -1 Αν (Table[j] < Table [j-1]) τότε temp Table [j] Table [j] Table [j-1] Table [j-1] temp Τέλος_Αν Τέλος_Επανάληψης Αποτελέσματα //Table// Τέλος Φυσαλίδα το μόνο που αλλάζει για φθίνουσα ταξινόμηση είναι η σύγκριση Αν (Α[j] < Α[j-1]) τότε Η οποία πρέπει να γίνει: Αν (Α[j] > Α[j-1]) τότε το μόνο που αλλάζει για φθίνουσα ταξινόμηση είναι η σύγκριση Αν (Α[j] < Α[j-1]) τότε Η οποία πρέπει να γίνει: Αν (Α[j] > Α[j-1]) τότε Είναι ο πιο απλός και ταυτόχρονα ο πιο αργός αλγόριθμος ταξινόμησης.
50
Ταξινόμηση ευθείας ανταλλαγής (φυσαλίδας)
Αν η εκφώνηση απαιτεί διπλή ταξινόμηση (π.χ. σε περίπτωση ίσων τιμών να γίνεται η ταξινόμηση με βάση έναν παράλληλο πίνακα Ο) Αλγόριθμος Φυσαλίδα Δεδομένα // Ν, Table // Για i από 2 μέχρι Ν Για j από N μέχρι i με_βήμα -1 Αν Table[j] < Table [j-1] τότε Αντιμετάθεσε Table[j], Table[j-1]) Αντιμετάθεσε Ο[j], Ο[j-1] Αλλιώς_αν Table[j] = Table [j-1] τότε Αν Ο[j] < Ο[j-1] τότε Τέλος_αν Τέλος_Αν Τέλος_Επανάληψης Τέλος Φυσαλίδα
51
Ταξινόμηση ευθείας ανταλλαγής (φυσαλίδας)
Αν η εκφώνηση απαιτεί ταξινόμηση σε μια γραμμή γ ενός δισδιάστατου πίνακα Table Ν γραμμών και Μ στηλών: Αλγόριθμος Φυσαλίδα Δεδομένα // Table, Ν, Μ, γ// Για i από 2 μέχρι Μ Για j από Μ μέχρι i με_βήμα -1 Αν Table[γ, j] < Table [γ, j-1] τότε Αντιμετάθεσε Table[γ, j], Table[γ, j-1]) Τέλος_Αν Τέλος_Επανάληψης Τέλος Φυσαλίδα
52
Έξυπνη Ταξινόμηση ευθείας ανταλλαγής (φυσαλίδας)
Αν η εκφώνηση απαιτεί η ταξινόμηση να σταματάει όταν ο πίνακας έχει ήδη ταξινομηθεί: Αλγόριθμος Φυσαλίδα Δεδομένα // Table, Ν// i <- 2 Αρχή_επανάληψης Ταξινομημένος <- Αληθής Για j από Ν μέχρι i με_βήμα -1 Αν Table[j] < Table [j-1] τότε Αντιμετάθεσε Table[j], Table[j-1] Ταξινομημένος <- Ψευδής Τέλος_Αν Τέλος_Επανάληψης i <- i+1 Μέχρις_ότου (i >N) ή (Ταξινομημένος = Αληθής) Τέλος Φυσαλίδα
53
Δομή Στοίβας Τελευταίο μέσα – πρώτο έξω (Last In – First Out LIFO)
Κύριες λειτουργίες: Ώθηση (push) ενός στοιχείου στην κορυφή της στοίβας. Απώθηση (pop) ενός στοιχείου από την κορυφή της στοίβας.
54
Δομή Στοίβας Υλοποίηση με τη βοήθεια μονοδιάστατου πίνακα:
Μπορεί να υλοποιηθεί με την βοήθεια ενός μονοδιάστατου πίνακα καθώς και μίας βοηθητικής μεταβλητής (δείκτης) με το όνομα top , η οποία δείχνει το στοιχείο που τοποθετήθηκε τελευταίο στην κορυφή της στοίβας. (Ώθηση) Για την ώθηση ενός νέου στοιχείου στην στοίβα πρώτα αυξάνεται η μεταβλητή top κατά ένα και μετά στην θέση αυτή αποθηκεύεται το στοιχείο. Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει αν η στοίβα είναι γεμάτη αλλιώς λέγεται ότι συμβαίνει υπερχείλιση (overflow). (Απώθηση) Για την απώθηση ενός στοιχείου από την στοίβα απωθείται πρώτα το στοιχείο από την θέση top και μετά μειώνεται η top κατά ένα. Η διαδικασία της απώθησης πρέπει οπωσδήποτε να ελέγχει αν υπάρχει τουλάχιστον ένα στοιχείο στην στοίβα αλλιώς λέγεται ότι συμβαίνει υποχείλιση (underflow).
55
Δομή Ουράς Πρώτο μέσα – πρώτο έξω (First In – First Out FIFO)
Κύριες λειτουργίες: Εισαγωγή (Enqueue) ενός στοιχείου στο πίσω άκρο της ουράς. Εξαγωγή (Dequeue) ενός στοιχείου από το εμπρός άκρο της ουράς.
56
Δομή Ουράς Υλοποίηση με τη βοήθεια μονοδιάστατου πίνακα:
Μπορεί να υλοποιηθεί με την βοήθεια ενός μονοδιάστατου πίνακα και με δύο μεταβλητές (δείκτες) με τα ονόματα rear και front. Ο δείκτης front δείχνει την θέση του στοιχείου που σε πρώτη ευκαιρία θα εξαχθεί. Ο δείκτης rear δείχνει την θέση του τελευταίου στοιχείου της ουράς. (Εισαγωγή) Για την εισαγωγή ενός νέου στοιχείου στην ουρά πρώτα αυξάνεται ο δείκτης rear κατά ένα και μετά στην θέση αυτή αποθηκεύεται το στοιχείο. (Εξαγωγή) Για την εξαγωγή ενός στοιχείου από την ουρά εξέρχεται πρώτα το στοιχείο από την θέση front και μετά αυξάνεται η front κατά ένα. Σε κάθε περίπτωση όμως, πρέπει να ελέγχεται πριν από οποιαδήποτε ενέργεια αν υπάρχει ελεύθερος χώρος στον πίνακα για την εισαγωγή και αν υπάρχει ένα τουλάχιστον στοιχείο για την εξαγωγή.
57
Τυπικές επεξεργασίες πινάκων
Υπολογισμός αθροισμάτων στοιχείων του πίνακα. Εύρεση μεγίστου ή ελαχίστου στοιχείου. Ταξινόμηση των στοιχείων του πίνακα. Αναζήτηση ενός στοιχείου του πίνακα. Συγχώνευση πινάκων.
58
Τυπικές επεξεργασίες πινάκων
Αναζήτηση ενός στοιχείου του πίνακα. Σειριακή Αναζήτηση. Μπορεί να χρησιμοποιηθεί είτε σε ταξινομημένους (δεν προτείνεται) είτε σε μη ταξινομημένους (υποχρεωτικά εδώ). Δυαδική Αναζήτηση. Χρησιμοποιείται ΜΟΝΟ σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή. Συγχώνευση. Η συγχώνευση δυο ή περισσότερων ταξινομημένων πινάκων έχει σαν αποτέλεσμα τη δημιουργία ενός νέου επίσης ταξινομημένου πίνακα
59
Δομές Δεδομένων δευτερεύουσας μνήμης
Είναι ειδικές δομές δεδομένων που ονομάζονται αρχεία και αποθηκεύονται στη δευτερεύουσα μνήμη (περιφερειακές αποθηκευτικές συσκευές). Τα στοιχεία ενός αρχείου ονομάζονται εγγραφές (records) και κάθε εγγραφή αποτελείται από ένα ή περισσότερα πεδία (fields) που ταυτοποιούν την εγγραφή και από άλλα πεδία που περιγράφουν διάφορα χαρακτηριστικά της εγγραφής. Το πεδίο που ταυτοποιεί μοναδικά την εγγραφή ονομάζεται πρωτεύον κλειδί (primary key) ή απλά κλειδί. Σε μια εγγραφή μαθητή, αριθμός μητρώου θα είναι το πρωτεύον κλειδί και το ονοματεπώνυμο που επίσης τον ταυτοποιεί μετά τον αριθμό μητρώου ονομάζεται δευτερεύον κλειδί.
60
Πότε πρέπει να χρησιμοποιούνται οι πίνακες - Μειονεκτήματα
Η χρήση πινάκων προτείνεται για τη διαχείριση πολλών δεδομένων ιδίου τύπου τα οποία πρέπει να είναι διαθέσιμα για επεξεργασία μέχρι το τέλος της εκτέλεσης ενός προγράμματος. Μειονεκτήματα χρήσης πινάκων Οι πίνακες απαιτούν μνήμη. Οι πίνακες (στατικοί πίνακες) περιορίζουν τις δυνατότητες του προγράμματος.
61
Κεφ. 6 Τι είναι πρόγραμμα και ποια τα βασικά του στοιχεία;
Είναι το σύνολο των εντολών που πρέπει να δοθούν στον υπολογιστή για να υλοποιηθεί ένας αλγόριθμος. Το πρόγραμμα δεν αποτελείται μόνο από τις εντολές αλλά και από τα δεδομένα και τις δομές δεδομένων στις οποίες ενεργεί. (Αλγόριθμοι και δομές δεδομένων είναι μία αδιάσπαστη ενότητα.) Να εξηγήσετε γιατί οι υπολογιστές δεν είναι έξυπνες μηχανές. Ο προγραμματισμός δίνει την εντύπωση ότι οι υπολογιστές είναι έξυπνες μηχανές. Αλλά: Ο υπολογιστής καταλαβαίνει μόνο δύο καταστάσεις οι οποίες αντιπροσωπεύονται από τα δύο ψηφία του δυαδικού συστήματος: το μηδέν και το ένα. Το μόνο πράγμα που κάνει είναι στοιχειώδεις ενέργειες σε ακολουθίες 0 και 1 με ασύλληπτη ταχύτητα. Οι στοιχειώδεις αυτές ενέργειες είναι: Να αποθηκεύει στην μνήμη ακολουθίες τέτοιων ψηφίων, να τις ανακτά από την μνήμη, να κάνει στοιχειώδεις αριθμητικές πράξεις με αυτές και να τις συγκρίνει.
62
Γλώσσες Μηχανής Πρόγραμμα ως ακολουθία bits (+):
Άμεσα εκτελέσιμες εντολές, εκτελούνται πολύ γρήγορα, δεν χρειάζονται μετάφραση. (-): Κατανοητές εντολές από τον επεξεργαστή, όχι κατανοητές από τον άνθρωπο. Δυσκολία στην υλοποίηση και μόνο από άριστους γνώστες της αρχιτεκτονικής του επεξεργαστή.
63
Συμβολικές Γλώσσες Απαιτείται συμβολομεταφραστής για τη μετάφραση προγράμματος γραμμένου σε συμβολική γλώσσα. (+): Πιο κατανοητή από τον άνθρωπο, άρα και πιο εύκολη στην απομνημόνευση. (-): Κάθε συμβολική γλώσσα διαφέρει και εξαρτάται άμεσα από την αρχιτεκτονική του επεξεργαστή του υπολογιστή όπου εκτελείται. Δεν διαθέτουν εντολές πιο σύνθετων λειτουργιών, άρα έχουμε μεγάλο μέγεθος προγραμμάτων, άρα δύσκολη σύνταξη και συντήρηση. Αδυναμία μεταφοράς προγράμματος σε υπολογιστή με διαφορετικό επεξεργαστή.
64
Γλώσσες Υψηλού Επιπέδου
Απαιτείται μεταγλωττιστής για τη μετάφραση προγράμματος γραμμένου σε γλώσσα υψηλού επιπέδου. (+): Πιο φυσικός και κατανοητός τρόπος έκφρασης των προβλημάτων Ανεξαρτησία από τον τύπο και την αρχιτεκτονική του επεξεργαστή (αρκεί να υπάρχει ο ανάλογος μεταγλωττιστής), άρα και δυνατότητα μεταφοράς των προγραμμάτων σε άλλους υπολογιστές με ελάχιστες ή και καθόλου τροποποιήσεις (μεταφερσιμότητα). Ευκολία εκμάθησης και εκπαίδευσης. Ευκολότερη συντήρηση και διόρθωση λαθών. Μικρότερος χρόνος και κόστος παραγωγής προγραμμάτων.
65
Γλώσσες υψηλού επιπέδου
Fortran Επίλυση μαθηματικών και επιστημονικών προβλημάτων Χρησιμοποιείται και σήμερα σε επιστημονικές εφαρμογές Cobol Ανάπτυξη εμπορικών και διαχειριστικών εφαρμογών. Χρησιμοποιήθηκε από πολλές επιχειρήσεις και την δημόσια διοίκηση Χρησιμοποιείται και σήμερα. Algol Ελάχιστη πρακτική εφαρμογή. Άσκησε επιρροή σε επόμενες γλώσσες. PL/1 Προσπάθησε ανεπιτυχώς να καλύψει όλους τους τομείς προγραμματισμού. LISP-PROLOG Είναι δύο γλώσσες που δραστηριοποιούνται στον χώρο της τεχνητής νοημοσύνης (Έμπειρα συστήματα, παιχνίδια, επεξεργασία φυσικών γλωσσών). Basic Αρχικά αναπτύχθηκε για εκπαίδευση αρχαρίων. Τα προγράμματα είναι σύντομα και εκτελούνται με την βοήθεια διερμηνευτή. Έγινε η δημοφιλέστερη γλώσσα. Η Microsoft την καθιέρωσε μέσα από τις εκδόσεις Quick Basic και Visual Basic σαν πρότυπο ανάπτυξης εφαρμογών σε Η/Υ
66
Γλώσσες υψηλού επιπέδου
Pascal Βασίστηκε πάνω στην Algol. Κατάλληλη για εκπαίδευση και δημιουργία ισχυρών προγραμμάτων γενικής χρήσης. Κατάλληλη για δημιουργία δομημένων προγραμμάτων. Αποτέλεσε την βάση για την ανάπτυξη ισχυρότερων γλωσσών όπως η ADA και η Modula-2. C Αναπτύχθηκε από την εταιρεία Bell Χρησιμοποιήθηκε για την δημιουργία του λειτουργικού συστήματος UNIX Έχει κοινά χαρακτηριστικά με την Pascal Κατάλληλη για ανάπτυξη δομημένων εφαρμογών αλλά έχει ταυτόχρονα και δυνατότητες γλωσσών χαμηλού επιπέδου. Οδήγησε στη ανάπτυξη της γλώσσας C++ που είναι μια γλώσσα αντικειμενοστραφούς προγραμματισμού. Java Είναι μια αντικειμενοστραφής γλώσσα. Αναπτύχθηκε από την εταιρεία Sun Κατάλληλη για εφαρμογές που εκτελούνται σε διαφορετικούς υπολογιστές που συνδέονται στο Internet και έχουν διαφορετικά λειτουργικά συστήματα.
67
Γλώσσες υψηλού επιπέδου
Τι είναι προγραμματισμός οδηγούμενος από το γεγονός; Εννοούμε την δυνατότητα να ενεργοποιούνται λειτουργίες του προγράμματος με την εκτέλεση ενός γεγονότος (πχ κλικ του ποντικιού). Τι είναι ο οπτικός προγραμματισμός; Είναι η δυνατότητα να δημιουργούμε γραφικά ολόκληρο το περιβάλλον μιας εφαρμογής (πχ τα παράθυρα, τα μενού επιλογών, τα πλαίσια διαλόγου κλπ). Οι πιο διαδεδομένες γλώσσες προγραμματισμού σε γραφικό περιβάλλον είναι η Visual basic, η Visual C++ και η Java.
68
Γλώσσες 4ης Γενιάς Είναι γλώσσες προγραμματισμού που δίνουν στο χρήστη τη δυνατότητα: να επικοινωνεί σχετικά εύκολα με το σύστημα, υποβάλλοντας ερωτήσεις σε (σχεδόν) φυσική γλώσσα να δημιουργεί εφαρμογές για την επεξεργασία και ανάκτηση πληροφοριών (π.χ. από βάσεις δεδομένων) και να καθορίζει ακριβώς τον τρόπο εμφάνισης των πληροφοριών αυτών, με τη χρήση εξελιγμένων εργαλείων που αποκρύπτουν πολλές από τις λεπτομέρειες υλοποίησης και μειώνουν κατά πολύ το χρόνο δημιουργίας. Η γλώσσα SQL
69
Ταξινόμηση των γλωσσών προγραμματισμού
Οι γλώσσες υψηλού επιπέδου διακρίνονται στις παρακάτω κατηγορίες: Ταξινόμηση ως προς την δόμηση Διαδικασιακές - αλγοριθμικές γλώσσες. Είναι σχεδιασμένες για την υλοποίηση αλγορίθμων. Πχ Pascal, Basic. Αντικειμενοστραφείς γλώσσες. Πχ Java,C++ Συναρτησιακές γλώσσες. Πχ LISP Μη διαδικασιακές γλώσσες. Χαρακτηρίζονται ως γλώσσες πολύ υψηλού επιπέδου. Πχ PROLOG Γλώσσες ερωτοαπαντήσεων. Πχ SQL
70
Ταξινόμηση των γλωσσών προγραμματισμού
Οι γλώσσες υψηλού επιπέδου διακρίνονται στις παρακάτω κατηγορίες: Ταξινόμηση ως προς την περιοχή χρήσης. Γενικής χρήσης. Θεωρητικά κάθε γλώσσα γενικής χρήσης μπορεί να χρησιμοποιηθεί για την επίλυση οποιουδήποτε προβλήματος. Στην πράξη όμως διακρίνονται σε δύο κατηγορίες. Επιστημονικής κατεύθυνσης Πχ Fortan Εμπορικής κατεύθυνσης Πχ Cobol Προγραμματισμού συστημάτων Πχ C Τεχνητής νοημοσύνης. Πχ Lisp, Prolog Ειδικής χρήσης. Χρησιμοποιούνται σε ειδικές περιοχές εφαρμογών πχ στα γραφικά με υπολογιστή
71
Επιλογή της καλύτερης γλώσσας προγραμματισμού
Δεν υπάρχει γλώσσα αντικειμενικά καλύτερη από τις άλλες και ούτε πρόκειται να υπάρξει, αλλά πιο κατάλληλη ανάλογα με το είδος της εφαρμογής. Η επιλογή της πιο κατάλληλης γλώσσας γίνεται με βάση: Το είδος της εφαρμογής. Το υπολογιστικό περιβάλλον που θα εκτελεστεί. Τα προγραμματιστικά περιβάλλοντα που διαθέτουμε. Τις γνώσεις του προγραμματιστή.
72
Στοιχεία που προσδιορίζουν μία γλώσσα (κοινά για φυσικές και τεχνητές γλώσσες)
Αλφάβητο: Σύνολο των στοιχείων (συμβόλων) που χρησιμοποιούνται από τη γλώσσα Λεξιλόγιο: Υποσύνολο των ακολουθιών που προκύπτουν από τα στοιχεία του αλφαβήτου και σχηματίζουν λέξεις αποδεκτές από τη γλώσσα. Γραμματική: αποτελείται από: Τυπικό: Σύνολο κανόνων που καθορίζουν τις μορφές με τις οποίες μία λέξη είναι αποδεκτή Συντακτικό: Σύνολο κανόνων που καθορίζουν τη νομιμότητα της διάταξης και σύνδεσης των λέξεων, προκειμένου να δημιουργηθούν προτάσεις Σημασιολογία: Σύνολο κανόνων που καθορίζουν την εννοιολογική σημασία των λέξεων και κατ’ επέκταση των προτάσεων που χρησιμοποιούνται σε μια γλώσσα
73
Διαφορές φυσικών – τεχνητών γλωσσών
Οι φυσικές γλώσσες εξελίσσονται συνεχώς ανάλογα με τα δεδομένα της εποχής και της κοινωνίας. Οι τεχνητές είναι στάσιμες, γιατί ο σκοπός τους είναι συγκεκριμένος. Ωστόσο και αυτές βελτιώνονται και μεταβάλλονται με σκοπό τη διόρθωση των αδυναμιών τους και την επέκταση των δυνατοτήτων τους. Μεταβάλλονται σε επίπεδο διαλέκτου (λεξιλόγιο, π.χ. Basic σε QuickBasic) και / ή σε επίπεδο επέκτασης (δυνατοτήτων π.χ. Basic σε Visual Basic).
74
Τεχνικές Σχεδίασης Προγραμμάτων
Ιεραρχική Σχεδίαση Τμηματικός Προγραμματισμός Δομημένος Προγραμματισμός Αντικειμενοστραφής Προγραμματισμός Παράλληλος Προγραμματισμός
75
Ιεραρχική Σχεδίαση Η τεχνική της ιεραρχικής σχεδίασης (ή αλλιώς τεχνική από επάνω προς τα κάτω ή top-down), χρησιμοποιεί την στρατηγική της συνεχούς διαίρεσης του προβλήματος σε υποπροβλήματα τα οποία είναι εύκολο να επιλυθούν οδηγώντας στην επίλυση του αρχικού προβλήματος. Περιλαμβάνει: Τον καθορισμό των βασικών λειτουργιών ενός προγράμματος σε ανώτερο επίπεδο, Την διάσπαση των λειτουργιών αυτών σε όλο και μικρότερες λειτουργίες μέχρι το τελευταίο επίπεδο όπου οι λειτουργίες είναι πολύ απλές. Χρησιμοποιούνται διάφορες διαγραμματικές τεχνικές για την υποβοήθηση της σχεδίασης. Υλοποιείται με τμηματικό προγραμματισμό.
76
Δομημένος Προγραμματισμός
μια μεθοδολογία σύνταξης προγραμμάτων. Όλα τα προγράμματα μπορούν να γραφούν χρησιμοποιώντας μόνο τις τρεις παρακάτω λογικές δομές καθώς και συνδυασμών τους. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Κάθε πρόγραμμα όπως και κάθε ενότητα προγράμματος έχει μία είσοδο και μόνο μία έξοδο. {δηλαδή: έχει μία αρχή και μόνο ένα τέλος_προγράμματος} Αν και ο δομημένος προγραμματισμός αρχικά εμφανίστηκε ως μία προσπάθεια περιορισμού της εντολής GOTO σήμερα αποτελεί την βασική μεθοδολογία προγραμματισμού. Ο δομημένος προγραμματισμός βοηθάει την ανάλυση ενός προγράμματος σε τμήματα έτσι περιέχει τόσο την ιεραρχική σχεδίαση όσο και τον τμηματικό προγραμματισμό.
77
Πλεονεκτήματα Δομημένου προγραμματισμού
Δημιουργία απλούστερων προγραμμάτων. Άμεση μεταφορά αλγορίθμου σε πρόγραμμα. Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα. Περιορισμός των λαθών κατά την ανάπτυξη. Διευκόλυνση της ανάγνωσης και κατανόησης του προγράμματος από τρίτους. Ευκολότερη διόρθωση και συντήρηση.
78
Γιατί η εντολή GOTO κρίνεται ακατάλληλη
Η χρήση της εντολής αλλάζει την ροή ενός προγράμματος Η αλλαγή αυτή της ροής κάνει τα προγράμματα δύσκολα στην παρακολούθηση την κατανόηση και την συντήρηση. Μερικές σύγχρονες γλώσσες προγραμματισμού διατηρούν στο ρεπερτόριο των εντολών τους τη GOTO για λόγους συμβατότητας με τις παλιότερες εκδόσεις τους και για λόγους συντήρησης παλιών προγραμμάτων.
79
Προγραμματιστικά Περιβάλλοντα
Το αρχικό πρόγραμμα που γράφει ο προγραμματιστής λέγεται πηγαίο πρόγραμμα. Η συγγραφή και η διόρθωσή του γίνεται με τον συντάκτη. Το πηγαίο πρόγραμμα δεν είναι κατανοητό από τον υπολογιστή. (εκτός αν είναι γραμμένο απ’ ευθείας σε γλώσσα μηχανής) Τι είναι ο συντάκτης; Ποια είναι η διαδικασία μεταγλώττισης και σύνδεσης προγράμματος;
80
Προγραμματιστικά Περιβάλλοντα
Λάθη στο πηγαίο πρόγραμμα Τα λάθη σε ένα πρόγραμμα διακρίνονται σε λογικά και συντακτικά. Λογικά λάθη. Οφείλονται σε σφάλματα κατά την υλοποίηση του αλγορίθμου. {πχ ΜΟßχ+ψ / 3 (ήθελε παρενθέσεις) …} Εντοπίζονται μόνο κατά την εκτέλεση του προγράμματος. Είναι τα πλέον σοβαρά και δύσκολα στην διόρθωση. Συντακτικά λάθη. Οφείλονται σε αναγραμματισμούς γραμμάτων εντολών, παράληψη δήλωσης δεδομένων κλπ. {πχ Γραεψ αντί για Γράψε} Εντοπίζονται από τον μεταγλωττιστή ή τον διερμηνευτή Πρέπει να διορθωθούν ώστε να δημιουργηθεί το εκτελέσιμο πρόγραμμα.
81
Προγραμματιστικά Περιβάλλοντα
Για την δημιουργία – μετάφραση - εκτέλεση ενός προγράμματος απαιτούνται τουλάχιστον 3 προγράμματα: Συντάκτης Μεταγλωττιστής Συνδέτης Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρουσιάζουν συνήθως μεικτές υλοποιήσεις, όπου χρησιμοποιείται διερμηνευτής κατά τη φάση δημιουργίας του προγράμματος και μεταγλωττιστής για την τελική έκδοση και εκμετάλλευση του προγράμματος. Το κάθε προγραμματιστικό περιβάλλον έχει διαφορετικά εργαλεία και ιδιότητες (ανάλογα με την γλώσσα προγραμματισμού). Για παράδειγμα ένα περιβάλλον οπτικού προγραμματισμού παρέχει και ειδικό Συντάκτη για την δημιουργία γραφικών (μενού διαλόγου κλπ)
82
Κεφ. 10 - Υποπρογράμματα Τμηματικός προγραμματισμός
Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα (προγραμμάτων). Αποτελεί μια μέθοδο υλοποίησης της ιεραρχικής σχεδίασης ενός προγράμματος Τι είναι το υποπρόγραμμα: Είναι ένα τμήμα προγράμματος που επιτελεί αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο πρόγραμμα. Ο τμηματικός προγραμματισμός εξασφαλίζει σε μεγάλο βαθμό την επιτυχή και εύκολη δημιουργία σωστών προγραμμάτων.
83
Ιδιότητες των υποπρογραμμάτων
Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα ενεργοποιείται μόνον με έναν τρόπο, δηλ. κλήση και είσοδος παραμέτρων και στη συνέχεια εκτέλεση ενεργειών και απενεργοποιείται με έναν μόνο τρόπο, δηλ. τέλος του υποπρογράμματος και έξοδος αποτελεσμάτων. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. Αυτό σημαίνει ότι κάθε υποπρόγραμμα μπορεί να σχεδιαστεί, να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα υποπρογράμματα. Στην πράξη βέβαια η απόλυτη ανεξαρτησία είναι δύσκολο να επιτευχθεί. Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο. Κάθε υποπρόγραμμα πρέπει να είναι τόσο, ώστε να είναι εύκολα κατανοητό για να μπορεί να ελέγχεται. Γενικά κάθε υποπρόγραμμα πρέπει να εκτελεί μια μόνο λειτουργία. Αν εκτελεί περισσότερες λειτουργίες, τότε συνήθως μπορεί και πρέπει να διασπαστεί σε ακόμη μικρότερα υποπρογράμματα.
84
Πλεονεκτήματα του τμηματικού προγραμματισμού
Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος. Διευκολύνει την κατανόηση και διόρθωση του προγράμματος. Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος, μειώνοντας συγχρόνως τα λάθη. Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού.
85
Παράμετρος (ορισμός) Μια παράμετρος είναι μια μεταβλητή που επιτρέπει το πέρασμά της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο. Κάθε υποπρόγραμμα για να ενεργοποιηθεί καλείται από το αρχικό πρόγραμμα (που ονομάζεται κυρίως πρόγραμμα) ή από ένα υποπρόγραμμα. Το υποπρόγραμμα είναι μεν αυτόνομο αλλά συχνά πρέπει να επικοινωνεί με το υπόλοιπο πρόγραμμα. Έτσι δέχεται τιμές και επιστρέφει τιμές σε αυτόν που τον κάλεσε. Οι τιμές αυτές περνούν από το ένα υποπρόγραμμα στο άλλο με τις παραμέτρους. Οι παράμετροι είναι σαν τις κοινές μεταβλητές ενός προγράμματος με μια ουσιώδη διαφορά: Χρησιμοποιούνται για να περνάνε τιμές στα υποπρογράμματα. Ποιοι είναι οι κανόνες που διέπουν τις λίστες των πραγματικών και τυπικών παραμέτρων;
86
Διαδικασίες - Συναρτήσεις
87
Ορισμός (σύνταξη συναρτήσεων)
Κάθε συνάρτηση έχει την ακόλουθη δομή: Συνάρτηση Ονομα (λίστα παραμέτρων) : τύπος συνάρτησης Τμήμα δηλώσεων Αρχή Εντολές Όνομα <- έκφραση Τέλος_συνάρτησης Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της γλώσσας. Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές μεταβιβάζονται προς την συνάρτηση κατά την κλήση της. Ο τύπος της συνάρτησης (ακέραια -πραγματική-λογική ή και χαρακτήρας), δηλώνει την τιμή που επιστρέφει η συνάρτηση σε αυτόν που την κάλεσε. Στις εντολές της συνάρτησης πρέπει υποχρεωτικά να υπάρχει μια εντολή εκχώρησης τιμής στο όνομα της συνάρτησης
88
Κλήση συναρτήσεων Κάθε συνάρτηση εκτελείται όπως ακριβώς εκτελούνται οι ενσωματωμένες συναρτήσεις της γλώσσας Απλώς αναφέρεται το όνομά της σε μια έκφραση ή σε μια εντολή και επιστρέφεται η τιμή της. Παράδειγμα Χ <- Max (X, Ψ, Z)
89
Ορισμός (σύνταξη) διαδικασιών
Κάθε διαδικασία έχει την ακόλουθη δομή: Διαδικασία Όνομα ( λίστα παραμέτρων) Τμήμα δηλώσεων Αρχή Εντολές Τέλος_διαδικασίας Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές μεταβιβάζονται προς την διαδικασία από αυτόν που την κάλεσε η/και επιστρέφονται σε αυτόν που την κάλεσε μετά το τέλος_διαδικασίας Στις εντολές της διαδικασίας μπορεί να υπάρχουν οποιεσδήποτε εντολές της γλώσσας
90
Κλήση διαδικασιών Κάλεσε Ονομα (λίστα παραμέτρων) Λειτουργία της κάλεσε: Η εκτέλεση του προγράμματος/ υποπρογράμματος, το οποίο χρησιμοποιεί την κάλεσε διακόπτεται και εκτελούνται οι εντολές της διαδικασίας που καλείται. Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται από την εντολή που ακολουθεί την εντολή κάλεσε. Η λίστα των παραμέτρων ορίζει τις τιμές που περνούν στη διαδικασία και τις τιμές που αυτή επιστρέφει. Η λίστα παραμέτρων δεν είναι υποχρεωτική. Δηλαδή μια διαδικασία μπορεί να έχει μια, καμία (πχ μια Διαδικασία που όποτε καλείται, τυπώνει ένα συγκεκριμένο μήνυμα πχ Καλημέρα, δεν χρειάζεται παραμέτρους) ή περισσότερες παραμέτρους Όταν υπάρχουν πολλές παράμετροι τότε άλλες χρησιμοποιούνται για να μεταβιβάσουν τιμές προς την διαδικασία και άλλες για να επιστρέψουν τιμές στο κυρίως πρόγραμμα.
91
Πραγματικές παράμετροι (ή σκέτες παράμετροι) και τυπικές παράμετροι (ή ορίσματα)
Ολες οι μεταβλητές έχουν ισχύ μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί. (ορισμός) Η λίστα των τυπικών παραμέτρων καθορίζει τις παραμέτρους στην δήλωση του υποπρογράμματος. Μερικές γλώσσες προγραμματισμού τις ονομάζουν ορίσματα (ορισμός) Η λίστα των πραγματικών παραμέτρων καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος. Μερικές γλώσσες προγραμματισμού τις ονομάζουν απλά παραμέτρους. Τα ονόματα των τυπικών παραμέτρων και πραγματικών παραμέτρων μπορούν να είναι οποιαδήποτε. Αυτό δεν σημαίνει ότι αν έχουν το ίδιο όνομα είναι η ίδια μεταβλητή. Απεναντίας είναι υποχρεωτικά διαφορετικές μεταβλητές αφού ανήκουν σε διαφορετικά τμήματα προγράμματος
92
Η χρήση της στοίβας στην κλήση διαδικασιών
Όταν μια διαδικασία ή συνάρτηση καλείται από το κύριο πρόγραμμα τότε η αμέσως επόμενη διεύθυνση εντολής του κυρίως προγράμματος (διεύθυνση επιστροφής) αποθηκεύεται από τον μεταφραστή σε μια στοίβα που ονομάζεται στοίβα χρόνου εκτέλεσης. Μετά την εκτέλεση της διαδικασίας ή της συνάρτησης η διεύθυνση επιστροφής απωθείται από την στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κυρίως πρόγραμμα. Η τεχνική αυτή εφαρμόζεται οποτεδήποτε μια διαδικασία ή συνάρτηση καλεί μια άλλη διαδικασία ή συνάρτηση.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.