ιαφάνειες παρουσίασης #3

Σχετικά έγγραφα
Δομές Δεδομένων & Αλγόριθμοι

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #9 (α)

ιαφάνειες παρουσίασης #6 (β)

ιαφάνειες παρουσίασης #4

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στον Προγραμματισμό

ιαφάνειες παρουσίασης #6 (α)

ιαφάνειες παρουσίασης #10 (β)

Αντικειμενοστρεφής Προγραμματισμός

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Προχωρημένες έννοιες προγραμματισμού σε C

Εισαγωγή στον Προγραμματισμό

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ιαφάνειες παρουσίασης #3

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Η γλώσσα προγραμματισμού C

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

Ανάπτυξη και Σχεδίαση Λογισμικού

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

Διδάσκων: Παναγιώτης Ανδρέου

Week. 6: Java Collections

ιαφάνειες παρουσίασης #2

Visual Basic Βασικές Έννοιες

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

Προγραμματισμός Ι (ΗΥ120)

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Βασικές οµές εδοµένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Διάλεξη 10η: Πολυδιάστατοι Πίνακες

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

Εισαγωγή στον Προγραμματισμό

ιαφάνειες παρουσίασης #1

Βασικά Στοιχεία της Java

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Ασυμπτωτικός Συμβολισμός

Επεξεργασία κειμένου και συμβολοσειρών σε C

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Βασικά στοιχεία της Java

ιαφάνειες παρουσίασης #11

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

ιαφάνειες παρουσίασης #4

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Στοιχειώδης προγραμματισμός σε C++

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

οµές (structures) και Eνώσεις (unions)

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

ιαφάνειες παρουσίασης #4

Προγραμματισμό για ΗΜΥ

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Εισαγωγή στον Προγραμματισμό

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

Προγραμματισμός Ι (ΗΥ120)

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Υπολογιστική Πολυπλοκότητα

Δοµές Δεδοµένων. 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων. Ε. Μαρκάκης

Αποτελέσματα προόδου

Δομές Δεδομένων (Data Structures)

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

Εισαγωγή στην πληροφορική

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Ασυμπτωτικός Συμβολισμός

ιαφάνειες παρουσίασης #3

ιαφάνειες παρουσίασης #6

Βασικά Στοιχεία της Java

ιαφάνειες παρουσίασης #5

Διαδικασιακός Προγραμματισμός

Transcript:

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης #3!Πίνακες! οµές δεδοµένων, αλγόριθµοι, πολυπλοκότητα!συγκεκριµένοι και αφηρηµένοι τύποι δεδοµένων 1

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

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

Πίνακες (arrays) (iii) " Παράδειγµα 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 is 10 10 6 times 3 is is 18 18 7 times 1 is is 7 4

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

Πολυδιάστατοι πίνακες (ii) " Παράδειγµα: πολλαπλασιασµός πινάκων 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]; } 6

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

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

Εισαγωγή στις δοµές δεδοµένων (iii) " Ορισµός των κλάσεων Ο, Ω, Θ # Άνω όριο g = O(f) c. n 0. n > n 0. g(n) < c f(n) # Κάτω όριο g = Ω(f) c. n 0. n > n 0. g(n) > c f(n) # Τάξη µεγέθους g = Θ(f) c 1, c 2. n 0. n > n 0. c 1 f(n) < g(n) < c 2 f(n) " ιάταξη µερικών κλάσεων πολυπλοκότητας O(1) < O(logn) < O( n) < O(n) < O(nlogn) < O(n 2 ) < O(n 3 ) < O(2 n ) < O(n!) < O(n n ) 9

Εισαγωγή στις δοµές δεδοµένων (iv) " Αφαίρεση δεδοµένων (data abstraction) # ιαχωρισµός ιδιοτήτων και υλοποίησης # Ιδιότητες ενός τύπου δεδοµένων: ο τρόπος µε τον οποίο δηµιουργεί κανείς και χρησιµοποιεί δεδοµένα αυτού του τύπου # Υλοποίηση ενός τύπου δεδοµένων: ο τρόπος µε τον οποίο αναπαρίστανται τα δεδοµένα στη µνήµη του υπολογιστή και προγραµµατίζονται οι διαθέσιµες πράξεις 10

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

Αφηρηµένοι τύποι δεδοµένων " Αφηρηµένος τύπος δεδοµένων ΑΤ (abstract data type) # καθορίζει τις ιδιότητες του τύπου δεδοµένων # δεν καθορίζει την υλοποίησή του " Αλγεβρικός ορισµός ΑΤ # σύνταξη: όνοµα του τύπου και επικεφαλίδες των πράξεων # σηµασιολογία: κανόνες που περιγράφουν τη λειτουργία των πράξεων 12

Παράδειγµα ΑΤ : Σύνολα (i) " Σύνταξη # Όνοµα τύπου: set (σύνολα ακεραίων) # Επικεφαλίδες πράξεων: 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. 13

Παράδειγµα ΑΤ : Σύνολα (ii) " Σηµασιολογία # Αξιωµατικός ορισµός 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)) 14

Παράδειγµα ΑΤ : Σύνολα (iii) " Σηµασιολογία # Αξιωµατικός ορισµός 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)) 15

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

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

Σχέση ΑΤ και ΣΤ (ii) " Υλοποίηση 3: απλά συνδεδεµένη λίστα 1 3 7 9 # υναµικός τρόπος υλοποίησης ΣΤ " Υλοποίηση 4: συµβολοσειρά που περιέχει το µαθηµατικό ορισµό του συνόλου "{x x=1 \/ x=3 \/ x=7 \/ x=9}" "{x 1<=x<=10 /\ x%2=1 /\ x<>5}" # ύσκολη η υλοποίηση των πράξεων # Απειροσύνολα: "{x x > 100}" 18