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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
Πίνακες.
Ανασκόπηση σε Δείκτες, Ουρές, Στοίβες, Συνδεδεμένες Λίστες
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Κατανομή με ευρετήριο.
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι18/10/2010.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 2: Πίνακες και δυναμικά δεδομένα στη FORTRAN 90 Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Αντικειμενοστραφής Προγραμματισμός
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 4: Δείκτες, συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Διαφάνειες παρουσίασης #5
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 5: Επαναληπτικές και εξωτερικές συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 3: Δείκτες Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ι. Σαρρής, τηλ.
Γενική μορφή προγράμματος Pascal
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
Διαφάνειες παρουσίασης #3
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Αλγόριθμοι συνέχεια 2.2.4, 2.2.5,
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
Δείκτες (Pointers) – Δομές (Structs)
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 9: Παραγωγή Ενδιάμεσου Κώδικα (Ενδιάμεσες Γλώσσες) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Διαφάνειες παρουσίασης #2
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πίνακες.
Διαφάνειες παρουσίασης Ορθότητα (συνέχεια) Τακτικοί τύποι και τύποι υποπεριοχής Πίνακες.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Δομές Δεδομένων και Αρχεία Ενότητα 10: Κυκλικά και Διπλά Συνδεδεμένη Λίστα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I.
Δομές Δεδομένων και Αρχεία
2η άσκηση Να γραφεί πρόγραμμα που θα ζητάει τους a,b συντελεστές και τους δύο πρώτους όρους x 1, x 2 της αναγωγικής ακολουθίας x n = ax n-1 +bx n-2 και.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Γνωριμία με το Λογισμικό του υπολογιστή Μια παρουσίαση για τους μαθητές της Α΄ Τάξης του 49ου Γυμνασίου Αθήνας Διδάσκων: Χ. Μοτσενίγος 49ο Γυμνάσιο Αθήνας.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Δομές δεδομένων και Αλγόριθμοι Κεφάλαιο 3. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Δεδομένα Δεδομένα (data) Δεδομένα (data) –αφαιρετική αναπαράσταση.
Ε ΙΣΑΓΩΓΉ Σ ΤΟΥΣ Μ ΟΝΟΔΙΑΣΤΑΤΟΥΣ Π ΊΝΑΚΕΣ Αστρινάκη Μαρία.
Δυναμικός Κατακερματισμός
Η Γλώσσα Pascal Εντολή If
Εφαρμογές Υπολογιστών
Ενισχυτική διδασκαλία
Η Γλώσσα Pascal Υποπρογράμματα
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
EPL231 – Data Structures and Algorithms
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Μεταγράφημα παρουσίασης:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΠρογραμματισμός Ηλεκτρονικών Υπολογιστών Διαφάνειες παρουσίασης #9 Διαχείριση της μνήμης Δείκτες Συνδεδεμένες λίστες

2Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Διαχείριση της μνήμης(i) u Στατικές μεταβλητές: γενικές ή τοπικές l ο χώρος στη μνήμη όπου τοποθετούνται δεσμεύεται κάθε φορά που καλείται η ενότητα όπου δηλώνονται και αποδεσμεύεται στο τέλος της κλήσης u Δυναμικές μεταβλητές l ο χώρος στη μνήμη όπου τοποθετούνται δεσμεύεται και αποδεσμεύεται δυναμικά, δηλαδή με φροντίδα του προγραμματιστή l η προσπέλαση σε δυναμικές μεταβλητές γίνεται με τη χρήση δεικτών (pointers)

3Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Διαχείριση της μνήμης(ii) u Με τη βοήθεια των δυναμικών μεταβλητών υλοποιούνται δυναμικοί τύποι δεδομένων l συνδεδεμένες λίστες, l δέντρα, γράφοι, κ.λπ. u Πλεονεκτήματα των δυναμικών τύπων l μπορούν να περιέχουν απεριόριστο πλήθος στοιχείων (αν το επιτρέπει η διαθέσιμη μνήμη) l κάποιες πράξεις υλοποιούνται αποδοτικότερα (π.χ. προσθήκη και διαγραφή στοιχείων σε ενδιάμεση θέση)

4Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δείκτες(i) u Δείκτης (pointer): η διεύθυνση μιας περιοχής της μνήμης όπου βρίσκεται μια δυναμική μεταβλητή u Παράδειγμα var p : ^integer;... (* ο δείκτης p τοποθετείται να δείχνει σε κάποια ακέραια δυναμική μεταβλητή *)... p^ := 42; writeln(p^ + 1) p 42

5Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δείκτες(ii) u Κενός δείκτης (nil pointer): ειδική τιμή δείκτη που δε δείχνει πουθενά u Παράδειγμα var p : ^integer;... p := nil p u Απαγορεύεται η προσπέλαση της μνήμης μέσω ενός κενού δείκτη p := nil; writeln(p^) λάθος!

6Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δυναμική παραχώρηση μνήμης u Δέσμευση l δημιουργία μιας νέας δυναμικής μεταβλητής var p : ^integer;... new(p) p u Αποδέσμευση l καταστροφή μιας δυναμικής μεταβλητής... dispose(p) p

7Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Σύνθετες δυναμικές μεταβλητές(i) u Παράδειγμα type nodeptr = ^nodetype; nodetype = record info : integer; next : nodeptr end; var p : nodeptr;... new(p); p^.info := 42; p^.next := nil p 42

8Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών ξεκρέμαστοι δείκτες! Σύνθετες δυναμικές μεταβλητές(ii) u Παράδειγμα (συνέχεια) q := p; p 42 q q^.info := 563; q^.next := q; p 563 q dispose(p)

9Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δείκτες και ανάθεση(i) u Ανάθεση δεικτών q := p σκουπίδια! p 42 q 7 πριν p 42 q 7 μετά

10Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δείκτες και ανάθεση(ii) u Ανάθεση τιμών q^ := p^ σκουπίδια! p 42 q 7 πριν μετά p 42 q

11Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(i) u Είναι γραμμικές διατάξεις u Κάθε κόμβος περιέχει: l κάποια πληροφορία l ένα σύνδεσμο στον επόμενο κόμβο u Ο τελευταίος κόμβος έχει κενό σύνδεσμο

12Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(ii) u Ευκολότερη προσθήκη στοιχείων l πριν l μετά

13Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(iii) u Ευκολότερη διαγραφή στοιχείων l πριν l μετά

14Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(iv) u Τύπος κόμβου συνδεδεμένης λίστας type nodeptr = ^nodetype; nodetype = record info : integer; next : nodeptr end πρωθύστερο! u Μια συνδεδεμένη λίστα παριστάνεται συνήθως με ένα δείκτη στο πρώτο της στοιχείο var head : nodeptr

15Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(v) u Παράδειγμα κατασκευής λίστας program linkedlist(input,output); type nodetype = record info : integer; next : ^nodetype end; var head, node : ^nodetype; data : integer;

16Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(v) u Παράδειγμα (συνέχεια) begin head := nil; read(data); while not eof do begin new(node); node^.info := data; node^.next := head; head := node; read(data) end end.

17Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(vi) u Εκτύπωση λίστας procedure print(p : nodeptr); begin while p <> nil do begin writeln(p^.info); p := p^.next end

18Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(vii) u Εκτύπωση λίστας με αναδρομή procedure print(p : nodeptr); begin if p <> nil then begin writeln(p^.info); print(p^.next) end

19Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Συνδεδεμένες λίστες(viii) u Εκτύπωση λίστας αντίστροφα με αναδρομή procedure printBackwards(p : nodeptr); begin if p <> nil then begin printBackwards(p^.next); writeln(p^.info) end