ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ (ΠΕΡΙΛΗΨΗ) ΕΠΙΜΕΛΕΙΑ: ΝΙΚΗΦΟΡΟΣ ΜΑΝΔΗΛΑΡΑΣ
ΚΕΦΑΛΑΙΟ 2 ο -ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ 2.1 ΤΙ ΕΙΝΑΙ ΑΛΓΟΡΙΘΜΟΣ ΟΡΙΣΜΟΣ: Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. ΚΡΙΤΗΡΙΑ ΓΙΑ ΤΗΝ ΠΛΗΡΟΤΗΤΑ ΑΛΓΟΡΙΘΜΟΥ 1. Είσοδος: Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίδονται ως είσοδοι στον αλγόριθμο. (αντιστοιχεί στην εντολή ΔΙΑΒΑΣΕ) 2. Έξοδος: Κάθε αλγόριθμος πρέπει να παράγει κάποια αποτελέσματα. (αντιστοιχεί στην εντολή ΓΡΑΨΕ) 3. Καθοριστικότητα: Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. (π.χ. η εκτέλεση της εκχώρησης Α Β/C πρέπει να γίνει μετά την ΑΝ C<>0 ΤΟΤΕ και η εντολή A T_Ρ(Χ) πρέπει να γραφεί μετά την ΑΝ Χ>=0 ΤΟΤΕ. 4. Περατότητα: Κάθε αλγόριθμος πρέπει να επιλύει ένα πρόβλημα, με την εκτέλεση πεπερασμένου αριθμού εντολών και σε πεπερασμένο χρόνο. (Οι επανάληψης ΓΙΑ...,ΟΣΟ...,ΜΕΧΡΙΣ_ΟΤΟΥ πρέπει να τερματίζονται.) 5. Αποτελεσματικότητα: Κάθε εντολή πρέπει να είναι απλή και εκτελέσιμη. 2.3 ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΩΝ 1. Ελεύθερο κείμενο (πιθανή η παραβίαση κριτηρίου αποτελεσματικότητας) 2. Διάγραμμα ροής 3. Φυσική γλώσσα κατά βήματα (πιθανή η παραβίαση κριτηρίου καθοριστικότητας) 4. Κωδικοποίηση σε ψευδογλώσσα ή σε Γλώσσα Προγραμματισμού 2.4 ΒΑΣΙΚΕΣ ΑΛΓΟΡΙΘΜΙΚΕΣ ΔΟΜΕΣ (ΣΥΝΙΣΤΩΣΕΣ/ΕΝΤΟΛΕΣ) 1. Ακολουθία Οι ενός προγράμματος, εκτελούνται από πάνω προς τα κάτω, με τη σειρά που είναι γραμμένες. 2. Επιλογή Μη εκτέλεση (υπερπήδηση) εντολών που ακολουθούν. Αντιστοιχεί στις επιλογής ΑΝ 3. Επανάληψη Εκτέλεση εντολών που είναι γραμμένες σε προηγούμενη σειρά. Αντιστοιχεί στις επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ, ΜΕΧΡΙΣ_ΟΤΟΥ και ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ ΚΕΦΑΛΑΙΟ 3 ο -ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 3.2 ΑΛΓΟΡΙΘΜΟΙ+ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ=ΠΡΟΓΡΑΜΜΑΤΑ ΟΡΙΣΜΟΣ: Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ (ΠΡΑΞΕΙΣ) ΣΤΙΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Προσπέλαση, Εισαγωγή(μόνο στις δυναμικές), Διαγραφή(μόνο στις δυναμικές), Αναζήτηση, Ταξινόμηση, Αντιγραφή, Συγχώνευση, Διαχωρισμός. ΚΑΤΗΓΟΡΙΕΣ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ Α) Στατικές:Το πλήθος των κόμβων που δεσμεύεται στην κύρια μνήμη, είναι σταθερό και προκαθορίζεται κατά την στιγμή του προγραμματισμού και κατά συνέπεια κατά τη στιγμή της μετάφρασης του προγράμματος που τις ορίζει και όχι κατά την εκτέλεση του. Δημιουργούνται σε συνεχόμενες θέσεις στην κύρια μνήμη. (π.χ. ΠΙΝΑΚΕΣ) 2
Β) Δυναμικές:Το πλήθος των κόμβων που δεσμεύεται στην κύρια μνήμη δεν είναι σταθερό και προκαθορισμένο, αλλά μεγαλώνει ή μικραίνει κατά την εκτέλεση του προγράμματος ανάλογα αν στη δομή εισάγονται ή διαγράφονται δεδομένα αντίστοιχα. (Τεχνική δυναμικής παραχώρησης μνήμης). Δεν δημιουργούνται σε συνεχόμενες θέσεις στην κύρια μνήμη. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΔΕΥΤΕΡΕΥΟΥΣΑΣ ΜΝΗΜΗΣ: ΑΡΧΕΙΑ (αποτελούνται από εγγραφές)-εγγραφεσ (αποτελούνται από πεδία) ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΠΙΝΑΚΑ* ΠΡΟΓΡΑΜΜΑ ΣΕΙΡΙΑΚΗ ΣΤΑΘΕΡΕΣ Ν=100 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ : Α, Ι, P[N] ΑΡΧΗ ΓΡΑΨΕ 'ΠΟΙΟΝ ΑΡΙΘΜΟ ΑΝΑΖΗΤΑΣ; ' ΔΙΑΒΑΣΕ Α Ι 0 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Ι Ι+1 ΜΕΧΡΙΣ_ΟΤΟΥ (P[I]=A) Ή (Ι=Ν) ΑΝ P[I]=Α ΤΟΤΕ ΓΡΑΨΕ 'ΒΡΕΘΗΚΕ ΣΤΗΝ ',I,' η ΘΕΣΗ ΤΟΥ ΠΙΝΑΚΑ' ΑΛΛΙΩΣ ΓΡΑΨΕ 'ΔΕΝ ΒΡΕΘΗΚΕ ΣΤΟΝ ΠΙΝΑΚΑ' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ *ΕΝΑΛΛΑΚΤΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ ΓΙΑ ΕΚΕΙΝΟΝ ΤΟΥ ΒΙΒΛΙΟΥ σελ.64 ΤΑΞΙΝΟΜΗΣΗ ΦΥΣΣΑΛΙΔΑΣ ΠΡΟΓΡΑΜΜΑ ΦΥΣΣΑΛΙΔΑ ΣΤΑΘΕΡΕΣ Ν=100 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ Ι, J, B, P[N] AΡXH! ΦΘΙΝΟΥΣΑ ΤΑΞΙΝΟΜΗΣΗ ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΓΙΑ J ΑΠΟ Ν ΜΕΧΡΙ Ι ΜΕ ΒΗΜΑ -1 ΑΝ P[J-1]<P[J] ΤΟΤΕ B P[J-1] P[J-1] P[J] P[J] B ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Η χρήση της σειριακής αναζήτησης δικαιολογείται σε μη ταξινομημένους πίνακες, μικρού μεγέθους και όταν εφαρμόζεται σπάνια σε συγκεκριμένο πίνακα. Η φυσσαλίδα (ευθεία ανταλλαγή) είναι ο πιο απλός αλλά και ο πιο αργός αλγόριθμος ταξινόμησης. ΚΕΦΑΛΑΙΟ 6 ο -ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.3 ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ Αλφάβητο : το σύνολο των στοιχείων (χαρακτήρων) που χρησιμοποιείται από τη γλώσσα. Λεξιλόγιο : υποσύνολο όλων των ακολουθιών που δημιουργούνται με τα στοιχεία του αλφαβήτου, οι λέξεις που είναι δεκτές από τη γλώσσα. Γραμματική : α) Τυπικό : το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. β) Συντακτικό : το σύνολο των κανόνων που καθορίζει τη νομιμότητα της διάταξης και της σύνδεσης των λέξεων της γλώσσας για τη δημιουργία προτάσεων. Σημασιολογία : το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων, των εκφράσεων και των προτάσεων που χρησιμοποιούνται σε μια γλώσσα. Οι φυσικές γλώσσες διαφέρουν των τεχνητών, στη δυνατότητα εξέλιξης τους. 6.4.1 ΙΕΡΑΡΧΙΚΗ ΣΧΕΔΙΑΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Η τεχνική της ιεραρχικής σχεδίασης και επίλυσης ή η διαδικασία σχεδίασης "από πάνω προς τα κάτω" (top-down program design) όπως συχνά ονομάζεται, περιλαμβάνει τον καθορισμό των βασικών λειτουργιών ενός προγράμματος, σε ανώτερο επίπεδο, και στη συνέχεια τη διάσπαση των λειτουργιών αυτών σε όλο και απλούστερες λειτουργίες, μέχρι το τελευταίο επίπεδο που οι λειτουργίες είναι πολύ απλές, ώστε να επιλυθούν εύκολα. 3
6.4.2 ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η ιεραρχική σχεδίαση προγράμματος υλοποιείται με τον τμηματικό προγραμματισμό. Μετά την ανάλυση του προβλήματος σε αντίστοιχα υποπροβλήματα, κάθε υποπρόβλημα αποτελεί ανεξάρτητη ενότητα, που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα προγράμματος. 6.4.3 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ο δομημένος προγραμματισμός έχει τα δύο πιο πάνω χαρακτηριστικά (ιεραρχικός και τμηματικός) και στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών, τη δομή της ακολουθίας, τη δομή της επιλογής και τη δομή της επανάληψης (χωρίς χρήση της goto) ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 1. Δημιουργία απλούστερων προγραμμάτων 2. Άμεση μεταφορά των αλγορίθμων σε προγράμματα 3. Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα 4. Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος 5. Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους 6. Ευκολότερη διόρθωση και συντήρηση. 6.7 ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗ ΚΑΙ ΣΥΝΔΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΗΓΑΙΟ ΠΡΟΓΡΑΜΜΑ (ΑΡΧΙΚΟ) ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ Συγγραφή με συντάκτη (editor) (επεξεργαστής κειμένου) ΕΥΡΕΣΗ ΣΥΝΤΑΚΤΙΚΩΝ ΣΦΑΛΜΑΤΩΝ ΑΝΤΙΚΕΙΜΕΝΟ ΠΡΟΓΡΑΜΜΑ ΒΙΒΛΙΟΘΗΚΗ ΛΟΓΙΚΑ ΛΑΘΗ ΣΥΝΔΕΤΗΣ ΕΚΤΕΛΕΣΙΜΟ ΠΡΟΓΡΑΜΜΑ ΚΑΤΗΓΟΡΙΕΣ ΜΕΤΑΦΡΑΣΤΙΚΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ 1. ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ (COMPILERS) Μεταγλωττίζουν ολόκληρο το πηγαίο πρόγραμμα από γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής και δημιουργούν ένα ισοδύναμο εκτελέσιμο πρόγραμμα τελείως ανεξάρτητο από το αρχικό (πηγαίο). ΜΕΙΟΝΕΚΤΗΜΑ ΧΡΗΣΗΣ ΤΟΥΣ: πριν χρησιμοποιηθεί ένα πρόγραμμα πρέπει να περάσει από τη διαδικασία μεταγλώττισης-σύνδεσης. 2. ΔΙΕΡΜΗΝΕΥΤΕΣ (INTERPRETERS) Διερμηνεύουν και εκτελούν μία προς μία τις του πηγαίου προγράμματος από γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής. ΜΕΙΟΝΕΚΤΗΜΑ ΧΡΗΣΗΣ ΤΟΥΣ: η εκτέλεση του προγράμματος καθίσταται πιο αργή από εκείνη του εκτελέσιμου προγράμματος που παράγει ο μεταγλωττιστής. ΠΛΕΟΝΕΚΤΗΜΑ ΧΡΗΣΗΣ ΤΟΥΣ: άμεση εκτέλεση άρα και άμεση διόρθωση. Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν: Συντάκτη για τη συγγραφή και διόρθωση του αρχικού (πηγαίου) προγράμματος. Μεταφραστή (μεικτή υλοποίηση: διερμηνευτή για τη δημιουργία και μεταγλωττιστή για 4
την τελική έκδοση και εκμετάλλευση του προγράμματος.) Συνδέτη (φορτωτή) για τη σύνδεση του αντικείμενου προγράμματος με βιβλιοθήκες προγραμμάτων της γλώσσας και του προγραμματιστή. ΚΕΦΑΛΑΙΟ 7 ο & 8 ο -ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.2 ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Ακέραιος, Πραγματικός, Χαρακτήρας, Λογικός 7.3 ΣΤΑΘΕΡΕΣ Προκαθορισμένες τιμές που δεν μεταβάλλονται κατά την διάρκεια εκτέλεσης του προγράμματος. ΣΥΜΒΟΛΙΚΕΣ ΣΤΑΘΕΡΕΣ: Ονόματα στα οποία αντιστοιχίζονται σταθερές τιμές. Δηλώνονται πριν απ' τις μεταβλητές. 7.4 ΜΕΤΑΒΛΗΤΕΣ Συγκεκριμένες θέσεις μνήμης, τα περιεχόμενα των οποίων μπορούν να μεταβάλλονται κατά την διάρκεια εκτέλεσης του προγράμματος. Τα ΟΝΟΜΑΤΑ των σταθερών, μεταβλητών, προγραμμάτων, διαδικασιών και συναρτήσεων σχηματίζονται με συνδυασμό γραμμάτων, αριθμών και του χαρακτήρα κάτω παύλα(_). Πρέπει να αρχίζουν με γράμμα και να μην είναι δεσμευμένες λέξεις. ΔΕΣΜΕΥΜΕΝΕΣ ΛΕΞΕΙΣ είναι οι λέξεις που δεσμεύει η γλώσσα προγραμματισμού για να σχηματίσει το σύνολο των εντολών της, των συναρτήσεών της και γενικότερα το λεξιλόγιο της. ΤΕΛΕΣΤΕΣ: Σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις. ΑΡΙΘΜΗΤΙΚΟΙ ΤΕΛΕΣΤΕΣ ^ ΥΨΩΣΗ ΣΕ ΔΥΝΑΜΗ(1) * ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ(2) / ΔΙΑΙΡΕΣΗ(2) DIV ΑΚΕΡΑΙΑ ΔΙΑΙΡΕΣΗ(2) MOD ΥΠΟΛΟΙΠΟ ΔΙΑΙΡΕΣΗΣ(2) + ΠΡΟΣΘΕΣΗ(3) - ΑΦΑΙΡΕΣΗ(3) (Ν)=ΙΕΡΑΡΧΙΑ (προτεραιότητα) ΠΡΑΞΗΣ ΛΟΓΙΚΟΙ ΤΕΛΕΣΤΕΣ ΌΧΙ ΚΑΙ Ή Οι λογικοί τελεστές έχουν χαμηλότερη ιεραρχία απ' τους συγκριτικούς. ΣΥΓΚΡΙΤΙΚΟΙ ΤΕΛΕΣΤΕΣ = ΙΣΟΤΗΤΑ <> ΑΝΙΣΟΤΗΤΑ > ΜΕΓΑΛΥΤΕΡΟ < ΜΙΚΡΟΤΕΡΟ >= ΜΕΓΑΛΥΤΕΡΟ Ή ΙΣΟ <= ΜΙΚΡΟΤΕΡΟ Ή ΙΣΟ Οι τελεστές σύγκρισης έχουν χαμηλότερη ιεραρχία απ' τους αριθμητικούς ΣΥΝΑΡΤΗΣΕΙΣ Τετραγωνική ρίζα Τ_Ρ(Χ) Απόλυτη τιμή A_T(Χ) Ακέραιο μέρος Α_Μ(Χ) Ημίτονο ΗΜ(Χ) Συνημίτονο ΣΥΝ(Χ) Εφαπτομένη ΕΦ(Χ) Φυσικός Λογάριθμος ΛΟΓ(Χ) Υπολογισμός e x E(X) ΠΙΝΑΚΑΣ ΑΛΗΘΕΙΑΣ ΤΩΝ ΛΟΓΙΚΩΝ ΠΡΑΞΕΩΝ Σ1 Σ2 Σ1 ΚΑΙ Σ2 Σ1 Ή Σ2 ΌΧΙ Σ1 Α Α Α Α Ψ Α Ψ Ψ Α Ψ Ψ Α Ψ Α Α Ψ Ψ Ψ Ψ Α 5
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ-ΨΕΥΔΟΓΛΩΣΣΑΣ ΣΤΑΘΕΡΕΣ - ΜΕΤΑΒΛΗΤΕΣ - ΣΧΟΛΙΑ ΨΕΥΔΟΓΛΩΣΣΑ Αλγόριθμος ένας_τίτλος! Γραμμή δηλώσεων! δεδομένων εισόδου! εφ όσον υπάρχουν! π.χ. Δεδομένα // Μ1,Μ2 //! Αντικαθιστά την εντολή! Διάβασε Μ1,Μ2! ΚΟΡΜΟΣ ΕΝΤΟΛΩΝ Αποτελέσματα // Π //! Αντικαθιστά την εντολή! Εμφάνισε Π Τέλος ένας_τίτλος ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑ ένας_τίτλος ΣΤΑΘΕΡΕΣ! Περιοχή δηλώσεων σταθερών (σχόλιο)! π.χ. ΦΠΑ=0,18 Αρχική_Τιμή=1 ΜΕΤΑΒΛΗΤΕΣ! Περιοχή δηλώσεων μεταβλητών! π.χ. ΑΚΕΡΑΙΕΣ : α1,α2,ακερ_τιμή ΠΡΑΓΜΑΤΙΚΕΣ: χ1,πραγμ_τιμή ΧΑΡΑΚΤΗΡΕΣ: λέξη1,μήνυμα ΛΟΓΙΚΕΣ: ΑΠ1,ΑΠ2 ΑΡΧΗ! ΚΟΡΜΟΣ ΕΝΤΟΛΩΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ένας_τίτλος 6
ΕΝΤΟΛΗ ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΓΛΩΣΣΑ ΨΕΥΔΟΓΛΩΣΣΑ ΑΡΧΗ ΑΡΧΗ ΑΡΧΗ Αλγόριθμος Τίτλος ΤΕΛΟΣ ΤΕΛΟΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Τέλος Τίτλος ΔΙΑΒΑΣΕ (εισόδου) ΔΙΑΒΑΣΕ λίστα μεταβλητών ΔΙΑΒΑΣΕ χ,ψ Διάβασε χ,ψ ΓΡΑΨΕ (εξόδου) ΕΚΧΩΡΗΣΗ ΤΙΜΗΣ ΓΡΑΨΕ λίστα στοιχείων Μεταβλητή Έκφραση ΓΡΑΨΕ Χ=,χ Χ Χ+1 Εμφάνισε Χ=,χ Εκτύπωσε Χ=,χ Γράψε Χ=,χ Χ Χ+1 συνθήκη ΟΧΙ ΑΝ...ΤΟΤΕ (ΑΠΛΗ ΕΠΙΛΟΓΗ) ΝΑΙ ΑΝ Α>9 ΤΟΤΕ ΤΕΛΟΣ_ΑΝ Αν Α>9 τότε Τέλος_αν Όταν η Αν περιέχει μόνο μια εντολή το Τέλος_αν είναι προαιρετικό. ΑΝ...ΤΟΤΕ...ΑΛΛΙΩΣ (ΣΥΝΘΕΤΗ ΕΠΙΛΟΓΗ) ΝΑΙ Εντολές1 συνθήκ η ΟΧΙ Εντολές2 ΑΝ Α>9 ΤΟΤΕ ΑΛΛΙΩΣ Α Α-1 ΤΕΛΟΣ_ΑΝ Αν Α>9 τότε Αλλιώς Α Α-1 Τέλος_αν 7
ΕΝΤΟΛΗ ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΓΛΩΣΣΑ ΨΕΥΔΟΓΛΩΣΣΑ ΑΝ...ΤΟΤΕ..ΑΛΛΙΩΣ_ΑΝ (ΠΟΛΛΑΠΛΗ ΕΠΙΛΟΓΗ 1) Όταν μια δομή επιλογής είναι εμφωλευμένη μέσα σε άλλη, τότε πρέπει να βρίσκεται ολόκληρη μέσα σ αυτήν που την περικλείει ΝΑΙ 0 Α< 0 ΝΑΙ Α= 0 ΟΧΙ ΟΧΙ Α Α-10 ΑΝ Α<0 ΤΟΤΕ 0 ΑΛΛΙΩΣ_ΑΝ Α=0 ΤΟΤΕ ΑΛΛΙΩΣ Α Α-10 ΤΕΛΟΣ_ΑΝ Αν Α<0 τότε 0 αλλιώς_αν Α=0 τότε αλλιώς Α Α-10 Τέλος_αν ΟΣΟ Χαρακτηριστικό της επανάληψης αυτής είναι, ότι είναι δυνατόν να μην εκτελεστεί ούτε μια φορά συνθήκ η αληθής ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Όσο συνθήκη επανάλαβε Τέλος_επανάληψης ψευδής 8
ΕΝΤΟΛΗ ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΓΛΩΣΣΑ ΨΕΥΔΟΓΛΩΣΣΑ ΜΕΧΡΙΣ_ΟΤΟΥ Χαρακτηριστικό της επανάληψης αυτής είναι ότι εκτελείται τουλάχιστον μια φορά ψευδής συνθήκ η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη Αρχή_επανάληψης Μέχρις_ότου συνθήκη αληθής Ι Α ΓΙΑ Χαρακτηριστικό της επανάληψης αυτής είναι ότι χρησιμοποιείται όταν είναι γνωστό εκ των προτέρων το πλήθος των επαναλήψεων Ι<=Τ* Ι>=Τ** ψευδής Ι Ι+Β αληθής * Β>0 ** Β<0 ΓΙΑ Ι ΑΠΟ Α ΜΕΧΡΙ Τ ΜΕ ΒΗΜΑ Β ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Για Ι από Α μέχρι Τ με_ βήμα Β ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Στη χρήση εμφωλευμένων επαναλήψεων (βρόχων) πρέπει να τηρούνται οι παρακάτω κανόνες: 1. Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό. Ο βρόχος που ξεκινάει τελευταίος, πρέπει να ολοκληρώνεται πρώτος. 2. Η είσοδος σε κάθε βρόχο γίνεται υποχρεωτικά από την αρχή του. 3. Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσότερων εμφωλευμένων βρόχων. ΚΕΦΑΛΑΙΟ 9 ο - ΠΙΝΑΚΕΣ Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με κοινό όνομα ακολουθούμενο από ένα δείκτη (βολικός και ταχύς τρόπος διαχείρισης πολλών δεδομένων). ΜΕΙΟΝΕΚΤΗΜΑΤΑ ΣΤΗ ΧΡΗΣΗ ΠΙΝΑΚΩΝ λόγω του ότι είναι στατικές δομές δεδομένων: 1. Απαιτούν μνήμη. Άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει σε αδυναμία εκτέλεσης του προγράμματος (έλλειψη μνήμης). 2. Δεσμεύουν μνήμη που πιθανόν δεν επαρκεί για τις ανάγκες του χρήστη. (περιορισμός δυνατότητας προγράμματος) 9
9.4 ΤΥΠΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ : άθροισμα στοιχείων μέγιστο-ελάχιστο στοιχείο ταξινόμηση πίνακα αναζήτηση στοιχείου o o σειριακή πιο απλή που χρησιμοποιείται σε μη ταξινομημένους πίνακες δυαδική πιο αποτελεσματική που χρησιμοποιείται αποκλειστικά σε ταξινομημένους πίνακες συγχώνευση πινάκων. ΚΕΦΑΛΑΙΟ 10 ο ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 10.1 ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. 10.2 ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ (ΙΔΙΟΤΗΤΕΣ) 1) Κάθε υποπρόγραμμα έχει μόνο μια είσοδο και μια έξοδο. 2) Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. 3) Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο. 10.3 ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΜΗΜΑΤΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 1) Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντίστοιχου προγράμματος. 2) Διευκολύνει την κατανόηση και διόρθωση του προγράμματος. 3) Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος. 4) Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού. 10.4 & 10.5 Οι παράμετροι είναι μεταβλητές που επιτρέπουν το πέρασμα τιμών από ένα τμήμα προγράμματος σε άλλο και δηλώνονται στο τμήμα δηλώσεων του προγράμματος ή υποπρογράμματος που τις χρησιμοποιεί. Οι παράμετροι που χρησιμοποιούνται στην κλήση του υποπρογράμματος λέγονται πραγματικές παράμετροι, ενώ οι παράμετροι στον ορισμό (δήλωση) του υποπρογράμματος ονομάζονται τυπικές παράμετροι. Κανόνες για τις λίστες των παραμέτρων: Ο αριθμός (πλήθος) των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος. Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση (σειρά). Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι ίδιου τύπου (ειδικά δε όταν είναι πίνακες πρέπει να είναι και ίδιου μεγέθους.) Τα υποπρογράμματα στη ΓΛΩΣΣΑ γράφονται μετά το κύριο πρόγραμμα. 10
10.5 ΕΙΔΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ 1. ΔΙΑΔΙΚΑΣΙΕΣ:τύπος υποπρογραμμάτων που μπορούν και εκτελούν όλες τις λειτουργίες ενός προγράμματος. ΟΡΙΣΜΟΣ ΔΙΑΔΙΚΑΣΙΑΣ (δομή-σύνταξη): ΔΙΑΔΙΚΑΣΙΑ Όνομα (λίστα τυπικών παραμέτρων-(προαιρετική)) Τμήμα δηλώσεων ΑΡΧΗ ΚΛΗΣΗ ΔΙΑΔΙΚΑΣΙΑΣ... Εντολές ΚΑΛΕΣΕ Όνομα (λίστα πραγματικών παραμέτρων)... ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 2. ΣΥΝΑΡΤΗΣΕΙΣ: τύπος υποπρογραμμάτων που υπολογίζουν και επιστρέφουν μόνο μια τιμή, με το όνομά τους (δεν πρέπει να περιέχουν ΓΡΑΨΕ, ΔΙΑΒΑΣΕ). ΟΡΙΣΜΟΣ ΣΥΝΑΡΤΗΣΗΣ (δομή-σύνταξη): ΣΥΝΑΡΤΗΣΗ Όνομα (λίστα τυπικών παραμέτρων) : τύπος συνάρτησης* Τμήμα δηλώσεων ΑΡΧΗ... Εντολές... Όνομα έκφραση!απαραιτητη ΕΝΤΟΛΗ... ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ * τύπος συνάρτησης: (ΑΚΕΡΑΙΑ, ΠΡΑΓΜΑΤΙΚΗ, ΧΑΡΑΚΤΗΡΑΣ, ΛΟΓΙΚΗ) Όταν ένα υποπρόγραμμα καλείται από το κύριο πρόγραμμα ή από άλλο υποπρόγραμμα τότε η διεύθυνση της επόμενης εντολής μετά την εντολή κλήσης, που ονομάζεται διεύθυνση επιστροφής, αποθηκεύεται από το μεταφραστή σε μια στοίβα που ονομάζεται στοίβα χρόνου εκτέλεσης. 10.6 Εμβέλεια μεταβλητών-σταθερών Το τμήμα του προγράμματος που ισχύουν οι μεταβλητές λέγεται εμβέλεια (scope) μεταβλητών. Αρχές (είδη) εμβέλειας ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΗΣ Δεν υπάρχει ιδιαίτερη εντολή κλήσης, αλλά καλείται με χρήση του : Όνομα(λίστα πραγματικών παραμέτρων) σαν μια μεταβλητή. Απεριόριστη εμβέλεια Σύμφωνα με αυτή την αρχή όλες οι μεταβλητές και όλες οι σταθερές είναι γνωστές και μπορούν να χρησιμοποιούνται σε οποιοδήποτε τμήμα του προγράμματος, άσχετα που δηλώθηκαν. Όλες οι μεταβλητές είναι (ονομάζονται) καθολικές. Η Απεριόριστη εμβέλεια καταστρατηγεί την αρχή της αυτονομίας των υποπρογραμμάτων, δημιουργεί πολλά προβλήματα και τελικά είναι αδύνατη για μεγάλα προγράμματα με πολλά υποπρογράμματα, αφού ο καθένας που γράφει κάποιο υποπρόγραμμα πρέπει να γνωρίζει τα ονόματα όλων των μεταβλητών που χρησιμοποιούνται στα υπόλοιπα υποπρογράμματα. 11
Περιορισμένη εμβέλεια Η περιορισμένη εμβέλεια υποχρεώνει όλες τις μεταβλητές που χρησιμοποιούνται σε ένα τμήμα προγράμματος, να δηλώνονται σε αυτό το τμήμα. Όλες οι μεταβλητές είναι τοπικές, ισχύουν δηλαδή για το υποπρόγραμμα στο οποίο δηλώθηκαν. Στη ΓΛΩΣΣΑ έχουμε περιορισμένη εμβέλεια. Τα πλεονεκτήματα της περιορισμένης εμβέλειας είναι η απόλυτη αυτονομία όλων των υποπρογραμμάτων και η δυνατότητα να χρησιμοποιείται οποιοδήποτε όνομα, χωρίς να ενδιαφέρει αν το ίδιο χρησιμοποιείται σε άλλο υποπρόγραμμα. Μερικώς περιορισμένη εμβέλεια Σύμφωνα με αυτή την αρχή άλλες μεταβλητές είναι τοπικές και άλλες καθολικές. Κάθε γλώσσα προγραμματισμού έχει τους δικούς της κανόνες και μηχανισμούς για τον τρόπο και τις προϋποθέσεις που ορίζονται οι μεταβλητές ως τοπικές ή καθολικές. Η μερικώς περιορισμένη εμβέλεια προσφέρει μερικά πλεονεκτήματα στον πεπειραμένο προγραμματιστή, αλλά για τον αρχάριο περιπλέκει το πρόγραμμα δυσκολεύοντας την ανάπτυξή του. 12