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

Download Report

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

Η Έννοια του Προγράμματος
Στάδια επίλυσης προβλήματος
Ακριβής προσδιορισμός προβλήματος
 Ανάπτυξη αντίστοιχου αλγορίθμου
 Διατύπωση του αλγορίθμου σε μορφή
κατανοητή από τον υπολογιστή

Καθηγητής: Σπύρος Ξουργιάς
1
Προγραμματισμός είναι η
δημιουργία του προγράμματος
Ένα σύνολο εντολών δίνονται στον Η/Υ,
ώστε να υλοποιηθεί ο αλγόριθμος επίλυσης
του προβλήματος
 Το πρόγραμμα γράφεται σε μια γλώσσα
προγραμματισμού
 Αλγόριθμος + Δεδομένα = Πρόγραμμα

Καθηγητής: Σπύρος Ξουργιάς
2
Γλώσσες Προγραμματισμού
Γλώσσες Μηχανής
 Συμβολικές Γλώσσες (χαμηλού επιπέδου)
με χρήση συμβολομεταφραστή (assembler)
 Γλώσσες υψηλού επιπέδου
(1957 FORTRAN, 1960 COBOL, ALGOL,
PL1,LISP, BASIC, PASCAL 1970
PROLOG, 1972 C, JAVA κ.λ.π.)
 Γλώσσες 4ης Γενιάς

Καθηγητής: Σπύρος Ξουργιάς
3
Παράδειγμα κώδικα που υπολογίζει το άθροισμα
από 1 μέχρι 10
Σε ΓΛΩΣΣΑ
ΜΗΧΑΝΗΣ
10101000 000001010
10001100 000000001
00111100
01010001 000000001
01000011 000000001
11000000 11111010
1000110 00000010
1111111
Σε Assembler
Σε ΓΛΩΣΣΑ basic
INDEX=$01
SUM=$02
LDA #10
STA INTEX
CLA
LOOP ADD INDEX
DEC INDEX
BNE SUM
BRK
sum = 0
FOR index=1 TO 10
Sum=sum+index
NEXT index
END
Καθηγητής: Σπύρος Ξουργιάς
4
Πλεονεκτήματα γλωσσών
υψηλού επιπέδου
Τρόπος έκφρασης κατανοητός από τον
άνθρωπο
 Ανεξαρτησία από τον Η/Υ
 Ευκολία στην εκμάθηση και εκπαίδευση
 Εύκολη διόρθωση λαθών και συντήρηση
προγραμμάτων

Καθηγητής: Σπύρος Ξουργιάς
5
Γλώσσες 4ης Γενιάς
Αποκρύπτουν την αρχιτεκτονική του υλικού
και της τεχνικής του προγραμματισμού .
 Ο χρήστης έχει τη δυνατότητα να υποβάλει
ερωτήσεις στο σύστημα, να δημιουργεί
σενάρια και να αναπτύσσει εφαρμογές.
 Οι πληροφορίες ανακτώνται από βάσεις
δεδομένων σύμφωνα με τις εκάστοτε
απαιτήσεις.

Καθηγητής: Σπύρος Ξουργιάς
6
Ταξινόμηση Γλωσσών
Προγραμματισμού
Διαδικασιακές ή αλγοριθμικές π.χ. Pascal
 Αντικειμενοστραφείς π.χ.Visual Basic
 Συναρτησιακές π.χ. LISP
 Μη διαδικασιακές π.χ.PROLOG
 Ερωταπαντήσεων SQL

Καθηγητής: Σπύρος Ξουργιάς
7
Ταξινόμηση με κριτήριο την
περιοχή χρήσης
Γενικής Χρήσης:
Επιστημονικής κατεύθυνσης π.χ. FORTRAN
Εμπορικής κατεύθυνσης π.χ. COBOL
 Προγραμματισμού συστημάτων π.χ. C
 Τεχνητής νοημοσύνης π.χ. LISP, PROLOG
 Ειδικής χρήσης που χρησιμοποιούνται στη
ρομποτική, στη σχεδίαση ολοκληρωμένων
κυκλωμάτων, βάσεων δεδομένων κ.λ.π.

Καθηγητής: Σπύρος Ξουργιάς
8
Ποια είναι η καλύτερη Γλώσσα
Προγραμματισμού;
Δεν
υπάρχει και ούτε
πρόκειται να υπάρξει!
Καθηγητής: Σπύρος Ξουργιάς
9
Οι γλώσσες προγραμματισμού
είναι τεχνητές γλώσσες και
προσδιορίζονται από:
Το αλφάβητο π.χ. Α-Ω,α-ω, 0-9, !,$,),[,%,?
 Το λεξιλόγιο π.χ. INPUT, READ, ΓΡΑΨΕ
 Τη Γραμματική, Τυπικό, συντακτικό
 Τη σημασιολογία

Καθηγητής: Σπύρος Ξουργιάς
10
Διαφορές φυσικών και τεχνικών
γλωσσών προγραμματισμού
Οι φυσικές γλώσσες εξελίσσονται
 Οι τεχνητές γλώσσες είναι στάσιμες
 Οι τεχνητές γλώσσες αλλάζουν επίπεδο
διαλέκτου για να βελτιωθούν
π.χ. GW-Basic, QuickBasic, Visual Basic

Καθηγητής: Σπύρος Ξουργιάς
11
Τεχνικές σχεδίασης
Προγραμμάτων
Ιεραρχική σχεδίαση προγράμματος
 Τμηματικός προγραμματισμός
 Δομημένος προγραμματισμός
 Αντικειμενοστραφής προγραμματισμός
 Παράλληλος προγραμματισμός

Καθηγητής: Σπύρος Ξουργιάς
12
Ιεραρχική σχεδίαση

Καθορίζονται οι βασικές λειτουργίες σε
ανώτερο επίπεδο και στη συνέχεια γίνεται
διάσπαση σε όλο και μικρότερες
λειτουργίες μέχρι το τελευταίο επίπεδο που
οι λειτουργίες είναι απλές και επιλύονται
εύκολα
Καθηγητής: Σπύρος Ξουργιάς
13
Τμηματικός προγραμματισμός


Στηρίζεται στον διαχωρισμό του προγράμματος σε
επί μέρους τμήματα, κάθε ένα από τα οποία
εκτελεί συγκεκριμένη λειτουργία και διασυνδέεται
με τα υπόλοιπα ώστε να επιλύεται το αρχικό
πρόβλημα
Πλεονεκτήματα είναι: η ευκολία στον
προγραμματισμό, η μείωση των λαθών, η εύκολη
κατανόηση και συντήρηση από τρίτους
Καθηγητής: Σπύρος Ξουργιάς
14
Δομημένος προγραμματισμός
Μεθοδολογία σύνταξης σύνθετων
προγραμμάτων με σκοπό να μειώσει τα
λάθη, να εξασφαλίσει την εύκολη
κατανόηση και συντήρηση.
 Χρησιμοποιούνται οι δομές ακολουθίας,
επιλογής και επανάληψης
 Κάθε πρόγραμμα και κάθε ενότητα έχει μία
είσοδο και μία έξοδο

Καθηγητής: Σπύρος Ξουργιάς
15
Πλεονεκτήματα Δομημένου
Προγραμματισμού
Απλά προγράμματα
 Μεταφορά αλγορίθμου σε πρόγραμμα
 Ανάλυση κατά τμήματα
 Περιορισμός λαθών
 Εύκολη ανάγνωση – κατανόηση
 Εύκολη διόρθωση και συντήρηση

Καθηγητής: Σπύρος Ξουργιάς
16
Εντολή GOTO
ΑΝ Αριθμός > 0 ΤΟΤΕ GOTO 1
ΑΝ Αριθμός = 0 ΤΟΤΕ GOTO 2
ΓΡΑΨΕ ‘Αρνητικός’
GOTO 4
1: ΓΡΑΨΕ ‘Θετικός’
GOTO 4
2: ΓΡΑΨΕ ‘ Μηδέν’
GOTO 4
4: ! Συνέχεια…
Καθηγητής: Σπύρος Ξουργιάς
17
Δομημένος Προγραμματισμός
ΑΝ Αριθμός >0 ΤΟΤΕ ΓΡΑΨΕ ‘Θετικός’
ΑΛΛΙΩΣ_ΑΝ Αριθμός =0 ΤΟΤΕ ΓΡΑΨΕ ‘Μηδέν’
ΑΛΛΙΩΣ ΓΡΑΨΕ ‘Αρνητικός’
ΤΕΛΟΣ_ΑΝ
Καθηγητής: Σπύρος Ξουργιάς
18
Προγραμματιστικά περιβάλλοντα




Τα προγράμματα που έχουν γραφεί σε οποιαδήποτε γλώσσα
προγραμματισμού για να γίνουν αναγνωρίσιμα και εκτελέσιμα
από τον υπολογιστή πρέπει να μετατραπούν σε γλώσσα
μηχανής.
Η μετατροπή γίνεται με ειδικά μεταφραστικά προγράμματα
τους μεταγλωττιστές και τους διερμηνευτές.
Ο μεταγλωττιστής (compiler) δέχεται στην είσοδο ένα
πρόγραμμα σε μια γλώσσα υψηλού επιπέδου και παράγει ένα
ισοδύναμο πρόγραμμα σε γλώσσα μηχανής που μπορεί να
εκτελείται οποτεδήποτε από τον υπολογιστή αφού είναι τελείως
ανεξάρτητο από το αρχικό πρόγραμμα.
Ο διερμηνευτής (interpreter) διαβάζει μία προς μία τις
εντολές του αρχικού προγράμματος και για κάθε μία εντολή
εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής
Καθηγητής: Σπύρος Ξουργιάς
19






Συντάκτης (editor): Χρησιμοποιείται για τη σύνταξη και
διόρθωση προγραμμάτων (είναι επεξεργαστής κειμένου).
Το αρχικό πρόγραμμα λέγεται πηγαίο ( source).
Το πρόγραμμα που παράγεται από τον μεταγλωττιστή
λέγεται αντικείμενο (object)
Το αντικείμενο πρόγραμμα είναι σε μορφή κατανοητή από
τον υπολογιστή αλλά για να εκτελεστεί πρέπει να συνδεθεί
με άλλα τμήματα προγράμματος.
Συνδέτης-φορτωτής (linker-loader): Συνδέει το
αντικείμενο πρόγραμμα που είναι σε γλώσσα μηχανής με
άλλα τμήματα προγράμματος, που είτε είναι σε
βιβλιοθήκες (libraries) της γλώσσας είτε τα γράφει ο
προγραμματιστής και παράγεται το εκτελέσιμο
πρόγραμμα (executable).
Η συνολική διαδικασία λέγεται μεταγλώττιση και
σύνδεση.
Καθηγητής: Σπύρος Ξουργιάς
20
Μεταγλώτισση και σύνδεση
Το πηγαίο πρόγραμμα μετατρέπεται σε εκτελέσιμο
Συντάκτης
Εκτελέσιμο
πρόγραμμα
Πηγαίο
πρόγραμμα
Συνδέτης
Φορτωτής
Καθηγητής: Σπύρος Ξουργιάς
Μεταγλωττιστής
Αντικείμενο
πρόγραμμα
21




Το εκτελέσιμο πρόγραμμα δημιουργείται μόνο αν το αρχικό
πρόγραμμα (πηγαίο) δεν περιέχει συντακτικά λάθη.
Τα λάθη είναι συντακτικά (λάθος εντολές, αναγραμματισμοί,
παράληψη δήλωσης μεταβλητών κλπ) και λογικά (λάθη
λογικής, αλγορίθμου κλπ).
Τα συντακτικά λάθη ανιχνεύονται από το μεταγλωττιστή (ή τον
διερμηνευτή) και εμφανίζονται κατάλληλα διαγνωστικά
μηνύματα. Το πρόγραμμα πρέπει να διορθωθεί και να
μεταγλωττισθεί ξανά . Η διαδικασία επαναλαμβάνεται μέχρις
ότου δεν ανιχνεύονται άλλα λάθη και δημιουργηθεί το
αντικείμενο πρόγραμμα.
Τα λογικά λάθη δεν ανιχνεύονται από τους μεταγλωττιστές και
εμφανίζονται κατά την εκτέλεση και τον έλεγχο του
προγράμματος με πραγματικά δεδομένα. Πρέπει να διορθωθεί ο
αλγόριθμος και φυσικά να επαναληφθεί η μεταγλώττιση.
Καθηγητής: Σπύρος Ξουργιάς
22




Ο διερμηνευτής (interpreter) έχει το πλεονέκτημα της άμεσης
εκτέλεσης των εντολών και συνεπώς της άμεσης διόρθωσης σε
περίπτωση λάθους. Μειονεκτεί στην ταχύτητα σε σχέση με το
μεταγλωττιστή.
Ο μεταγλωττιστής (compiler) μειονεκτεί σε σχέση με το
διερμηνευτή αφού δεν εκτελεί αμέσως τις εντολές, αλλά πρέπει
το πρόγραμμα να περάσει από τη διαδικασία της μεταγλώττισης
και σύνδεσης για να γίνει εκτελέσιμο.
Ένα προγραμματιστικό περιβάλλον πρέπει να περιέχει
τουλάχιστον συντάκτη, μεταγλωττιστή και συνδέτη για τη
δημιουργία, μετάφραση και εκτέλεση του προγράμματος.
Τα σύγχρονα προγραμματιστικά περιβάλλοντα συνήθως
χρησιμοποιούν διερμηνευτή κατά τη φάση της δημιουργίας του
προγράμματος και μεταγλωττιστή για την τελική δημιουργία του
εκτελέσιμου προγράμματος.
Καθηγητής: Σπύρος Ξουργιάς
23