====== Άσκηση 2 - readln - μεταβλητές ====== * Στην προηγούμενη άσκηση ο Η/Υ με την εντολή **writeln** εμφάνισε/έγραψε ένα μήνυμα στην **οθόνη** (προκαθορισμένη έξοδος). * Με την εντολή **readln(μεταβλητη)** ο Η/Υ περιμένει από τον χρήστη να δώσει κάτι από το **πληκτρολόγιο** (προκαθορισμένη είσοδος). Ο Η/Υ λοιπόν **διαβάζει** από το πληκτρολόγιο και αποθηκεύει ότι του δίνει ο χρήστης σε μια **μεταβλητή** * Εμείς ορίζουμε ένα όνομα στην μεταβλητή που να ταιριάζει με αυτό που θα αποθηκευτεί. Π.χ. εάν ζητήσει ο Η/Υ το όνομά μας είναι λογικό να το αποθηκεύσει σε μια μεταβλητή **onoma** με την εντολή readln(onoma). * Οι μεταβλητές έχουν τύπους, ανάλογα με το τι αποθηκεύουμε κάθε φορά. * Το onoma είναι **κείμενο** ή αλλιώς συμβολοσειρά που στα αγγλικά λέγεται **string** * Η ηλικία είναι **ακέραιος** που στα αγγλικά λέγεται **integer** - **ΔΗΜΙΟΥΡΓΙΑ ΕΡΓΟΥ** - Θα δημιουργήσουμε το νέο έργο systaseis - Κάνουμε όμοιες ενέργειες με την προηγούμενη Άσκηση όπου hello τώρα ο τίτλος είναι systaseis - **ΕΝΤΟΛΕΣ** - Ανάμεσα στο **BEGIN .. END.** τοποθετούνται οι εντολές του προγράμματος. - Εμφανίζουμε το μήνυμα **Πως σε λένε;** με την εντολή που μάθαμε στην προηγούμενη άσκηση - Στην συνέχεια ζητάμε από τον χρήστη να πληκτρολογήσει κάτι που θα το αποθηκεύσουμε στην μεταβλητή **onoma**. Η εντολή είναι **readln(onoma);** - Τέλος με την παρακάτω εντολή θα εμφανίσουμε ένα μήνυμα μαζί με το όνομα που μας έδωσε ακριβώς πριν ο χρήστης. Η εντολή είναι **writeln('Γεια σου', onoma);** - **ΜΕΤΑΓΛΩΤΤΙΣΗ / ΕΚΤΕΛΕΣΗ** - Πηγαίνουμε **Build/Μεταγλώττιση** ή **F8** για να δημιουργηθεί από το **systaseis.pas** σε **pascal** το εκτελέσιμο πρόγραμμα **systaseis.exe** (στα Windows) ή **systaseis** (στο Linux) σε **γλώσσα μηχανής** - Η μεταγλώττιση απέτυχε! Μας βγάζει μήνυμα **Αποτυχία μεταγλώττισης** μαζί με τον λόγο **Error : Identifier not found "onoma"**. - Βλέπουμε τι σημαίνει αυτό στα [[el:school:lessons:programmatismos:pascal:minimata_lathous]] - Είναι η β) περίπτωση. **Προσπαθήσαμε να χρησιμοποιήσουμε την μεταβλητή onoma χωρίς να την έχουμε ορίσει στο var** - Κάθε μεταβλητή πρέπει να ορίζεται στο var ώστε να γνωρίζει ο υπολογιστής αν θα αποθηκεύσει σε αυτήν κείμενο, αριθμό ή κάτι άλλο. Την ορίζουμε κάτω από το var, γράφοντας **onoma : string;** - Ξαναπροσπαθούμε να κάνουμε μεταγλώττιση και εκτέλεση. - **ΔΙΟΡΘΩΣΕΙΣ / ΑΛΛΑΓΕΣ** - Βλέπουμε ότι μας υπογραμμίζεται η δήλωση **var i : byte;** Και στα μυνήματα μεταγλώττισης εμφανίζεται **Note: Local variable “i” not used** - Βλέπουμε τι σημαίνει αυτό στα [[el:school:lessons:programmatismos:pascal:minimata_lathous]] - Είναι η α) περίπτωση. **Ορίσαμε μια μεταβλητή στο var αλλά δεν την χρησιμοποιούμε οπότε μπορούμε να την διαγράψουμε από το var** - Η μεταβλητή i τύπου byte (μικρός ακέραιος) ορίστηκε μόνη της από το geany και δεν χρειάζεται. Διαγράφουμε το **i : byte;**. ΠΡΟΣΟΧΗ δεν διαγράφουμε το **var** είναι προσδιοριστικό για τις δηλώσεις. - Ξανακάνουμε μεταγλώττιση και εκτέλεση. Βλέπουμε ότι το Γεια σου είναι κολλητά με το όνομα. Κάντε μια αλλαγή στον κώδικα για να ξεκολλήσουν. - Προσθέστε στην ίδια γραμμή μετά το κείμενο **Γεια σου** και την μεταβλητή **onoma**, το κείμενο **. Χάρηκα για την γνωριμία**. - **ΠΡΟΣΘΗΚΕΣ** - Ωραία μάθαμε το όνομα του χρήστη, είμαστε περίεργοι να μάθουμε όμως και την ηλικία. Προσθέστε τον κατάλληλο κώδικα. - Δηλαδή δώστε ένα όνομα στην μεταβλητή που θα αποθηκεύσουμε την ηλικία π.χ. **ilikia** και να είναι τύπου **integer**. - Βάλτε τις εντολές στον κώδικα που θα ρωτάει τον χρήστη την ηλικία του, θα διαβάζει από το πληκτρολόγιο και θα εμφανίζει τέλος το μήνυμα ** Είσαι (ηλικία) χρονών. Εγώ είμαι μόλις 3**, όπου ηλικία θα μπει η τιμή της μεταβλητής που έβαλε ο χρήστης. - **ΕΝΤΟΛΗ write** - Η εντολή writeln έχει το χαρακτηριστικό ότι αφού εμφανίσει το μήνυμά της αλλάζει γραμμή. Κάποιες φορές όμως θέλουμε να παραμείνουμε στην ίδια γραμμή π.χ. ώστε να γράψει ο χρήστης το όνομά του δίπλα από το κείμενο **Πως σε λένε;** και όχι από κάτω. Ομοίως και όταν τον ρωτάμε την ηλικία του. Κάντε τις αλλαγές από writeln σε write στις 2 ερωτήσεις. ΠΡΟΣΟΧΗ! Μην κολλήσετε την απάντηση με την ερώτηση. ---- * **ΕΠΕΚΤΑΣΗ / ΑΣΚΗΣΗ ΓΙΑ ΤΟ ΣΠΙΤΙ** - Εμφάνιση ερώτησης **Τι ομάδα υποστηρίζεις;** και αποθήκευση της ομάδας σε μια μεταβλητή. - Εμφάνιση ερώτησης **Πόσα πρωταθλήματα έχετε πάρει;** και αποθήκευση του αριθμού σε μια μεταβλητή. - Εμφάνιση κειμένου **Εσύ είσαι οπαδός της ομάδας (omada) και έχετε πάρει (prwtathlimata) πρωταθλήματα. Εγώ είμαι οπαδός του Big Blue που κέρδισε το 1997 τον παγκόσμιο πρωταθλητή στο σκάκι Γκάρι Κασπάροβ**. Όπου (omada) και (prwtathlimata) οι αποθηκευμένες απαντήσεις που έδωσε ο χρήστης. * Πηγές : http://el.wikipedia.org/wiki/Deep_blue