47
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ι. Κ. Δημητρίου 5η Διάλεξη

ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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

Ι. Κ. Δημητρίου

5η Διάλεξη

Page 2: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

41CSC302 Δομές Δεδομένων και Αρχές

Προγραμματισμού Υπολογιστών

Βιβλιογραφία

1. PYTHON – ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ

ΥΠΟΛΟΓΙΣΤΕΣ – 4η αναθεωρημένη και

επαυξημένη έκδοση 77117677 ΙΔΡΥΜΑ

ΤΕΧΝΟΛΟΓΙΑΣ & ΕΡΕΥΝΑΣ-

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

2. ΕΞΕΡΕΥΝΗΣΗ ΤΗΣ PYTHON 68386005

ΕΚΔΟΣΕΙΣ ΚΛΕΙΔΑΡΙΘΜΟΣ ΕΠΕ

2

Page 3: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

(

Επανάληψη

3

Page 4: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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

Συνδυαζόμενη η διακλάδωση με μια επανάληψη, είναι πιθανώς η πλέον σπουδαία και μοναδική πρόοδος εφ’ όλων των μαθημάτων και αξίζει σημαντική προσπάθεια.

Page 5: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

5

ΔΟΜΗ ΜΑΘΗΜΑΤΟΣ

ΘΕΩΡΙΑ

Δομημένος προγραμματισμός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Επαναλήψεις, loops (for, while)

ΕΦΑΡΜΟΓΕΣ

Στην Python

Page 6: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

7

ΣΧΕΔΙΑΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ

(Software engineering)

Γενική προσέγγιση

Page 7: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

8

Πώς σχεδιάζεται ένα πρόγραμμα

Page 8: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

9

Σχεδιασμός Προγράμματος

1. Προσδιορισμός προβλήματος

2. Ανάλυση προβλήματος

3. Σχεδιασμός μεθόδου επίλυσης (ανάπτυξη αλγόριθμου) του προβλήματος

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

5. Δοκιμή του προγράμματος

Page 9: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

10

Πώς αναπτύσσεται ένα πρόγραμμα

Page 10: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

11

Αναπτύσσομε τα προγράμματα με συγκεκριμένες τεχνικές που υλοποιούνται από όλες τις γλώσσες προγραμματισμού, αλλά με μικρές διαφοροποιήσεις.

Μια δομικά άρτια τεχνική είναι ο «δομημένος προγραμματισμός» →

Page 11: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

12

Δομημένος (structured) προγραμματισμός

Είναι ένα προγραμματιστικό στυλ που χρησιμοποιεί τρεις κανόνες – δομές ή βασικά στοιχεία ελέγχου βάσει των οποίων θα πρέπει να φτιάχνονται τα προγράμματα (Dijkstra) →:

• Εντολή επεξεργασίας (processing) →

• Έλεγχος συνθήκης if-then-else →

• Ελεγχόμενη επανάληψη εντολών (While, Repeat-Until, for-next) →

Page 12: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

14

Εντολή επεξεργασίας

Πρόκειται για Black box εντολή,

είτε απλή (πχ τετραγώνισε τον X)

είτε σύνθετη (πχ υπολόγισε τον τόκο από την αποταμίευση κεφαλαίου)

Page 14: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

15

Δομή απόφασης (βλπ ΔΙΑΛΕΞΗ 5 - if)

Αποφάσεις λαμβάνονται επί των τρεχουσών τιμών των δεδομένων:

1. If (συνθήκη αληθής) then …

If «ο λογαριασμός του πελάτη είναι αρνητικός» then «ενημέρωσε το διευθυντή».

2. If (συνθήκη αληθής) then … else …

If «ο καιρός είναι καλός» then «πάμε παραλία» else «πάμε σινεμά»

Page 15: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

16

Δομές επανάληψης (looping, loop)Οι λύσεις πολλών προβλημάτων απαιτούν την

επανάληψη μιας διαδικασίας για κάποιο αριθμό φορών:

• For k=1 to 100

…εντολές

endFor k

• While (συνθήκη αληθής)

…εντολές

endWhile

• Repeat

…εντολές

Until (συνθήκη αληθής)

Page 16: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

18

Κλείνει η παρένθεση )

Page 17: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

20

Θα αναφέρομε τις Δομές Επανάληψης

μία – μία (από αλγοριθμική άποψη)

με παραδείγματα

Page 18: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

21

For i = κάτω_όριο To άνω_όριο Step βήμα

… εντολές

EndFor (ή Next i, …)

Νόημα

μετρητής

δίνονται

1. Η δομή επανάληψης For

Page 19: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

Τυπώνει στην ίδια γραμμή

for i in range(4):

print(i,' oikonomia ',end=””)

0 oikonomia 1 oikonomia 2 oikonomia 3

oikonomia

>>>

26

Page 22: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

Τυπώνει περιττούς έως 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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

Τυπώνει άρτιους έως 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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

Τυπώνει με αρνητικό βήμα

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

33

Εντολή αυτοαντικατάστασης

Α = Α + 1

Νόημα

Page 26: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

35

Συχνά είναι χρήσιμο να αθροίζομε.

Για να κάνομε αυτό, χρησιμοποιούμε μια

μεταβλητή (αθροιστής) που κρατά το

άθροισμα και λαμβάνει μια αρχική τιμή

(initialization) πριν την ανακύκλωση (loop).

‘Εστω

S = 1+2+3+…+10

Τότε θέτομε

S = 0 Αρχική τιμή στον αθροιστή

Page 28: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

Γενικός τύπος

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

47

• Τι κάνομε για μη ακέραια ορίσματα;

Page 34: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

53

Υπενθυμίζομε τις δομές επανάληψης

Page 37: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

55

Υπάρχουν 3 διαφορετικές εκφράσεις WHILE:

While (συνθήκη αληθής)

… εντολές

End

Do While (συνθήκη αληθής)

… εντολές

End

Do

… εντολές

Loop While (συνθήκη αληθής)

2. Η δομή επανάληψης While

Ισοδύναμες

Page 38: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

56

Υπάρχουν 3 διαφορετικές εκφράσεις WHILE:

While (συνθήκη αληθής)

… εντολές

End

Do While (συνθήκη αληθής)

… εντολές

Loop

Do

… εντολές

Loop While (συνθήκη αληθής)

2. Η δομή επανάληψης While

Ισοδύναμες

Page 39: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

58

Να βρεις την πρώτη δύναμη του 2 μεγαλύτερη

του 100.

Δηλ. να βρεις έναν αριθμό x: 2x>100

Πρόγραμμα 5 - Do While-Loop

Page 41: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

n=2

while n <= 100:

n=n*2

print(n)

61

Page 44: ΟΓΑΜΜΑΙΜΟ ΚΑΙ ΔΟΜΕ ΔΕΔΟΜΕΝΩΝ · 2020. 5. 12. · 41csc302 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

Βρες το άθροισμα 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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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 Δομές Δεδομένων και Αρχές Προγραμματισμού Υπολογιστών

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