Par7

Page 1

Κεφάλαιο 7

Είδη, Τεχνικές & Περιβάλλοντα Προγραμματισμού


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

Λοιπές διαδικασίες. • Κωδικοποίηση – μετάφραση του προγράμματος. • Έλεγχος του προγράμματος. • Τεκμηρίωση του προγράμματος.

2

1/11/2013

Κέρος Α. Ιωάννης


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

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

3

1/11/2013

Κέρος Α. Ιωάννης


Κύκλος Ανάπτυξης Προγράμματος. Μέθοδοι επίλυσης του προβλήματος είναι η εύρεση του καταλληλότερου τρόπου επίλυσης λαμβάνοντας υπόψη:

Τον όγκο των δεδομένων. Την πολυπλοκότητα των υπολογισμών. Τις δυνατότητες του υπολογιστή σε software – hardware.

4

1/11/2013

Κέρος Α. Ιωάννης


Κύκλος Ανάπτυξης Προγράμματος. Κωδικοποίηση – Μετάφραση του προγράμματος: Αποτύπωση σε αλγόριθμο της διαδικασίας επίλυσης, συγγραφή του προγράμματος και μετάφραση του .

Έλεγχος του προγράμματος: Έλεγχος για πιθανά λάθη.

Τεκμηρίωση του προγράμματος: Οδηγίες χρήσεως, εγκατάστασης κλπ.

5

1/11/2013

Κέρος Α. Ιωάννης


Γλώσσες προγραμματισμού.

Γλώσσες μηχανής (Machine Code). Συμβολικές γλώσσες (Assembly). Γλώσσες υψηλού επιπέδου. Γλώσσες 4ης γενιάς.

6

1/11/2013

Κέρος Α. Ιωάννης


Γλώσσες Μηχανής (1Ο επίπεδο). Εντολές σε 0 και 1 σταθερού ή μεταβλητού μήκους με σκοπό την εκτέλεση στοιχειωδών λειτουργιών από την ΚΜΕ. ENIAC - Διακόπτες. Εξαρτημένες από την ΚΜΕ. Εκτελούνται μόνο σε όμοιες ή συμβατές ΚΜΕ. Δύσκολες, δυσνόητες από τον άνθρωπο αλλά όχι από τον Η/Υ. Πραγματικός άθλος η γραφή ενός προγράμματος με αυτόν τον τρόπο.

7

1/11/2013

Κέρος Α. Ιωάννης


Συμβολικές γλώσσες(2Ο επίπεδο). Αντιστοίχιση των εντολών 0/1 και των συντομογραφίες της Αγγλικής γλώσσας .

διευθύνσεων

μνήμης

με

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

8

1/11/2013

Κέρος Α. Ιωάννης


Συμβολομεταφραστές (Assemblers). Πρόκειται για εδικά προγράμματα που σκοπός τους είναι η μετατροπή κώδικα από συμβολική γλώσσα σε γλώσσα μηχανής.

Κώδικας σε συμβολική γλώσσα

9

Συμβολομεταφραστής

1/11/2013

Κώδικας σε γλώσσα μηχανής

Κέρος Α. Ιωάννης


Γλώσσες Υψηλού Επιπέδου (3Ο επίπεδο). Ανάγκη να γράφουμε ένα πρόγραμμα σχεδόν ανεξάρτητα από τον Η/Υ στον οποίο καθόμαστε. Λέξεις – κλειδιά της Αγγλικής γλώσσας . Συγκεκριμένο συντακτικό και γραμματική.

10

1/11/2013

Κέρος Α. Ιωάννης


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

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

11

1/11/2013

Κέρος Α. Ιωάννης


Παραδείγματα Γλωσσών Υψηλού Επιπέδου. Επιστημονικές εφαρμογές: FORTRAN, C, APL. Οι εντολές μεταφράζονται σε εντολές γλώσσας μηχανής. Εμπορικές εφαρμογές: COBOL, RPG. Εκπαιδευτικές εφαρμογές: BASIC, LOGO.

Επιστημονικές – Εμπορικές εφαρμογές: PL-1, PASCAL.

12

1/11/2013

Κέρος Α. Ιωάννης


Μεταφραστές (Compilers) – Διερμηνευτές (Interpreters). Πρόκειται για ειδικά προγράμματα με σκοπό την μετατροπή κώδικα από γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής.

Κώδικας σε γλώσσα υψηλού επιπέδου

13

Μεταγλωττιστής / Διερμηνευτής

1/11/2013

Κώδικας σε γλώσσα μηχανής

Κέρος Α. Ιωάννης


Γλώσσες 4ης γενιάς (4Ο επίπεδο). Νέος δομημένος συστημάτων.

τρόπος

για

ανάπτυξη

πληροφοριακών

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

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

14

1/11/2013

Κέρος Α. Ιωάννης


Γλώσσες 4ης γενιάς (4Ο επίπεδο). Διαλογικές (Ερωτοαπαντήσεων). Χρησιμοποιούνται σε ΣΔΒΔ για παράδειγμα ORACLE, ACCESS.

Μικρότερα.

15

1/11/2013

Κέρος Α. Ιωάννης


Πλεονεκτήματα Γλωσσών 4ης γενιάς. Μικρότερα προγράμματα. Υψηλότερη παραγωγικότητα.

Λιγότερα λάθη. Ευκολότερη διόρθωση.

16

1/11/2013

Κέρος Α. Ιωάννης


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

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

17

1/11/2013

Κέρος Α. Ιωάννης


Διαδικασιακός Προγραμματισμός Τα προγράμματα αυτού του είδους προγραμματισμού είναι εξαρτημένα από την ΔΙΑΔΙΚΑΣΙΑ. (Κύριο χαρακτηριστικό των γλωσσών 3ης γενιάς). Χρησιμοποιείται κυρίως σε προβλήματα που μπορούν να λυθούν αλγοριθμικά (Λογιστικές εφαρμογές, Εμπορικές εφαρμογές, Συστήματα μισθοδοσίας, Συστήματα κράτησης θέσεων κλπ.

Αντιπροσωπευτικά παραδείγματα γλωσσών: COBOL, PASCAL, FORTRAN κλπ.

18

1/11/2013

Κέρος Α. Ιωάννης


Διαδικασιακός Προγραμματισμός. Στον προγραμματισμό αυτόν, το πρόγραμμα θεωρείται ότι είναι μία διαδικασία μέσα στην οποία υλοποιούνται η :

Δομή Ακολουθίας. Δομή Επιλογής. Δομή Επανάληψης. Κάτι που αντίστοιχα συμβαίνει στην κίνηση των οχημάτων στους αυτοκινητόδρομους.

19

1/11/2013

Κέρος Α. Ιωάννης


Διαδικασιακός Προγραμματισμός. Ουσιαστικά, ο προγραμματισμός έγινε ευχάριστος, ανεξαρτητοποιήθηκε από την μηχανή και έδωσε δουλειά σε προγραμματιστές.

20

1/11/2013

Κέρος Α. Ιωάννης


Δομημένος Προγραμματισμός. Βασίζεται αποκλειστικά στις βασικές αλγοριθμικές δομές (ΑΚΟΛΟΥΘΙΑ, ΕΠΙΛΟΓΗ, ΕΠΑΝΑΛΗΨΗ) για την δημιουργία ακόμη και πολύπλοκων προβλημάτων. Χρησιμοποιεί τις τεχνικές του ιεραρχικού προγραμματισμού (δομημένη σχεδίαση) και του τμηματικού προγραμματισμού (ανεξάρτητα τμήματα).

Αποφυγή χρήσης της εντολής GOTO. Η παρουσίαση των τεχνικών γίνεται με τα διαγράμματα HIPO που είδαμε σε προηγούμενο κεφάλαιο.

21

1/11/2013

Κέρος Α. Ιωάννης


Δομημένος προγραμματισμός και εντολή GOTO.

22

1/11/2013

Κέρος Α. Ιωάννης


Παράδειγμα χρήσης GOTO. Μη δομημένο πρόγραμμα Αν αρ > 0 τότε Πήγαινε 1 Αν αρ = 0 τότε Πήγαινε 2 Γράψε ‘Αρνητικός’ Πήγαινε 4 1: Γράψε ‘ Θετικός’ Πήγαινε 4 2: Γράψε ‘Μηδέν’ Πήγαινε 4 4: Τέλος

23

1/11/2013

Δομημένο πρόγραμμα Αν αρ > 0 τότε Γράψε ‘Θετικός’ Αλλιώς Αν αρ = 0 τότε Γράψε ‘Μηδέν’ Αλλιώς Γράψε ‘ Αρνητικός’ Τέλος_Άν Τέλος_Άν

Κέρος Α. Ιωάννης


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

Δημιουργήθηκαν νέες ανάγκες (ταυτόχρονη εκτέλεση, επικοινωνία των διαδικασιών) και έτσι: είτε δημιουργήθηκαν νέες γλώσσες (OCCAM) είτε επεκτάθηκαν οι κλασικές γλώσσες διαδικασιακού προγραμματισμού (Ada, Modula 2, Concurrent C).

24

1/11/2013

Κέρος Α. Ιωάννης


Αντικειμενοστραφής Προγραμματισμός. Κεντρική έννοια το ΑΝΤΙΚΕΙΜΕΝΟ. Μέσα σε αυτό ενσωματώνονται και τα δεδομένα και ο τρόπος χειρισμού αυτών. Δεδομένα, τα οποία είναι τα χαρακτηριστικά του.

Αντικείμενο

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

25

1/11/2013

Κέρος Α. Ιωάννης


Παράδειγμα Αντικειμενοστραφούς Προγραμματισμού. Κλάση

Αντικείμενο

26

1/11/2013

Κέρος Α. Ιωάννης


Συναρτησιακός Προγραμματισμός. Βασική οντότητα η συνάρτηση (όπως στα Μαθηματικά). Όλες οι εντολές είναι συναρτήσεις με ορίσματα δεδομένα ή άλλες συναρτήσεις. Μέσα στις συναρτήσεις υλοποιούνται η επιλογή και η επανάληψη. Οι έννοιες της μεταβλητής και της εκχώρησης τιμών αντικαθίστανται με την δέσμευση ονομάτων κατά την κλήση των συναρτήσεων. Κλασικές γλώσσες προγραμματισμού αυτού του είδους είναι FORTH και η LOGO με πολλές εφαρμογές στον χώρο της εκπαίδευσης.

27

1/11/2013

Κέρος Α. Ιωάννης


Λογικός Προγραμματισμός. Δεν περιγράφουμε αλγόριθμο που λύνει το πρόγραμμα όπως στον κλασικό προγραμματισμό αλλά τις γνώσεις που σχετίζονται γύρω από το πρόβλημα. ΣΤΗΡΙΖΕΤΑΙ ΣΤΗΝ ΓΝΩΣΗ. Η γνώση περιγράφεται από γεγονότα και κανόνες και το πρόγραμμα τα εφαρμόζει για να αποδείξει μια πρόταση στόχο. Εμφανίστηκε την δεκαετία του 1970 με εφαρμογές στην απόδειξη θεωρημάτων και την Τεχνητή Νοημοσύνη. Κλασική γλώσσα Λογικού Προγραμματισμού είναι η Prolog. Στηρίζεται στον Λογισμό Λάμδα που συνδέει την Πληροφορική με την Λογική.

28

1/11/2013

Κέρος Α. Ιωάννης


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

Κώδικας σε γλώσσα υψηλού επιπέδου

29

Μεταφραστικά προγράμματα

1/11/2013

Κώδικας σε γλώσσα μηχανής

Κέρος Α. Ιωάννης


Μεταφραστικά προγράμματα. Τα μεταφραστικά προγράμματα διακρίνονται σε :

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

30

1/11/2013

Κέρος Α. Ιωάννης


Compilers. Μετατροπή κώδικα από γλώσσα υψηλού επιπέδου (Πηγαίο – Source) σε γλώσσα μηχανής (Αντικείμενο – Object). ΠΗΓΑΙΟ ΠΡΟΓΡΑΜΜΑ (SOURCE)

COMPILER

ΝΑΙ

ΟΧΙ ΛΑΘΗ

ΜΗΝΥΜΑΤΑ ΛΑΘΩΝ

31

ΑΝΤΙΚΕΙΜΕΝΟ ΠΡΟΓΡΑΜΜΑ (OBJECT) 1/11/2013

Κέρος Α. Ιωάννης


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

32

1/11/2013

Κέρος Α. Ιωάννης


Compilers.

Compiler

Πηγαίο πρόγραμμα

Αντικείμενο πρόγραμμα

Διόρθωση συντακτικών λαθών

33

1/11/2013

Κέρος Α. Ιωάννης


Compilers. Συνοπτικά, οι compilers : Κάνουν συντακτική – γραμματική ανάλυση με εκτύπωση λαθών. Δεσμεύουν τον απαραίτητο χώρο στην RAM για την εκτέλεση του προγράμματος. Φυλάσσουν το αντικείμενο πρόγραμμα στον σκληρό δίσκο. Παράγουν το πρόγραμμα είτε σε γλώσσα μηχανής είτε σε γλώσσα χαμηλού επιπέδου. Παράγουν πίνακες στην μνήμη που είναι απαραίτητοι για την μετάφραση του προγράμματος.

34

1/11/2013

Κέρος Α. Ιωάννης


Interpreters. Εξετάζουν μία προς μία τις εντολές. Αν υπάρχουν λάθη σε μία εντολή, πρέπει άμεσα να διορθωθεί πριν προχωρήσουμε στην επόμενη εντολή. Αν δεν υπάρχει λάθος σε μία εντολή, παράγεται για αυτήν απευθείας ο κώδικας μηχανής, εκτελείται και προχωράμε στην επόμενη εντολή.

35

1/11/2013

Κέρος Α. Ιωάννης


Interpreters. Interpreter Έλεγχος λαθών μετάφραση– Εκτέλεση

Εντολή 1

Interpreter Έλεγχος λαθών μετάφραση– Εκτέλεση

36

1/11/2013

Εντολή 2

Κέρος Α. Ιωάννης


Διαφορές Compilers - Interpreters. Ο interpreter δεν ελέγχει όλο το πηγαίο πρόγραμμα πριν την εκτέλεση του. Ο interpreter επαναλαμβάνει την διαδικασία μετάφρασης – ελέγχου κάθε φορά που εκτελείται το πηγαίο πρόγραμμα. Στον interpreter ο έλεγχος και η διόρθωση των λαθών γίνεται ευκολότερα αφού το λάθος εμφανίζεται σχεδόν αμέσως, το διορθώνουμε και συνεχίζουμε την εκτέλεση του προγράμματος. Η εκτέλεση με interpreter είναι πιο αργή συγκριτικά με αυτήν με compiler.

37

1/11/2013

Κέρος Α. Ιωάννης


Γραφή – Εκτέλεση προγράμματος (με Compiler).

Editor (Εκδότης – Διορθωτής)

Linker (Συνδέτης)

Compiler

Πηγαίος κώδικας

Αντικείμενο πρόγραμμα

Εκτελέσιμο πρόγραμμα

Διόρθωση συντακτικών λαθών Βιβλιοθήκες

γραφή – μεταγλώττιση – σύνδεση - εκτέλεση

38

1/11/2013

Κέρος Α. Ιωάννης


Γραφή – Εκτέλεση προγράμματος (με Interpreter).

Editor (Εκδότης – Διορθωτής)

Interpreter Εκτέλεση κάθε εντολής ξεχωριστά

Φορτωτής (Loader) Πηγαίος κώδικας

Διόρθωση συντακτικών λαθών Βιβλιοθήκες

γραφή – μεταγλώττιση – φόρτωση

39

1/11/2013

Κέρος Α. Ιωάννης


Σύγχρονα Προγραμματιστικά περιβάλλοντα. Συνυπάρχουν πολλά προγράμματα που είναι απαραίτητα για την δημιουργία ενός προγράμματος: 1. Διορθωτής -Editor 2. Μεταφραστής - Compiler 3. Διερμηνευτής - Interpreter 4. Εκσφαλματωτής - Debugger. Συμπεριλαμβάνουν και εργαλεία σχεδίασης γραφικών.

40

1/11/2013

Κέρος Α. Ιωάννης


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.