ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές...
Transcript of ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές...
![Page 1: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/1.jpg)
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
Ι. Κ. Δημητρίου
5η Διάλεξη
![Page 2: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/2.jpg)
41CSC302 Δομές Δεδομένων και Αρχές
Προγραμματισμού Υπολογιστών
Βιβλιογραφία
1. PYTHON – ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ
ΥΠΟΛΟΓΙΣΤΕΣ – 4η αναθεωρημένη και
επαυξημένη έκδοση 77117677 ΙΔΡΥΜΑ
ΤΕΧΝΟΛΟΓΙΑΣ & ΕΡΕΥΝΑΣ-
ΠΑΝΕΠΙΣΤΗΜΙΑΚΕΣ ΕΚΔΟΣΕΙΣ ΚΡΗΤΗΣ
2. ΕΞΕΡΕΥΝΗΣΗ ΤΗΣ PYTHON 68386005
ΕΚΔΟΣΕΙΣ ΚΛΕΙΔΑΡΙΘΜΟΣ ΕΠΕ
2
![Page 3: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/3.jpg)
(
Επανάληψη
3
![Page 4: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/4.jpg)
Μια δυναμική και θεμελιώδης δυνατότητα όλων των γλωσσών προγραμματισμού είναι η ικανότητα να συγκρίνουν ποσότητες ώστε να αποφασίζουν για τον τρόπο υπολογισμού. Μ’ άλλα λόγια, ένα είδος διακλάδωσης μπορεί να διευθετηθεί να λάβει χώρα μόνον αν κάποιες συνθήκες ικανοποιούνται.
Συνδυαζόμενη η διακλάδωση με μια επανάληψη, είναι πιθανώς η πλέον σπουδαία και μοναδική πρόοδος εφ’ όλων των μαθημάτων και αξίζει σημαντική προσπάθεια.
![Page 5: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/5.jpg)
5
ΔΟΜΗ ΜΑΘΗΜΑΤΟΣ
ΘΕΩΡΙΑ
Δομημένος προγραμματισμός
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Επαναλήψεις, loops (for, while)
ΕΦΑΡΜΟΓΕΣ
Στην Python
![Page 6: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/6.jpg)
7
ΣΧΕΔΙΑΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ
(Software engineering)
Γενική προσέγγιση
![Page 7: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/7.jpg)
8
Πώς σχεδιάζεται ένα πρόγραμμα
![Page 8: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/8.jpg)
9
Σχεδιασμός Προγράμματος
1. Προσδιορισμός προβλήματος
2. Ανάλυση προβλήματος
3. Σχεδιασμός μεθόδου επίλυσης (ανάπτυξη αλγόριθμου) του προβλήματος
4. Κωδικοποίηση του αλγόριθμου σε μια γλώσσα προγραμματισμού (υλοποίηση προγράμματος)
5. Δοκιμή του προγράμματος
![Page 9: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/9.jpg)
10
Πώς αναπτύσσεται ένα πρόγραμμα
![Page 10: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/10.jpg)
11
Αναπτύσσομε τα προγράμματα με συγκεκριμένες τεχνικές που υλοποιούνται από όλες τις γλώσσες προγραμματισμού, αλλά με μικρές διαφοροποιήσεις.
Μια δομικά άρτια τεχνική είναι ο «δομημένος προγραμματισμός» →
![Page 11: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/11.jpg)
12
Δομημένος (structured) προγραμματισμός
Είναι ένα προγραμματιστικό στυλ που χρησιμοποιεί τρεις κανόνες – δομές ή βασικά στοιχεία ελέγχου βάσει των οποίων θα πρέπει να φτιάχνονται τα προγράμματα (Dijkstra) →:
• Εντολή επεξεργασίας (processing) →
• Έλεγχος συνθήκης if-then-else →
• Ελεγχόμενη επανάληψη εντολών (While, Repeat-Until, for-next) →
![Page 12: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/12.jpg)
13
Born 11 May 1930
Rotterdam, Netherlands
Died 6 August 2002 (aged 72)
Nuenen, Netherlands
Fields
Computing science
Theoretical computer science
Institutions
Mathematisch Centrum
Eindhoven University of Technology
Burroughs Corporation
The University of Texas at Austin
Alma mater
Leiden University
(B.S., M.S.)
University of Amsterdam
(Ph.D.)
Thesis Communication with an
Automatic Computer (1959)
Doctoral advisor Adriaan van
Wijngaarden
Edsger W. Dijkstra
![Page 13: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/13.jpg)
14
Εντολή επεξεργασίας
Πρόκειται για Black box εντολή,
είτε απλή (πχ τετραγώνισε τον X)
είτε σύνθετη (πχ υπολόγισε τον τόκο από την αποταμίευση κεφαλαίου)
![Page 14: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/14.jpg)
15
Δομή απόφασης (βλπ ΔΙΑΛΕΞΗ 5 - if)
Αποφάσεις λαμβάνονται επί των τρεχουσών τιμών των δεδομένων:
1. If (συνθήκη αληθής) then …
If «ο λογαριασμός του πελάτη είναι αρνητικός» then «ενημέρωσε το διευθυντή».
2. If (συνθήκη αληθής) then … else …
If «ο καιρός είναι καλός» then «πάμε παραλία» else «πάμε σινεμά»
![Page 15: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/15.jpg)
16
Δομές επανάληψης (looping, loop)Οι λύσεις πολλών προβλημάτων απαιτούν την
επανάληψη μιας διαδικασίας για κάποιο αριθμό φορών:
• For k=1 to 100
…εντολές
endFor k
• While (συνθήκη αληθής)
…εντολές
endWhile
• Repeat
…εντολές
Until (συνθήκη αληθής)
![Page 16: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/16.jpg)
18
Κλείνει η παρένθεση )
![Page 17: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/17.jpg)
20
Θα αναφέρομε τις Δομές Επανάληψης
μία – μία (από αλγοριθμική άποψη)
με παραδείγματα
![Page 18: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/18.jpg)
21
For i = κάτω_όριο To άνω_όριο Step βήμα
… εντολές
EndFor (ή Next i, …)
Νόημα
μετρητής
δίνονται
1. Η δομή επανάληψης For
![Page 19: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/19.jpg)
22
>>> for i in range(4):
print(i,'OIKONOMIA')Όρια range(4) είναι: 0 και 3=4-1
Βήμα range(4) είναι: 1
Run
0 OIKONOMIA
1 OIKONOMIA
2 OIKONOMIA
3 OIKONOMIA
Παραδείγματα χρήσης του for / PYTHON
![Page 20: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/20.jpg)
24
for i in range(4):
print(i,' oikonomia ')
print()
0 oikonomia
1 oikonomia
2 oikonomia
3 oikonomia
Τυπώνει κενή (empty) γραμμή
![Page 21: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/21.jpg)
Τυπώνει στην ίδια γραμμή
for i in range(4):
print(i,' oikonomia ',end=””)
0 oikonomia 1 oikonomia 2 oikonomia 3
oikonomia
>>>
26
![Page 22: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/22.jpg)
Τυπώνει περιττούς έως 9
>>> for i in range(1,10,2):
print(i,' oikonomia ')
Run
1 oikonomia
3 oikonomia
5 oikonomia
7 oikonomia
9 oikonomia 28
![Page 23: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/23.jpg)
Τυπώνει άρτιους έως 8
>>> for i in range(2,10,2):
print(i,' oikonomia ')
2 oikonomia
4 oikonomia
6 oikonomia
8 oikonomia
29
![Page 24: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/24.jpg)
Τυπώνει με αρνητικό βήμα
for i in range(10,0,-1):
print(i,' oikonomia ')
10 oikonomia
9 oikonomia
8 oikonomia
7 oikonomia
6 oikonomia
5 oikonomia
4 oikonomia
3 oikonomia
2 oikonomia
1 oikonomia 30
![Page 25: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/25.jpg)
33
Εντολή αυτοαντικατάστασης
Α = Α + 1
Νόημα
![Page 26: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/26.jpg)
34
Εντολή αυτοαντικατάστασης
Α = Α + 1
Μετρητής: η τιμή του αλλάζει μέσα σε μια δομή επανάληψης. Πχ For I=1 to 100: next I
Αθροιστής: η τιμή του κρατά ένα άθροισμα που αλλάζει μέσα σε μια δομή επανάληψης, πχ
Αρχικά S=0
Στη συνέχεια For I=1 to 100: S=S+2*I: next I
Ίχνος (Tracing): λίστα των τιμών των μεταβλητών κατά την πορεία του προγράμματος για να κατανοήσομε πώς δουλεύει το πρόγραμμα
![Page 27: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/27.jpg)
35
Συχνά είναι χρήσιμο να αθροίζομε.
Για να κάνομε αυτό, χρησιμοποιούμε μια
μεταβλητή (αθροιστής) που κρατά το
άθροισμα και λαμβάνει μια αρχική τιμή
(initialization) πριν την ανακύκλωση (loop).
‘Εστω
S = 1+2+3+…+10
Τότε θέτομε
S = 0 Αρχική τιμή στον αθροιστή
![Page 28: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/28.jpg)
36
Παράδειγμα
Προσδιορισμός του αθροίσματος
1 + 2 + 3 + 4 + … + 10
Χρειάζεται ένας αθροιστής, έστω S, για το άθροισμα: S = 1 + 2 + 3 + 4 + … + 10
Αρχική τιμή αθροιστή τίθεται: S = 0
Επόμενη τιμή αθροιστή είναι: S = 0 + 1 = S + 1 = 1
Επόμενη τιμή αθροιστή είναι: S = 1 + 2 = S + 2 = 3
Επόμενη τιμή αθροιστή είναι: S = 3 + 3 = S + 3 = 6
…
… κοκ S = … = S + 10
Παρατηρούμε ότι για την εύρεση του S μεταβάλλεται ένας μετρητής από το 1 έως το 10.
![Page 29: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/29.jpg)
37
Προσδιορισμός του αθροίσματος
1 + 2 + 3 + 4 + … + 10
Χρειάζεται ένας αθροιστής, έστω S, για το άθροισμα: S = 1 + 2 + 3 + 4 + … + 10
Αρχική τιμή αθροιστή τίθεται: S = 0
Επόμενη τιμή αθροιστή είναι: S = 0 + 1 = S + 1 = 1
Επόμενη τιμή αθροιστή είναι: S = 1 + 2 = S + 2 = 3
Επόμενη τιμή αθροιστή είναι: S = 3 + 3 = S + 3 = 6
… κοκ S = = S + 10
Παρατηρούμε ότι μεταβάλλεται ένας μετρητής από το 1 έως το 10. Οπότε, η διαδικασία γράφεται
![Page 30: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/30.jpg)
Γενικός τύπος
S = S + i
όπου i = 1,2,3,…,10
for i = 1,2,3,…,10
S = S + i
for i in range(1,11):
s=s+i
38
![Page 31: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/31.jpg)
39
Βρες το άθροισμα 1+2+3+…+10
s = 0 # αθροιστής
for j in range(11):
s = s + j # μεταβολή αθροιστή
print()
print('αποτέλεσμα j s = ',j,s)
Run
Αποτέλεσμα j s = 10 55
![Page 32: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/32.jpg)
42
Βρες το άθροισμα 1+3+5+…+9
s = 0 # αθροιστής
for j in range(1,11,2):
#print(j,s)
s = s + j # μεταβολή αθροιστή
print()
print('j s = ',j,s)
Run
j s = 9 25
![Page 33: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/33.jpg)
47
• Τι κάνομε για μη ακέραια ορίσματα;
![Page 34: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/34.jpg)
48
Βρες το άθροισμα 34.7+34.8+34.9+…+43.8
s = 0 # αθροιστής
for j in range(347,438):
s = s + j/10. # μεταβολή αθροιστή
print()
print('j s = ',j,s)
Run
j s = 437 3567.2
![Page 35: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/35.jpg)
51
Print "ASCII table"
for i in range(256):
print(i,chr(i))
…
249 ù
250 ú
251 û
252 ü
253 ý
254 þ
255 ÿ
![Page 36: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/36.jpg)
53
Υπενθυμίζομε τις δομές επανάληψης
![Page 37: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/37.jpg)
55
Υπάρχουν 3 διαφορετικές εκφράσεις WHILE:
While (συνθήκη αληθής)
… εντολές
End
Do While (συνθήκη αληθής)
… εντολές
End
Do
… εντολές
Loop While (συνθήκη αληθής)
2. Η δομή επανάληψης While
Ισοδύναμες
![Page 38: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/38.jpg)
56
Υπάρχουν 3 διαφορετικές εκφράσεις WHILE:
While (συνθήκη αληθής)
… εντολές
End
Do While (συνθήκη αληθής)
… εντολές
Loop
Do
… εντολές
Loop While (συνθήκη αληθής)
2. Η δομή επανάληψης While
Ισοδύναμες
![Page 39: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/39.jpg)
57
while συνθήκη αληθής:
…εντολές
Νόημαn=5
while n>0:
print (n)
n=n-1
print('εκτός ανακύκλωσης',n)
2.1 Η δομή επανάληψης While
Run
54321εκτός ανακύκλωσης 0
![Page 40: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/40.jpg)
58
Να βρεις την πρώτη δύναμη του 2 μεγαλύτερη
του 100.
Δηλ. να βρεις έναν αριθμό x: 2x>100
Πρόγραμμα 5 - Do While-Loop
![Page 41: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/41.jpg)
59
2x >100, οπότε ln(2x) > ln(100) loge = ln
ή x ln(2) > 4.6
ή x 0.69 > 4.6
ή x > 6.667
ή x >= 7
Άρα 27 =128
Εναλλακτικώς βρίσκομε τις δυνάμεις του 2 με απαρίθμηση:
2 4 8 16 32 64 100 128
21 22 23 24 25 26 27
![Page 42: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/42.jpg)
60
Ίχνος (Tracing): για να κατανοήσομε πώς δουλεύει το πρόγραμμα που έχομε επινοήσει
Πολυπλοκότητα (complexity) = 1 πράξη ανά επανάληψη = Ο(1) = Order (1) = Order (1)
n = n = Αποτέλεσμα = n
2 ‘ αρχική τιμή 2 2
2*2 = 4 2*2 4
2*2*2 = 8 4*2 8
… 8*2 16
… …
n*2
![Page 43: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/43.jpg)
n=2
while n <= 100:
n=n*2
print(n)
61
![Page 44: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/44.jpg)
n=1
while 2**n <100:
n=n+1
Πράξεις
1+2+3+4+5+6+7+…+n) =
n*(n-1)/2 = n^2/2 – n/2 = order n^2 /2
(1/2)*order(n^2) ~ c * order(n2) = O(n2)
62
1
while 2**n
(1+2+3+4+5+6+7<1
00:
1
![Page 45: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/45.jpg)
Βρες το άθροισμα s=1+2+3+…+10
s = 0 #initial value
s = s + 1
s = s + 2
s = s + 3
s = s + 10
s = s + i i=1 2 3 … 10 65
Ο γενικός τυπος επαναλαμβανεται
εφοσον ι <=10
s = 0
i = 1
while i<=10:
s = s + i
i = i + 1
![Page 46: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/46.jpg)
66
Βρες το άθροισμα 1+2+3+…+10
s=0
i=1
while i<=10:
print(i,s)
s=s+i
i=i+1
print('εκτός ανακύκλωσης i, s ',i,s)
print()
Πρόγραμμα 6 - While
Run
1 0
2 1
3 3
4 6
5 10
6 15
7 21
8 28
9 36
10 45
εκτός ανακ i, s 11 55
![Page 47: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών](https://reader035.fdocument.pub/reader035/viewer/2022071110/5fe509b31b448651f34b07dd/html5/thumbnails/47.jpg)
68
Βρες το άθροισμα
12+22+32+…+102
s=0
i=1
while i <= 10:
print(i,s)
s=s+ i**2
i=i+1
print('εκτός ανακύκλωσης i, s ',i,s)
print()
Πρόγραμμα - While
Run