30
Κεφάλαιο 2.2. Αλγόριθμοι 2.2.5 Αναπαράσταση Αλγορίθμων ΕΝΟΤΗΤΑ 2. ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ 1

αναπαράσταση αλγορίθμων και δεδομένων

Embed Size (px)

Citation preview

Page 1: αναπαράσταση αλγορίθμων και δεδομένων

1

Κεφάλαιο 2.2. Αλγόριθμοι2.2.5 Αναπαράσταση Αλγορίθμων

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

Page 2: αναπαράσταση αλγορίθμων και δεδομένων

2

2.2.5 Αναπαράσταση Αλγορίθμων

Οι αλγόριθμοι μπορούν να αναπαρασταθούν με:

Φυσική γλώσσα

Ψευδοκώδικα ή ψευδογλώσσα

Γλώσσα προγραμματισμούo οπτικές γλώσσες προγραμματισμού,

o κειμενικές γλώσσες προγραμματισμού

Μεθοδολογίες διαγραμματικής αναπαράστασης αλγορίθμων

Page 3: αναπαράσταση αλγορίθμων και δεδομένων

3

2.2.5 Αναπαράσταση Αλγορίθμων

Φυσική γλώσσα

Οι φυσικές γλώσσες, είναιοι γλώσσες που μιλούν οιάνθρωποι, ενώ οι τεχνητέςγλώσσες έχουν αναπτυχθείκυρίως για διευκόλυνση τηςεπικοινωνίας ιδεών.

μέσω της οποίας περιγράφονται τα βήματα επίλυσης του προβλήματος. (Μειονέκτημα οι ασάφειες στις οδηγίες).

Page 4: αναπαράσταση αλγορίθμων και δεδομένων

4

Παράδειγμα: Να αναπτυχθεί αλγόριθμος σε φυσική γλώσσα ο οποίος να υπολογίζει το άθροισμα και το γινόμενο δύο αριθμών.

ΑπάντησηΦυσική γλώσσα: Αφού εισαχθούν οι τιμές δύο μεταβλητών α και β, να προσθέσετε το περιεχόμενό τους και το αποτέλεσμα να το δώσετε σε μια νέα μεταβλητή γ. Στην συνέχεια να πολλαπλασιάσετε το περιεχόμενο των δύο μεταβλητών α, β και το αποτέλεσμα να το δώσετε σε μια μεταβλητή δ.

2.2.5 Αναπαράσταση Αλγορίθμων

Φυσική γλώσσα

Page 5: αναπαράσταση αλγορίθμων και δεδομένων

5

Ψευδοκώδικα ή ψευδογλώσσα

2.2.5 Αναπαράσταση Αλγορίθμων

Απάντηση:

Αλγόριθμος υπολογισμοίΔιάβασε α, βγ ← α + βδ ← α * βΕμφάνισε γ, δ

Τέλος υπολογισμοί

Παράδειγμα: Να αναπτυχθεί αλγόριθμος σε ψευδογλώσσα ο οποίος να υπολογίζει το άθροισμα και το γινόμενο δύο αριθμών.

Page 6: αναπαράσταση αλγορίθμων και δεδομένων

6

2.2.5 Αναπαράσταση Αλγορίθμων

Γλώσσα προγραμματισμούΠαράδειγμα: Να αναπτυχθεί αλγόριθμος σε γλώσσα προγραμματισμού ο οποίος να υπολογίζει το άθροισμα και το γινόμενο δύο αριθμών.o οπτικές γλώσσες

προγραμματισμού,

Page 7: αναπαράσταση αλγορίθμων και δεδομένων

7

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

o κειμενικές γλώσσες προγραμματισμού

σε Pascal

Program athrisma;uses wincrt;var a, b, athr: real;begin read (a,b); athr := a+b; gin := a*b writeln ('Αθροισμα = ',athr:7:2, Γινόμενο= ',gin:7:2 )end.

Παράδειγμα: Να αναπτυχθεί αλγόριθμος σε γλώσσα προγραμματισμού ο οποίος να υπολογίζει το άθροισμα και το γινόμενο δύο αριθμών.

2.2.5 Αναπαράσταση Αλγορίθμων

Page 8: αναπαράσταση αλγορίθμων και δεδομένων

8

Παράδειγμα: Να αναπτυχθεί αλγόριθμος σε μορφή διαγράμματος ροής ο οποίος να υπολογίζει το άθροισμα και το γινόμενο δύο αριθμών.

2.2.5 Αναπαράσταση Αλγορίθμων

Μεθοδολογίες διαγραμματικής αναπαράστασης αλγορίθμων

ΑΡΧΗ

ΔΙΑΒΑΣΕα , β

γ <-- α + β

δ <-- α * β

ΓΡΑΨΕγ , δ

ΤΕΛΟΣ

Τα γεωμετρικά σχήματα που χρησιμοποιούνται συνήθως στα διαγράμματα ροής είναι:

1. Έλλειψη , για να δηλώσουμε την αρχή και το τέλος του αλγορίθμου.

2. Πλάγιο παραλληλόγραμμο για να δηλώσουμε την είσοδο ή έξοδο στοιχείων

Διάγραμμα ροής

Page 9: αναπαράσταση αλγορίθμων και δεδομένων

9

2.2.5 Αναπαράσταση Αλγορίθμων

3. Ορθογώνιο παραλληλόγραμμο, για να δηλώσουμε την εκτέλεση μιας ή περισσότερων πράξεων.

4. Ρόμβος, για να δηλώσουμε μία ερώτηση με δύο εξόδους για απάντηση.

5. το βέλος, το οποίο δείχνει τη ροή εκτέλεσης του αλγορίθμου.

Page 10: αναπαράσταση αλγορίθμων και δεδομένων

10

2.2.6 Δεδομένα και αναπαράσταση τους

Ένας αλγόριθμος μετατρέπει τα δεδομένα σε πληροφορία.

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

Η επεξεργασία δεδομένων, η οποία στην πράξη πραγματοποιείται μέσω αλγορίθμων, αναφέρεται στην εκτέλεση διαφόρων πράξεων/ λειτουργιών πάνω στα δεδομένα.

Page 11: αναπαράσταση αλγορίθμων και δεδομένων

11

2.2.6 Δεδομένα και αναπαράσταση τους

Δεδομένα12

34.5

“Καλά Χριστούγεννα”78

11.34“2014”

2014

-12.5-106

Αληθής

Ψευδής“άρτιος”

“1ο ΓΕΛ Ιεράπετρας”

-4

Page 12: αναπαράσταση αλγορίθμων και δεδομένων

12

2.2.6 Δεδομένα και αναπαράσταση τους

Οι πιο συνήθεις τύποιδεδομένων είναι:

Ακέραιος τύπος: για την αναπαράσταση ακεραίων αριθμών.Π.χ. 12, 78, 2014, -106, -4

Αριθμητικοί Τύποι

Πραγματικός τύπος: για την αναπαράσταση πραγματικών αριθμών. Π.χ. 34.5, -12.5, 11.34

Page 13: αναπαράσταση αλγορίθμων και δεδομένων

13

2.2.6 Δεδομένα και αναπαράσταση τους

Οι πιο συνήθεις τύποιδεδομένων είναι:

Αλφαριθμητικοί Τύποι

για την αναπαράσταση αλφαριθμητικών δεδομένων δηλαδή χαρακτήρων (τους βάζουμε μέσα σε “ “ )

Π.χ.

“Καλά Χριστούγεννα”“άρτιος”“2014”“1ο ΓΕΛ Ιεράπετρας”

Page 14: αναπαράσταση αλγορίθμων και δεδομένων

14

2.2.6 Δεδομένα και αναπαράσταση τους

για την αναπαράσταση λογικών δεδομένων (τα οποία μπορούν να πάρουν μόνο δύο τιμές)

Λογικός τύπος:

Αληθής, Ψευδής

Παράδειγμα:

Η πρόταση: «το 5 είναι μεγαλύτερο από το 3» είναι Αληθής (δηλ. 5 > 3 => Αληθής).Η πρόταση: «το 10 είναι μικρότερο ίσο του 3» είναι Ψευδής (δηλ. 10 ≤ 3 => Ψευδής).Η πρόταση: «το 5=4 είναι Ψευδής (δηλ. 5=4 => Ψευδής).Η πρόταση: το 5 > 3 και το 10 ≤ 3 είναι Ψευδής (δηλ. 5 > 3 και 10 ≤ 3 => Αληθής και Ψευδής => Ψευδής)Η πρόταση: το 5 > 3 ή το 10 ≤ 3 είναι Αληθής (δηλ. 5 > 3 ή 10 ≤ 3 => Αληθής ή Ψευδής =>Αληθής)

Page 15: αναπαράσταση αλγορίθμων και δεδομένων

15

2.2.6 Δεδομένα και αναπαράσταση τους

Κατά τον σχεδιασμό ενός αλγορίθμου έχει σημασία το είδος των τύπων δεδομένων που υποστηρίζονται γιατί σε κάθε τύπο μπορούν να εφαρμοστούν διαφορετικές πράξεις. (π.χ. στα αριθμητικά δεδομένα εφαρμόζονται οι αριθμητικές πράξεις της πρόσθεσης, αφαίρεσης κλπ)

Τα δεδομένα των προγραμμάτων αποθηκεύονται στην κύρια μνήμη ή και στις περιφερειακές συσκευές ενός υπολογιστή με διάφορες μορφές.

Για την επεξεργασία των δεδομένων είναι πιθανόν να χρησιμοποιούνται διαφορετικοί αλγόριθμοι και το υλικό του υπολογιστή έχει επίδραση στο είδος των αλγορίθμων που θα χρησιμοποιηθούν.

Page 16: αναπαράσταση αλγορίθμων και δεδομένων

16

2.2.6 Δεδομένα και αναπαράσταση τους

Μνήμη

Μεταβλητές

α

5

α 5

β

β 8

8

β

β 4

48

Φανταστείτε την μνήμη του Η/Υ , σαν μια συρταριέρα.

Τα α, β είναι τα ονόματα των μεταβλητών ενώ το 5 και το 8 είναι οι τιμές που αποθηκεύονται σε αυτές.

Page 17: αναπαράσταση αλγορίθμων και δεδομένων

17

2.2.6 Δεδομένα και αναπαράσταση τους

Μνήμη

Μεταβλητές

α

5

α 5

β

β 8

8

β

β 4

48

Φανταστείτε την μνήμη του Η/Υ , σαν μια συρταριέρα.Στην μεταβλητή α εκχωρείται η τιμή 5 ενώ στην β η τιμή 8.Οι μεταβλητές μπορούν να λάβουν μία τιμή κάθε φορά.Συνεπώς αν στην μεταβλητή β αποθηκεύσουμε την τιμή (δεδομένο) 4 τότε η προηγούμενη τιμή της β θα χαθεί.

Page 18: αναπαράσταση αλγορίθμων και δεδομένων

18

2.2.6 Δεδομένα και αναπαράσταση τους

Τα δεδομένα μπορούν να αποθηκεύονται και ως μια δομή δεδομένων

Ορισμός

Δομή δεδομένων (data structure) είναι ένα σύνολο αποθηκευμένων δεδομένων, τα οποία είναι έτσι οργανωμένα, ώστε να υπόκεινται σε συγκεκριμένες απαιτούμενες επεξεργασίες.

Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα

Σχέση Αλγορίθμων και Δομών δεδομένωνΔιατυπώθηκε από τον Νικλάους Βιρθ

δημιουργό της Pascal

Page 19: αναπαράσταση αλγορίθμων και δεδομένων

19

2.2.6 Δεδομένα και αναπαράσταση τους

Οι δομές δεδομένων που χρησιμοποιούνται συχνότερα είναι:

ο πίνακας,

η στοίβα,

η ουρά,

η λίστα,

το δένδρο και

ο γράφος.

Page 20: αναπαράσταση αλγορίθμων και δεδομένων

20

2.2.6 Δεδομένα και αναπαράσταση τους O πίνακας (table)

Ο πίνακας είναι ένα σύνολο ομοειδών (ίδιου είδους) στοιχείων. Τα στοιχεία ενός πίνακα καθορίζονται με τη βοήθεια δεικτών. Υπάρχουν πίνακες μίας, δύο, τριών ή περισσότερων διαστάσεων.Παράδειγμα: πίνακας A i x j εννοούμε ένα πίνακα δύο διαστάσεων με i γραμμές και j στήλες. Δηλαδή πίνακας Α 5 x 4 σημαίνει ότι έχει i = 5 γραμμές και j =4 στήλες. Το στοιχείο

(δεδομένο) του πίνακα αij = α34 βρίσκεται στην i=3 γραμμή και j=4 στήλη.

α11 α12 α13 α14

α21 α22 α23 α24

α31 α32 α33 α34

α41 α42 α43 α44

α51 α52 α53 α54

Δισδιάστατος Πίνακας Α 5 x 4 (δηλ. πίνακας δύο διαστάσεων με 5 γραμμές και 4 στήλες)

Στήλη 1 Στήλη 2 Στήλη 4Στήλη 3Γραμμή 1Γραμμή 2Γραμμή 3Γραμμή 4Γραμμή 5

Στοιχείο α34

Page 21: αναπαράσταση αλγορίθμων και δεδομένων

21

2.2.6 Δεδομένα και αναπαράσταση τους

21

16 14 15 16

Παραδείγματα Μονοδιάστατων Πινάκων

Μάνος ΓιώργοςΕλένηΜαρία

Ηλικία 1x 4

Στοιχείο α13 = 15

21

16

14

15

16

17

Μάνος

Γιώργος

Μαρία

Ελένη

Νίκη

Στοιχείο α21 = 14

Ηλικία 5 x 1

O πίνακας (table)

Page 22: αναπαράσταση αλγορίθμων και δεδομένων

22

2.2.6 Δεδομένα και αναπαράσταση τους

Παράδειγμα τρισδιάστατου Πίνακα

O πίνακας (table)

Πίνακας 2x4x2

Πίνακας 2x3x4

Page 23: αναπαράσταση αλγορίθμων και δεδομένων

23

2.2.6 Δεδομένα και αναπαράσταση τους Η στοίβα (stack)

Στην στοίβα εισάγονται και εξάγονται στοιχεία (δεδομένα) μόνο από το ένα άκρο. Με την λειτουργία της ώθησης (push) εισάγεται στοιχείο στην κορυφή της στοίβας, ενώ με την λειτουργία της απώθησης (pop ή pull) εξάγεται στοιχείο από την κορυφή της λίστας.

top

ώθησης (push) απώθησης (pop)Η διαδικασία αυτή, δηλαδή το τελευταίο στοιχείο που εισάγεται να εξέρχεται και πρώτο ονομάζεται και LIFO (Last In, First Out)

Page 24: αναπαράσταση αλγορίθμων και δεδομένων

24

2.2.6 Δεδομένα και αναπαράσταση τους Η Ουρά (queue)

Στην ουρά εισάγονται στοιχεία (δεδομένα) από το ένα άκρο και εξάγονται στοιχεία από το άλλο άκρο.

Η διαδικασία αυτή, δηλαδή το πρώτο στοιχείο που εισάγεται να εξέρχεται και πρώτο ονομάζεται και FIFO (First In, First Out)

Πίσω(rear)

Εμπρός (front)

Page 25: αναπαράσταση αλγορίθμων και δεδομένων

25

2.2.6 Δεδομένα και αναπαράσταση τους Η Λίστα (linked list)

Στη Λίστα τα στοιχεία φαίνονται να είναι «λογικά» γραμμικά διατεταγμένα, χωρίς όμως να βρίσκονται απαραίτητα σε συνεχόμενες θέσεις της μνήμης του υπολογιστή. Ένα δεδομένο συσχετίζεται με το επόμενό του με την βοήθεια κάποιου δείκτη (pointer), ανεξάρτητα από τη θέση που καταλαμβάνει στη μνήμη.

Page 26: αναπαράσταση αλγορίθμων και δεδομένων

26

2.2.6 Δεδομένα και αναπαράσταση τους

Τo δένδρο (tree), αποτελείται από ένα σύνολο κόμβων, οι οποίοι συνδέονται με ακμές.

Η Δένδρο (tree)

Υπάρχει μόνο ένας κόμβος, από τον οποίο μόνο ξεκινούν ακμές, που ονομάζεται ρίζα (root)

Οι κόμβοι στους οποίους καταλήγουν μόνο

ακμές (δεν ξεκινούν ακμές μόνο καταλήγουν),

ονομάζονται φύλλα.

ρίζα (root)

φύλλα.

Page 27: αναπαράσταση αλγορίθμων και δεδομένων

27

2.2.6 Δεδομένα και αναπαράσταση τους Ο Γράφος (graph)

Είναι η πιο γενική δομή δεδομένων μια και αποτελείται από κόμβους και ακμές χωρίς όμως κάποια ιεράρχηση. Δηλαδή τα δεδομένα συσχετίζονται μεταξύ τους χωρίς συγκεκριμένη ιεράρχηση.

Page 28: αναπαράσταση αλγορίθμων και δεδομένων

28

2.2.6 Δεδομένα και αναπαράσταση τους

ΣτατικέςΈχουν σταθερό μέγεθος, δηλαδή μπορούν να αποθηκεύσουν συγκεκριμένο πλήθος στοιχείων.

ΔυναμικέςΤο μέγεθός τους μπορεί να μεταβάλλεται ανάλογα με τις ανάγκες του αλγορίθμου τη στιγμή που εκτελείται. Το μέγεθός τους μπορεί να μεγαλώνει όταν εισάγονται νέα δεδομένα ή να μικραίνει ή όταν διαγράφονται δεδομένα.

Οι δομές δεδομένων διακρίνονται σε:

Page 29: αναπαράσταση αλγορίθμων και δεδομένων

29

2.2.6 Δεδομένα και αναπαράσταση τους

ΓραμμικέςΥπάρχει σχέση διάταξης ανάμεσα στα διαδοχικά στοιχεία (κάποιο στοιχείο θα είναι πρώτο κάποιο δεύτερο… και κάποιο τελευταίο)

Μη γραμμικέςΔεν υπάρχει σχέση διάταξης ανάμεσα στα στοιχεία.

Οι δομές δεδομένων διακρίνονται επίσης σε:

Ο πίνακας, η στοίβα, η ουρά και η λίστα είναι γραμμικές δομές δεδομένων

Το δένδρο και ο γράφος είναι μη γραμμικές δομές δεδομένων

Page 30: αναπαράσταση αλγορίθμων και δεδομένων

30

2.2.6 Δεδομένα και αναπαράσταση τους

Οι δομές δεδομένων διακρίνονται επίσης ανάλογα με το είδος της μνήμης (κύριας ή βοηθητικής) που χρησιμοποιούν.

Ο σκληρός δίσκος και η μνήμη flash, αποτελούν παραδείγματα βοηθητικής μνήμης του υπολογιστή.

Οι δομές δεδομένων που αποθηκεύονται στην βοηθητική μνήμη καλούνται αρχεία δεδομένων.

Πχ. Η εγγραφή ενός μαθητή μπορεί να αποτελείται από το όνομα, το επώνυμο, τον αριθμό κινητού τηλεφώνου, τη διεύθυνση αλληλογραφίας, την ηλεκτρονική διεύθυνση, τη φωτογραφία του κ.ά., που καλούνται πεδία της εγγραφής.