Περιεχόμενα
Τι
είναι δεδομένο, πληροφορία, επεξεργασία δεδομένων
Διαγραμματική
αναπαράσταση προβλήματος
Στάδια
Αντιμετώπισης προβλήματος
Ποια
κριτήρια πρέπει να ικανοποιεί ένας αλγόριθμος
Από
ποιες σκοπιές μελετά η πληροφορική τους αλγορίθμους (επιγραμματικά και δικά
μας λόγια)
Τρόποι
αναπαράστασης ενός αλγορίθμου:
Απλή,
Σύνθετη, Πολλαπλή, Εμφωλευμένη Επιλογή
Από
ποιες σκοπιές μελετά η πληροφορική τα δεδομένα (επιγραμματικά και δικά μας
λόγια)
Ποιες
οι βασικές λειτουργίες (ή αλλιώς πράξεις) επί των δομών δεδομένων.
Αλγόριθμοι
+ Δομές Δεδομένων = Προγράμματα
Πότε
δικαιολογείται η χρήση της σειριακής αναζήτησης
Ταξινόμηση
Φυσαλίδας (Ευθείας Ανταλλαγής)
Τι
περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα σύγχρονο υπολογιστικό
περιβάλλον
Ποια
ερωτήματα πρέπει να απαντηθούν κατά την ανάλυση ενός προβλήματος
Γιατί
η ανάλυση κάθε προβλήματος είναι απαραίτητη
Υπάρχει
κανόνας για την επίλυση προβλημάτων?.
Γιατί
παρουσιάζουν ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων
Γιατί
αναπτύχθηκαν οι γλώσσες προγραμματισμού
Διαφορές
φυσικών και τεχνητών γλωσσών.
Τι
είναι – πως λειτουργεί η ιεραρχική σχεδίαση προγράμματος.
Ποιος
ο σκοπός της ιεραρχικής σχεδίασης
Πλεονεκτήματα
Δομημένου Προγραμματισμού
Τι
είναι αντικείμενο πρόγραμμα
Ποια
είναι η διαδικασία μεταγλώττισης και σύνδεσης
Πλεονεκτήματα
– Μειονεκτήματα Μεταγλωττιστή – Διερμηνευτή
Τι
χρειάζομαι για να γράψω – μεταφράσω – εκτελέσω ένα πρόγραμμα
Ποιες
οι συναρτήσεις της Γλώσσας
Πλεονέκτημα
– Μειονεκτήματα Πινάκων
Τι
είναι τμηματικός προγραμματισμός
Ιδιότητες
– Χαρακτηριστικά Υποπρογραμμάτων
Πλεονεκτήματα
τμηματικού προγραμματισμού
Ποιες
λίστες παραμέτρων υπάρχουν.
Κανόνες
που ακολουθούν οι λίστες παραμέτρων
Τι
λέγεται εμβέλεια μεταβλητών
Τι
είναι εκσφαλμάτωση και ποιος ο στόχος.
Με τον όρο Πρόβλημα εννοείται μια κατάσταση η οποία χρήζει αντιμετώπισης. απαιτεί λύση, η δε λύση της δεν είναι γνωστή ούτε προφανής.
Με τον όρο δεδομένο δηλώνεται οποιοδήποτε στοιχείο μπορεί να γίνει
αντιληπτό από έναν τουλάχιστον παρατηρητή με μία από τις πέντε αισθήσεις του.
Με τον όρο πληροφορία αναφέρεται οποιοδήποτε γνωσιακό στοιχείο
προέρχεται από επεξεργασία δεδομένων.
Ο όρος επεξεργασία δεδομένων δηλώνει εκείνη τη διαδικασία κατά την
οποία ένας "μηχανισμός" δέχεται δεδομένα, τα επεξεργάζεται σύμφωνα με
έναν προκαθορισμένο τρόπο και αποδίδει πληροφορίες.
Με τον όρο δομή ενός προβλήματος αναφερόμαστε στα συστατικά του μέρη, στα επιμέρους τμήματα που το αποτελούν καθώς επίσης και στον τρόπο που αυτά τα μέρη συνδέονται μεταξύ τους.
Για τη γραφική απεικόνιση της δομής ενός προβλήματος χρησιμοποιείται συχνότατα η διαγραμματική αναπαράσταση. Σύμφωνα με αυτή:
· το αρχικό πρόβλημα αναπαρίσταται από ένα ορθογώνιο παραλληλόγραμμο,
· κάθε ένα από τα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε πρόβλημα αναπαρίσταται επίσης από ένα ορθογώνιο παραλληλόγραμμο
· τα παραλληλόγραμμα που αντιστοιχούν στα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε πρόβλημα σχηματίζονται ένα επίπεδο χαμηλότερα. Έτσι σε κάθε κατώτερο επίπεδο, δημιουργείται η γραφική αναπαράσταση των προβλημάτων στα οποία αναλύονται τα προβλήματα του αμέσως υψηλότερου επιπέδου.
Η σωστή επίλυση ενός προβλήματος προϋποθέτει τον επακριβή προσδιορισμό των δεδομένων που παρέχει το πρόβλημα. Απαιτεί επίσης τη λεπτομερειακή καταγραφή των ζητούμενων που αναμένονται σαν αποτελέσματα της επίλυσης του προβλήματος.
Τα στάδια αντιμετώπισης ενός προβλήματος είναι τρία
· κατανόηση, όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδομένων και των ζητούμενων του προβλήματος
· ανάλυση, όπου το αρχικό πρόβλημα διασπάται σε άλλα επιμέρους απλούστερα προβλήματα
· επίλυση, όπου υλοποιείται η λύση του προβλήματος, μέσω της λύσης των επιμέρους προβλημάτων.
Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος.
α. Είσοδος (input). Καμία μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.
β. Έξοδος (output). Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν άλλο αλγόριθμο.
γ. Καθοριστικότητα (definiteness). Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. Λόγου χάριν, μία εντολή διαίρεσης πρέπει να θεωρεί και την περίπτωση όπου ο διαιρέτης λαμβάνει μηδενική τιμή.
δ. Περατότητα (finiteness). Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Μία διαδικασία που δεν τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται απλά υπολογιστική διαδικασία (computational procedure).
ε. Αποτελεσματικότητα (effectiveness). Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή. Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί, αλλά πρέπει να είναι και εκτελέσιμη.
α. Υλικού (hardware). Η ταχύτητα εκτέλεσης ενός αλγορίθμου επηρεάζεται από τις διάφορες τεχνολογίες υλικού
β. Γλωσσών Προγραμματισμού (programming languages).Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (δηλαδή, χαμηλότερου ή υψηλότερου επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός αλγορίθμου.
γ. Θεωρητική (theoretical). Το ερώτημα που συχνά τίθεται είναι αν πράγματι υπάρχει ή όχι κάποιος αποδοτικός αλγόριθμος για την επίλυση ενός προβλήματος.
δ. Αναλυτική (analytical). Μελετώνται οι υπολογιστικοί πόροι (computer resources) που απαιτούνται από έναν αλγόριθμο,
α. με ελεύθερο κείμενο (free text), που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης αλγορίθμου. Μπορεί να παραβιαστεί η αποτελεσματικότητα.
β. με διαγραμματικές τεχνικές (diagramming techniques), που συνιστούν ένα γραφικό τρόπο παρουσίασης του αλγορίθμου. Από τις διάφορες διαγραμματικές τεχνικές που έχουν επινοηθεί η πιο παλιά και η πιο γνωστή ίσως, είναι το διάγραμμα ροής (flow chart). Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν αποτελεί την καλύτερη λύση, για αυτό και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη.
γ. με φυσική γλώσσα (natural language) κατά βήματα. Στην περίπτωση αυτή χρειάζεται προσοχή, γιατί μπορεί να παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου, όπως προσδιορίσθηκε προηγουμένως, δηλαδή το κριτήριο του καθορισμού.
δ. με κωδικοποίηση (coding), δηλαδή με ένα πρόγραμμα γραμμένο είτε σε μία ψευδογλώσσα είτε σε κάποια γλώσσα προγραμματισμού που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο.
Παράδειγμα : Να δοθεί αλγόριθμος που διαβάζει τους βαθμούς ενός σπουδαστή σε δύο εργασίες, ενός μαθήματος και να ελέγχει αν έχει το δικαίωμα να δώσει γραπτή εξέταση. Ο σπουδαστής έχει το δικαίωμα να δώσει γραπτή εξέταση αν ο μέσος όρος της βαθμολογίας των δύο εργασιών είναι μεγαλύτερος του 5.
Ελεύθερο κείμενο:
Πάρε τους βαθμούς της πρώτης εργασίας και της δεύτερης εργασίας. Πρόσθεσε τους δύο βαθμούς και διαίρεσε το άθροισμα με το 2. Αν το αποτέλεσμα είναι μεγαλύτερο από το 5, τότε ο σπουδαστής έχει το δικαίωμα να δώσει γραπτή εξέταση. Διαφορετικά πρέπει να επαναλάβει το μάθημα.
Φυσική Γλώσσα με βήματα
Βήμα 1. Διάβασε τους βαθμούς των δύο εργασιών: Εργασία 1 και Εργασία 2
Βήμα 2. Θέσε Άθροισμα = Εργασία 1 + Εργασία2
Βήμα 3. Θέσε Μέσος = Άθροισμα / 2
Βήμα 4. Αν Μέσος > 5 τότε πήγαινε στο βήμα 5 αλλιώς πήγαινε στο βήμα 7 Βήμα 5. Εμφάνισε "Μπορεί να δώσει γραπτή εξέταση"
Βήμα 6. Πήγαινε στο βήμα 8
Βήμα 7. Εμφάνισε "Πρέπει να επαναλάβει το μάθημα"
Βήμα 8. Τέλος Αλγορίθμου.
Κωδικοποίηση
Αλγόριθμος Σπουδαστής
Διάβασε Εργασία 1, Εργασία2
Άθροισμα <- Εργασία 1 + Εργασία2
Μέσος <- Άθροισμα / 2
Αν Μέσος > 5 Τότε
Εμφάνισε "Μπορεί να δώσει γραπτή εξέταση"
Αλλιώς
Εμφάνισε "Δεν Μπορεί να δώσει γραπτή εξέταση"
Τέλος_αν
Τέλος αλγορίθμου
Διαγραμματικές Τεχνικές
Διάγραμμα Ροής
Σταθερές (constants). Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου. Οι σταθερές διακρίνονται σε
α. αριθμητικές, π.χ. 123, +5, -1,25
β. αλφαριθμητικές π.χ. Τιμή", ‘Κατάσταση αποτελεσμάτων"
γ. λογικές μόνο 2 Αληθής και Ψευδής
Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο, που χρησιμοποιείται για να παραστήσει ένα στοιχείο δεδομένου., οι μεταβλητές διακρίνονται σε αριθμητικές(ακέραιο, πραγματικοί) αλφαριθμητικές(χαρακτήρες) και λογικές.
Τελεστές (operators). Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πράξεις Οι τελεστές διακρίνονται σε αριθμητικούς λογικούς και συγκριτικούς.
Αριθμητικοί: +, -, \ /, Λ, div, mod (ιεραρχία όπως στα μαθηματικά)
Συγκριτικοί: <,<=,>,>=,=,<> (ιεραρχία από αριστερά προς δεξιά)
Λογικοί: όχι (άρνηση), και (σύζευξη), ή (διάζευξη),

Απλή

Σύνθετη

Πολλαπλή

Εμφωλευμένη
Παίρνω ένα δεκαδικό ακέραιο και τον μετατρέπω στον δυαδικό αντίστοιχο. Αν μετακινήσω δεξιά κατά μία θέση τον δυαδικό αριθμό (δηλαδή χαθεί το δεξιότερο 0 ή 1) και στη θέση του μπει από αριστερά ένα 0 τότε έκανα ακέραια διαίρεση με το 2 (div 2). Αν μετακινήσω αριστερά κατά μία θέση τον δυαδικό αριθμό (δηλαδή χαθεί το αριστερότερο 0 ή 1) και στη θέση του μπει από δεξιά ένα 0 τότε έκανα πολλαπλασιασμό με το 2 (* 2) .
Υλικού. Το υλικό (hardware), δηλαδή η μηχανή, επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη και στις περιφερειακές συσκευές του υπολογιστή με διάφορες αναπαραστάσεις (representations
Γλωσσών προγραμματισμού. Οι γλώσσες προγραμματισμού υψηλού επιπέδου (high level programming languages) επιτρέπουν τη χρήση διάφορων τύπων (types) μεταβλητών (variables) για να περιγράφουν ένα δεδομένο.
Δομών Δεδομένων. -à εδώ περιγράφει τι είναι δομή δεδομένων, θα το δούμε μετά και τι είναι δομές δευτερεύουσας μνήμης και αυτό θα το δούμε μετά ß-
Ανάλυσης Δεδομένων. Τρόποι καταγραφής και αλληλοσυσχέτισης των δεδομένων μελετώνται έτσι ώστε να αναπαρασταθεΙ η γνώση για πραγματικά γεγονότα
Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών.
ΔΕΝ ΧΡΗΣΙΜΟΠΟΙΟΥΝΤΑΙ ΟΛΕΣ ΟΙ ΛΕΙΤΟΥΡΓΙΕΣ ΣΕ ΟΛΕΣ ΤΙΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ.
Πχ σε μια δυναμική δομή δεδομένων δεν γίνεται ταξινόμηση όπως σε μία στατική
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες: τις στατικές (static) και τις δυναμικές (dynamic). Οι δυναμικές δομές δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά στηρίζονται στην τεχνική της λεγόμενης δυναμικής παραχώρησης μνήμης (dynamic memory allocation). Με άλλα λόγια, οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους μεγαλώνει και μικραίνει καθώς στη δομή εισάγονται νέα δεδομένα ή διαγράφονται κάποια δεδομένα αντίστοιχα.
· Όλες οι σύγχρονες γλώσσες προσφέρουν δυναμικές δομές δεδομένων
· Οι στατικές είναι πιο εύκολες στην υλοποίηση
Με τον όρο στατική δομή δεδομένων:
· Το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους, και κατά συνέπεια κατά τη στιγμή της μετάφρασής τους και όχι κατά τη στιγμή της εκτέλεσης τους προγράμματος. ( θα το δούμε στο 6.7 μεταγλώττιση – εκτέλεση )
· Μία άλλη σημαντική διαφορά σε σχέση με τις δυναμικές δομές είναι ότι τα στοιχεία των στατικών δομών αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.
Οι στατικές δομές δεδομένων υλοποιούνται με πίνακες.
flag ← ψευδής
θ ← 0
i ← 1
Όσο (flag=ψευδής) και (i<=n)
επανάλαβε
Αν table[i]=key τότε
done ← αληθής
θ ← i
αλλιώς
i ← i+1
Τέλος_αν
Τέλος_επανάληψης
Αν done=ψευδής τότε
Γράψε ‘Δεν βρέθηκε’
Αλλιώς
Γράψε ‘Βρέθηκε στη θέση’,θ
Τέλος_αν
Ή
Αν θ=0 τότε
Γράψε ‘Δεν βρέθηκε’
Αλλιώς
Γράψε ‘Βρέθηκε στη θέση’,θ
Τέλος_αν
Η δυαδική αναζήτηση στηρίζει τη λειτουργία της στο γεγονός
ότι ο πίνακας είναι ταξινομημένος. Έτσι με χρήση δυο
δεικτών του L ( Left ) και του R ( Right ) καθορίζει αρχικά την αρχή και το τέλος του πίνακα.
Από τις τιμές των δυο αυτών δεικτών υπολογίζει τη μεσαία θέση του πίνακα (M =
(L+R) DIV 2) και εκεί κάνει τη σύγκριση με το στοιχείο που ψάχνει. Αν το
στοιχείο που υπάρχει στη μεσαία θέση είναι μικρότερο από αυτό που ψάχνουμε τότε
το τελευταίο αποκλείεται να βρίσκεται αριστερά από τη θέση του Μ , άρα μετακινεί
τον δείκτη L μια θέση δεξιά από το M ορίζοντας έτσι μια άλλη περιοχή του πίνακα
στην οποία θα γίνει η αναζήτηση . Στην πραγματικότητα αφαιρεί από την αναζήτηση
το τμήμα του πίνακα που βρίσκεται αριστερά του Μ . Το αντίστοιχο συμβαίνει αν
το στοιχείο που περιέχεται στη θέση Μ είναι μεγαλύτερο από αυτό που ψάχνουμε.
Όλη αυτή η διαδικασία έχει ως αποτέλεσμα την ταχύτατη εύρεση του υπό αναζήτηση
στοιχείου.
L←1
R←n
flag ←ΨΕΥΔΗΣ
Όσο flag=ΨΕΥΔΗΣ και
L<=R επανάλαβε
M←(L+R) DIV 2
Αν table[M] = key τότε
D← ΑΛΗΘΗΣ
Αλλιώς_αν table[M]<key
τότε
L←M+1
Αλλιώς
R←M-1
Τέλος_αν
Τέλος_επανάληψης
Αν flag = ΑΛΗΘΗΣ τότε
Εμφάνισε ‘Βρέθηκε το στοιχείο στη θέση:’, Μ
Αλλιώς
Εμφάνισε ‘Δεν βρέθηκε το στοιχείο’
Τέλος_αν
Για i από 2 μέχρι n
Για j από n μέχρι i με_βήμα -1
Αν table[j-1] > table[j] τότε
Tempß table[j-1]
table[j-1] ß table[j]
table[j] ß temp
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Παρατήρηση: Η ταξινόμηση φυσαλίδας είναι ο πιο απλός και ταυτόχρονα ο πιο αργός αλγόριθμος ταξινόμησης.
Για i από 1 μέχρι Ν
j ← i
min ← A[j]
Για k από i + 1 μέχρι Ν
Αν A[k] < min τότε
j ← k
min ←
A[j]
Τέλος_αν
Τέλος_επανάληψης
temp
← A[i]
A[i] ← A[j]
A[j] ← temp
Τέλος_επανάληψης
1. την καταγραφή της υπάρχουσας πληροφορίας για το πρόβλημα,
2. την αναγνώριση των ιδιαιτεροτήτων του προβλήματος,
3. την αποτύπωση των συνθηκών και προϋποθέσεων υλοποίησής του
4. την πρόταση επίλυσης με χρήση κάποιας μεθόδου, και
5. την τελική επίλυση με χρήση υπολογιστικών συστημάτων.
1. Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος,
2. Ποιες είναι οι συνθήκες που πρέπει να πληρούνται για την επίλυση του προβλήματος,
3. Ποια είναι η πλέον αποδοτική μέθοδος επίλυσής τους (σχεδίαση αλγορίθμου),
4. Πώς θα καταγραφεί η λύση σε ένα πρόβλημα (π.χ. σε ψευδογλώσσα),
5. Ποιος είναι ο τρόπος υλοποίησης στο συγκεκριμένο υπολογιστικό σύστημα (π.χ. επιλογή γλώσσας προγραμματισμού).
Για να αναζητηθεί η πλέον κατάλληλη μέθοδος που να παρέχει τη ζητούμενη λύση, όσο γίνεται ταχύτερα και με το λιγότερο δυνατό
κόστος σε υπολογιστικούς πόρους.
Δεν υπάρχει ένας ενιαίος κανόνας, μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των
προβλημάτων. Υπάρχουν όμως "συγγενή" προβλήματα, δηλαδή προβλήματα που μπορούν να αναλυθούν με παρόμοιο τρόπο και να αντιμετωπισθούν με αντίστοιχες μεθόδους και τεχνικές
1. παρέχουν ένα γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας,
2. μπορούν να αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου
3. παρέχουν τη δυνατότητα καταγραφής των χρονικών και "χωρικών" απαιτήσεων της μεθόδου επίλυσης, έτσι ώστε να μπορεί να γίνει επακριβής εκτίμηση των αποτελεσμάτων.
Πρόγραμμα είναι το σύνολο των εντολών που πρέπει να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος.
Οι γλώσσες προγραμματισμού αναπτύχθηκαν για την επικοινωνία ανθρώπου – υπολογιστή
Αλφάβητο μίας γλώσσας καλείται το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα. (Α-Ω , 0-9 κλπ)
Το λεξιλόγιο αποτελείται από ένα υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου, τις λέξεις που είναι δεκτές από την γλώσσα. (ΑΒΓΑ όχι ΑΒΓΔΑ)
Η Γραμματική αποτελείται από το τυπικό ή τυπολογικό (accidence) και το συντακτικό (syntax).
Τυπικό είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μία λέξη είναι αποδεκτή. (γλώσσα – γλώσσες όχι γλώσσατ )
Συντακτικό είναι το σύνολο των κανόνων που καθορίζει τη νομιμότητα της διάταξης και της σύνδεσης των λέξεων της γλώσσας για τη δημιουργία προτάσεων. Αυτός που ξέρει καλό συντακτικό στις φυσικές γλώσσες κάνει σωστές προτάσεις ενώ στις τεχνητές κάνει σωστές εντολές.
Η σημασιολογία (Semantics) είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων και κατά επέκταση των εκφράσεων και προτάσεων που χρησιμοποιούνται σε μία γλώσσα.
Μια βασική διαφορά είναι ότι οι φυσικές γλώσσες εξελίσσονται ενώ οι τεχνητές χαρακτηρίζονται από στασιμότητα. Μπορεί βέβαια και οι τεχνητές να αλλάξουν για να διορθώσουν αδυναμίες, να καλύψουν νέες εφαρμογές ή νέες εξελίξεις.
Η τεχνική της ιεραρχικής σχεδίασης και επίλυσης ή η διαδικασία σχεδίασης "από επάνω προς τα κάτω" όπως συχνά ονομάζεται (top-down program design) περιλαμβάνει τον καθορισμό των βασικών λειτουργιών ενός προγράμματος, σε ανώτερο επίπεδο, και στη συνέχεια τη διάσπαση των λειτουργιών αυτών σε όλο και μικρότερες λειτουργίες, μέχρι το τελευταίο επίπεδο που οι λειτουργίες είναι πολύ άπλες, ώστε να επιλυθούν εύκολα.
Σκοπός της ιεραρχικής σχεδίασης είναι η διάσπαση λοιπόν του προβλήματος σε μια σειρά από απλούστερα υποπροβλήματα, τα οποία να είναι εύκολο να επιλυθούν οδηγώντας στην επίλυση του αρχικού προβλήματος.
Η ιεραρχική σχεδίαση προγράμματος υλοποιείται με τον τμηματικό προγραμματισμό. Μετά την ανάλυση του προβλήματος σε αντίστοιχα υποπροβλήματα, κάθε υποπρόβλημα αποτελεί ανεξάρτητη ενότητα (module), που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα προγράμματος.
Ο δομημένος προγραμματισμός στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών, τη δομή της ακολουθίας, τη δομή της επιλογής και τη δομή της επανάληψης. Όλα τα προγράμματα μπορούν να γράφουν χρησιμοποιώντας μόνο αυτές τις τρεις δομές καθώς και συνδυασμό τους. Κάθε πρόγραμμα όπως και κάθε ενότητα προγράμματος έχει μόνο μία είσοδο και μόνο μία έξοδο.
1. Δημιουργία
απλούστερων προγραμμάτων.
2. Άμεση
μεταφορά των αλγορίθμων σε προγράμματα.
3. Διευκόλυνση
ανάλυσης του προγράμματος σε τμήματα.
4. Περιορισμός
των λαθών κατά την ανάπτυξη του προγράμματος.
5. Διευκόλυνση
στην ανάγνωση και κατανόηση του προγράμματος από τρίτους.
6. Ευκολότερη
διόρθωση και συντήρηση.
Ο μεταγλωττιστής είναι ένα μεταφραστικό πρόγραμμα, που δέχεται στην είσοδο ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής. Το τελευταίο μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή και είναι τελείως ανεξάρτητο από το αρχικό πρόγραμμα.
Ο διερμηνευτής είναι ένα μεταφραστικό πρόγραμμα, που διαβάζει μία προς μία τις εντολές του αρχικού προγράμματος και για κάθε μια εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής.
Το αρχικό πρόγραμμα λέγεται πηγαίο πρόγραμμα (source) (κατανοητό από τον άνθρωπο)
Είναι ένας μικρός επεξεργαστής κείμενου, που χρησιμοποιούμε για να γράφουμε γρήγορα εντολές προγράμματος, δηλαδή το πηγαίο πρόγραμμα.
Το πρόγραμμα που παράγεται από το μεταγλωττιστή λέγεται αντικείμενο πρόγραμμα (object). (ακατανόητο από τον άνθρωπο)
Το αντικείμενο πρόγραμμα είναι μεν σε μορφή κατανοητή από τον υπολογιστή, αλλά συνήθως δεν είναι σε θέση να εκτελεστεί. Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα προγράμματος απαραίτητα για την εκτέλεσή του, τμήματα που είτε τα γράφει ο προγραμματιστής είτε βρίσκονται στις βιβλιοθήκες (libraries) της γλώσσας. Το πρόγραμμα που επιτρέπει αυτή τη σύνδεση ονομάζεται συνδέτης - φορτωτής (linker- loader)
Το αποτέλεσμα του συνδέτη είναι η παραγωγή του εκτελέσιμου
προγράμματος (executable), το οποίο είναι το
τελικό πρόγραμμα που εκτελείται από τον υπολογιστή. (ακατανόητο
από τον άνθρωπο)

Μεταγλωττιστής
Μειονέκτημα: Πρέπει όλα το πρόγραμμα να μεταγλωττιστεί και μετά να εκτελεστεί.
Πλεονέκτημα: Πιο γρήγορο εκτελέσιμο πρόγραμμα
Διερμηνευτής:
Μειονέκτημα: Πιο αργό εκτελέσιμο πρόγραμμα
Πλεονέκτημα: Άμεση διόρθωση και εκτέλεση
Για τη δημιουργία, τη μετάφραση και την εκτέλεση ενός προγράμματος απαιτούνται τουλάχιστον τρία προγράμματα: ο συντάκτης, ο μεταγλωττιστής και ο συνδέτης. Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν αυτά τα προγράμματα με ενιαίο τρόπο.
|
ΗΜ(Χ) |
Υπολογισμός
ημίτονου |
|
ΣΥΝ(Χ) |
Υπολογισμός
συνημίτονου |
|
ΕΦ(Χ) |
Υπολογισμός
εφαπτομένης |
|
Τ_Ρ(Χ) |
Υπολογισμός
τετραγωνικής ρίζας |
|
ΛΟΓ(Χ) |
Υπολογισμός
φυσικού λογαρίθμου |
|
Ε(Χ) |
Υπολογισμός
του ex |
|
Α_Μ(Χ) |
Ακέραιο
μέρος του Χ |
|
Α_Τ(Χ) |
Απόλυτη
τιμή του Χ |
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ...ΤΟΤΕ...ΑΛΛΙΩΣ που περιέχονται η μία μέσα στην άλλη.
Είναι η τιμή που βάζουμε ( τις πιο πολλές φορές το 0 ) στις επαναλήψεις για να σταματάνε.
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Η αναφορά σε ατομικά στοιχεία του πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη.
Πλεονεκτήματα
Είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου.
Μειονεκτήματα
· Οι πίνακες απαιτούν μνήμη. Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης.
· Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος (Αφού οι πίνακες είναι στατικές δομές δεδομένων και δεν αλλάζουν μέγεθος)
Γενικά, αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη μνήμη μέχρι το τέλος της εκτέλεσης, τότε η χρήση πινάκων βοηθάει ή συχνά είναι απαραίτητη για την επίλυση του προβλήματος. Σε άλλη περίπτωση μπορεί να αποφεύγεται η χρήση τους.
Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.
· Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος.
Λύνουμε απλούστερα προβλήματα και όχι όλο το πρόβλημα. Αφού λύσουμε όλα τα υποπροβλήματα μετά επιλύεται το συνολικό πρόβλημα
· Διευκολύνει την κατανόηση και διόρθωση του προγράμματος.
Με τον χωρισμό σε υποπρογράμματα γίνεται πιο εύκολη η διόρθωση χωρίς να επηρεάζεται όλο το πρόγραμμα. Επίσης μπορεί κάποιος να κατανοήσει το πρόγραμμα.
· Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος.
Πολύ συχνά χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή που ένα υποπρόγραμμα έχει γραφεί, μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος. Έτσι μειώνονται το μέγεθος του προγράμματος, ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους, ενώ ταυτόχρονα το πρόγραμμα γίνεται πιο εύληπτο και κατανοητό.
· Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού.
Ένα υποπρόγραμμα που έχει γραφεί μπορεί να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα. Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθηκών με αυτά, ουσιαστικά επεκτείνουν την ίδια τη γλώσσα προγραμματισμού.
Μία παράμετρος είναι μία μεταβλητή που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο.
Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της (όπως οι μαθηματικές συναρτήσεις).
Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος.
Η λίστα των τυπικών παραμέτρων (formal
parameter list) καθορίζει
τις παραμέτρους στη δήλωση του υποπρογράμματος.
Η λίστα των πραγματικών παραμέτρων (actual parameter list) καθορίζει τις
παραμέτρους στην κλήση του υποπρογράμματος.
Πολλές φορές η λίστα των τυπικών παραμέτρων λέγονται ορίσματα
και αυτή των πραγματικών παραμέτρων παράμετροι.
·
Ο αριθμός των πραγματικών και των τυπικών
παραμέτρων πρέπει να είναι ίδιος.
·
Κάθε πραγματική παράμετρος αντιστοιχεί στην
τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση. Για παράδειγμα η πρώτη της
λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων
κοκ.
·
Η τυπική παράμετρος και η αντίστοιχη της
πραγματική πρέπει να είναι του ιδίου τύπου.
Το τμήμα του προγράμματος που ισχύουν οι μεταβλητές λέγεται εμβέλεια (scope) μεταβλητών.
Απεριόριστη Εμβέλεια
Όλες οι μεταβλητές και όλες οι σταθερές είναι γνωστές και μπορούν να χρησιμοποιούνται σε οποιοδήποτε τμήμα του προγράμματος, άσχετα που δηλώθηκαν. Όλες οι μεταβλητές είναι καθολικές. Η απεριόριστη εμβέλεια καταστρατηγεί την αρχή της αυτονομίας των υποπρογραμμάτων.
Περιορισμένη εμβέλεια
Η περιορισμένη εμβέλεια υποχρεώνει όλες τις μεταβλητές
που χρησιμοποιούνται σε ένα τμήμα προγράμματος, να δηλώνονται σε αυτό το τμήμα.
Όλες οι μεταβλητές είναι τοπικές, ισχύουν δηλαδή για το
υποπρόγραμμα στο οποίο δηλώθηκαν. Στη ΓΛΩΣΣΑ έχουμε
περιορισμένη εμβέλεια.
Μερικώς περιορισμένη εμβέλεια.
Σύμφωνα με αυτή την αρχή άλλες μεταβλητές είναι τοπικές
και άλλες καθολικές. Η μερικώς
περιορισμένη εμβέλεια προσφέρει μερικά πλεονεκτήματα στον πεπειραμένο
προγραμματιστή, αλλά για τον αρχάριο περιπλέκει το πρόγραμμα δυσκολεύοντας την
ανάπτυξή του.
Η διαδικασία ελέγχου, εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση (debugging). Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που προκαλούν προβλήματα στη λειτουργία του.