Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
ΠΛΗΡΟΦΟΡΙΚΗ I
9η ΔΙΑΛΕΞΗ “Λογισμικό - Προγραμματισμός”
ΧΑΣΑΝΗΣ ΒΑΣΙΛΕΙΟΣ
ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ - ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ
ΕΙΣΑΓΩΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ
ΠΕΡΙΕΧΟΜΕΝΟ ΔΙΑΛΕΞΗΣ
1. Βασικά στοιχεία 2. Αλγόριθμοι και προγράμματα 3. Μοντέλα ανάπτυξης λογισμικού 4. Παραδοσιακά στοιχεία προγραμματισμού 5. Ανάπτυξη προγραμμάτων 6. Συνηθισμένες κατηγορίες εφαρμογών 7. Φάσεις ανάπτυξης συστημάτων 8. Άδειες χρήσης 9. Επιλογή λογισμικού
2
ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ
Το λογισμικό σε ένα σύστημα υπολογιστή, αποτελείται από όλα τα προγράμματα που υπάρχουν σε αυτόν και διακρίνεται σε δύο μεγάλες κατηγορίες:
1. Λογισμικό συστήματος Προγράμματα διαχείρισης και υποστήριξης
2. Λογισμικό εφαρμογών
3
ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ
4
ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΑ
Αλγόριθμος είναι η ακριβής περιγραφή μιας αυστηρά καθορισμένης σειράς πεπερασμένων βημάτων για την επίλυση ενός προβλήματος.
Η διατύπωση ενός αλγορίθμου μπορεί να γίνει με πολλούς τρόπους: Φυσική γλώσσα Τεχνητή γλώσσα με περιορισμένο λεξιλόγιο Διάφοροι συμβολισμοί Σχήματα και διαγράμματα
5
ΦΥΣΙΚΗ ΓΛΩΣΣΑ
Ζητείται να βρεθεί ο μεγαλύτερος από τρεις δοσμένους αριθμούς:
"Πάρε τους δύο πρώτους αριθμούς και σύγκρινέ τους.
Στη συνέχεια σύγκρινε το μεγαλύτερο από αυτούς και τον τρίτο αριθμό. Ο μεγαλύτερος από τους δύο τελευταίους είναι ο μεγαλύτερος των τριών αριθμών."
6
ΤΕΧΝΗΤΗ ΓΛΩΣΣΑ
Αλγόριθμος MAX Δεδομένα //x, y, z : αριθμοί, m : μεταβλητή// Αρχή Αν x>y τότε m=x αλλιώς m=y Αν z>m τότε m=z Τέλος Αποτελέσματα //m, ο μέγιστος των x, y, z // Τέλος MAX
7
ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΟΥ
Είσοδος Έξοδος Σαφείς οδηγίες Καλύπτει όλες τις δυνατές καταστάσεις Τερματισμός
8
ΠΡΟΓΡΑΜΜΑ
Πρόγραμμα: Διατύπωση ενός αλγορίθμου σε γλώσσα προγραμματισμού.
Μια σειρά βημάτων, οδηγιών ή εντολών προς τον υπολογιστή, κατανοητών από αυτόν, για τη λύση ενός προβλήματος.
Οι εντολές αυτές εκτελούνται από τον υπολογιστή με χρονική και λογική σειρά προκειμένου να δώσουν τα προσδοκώμενα αποτελέσματα.
Η διαδικασία σύνταξης των προγραμμάτων αποκαλείται προγραμματισμός.
9
ΠΡΟΓΡΑΜΜΑ
Λόγω της τεράστιας πολυπλοκότητας των φυσικών γλωσσών είναι αδύνατη η διατύπωση ενός προβλήματος στον υπολογιστή μόνο με τη φυσική γλώσσα.
Έτσι η εκπόνηση και δημιουργία των προγραμμάτων γίνεται με τη χρήση ειδικών συμβολισμών που ονομάζονται γλώσσες προγραμματισμού (programming languages).
10
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Ο προγραμματισμός ενός υπολογιστή μπορεί να γίνει σε πολλά επίπεδα χρησιμοποιώντας σε κάθε επίπεδο διαφορετικού τύπου γλώσσες. Γλώσσες μηχανής Συμβολικές γλώσσες Γλώσσες προγραμματισμού υψηλού επιπέδου
11
ΓΛΩΣΣΕΣ ΜΗΧΑΝΗΣ
Στο χαμηλότερο επίπεδο βρίσκονται τα ίδια τα ηλεκτρονικά κυκλώματα του υπολογιστή.
Έχουμε μόνο δύο καταστάσεις (0, 1) Στο επίπεδο αυτό, ο προγραμματισμός μπορεί να
γίνει μόνο με τη χρήση των δυαδικών αριθμών. Για παράδειγμα, σε έναν υπολογιστή η
ακολουθία: 100010100101010
μπορεί να αποτελεί μια εντολή πρόσθεσης δύο αριθμών.
12
ΓΛΩΣΣΕΣ ΜΗΧΑΝΗΣ
Η "γλώσσα" αυτή των δυαδικών συμβόλων λέγεται γλώσσα μηχανής (machine language) ή κώδικας μηχανής (machine code) και είναι η μόνη γλώσσα που κατανοεί απ' ευθείας το υλικό του υπολογιστή.
Είναι φανερό ότι η διατύπωση προβλημάτων στη γλώσσα αυτή είναι ξένη προς τον άνθρωπο και για το λόγο αυτό, ο προγραμματισμός στο επίπεδο μηχανής είναι εξαιρετικά επίπονος και ελάχιστα αποδοτικός.
13
ΠΡΟΓΡΑΜΜΑ ΣΕ ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ (ΔΕΚΑΕΞΑΔΙΚΗ ΜΟΡΦΗ)
14
ΣΥΜΒΟΛΙΚΕΣ ΓΛΩΣΣΕΣ
Το επόμενο βήμα είναι οι συμβολικές γλώσσες ή συμβολογλώσσες (assembly languages).
Μια συμβολική γλώσσα χρησιμοποιεί σύμβολα στη θέση των δυαδικών αριθμών.
Τα σύμβολα αυτά είναι συνήθως συντμήσεις και αρκτικόλεξα αγγλικών λέξεων και μπορούν απομνημονευτούν, γι' αυτό και αποκαλούνται μνημονικές εντολές (mnemonics).
15
ΣΥΜΒΟΛΙΚΕΣ ΓΛΩΣΣΕΣ
Η εντολή LDA σημαίνει φόρτωσε το συσσωρευτή (LoaD Accumulator)
Η εντολή ADD σημαίνει πρόσθεσε Ένα πρόγραμμα σε συμβολική γλώσσα
προκειμένου να κατανοηθεί και να εκτελεσθεί από τον υπολογιστή, πρέπει να μετατραπεί σε δυαδικά σύμβολα, σε γλώσσα μηχανής δηλαδή.
16
ΣΥΜΒΟΛΙΚΕΣ ΓΛΩΣΣΕΣ
Το έργο αυτό αναλαμβάνει ο συμβολομεταφραστής (assembler), ο οποίος επίσης είναι ένα πρόγραμμα σε γλώσσα μηχανής.
Η αντιστοιχία είναι τυπικά μία εντολή συμβολικής γλώσσας - προς μία εντολή γλώσσας μηχανής.
Οι γλώσσες μηχανής και οι συμβολικές γλώσσες αναφέρονται ως γλώσσες χαμηλού επιπέδου και μπορούν να εκτελεστούν μόνο σε υπολογιστές με την ίδια ή συμβατή κεντρική μονάδα επεξεργασίας.
17
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ
Οι ανεπάρκειες των συμβολικών γλωσσών και η προσπάθεια για καλύτερη επικοινωνία ανθρώπου-μηχανής, οδήγησαν στα τέλη της δεκαετίας του '50 στην εμφάνιση των πρώτων γλωσσών προγραμματισμού υψηλού επιπέδου (high level languages).
Στις γλώσσες αυτές που αποτελούν υποσύνολα της αγγλικής γλώσσας, η περιγραφή ενός προβλήματος γίνεται με τρόπο περισσότερο προσιτό στον άνθρωπο.
18
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ
Υπόλοιπο = Χρέωση - Πίστωση.
Στη FORTRAN θα γραφεί η εντολή: YP0L0IP0 = XREWSH – PISTWSH
Στην COBOL
SUBTRACT PISTWSH FROM XREWSH GIVING YPOLOIPO.
19
ΜΕΤΑΦΡΑΣΗ ΓΛΩΣΣΩΝ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ
Ένα πρόγραμμα σε γλώσσα υψηλού επιπέδου συντάσσεται με τη βοήθεια ειδικών προγραμμάτων που λέγονται συντάκτες (editors).
Για να εκτελεσθεί από τον υπολογιστή ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου απαιτείται η μετάφραση του σε αντίστοιχο πρόγραμμα σε γλώσσα μηχανής.
Η μετατροπή γίνεται με τη βοήθεια ενδιάμεσων μεταφραστικών προγραμμάτων.
Μια μεγάλη κατηγορία μεταφραστικών προγραμμάτων είναι οι μεταγλωττιστές(compilers).
20
ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ
Δέχεται στην είσοδο ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής.
Το τελευταίο μπορεί στη συνέχεια να φορτωθεί στην κεντρική μνήμη και να εκτελεσθεί όσες φορές αυτό είναι επιθυμητό.
Είναι δε τελείως ανεξάρτητο από το αρχικό πρόγραμμα.
Η χρήση του μεταγλωττιστή έχει το μειονέκτημα ότι προτού χρησιμοποιηθεί ένα πρόγραμμα, πρέπει να περάσει από τη διαδικασία της μεταγλώττισης.
21
ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ
Κατά τη φάση αυτή, αν εντοπιστούν ορθογραφικά ή συντακτικά λάθη, αλλά και μετά κατά την εκτέλεση, αν προκόψουν σφάλματα, τότε το αρχικό πρόγραμμα πρέπει να διορθωθεί και να ξαναμεταγλωττισθεί.
Ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου αποκαλείται αρχικό ή πηγαίο (source).
Το πρόγραμμα που παράγεται από το μεταγλωττιστή λέγεται πρόγραμμα ή κώδικας αντικειμένου (object) και αποθηκεύεται επίσης σε αρχείο (object file).
22
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ
Προγράμματα κώδικα μηχανής που εξυπηρετούν είσοδο - έξοδο, τα οποία επειδή πρακτικά χρησιμοποιούνται από όλα τα προγράμματα, γράφονται και μεταγλωττίζονται μία φορά και στη συνέχεια εισάγονται σε ειδικές δομές που λέγονται βιβλιοθήκες (libraries).
Η διαδικασία μεταγλωττισμού όλων των αρχείων πηγαίου κώδικα μιας εφαρμογής, είναι γνωστή ως δόμηση (build).
Γλώσσες οι οποίες παραδοσιακά χρησιμοποιούν μεταγλωττιστή, είναι η FORTRAN, η COBOL, η C, η Pascal, η C++ κ.α.
23
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ
Ο πηγαίος κώδικας Java, όταν μεταγλωττιστεί, παράγει τον λεγόμενο δυφιοουλαβοκώδικα (bytecode), ο οποίος διερμηνεύεται κατά το χρόνο εκτέλεσης από την Εικονική Μηχανή Java (JVM - Java Virtual Machine).
Πολλές υλοποιήσεις Java, χρησιμοποιούν ένα είδος μεταγλωττιστή για τη μετατροπή του bytecode σε κώδικα μηχανής.
24
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ
25
ΜΟΝΤΕΛΑ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ
26
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
Καθορίζει κανείς ακριβώς τι πρέπει να γίνει σε κάθε βήμα του αλγόριθμου.
Καθορίζεται δηλαδή λεπτομερώς πώς θα επιλυθεί το πρόβλημα.
Κάθε πρόγραμμα είναι μια διαδικασία ή σύνολο εργασιών που κωδικοποιούνται στη γλώσσα προγραμματισμού με προκαθορισμένο τρόπο και σειρά.
Στην τυπική περίπτωση, το πρόγραμμα είναι έτσι δομημένο, ώστε ζητά δεδομένα, τα επεξεργάζεται και εμφανίζει τα αποτελέσματα.
27
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
28
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
29
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
30
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
31
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
FORTRAN (1957) (FORmulae TRANslator): Αποτελεί την πρώτη γλώσσα υψηλού επιπέδου που
εμφανίστηκε. Είναι προσανατολισμένη σε επιστημονικές / τεχνικές
εφαρμογές. Είναι η γλώσσα η οποία κατέστησε τον υπολογιστή προσιτό
στον επιστημονικό και τεχνικό κόσμο. COBOL (1960) (Common Business Oriented Language) Αποτέλεσε στο παρελθόν την πλέον χρησιμοποιούμενη
γλώσσα για εμπορικές εφαρμογές. Χαρακτηρίζεται από σύνταξη που προσεγγίζει πολύ την
αγγλική γλώσσα και μια αξιόλογη προσπάθεια να επιτευχθεί ανεξαρτησία από το υλικό του υπολογιστή.
32
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
BASIC (1964) (Beginner's All-purpose Symbolic Instruction Code): Μία από τις πρώτες διαλογικές γλώσσες προορισμένη
για γενικό προγραμματισμό. Χρησιμοποιήθηκε επίσης για την εισαγωγή αρχαρίων
στον προγραμματισμό. Στη δεκαετία του 80 καθιερώθηκε ως η κυρίαρχη
γλώσσα των μικροϋπολογιστών. Χρησιμοποιείται και σήμερα σε εκδόσεις
προσαρμοσμένες στους σύγχρονους τρόπους προγραμματισμού (π.χ. Visual BASIC).
33
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
Pascal (1971): Γλώσσα σχεδιασμένη για τη διδασκαλία του δομημένου
προγραμματισμού. Χαρακτηρίζεται από μεγάλο πλούτο τύπων δεδομένων,
δομών ελέγχου και ιδιαίτερη κομψότητα στην περιγραφή αλγορίθμων.
Γνώρισε μεγάλη επιτυχία στα πανεπιστήμια.
34
ΔΙΑΔΙΚΑΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (PROCEDURAL)
C (1972): Η C αρχικά χρησιμοποιήθηκε για την υλοποίηση του
λειτουργικού συστήματος UNIX. Συντέλεσε όσο καμιά άλλη γλώσσα στον εκτοπισμό της
συμβολικής γλώσσας για τη δημιουργία λογισμικού συστήματος.
Εξέλιξή της αποτελούν οι ευρέως διαδεδομένες αντικειμενοστραφείς γλώσσες C++, Objective C και C#.
Σήμερα χρησιμοποιείται ευρέως για την ανάπτυξη λογισμικού συστήματος και λιγότερο για γενικό προγραμματισμό.
35
ΔΗΛΩΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (DECLARATIVE)
Ο προγραμματιστής περιγράφει κατά βάση το πρόβλημα που θα επιλυθεί αντί του λεπτομερούς αλγορίθμου που θα ακολουθηθεί.
Για την ακρίβεια, ένα περιβάλλον προγραμματισμού του είδους αυτού, χρησιμοποιεί "προκατασκευασμένους" αλγορίθμους για την επίλυση προβλημάτων.
Κατά συνέπεια ο προγραμματιστής αναπτύσσει μια ακριβή περιγραφή του προβλήματος και λιγότερο έναν αλγόριθμο για την επίλυσή του.
36
ΔΗΛΩΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (DECLARATIVE)
Χαρακτηριστικό παράδειγμα αυτού του τρόπου προσέγγισης αποτελεί η γλώσσα PROLOG (1970).
Επίσης, στη φιλοσοφία της δηλωτικής προσέγγισης κινούνται υποσύνολα ευρέως διαδεδομένων γλωσσών, όπως οι εντολές SELECT της γλώσσας SQL (1970).
37
ΔΗΛΩΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (DECLARATIVE)
Prolog – Declarations:
?- likes(george,food).
?- likes(george,wine).
?- likes(natalie,wine). ?- likes(natalie,george).
Ερωτήματα - Απαντήσεις:
?- likes(george,food). yes.
?- likes(natalie,wine). yes.
?- likes(natalie,food). no.
38
ΔΗΛΩΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (DECLARATIVE)
Παράδειγμα SQL:
Θέλουμε να βρούμε τους μαθητές που πήραν βαθμό 9 στο μάθημα των μαθηματικών:
SELECT ΟΝΟΜΑ FROM DEGREES WHERE ΜΑΘΗΜΑ='Μαθηματικά’ AND ΒΑΘΜΟΣ='9’;
Επιστρέφεται: Μαρία Ελένη
39
ΟΝΟΜΑ ΜΑΘΗΜΑ ΒΑΘΜΟΣ Γιάννης Μαθηματικά 7 Γιάννης Φυσική 6 Μαρία Χημεία 8 Μαρία Μαθηματικά 9 Δημήτρης Μαθηματικά 10 Ελένη Μαθηματικά 9
ΣΥΝΑΡΤΗΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (FUNCTIONAL)
Ένα πρόγραμμα αντιμετωπίζεται ως μια οντότητα που δέχεται εισόδους και παράγει εξόδους, έχοντας μια δομή επιμέρους συνδεδεμένων μεταξύ τους προγραμμάτων (συναρτήσεων).
Η έξοδος ενός προγράμματος αποτελεί την είσοδο για κάποιο άλλο κατά τρόπον ώστε, να επιτυγχάνεται η συνολική επιθυμητή συμπεριφορά.
Κάθε οντότητα, δηλαδή, αντιμετωπίζεται ως "συνάρτηση", εξ' ου και η περιγραφή της προσέγγισης αυτής.
40
ΣΥΝΑΡΤΗΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (FUNCTIONAL)
Χαρακτηριστικό παράδειγμα αυτής της προσέγγισης είναι η γλώσσα προγραμματισμού LISP (1958).
Αποτελεί τη δεύτερη παλαιότερη γλώσσα στην ιστορία των υπολογιστών και το όνομά της το χρωστάει στα αρχικά της έκφρασης " LlSt Processing" ("επεξεργασία λιστών").
Δημιουργήθηκε ως τρόπος αναπαράστασης μαθηματικών εκφράσεων στον υπολογιστή.
Γρήγορα υιοθετήθηκε από τους ερευνητές της Τεχνητής Νοημοσύνης (Artificial Intelligence / ΑΙ).
41
ΣΥΝΑΡΤΗΣΙΑΚΗ ΠΡΟΣΕΓΓΙΣΗ (FUNCTIONAL)
Θέλουμε να υπολογίσουμε το γινόμενο δύο αριθμών, του 2 και του (4 + 6).
Με τη βοήθεια της LISP αυτό γράφεται ως η συνάρτηση "πολλαπλασιασμός" με ορίσματα τους δύο αριθμούς:
User> (* 2 (+ 4 6))
42
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΣΕΓΓΙΣΗ (OBJECTED ORIENTED)
Βασίζεται στη δημιουργία αντικειμένων δηλ. προγραμματιστικών δομών που περιλαμβάνουν δεδομένα και διαδικασίες που ενεργούν επί των δεδομένων.
Στη γενική περίπτωση, αρχικά ορίζεται με ειδικές εντολές ο τύπος αντικειμένου που θα καλύπτει μια συγκεκριμένη ανάγκη του προγράμματος.
Ο τύπος αυτός τυπικά συμπεριλαμβάνει ένα σύνολο δεδομένων που περιγράφουν τις παραμέτρους που ορίζουν την κατάσταση του αντικειμένου, και μία ή περισσότερες διαδικασίες που στην ορολογία του αντικειμενοστρεφούς προγραμματισμού είναι γνωστές ως μέθοδοι.
43
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΣΕΓΓΙΣΗ (OBJECTED ORIENTED)
C++ (1985): Περιλαμβάνει όλα τα στοιχεία της κλασικής C με
επιπλέον δομές για υλοποίηση και χειρισμό αντικειμένων.
Java (1995): Αναπτύχθηκε από την Sun Microsystems. Μοιάζει
συντακτικά με τη C++ αλλά η φιλοσοφία ανάπτυξής της, την καθιστά ιδιαίτερα ευέλικτη, με αποτέλεσμα την ευρεία διάδοσή της σήμερα, για ένα μεγάλο φάσμα εφαρμογών.
44
ΠΑΡΑΔΟΣΙΑΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Μεταβλητές Σταθερές τιμές Εκφράσεις & τελεστές Εντολές Υποπρογράμματα Πέρασμα παραμέτρων Σχόλια
45
ΜΕΤΑΒΛΗΤΕΣ (VARIABLES)
Οι μεταβλητές είναι ονόματα μέσω των οποίων αναφέρεται κανείς σε τιμές οι οποίες αποθηκεύονται σε θέσεις κεντρικής μνήμης.
Ο όρος μεταβλητές, αντανακλά ακριβώς το γεγονός ότι η τιμή που αντιστοιχεί στο όνομα της μεταβλητής μπορεί να μεταβληθεί κατά τη διάρκεια εκτέλεσης του προγράμματος.
Οι μεταβλητές γενικά φέρουν δύο χαρακτηριστικά μεγάλης σημασίας: Τον τύπο (data type): ακέραιος, λογικός, κινητής
υποδιαστολής Την εμβέλεια (scope): δημόσια ή τοπική
46
ΕΚΦΡΑΣΕΙΣ & ΤΕΛΕΣΤΕΣ
Οι κάθε είδους παραστάσεις τιμών, μεταβλητές, σταθερές και οτιδήποτε μπορεί να υπολογιστεί σε μια τιμή και να αποτελέσει δεδομένο (τελεσταίος), μπορούν να συνδυαστούν μεταξύ τους με χρήση τελεστών (operators) για να δημιουργήσουν εκφράσεις (expressions).
Οι τελεστές τυπικά είναι τα σύμβολα των τεσσάρων αριθμητικών πράξεων (+,-,*,/), ο τελεστής ύψωσης σε δύναμη (συνήθως ο χαρακτήρας ^) οι λογικοί τελεστές μέσω των οποίων γίνονται λογικές πράξεις όπως συγκρίσεις, σύζευξη, διάζευξη κ.λπ.
47
ΕΝΤΟΛΕΣ
Μετά τις κάθε είδους δηλώσεις σε ένα πρόγραμμα, ακολουθεί η υλοποίηση του αλγορίθμου με εντολές της γλώσσας προγραμματισμού που χρησιμοποιείται.
Οι εντολές μπορούν γενικά να διακριθούν σε εντολές εκχώρησης και εντολές ελέγχου.
48
ΕΝΤΟΛΕΣ ΕΚΧΩΡΗΣΗΣ (ASSIGNMENT STATEMENTS)
Χρησιμοποιούνται για τον υπολογισμό μιας παράστασης και την εκχώρηση του αποτελέσματος σε μια μεταβλητή.
Μια εντολή του είδους αυτού, συντακτικά, αρχίζει με μια μεταβλητή η οποία ακολουθείται από ένα σύμβολο που παριστά τον τελεστή εκχώρισης, στις περισσότερες γλώσσες το "=" ή το ": = "και τελειώνει με μια έκφραση η οποία υπολογιζόμενη αποδίδει την τιμή που θα εκχωρηθεί.
Ζ = X * Υ;
49
ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ
Οι εντολές ελέγχου είναι στην ουσία αγγλικές λέξεις ή συντμήσεις αγγλικών λέξεων όπως για παράδειγμα if, else, case, for, κ.λπ.
Τα ονόματα αυτά είναι δεσμευμένα και δεν μπορούν να χρησιμοποιηθούν ως ονόματα μεταβλητών.
Οι βασικές δομές ελέγχου που χρησιμοποιούνται σε όλες τις σύγχρονες γλώσσες υψηλού επιπέδου είναι οι ακόλουθες: Δομή Επιλογής Δομή Επανάληψης
50
ΔΟΜΗ ΕΠΙΛΟΓΗΣ
Η ροή εκτέλεσης εντολών μπορεί να διακλαδωθεί σε διαφορετικά σημεία ανάλογα με το αποτέλεσμα λογικών εκφράσεων.
Τυπικά έχει τη μορφή:
51
ΔΟΜΗ ΕΠΙΛΟΓΗΣ
Το ακόλουθο παράδειγμα δείχνει ένα τμήμα προγράμματος σε γλώσσα C, στο οποίο συγκρίνονται δύο αριθμοί και εμφανίζει στην οθόνη το αποτέλεσμα της σύγκρισης.
52
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ
Βρόχος – loop: Πρόκειται για δομή που δίνει τη δυνατότητα για επαναληπτική εκτέλεση εντολών και έχει τη γενική μορφή:
Γνωστές τέτοιες εντολές: while do while for
53
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ
54
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ
Ένα υποπρόγραμμα, αποτελεί ένα σύνολο εντολών που συνολικά εκτελούν ένα συγκεκριμένο έργο, ομαδοποιημένων κάτω από ένα κοινό όνομα.
Το όνομα αυτό, χρησιμοποιείται στο κυρίως πρόγραμμα για την κλήση και εκτέλεση των εντολών του υποπρογράμματος.
55
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ
Τα υποπρογράμματα, ανάλογα με τη γλώσσα προγραμματισμού, μπορεί να έχουν τη μορφή: Υπορουτινών (subroutines π.χ. στη FORTRAN) Διαδικασιών (procedures - π.χ. στην Pascal) Συναρτήσεων (functions π.χ. στη C, C++, FORTRAN)
Στον αντικειμενοστρεφή προγραμματισμό χρησιμοποιείται ο όρος μέθοδος για να περιγράφει παραπλήσια έννοια.
56
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ
57
ΑΝΑΠΤΥΞΗ ΠΡΟΓΡΑΜΜΑΤΩΝ
Η ανάπτυξη των προγραμμάτων ακολουθεί μια σειρά από στάδια τα οποία γενικά έχουν ως ακολούθως: Σχεδίαση Κωδικοποίηση Έλεγχος και αποσφαλμάτωση Τεκμηρίωση και συντήρηση προγραμμάτων Αποθετήρια Πηγαίου Κώδικα UML
58
ΣΧΕΔΙΑΣΗ
H ανάπτυξη λογισμικού, πρέπει να γίνεται με συστηματικό τρόπο ώστε να διευκολύνεται τόσο η ανάπτυξη, όσο και η συντήρησή του.
Προς την κατεύθυνση αυτή, χρησιμοποιούνται διάφορα εργαλεία και προσεγγίσεις: Αρθρωτός προγραμματισμός Αντικειμενοστρεφής προσέγγιση Δομημένος προγραμματισμός Διαγράμματα ροής Ψευδοκώδικας
59
ΑΡΘΡΩΤΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Ο αρθρωτός προγραμματισμός (modular programming), είναι μια μέθοδος ανάπτυξης προγραμμάτων, που βασίζεται στη διάσπαση του συνολικού προβλήματος που επιλύεται με το πρόγραμμα, σε επιμέρους μικρότερα και άρα ευκολότερα διαχειρίσιμα δομοστοιχεία (modules).
Τα modules επιλέγονται και αναπτύσσονται κατά τρόπο ώστε να είναι όσο το δυνατόν πιο ανεξάρτητα και απομονωμένα μεταξύ τους. (+) Η αποσφαλμάτωση γίνεται ευκολότερη (+) Διευκολύνεται η συλλογική ανάπτυξη μιας εφαρμογής (+) Πολλά modules μπορούν να επαναχρησιμοποιηθούν και σε
άλλα προγράμματα. 60
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΣΕΓΓΙΣΗ
Αναπτύσσονται προγραμματιστικά αντικείμενα, κάθε ένα από τα οποία αντιστοιχεί σε υπό διαχείριση δεδομένα ή σε φυσικά αντικείμενα.
Δίνει περισσότερο έμφαση στη δημιουργία ολοκληρωμένων αντικειμένων (κλάσεων) τα οποία περιέχουν όσα στοιχεία χρειάζονται για το χειρισμό τους.
Τα δεδομένα τηρούνται εσωτερικά, κατά τρόπον ώστε να είναι ορατά μόνο στην κλάση που χρειάζονται και η προσπέλαση σε αυτά εξωτερικά γίνεται μόνο μέσω ειδικού τύπου υποπρογραμμάτων που λέγονται μέθοδοι (methods).
61
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Με την προσέγγιση αυτή: Τυποποιούνται και απλοποιούνται οι ροές ελέγχου Κατά συνέπεια τα προγράμματα γίνονται πιο
ευανάγνωστα και ευκολοσυντήρητα. Αποφεύγεται, αν όχι απαγορεύεται η χρήση εντολών
τύπου goto Το συνολικό πρόγραμμα ανάγεται σε: Στοιχεία δομών ακολουθίας εντολών Δομών εντολών επιλογής του τύπου if... then ... Else Εντολών βρόχου για επαναληπτική εκτέλεση εντολών
62
ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
63
ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
64
Υπάρχουν τρεις τρόποι εκτέλεσης: Διαδοχική Επιλογή Επανάληψη
ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
65
Διαδοχική: Οι πράξεις εκτελούνται διαδοχικά χωρίς να επιστρέφουμε σε προηγούμενες πράξεις
ΠΡΑΞΕΙΣ
ΠΡΑΞΕΙΣ
ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
66
Επιλογή: Εξετάζεται μία λογική συνθήκη και επιλέγεται η αντίστοιχη κατεύθυνση (αληθής, ψευδής)
ΣΥΝΘΗΚΗ ΟΧΙ ΝΑΙ
ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
67
Επανάληψη: Επαναλαμβάνεται μία ή περισσότερες πράξεις
ΨΕΥΔΟΚΩΔΙΚΑΣ
Ο ψευδοκώδικας αποτελεί μια εναλλακτική έκφραση αλγορίθμων, ένα στάδιο πριν την καθεαυτού κωδικοποίηση σε κάποια γλώσσα προγραμματισμού.
Χρησιμοποιεί λέξεις της φυσικής γλώσσας, οι οποίες έχουν επιλεγεί ώστε να πλησιάζουν αυτές των προγραμματιστικών δομών των περισσότερο διαδεδομένων γλωσσών υψηλού επιπέδου.
68
ΑΣΚΗΣΗ 1 – ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
69
ΑΣΚΗΣΗ 2 – ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
70
ΑΣΚΗΣΗ 3 – ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
71
ΑΔΕΙΕΣ ΧΡΗΣΗΣ
Κατά κανόνα, όταν εγκαταστήσει κανείς λογισμικό σε έναν υπολογιστή, υπάρχει ένα βήμα στο οποίο ζητείται η συμφωνία του χρήστη με την άδεια χρήσης.
Η συμφωνία αυτή μπορεί να είναι ιδιαίτερα μακροσκελής και συχνά περιλαμβάνει στοιχεία για την προστασία των κατασκευαστών του προϊόντος από δίωξη λόγω πιθανών σφαλμάτων του λογισμικού.
Καθορίζει επίσης πόσα αντίγραφα έχει δικαίωμα να κάνει ο χρήστης.
72
ΑΔΕΙΕΣ ΧΡΗΣΗΣ
Επίσης, στην τυπική περίπτωση κάθε εμπορικό προϊόν λογισμικού, συνοδεύεται από ένα είδος ταυτότητας που λέγεται κωδικός αναγνώρισης (Product ID).
Ο κωδικός αυτός αναγνώρισης, για προϊόντα λογισμικού σε περιβάλλον Microsoft Windows, μπορεί να φανεί με την επιλογή Βοήθεια>Πληροφορίες για ... (Help>About...).
73
ΑΔΕΙΕΣ ΧΡΗΣΗΣ
Σχεδόν όλα τα εμπορικά λογισμικά συνοδεύονται από μια συγκεκριμένη άδεια χρήσης (license).
Οι άδειες χρήσης συνήθως καθορίζουν τα ακόλουθα: Όρους εγκατάστασης και χρήσης του λογισμικού. Όρους εγκατάστασης και χρήσης σε δίκτυο. Όρους που διέπουν τα εφεδρικά αντίγραφα
(backup). Συμφωνίες συντήρησης.
74
ΑΔΕΙΕΣ ΧΡΗΣΗΣ
Επίσης οι περισσότερες άδειες χρήσης εμφανίζονται σε μια από τις ακόλουθες μορφές: Ενός χρήστη - μιας μηχανής. Ενός χρήστη πολλών μηχανών. Τοπική θέση. Προσωπική, μη κερδοσκοπική χρήση. Εταιρική χρήση.
75
ΕΛΕΥΘΕΡΟ ΛΟΓΙΣΜΙΚΟ (FREEWARE)
Λογισμικό που ρητά ανήκει στην κατηγορία αυτή, μπορεί να κατέβει και να αντιγράφει ελεύθερα.
Συχνά λογισμικό της κατηγορίας αυτής είναι πλήρως λειτουργικό.
Παράδειγμα αποτελεί λογισμικό που έχει αναπτυχθεί - τουλάχιστον αρχικά - από οργανισμούς όπως πανεπιστήμια, όπου ο σκοπός δεν είναι το κέρδος.
Έχει μεγάλη σημασία να μη συγχέεται το ελεύθερο λογισμικό (freeware) με το λογισμικό περιορισμένης χρήσης (shareware).
76
ΛΟΓΙΣΜΙΚΟ ΠΕΡΙΟΡΙΣΜΕΝΗΣ ΧΡΗΣΗΣ (SHAREWARE)
Πρόκειται για λογισμικό το οποίο μπορεί να χρησιμοποιεί κανείς ελεύθερα για συγκεκριμένη χρονική περίοδο δοκιμής.
Με τη λήξη της περιόδου αυτής, αρχίζουν διάφορα ενοχλητικά μηνύματα που προτρέπουν την καταχώρηση του προϊόντος, με άλλα λόγια την πληρωμή.
Πιθανόν με τη λήξη της περιόδου αυτής, το προϊόν να μην λειτουργεί καθόλου.
77
ΛΟΓΙΣΜΙΚΟ ΑΝΟΙΚΤΟΥ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ
Το λογισμικό ανοικτού πηγαίου κώδικα (Open Source) είναι το λογισμικό το οποίο κυκλοφορεί ελεύθερα ακόμα και σε επίπεδο πηγαίου κώδικα.
Κατά συνέπεια μπορεί ο καθένας να χρησιμοποιεί, να διανέμει, να αντιγράψει και να το τροποποιεί ελεύθερα ανάλογα με τις ανάγκες του.
Η ιδέα του λογισμικού ανοικτού κώδικα γνωρίζει τεράστια διάδοση σήμερα.
78