Αλγόριθμοι. Α. Υπολογιστικά Προβλήματα. Β. Εισαγωγή στους Αλγόριθμους. Γ. ομή Αλγόριθμων. Δ. ομές εδομένων



Σχετικά έγγραφα
Ε.Π. ΕΚΠΑΙΔΕΥΣΗ ΚΑΙ ΑΡΧΙΚΗ ΕΠΑΓΓΕΛΜΑΤΙΚΗ ΚΑΤΑΡΤΙΣΗ, (ΕΠΕΑΕΚ ΙΙ) ΜΕΤΡΟ 2.5, ΕΝΕΡΓΕΙΑ 2.5.1, ΚΑΤΗΓΟΡΙΑ ΠΡΑΞΕΩΝ α

ΕΡΓΟ: «ΕΦΑΡΜΟΓΕΣ ΕΙΚΟΝΙΚΗΣ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑΣ ΣΤΗ ΒΟΙΩΤΙΑ: ΜΑΝΤΕΙΟ ΤΡΟΦΩΝΙΟΥ ΚΑΙ ΜΥΚΗΝΑΪΚΗ ΘΗΒΑ»

Π Ρ Ο Κ Η Ρ Υ Ξ Η ΓΙΑ ΤΗΝ ΠΡΟΣΛΗΨΗ ΔΙΔΑΚΤΙΚΟΥ ΠΡΟΣΩΠΙΚΟΥ ΜΕ ΩΡΙΑΙΑ ΑΠΟΖΗΜΙΩΣΗ. 2. Προσόντα Υποψηφίων - Θέσεις προς Κάλυψη

ΠΕΡΙΕΧΟΜΕΝΑ ΔΗΛΩΣΕΙΣ ΜΕΛΩΝ ΤΟΥ ΔΙΟΙΚΗΤΙΚΟΥ ΣΥΜΒΟΥΛΙΟΥ. 3 ΕΚΘΕΣΗ ΔΙΟΙΚΗΤΙΚΟΥ ΣΥΜΒΟΥΛΙΟΥ ΓΙΑ ΤΗ ΧΡΗΣΗ 2013

ΕΝΗΜΕΡΩΤΙΚΟ ΔΕΛΤΙΟ ΤΟΥ ΙΑΤΡΙΚΟΥ ΣΥΛΛΟΓΟΥ ΑΘΗΝΩΝ

σελ.3 σελ.3 Ημερίδα με θέμα: «Σύγχρονη διάγνωση και αντιμετώπιση διαταραχών ακοής και ομιλίας στα παιδιά»

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΣΥΝΕΔΡΙΑΣΗ ΡΚΣΤ. Τετάρτη 4 Μαΐου 2011

ΑΝΥΨΩΤΙΚΑ ΜΗΧΑΝΗΜΑΤΑ

Σ υ λ λ α λ η τ ή ρ ι ο για τη διάσωση του νοσοκομείου της Φλώρινας

Π Ε Ρ Ι Ο Δ Ι Κ Ο Ε Ν Η Μ Ε Ρ Ω Τ Ι Κ Ο Δ Ε Λ Τ Ι Ο

Τμήμα Ζωικής Παραγωγής ΤΕΙ Δ. Μακεδονίας, Παράρτημα Φλώρινας

ΕΞΑΙΡΕΤΙΚΑ ΕΠΕΙΓΟΝ ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ Ε Λ Λ Η Ν Ι Κ Η Δ Η Μ Ο Κ Ρ Α Τ Ι Α ΥΠΟΥΡΓΕΙΟ ΕΣΩΤΕΡΙΚΩΝ

15PROC

Είναι γνωστό σε όλους ότι την πρώτη δόση,

ΕΤΟΣ 5ο ΑΡΙΘ.ΦΥΛΛΟΥ 252 ΓΡΑΦΕΙΑ: ΤΥΠΟΓΡΑΦΕΙΑ:ΕΙΡΗΝΗΣ 2 ΤΚ ΓΡΕΒΕΝΑ ΤΗΛ.24620/ FAX:24620/ ΤΡΙΤΗ 25 ΔΕΚΕΜΒΡΙΟΥ 2012 ΤΙΜΗ ΦΥΛ 0,30

ΟΙ ΕΜΦΥΛΙΕΣ ΔΙΑΜΑΧΕΣ ΚΑΙ ΣΥΓΚΡΟΥΣΕΙΣ

ΠΡΩΤΟΔΙΚΕΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ Εκλογικών

ΑΡΙΘΜΟΣ 0540/ ΣΥΜΒΑΣΗ ΕΠΙΧΟΡΗΓΗΣΗΣ Ι.ΝΕ.ΔΙ.ΒΙ.Μ. - ΣΧΟΛΙΚΗ ΕΠΙΤΡΟΠΗ ΠΡΩΤΟΒΑΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΔΗΜΟΥ ΒΟΛΟΥ

ΑΡΙΘΜΟΣ 0555/ ΣΥΜΒΑΣΗ ΕΠΙΧΟΡΗΓΗΣΗΣ Ι.ΝΕ.ΔΙ.ΒΙ.Μ. - ΕΝΙΑΙΑ ΣΧΟΛΙΚΗ ΕΠΙΤΡΟΠΗ ΠΡΩΤΟΒΑΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΔΗΜΟΥ ΧΙΟΥ

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

Τεύχος 22 Σεπτέμβριος - Δεκέμβριος 2010 ΠΑΓΚΟΣΜΙΟΙ. K ω π η λ α τ ι κ ά ν έ α

Σχηματισμός Υποτακτικής Παρακειμένου Ενεργητικής Φωνής. Ο Παρακείμενος σχηματίζει την Υποτακτική έγκλιση με δύο τρόπους:

Κραυγή. Δεν έχει μείνει τίποτε άλλο να πει κανείς για τη σήψη και τη διαφθορά. α γ ω ν ί α ς από τον Σύλλογο Νεφροπαθών Φλώρινας

ΑΡΙΘΜΟΣ 0501/ ΣΥΜΒΑΣΗ ΕΠΙΧΟΡΗΓΗΣΗΣ Ι.ΝΕ.ΔΙ.ΒΙ.Μ. - ΣΧΟΛΙΚΗ ΕΠΙΤΡΟΠΗ ΠΡΩΤΟΒΑΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΔΗΜΟΥ ΣΚΟΠΕΛΟΥ

η ιογενής γαστρεντερίτιδα

Θέμα Υγιεινή & Ασφάλεια στην Εργασία - φ Α^ρισ/

ΓΙΑ ΕΦΗΒΟΥΣ ΚΑΙ ΕΝΗΛΙΚΟΥΣ Π Ι Σ Τ Ο Π Ο Ι Η Σ Η Ε Π Α Ρ Κ Ε Ι Α Σ Τ Η Σ ΕΛΛΗΝΟΜΑΘΕΙΑΣ Κ Α Τ Α Ν Ο Η Σ Η Γ Ρ Α Π Τ Ο Υ Λ Ο Γ Ο Υ ΔΕΥΤΕΡΗ ΣΕΙΡΑ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΝΟΜΟΣ ΕΥΒΟΙΑΣ ΣΧΟΛΙΚΗ ΕΠΙΤΡΟΠΗ ΜΟΝΑΔΩΝ Α ΒΑΘΜΙΑΣ ΕΚΠ/ΣΗΣ ΕΡΓΑΣΙΑ:

Λ ο υ κ ά ς Α π ο σ τ ο λ ί δ η ς & Σ υ ν ε ρ γ ά τ ε ς ΔΙΚΗΓΟΡΙΚΗ ΕΤΑΙΡΕΙΑ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΣΥΝΕΔΡΙΑΣΗ Ο. Τετάρτη 8 Ιουλίου 2015

Α1. (α). ώστε τον ορισμό του προβλήματος (Μονάδες 3)

Α π ε τ ρ ά π η. ληστεία στο Μητροπολιτικό Μέγαρο στη Φλώρινα. Μία από τα ίδια η επίσκεψη του Γ.Γ. Δημοσίων Έργων στη Φλώρινα

Κωνσταντίνος Παπαδημητρίου

«Πυθαγόρειες Αναλογικότητες ή Αναλογίες ή Μεσότητες»: Οι γεννήτορες της αρχαίας Ελληνικής Μουσικής

ΥΠOΥΡΓΕΙO ΠΑΙΔΕΙΑΣ KAI ΘΡΗΣΚΕΥΜΑΤΩΝ


Σ Υ Λ Λ Ο Γ Ο Σ Ι Ε Ρ Ο Ѱ Α Λ Τ Ω Ν Α Ι Γ Ι Α Λ Ε Ι Α Σ «Ι Ω Α Ν Ν Η Σ Ο Κ Ο Υ Κ Ο Υ Ζ Ε Λ Η Σ»

ΑΙΤΗΣΗ ΕΝΙΣΧΥΣΗΣ ΦΑΚΕΛΟΣ ΥΠΟΨΗΦΙΟΤΗΤΑΣ

σελ.3 σελ.3 Δωρεάν διανομή τροφίμων από τον Δήμο Πρεσπών σελ.4 Τ Ο Κ Ο Ι Ν Ω Ν Ι Κ Ο Π Ρ Ο Σ Ω Π Ο Τ Ω Ν Τ Α Χ Υ Δ Ρ Ο Μ Ε Ι Ω Ν

Εγκύκλιος Ε.Φ.Ο.Τ. 2009/1

ΘΕΜΑ: "ΕΦ Α ΡΜ ΟΓΕΣ Τ Η Σ Σ Τ Α Τ ΙΣ Τ ΙΚ Η Σ ΣΤΟ ΕΜ ΠΟΡΙΟ"

Φωνή της Πάρου. «Είμαστε ευαίσθητοι, αγωνιούμε, αγωνιζόμαστε» σελ. 2 Η ΦΩΝΗ ΜΑΣ

ΔΙΑΚΗΡΥΞΗ ΑΝΟΙΧΤΗΣ ΔΗΜΟΠΡΑΣΙΑΣ. (Τύπος Α) Για έργα που εμπίπτουν λόγω προϋπολογισμού 1 στο πεδίο εφαρμογής των Οδηγιών 2004/18 και 2004/17.

«Το κράτος πρέπει να εκσυγχρονιστεί, να αναδιοργανωθεί,

ΠΛΗΡΩΜΕΣ ΩΡΟΜΙΣΘΙΩΝ ΕΜΠΕΙΡΟΤΕΧΝΩΝ ΜΟΥΣΙΚΩΝ (ΕΜ16) ΓΕΝΙΚΑ

Συντήρηση και Τεχνική Υποστήριξη Προγραμμάτων των Υπηρεσιών του Δήμου

Α Π Ο Φ Α Σ Η Ο ΑΝΑΠΛΗΡΩΤΗΣ ΥΠΟΥΡΓΟΣ ΟΙΚΟΝΟΜΙΚΩΝ

Χαρτογράφηση κινδύνου εκδήλωσης κατολίσθησης με τη χρήση GIS Ε Φ Α Ρ Μ Ο Γ Ε Σ Γ Π Σ Σ Τ Η Δ Ι Α Χ Ε Ι Ρ Ι Σ Η Κ Α Τ Α Σ Τ Ρ Ο Φ Ω Ν

Π ε ρ ι β α λ λ ο ν τ ι κ ό

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

Φυτοπλαγκτόν και Ρύπανση της Θάλασσας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΕΤΗΣΙΑ ΑΠΟΓΡΑΦΙΚΗ ΕΚΘΕΣΗ ΑΚΑΔ. ΕΤΟΥΣ

Η ΩΡΑΙΑ ΗΜΕΡΑΣ ΤΗΣ ΖΟΖΕΦ ΚΕΣΕΛ. ... γ ι α τ ί ο έ ρ ω τ α ς κ ρ ύ β ε τ α ι σ τ ι ς λ έ ξ ε ι ς Λ Ο Γ Ο Τ Ε Χ Ν Ι Α

Υ π ά ρ χ ο υ ν α ν τ ι κ ε ι μ ε ν ι κ έ ς η θ ι κ έ ς α ξ ί ε ς ;

Παραμένει ο Δήμος της Πρέσπας;

Π Ρ Ο Γ Ρ Α Μ Μ Α Τ Ι Κ Η Σ Υ Μ Β Α Σ Η ΠΡΩΙΝΟ ΧΑΜΟΓΕΛΟ

Τ Μ Η Μ Α Φ Ω Τ Ο Γ ΡΑ Φ Ι Α Σ & Ο Π Τ Ι ΚΟ Α ΚΟ Υ Σ Τ Ι Κ Ω Ν Τ Ε Χ Ν Ω Ν / Τ Ε Ι Α Θ Η Ν Α Σ

Α Π Ο Φ Α Σ Η Η ΓΕΝΙΚΗ ΓΡΑΜΜΑΤΕΑΣ ΑΠΟΚΕΝΤΡΩΜΕΝΗΣ ΔΙΟΙΚΗΣΗΣ ΗΠΕΙΡΟΥ - ΔΥΤ. ΜΑΚΕΔΟΝΙΑΣ

ΕΘΝΙΚΗ ΣΥΝΟΜΟΣΠΟΝΔΙΑ ΕΛΛΗΝΙΚΟΥ ΕΜΠΟΡΙΟΥ ΜΗΤΡΟΠΟΛΕΩΣ 42, ΑΘΗΝΑ

ΝΕΟ ΛΥΚΕΙΟ 2014 ΕΦΑΡΜΟΓΗ ΓΙΑ ΤΟΥΣ ΜΑΘΗΤΕΣ ΤΗΣ Α ΤΑΞΗΣ ΛΥΚΕΙΟΥ (ΣΧΟΛΙΚΟ ΈΤΟΣ: )

Μέλι, ένας θησαυρός υγείας και δύναμης

«ΑΣΦΑΛΤΟΣΤΡΩΣΗ ΑΓΡΟΤΙΚΟΥ ΔΡΟΜΟΥ ΕΝΤΟΣ ΑΝΑΔΑΣΜΟΥ ΛΑΨΙΣΤΑΣ»

Π ΤΥ Χ ΙΑ Κ Η ΕΡ ΓΑ ΣΙΑ της σπουδάστριας Τ Σ Α Β Δ Α Ρ Η Σ Μ Α Ρ Α ΓΔ Α Σ

συγκρότηση επιτροπών: α) Διενέργειας & Αξιολόγησης ψήφισαν οι Δημοτικοί Προμηθειών, β) Παραλαβής Προμηθειών (Ορθή Σύμβουλοι κ.

15PROC

5 η ΠΡΟΣΚΛΗΣΗ ΕΚΔΗΛΩΣΗΣ ΕΝΔΙΑΦΕΡΟΝΤΟΣ ΓΙΑ ΤΗΝ ΕΠΙΒΕΒΑΙΩΣΗ ΔΙΑΧΕΙΡΙΣΤΙΚΗΣ ΕΠΑΡΚΕΙΑΣ Ο ΥΠΟΥΡΓΟΣ ΕΣΩΤΕΡΙΚΩΝ

ΦΟ(ΡΟΛΟΤΙΛ. 2ίΩΦΈΩ9{οί Τ 09^% βΰ^ή :Λ ^Χ Ω ΰ^ ^ Χ 0 β!κ 2 Ι0 ΐχ Κ ^ ^ Σ. ΟΐχΟΤίΟΜΙΛ'Σ

Ε Λ Λ Η Ν Ι Κ Η ΔΗΜΟΚΡΑΤΙΑ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΣΥΝΕΔΡΙΑΣΗ Ρ. Τετάρτη 7 Μαρτίου 2012

Ε Φ Υ Μ Ν Ι O N. Παρατίθενται γνώµες και απόψεις. σχετικές µε το έργο του Πρωτοψάλτη, οράρχη και κδότη βιβλίων. κκλησιαστικής ουσικής

Α Π Ο Σ Π Α Σ Μ Α από το πρακτικό της υπ αριθ. 22ης/2015 Συνεδρίασης της Επιτροπής Ποιότητας Ζωής

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΣΥΝΕ ΡΙΑΣΗ Ν. Πέµπτη 28 Ιανουαρίου 2010

ΓΕΝ. ΓΡΑΜΜΑΤΕΙΑ ΦΟΡΟΛΟΓΙΚΩΝ ΚΑΙ ΤΕΛΩΝΕΙΑΚΩΝ ΘΕΜΑΤΩΝ Αθήνα, 22/2/2008

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΝΟΜΟΣ ΣΕΡΡΩΝ ΔΗΜΟΣ ΣΕΡΡΩΝ ΔΙΕΥΘΥΝΣΗ ΟΙΚΟΝΟΜΙΚΩΝ ΥΠΗΡΕΣΙΩΝ ΤΜΗΜΑ ΠΡΟΜΗΘΕΙΩΝ ΜΕΛΕΤΗ 9/2015

ΤΑΚΤΙΚΗΣ ΣΥΝΕΔΡΙΑΣΗΣ ΤΟΥ ΔΙΟΙΚΗΤΙΚΟΥ ΣΥΜΒΟΥΛΙΟΥ ΤΟΥ ΔΗΜΟΤΙΚΟΥ ΛΙΜΕΝΙΚΟΥ ΤΑΜΕΙΟΥ ΧΑΝΙΩΝ

Γ49/59 ΕΞ. ΕΠΕΙΓΟΝ Π Ρ Ο Σ :

ΔΙΑΚΗΡΥΞΗ ΑΝΟΙΧΤΗΣ ΔΗΜΟΠΡΑΣΙΑΣ

Σ Χ Ο Λ Η :Δ ΙΟ ΙΚ Η Σ Η Σ Κ Α Ι Ο ΙΚ Ο Ν Ο Μ ΙΑ Σ ΤΜ Η Μ Α : Λ Ο Γ ΙΣ Τ ΙΚ Η Σ. ιιιιιιι. Θέμα: Συναλλαγματική Γραμμάτιο εις Δ ια ταγήν Επιταγή

σελ.3 σελ.3 Πρόεδρος της Διεθνούς Συνομοσπονδίας Ποντίων ο Γιάννης Αντωνιάδης σελ.4 Σ υ ν α υ λ ί α Κοινωνικής

ΠΤΤΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ

ΑΔΑ: 6Ψ8Μ9-ΩΙΕ. ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ Βαθμός Ασφαλείας : Να διατηρηθεί μέχρι : Μαρούσι, Αρ. Πρωτ /Δ2

θ α ν ά σ η ς τ ρ ι α ρ ί δ η ς Lacrimosa ή τ ο α π έ π ρ ω τ Σ χ ι σ μ ή γ ι α δ ύ ο π ρ ό σ ω π α σ ε δ υ ο π ρ ά ξ ε ι ς

Σημαντική. συνάντηση του Επιμελητηρίου Φλώρινας στο Γειτονικό Μοναστήρι. Εκδήλωση για τις σελ.3 εξελίξεις στο δημόσιο

o εκτός ημερησίας Θέμα 5 Διάθεση πιστώσεων και έγκριση δαπανών προϋπολογισμού Π.Ε. Πειραιά οικ. Έτους 2014.

Μετάφραση: Δ.Ν. Μαρωνίτης

Τεύχος 21 Μάιος - Ιούλιος Υπέρλαμπρα Αστέρια. K ω π η λ α τ ι κ ά ν έ α

(ΜΕ ΤΑ ΔΥΟ ΜΕΙΟΝΕΚΤΗΜΑΤΑ)

Το, -18 μόλις σελίδων-, «Βοήθημα» που ακολουθεί, διατίθεται μόνον εδώ, διαδικτυακά, και δεν αποτελεί μέρος της έντυπης έκδοσης της «Ελευθερίας».

Ο κόσμος των επιχειρήσεων, τησ οικονομιασ και των αγορών: επιχειρηματικές δραστηριότητες, επιχειρηματικοί κίνδυνοι και επιχειρηματικές πρακτικές

Το Ψυχολογικό Κλίμα της Σχολικής Τάξης στο Ελληνικό Δημοτικό Σχολείο

Η συμπαραστάτης του Πολίτη Τάσα Σιώμου στον Δήμο Αμυνταίου σελ.3. Τα παράπονα στον Δήμαρχο από μαθητές του 1ου Δημοτικού Σχολείου Αμυνταίου

Δ Ι Α Κ Η Ρ Υ Ξ Η Π Λ Ε Ι Ο Δ Ο Τ Ι Κ Η Σ Δ Η Μ Ο Π Ρ Α Σ Ι Α Σ

Α. ΔΙΚ ΑΙΟΥΧΟΣ ΦΟΡΕΑΣ Β. ΣΤΟΙΧΕΙΑ ΥΠΟΨΗΦΙΟΥ Γ. Β ΑΘΜ ΟΛΟΓΟΥΜΕΝΑ ΚΡΙΤΗΡΙΑ ΕΠΙΛΟΓΗΣ. Γ.1. Κατάσταση ανεργίας

ΔΗΜΟΣ ΘΑΣΟΥ ΦΑΚΕΛΛΟΣ ΑΣΦΑΛΕΙΑΣ ΚΑΙ ΥΓΕΙΑΣ

Α Π Ο Φ Α Σ Η Π Ε Ρ Ι Φ Ε Ρ ΕΙ Α Ρ Χ Η Σ ΘΕΣΣΑΛΙΑΣ

Συµβουλεύοµαι το κρυπτογραφικό αλφάβητο της Φιλικής Εταιρείας και. Ελευθερία ή Θάνατος. γ35343 ωβη3οω3η

Τεύχος 3ο Δεκέμβριος Περιοδική έκδοση των μαθητών του 6ου Δημοτικού Σχολείου Π. Φαλήρου

Α Π Ο Φ Α Σ Η Ο ΔΙΕΥΘΥΝΤΗΣ ΑΜΕΣΗΣ ΔΡΑΣΗΣ ΘΕΣΣΑΛΟΝΙΚΗΣ :

ΕΡΓΟ: ΕΠIΣΚΕΥΕΣ ΣΥΝΤΗΡΗΣΕΙΣ ΗΛΕΚΤΡΟΔΟΤΗΣΕΙΣ Η/Μ ΕΓΚΑΤΑΣΤΑΣΕΩΝ ΚΟΙΝΟΧΡΗΣΤΩΝ ΧΩΡΩΝ ΕΤΟΥΣ 2015

ΑΡΙΘΜΟΣ 0769/ ΣΥΜΒΑΣΗ ΧΡΗΜΑΤΟΔΟΤΗΣΗΣ Ι.ΝΕ.ΔΙ.ΒΙ.Μ. - ΣΧΟΛΙΚΗ ΕΠΙΤΡΟΠΗ ΣΧΟΛΕΙΩΝ ΠΡΩΤΟΒΑΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΔΗΜΟΥ ΠΑΤΡΕΩΝ

Transcript:

Αλγόριθμοι Α. Υπολογιστικά Προβλήματα Β. Εισαγωγή στους Αλγόριθμους Γ. ομή Αλγόριθμων Δ. ομές εδομένων

Α. Υπολογιστικά Προβλήματα Πρόβλημα: Μια μη αποδεκτή κατάσταση που χρειάζεται επίλυση. Η διατύπωση και ερμηνεία ενός προβλήματος είναι καθοριστικά χαρακτηριστικά για την επίλυσή του. Υπάρχουν δύο κύριες μέθοδοι επίλυσης: Ανάλυση (ή πορεία επίλυσης προς τα πίσω): Υποθέτουμε ότι το ζητούμενο είναι αληθές και αναζητάμε υπό ποιες συνθήκες αυτό θα ισχύει. Σύνθεση (ή κατασκευαστική μέθοδος): Ξεκινάμε αντίστροφα, δηλαδή από κάτι που είναι προφανώς ορθό και με διαδοχικά βήματα προσπαθούμε να φτάσουμε στο ζητούμενο. Συνδυασμός μςτων μεθόδων αυτών βοηθάει στην επίλυση πολύπλοκων προβλημάτων: α) αναλύομε το αρχικό πρόβλημα σε επιμέρους ευκολότερα υπο-προβλήματα, τα λύνουμε, και β) συνθέτουμε τις λύσεις τους για να βρούμε τη λύση του αρχικού προβλήματος.

Α.1 Καθορισμός Απαιτήσεων Η δομή ενός προβλήματος είναι τα μέρη που το απαρτίζουν και οι μεταξύ τους σχέσεις. Ο χώρος ενός προβλήματος αποτελείται από: Δεδομένα (π.χ. χ αριθμητικά, οικονομικά κλπ) τα οποία πρέπει να διακρίνονται από: Ορθότητα Πληρότητα η Σαφήνεια Ζητούμενα, που πρέπει να διακρίνονται από: Πληρότητα Σαφήνεια Παραδείγματα Πρόβλημα Α: Βρείτε το μικρότερο των παρακάτω αριθμών {0, 7, λ, 89} Πρόβλημα Β: Υπολογίστε την υποτείνουσα του ορθογωνίου τριγώνου με γωνία 30 Πρόβλημα Γ: Υπολογίστε την πλευρά του ορθογωνίου τριγώνου με πλευρά 30 και προσκείμενη πλευρά 3. Τα δδ δεδομένα του Προβλήματος Α είναι μη ορθά, του προβλήματος Β μη πλήρη και του Γ ασαφή

Α.2 Κατηγορίες προβλημάτων Ανάλογα με τη δυνατότητα επίλυσης, τα προβλήματα διακρίνονται σε: Επιλύσιμα (είτε έχουν λυθεί τα ίδια, είτε είναι αρκετά συναφή με ήδη λυμένα προβλήματα) ) Άλυτα (προβλήματα τα οποία έχει αποδειχθεί ότι δεν έχουν λύση) Ανοικτά (δεν έχουν επιλυθεί, λθίαλλά δεν έχει αποδειχθεί και η μη ύπαρξη λύσης) Αάλ Ανάλογα με το βαθμό όδόμησης τους, τα προβλήματα διακρίνονται σε: Δομημένα (όπου η λύση προέρχεται από μια αυτοματοποιημένη διαδικασία, π.χ. η επίλυση μιας δευτεροβάθμιας εξίσωσης) Ημιδομημένα (όπου η λύση επιλέγεται από μια σαφώς καθορισμένη γκάμα πιθανών λύσεων, π.χ. το ταξίδι Ηράκλειο-Αθήνα) Αδόμητα (όπου η λύση ανήκει σε ένα μη κλειστό σύνολο λύσεων,, π.χ. η οργάνωση ενός πάρτυ)

Ανάλογα με το είδος επίλυσης που επιδέχονται, τα προβλήματα διακρίνονται σε: Προβλήματα απόφασης (π.χ., είναι το 21345 πρώτος αριθμός;) Υπολογιστικά (π.χ., να βρεθούν οι ρίζες της δευτεροβάθμιας εξίσωσης x 2 5x +6 = 0) Βελτιστοποίησης (π.χ. επιλέξτε το φτηνότερο εισιτήριο Ηράκλειο-Λονδίνο-Ηράκλειο με μία το πολύ ενδιάμεση στάση) Οι Η/Υ δεν μπορούν να παράγουν (ακόμα) ιδέες. Είναι όμως ιδανικοί στη λύση προβλημάτων με πολυπλοκότητα υπολογισμών και επαναληπτικότητα διαδικασιών λόγω της υψηλής ταχύτητας υπολογισμών, και του χειρισμού μεγάλου πλήθους δεδομένων Άλλωστε, οι Η/Υ δεν κάνουν άλλο από το να προσθέτουν, να συγκρίνουν και να μεταφέρουν δεδομένα!!

Β. Εισαγωγή στους αλγόριθμους Παράδειγμα 1: Μετατρέψτε το θετικό ακέραιο Κ από το δεκαδικό σύστημα στο δυαδικό 1. Με διαιρετέο το Κ και διαιρέτη το 2, η διαίρεση έχει πηλίκο Π 0 και υπόλοιπο Υ 0 2. Εάν το Π 0 δεν είναι 0, διαιρούμε το Π 0 δια 2, με νέο πηλίκο Π 1 και νέο υπόλοιπο Υ 1. 3. Επαναλαμβάνομε τη διαίρεση, με διαιρετέο κάθε φορά το πηλίκο του προηγούμενου βήματος, έως ότου το πηλίκο μηδενιστεί. Έστω ότι η απαιτούνται Ν διαιρέσεις έως ότου πληρείται η συνθήκη τερματισμού (3). Τότε, η έκφραση του ακέραιου Κ στο δυαδικό σύστημα είναι: (Κ) 10 = (Υ Ν-1 Υ 1 Υ 0 ) 2

Παράδειγμα 2: Έκφραση αρνητικού ακεραίου -Κ στο δυαδικό σύστημα 1. Παίρνομε το μέτρο το ακεραίου -Κ = Κ. 2. Εκφράζομε το Κ στο δυαδικό σύστημα (χρησιμοποιώντας τον προηγούμενο αλγόριθμο). 3. Μετατρέπομε όλα τα 0 σε 1 και όλα τα 1 σε 0. 4. Προσθέτομε 1 στο αποτέλεσμα του βήματος (3). 5. Εάν το MSB του αποτελέσματος του βήματος 4 δεν αρχίζει από 1, 1, τοποθετούμε το ψηφίο 1 στα αριστερά του MSB. Παράδειγμα 3: Βρείτε τον μέγιστο Μ ενός συνόλου Ν πραγματικών αριθμών {α 1, α 2,, α Ν } 1. Θέτομε Μ = α 1 2. Συγκρίνομε τον Μ με τον επόμενο αριθμό α 2 και εάν α 2 > Μ, θέτομε Μ = α 2 3. Επαναλαμβάνομε μ το βήμα (2) () έως ότου τελειώσουν οι αριθμοί. Στο τέλος της διαδικασίας, το Μ είναι ο μέγιστος.

Β.1 Χαρακτηριστικά αλγορίθμων Δεδομένα: Το σύνολο των δεδομένων του αλγορίθμου (στα παραδείγματα 1 και 2 αυτό είναι το {Κ}, ενώ στο παράδειγμα 3 το σύνολο των αριθμών {α 1 α Ν }) Ζητούμενο: Το ζητούμενο ή αποτέλεσμα του αλγορίθμου που πληροί ορισμένες προϋποθέσεις. (στα παραδείγματα 1 & 2 το ζητούμενο είναι ένας δυαδικός αριθμός, ενώ στο παράδειγμα 3 ένας πραγματικός). Σαφήνεια και αποτελεσματικότητα: Τα βήματα που περιγράφει ο αλγόριθμος θα πρέπει να είναι σαφή, να μη χρειάζονται δηλαδή δ διευκρινήσεις. Επίσης οι εντολές που περιγράφουν πρέπει να είναι εκτελέσιμες. Περατότητα: Ένας αλγόριθμος που δεν τερματίζει (δηλαδή απαιτεί αι άπειρο χρόνο) είναι άχρηστος. Εάν τα βήματα του αλγορίθμου δεν είναι προκαθορισμένα (παράδ. 2), απαιτείται μια συνθήκη τερματισμού (παραδ. 1 και 3).

Β.2 Περιγραφή αλγορίθμων Διαγράμματα Ροής: Τα κυριότερα σύμβολα είναι τα εξής: Αρχή & Τέλος Βέλη Ροής Υπολογισμός/Επεξεργασία Έλεγχος/Επιλογή Είσοδος/Έξοδος Δεδομένων Υπο-πρόγραμμα Ψευδοκώδικας: Χρησιμοποιεί κοινές λέξεις, όπως επίσης και όρους με αυστηρά καθορισμένη έννοια (δεσμευμένες λέξεις), π.χ. begin, end, read, write, if, then, else, while, do Παρατήρηση: Τα διαγράμματα ροής έχουν καλύτερη εποπτικότητα, ενώ ο ψευδοκώδικας έχει ευκολότερη υλοποίηση.

Διάγραμμα ροής για το Παράδειγμα 1 Αρχή DecimalToBinary Διάβασε το Κ Α := Π := (Κ /2) Υ := (Κ mod 2) Α := Υ^Α Π = 0? Κ := Π Εκτύπωσε το Α Τέλος

Ψευδοκώδικας για το Παράδειγμα 1 Algorithm DecimalToBinary BEGIN Α := ; Εκχώρηση READ K Π := Κ; WHILE (Π <> 0) DO Π := Κ /2 2; Υ := Κ mod 2; A := Y ^ A; ENDWHILE PRINT A; END Δεσμευμένες λέξεις Τερματισμός μ εντολής

Διάγραμμα ροής για το Παράδειγμα 2 2Complement Αρχή Διάβασε το -Κ Κ := -ΚΚ Κ := DecimalToBinary(K) Κ := ΝΟΤ (Κ) Κ := Κ + 1 Κ αρχίζει από 1? K := 1 ^ K Εκτύπωσε το Α Τέλος

Ψευδοκώδικας για το Παράδειγμα 2 Algorithm 2Complement BEGIN READ K; Κ := -Κ; Κ := DecimalToBinary(K); K := NOT(K); K := K +1 1; IF (πρώτο ψηφίο του K <> 1) THEN Κ := 1 ^ Κ; ENDIF PRINT K; END

Διάγραμμα ροής για το Παράδειγμα 3 Αρχή FindMax Διάβασε τους {α 1, α 2,, α Ν } M:= α 1 i := 1 i < N? i := i + 1 Μ < α ι? Μ := α ι Εκτύπωσε το Μ Τέλος

Ψευδοκώδικας για το Παράδειγμα 3 Algorithm FindMax BEGIN READ {α 1, α 2,, α Ν }; M:=0; FOR i = 1 TO i=n DO IF (M < α i ) THEN M := α i; ENDIF ENDFOR PRINT M; END

Β.3 Στοιχεία Αλγορίθμων Κατηγορίες Μεγεθών Σταθερές (οι τιμές τους δεν αλλάζουν) Μεταβλητές (οι τιμές τους μεταβάλλονται) Τύποι Μεγεθών Αριθμητικά: π.χ., 3, 4.6Ε-2 Λογικά (Boolean): TRUE, FALSE Συμβολοσειρές (String): π.χ., ads234 Πράξεις: π.χ., +, -, *, /, mod, **, ^ Εκχώρηση: η A:=7; B:=5; ok Α:=Α + 2 ok 3Α:=Β Β *3.4 λάθος X:=3*Α / 2 + (Α mod B) τι τύπο και τιμή έχει το X; Y:= 3+5 τι τύπο και τιμή έχει το Y;

Γ. Δομή Αλγορίθμων Βασικές δομές Σειριακή εκτέλεση: Οι εντολές εκτελούνται από μία φορά σειριακά, η μια μετά την άλλη. Εκτέλεση κατ επιλογή: Διαφορετικές ομάδες εντολών εκτελούνται,, ανάλογα με την τιμή μιας συνθήκης (if-then-else) Επαναληπτική εκτέλεση: Μια ομάδα εντολών εκτελείται μία ή περισσότερες φορές, ανάλογα με την τιμή μιας συνθήκης (for-loop, repeat-loop, while loop)

Γ.1 Σειριακή Εκτέλεση Ψευδοκώδικας Εντολή 1; Εντολή 2; Εντολή Ν; Διάγραμμα Ροής Εντολή 1; Εντολή 2; Εντολή Ν;

Γ2.α Περιορισμένη επιλογή Ψευδοκώδικας IF (συνθήκη Α) ΤΗΕΝ Ομάδα Εντολών Α; ENDIF Διάγραμμα Ροής Α Ομάδα Α;

Γ2.β Απλή επιλογή Ψευδοκώδικας IF (συνθήκη Α) ΤΗΕΝ Ομάδα Εντολών Α; ELSE Ομάδα Εντολών Β; ENDIF Διάγραμμα Ροής Α Ομάδα Α; Ομάδα Β;

Γ2.γ Γενική μορφή επιλογής Ψευδοκώδικας IF (συνθήκη Α) ΤΗΕΝ Ομάδα Εντολών Α; ENDIF ELSE IF (συνθήκη B) ΤΗΕΝ Ομάδα Εντολών B; ENDIF ELSE Default Ομάδα Εντολών; ENDIF Διάγραμμα Ροής Α Ομάδα Α; Β Ομάδα Β; ; Default Ομάδα;

Γ2.δ Εμφωλευμένη επιλογή Ψευδοκώδικας IF (συνθήκη Α) ΤΗΕΝ IF (συνθήκη Y) ΤΗΕΝ Ομάδα Εντολών Y; ENDIF Ομάδα Εντολών Α; ELSE Ομάδα Εντολών Β; ENDIF Διάγραμμα Ροής Α Y Ομάδα Y; Ομάδα Β; Ομάδα Α;

Γ3. Επαναληπτική Εκτέλεση Η επαναληπτική εκτέλεση εντολών χρησιμοποιείται όταν θέλουμε να εκτελέσομε μια ομάδα εντολών περισσότερες από μία φορές, όσο δηλαδή πληρείται μια συνθήκη. Η επαναληπτική ήδομή εκτέλεσης υλοποιείται με βρόχους. Υπάρχουν τρία βασικά είδη επαναληπτικής εκτέλεσης που διαφέρουν ανάλογα με τον έλεγχο στο πλήθος των επαναλήψεων: while-do (όσο κάνε) repeat-until (επανέλαβε έως ότου) for-to-do (από ό έως κάνε) )

Γ3.α While - Do Ψευδοκώδικας WHILE (συνθήκη Α) DO Ομάδα Εντολών Α; ENDWHILE Χρησιμοποιείται όταν: Μπαίνοντας στο loop, δεν ξέρομε σε πόσες επαναλήψεις παύει να ισχύει η συνθήκη Α δεν θέλουμε να εκτελεστεί η ομάδα εντολών Α παρά μόνο όταν ισχύει η συνθήκη Α Δά Διάγραμμα Ρή Ροής Α Ομάδα A;

REPEAT Ομάδα Εντολών Α; Γ3.β Repeat - Until Ψευδοκώδικας UNTIL (συνθήκη Α) Χρησιμοποιείται όταν: Μπαίνοντας στο loop, δεν ξέρομε σε πόσες επαναλήψεις παύει να ισχύει η συνθήκη Α θέλουμε η ομάδα εντολών Α να εκτελεστεί τουλάχιστον μία φορά Διάγραμμα Ροής Ομάδα A; Α

Γ3.γ For To -Do Ψευδοκώδικας FOR i=n TO i=m, STEP=K DO Ομάδα Εντολών Α; ENDFOR Χρησιμοποιείται όταν: Μπαίνοντας στο loop, ξέρομε πόσες επαναλήψεις απαιτούνται i = N; Διάγραμμα Ροής I <=M? Ομάδα A; i = i + K Προσοχή: το βήμα i = i + K εκτελείται λί στην εντολή FOR αυτόματα από το STEP=K

Παράδειγμα 1(πρωτοβάθμια εξίσωση) Πρόβλημα: Γράψτε τον ψευδοκώδικα και σχεδιάστε το διάγραμμα ροής για τη λύση της πρωτοβάθμιας εξίσωσης ax+b=0 ως προς x, όπου a, b είναι αριθμητικές σταθερές. Λύση: Εάν α = 0, Εάν b=0, τότε οποιαδήποτε τιμή του x αποτελεί λύση και λέμε ότι η εξίσωση είναι αόριστη. Εάν b<>0, τότε δεν υπάρχει λύση και η εξίσωση είναι αδύνατη. Εάν α<>0, η λύση είναι x=-b/a

Παράδειγμα 1(ψευδοκώδικας) Algorithm πρωτοβάθμια_εξίσωση(real a, b, x, String s) BEGIN GN IF (a<>0) THEN x = -b/a; s = Μοναδική λύση, x = ^ x ELSE IF (b<>0) THEN s = Εξίσωση αδύνατη ; ELSE s = Εξίσωση αόριστη ; ENDIF ENDIF PRINT, s END

Παράδειγμα 1(διάγραμμα ροής) Αρχή a<>0? s = -b/a; b<>0? s = Εξίσωση αόριστη ; s = Εξίσωση αδύνατη ; PRINT, s Τέλος

Παράδειγμα 2(Θερμοστάτης) Γράψτε τον ψευδοκώδικα και σχεδιάστε το διάγραμμα ροής για το πρόβλημα του θερμοστάτη: όποτε η θερμοκρασία πέφτει κάτω από Τmin βαθμούς, άναψε το καλοριφέρ, και όποτε η θερμοκρασία υπερβαίνει Τmax βαθμούς κλείσε το καλοριφέρ. Στον ψευδοκώδικα, προσέξτε πολύ εδώ στη χρήση της λέξης «όποτε». Για τη σύγκριση της θερμοκρασίας με την τιμή Ω, θα χρησιμοποιήσουμε τη δομή επιλογής if-then Ποια δομή όμως είναι η κατάλληλη δομή για να υλοποιήσουμε το «όποτε»; Η while-do; Η repeat-until; Η for-to; Κάποιος συνδυασμός τους ίσως; Σκέψη-κλειδί: Ο θερμοστάτης πάντα πρέπει να λειτουργεί

Παράδειγμα 2(διάγραμμα ροής) Αρχή Τ>Τmax?? Σβήσε τον καυστήρα Τ<Τmin? Άναψε τον καυστήρα Το διάγραμμα ροής είναι αρκετά εύκολο. Πώς όμως θα αποδώσομε τα βέλη επιστροφής σε ψευδοκώδικα; Το παράδειγμα του θερμοστάτη βοηθάει να καταλάβομε γιατί ένας ψευδοκώδικας είναι πλησιέστερος στην υλοποίηση (πρόγραμμα) σε σχέση με ένα διάγραμμα ροής.

Παράδειγμα 2(ψευδοκώδικας) Algorithm Θερμοστάτης (Real Τ, Τmax,Tmin) BEGIN IF (Tmax<Tmin) THEN PRINT( Tmax πρέπει να είναι > Tmin ); ENDIF WHILE (TRUE) DO READ, T IF (Τ>Τmax) THEN Σβήσε_καυστήρα; ELSE IF (T<Tmin) THEN Άναψε_καυστήρα; ENDIF ENDWHILE END Ο ψευδοκώδικας αυτός δεν προβλέπει την ύπαρξη διακόπτη ON-OFF. O Ας τον προσθέσουμε στο επόμενο παράδειγμα.

Παράδειγμα 2 (Θερμοστάτης με διακόπτη) Algorithm Perpetual_Thermostat (Real Τ, Τmin, Tmax) BEGIN WHILE (true) DO REPEAT READ Tmin, Tmax; UNTIL (Tmin <= Tmax); READ, Δiakopthsk IF (Δiakopths = ΟΝ) THEN READ, T IF (Τ>Τmax) Τmax) THEN Σβήσε_καυστήρα; ELSE IF (T<Tmin) THEN Άναψε_καυστήρα; ENDIF ELSE Σβήσε_καυστήρα; ENDIF ENDWHILE END

Λογικές Συνθήκες > < >= <= <> and or not xor Μεγαλύτερο από Μικρότερο από Μεγαλύτερο από ή ίσο με Μικρότερο από ή ίσο με Διάφορο από Σύζευξη Δάζ Διάζευξη Άρνηση Αποκλειστική διάζευξη A B Not(A) A and B A or B A xor B T T F T T F T F F F T T F T T F T T F F T F F F

Υπ-αλγόριθμοι Θυμηθείτε τις δυο κυριότερες μεθοδολογίες επίλυσης προβλημάτων (Ανάλυση και Σύνθεση) και ότι για την επίλυση πολύπλοκων λ προβλημάτων πολλές φορές χρησιμοποιούμε ένα συνδυασμό τους: «Αναλύομε» το κύριο πρόβλημα διασπώντας το σε υπο-προβλήματα τα οποία λύνομε. Κατόπιν «συνθέτομε» μ τις επί μέρους λύσεις για να βρούμε τη λύση του αρχικού προβλήματος. Τα υπο-προβλήματαπροβλήματα αυτά για να λυθούν χρειάζονται υπ-αλγορίθμους (όπως θα δούμε αμέσως στη θεωρία) και στη συνέχεια πρέπει να μεταφραστούν σε υπο-προγράμματα (όπως θα δείτε στο εργαστήριο)

Υπ-αλγόριθμοι: 1. Διαδικασίες (Procedures) Μια διαδικασία λειτουργεί σαν υποπρόγραμμα και αποτελείται από τα εξής μέρη: Δεδομένα που η διαδικασία διαβάζει από το πρόγραμμα που την καλεί (input data) Κώδικα (εντολές) που υπολογίζει ή μεταβάλλει κάποια δδ δεδομένα Δεδομένα που η διαδικασία, στην έξοδό της, επιστρέφει στο πρόγραμμα που την κάλεσε με τη μορφή μεταβλητών (output data). Η δήλωση μιας διαδικασίας στον αλγόριθμο γίνεται ως εξής: Procedure Procedure_Name(A 1,,A n ;X 1 X m ) Όπου: A 1,,A n τα δεδομένα που διαβάζει από το πρόγραμμα που την καλεί X 1 X m τα δεδομένα που επιστρέφει στο πρόγραμμα που την καλεί λί

Παράδειγμα Διαδικασίας: FindMax Ο αλγόριθμος FindMax που υπολογίζει γζ τον μέγιστο μγ δύο αριθμών μπορεί να γραφεί σε μορφή διαδικασίας ως εξής Procedure FindMax(Real X, Y; Z) BEGIN IF (X > Y) THEN Z := X; ELSE Z := Y; ENDIF END Tα Χ & Υ διαβάζονται όταν καλείται η διαδικασία. To Z υπολογίζεται από τη διαδικασία και επιστρέφεται στο πρόγραμμα: Algorithm Foo() Var K, L, Z, M, F: real BEGIN FindMax(K, L; F); Print, F; END

Υπ-αλγόριθμοι: 2. Συναρτήσεις ρή ς( (Functions) Μια συνάρτηση λειτουργεί σαν υποπρόγραμμα και αποτελείται από τα εξής μέρη: Δεδομένα που η συνάρτηση διαβάζει από το πρόγραμμα που την καλεί (input data) Κώδικα (εντολές) που υπολογίζει ή μεταβάλλει κάποια δδ δεδομένα Δεδομένα που η συνάρτηση, στην έξοδό της, επιστρέφει στο πρόγραμμα που την κάλεσε μέσω του ίδιου της του ονόματος. Η δήλωση μιας συνάρτησης στον αλγόριθμο γίνεται ως εξής: Function Function_Name(A 1,,A n ): Type Όπου: A 1,,A n τα δεδομένα που διαβάζει από το πρόγραμμα που την καλεί Type: Ο τύπος των δεδομένων που επιστρέφει η συνάρτηση

Παράδειγμα Συνάρτησης: FindMax Ξαναγράφομε τον αλγόριθμο FindMax σε μορφή συνάρτησης ως εξής Function FindMax(Real X, Y): Real BEGIN IF (X > Y) THEN FindMax := X; ELSE FindMax := Y; ENDIF END Tα Χ & Υ διαβάζονται όταν καλείται η συνάρτηση, η οποία επιστρέφει τον ΜΑΧ(Χ,Υ) στο πρόγραμμα που την κάλεσε μέσω του ονόματος της. Algorithm Foo() Var K, L, Z, F: real BEGIN F := FindMax(K, L); Print, F; END

Δ. Δομές Δεδομένων Οι βασικές δομές δεδομένων: προέρχονται από έννοιες που χρησιμοποιούνται σε καθημερινή βάση (π.χ. λίστες, ουρές, πίνακες, κλπ) Βοηθούν να καταλάβομε τον τρόπο με τον οποίο οι Η/Υ επεξεργάζονται δεδομένα Βοηθούν στην κατασκευή αποδοτικών αλγορίθμων (π.χ. πόσο χρόνο κατά μέσο όρο παίρνει ένας αλγόριθμος για να εντοπίσει έναν τυχαίο αριθμό σε ένα σύνολο 50.000 αριθμών; Παράδειγμα: Μέρος των καθηκόντων σας στην επιχείρηση ΧΥΖ είναι η συντήρηση του πελατολογίου λ και η διεξαγωγή διεργασιών, όπως η προσθαφαίρεση πελατών, η δημιουργία, βάσει ορισμένων κριτηρίων, της λίστας πελατών που θα προσκαλέσετε στο κόψιμο της Πρωτοχρονιάτικης πίτας. Στο παράδειγμα αυτό, για κάθε πελάτη: Έχετε κάποια δεδομένα όπως Ονοματεπώνυμο, Αριθμό πελάτη, Διεύθυνση, Τηλέφωνο, Αριθμό πιστωτικής κάρτας. Γνωρίζετε τις συσχετίσεις μεταξύ αυτών των δεδομένων από τα ονόματα που έχετε επιλέξει Τέλος, γνωρίζετε τις διεργασίες που μπορείτε να εκτελέσετε σε τέτοιου είδους δεδομένα (προσθαφαίρεση πελατών, κλπ)

Μια Δομή Δεδομένων καθορίζεται από τρία πράγματα: Το σύνολο τιμών που την αποτελούν Τις συσχετίσεις αυτών των τιμών μεταξύ τους Τις διεργασίες που μπορούμε να εκτελέσομε πάνω στις τιμές αυτές Συνήθεις διεργασίες που εκτελούμε σε δομές μςδεδομένων είναι: Η διαδρομή στα δεδομένα (πώς δηλαδή πάμε από το πρώτο δεδομένο στο δεύτερο, κλπ) Πρόσθεση νέων δεδομένων Διαγραφή υπαρχόντων δεδομένων Ταξινόμηση των δεδομένων βάσει κάποιων κριτηρίων Ψάξιμο για κάποιο συγκεκριμένο δεδομένο (π.χ., εύρεση πελάτη)

Ειδικότερα, θα δούμε πως λειτουργούν: οι γραμμικές λίστες, οι στοίβες, οι ουρές, οι πίνακες, και οι συνδεδεμένες λίστες Για τις δομές μςαυτές υπάρχουν τα ανάλογα τους στην καθημερινή σας ζωή: η λίστα για τα ψώνια, οι στοίβες από βάφλες, η ουρά στο λεωφορείο, ο βαθμολογικός πίνακας.

Δ1. Γραμμικές Λίστες Μονοδιάστατοι Πίνακες Παράδειγμα: Στην επιχείρηση ΧΥΖ έγιναν οι παρακάτω πωλήσεις: Πωλήσεις Μαρτίου Πωλητής Πωλήσεις (χιλιάδες λάδ κουτιά) Δημήτρης 4.5 Ζωή 72 7.2 Μάνος 5.3 Γιάννα 28 2.8 Κατερίνα 3.6 Η λίστα των αριθμών [4.5, 7.2, 5.3, 2.8, 3.6] δεν έχει νόημα από μόνη της, χωρίς τη δομή του παραπάνω πίνακα, π.χ., ο αριθμός 7.2 σημαίνει ότι η Ζωή πούλησε 7200 κουτιά το Μάρτιο.

Ταξινομώντας τον πίνακα σε φθίνουσα σειρά ως προς τις πωλήσεις, μπορούμε να δούμε ποιοι ήταν οι καλύτεροι πωλητές. Πωλήσεις Μαρτίου Πωλητής Πωλήσεις (χιλιάδες ς κουτιά) ) Ζωή 7.2 Μάνος 5.3 Δημήτρης 4.5 Κατερίνα 3.6 Γιάννα 2.8 Αν συμβολίσουμε την αρχική λίστα των πωλήσεων με Π, τότε Π = [4.5, 7.2, 5.3, 3.6, 2.8] με Π 0 =4.5, Π 1 =7.2, Π 2 =5.3, Π 3 =36 3.6, και Π 4 =28 2.8. Λέμε επίσης ότι το Π είναι ένα διάνυσμα, ή ένας μονοδιάστατος πίνακας.

Το πρόβλημα με τις γραμμικές λίστες (και συνεπώς με τους πίνακες) είναι ότι η προσθαφαίρεση στοιχείων έχει μεγάλο κόστος: Για να προσθέσομε ένα στοιχείο στη θέση i, ενός πίνακα Α[Ν] (i<n), πρέπει να μετατοπίσομε όλα τα στοιχεία του πίνακα από το i και μετά μία θέση προς τα δεξιά για να δημιουργηθεί μια κενή θέση στη θέση i. Κατ αντιστοιχία, αφού σβήσομε ένα στοιχείο στη θέση i, πρέπει να μετατοπίσομε όλα τα στοιχεία από το i+1 και μετά αριστερά κατά μία θέση!

Δ2. Stacks (στοίβες) Σε μορφή στοίβας, η λίστα Π γράφεται: 4.5 7.2 5.3 36 3.6 2.8 Οι πράξεις που μπορούμε να κάνομε σε μια στοίβα είναι δύο: PUSH: Πρόσθεση δεδομένων POP: Αφαίρεση δεδομένων Η PUSH προσθέτει δεδομένα πάντα στην κορυφή της στοίβας ενώ η POP αφαιρεί δεδομένα πάντα από την κορυφή της. 4.4 4.5 4.5 4.5 7.2 7.2 7.2 7.2 5.3 PUSH(4.4) 5.3 POP 5.3 POP 5.3 3.6 3.6 3.6 3.6 2.8 2.8 2.8 2.8 Το σύστημα αυτό αποθήκευσης δδ δεδομένων λέγεται: LIFO = Last-In-First-Out

Δ2. Queues (ουρές) Μια ουρά διαφέρει από μια στοίβα στο ότι δεδομένα αφαιρούνται μεν από την κορυφή, αλλά προσθέτονται στο τέλος. Οι επιτρεπόμενες πράξεις είναι πάλι οι PUSH και POP. Προσέξτε όμως τη διαφορετική συμπεριφορά της PUSH σε σχέση με τη στοίβα. 4.5 4.5 7.2 7.2 7.2 5.3 5.3 5.3 5.3 PUSH(4.4) 3.6 POP 3.6 POP 3.6 3.6 2.8 2.8 2.8 2.8 4.4 4.4 4.4 Το σύστημα αυτό αποθήκευσης δεδομένων λέγεται: LILO = Last-In-Last-Out

Δ.3 Πίνακες Βοηθούν την επεξεργασία μεγάλου πλήθους πληροφοριών του ίδιου τύπου. Φανταστείτε το πρόγραμμα που θα γράφατε αν θέλατε να βρείτε τον μέγιστο 100 αριθμών! Χρησιμοποιούν δείκτες για την επεξεργασία ενός συγκεκριμένου στοιχείου του πίνακα. Παραδείγματα Integer A[5]; Η δήλωση αυτή ορίζει έναν μονοδιάστατο πίνακα ακεραίων (μία γραμμή) με 10 στοιχεία: Α[0], [], Α[1], [], Α[2], [], Α[3], [], και Α[4] [] Real Β[2,3]; Η δήλωση αυτή ορίζει έναν δισδιάστατο πίνακα πραγματικών με 2 γραμμές και 3 στήλες, που αποτελείται από τα εξής στοιχεία: Α[0,0] Α[0,1] Α[0,2] Α[1,0] Α[1,1] Α[1,2] Όμως, οι πίνακες αποθηκεύονται στη μνήμη του Η/Υ σαν γραμμικές λίστες, π.χ. ο πίνακας 1 7 2 3 0 4 αποθηκεύεται ως [1, 7, 2, 3, 0, 4] Τότε όλοι οι πίνακες είναι μονοδιάστατοι;

Παράδειγμα 1 με πίνακες Άσκηση1: Διαβάστε Ν αριθμούς από ένα αρχείο Filename και υπολογίστε τον μέσο όρο τους Algorithm Askhsh1(FileName, dummy, Data[]) BEGIN FOR i=0 TO i=n-1, STEP=1 DO Data[N]:= READ(File); ENDFOR Print, Mesos Oros =, MeanValue(Data) END Function MeanValue(Real Data[]): Real BEGIN SUM = 0; FOR i=0 TO i= DIM(Data)-1, STEP=1 DO SUM:=SUM + Data[i]; ENDFOR MeanValue := SUM / N; END Σημείωση: Γράφοντας το πρόγραμμα αυτό σε μια γλώσσα προγραμματισμού θα διαπιστώσετε ότι θα χρειαστείτε ένα επιπλέον loop. Γιατί;;

Παράδειγμα 2 με πίνακες Άσκηση2: Το αρχείο FileName περιέχει τον παρακάτω πίνακα ακεραίων. Διαβάστε τους σε έναν δισδιάστατο πίνακα και υπολογίστε το μέσο όρο τους: 0 5 7 9 14 25 42 0 7 44 33 21 21 45 53 2 34 8 50 1 3 2 100 21 33 1 72 Algorithm Askhsh2(FileName, dummy, Data[]) BEGIN FOR i=0 0TO i=2 2, STEP=1 1 DO FOR j=0 TO j=8, STEP=1 DO Data[i,j]:= READ(File); ENDFOR ENDFOR SUM = 0; FOR i=0 TO i=2, STEP=1 DO FOR j=0to j=8, STEP=11 DO SUM := SUM + Data[i,j]; ENDFOR ENDFOR PRINT, Mesos Oros =, SUM/27; END

Linked Lists (Συνδεδεμένες λίστες) Σε αντίθεση με τους πίνακες, όπου η δομή των δεδομένων αντιπροσωπεύει και τον (γραμμικό) τρόπο αποθήκευσης τους, οι Συνδεμένες Λίστες χρησιμοποιούν pointers (δείκτες) για να συνδέσουν τα δεδομένα σε μια σειρά. Ένας pointer δεν είναι παρά ένας αριθμός στη μνήμη που δείχνει σε κάποια θέση της μνήμης που περιέχει δεδομένα. Πωλητής Πωλήσεις Θέση στη Μνήμη Pointer (αρχική λίστα) Δημήτρης 4.5 3 (*) 41 Ζωή 7.2 41 50 Μάνος 5.3 50 7 Γιάννα 2.8 7 22 Κατερίνα 3.6 22 Null Μάνος Κατερίνα Ζωή Δημήτρης Γιάννα

Για να ταξινομήσομε τα στοιχεία της λίστας σε αλφαβητική σειρά, δεν μεταφέρομε δεδομένα στη μνήμη, απλά αλλάζομε τους pointers! Πωλητής Πωλή- Θέση στη Pointer σεις Μνήμη (αλφαβητικά) Δημήτρης 4.5 3 41 Ζωή 7.2 41 22 Μάνος 5.3 50 Null Γιάννα 2.8 7 (*) () 3 Κατερίνα 3.6 22 50 Μάνος Κατερίνα Ζωή Δημήτρης Γιάννα

Η ταξινόμηση σε φθίνουσα σειρά πωλήσεων γίνεται πάλι με pointers! Πωλητής Πωλήσεις Θέση στη Μνήμη Pointer (αλφαβητικά) Δημήτρης 4.5 3 22 Ζωή 7.2 41 (*) 50 Μάνος 5.3 50 3 Γιάννα 2.8 7 Null Κατερίνα 3.6 22 7 Μάνος Κατερίνα Ζωή Δημήτρης Γιάννα

Τα δεδομένα στους πίνακες που είδαμε (δηλαδή τα ζεύγη Όνομα:Πωλήσεις) λέγονται records (εγγραφές) Κάθε record περιλαμβάνει fields (πεδία). Στο συγκεκριμένο παράδειγμα έχομε δύο πεδία, το όνομα και τις πωλήσεις για το μήνα Μάρτιο. Ας υποθέσουμε ότι το κάθε record περιέχει ένα σύνολο από δεδομένα (π.χ. όνομα, πωλήσεις κατά μήνα για τα τελευταία 2 χρόνια). Προσέξτε ότι αυτό που πραγματικά θέλουμε να αποθηκεύσουμε σε κάθε record είναι ο pointer στον επόμενο πωλητή, πράγμα που δεν συμβαίνει στους πίνακες που είδαμε μέχρι τώρα. Για την ταξινόμηση σε φθίνουσα σειρά πωλήσεων έχουμε: Κατερίνα 7 Μάνος 3 Ζωή 50 Δημήτρης 22 41 Γιάννα Null