ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
Advertisements

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ & MATLAB
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διαφάνειες παρουσίασης #5
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ
1 Ολυμπιάδα Πληροφορικής Μάθημα 2. 2 Στόχοι μαθήματος Αριθμητικοί– Λογικοί Τελεστές Η εντολή IF.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Υπερφόρτωση Τελεστών (Συνέχεια) Αντικειμενοστραφής Προγραμματισμός.
Διαφάνειες παρουσίασης #2
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Βασικά στοιχεία της Java
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
ΣΥΜΜΟΡΦΩΣΗ ΣΕ ΔΙΚΑΣΤΙΚΕΣ ΑΠΟΦΑΣΕΙΣ Εισηγητές: - Κωνσταντίνος Μπλάγας, Δ/νων Σύμβουλος ΔήμοςΝΕΤ - Καλλιόπη Παπαδοπούλου, Νομική Σύμβουλος ΔήμοςΝΕΤ.
«Διγλωσσία και Εκπαίδευση» Διδάσκων: Γογωνάς Ν. Φοιτήτρια: Πέτρου Μαρία (Α.Μ )
Π.Γ.Ε.Σ.Σ ΚΑΡΝΑΡΟΥ ΧΡΙΣΤΙΝΑ Β2ΘΡΗΣΚΕΥΤΙΚΑ ΚΕΦΑΛΑΙΟ 5 ΣΕΛΙΔΕΣ ΕΡΓΑΣΙΕΣ Α-Δ.
ΛΟΓΙΣΤΙΚΗ ΚΟΣΤΟΥΣ ΤΕΧΝΙΚΕΣ ΚΟΣΤΟΛΟΓΗΣΗΣ Αποφάσεις Βάσει Οριακής & Πλήρους Κοστολόγησης Α.Τ.Ε.Ι. ΚΡΗΤΗΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΑΠΟΦΑΣΕΙΣ ΒΑΣΕΙ ΟΡΙΑΚΗΣ.
Υπεύθυνη καθηγήτρια: Ε. Γκόνου Μαθητές: Ρωμανός Πετρίδης, Βαγγέλης Πίπης Π.Γ.Ε.Σ.Σ ….Θανέειν πέπρωται άπασι.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΦΟΡΟΛΟΓΙΚΟ ΔΙΚΑΙΟ Ι Συνυπολογισμός προηγούμενων δωρεών ή γονικών παροχών για σκοπούς φόρου κληρονομίας Διδάσκων καθηγητής: Α. Τσουρουφλής Εξηνταβελώνη.
ΟΙ ΑΡΓΥΡΟΙ ΚΑΙ ΧΡΥΣΟΙ ΚΑΝΟΝΕΣ ΤΗΣ ΛΥΣΗΣ
Οι Αριθμοί … 5.
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
EPL231 – Data Structures and Algorithms
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Σύστημα πρόσβασης στην Τριτοβάθμια Εκπαίδευση
АНТИБИОТИКЛАРНИНГ ФАРМАКОЛОГИЯСИ т.ф.д., проф. Алиев Х.У Тошкент 2014
Μεταγράφημα παρουσίασης:

ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Διαφάνειες παρουσίασης #8 4 Εισαγωγή 4 Αφηρημένοι τύποι δεδομένων 4 Παραδείγματα 4 Συμβολοσειρές

2Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Εισαγωγή(i) u Τύποι δεδομένων στη C int double typedef struct { double re, im; } complex; u Χρησιμότητα των τύπων δεδομένων l Δημιουργία μεταβλητών complex c; l Χρήση με τη βοήθεια πράξεων c = cadd(c1, c2);

3Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Εισαγωγή(ii) u Αφαίρεση δεδομένων (data abstraction) l Διαχωρισμός ιδιοτήτων και υλοποίησης l Ιδιότητες ενός τύπου δεδομένων είναι ο τρόπος με τον οποίο δημιουργεί κανείς μεταβλητές και ο τρόπος με τον οποίο τις χρησιμοποιεί l Σύνταξη και σημασιολογία των ιδιοτήτων l Υλοποίηση ενός τύπου δεδομένων είναι ο συγκεκριμένος τρόπος με τον οποίο προγραμματίζονται οι διάφορες πράξεις που μπορεί κανείς να εφαρμόσει

4Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Εισαγωγή(ii) u Διαφορετικές δυνατές υλοποιήσεις l Μιγαδικοί αριθμοί: καρτεσιανές συντεταγμένες typedef struct { double re, im; } complex; complex cadd (complex c1, complex c2) { complex result; result.re = c1.re + c2.re; result.im = c1.im + c2.im; return result; }

5Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Εισαγωγή(iii) l Μιγαδικοί αριθμοί: πολικές συντεταγμένες typedef struct { double norm, angle; } complex; complex cadd (complex c1, complex c2) { double x = c1.norm * cos(c1.angle) + c2.norm * cos(c2.angle); double y = c1.norm * sin(c1.angle) + c2.norm * sin(c2.angle); complex result; result.norm = sqrt(x*x + y*y); result.angle = atan2(y, x); return result; }

6Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Εισαγωγή(iv) u Οι λεπτομέρειες υλοποίησης επηρεάζουν τις επιδόσεις των προγραμμάτων u Είναι συχνή επομένως η αλλαγή τρόπου υλοποίησης κάποιου τύπου δεδομένων u Η αφαίρεση δεδομένων ελαχιστοποιεί τις αλλαγές που απαιτούνται στο πρόγραμμα που χρησιμοποιεί έναν τύπο δεδομένων, όταν αλλάξει ο τρόπος υλοποίησης

7Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Αφηρημένοι τύποι δεδομένων u Αφηρημένος τύπος δεδομένων – ΑΤΔ (abstract data type) l καθορίζει τις ιδιότητες του τύπου δεδομένων l δεν εξαρτάται από την υλοποίησή του u Αλγεβρικός ορισμός ΑΤΔ l σύνταξη: όνομα του τύπου και επικεφαλίδες των πράξεων l σημασιολογία: κανόνες που περιγράφουν τη λειτουργία των πράξεων

8Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Παράδειγμα ΑΤΔ: Λογικές τιμές(i) u Σύνταξη Όνομα τύπου: boolean l Επικεφαλίδες πράξεων: const boolean true, false; boolean band (boolean x, boolean y); boolean bor (boolean x, boolean y); boolean bnot (boolean x); T if_then_else (boolean x, T a, T b); Η επικεφαλίδα της if_then_else πρέπει να ορίζεται για κάθε τύπο Τ. Η υλοποίησή της δεν μπορεί να γίνει με συνάρτηση.

9Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Παράδειγμα ΑΤΔ: Λογικές τιμές(ii) u Σημασιολογία Αξιωματικός ορισμός band : band(true, y) = y band(false, y) = false Αξιωματικός ορισμός bor : bor(true, y) = true bor(false, y) = y Αξιωματικός ορισμός bnot : bnot(true) = false bnot(false) = true Αξιωματικός ορισμός if_then_else : if_then_else(true, a, b) = a if_then_else(false, a, b) = b

10Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Παράδειγμα ΑΤΔ: Λογικές τιμές(iii) u Μια δυνατή υλοποίηση typedef unsigned char boolean; const boolean true = 1, false = 0; boolean band (boolean x, boolean y) { return x && y; } boolean bor (boolean x, boolean y) { return x || y; } boolean bnot (boolean x) { return !x; } #define if_then_else(x, a, b) \ ((x) ? (a) : (b))

11Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Παράδειγμα ΑΤΔ: Σύνολα(i) u Σύνταξη Όνομα τύπου: set (σύνολα ακεραίων) l Επικεφαλίδες πράξεων: const set empty; set add (int x, set s); boolean member (int x, set s); set union (set s1, set s2); boolean subset (set s1, set s2); boolean equal (set s1, set s2);

12Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Παράδειγμα ΑΤΔ: Σύνολα(ii) u Σημασιολογία Αξιωματικός ορισμός member : member(x, empty) = false member(x, add(x, s)) = true member(x, add(y, s)) = member(x, s) αν x != y Αξιωματικός ορισμός union : union(empty, s) = s union(add(x, s1), s2) = add(x, union(s1, s2))

13Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι Παράδειγμα ΑΤΔ: Σύνολα(iii) u Σημασιολογία Αξιωματικός ορισμός subset : subset(empty, s) = true subset(add(x, s1), s2) = band(member(x, s2), subset(s1, s2)) Αξιωματικός ορισμός equal : equal(s1, s2) = band(subset(s1, s2), subset(s2, s1))

14Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι ΑΤΔ: Συμβολοσειρές(i) u Σύνταξη Όνομα τύπου: string l Επικεφαλίδες πράξεων: string stringMake (const char * n); const char * stringGet (string s); void stringCopy (string * s1, string s2); string stringDuplicate (string s); string stringConcat (string s1, string s2); int stringCompare (string s1, string s2);

15Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι ΑΤΔ: Συμβολοσειρές(ii) u Σύνταξη (συνέχεια) l Επικεφαλίδες πράξεων: int stringLength (string s); char stringIndex (string s1, int index); string stringPart (string s, int start, int length); string stringUpperCase (string s); void stringPrint (string s);

16Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι ΑΤΔ: Συμβολοσειρές(iii) u Σημασιολογία (άτυπη: με λόγια) stringMake, stringGet : μετατρέπουν const char * σε string και αντίστροφα stringDestroy(s) : καταστρέφει τη συμβολοσειρά s. stringDuplicate(s) : επιστρέφει ένα αντίγραφο της s. stringConcat(s1, s2) : επιστρέφει μια συμβολοσειρά που περιέχει τη συνένωση των περιεχομένων των s1 και s2.

17Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι ΑΤΔ: Συμβολοσειρές(iv) u Σημασιολογία (συνέχεια) stringCompare(s1, s2) : συγκρίνει τα περιεχόμενα των s1 και s2 λεξικογραφικά. stringLength(s) : επιστρέφει το μήκος της συμβολοσειράς s σε χαρακτήρες. stringIndex(s, i) : επιστρέφει τον i -οστό χαρακτήρα της συμβολοσειράς s. stringPart(s, i, l) : επιστρέφει το τμήμα της συμβολοσειράς s που αρχίζει στον i -οστό χαρακτήρα και έχει μήκος l.

18Νίκος ΠαπασπύρουΛΟΓ102: Τεχνολογία Λογισμικού Ι ΑΤΔ: Συμβολοσειρές(v) u Σημασιολογία (συνέχεια) stringUpperCase(s) : επιστρέφει μια συμβολοσειρά με τα περιεχόμενα της s, όπου όμως τα μικρά γράμματα έχουν αντικατασταθεί με κεφαλαία. stringPrint(s) : εκτυπώνει τα περιεχόμενα της συμβολοσειράς s.