ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
Advertisements

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
ΜΑΘ3122/106 Γλώσσα Προγραμματισμού
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
Διαφάνειες παρουσίασης #5
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 6: Java Collections Εβδομάδα 6: Συλλογές δεδομένων στην Java.
Τελεστές ανάθεσης (assignment)
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
1Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΓΡΑΦΟΙ (GRAPHS) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Νίκος Παπασπύρου.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
1 Ολυμπιάδα Πληροφορικής Μάθημα 2. 2 Στόχοι μαθήματος Αριθμητικοί– Λογικοί Τελεστές Η εντολή IF.
Διαφάνειες παρουσίασης #3
Αλγόριθμοι και Πολυπλοκότητα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Ουρά Προτεραιότητας: Heap
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Δείκτες (Pointers) – Δομές (Structs)
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Διαφάνειες παρουσίασης #2
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πίνακες.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΜΑΘΗΜΑ 20 Δομή Προγράμματος, Πίνακες Παραδείγματα, ΑΤΔ
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Βασικά στοιχεία της Java
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Δομές δεδομένων και Αλγόριθμοι Κεφάλαιο 3. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Δεδομένα Δεδομένα (data) Δεδομένα (data) –αφαιρετική αναπαράσταση.
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Μεταγράφημα παρουσίασης:

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Διαφάνειες παρουσίασης #3 4 Πίνακες 4 Δομές δεδομένων, αλγόριθμοι, πολυπλοκότητα 4 Συγκεκριμένοι και αφηρημένοι τύποι δεδομένων

2Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πίνακες (arrays)(i) u Ακολουθία μεταβλητών l με το ίδιο όνομα, l με τον ίδιο τύπο δεδομένων, l σε συνεχόμενες θέσεις μνήμης. u Παράδειγμα int a[50]; double d1[5], d2[10]; u Η αρίθμηση αρχίζει από το 0 ! for (i = 0; i < 50; i++) a[i] = i;

3Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πίνακες (arrays)(ii) u Αρχικοποίηση πινάκων int a[3] = {6, 7, 42}; char c[] = {'a', 'b', 'c', 'd', 'e'}; u Συμβολοσειρές l Είναι πίνακες χαρακτήρων char s[6] = "abcde"; Τερματίζονται με τον κενό χαρακτήρα '\0' char s[6] = {'a', 'b', 'c', 'd', 'e', '\0'};

4Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πίνακες (arrays)(iii) u Παράδειγμα int a[3] = {5, 6, 7}; int b[3] = {2, 3, 1}; int i; for (i = 0; i < 3; i++) printf("%d times %d is %d\n", a[i], b[i], a[i]*b[i]); 5 times 2 is 10 6 times 3 is 18 7 times 1 is 7 5 times 2 is 10 6 times 3 is 18 7 times 1 is 7

5Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πολυδιάστατοι πίνακες(i) u Παράδειγμα int a[3][5]; char c[5][10][4]; u Αρχικοποίηση int i[3][3] = { {1, 0, 0}, {0, 1, 0}, {0, 0, 1} }; char s[][10] = { "my", "name", "is", "joe" };

6Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πολυδιάστατοι πίνακες(ii) u Παράδειγμα: πολλαπλασιασμός πινάκων double a[3][4] =..., b[4][5] =..., c[3][5]; int i, j, k; for (i=0; i<3; i++) for (j=0; j<5; j++) { c[i][j] = 0.0; for (k=0; k<4; k++) c[i][j] += a[i][k] * b[k][j]; }

7Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Εισαγωγή στις δομές δεδομένων(i) u Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα l Δεδομένα εισόδου και εξόδου l Κάθε εντολή πρέπει να είναι: καλά ορισμένη απλή l Η εκτέλεση πρέπει να σταματά

8Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Εισαγωγή στις δομές δεδομένων(ii) u Πολυπλοκότητα Μέτρο εκτίμησης της απόδοσης αλγορίθμων ως συνάρτηση του μεγέθους του προβλήματος που επιλύουν l Χρόνος εκτέλεσης l Χωρητικότητα μνήμης που απαιτείται u Ακριβής μέτρηση πολυπλοκότητας t = f(n) u Τάξη μεγέθους, συμβολισμοί Ο, Ω, Θ t = O(f(n))

9Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Εισαγωγή στις δομές δεδομένων(iii) u Ορισμός των κλάσεων Ο, Ω, Θ l Άνω όριο g = O(f)  c.  n 0.  n > n 0. g(n) < c f(n) l Κάτω όριο g = Ω(f)  c.  n 0.  n > n 0. g(n) > c f(n) l Τάξη μεγέθους g = Θ(f)  c 1, c 2.  n 0.  n > n 0. c 1 f(n) < g(n) < c 2 f(n) u Διάταξη μερικών κλάσεων πολυπλοκότητας O(1) < O(logn) < O(  n) < O(n) < O(nlogn) < O(n 2 ) < O(n 3 ) < O(2 n ) < O(n!) < O(n n )

10Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Εισαγωγή στις δομές δεδομένων(iv) u Αφαίρεση δεδομένων (data abstraction) l Διαχωρισμός ιδιοτήτων και υλοποίησης l Ιδιότητες ενός τύπου δεδομένων: ο τρόπος με τον οποίο δημιουργεί κανείς και χρησιμοποιεί δεδομένα αυτού του τύπου l Υλοποίηση ενός τύπου δεδομένων: ο τρόπος με τον οποίο αναπαρίστανται τα δεδομένα στη μνήμη του υπολογιστή και προγραμματίζονται οι διαθέσιμες πράξεις

11Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Εισαγωγή στις δομές δεδομένων(v) u Οι λεπτομέρειες υλοποίησης επηρεάζουν την πολυπλοκότητα των αλγορίθμων u Είναι συχνή επομένως η αλλαγή τρόπου υλοποίησης κάποιου τύπου δεδομένων u Η αφαίρεση δεδομένων ελαχιστοποιεί τις αλλαγές που απαιτούνται στο πρόγραμμα που χρησιμοποιεί έναν τύπο δεδομένων, όταν αλλάξει ο τρόπος υλοποίησης

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

13Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Παράδειγμα ΑΤΔ: Σύνολα(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); Σημείωση: θεωρούμε ότι έχει οριστεί κατάλληλα ο τύπος boolean.

14Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Παράδειγμα ΑΤΔ: Σύνολα(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))

15Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Παράδειγμα ΑΤΔ: Σύνολα(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))

16Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Συγκεκριμένοι τύποι δεδομένων u Συγκεκριμένος τύπος δεδομένων – ΣΤΔ (concrete data type) l καθορίζει τις ιδιότητες του τύπου δεδομένων l καθορίζει επακριβώς την υλοποίησή του u Κάθε γλώσσα προγραμματισμού υποστηρίζει ορισμένους ΣΤΔ, π.χ. l απλοί τύποι: ακέραιοι αριθμοί, πραγματικοί αριθμοί, χαρακτήρες, λογικές τιμές l σύνθετοι τύποι: πίνακες (arrays), εγγραφές (records), δείκτες (pointers), σύνολα (sets)

17Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Σχέση ΑΤΔ και ΣΤΔ(i) u ΑΤΔ set: σύνολα ακεραίων s = { 1, 3, 7, 9 } u Υλοποίηση 1: πίνακας από boolean falsetruefalsetrue false s[2]s[1]s[8]s[3]s[7]s[9]s[0] s[4] s[5]s[6]s[10] u Υλοποίηση 2: bits ενός πίνακα από int 0 s[1]s[3] s[7] s[9] l Στατικός τρόπος υλοποίησης ΣΤΔ

18Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Σχέση ΑΤΔ και ΣΤΔ(ii) u Υλοποίηση 3: απλά συνδεδεμένη λίστα l Δυναμικός τρόπος υλοποίησης ΣΤΔ u Υλοποίηση 4: συμβολοσειρά που περιέχει το μαθηματικό ορισμό του συνόλου "{x | x=1 \/ x=3 \/ x=7 \/ x=9}" "{x | 1 5}" l Δύσκολη η υλοποίηση των πράξεων Απειροσύνολα: "{x | x > 100}" 1379