Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το...

86
Προγραμματισμός I ΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας 1 Σπύρος Λάλης [email protected] Προγραμματισμός Ι (HY120) μνήμη & μεταβλητές πρόγραμμα & εκτέλεση #1

Transcript of Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το...

Page 1: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

1 Σπύρος Λάλης[email protected]

Προγραμματισμός Ι (HY120)

μνήμη & μεταβλητέςπρόγραμμα & εκτέλεση

#1

Page 2: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

2 Σπύρος Λάλης[email protected]

Ψηφιακά δεδομένα, μνήμη, μεταβλητές

Page 3: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

3 Σπύρος Λάλης[email protected]

Δυαδικός κόσμος

• Οι υπολογιστές είναι δυαδικές μηχανές• Όλη η πληροφορία (δεδομένα και κώδικας)

κωδικοποιείται ως μια ακολουθία από 0 ή 1

• Η ελάχιστη μονάδα πληροφορίας ονομάζεται bit• 1 bit μπορεί να πάρει τις τιμές 0 / 1

• Η βασική μονάδα πληροφορίας είναι το byte • 1 byte αποτελείται από 8 bit

Page 4: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

4 Σπύρος Λάλης[email protected]

00 11 10 10

11 11 11 11

00 00 00 00

11 00 01 01

Page 5: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

5 Σπύρος Λάλης[email protected]

Μνήμη

• Αφαίρεση: μια (μακριά) σειρά από bytes

• Πως γίνεται αναφορά σε ένα συγκεκριμένο byte;

• Διεύθυνση μας λέει το πού βρίσκεται ένα byte στην μνήμη συγκεκριμένα: ο αριθμός σειράς του byte στη μνήμη

• Οι διευθύνσεις αρχίζουν (θεωρητικά) από την τιμή 0

Page 6: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

6 Σπύρος Λάλης[email protected]

00 11 10 10

11 11 11 11

00 00 00 00

11 00 01 01

00 11 10 10

11 11 11 11

00 00 00 00

11 00 01 01

περιεχόμενα

...

διευθύνσεις

0

1

2

3

4

5

Ν-2

Ν-1

Page 7: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

7 Σπύρος Λάλης[email protected]

Μνήμη ενός τυπικού υπολογιστή

• 1 KB = 1024 B = 210 B

• 1 MB = 1024 KB = 220 B

• 1 GB = 1024 MB = 230 B

• 1 TΒ = 1024 GΒ = 240 B

Κύρια μνήμη (RAM)• γρήγορη πρόσβαση• μερικά GB

Σκληρός δίσκος (hard disk)• αργή πρόσβαση• λίγα TB

Page 8: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

8 Σπύρος Λάλης[email protected]

Πρόσβαση στην μνήμη

• Λειτουργίες: ανάγνωση / εγγραφή• Σημείο αναφοράς: διεύθυνση• Ποσότητα δεδομένων: αριθμός bytes

• Ανάγνωση: επιστρέφει τις τιμές των bytes που έχουν αποθηκευτεί στις αντίστοιχες θέσεις

• Εγγραφή: προσδιορίζει τις τιμές των bytes που θα αποθηκευτούν στις αντίστοιχες θέσεις

Page 9: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

9 Σπύρος Λάλης[email protected]

Ανάγνωση

00 11 10 10

11 01 01 01

11 10 10 11

00 11 10 10

11 11 01 01

00 00 10 10

11 10 01 10

................

0

1

2

3

4

5

Ν-1

Ν

διεύθυνση περιεχόμενα

μηχανισμόςπρόσβασης μνήμης

op=read

adr=3

len=1

10101011

01 01 01 11

Page 10: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

10 Σπύρος Λάλης[email protected]

Εγγραφή

00 11 10 10

00 11 10 10

11 11 01 01

00 00 10 10

11 10 01 10

................

0

1

2

3

4

5

Ν-1

Ν

διεύθυνση περιεχόμενα

μηχανισμόςπρόσβασης

μνήμης Η/Υ

adr=1

len=2

00010101 11101010

01 01 01 11

00 10 10 10

11 01 01 01

op=write

Page 11: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

11 Σπύρος Λάλης[email protected]

Κωδικοποίηση δεδομένων

• Κωδικοποίηση: η μετατροπή δεδομένων από ένα σύστημα αναπαράστασης σε ένα άλλο δεκαδικό -> δυαδικό χαρακτήρες -> δυαδικό, ...

• Πόσα bits χρειαζόμαστε για κάθε είδος δεδομένων;• Περισσότερα bits/bytes

μεγαλύτερο πεδίο τιμών μεγαλύτερη ακρίβεια

• Με Ν bits κωδικοποιούμε 2Ν διαφορετικές τιμές π.χ. πεδίο φυσικών [0...2Ν-1] π.χ. πεδίο ακεραίων [-2Ν-1...2Ν-1-1]

Page 12: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

12 Σπύρος Λάλης[email protected]

Δεδομένα και πρόγραμματισμός

• Για κάθε δεδομένο πρέπει να καθοριστεί (από τον προγραμματιστή) η θέση μνήμης για την αποθήκευση του ο αριθμός των bytes που χρειάζονται

για την αποθήκευση των τιμών που μπορεί να λάβει η κωδικοποίηση που χρησιμοποιείται για κάθε τιμή

στο δυαδικό σύστημα

• Απάνθρωπο!

• Χρειάζεται κατάλληλη υποστήριξη από τις γλώσσες προγραμματισμού ...

Page 13: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

13 Σπύρος Λάλης[email protected]

Τύποι δεδομένων

• Κάθε γλώσσα προγραμματισμού ορίζει ένα σύνολο από βασικούς τύπους δεδομένων

• Κάθε βασικός τύπος έχει προκαθορισμένο μέγεθος (σε bytes) συγκεκριμένη δυαδική κωδικοποίηση

και αντίστοιχο πεδίο τιμών

• Ο προγραμματιστής ορίζει κάθε δεδομένο του προγράμματος ως αντικείμενο ενός τύπου καθορίζει έμμεσα το μέγεθος και την κωδικοποίηση του

(την σημασία των bits που αντιστοιχούν στο αντικείμενο)

• Η μνήμη αποθηκεύει τις τιμές των bits/bytes χωρίς να γνωρίζει το πως αυτές ερμηνεύονται

Page 14: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

14 Σπύρος Λάλης[email protected]

Αναφορά σε αντικείμενα δεδομένων

• Σε κάθε αντικείμενο δεδομένων του προγράμματος δίνεται και ένα μνημονικό όνομα

• Το όνομα μπορεί να χρησιμοποιείται, αντί της διεύθυνσης, στις πράξεις ανάγνωσης/αλλαγής των τιμών του αντικειμένου

• Η πρόσβαση στην μνήμη εξακολουθεί να γίνεται με βάση την θέση μνήμης και τον αριθμό bytes προς ανάγνωση/αποθήκευση η αντιστοίχιση γίνεται αυτόματα από την γλώσσα προγραμματισμού

Page 15: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

15 Σπύρος Λάλης[email protected]

Μεταβλητή

• Αντικείμενο δεδομένων του προγράμματος με συγκεκριμένο όνομα και τύπο

• «Διαβάζουμε» μια μεταβλητή διαβάζουμε την τιμή που έχει αποθηκευτεί

στην αντίστοιχη θέση της μνήμης

• «Αναθέτουμε» μια τιμή σε μεταβλητή γράφουμε την τιμή στην αντίστοιχη θέση της μνήμης

• «Δέσμευση» μεταβλητής δέσμευση αντίστοιχου χώρου στην μνήμη

• «Ζωή» μεταβλητής διάστημα κατά το οποίο ο χώρος παραμένει δεσμευμένος

Page 16: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

16 Σπύρος Λάλης[email protected]

00 11 10 10

00 00 00 00

11 11 01 01

00 00 10 10

11 10 01 10

................

0

1

2

3

4

5

Ν-1

Ν

διεύθυνση περιεχόμενα

11 11 11 11

00 00 00 00

int var;

θεση/διεύθυνση: 1τύπος: int

τύπος int

μέγεθος: 2 bytesερμηνεία: ακέραιοςκωδικοποίηση: 2’s complement 00 00 00 00

τι τιμή έχει η μεταβλητή var;

διάβασε από τη διεύθυνση της var όσα bytes ορίζει ο τύπος της T (π.χ. int), και ερμήνευσέ τα σύμφωνα με τη σύμβαση κωδικοποίησης του T

αποτέλεσμα = 255(για little-endian)

Page 17: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

17 Σπύρος Λάλης[email protected]

Little-endian vs. big-endian

• Little-endian: η σημαντικότητα των bytes αυξάνει όσο μεγαλώνουν οι διευθύνσεις το λιγότερο σημαντικό byte είναι στην μικρότερη διεύθυνση

• Big-endian: η σημαντικότητα των bytes μειώνεται όσο μεγαλώνουν οι διευθύνσεις το πιο σημαντικό byte είναι στην μικρότερη διεύθυνση

11 11 11 11

00 00 00 00 11 11 11 11

00 00 00 00

little-endian big-endian

ακέραιος που καταλαμβάνει 2 bytes, αρχίζοντας από την διεύθυνση k και έχει την τιμή 255

k

k+1

διευθύνσεις

Page 18: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

18 Σπύρος Λάλης[email protected]

Διαφάνεια αποθήκευσης/κωδικοποίησης

• Ο προγραμματιστής δεν χρειάζεται να γνωρίζει το πώς ακριβώς αποθηκεύεται/κωδικοποιείται η πληροφορία στην μνήμη του υπολογιστή

• Η προσπέλαση των περιεχομένων των μεταβλητών του προγράμματος γίνεται με διαφανή τρόπο ένα από τα πλεονεκτήματα του να χρησιμοποιεί

κανείς μια γλώσσα προγραμματισμού υψηλού επιπέδου

• Ο προγραμματιστής δεν καταλαβαίνει τη διαφορά όσο χρησιμοποιεί κανονικές πράξεις πρόσβασης

• Αυτό αλλάζει όταν χρησιμοποιείται γλώσσα μηχανής ή/και προσπελάζονται τα δεδομένα που βρίσκονται στη μνήμη με άμεσο τρόπο βλέπε αργότερα ...

Page 19: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

19 Σπύρος Λάλης[email protected]

Πρόγραμμα & εκτέλεση

Page 20: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

20 Σπύρος Λάλης[email protected]

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

• Πρόγραμμα: εντολές γραμμένες σε μια συγκεκριμένη γλώσσα προγραμματισμού αυτή που «καταλαβαίνει» ο υπολογιστής με λίγη βοήθεια … (ο υπολογιστής ξέρει μόνο από 0 και 1)

• Γλώσσα προγραμματισμού: γλώσσα σχεδιασμένη για να δίνουμε εντολές στον υπολογιστή

• Σαν τις κανονικές γλώσσες, αλλά πολύ πιο τυπική περιορισμένο λεξιλόγιο σαφής σημασιολογία ξεκάθαρο συντακτικό

Page 21: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

21 Σπύρος Λάλης[email protected]

Συντακτικό

• Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

• Επιτρεπτή πρόταση = συντακτικά ορθό πρόγραμμα μπορεί να μεταφραστεί σε γλώσσα μηχανής

και να εκτελεστεί στον υπολογιστή

• Ειδικές «γλώσσες» περιγραφής των κανόνων σύνταξης γλωσσών προγραμματισμού Extended Backus Naur Form (EBNF) συντακτικά διαγράμματα

Page 22: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

22 Σπύρος Λάλης[email protected]

Σύνταξη & σημασία

• Σύνταξη: κανόνες για τον σχηματισμό προτάσεων

• Σημασία: το νόημα που έχουν οι συντακτικά επιτρεπτές προτάσεις η σύνταξη μιας γλώσσας δεν μπορεί να ορίσει ταυτόχρονα

και την σημασία της

• Υπάρχουν συντακτικά επιτρεπτές προτάσεις που δεν έχουν ορισμένη (μια μοναδική) σημασία;

• Στις ανθρώπινες γλώσσες: ναι! μαζί μιλάμε και χώρια καταλαβαινόμαστε

• Σε γλώσσες προγραμματισμού: (κατά κανόνα) όχι

Page 23: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

23 Σπύρος Λάλης[email protected]

Για παράδειγμα

● Συντακτικά ορθές προτάσεις

-2+13

15/5-2

● Όμως, σε τι τιμές αντιστοιχούν τα παρακάτω;-2+13: (-2)+(13) ή –(2+13)

15/5-2: (15/5)-2 ή 15/(5-2)

Page 24: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

24 Σπύρος Λάλης[email protected]

Μεταγλώττιση

• Κώδικας: μια σειρά εντολών προς τον υπολογιστή, γραμμένες με βάση μια γλώσσα προγραμματισμού

• Μεταγλώττιση: διαδικασία μετατροπής κώδικα από μια γλώσσα σε μια άλλη συνήθως από εντολές υψηλού επιπέδου σε εντολές μηχανής μια εντολή γλώσσας υψηλού επιπέδου μπορεί να αντιστοιχεί

σε μια σειρά εντολών γλώσσας μηχανής

• Γίνεται από ειδικά προγράμματα, τους λεγόμενους μεταγλωττιστές (compilers)

• Η μεταγλώττιση γίνεται (συνήθως) ως ξεχωριστή διαδικασία, πολύ πριν αρχίσει η εκτέλεση του κώδικα υπάρχουν περιπτώσεις όπου η μετάφραση γίνεται ακριβώς

πριν αρχίσει η εκτέλεση (just in time compilation)

Page 25: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

25 Σπύρος Λάλης[email protected]

CPU

compilerγλώσσα -> 01001010

εντολές μηχανής

εντολές γλώσσας

Page 26: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

29 Σπύρος Λάλης[email protected]

Συμβάσεις εκτέλεσης

• Κάθε γλώσσα έχει συγκεκριμένες συμβάσεις για την αποτίμηση και εκτέλεση των εκφράσεων/προτάσεων

• Συνήθως «από αριστερά προς τα δεξιά» και «από πάνω προς τα κάτω» όπως γράφουμε/διαβάζουμε κείμενα (στον δυτικό κόσμο)

• Επίσης, μπορεί να γίνουν άλματα μέσα στον κώδικα είτε «προς τα εμπρός» είτε «προς τα πίσω» κάποιες εντολές μπορεί να παρακαμφθούν ή/και να

εκτελεστούν παραπάνω από μια φορά

• Πραγματοποιούνται με ειδικές εντολές της γλώσσας εντολές ελέγχου ροής εκτέλεσης προγράμματος εντολές κλήσης υποπρογραμμάτων

Page 27: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

30 Σπύρος Λάλης[email protected]

Έλεγχος ροής εκτέλεσης

• Ο προγραμματιστής μπορεί να επηρεάσει την ροή εκτέλεσης του προγράμματος

• Mέσω εντολών ελέγχου

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

• Μπορούμε να φτιάξουμε προγράμματα με εντολές που εκτελούνται υπό συνθήκη / επανειλημμένα

Page 28: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

31 Σπύρος Λάλης[email protected]

Εκτέλεση προγράμματος

μνήμη

διάβασμα

γράψιμο

εκτέλεση επόμενης εντολής

αρχικοποίηση κατάστασης

επιλογή επόμενης εντολής

μεταβλητές

γράψιμο

Page 29: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

32 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

πρόγραμμα P(x,y)

Page 30: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

33 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

πρόγραμμα P(x,y)

εκτέλεση P(0,5)

? ? ?x y s

program counter ?

Page 31: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

34 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

πρόγραμμα P(x,y)

εκτέλεση P(0,5)

0 5 ?x y s

program counter ?

Page 32: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

35 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

πρόγραμμα P(x,y)

εκτέλεση P(0,5)

0 5 ?x y s

program counter 1

Page 33: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

36 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

εκτέλεση P(0,5)παράμετροι

s <- 0

πρόγραμμα P(x,y)

0 5 ?x y s

program counter 1

Page 34: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

37 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

εκτέλεση P(0,5)παράμετροι

s <- 0

πρόγραμμα P(x,y)

0 5 0x y s

program counter 1

Page 35: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

38 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

εκτέλεση P(0,5)παράμετροι

s <- 0

πρόγραμμα P(x,y)

0 5 0x y s

program counter 2

Page 36: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

39 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

εκτέλεση P(0,5)παράμετροι

s <- 0if (x is 0) goto 6

πρόγραμμα P(x,y)

0 5 0x y s

program counter 2

Page 37: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

40 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

εκτέλεση P(0,5)παράμετροι

s <- 0if (x is 0) goto 6

πρόγραμμα P(x,y)

0 5 0x y s

program counter 2

Page 38: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

41 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

εκτέλεση P(0,5)παράμετροι

s <- 0if (x is 0) goto 6

πρόγραμμα P(x,y)

0 5 0x y s

program counter 6

Page 39: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

42 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

εκτέλεση P(0,5)παράμετροι

s <- 0if (x is 0) goto 6print s

πρόγραμμα P(x,y)

0 5 0x y s

program counter 6

Page 40: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

43 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

? ? ?x y s

program counter ?

Page 41: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

44 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 ?x y s

program counter ?

Page 42: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

45 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 ?x y s

program counter ?

Page 43: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

46 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 ?x y s

program counter 1

Page 44: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

47 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 ?x y s

program counter 1

Page 45: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

48 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 0x y s

program counter 1

Page 46: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

49 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 0x y s

program counter 2

Page 47: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

50 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 0x y s

program counter 2

Page 48: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

51 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 0x y s

program counter 2

Page 49: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

52 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 0x y s

program counter 3

Page 50: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

53 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + y

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 0x y s

program counter 3

Page 51: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

54 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + y

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 0x y s

program counter 3

Page 52: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

55 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + y

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 5x y s

program counter 3

Page 53: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

56 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + y

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 5x y s

program counter 4

Page 54: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

57 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 5x y s

program counter 4

Page 55: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

58 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

2 5 5x y s

program counter 4

Page 56: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

59 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 4

Page 57: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

60 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 5

Page 58: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

61 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 5

Page 59: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

62 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 2

Page 60: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

63 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 2

Page 61: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

64 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 2

Page 62: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

65 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 3

Page 63: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

66 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + y

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 3

Page 64: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

67 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + y

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 5x y s

program counter 3

Page 65: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

68 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + y

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 10x y s

program counter 3

Page 66: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

69 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + y

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 10x y s

program counter 4

Page 67: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

70 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 10x y s

program counter 4

Page 68: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

71 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

1 5 10x y s

program counter 4

Page 69: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

72 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

0 5 10x y s

program counter 4

Page 70: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

73 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

0 5 10x y s

program counter 5

Page 71: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

74 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1if (1 is 1) goto 2

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

0 5 10x y s

program counter 5

Page 72: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

75 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1if (1 is 1) goto 2

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

0 5 10x y s

program counter 2

Page 73: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

76 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

0 5 10x y s

program counter 2

Page 74: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

77 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

0 5 10x y s

program counter 2

Page 75: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

78 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

0 5 10x y s

program counter 6

Page 76: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

79 Σπύρος Λάλης[email protected]

1: s <- 02: if (x is 0) goto 63: s <- s + y4: x <- x - 15: goto 26: print s

παράμετροι

s <- 0if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6s <- s + yx <- x - 1goto 2if (x is 0) goto 6print s

πρόγραμμα P(x,y)

εκτέλεση P(2,5)

0 5 10x y s

program counter 6

Page 77: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

80 Σπύρος Λάλης[email protected]

Υποπρογράμματα

• Ομάδα εντολών (και δεδομένων) που είναι συντακτικά ή/και εκτελεστικά ανεξάρτητη (αυτόνομη) από τον υπόλοιπο κώδικα ένα πρόγραμμα μπορεί να αποτελείται από (ή να

χρησιμοποιεί) πολλά διαφορετικά υποπρογράμματα

• Όταν καλείται ένα υποπρόγραμμα, η εκτέλεση μεταφέρεται στο υποπρόγραμμα

• Όταν τερματιστεί η εκτέλεση του, επιστρέφει πίσω στο πρόγραμμα που πραγματοποίησε την κλήση

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

Page 78: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

81 Σπύρος Λάλης[email protected]

πρόγραμμα P1code Acall P2code B

πρόγραμμα P2call P3code Creturn

εκτέλεση P1

πρόγραμμα P3code Dreturn

code Acall P2call P3code Dreturncode Creturncode B

Page 79: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

82 Σπύρος Λάλης[email protected]

Μεθοδολογία επίλυσης προβλημάτων

• Ανάλυση του προβλήματος τι δεδομένα έχουμε στην διάθεση μας; τι θέλουμε να βρούμε; πώς σπάει σε μικρότερα / απλούστερα προβλήματα; ποια στρατηγική πρέπει να ακολουθήσουμε;

• Σχεδιασμός αλγορίθμου ακριβής ακολουθία πεπερασμένων βημάτων

που πρέπει να ακολουθηθούν για να λυθεί το πρόβλημα

• Απαιτήσεις ορθότητα, καλή επίδοση, εξοικομόμηση πόρων

• Για το ίδιο πρόβλημα πιθανόν να υπάρχουν περισσότεροι κατάλληλοι αλγόριθμοι

Page 80: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

83 Σπύρος Λάλης[email protected]

Παράδειγμα: γραμμική αναζήτηση

Βρες τη θέση που υπάρχει (αν υπάρχει) η τιμή 50

1 13 17 20 21 34 45 46 47 50 55 59 61 63 70

1 13 17 20 21 34 45 46 47 50 55 59 61 63 70

1 13 17 20 21 34 45 46 47 50 55 59 61 63 70

1 13 17 20 21 34 45 46 47 50 55 59 61 63 70

1ο βήμα

2ο βήμα

3ο βήμα

10ο βήμα

Page 81: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

84 Σπύρος Λάλης[email protected]

Παράδειγμα: δυαδική αναζήτηση

Βρες τη θέση που υπάρχει (αν υπάρχει) η τιμή 50

1 13 17 20 21 34 45 46 47 50 55 59 61 63 70

1 13 17 20 21 34 45 46 47 50 55 59 61 63 70

1 13 17 20 21 34 45 46 47 50 55 59 61 63 70

1ο βήμα

2ο βήμα

3ο βήμα

κάτω όριο πάνω όριομέσο

κάτω όριο πάνω όριομέσο

κάτω όριο πάνω όριομέσο

Page 82: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

87 Σπύρος Λάλης[email protected]

Αποσφαλμάτωση (debugging)

• Συντακτικό επίπεδο (εύκολο) ο κώδικας δεν αντιστοιχεί σε συντακτικά επιτρεπτή πρόταση ευκολάκι, νά' ναι καλά αυτός που έγραψε τον compiler

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

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

υπολογιστή να κάνει: παράγεται λάθος αποτέλεσμα επίπονο, αλλά η κατάσταση βελτιώνεται με την εμπειρία

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

Page 83: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

88 Σπύρος Λάλης[email protected]

Αποσφαλμάτωση (debugging) στο παρελθόν

Page 84: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

89 Σπύρος Λάλης[email protected]

Χρονικό σημείο εντοπισμού λαθών

• Χρόνος μετάφρασης (compile time) ο εντοπισμός λαθών γίνεται από τον μεταγλωττιστή,

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

• Χρόνος εκτέλεσης (run time / execution time) ο εντοπισμός λαθών γίνεται από το περιβάλλον εκτέλεσης

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

• Μετά την εκτέλεση ο εντοπισμός λαθών γίνεται από τον χρήστη ή ένα άλλο

πρόγραμμα με βάση τα αποτελέσματα που παράγει το πρόγραμμα,

χωρίς αυτό να έχει παρουσιάσει κάποιο «ορατό» λάθος

Page 85: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

94 Σπύρος Λάλης[email protected]

Ορθότητα (correctness)

• Ορθότητα: ο κώδικας υλοποιεί την επιθυμητή (προδιαγεγραμμένη) λειτουργικότητα για όλες τις δυνατές περιπτώσεις

• Το γεγονός ότι ο κώδικας μεταφράστηκε επιτυχώς (προφανώς) δεν συνεπάγεται ορθότητα

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

• Το πρόγραμμα πάλι μπορεί να μην λειτουργεί σωστά να μην κάνει αυτό που θέλουμε, σε όλες τις περιπτώσεις

• Η εκτέλεση αυτή καθ’αυτή γίνεται πάντα σωστά όπως ορίζεται από την σημασιολογία της γλώσσας

προγραμματισμού – δεν φταίει το «καταραμένο μηχάνημα» μπορεί να υπάρχουν σημασιολογικά ή/και λογικά λάθη

Page 86: Προγραμματισμός Ι (HY120) · • Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων)

Προγραμματισμός IΤΗΜΜΥ, Πανεπιστήμιο Θεσσαλίας

95 Σπύρος Λάλης[email protected]

Ο νέος = ψάρι = γατάκι Ο παλιός