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

Σχετικά έγγραφα
Προγραμματισμός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120)

Βασικές Έννοιες. Προγραµµατισµός Ι 1

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120)

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΑΕΠΠ Ερωτήσεις θεωρίας

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τα επιμέρους τμήματα Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ. Αναπαράσταση μεγεθών. Αναλογική αναπαράσταση ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΜΟΝΑ Α ΕΛΕΓΧΟΥ

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

Προγραμματισμός Ι (ΗΥ120)

Πληροφορική 2. Αλγόριθμοι

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

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

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2019 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Β1.1 Αναπαράσταση Δεδομένων και Χωρητικότητα Μονάδων Αποθήκευσης

6. Εισαγωγή στον προγραµµατισµό

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

Εισαγωγή στην Πληροφορική

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

Α2. Δίνεται το επόμενο τμήμα προγράμματος σε ΓΛΩΣΣΑ:

Μαλούτα Θεανώ Σελίδα 1

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8

Δομημένος Προγραμματισμός (ΤΛ1006)

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

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

Προγραμματισμός Ι (ΗΥ120)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Προγραμματισμός I (Θ)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

Αναπαράσταση Μη Αριθμητικών Δεδομένων

! Δεδομένα: ανεξάρτητα από τύπο και προέλευση, στον υπολογιστή υπάρχουν σε μία μορφή: 0 και 1

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Επιµέλεια Θοδωρής Πιερράτος

Προγραμματισμός Ι (ΗΥ120)

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ. ΘΕΜΑ 1 Δίνεται το παρακάτω τμήμα δηλώσεων ενός προγράμματος σε «ΓΛΩΣΣΑ»: ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Π[10] ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ ΑΚΕΡΑΙΕΣ: i

Προγραμματισμός Η/Υ (ΤΛ2007 )

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αρχιτεκτονική Υπολογιστών

Εισαγωγή στον Προγραμματισμό

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

Εισαγωγή στον Προγραμματισμό

Πρόβλημα 37 / σελίδα 207

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

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

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

ΠΡΟΒΛΗΜΑ ΕΠΕΓΕΡΓΑΣΙΑ. (Είναι οι σκέψεις και οι πράξεις που κάνουμε για να λυθεί το πρόβλημα) ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Θεωρία Προγραμματισμού

Transcript:

Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση

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

Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται ως μια ακολουθία από 0 ή Η ελάχιστη μονάδα πληροφορίας ονομάζεται bit bit μπορεί να πάρει τις τιμές 0 / Η βασική μονάδα πληροφορίας είναι το bte bte αποτελείται από 8 bit 3

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4

Μνήμη Αφαίρεση: μια (μακριά) σειρά από btes Πως γίνεται αναφορά σε ένα συγκεκριμένο bte; Διεύθυνση μας λέει το πού βρίσκεται ένα bte στην μνήμη συγκεκριμένα: ο αριθμός σειράς του bte στη μνήμη Οι διευθύνσεις αρχίζουν (θεωρητικά) από την τιμή 0

διευθύνσεις περιεχόμενα 0 2 0 0 0 0 3 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0... Ν-2 0 0 0 0 0 0 0 0 Ν- 0 0 0 0 6

Μνήμη ενός τυπικού υπολογιστή Κύρια μνήμη (RAM) γρήγορη πρόσβαση μερικά GB Σκληρός δίσκος (hard disk) αργή πρόσβαση λίγα TB KB = 024 B = 20 B MB = 024 KB = 220 B GB = 024 MB = 230 B TΒ = 024 GΒ = 240 B 7

Πρόσβαση στην μνήμη Λειτουργίες: ανάγνωση / εγγραφή Σημείο αναφοράς: διεύθυνση Ποσότητα δεδομένων: αριθμός btes Ανάγνωση: επιστρέφει τις τιμές των btes που έχουν αποθηκευτεί στις αντίστοιχες θέσεις Εγγραφή: προσδιορίζει τις τιμές των btes που θα αποθηκευτούν στις αντίστοιχες θέσεις 8

Ανάγνωση διεύθυνση op=read adr=3 len= 000 μηχανισμός πρόσβασης μνήμης περιεχόμενα 0 0 0 0 0 0 0 0 2 0 0 3 0 0 0 4 0 0 0 0 0 0... 9 Ν- 0 0 0 0 0 0 Ν 0 0 0

Εγγραφή διεύθυνση op=write adr= len=2 00000 000 μηχανισμός πρόσβασης μνήμης Η/Υ περιεχόμενα 0 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 0 0 4 0 0 0 0 0 0... 0 Ν- 0 0 0 0 0 0 Ν 0 0 0

Κωδικοποίηση δεδομένων Κωδικοποίηση: η μετατροπή δεδομένων από ένα σύστημα αναπαράστασης σε ένα άλλο δεκαδικό -> δυαδικό χαρακτήρες -> δυαδικό,... Πόσα bits χρειαζόμαστε για κάθε είδος δεδομένων; Περισσότερα bits/btes μεγαλύτερο πεδίο τιμών μεγαλύτερη ακρίβεια Με Ν bits κωδικοποιούμε 2Ν διαφορετικές τιμές π.χ. πεδίο φυσικών [0...2Ν-] π.χ. πεδίο ακεραίων [-2Ν-...2Ν--]

Δεδομένα και πρόγραμματισμός Για κάθε δεδομένο πρέπει να καθοριστεί (από τον προγραμματιστή) η θέση μνήμης για την αποθήκευση του ο αριθμός των btes που χρειάζονται για την αποθήκευση των τιμών που μπορεί να λάβει η κωδικοποίηση που χρησιμοποιείται για κάθε τιμή στο δυαδικό σύστημα Απάνθρωπο! Χρειάζεται κατάλληλη υποστήριξη από τις γλώσσες προγραμματισμού... 2

Τύποι δεδομένων Κάθε γλώσσα προγραμματισμού ορίζει ένα σύνολο από βασικούς τύπους δεδομένων Κάθε βασικός τύπος έχει προκαθορισμένο μέγεθος (σε btes) συγκεκριμένη δυαδική κωδικοποίηση και αντίστοιχο πεδίο τιμών Ο προγραμματιστής ορίζει κάθε δεδομένο του προγράμματος ως αντικείμενο ενός τύπου καθορίζει έμμεσα το μέγεθος και την κωδικοποίηση του (την σημασία των bits που αντιστοιχούν στο αντικείμενο) Η μνήμη αποθηκεύει τις τιμές των bits/btes χωρίς να γνωρίζει το πως αυτές ερμηνεύονται 3

Αναφορά σε αντικείμενα δεδομένων Σε κάθε αντικείμενο δεδομένων του προγράμματος δίνεται και ένα μνημονικό όνομα Το όνομα μπορεί να χρησιμοποιείται, αντί της διεύθυνσης, στις πράξεις ανάγνωσης/αλλαγής των τιμών του αντικειμένου Η πρόσβαση στην μνήμη εξακολουθεί να γίνεται με βάση την θέση μνήμης και τον αριθμό btes προς ανάγνωση/αποθήκευση η αντιστοίχιση γίνεται αυτόματα από την γλώσσα προγραμματισμού 4

Μεταβλητή Αντικείμενο δεδομένων του προγράμματος με συγκεκριμένο όνομα και τύπο «Διαβάζουμε» μια μεταβλητή διαβάζουμε την τιμή που έχει αποθηκευτεί στην αντίστοιχη θέση της μνήμης «Αναθέτουμε» μια τιμή σε μεταβλητή γράφουμε την τιμή στην αντίστοιχη θέση της μνήμης «Δέσμευση» μεταβλητής δέσμευση αντίστοιχου χώρου στην μνήμη «Ζωή» μεταβλητής διάστημα κατά το οποίο ο χώρος παραμένει δεσμευμένος

int var; θεση/διεύθυνση: τύπος: int διεύθυνση τύπος int μέγεθος: 2 btes ερμηνεία: ακέραιος κωδικοποίηση: 2 s complement τι τιμή έχει η μεταβλητή var; διάβασε από τη διεύθυνση της var όσα btes ορίζει ο τύπος της T (π.χ. int), και ερμήνευσέ τα σύμφωνα με τη σύμβαση κωδικοποίησης του T περιεχόμενα 0 0 0 0 0 2 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0... Ν- 0 0 0 0 0 0 Ν 0 0 0 αποτέλεσμα = 2 (για little-endian) 6

Little-endian vs. big-endian Little-endian: η σημαντικότητα των btes αυξάνει όσο μεγαλώνουν οι διευθύνσεις το λιγότερο σημαντικό bte είναι στην μικρότερη διεύθυνση Big-endian: η σημαντικότητα των btes μειώνεται όσο μεγαλώνουν οι διευθύνσεις το πιο σημαντικό bte είναι στην μικρότερη διεύθυνση ακέραιος που καταλαμβάνει 2 btes, αρχίζοντας από την διεύθυνση k και έχει την τιμή 2 διευθύνσεις little-endian big-endian k k+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7

Διαφάνεια αποθήκευσης/κωδικοποίησης Ο προγραμματιστής δεν χρειάζεται να γνωρίζει το πώς ακριβώς αποθηκεύεται/κωδικοποιείται η πληροφορία στην μνήμη του υπολογιστή Η προσπέλαση των περιεχομένων των μεταβλητών του προγράμματος γίνεται με διαφανή τρόπο ένα από τα πλεονεκτήματα του να χρησιμοποιεί κανείς μια γλώσσα προγραμματισμού υψηλού επιπέδου Ο προγραμματιστής δεν καταλαβαίνει τη διαφορά όσο χρησιμοποιεί κανονικές πράξεις πρόσβασης Αυτό αλλάζει όταν χρησιμοποιείται γλώσσα μηχανής ή/και προσπελάζονται τα δεδομένα που βρίσκονται στη μνήμη με άμεσο τρόπο βλέπε αργότερα... 8

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

Πρόγραμμα / Γλώσσα προγραμματισμού Πρόγραμμα: εντολές γραμμένες σε μια συγκεκριμένη γλώσσα προγραμματισμού αυτή που «καταλαβαίνει» ο υπολογιστής με λίγη βοήθεια (ο υπολογιστής ξέρει μόνο από 0 και ) Γλώσσα προγραμματισμού: γλώσσα σχεδιασμένη για να δίνουμε εντολές στον υπολογιστή Σαν τις κανονικές γλώσσες, αλλά πολύ πιο τυπική περιορισμένο λεξιλόγιο σαφής σημασιολογία ξεκάθαρο συντακτικό 20

Συντακτικό Το συντακτικό ορίζει το σύνολο των επιτρεπτών προτάσεων (ακολουθία συμβόλων) Επιτρεπτή πρόταση = συντακτικά ορθό πρόγραμμα μπορεί να μεταφραστεί σε γλώσσα μηχανής και να εκτελεστεί στον υπολογιστή Ειδικές «γλώσσες» περιγραφής των κανόνων σύνταξης γλωσσών προγραμματισμού Etended Backus Naur Form (EBNF) συντακτικά διαγράμματα 2

Σύνταξη & σημασία Σύνταξη: κανόνες για τον σχηματισμό προτάσεων Σημασία: το νόημα που έχουν οι συντακτικά επιτρεπτές προτάσεις η σύνταξη μιας γλώσσας δεν μπορεί να ορίσει ταυτόχρονα και την σημασία της Υπάρχουν συντακτικά επιτρεπτές προτάσεις που δεν έχουν ορισμένη (μια μοναδική) σημασία; Στις ανθρώπινες γλώσσες: ναι! μαζί μιλάμε και χώρια καταλαβαινόμαστε Σε γλώσσες προγραμματισμού: (κατά κανόνα) όχι 22

Για παράδειγμα Συντακτικά ορθές προτάσεις -2+3 /-2 Όμως, σε τι τιμές αντιστοιχούν τα παρακάτω; -2+ (-2)+(3) ή (2+3) /- (/)-2 ή /(-2) 23

Μεταγλώττιση Κώδικας: μια σειρά εντολών προς τον υπολογιστή, γραμμένες με βάση μια γλώσσα προγραμματισμού Μεταγλώττιση: διαδικασία μετατροπής κώδικα από μια γλώσσα σε μια άλλη συνήθως από εντολές υψηλού επιπέδου σε εντολές μηχανής μια εντολή γλώσσας υψηλού επιπέδου μπορεί να αντιστοιχεί σε μια σειρά εντολών γλώσσας μηχανής Γίνεται από ειδικά προγράμματα, τους λεγόμενους μεταγλωττιστές (compilers) Η μεταγλώττιση γίνεται (συνήθως) ως ξεχωριστή διαδικασία, πολύ πριν αρχίσει η εκτέλεση του κώδικα υπάρχουν περιπτώσεις όπου η μετάφραση γίνεται ακριβώς πριν αρχίσει η εκτέλεση (just in time compilation) 24

εντολές γλώσσας compiler γλώσσα -> 00000 εντολές μηχανής CPU 2

Συμβάσεις εκτέλεσης Κάθε γλώσσα έχει συγκεκριμένες συμβάσεις για την αποτίμηση και εκτέλεση των εκφράσεων/προτάσεων Συνήθως «από αριστερά προς τα δεξιά» και «από πάνω προς τα κάτω» όπως γράφουμε/διαβάζουμε κείμενα (στον δυτικό κόσμο) Επίσης, μπορεί να γίνουν άλματα μέσα στον κώδικα είτε «προς τα εμπρός» είτε «προς τα πίσω» κάποιες εντολές μπορεί να παρακαμφθούν ή/και να εκτελεστούν παραπάνω από μια φορά Πραγματοποιούνται με ειδικές εντολές της γλώσσας εντολές ελέγχου ροής εκτέλεσης προγράμματος εντολές κλήσης υποπρογραμμάτων 29

Έλεγχος ροής εκτέλεσης Ο προγραμματιστής μπορεί να επηρεάσει την ροή εκτέλεσης του προγράμματος Mέσω εντολών ελέγχου Διαβάζουν την κατάσταση του προγράμματος και ανάλογα μπορεί να μεταφέρουν την εκτέλεση σε ένα διαφορετικό σημείο του κώδικα Μπορούμε να φτιάξουμε προγράμματα με εντολές που εκτελούνται υπό συνθήκη / επανειλημμένα 30

Εκτέλεση προγράμματος γράψιμο αρχικοποίηση κατάστασης διάβασμα εκτέλεση επόμενης εντολής μεταβλητές γράψιμο μνήμη επιλογή επόμενης εντολής 3

: : <- - 32

εκτέλεση P(0,) s?? : :?? <- - 33

εκτέλεση P(0,) s?? : : 0 <- - 34

εκτέλεση P(0,) s? : : 0 <- - 3

εκτέλεση P(0,) s? : : <- - 36 0

εκτέλεση P(0,) s 0 : : <- - 37 0

εκτέλεση P(0,) s 0 2 : : <- - 38 0

εκτέλεση P(0,) s 0 2 : : <- - 39 0

εκτέλεση P(0,) s 0 2 : : <- - 40 0

εκτέλεση P(0,) s 0 6 : : <- - 4 0

εκτέλεση P(0,) s 0 6 : : <- - 42 0

εκτέλεση P(2,) s?? : :?? <- - 43

εκτέλεση P(2,) s?? : : 2 <- - 44

εκτέλεση P(2,) s?? : : 2 <- - 4

εκτέλεση P(2,) s? : : 2 <- - 46

εκτέλεση P(2,) s? : : <- - 47 2

εκτέλεση P(2,) s 0 : : <- - 48 2

εκτέλεση P(2,) s 0 2 : : <- - 49 2

εκτέλεση P(2,) s 0 2 : : <- - 0 2

εκτέλεση P(2,) s 0 2 : : <- - 2

εκτέλεση P(2,) s 0 3 : : <- - 2 2

εκτέλεση P(2,) s 0 3 : : <- - 3 2

εκτέλεση P(2,) s 0 3 : : <- - 4 2

εκτέλεση P(2,) s 3 : : <- - 2

εκτέλεση P(2,) s 4 : : <- - 6 2

εκτέλεση P(2,) s 4 : : <- - <- - 7 2

εκτέλεση P(2,) s 4 : : <- - <- - 8 2

εκτέλεση P(2,) s 4 : : <- - <- - 9

εκτέλεση P(2,) s : : <- - <- - 60

εκτέλεση P(2,) s : : <- - <- - 6

εκτέλεση P(2,) s 2 : : <- - <- - 62

εκτέλεση P(2,) s 2 : : if ( is s <- s + <- if ( is <- - 63 0) goto 6 0) goto 6

εκτέλεση P(2,) s 2 : : if ( is s <- s + <- if ( is <- - 64 0) goto 6 0) goto 6

εκτέλεση P(2,) s 3 : : if ( is s <- s + <- if ( is <- - 6 0) goto 6 0) goto 6

εκτέλεση P(2,) s 3 : : if ( is s <- s + <- if ( is s <- s + <- - 66 0) goto 6 0) goto 6

εκτέλεση P(2,) s 3 : : if ( is s <- s + <- if ( is s <- s + <- - 67 0) goto 6 0) goto 6

εκτέλεση P(2,) s 0 : : if ( is s <- s + <- if ( is s <- s + <- - 68 3 0) goto 6 0) goto 6

εκτέλεση P(2,) s 0 : : if ( is s <- s + <- if ( is s <- s + <- - 69 4 0) goto 6 0) goto 6

εκτέλεση P(2,) s 0 : : if ( is s <- s + <- if ( is s <- s + <- - <- - 70 4 0) goto 6 0) goto 6

εκτέλεση P(2,) s 0 : : if ( is s <- s + <- if ( is s <- s + <- - <- - 7 4 0) goto 6 0) goto 6

εκτέλεση P(2,) 0 s 0 : : if ( is s <- s + <- if ( is s <- s + <- - <- - 72 4 0) goto 6 0) goto 6

εκτέλεση P(2,) 0 s 0 : : if ( is s <- s + <- if ( is s <- s + <- - <- - 73 0) goto 6 0) goto 6

εκτέλεση P(2,) 0 s 0 : : if ( is s <- s + <- if ( is s <- s + <- if ( is <- - 74 0) goto 6 0) goto 6 )

εκτέλεση P(2,) 0 s 0 : : if ( is s <- s + <- if ( is s <- s + <- if ( is <- - 7 2 0) goto 6 0) goto 6 )

εκτέλεση P(2,) 0 s 0 : : if ( is s <- s + <- if ( is s <- s + <- if ( is <- - 76 2 0) goto 6 0) goto 6 0) goto 6

εκτέλεση P(2,) 0 s 0 : : if ( is s <- s + <- if ( is s <- s + <- if ( is <- - 77 2 0) goto 6 0) goto 6 0) goto 6

εκτέλεση P(2,) 0 s 0 : : if ( is s <- s + <- if ( is s <- s + <- if ( is <- - 78 6 0) goto 6 0) goto 6 0) goto 6

εκτέλεση P(2,) 0 s 0 : : if ( is s <- s + <- if ( is s <- s + <- if ( is <- - 79 6 0) goto 6 0) goto 6 0) goto 6

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

πρόγραμμα P code A call P2 code B εκτέλεση P code A call P2 call P3 code D return code C return code B πρόγραμμα P2 call P3 code C return πρόγραμμα P3 code D return 8

Μεθοδολογία επίλυσης προβλημάτων Ανάλυση του προβλήματος τι δεδομένα έχουμε στην διάθεση μας; τι θέλουμε να βρούμε; πώς σπάει σε μικρότερα / απλούστερα προβλήματα; ποια στρατηγική πρέπει να ακολουθήσουμε; Σχεδιασμός αλγορίθμου ακριβής ακολουθία πεπερασμένων βημάτων που πρέπει να ακολουθηθούν για να λυθεί το πρόβλημα Απαιτήσεις ορθότητα, καλή επίδοση, εξοικομόμηση πόρων Για το ίδιο πρόβλημα πιθανόν να υπάρχουν περισσότεροι κατάλληλοι αλγόριθμοι 82

Παράδειγμα: γραμμική αναζήτηση Βρες τη θέση που υπάρχει (αν υπάρχει) η τιμή 0 ο βήμα 3 7 20 2 34 4 46 47 0 9 6 63 70 2ο βήμα 3 7 20 2 34 4 46 47 0 9 6 63 70 3ο βήμα 3 7 20 2 34 4 46 47 0 9 6 63 70 0ο βήμα 3 7 20 2 34 4 46 47 0 9 6 63 70 83

Παράδειγμα: δυαδική αναζήτηση Βρες τη θέση που υπάρχει (αν υπάρχει) η τιμή 0 ο βήμα 3 7 20 2 34 4 46 47 0 9 6 63 70 μέσο κάτω όριο 2ο βήμα πάνω όριο 3 7 20 2 34 4 46 47 0 9 6 63 70 μέσο κάτω όριο 3ο βήμα πάνω όριο 3 7 20 2 34 4 46 47 0 9 6 63 70 κάτω όριο 84 μέσο πάνω όριο

Αποσφαλμάτωση (debugging) Συντακτικό επίπεδο (εύκολο) ο κώδικας δεν αντιστοιχεί σε συντακτικά επιτρεπτή πρόταση ευκολάκι, νά' ναι καλά αυτός που έγραψε τον compiler Σημασιολογικό επίπεδο (δύσκολο) ο κώδικας είναι συντακτικά σωστός και εκτελείται (τρέχει) αλλά εμείς δεν χρησιμοποιούμε σωστά κάποια εντολή άλλο θέλουμε να κάνουμε και άλλο ζητάμε από τον υπολογιστή να κάνει: παράγεται λάθος αποτέλεσμα επίπονο, αλλά η κατάσταση βελτιώνεται με την εμπειρία Λογικό επίπεδο (πιο δύσκολο) ο κώδικας είναι συντακτικά και σημασιολογικά σωστός υπάρχει λάθος σε επίπεδο αλγορίθμου (σκέψης) το πιο δύσκολο, ακόμα και για πολύ έμπειρους 87

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

Χρονικό σημείο εντοπισμού λαθών Χρόνος μετάφρασης (compile time) ο εντοπισμός λαθών γίνεται από τον μεταγλωττιστή, αναλόγως με την γλώσσα προγραμματισμού π.χ. συντακτικά λάθη, λάθη ανάθεσης τιμών,... Χρόνος εκτέλεσης (run time / eecution time) ο εντοπισμός λαθών γίνεται από το περιβάλλον εκτέλεσης (λειτουργικό ή ακόμα και τον ίδιο τον επεξεργαστή) π.χ. προσπέλαση άκυρων διευθύνσεων, αριθμητικά λάθη,... Μετά την εκτέλεση ο εντοπισμός λαθών γίνεται από τον χρήστη ή ένα άλλο πρόγραμμα με βάση τα αποτελέσματα που παράγει το πρόγραμμα, χωρίς αυτό να έχει παρουσιάσει κάποιο «ορατό» λάθος 89

Ορθότητα (correctness) Ορθότητα: ο κώδικας υλοποιεί την επιθυμητή (προδιαγεγραμμένη) λειτουργικότητα για όλες τις δυνατές περιπτώσεις Το γεγονός ότι ο κώδικας μεταφράστηκε επιτυχώς (προφανώς) δεν συνεπάγεται ορθότητα Το γεγονός ότι ο μεταγλωττισμένος κώδικας εκελείται (τρέχει) δεν συνεπάγεται ορθότητα Το πρόγραμμα πάλι μπορεί να μην λειτουργεί σωστά να μην κάνει αυτό που θέλουμε, σε όλες τις περιπτώσεις Η εκτέλεση αυτή καθ αυτή γίνεται πάντα σωστά όπως ορίζεται από την σημασιολογία της γλώσσας προγραμματισμού δεν φταίει το «καταραμένο μηχάνημα» μπορεί να υπάρχουν σημασιολογικά ή/και λογικά λάθη 94

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