Ίδιες αρχές λειτουργίας Πρόγραμμα ονομάζεται η διατύπωση του αλγορίθμου σε μορφή κατανοητή από τον υπολογιστή Το Υλικό μπορεί μόνο Να αποθηκεύει και να ανακτά ακολουθίες δυαδικών ψηφίων Να κάνει στοιχειώδεις αριθμητικές πράξεις Το οποίο σημαίνει ότι ο ΗΥ γίνεται ‘έξυπνος’ αφού προγραμματιστεί!!! Αρχικοί Υπολογιστές Σύγχρονοι Υπολογιστές Τεράστιοι σε διαστάσεις Μικροί σε διαστάσεις Μικρές δυνατότητες Πολλαπλάσιες δυνατότητες Ίδιες αρχές λειτουργίας
Γενιές γλωσσών προγραμματισμού Γλώσσες μηχανής (1η γενιά) Συμβολικές γλώσσες ή χαμηλού επιπέδου (2η γενιά) Γλώσσες υψηλού επιπέδου (3η γενιά) Γλώσσες 4ης γενιάς
Α. Γλώσσες μηχανής (1η γενιά) Οι εντολές ήταν διατυπωμένες σε ακολουθίες 0 και 1! Π.χ. ένα ‘απλό’ προγραμματάκι… 000001101001010 010101100100101 010101010101011 Πρακτικά, οι προγραμματιστές ρύθμιζαν διακόπτες και άλλαζαν καλωδιώσεις σε κυκλώματα!!! Δηλαδή: επίπονη διαδικασία χρονοβόρα διαδικασία για επιστήμονες (experts)
(συμβολομεταφραστής) Β. Συμβολικές γλώσσες ή Γλώσσες χαμηλού επιπέδου (2η γενιά) Οι εντολές έχουν νόημα για τον άνθρωπο! Π.χ. ADD 5 10 Assembler (συμβολομεταφραστής) Συμβολική γλώσσα Γλώσσα μηχανής Αλλά: Μακροσκελή προγράμματα Αδυναμία μεταφερσιμότητας (δεν μπορούσαν να εκτελεστούν σε ΗΥ με διαφορετική αρχιτεκτονική)
Γ. Γλώσσες υψηλού επιπέδου (3η γενιά) Οι εντολές είναι στα αγγλικά και ακολουθούν αυστηρούς κανόνες σύνταξης Μεταφράζονται σε γλώσσα μηχανής Fortran 1957 Μαθηματικά και επιστημονικά προβλήματα Cobol 1960 Εμπορικές εφαρμογές Algol Απόπειρα για γενικής χρήσης γλώσσα προγραμματισμού PL/1 1965 Και εμπορικά και επιστημονικά LISP -PROLOG 1970 Τεχνητή Νοημοσύνη Basic Για εκπαιδευτικούς σκοπούς Pascal Γενικής χρήσης-ισχυρά προγράμ. C Γενικής χρήσης-ισχυρά χαρακτ. Java Internet – κατανεμημένα περιβάλλ.
Γ. Γλώσσες υψηλού επιπέδου (3η γενιά) Σύγχρονες γλώσσες προγραμματισμού C++ -Γλώσσες οπτικού προγραμματισμού (visual programming) Διαθέτουν κουμπιά, εικονίδια, μενού κ.α. οπτικά εργαλεία στον προγραμματιστή, διευκολύνοντας έτσι τον προγραμματισμό γραφικού περιβάλλοντος -Προγραμματισμός οδηγούμενος από το γεγονός (event driven programming) Όταν ο χρήστης προκαλεί ένα γεγονός (π.χ. κλικάρει ένα κουμπί ή διπλοπατάει ένα εικονίδιο) ενεργοποιείται η εκτέλεση των συγκεκριμένων εντολών που έχει ορίσει ο προγραμματιστής. Visual Basic Visual C Delphi
Γ. Γλώσσες υψηλού επιπέδου (3η γενιά) Πλεονεκτήματα Οι εντολές πλησιάζουν τις φυσικές γλώσσες Δυνατότητα μεταφερσιμότητας Ευκολία στην εκμάθηση και εκπαίδευση των γλωσσών Ευκολότερη η διόρθωση λαθών και η συντήρηση των προγραμμάτων Συνέπειες Μείωση χρόνου κατασκευής ενός προγράμματος Μείωση κόστους κατασκευής Προσιτός ο προγραμματισμός σε περισσότερους ανθρώπους
Με τις γλώσσες 4ης γενιάς οι χρήστες μπορούν να διατυπώνουν Δ. Γλώσσες 4ης γενιάς Οι γλώσσες προγραμματισμού μέχρι την 3η γενιά απευθύνονταν σε προγραμματιστές – επιστήμονες. Με τις γλώσσες 4ης γενιάς οι χρήστες μπορούν να διατυπώνουν απλά ερωτήματα με εύκολο τρόπο στο σύστημα και να ανακτούν πληροφορίες. Π.χ. SQL (γλώσσα ερωταπαντήσεων) σε Βάσεις Δεδομένων Select first_name, last_name, gradeA From pupilsG Where gradeA<9.0
Ποια είναι η καλύτερη γλώσσα προγραμματισμού για να την επιλέξουμε να τη διδάξουμε σε όλους τους σπουδαστές Πληροφορικής και να καθιερωθεί σε όλον τον κόσμο??? Επιλέγουμε ποια γλώσσα πρ/σμού θα χρησιμοποιήσουμε ανάλογα με το είδος της εφαρμογής το υπολογιστικό περιβάλλον τις γνώσεις του προγραμματιστή???
Διαφορές Φυσικές γλώσσες Επικοινωνία μεταξύ ανθρώπων Τεχνητές γλώσσες Επικοινωνία μεταξύ ανθρώπου και μηχανής Διαφορές Οι φυσικές γλώσσες εξελίσσονται! Οι τεχνητές;
Κοινά χαρακτηριστικά A. Αλφάβητο (σύμβολα που χρησιμοποιούνται) Αγγλική γλώσσα: A, B, C, D, …, ?, 1, 2 κ.τ.λ. ΓΛΩΣΣΑ: Α-Ω, α-ω, Α-Ζ, α-z, !, -, 1-0 B. Λεξιλόγιο (έγκυρες ακολουθίες συμβόλων) Ελληνική γλώσσα: μήλο, Λόλα, τρώω ΓΛΩΣΣΑ: Τέλος_επανάληψης, μέχρι, αλλιώς_αν
Δ. Σημασιολογία (νόημα λέξεων, εκφράσεων) Κοινά χαρακτηριστικά Γ. Γραμματική Τυπικό (αποδεκτές μορφές λέξεων) ΕΛΛΗΝΙΚΗ: γλώσσα, γλώσσας, γλώσσες Συντακτικό (αποδεκτή διάταξη και σύνδεση λέξεων) ΓΛΩΣΣΑ: όσο χ>0 επανάλαβε Δ. Σημασιολογία (νόημα λέξεων, εκφράσεων) Τι δηλώνει το τέλος_προγράμματος στη ΓΛΩΣΣΑ;
Διάσπαση του προβλήματος σε απλούστερα υποπροβλήματα Τεχνικές Σχεδίασης/Ανάπτυξης προγράμματος Ιεραρχική σχεδίαση Διάσπαση του προβλήματος σε απλούστερα υποπροβλήματα Π.χ. Υπολογισμός του Μ.Ο. και της Διαμέσου Ν αριθμών: Πρόγραμμα Εισαγωγή των Ν αριθμών Υπολογισμοί Εμφάνιση αποτελεσμάτων Υπολογισμός ΜΟ Υπολογισμός Διαμέσου Διαίρεση του αθροίσματος με Ν Υπολογισμός αθροίσματος Ταξινόμηση των Ν αριθμών Εύρεση της μεσαίας τιμής
Τμηματικός προγραμματισμός Δομημένος προγραμματισμός Τεχνικές Σχεδίασης/Ανάπτυξης προγράμματος Τμηματικός προγραμματισμός Υλοποίηση της λύσης κάθε υποπροβλήματος χωριστά. Κάθε υποπρόβλημα ονομάζεται ενότητα (module) Δομημένος προγραμματισμός Χρήση των δομών: Ακολουθίας, Επιλογής, Επανάληψης Όχι της εντολής GOTO Κάθε πρόγραμμα ή ενότητα προγράμματος έχει ένα σημείο εισόδου και ένα σημείο εξόδου Εμπεριέχει την ιεραρχική σχεδίαση και τον τμηματικό προγραμματισμό
Χρήση της GoTo… το αποτέλεσμα σπαγγέτι! Γράψε ‘Αρνητικός’ 1: Γράψε ‘Θετικός’ GoTo 3 2: Γράψε ‘Μηδέν’ 3: Γράψε ‘Τέλος’ Aν x>0 τότε γράψε ‘θετικός’ Αλλιώς_αν χ=0 τότε γράψε ‘Μηδέν’ Αλλιώς Γράψε ‘Αρνητικός’ Τέλος_αν Γράψε τέλος
Πλεονεκτήματα δομημένου προγραμματισμού Απλούστερα προγράμματα Άμεση μετατροπή των αλγορίθμων σε προγράμματα Ευκολία στην ανάλυση του προγράμματος σε τμήματα Περιορισμός λαθών Ευκολία στην ανάγνωση και κατανόηση του προγράμματος από τρίτους Ευκολότερη διόρθωση και συντήρηση
Προγραμματιστικά περιβάλλοντα Μεταφράζεται Πρόγραμμα Γλώσσα Μηχανής Πρόγραμμα ΜΟ Μεταβλητές Ακέραιες: ΜΟ Αρχή ΜΟ (2+10)/2 Γράψε ΜΟ Τέλος_προγράμματος ΜΟ 00000100101010 10010101010101 01010101010101 ….. ή Διερμηνευτής (Interpreter) Μεταγλωττιστής (Compiler) Συντάκτης (editor) Μεταγλωττιστής ή Διερμηνευτής Συνδέτης
Πώς δουλεύει ένας μεταγλωττιστής; Βιβλιοθήκες Libraries Συνδέτης/ Φορτωτής Μεταγλωττιστής Αρχικό/πηγαίο πρόγραμμα Source code Αντικείμενο πρόγραμμα Object Εκτελέσιμο πρόγραμμα Executable Πώς δουλεύει ένας διερμηνευτής; Ο διερμηνευτής Διαβάζει την κάθε εντολή Ελέγχει την ορθότητά της Τη μετατρέπει σε γλώσσα μηχανής Την εκτελεί Και προχωράει στην επόμενη εντολή
Όσο υπάρχουν συντακτικά λάθη στο πρόγραμμα, ΔΕΝ μπορεί να παραχθεί Κατηγορίες λαθών Α. Συντακτικά Π.χ. όσο α>0 επανάληψη Β. Λογικά Π.χ. Πρόγραμμα ΜέσοςΟρος Μεταβλητές Ακέραιες: ΜΟ Αρχή ΜΟ 2 + 10 /2 Τέλος_προγράμματος Όσο υπάρχουν συντακτικά λάθη στο πρόγραμμα, ΔΕΝ μπορεί να παραχθεί το εκτελέσιμο αρχείο !!!
Σύγχρονες έννοιες Α. Αντικειμενοστραφής προγραμματισμός (object oriented programming) Στον αντικειμενοστραφή προγραμματισμό, κύρια δομικά στοιχεία είναι τα αντικείμενα, πάνω στα οποία μπορούν να εφαρμοστούν κάποιες ενέργειες. Β. Παράλληλος προγραμματισμός Ανεξάρτητα τμήματα ενός προγράμματος εκτελούνται παράλληλα σε διαφορετικούς επεξεργαστές. ΕΚΤΟΣ ΥΛΗΣ Επόμενη διαφάνεια Επόμενη διαφάνεια
Παράλληλος προγραμματισμός: Αντικειμενοστραφής προγραμματισμός: table.Insert table.Delete table.FindKey(‘Μαρία’) table.SortBy(last_name) ΕΚΤΟΣ ΥΛΗΣ Table: Αντικείμενο Insert, Delete, FindKey, SortBy: ενέργειες Πίσω….. Παράλληλος προγραμματισμός: Πρόβλημα: Υπολογισμός ΜΟ της επίδοσης των τμημάτων της Γ Υπολογισμοί Υπολογισμός ΜΟ Γ1 Υπολογισμός ΜΟ Γ2 Υπολογισμός ΜΟ Γ3 Υπολογισμός ΜΟ των 3 επιμέρους Μέσων όρων