HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Βασικές Έννοιες Προγραμματισμού
Κεφάλαιο Τμηματικός προγραμματισμός
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Σημειώσεις : Χρήστος Μουρατίδης
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 2: Πίνακες και δυναμικά δεδομένα στη FORTRAN 90 Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
ΜΑΘ3122/106 Γλώσσα Προγραμματισμού
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Παράδειγμα 2: Κινηματογράφοι Να γραφεί πρόγραμμα το οποίο:
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
Στο λειτουργικό σύστημα Windows, υπάρχουν εικονίδια (icons) τα οποία αναπαριστούν τις διάφορες οντότητες (φυλαγμένες πληροφορίες, προγράμματα που κάνουν.
1 ΕΝΤΟΛΕΣ ΠΛΗΡΟΦΟΡΙΩΝ ΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ ΘΕΣΗ ΣΗΜΕΙΟΥΘΕΣΗ ΣΗΜΕΙΟΥ ΑΠΟΣΤΑΣΗΑΠΟΣΤΑΣΗ ΕΜΒΑΔΟΝΕΜΒΑΔΟΝ.
ΕΚΠΑΙΔΕΥΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ ΤΗΣ ΕΥΡΥΤΕΡΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΔΙΑΦΟΡΕΤΙΚΟ ΛΟΓΙΣΜΙΚΟ ΓΙΑ ΚΑΘΕ ΠΤΥΧΗ ΤΟΥ Κάππας Κων/νος Επιμορφωτής ΤΠΕ -
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
ΣΥΝΑΡΤΗΣΕΙΣ.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Ενότητα Α.4. Δομημένος Προγραμματισμός
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Δηλαδή οι σημαντικοί δεν ασχολούνται με μικροπράγματα.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Κεφάλαιο 10 – Υποπρογράμματα
Κάντε κλικ για έναρξη… Τ Ο ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ Κέντρο εντολών Χώρος γραφικών (σελίδα) Χώρος σύνταξης διαδικασιών.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Γλώσσα Προγραμματισμού MicroWorlds Pro
2η άσκηση Να γραφεί πρόγραμμα που θα ζητάει τους a,b συντελεστές και τους δύο πρώτους όρους x 1, x 2 της αναγωγικής ακολουθίας x n = ax n-1 +bx n-2 και.
Βασικά στοιχεία της Java
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Κωνσταντίνος Στεφανίδης,
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ενότητα 12 : Η χρήση της MySQL στο Ηλεκτρονικό εμπόριο (ΙΙI) Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Ενότητα 7 : Χρήση Πινάκων στο Ηλεκτρονικό εμπόριο (I) Ιωάννης Τσούλος
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Πληροφοριακά Συστήματα Διοίκησης MIS
Ενισχυτική διδασκαλία
Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Η Γλώσσα Pascal Υποπρογράμματα
Κανονικοπηση(normalization)
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
3.2 Μεταβλητές και τύποι δεδομένων
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Β.ΕΠΑΛ-Γενικής Παιδείας  ΜΑΘΗΜΑ: Εισαγωγή στης αρχές Επιστήμης των Η/Υ  ΚΕΦΑΛΑΙΟ 4: Γλώσσες Αναπαράστασης Αλγορίθμων  ΕΝΟΤΗΤΑ 4.2: Δομή Ακολουθίας 
Μεταγράφημα παρουσίασης:

HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος Νικολάου

ΕΝΟΤΗΤΑ Ι ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διάλεξη 3η

Τύποι μεταβλητών (1/16) Όπως είδαμε, μπορούμε να χρησιμοποιήσουμε θέσεις του τετραδίου με συμβολικά ονόματα. Προφανώς επιλέγουμε ονόματα που είναι αντιπροσωπευτικά του ρόλου ή συμβολισμού που λαμβάνει στο πρόβλημα και στην αντίστοιχη λύση κάθε χρησιμοποιούμενη θέση του τετραδίου –Π.χ. στο προηγούμενο πρόγραμμα, έκδοση Λύση 1, ονομάσαμε το τμήμα των τριών θέσεων Numbers και όχι Names, ή Cars, η οτιδήποτε άλλο, διότι γνωρίζουμε ότι αριθμούς πρόκειται να αποθηκεύσουμε. Η χρήση των συμβολικών ονομάτων βοηθά στην ευκολότερη ανάγνωση και κατανόηση ενός προγράμματος, καθώς υπάρχουν μέσα ονομασίες απευθείας αναγνωρίσιμες από το χώρο του προβλήματος –Ο υπηρέτης δεν ενδιαφέρεται καθόλου για κάτι τέτοιο, αφού ούτως ή άλλως θα αντιστοιχίσει κάθε συμβολικό όνομα σε θέση τετραδίου κατά την εκτέλεση των εντολών του εγγράφου εργασιών

Τύποι μεταβλητών (2/16) Στη λύση ενός προβλήματος προγραμματισμού, γνωρίζουμε τι τύπου περιεχόμενο έχει κάθε θέση του τετραδίου εκ των προτέρων (π.χ. αριθμός ή κείμενο). Για το σκοπό αυτό ο υπηρέτης δίνει κάποιες επιπλέον δυνατότητες που κάνουν τη ζωή μας ως προγραμματιστή σημαντικά ευκολότερη –Μπορούμε να δηλώσουμε συμβολικά ονόματα για θέσεις του τετραδίου αναφέροντας και τον τύπο του περιεχομένου –Επίσης, δεν είναι αναγκαίο πια να αναφέρουμε και τη θέση του τετραδίου που θα καταλαμβάνει η κάθε μεταβλητή που χρησιμοποιούμε στο πρόγραμμα Ο υπηρέτης φροντίζει μόνος του να βρίσκει διαθέσιμες σειρές του τετραδίου και να τις αντιστοιχεί στα συμβολικά ονόματα που του υποδεικνύουμε

Τύποι μεταβλητών (3/16) Π.χ, όταν θέλουμε να χρησιμοποιήσουμε θέση του τετραδίου για αποθήκευση ακεραίου αριθμού με το συμβολικό όνομα x γράφουμε από τώρα απλώς το εξής: –INTEGER x; –Όταν ο υπηρέτης διαβάσει κάτι τέτοιο: κοιτάει στο τετράδιο και χρησιμοποιεί την πρώτη ελεύθερη θέση για το x (σχεδόν πάντα η θέση είναι και προβλέψιμη) σημειώνοντας επιπλέον ότι πρόκειται για INTEGER (ακέραιο) –αυτό το κάνει για να εφαρμόσει αυστηρό έλεγχο ως προς το περιεχόμενο που πρόκειται να αποθηκευτεί κατά την εκτέλεση του προγράμματος στη θέση αυτή (το οποίο θα πρέπει να είναι ακέραιος)] –εάν κάποια στιγμή πάμε να αποθηκεύσουμε κάτι άλλο, θα οδηγηθούμε σε runtime error –Το παραπάνω συντακτικά και σημασιολογικά ονομάζεται δήλωση μεταβλητή συγκεκριμένου τύπου

Ένθετο – δήλωση μεταβλητής Η δήλωση της μεταβλητής. Καθώς ξέρουμε ότι δεν υπάρχει χρήση καμίας άλλης θέσης του τετραδίου μπορούμε να προβλέψουμε ότι θα πάει στη θέση (0,0) Εδώ πρέπει να δώσουμε αριθμό. Αλλιώς ο υπηρέτης θα διακόψει την εκτέλεση. Τι γίνεται εδώ? Προσπαθούμε με πονηριά να γράψουμε στο x κάτι που δεν είναι όμως ακέραιος Ο υπηρέτης μας πληροφορεί ότι η θέση (0,0) είναι «κατειλημμένη» από μεταβλητή (VAR) τύπου INTEGER και ότι η τιμή που πάμε να γράψουμε δεν είναι τύπου INTEGER

Τύποι μεταβλητών (4/16) Να δούμε ένα παράδειγμα αρκετών δηλώσεων μεταβλητών, παρουσιάζοντας ακριβώς τι κάνει ο υπηρέτης INTEGER x; INTEGER y; INTEGER a = 10, b = 20; x0INTEGER y0 a10INTEGER b20INTEGER ,0 0,1 0,2 0,3 0,4 0,5. Θέση Όνομα Περιεχόμενο Χρήση Τύπος Βλέπουμε ότι στο τετράδιο κρατάει και άλλη πληροφορία, κάνοντας αυτόματες «κρατήσεις θέσεων» για τις μεταβλητές.Βλέπουμε ότι στο τετράδιο κρατάει και άλλη πληροφορία, κάνοντας αυτόματες «κρατήσεις θέσεων» για τις μεταβλητές. Θυμόμαστε πάντα ότι εφόσον μία μεταβλητή οριστεί με τέτοιο τρόπο, ο υπηρέτης θα θεωρήσει ως runtime error την προσπάθεια αποθήκευσης περιεχομένου άλλου τύπου Όλα αυτά τα κάνει πριν αρχίσει να εκτελείται το πρόγραμμά μας.Όλα αυτά τα κάνει πριν αρχίσει να εκτελείται το πρόγραμμά μας.

Τύποι μεταβλητών (5/16) Κάθε τύπος Τ αντιπροσωπεύει ένα συγκεκριμένο πεδίο τιμών D, τις οποίες μπορούμε να αποθηκεύσουμε σε μεταβλητές (δηλ. στη θέση του τετραδίου που καταλαμβάνει η μεταβλητή). Οι απλοί τύποι μεταβλητών που υποστηρίζονται στη γλώσσα Flip του υπηρέτη μας είναι: –Ακέραιος, INTEGER, π.χ. 1, -56, 32 20, 0, +2 –Πραγματικός, REAL, π.χ. 1, 1.345, ½, , –Χαρακτήρας, CHARACTER, π.χ. ‘α’, ’a’, ’!’, ‘*’, ‘+’, ‘-’ –Ομάδα χαρακτήρων, STRING, π.χ. «Δευτέρα», «20», «(α,β)» –Λογική τιμή, BOOLEAN, π.χ. TRUE ή FALSE  Οι τύποι αυτοί λέγονται απλοί διότι καταλαμβάνουν πάντα μόνο μία θέση του τετραδίου για αποθήκευση τιμής

Τύποι μεταβλητών (6/16) Θα χρησιμοποιούμε πολύ συχνά τον όρο μεταβλητή - να μην ξεχνάμε λοιπόν περί τίνος πρόκειται: –Ως μεταβλητές χαρακτηρίζουμε όλα τα τμήματα μνήμης, δηλ. σειρές στο πρόχειρο τετράδιο, τις οποίες: τις χρησιμοποιούμε στο πρόγραμμα για να αποθηκεύσουμε “κάτι” έχουν πάντα έναν συγκεκριμένο και αμετάβλητο τύπο δεδομένων και ένα μοναδικό αναγνωριστικό συμβολικό όνομα επιλογής μας –Ο όρος μεταβλητή δείχνει ότι το περιεχόμενό τους (δηλ. το περιεχόμενο των αντιστοίχων θέσεων τετραδίου) μεταβάλλεται από το πρόγραμμα αλλά πάντοτε σύννομα του τύπου της –Όλες οι παράμετροι ενός προβλήματος, μέσα στο πρόγραμμά μας, θα αντιστοιχούν πάντα σε μεταβλητές

Τύποι μεταβλητών (7/16) Σύνθετοι τύποι –Αντιπροσωπεύουν συνεχόμενες σειρές μνήμης, με τυποποιημένη δομή ως προς την οργάνωση των περιεχόμενων τιμών –Ορίζονται ως Ν-άδες τύπων της μορφής, όπου για κάθε τιμή πρέπει να ισχύει:  i, N  i  1, V i  D(Τ i ) –Δηλ. γενικά οι σύνθετοι τύποι ομαδοποιούν Ν τιμές, ενδεχομένως διαφορετικών τύπων, σε μία λογική οντότητα γιατί κάτι τέτοιο μας διευκολύνει πολύ προγραμματιστικά στην αποθήκευση και χρήση σύνθετων παραμέτρων  Ο χώρος που καταλαμβάνει ο σύνθετος τύπος είναι, όπως άλλωστε αναμένεται, το συνολικό άθροισμα του χώρου που καταλαμβάνει ο κάθε περιεχόμενος τύπος

Τύποι μεταβλητών (8/16) Πίνακας, ARRAY –Απλός ορισμός: ARRAY(Τ τύπος στοιχείου, Ν μέγεθος ) Όνομα Αντιπροσωπεύει ακολουθία από Ν ελεύθερες διατεταγμένες θέσεις (όχι απαραίτητα συνεχόμενες) μνήμης για αποθήκευση τιμών του σύνθετου τύπου Τ. Το στοιχείο i, N  i  0, ενός πίνακα P, αναφέρεται συντακτικά ως P[i] Προσοχή, το N είναι σταθερός ακέραιος αριθμός (δηλ. δεν είναι τιμή μεταβλητής, αλλά συγκεκριμένη αριθμητική τιμή όπως 10, 56, κλπ) Προς το παρόν μιλάμε μόνο για μονοδιάστατους πίνακες, που τους βλέπουμε ως ακολουθία στοιχείων –Παραδείγματα ARRAY(INTEGER, 10) Number; ARRAY(STRING, 30) Names; ARRAY(CHARACTER, 7) Vowels;

Τύποι μεταβλητών (9/16) Πως ο υπηρέτης κρατάει θέσεις τετραδίου στην περίπτωση δήλωσης ενός πίνακα (1/2) ARRAY(INTEGER,5) Numbers; ARRAY(STRING,3) Names; -0INTEGER Numbers, INTEGER, ARRAY, 5, Αρχή(0,0) 0,0 0,1 0,2 0,3 0,4Θέση Όνομα Περιεχόμενο Χρήση Τύπος -“”STRING -“”STRING -“”STRING Names, STRING, ARRAY, 3, Αρχή(0,5) 0,5 0,6 0,7 Αφού ο υπηρέτης «τακτοποιήσει» τις κρατήσεις θέσεων, σημειώνει και την θέση στην οποία αρχίζει ο πίνακας.Αφού ο υπηρέτης «τακτοποιήσει» τις κρατήσεις θέσεων, σημειώνει και την θέση στην οποία αρχίζει ο πίνακας. Σημειώνει επίσης και τα τμήματα του τετραδίου που χρησιμοποιεί για την αποθήκευσή του, εάν δεν βρίσκει συνεχές τμήμα.Σημειώνει επίσης και τα τμήματα του τετραδίου που χρησιμοποιεί για την αποθήκευσή του, εάν δεν βρίσκει συνεχές τμήμα. Η θέση του στοιχείου P[j] ενός πίνακα συνεχόμενων θέσεων στο τετράδιο βρίσκεται από τον υπηρέτη ως εξής: Αρχή(P)+jΗ θέση του στοιχείου P[j] ενός πίνακα συνεχόμενων θέσεων στο τετράδιο βρίσκεται από τον υπηρέτη ως εξής: Αρχή(P)+j Numbers[3] είναι το POSITION(0, 0+3)Numbers[3] είναι το POSITION(0, 0+3) Names[2] είναι το POSITION(0,5+2)Names[2] είναι το POSITION(0,5+2)

Τύποι μεταβλητών (10/16) Πως ο υπηρέτης κρατάει θέσεις τετραδίου στην περίπτωση δήλωσης ενός πίνακα (2/2) –Την προηγούμενη διάταξη μπορούμε να τη διαπιστώσουμε χρησιμοποιώντας τη βοηθητική συνάρτηση POSITIONOF που προσφέρει ο υπηρέτης (θα πούμε αργότερα περισσότερα για συναρτήσεις) για να λαμβάνουμε τη θέση που παίρνει αυτόματα μία μεταβλητή του προγράμματος (ανεξαρτήτως τύπου της μεταβλητής) ARRAY(INTEGER,5) Numbers; ARRAY(STRING,3) Names; INTEGER x; PROGRAM_BEGIN OUTPUT(POSITIONOF(Numbers)); OUTPUT(POSITIONOF(Names)); OUTPUT(POSITIONOF(x)); PROGRAM_END Βλέπουμε ότι φαίνεται ξεκάθαρα η πλήρης συμφωνία της αυτόματης κράτησης θέσεων με την μέθοδο που περιγράψαμε

Ένθετο – παράδειγμα πινάκων (1/4) (0,0)Numbers[0] (0,1)Numbers[1] (0,2)Numbers[2] (0,3)Numbers[3] (0,4)Numbers[4] (0,5)Names[0] (0,6)Names[1] (0,7)Names[2] (0,8)x POSITIONOF(Numbers) POSITIONOF(Names) POSITIONOF(x)

Ένθετο – παράδειγμα πινάκων (2/4) (0,0)r1[0] (0,1)r1[1] (0,2)r1[2] (0,3)Numbers[0] (0,4)Numbers[1] (0,5)Numbers[2] (0,6)r2[0] (0,7)r2[1] (0,8)r2[2] (0,9)Numbers[3] (0,10)w (0,11)Numbers[4] Αυτό που φαίνεται από το παράδειγμα ξεκάθαρα είναι η ικανότητα του υπηρέτη να προσδιορίζει τη βέλτιστη χρήση του τετραδίου και να μπορεί να αποθηκεύει πίνακες σε μη συνεχόμενες σειρές.

Ένθετο – παράδειγμα πινάκων (3/4) Πώς ο υπηρέτης καταφέρνει να χειρίζεται πίνακες οι οποίοι αποθηκεύονται σε μη συνεχόμενα τμήματα του τετραδίου?

Ένθετο – παράδειγμα πινάκων (4/4)

Τύποι μεταβλητών (11/16) Εγγραφή ή RECORD –Γενικός συμβολισμός RECORD Όνομα RECBEGIN Τ 1 Όνομα 1, …, Τ Ν Όνομα Ν RECEND; –Ορίζει ένα νέο τύπο που αντιπροσωπεύει Ν ελεύθερες διατεταγμένες θέσεις (όχι απαραίτητα συνεχόμενες) μνήμης, με τύπο Τ i για τη θέση i –Παραδείγματα RECORD Point RECBEGIN INTEGER x, y; RECEND; RECORD Line RECBEGIN REAL a, b; RECEND; RECORD Student RECBEGIN STRING name; REAL grade; RECEND; Μην ξεχνάτε το ; στο τέλος, μετά το RECEND, ποτέ!!!  Προσοχή: με τα παραπάνω δεν δηλώνουμε καμία μεταβλητή, αλλά ορίζουμε έναν νέο τύπο. Μετά θα δούμε πως δηλώνουμε μεταβλητές αυτού του νέου τύπου.

Τύποι μεταβλητών (12/16) Τι κάνει ο υπηρέτης όταν του ορίσουμε έναν τέτοιο νέο τύπο εγγραφής; ο υπηρέτης το βλέπει σαν την περιγραφή ενός νέου τύπου που αντιπροσωπεύει «πακέτο» μεταβλητών κάτω από την ίδια ομπρέλα. Έτσι, εκτός από INTEGER, ARRAY, κλπ, τώρα γνωρίζει και το Point και κάνει τα εξής για να υποστηρίξει δηλώσεις μεταβλητών αυτού του νέου τύπου: RECORD Point RECBEGIN INTEGER x,y; RECEND; RECORD, Point, Μέγεθος 2 θέσεις Όνομα πεδίουΤύπος πεδίουΣχετική θέση xINTEGER0 y 1 Παράγει μία φόρμα με πληροφορία σχετικά με το μέγεθος, περιεχόμενα πεδία, τύπους και σχετική θέση κάθε πεδίου στην εγγραφή. Έτσι, όταν δηλωθούν μεταβλητές τύπου Point θα γνωρίζει ακριβώς πόσες θέσεις τετραδίου απαιτούνται και που θα τοποθετήσει κάθε πεδίο.

Τύποι μεταβλητών (13/16) Τι κάνει ο υπηρέτης όταν δηλώσουμε μεταβλητές τύπου εγγραφής (που έχουν οριστεί σε προηγούμενο σημείο του προγράμματος). Point a, b; -0INTEGER -0 a, Point, RECORD, 2, Αρχή(0,0) 0,0 0,1Θέση Όνομα Περιεχόμενο Χρήση Τύπος -0INTEGER -0 b, Point, RECORD, 2, Αρχή(0,2) 0,2 0,3 Βλέπουμε ότι ο τρόπος που κάνει κρατήσεις θέσεων είναι παρόμοιος με τους πίνακες.Βλέπουμε ότι ο τρόπος που κάνει κρατήσεις θέσεων είναι παρόμοιος με τους πίνακες. Πάλι μπορούμε να διαπιστώσουμε με πρόγραμμα ότι όντως έτσι κάνει ο υπηρέτης.Πάλι μπορούμε να διαπιστώσουμε με πρόγραμμα ότι όντως έτσι κάνει ο υπηρέτης. OUTPUT(POSITIONOF(a) ); OUTPUT(POSITIONOF(b) );

Τύποι μεταβλητών (14/16) Πως γίνεται η πρόσβαση στα περιεχόμενα / πεδία μίας μεταβλητής τύπου εγγραφής και πως ο υπηρέτης υπολογίζει σε ποια θέση γίνεται αναφορά κάθε φορά –Για μεταβλητή α τύπου εγγραφής Α, με πεδίο β τύπου Β, η έκφραση α.β αναφέρεται στη θέση του τετραδίου που αντιστοιχεί ακριβώς στο πεδίο β. –Α. Εάν όλη η εγγραφή αποθηκεύεται σε συνεχόμενο τμήμα του τετραδίου, τότε η θέση του α.β υπολογίζεται από τον υπηρέτη ως εξής: Θέση(α.β) = Θέση(α) + Σχετική θέση(β στο Α) –Β. Εάν η εγγραφή αποθηκεύεται σε διάφορα τμήματα του τετραδίου, τότε η θέση του α.β υπολογίζεται από τον υπηρέτη ως εξής: Θέση(α.β) = Θέση πεδίου(Σχετική θέση β στο Α, α) Στην περίπτωση αυτή σε κάθε εγγραφή που αποθηκεύεται υπάρχει και μία ειδική σημείωση από τον υπηρέτη για την θέση του κάθε πεδίου στο τετράδιο

Ένθετο – αποθήκευση εγγραφών (1/2) Πώς ο υπηρέτης καταφέρνει να χειρίζεται εγγραφές οι οποίες αποθηκεύονται σε μη συνεχόμενα τμήματα του τετραδίου?

Ένθετο – αποθήκευση εγγραφών (2/2)

Τύποι μεταβλητών (15/16) -0INTEGER -0 a, Point, RECORD, 2, Αρχή(0,0) 0,0 0,1Θέση Όνομα Περιεχόμενο Χρήση Τύπος RECORD, Point, Μέγεθος 2 θέσεις Όνομα πεδίουΤύπος πεδίουΣχετική θέση xINTEGER0 y 1 Πως γίνεται η πρόσβαση στα περιεχόμενα / πεδία μίας μεταβλητής τύπου εγγραφής και πως ο υπηρέτης υπολογίζει σε ποια θέση γίνεται αναφορά κάθε φορά a.x Αρχή Σχετική θέση ΠΕΡΙΠΤΩΣΗ Α

Τύποι μεταβλητών (16/16) Και πάλι η διαπίστωση γίνεται με ένα απλό πρόγραμμα RECORD Point RECBEGIN INTEGER x,y; RECEND; Point a; PROGRAM_BEGIN OUTPUT(POSITIONOF(a)) ; OUTPUT(POSITIONOF(a.x )); OUTPUT(POSITIONOF(a.y )); PROGRAM_END; ΠΕΡΙΠΤΩΣΗ Α

«Αριθμητική» θέσεων τετραδίου Όταν γράφουμε Θέση(i, j) + n, δηλ. n θέσεις τετραδίου μετά την θέση στη σελίδα i και σειρά j, εννοούμε τον παρακάτω υπολογισμό: –Θέση(i + (j+n) / 60, (j+n) mod 60) –Ειδικότερα, π.χ, Θέση(0,45)+32 σημαίνει Θέση(0,77) –Αλλά επειδή κάθε σελίδα έχει ακριβώς 60 σειρές,η σειρά 77 είναι μπροστά μία σελίδα και 17 σειρές, όπότε ουσιαστικά έχουμε Θέση(1, 17) –Θέση(0,45)+32 = Θέση(0+(45+32)/60, (45+32) mod 60) = Θέση(0+77/60, 77 mod 60) = Θέση(0+1, 17) = Θέση(1,17)