el:school:lessons:programmatismos:pascal:askisi8_repeat_until
Άσκηση 8 - Repeat Until, const και επανάληψη προηγουμένων
Στην προηγούμενη άσκηση είδαμε την χρήση της case με πολλές εντολές, ακέραια διαίρεση και υπόλοιπο, τον τύπο μεταβλητής real και πως εμφανίζεται με την writeln
Στην νέα άσκηση θα δούμε επιπλέον τα εξής :
Χρήση const για δήλωση σταθερών - αποθηκευμένες μεταβλητές που δεν αλλάζουν τιμή.
Επαναληπτική εκτέλεση εντολών μέχρι κάποια συνθήκη εξόδου με repeat .. until
Επανάληψη των προηγουμένων - mod, real if .. then .. else κτλ.
ΑΝΟΙΓΜΑ ΕΡΓΟΥ - Αν δεν είναι ήδη ανοιχτό, θα ανοίξουμε το υπάρχον έργο epiloges και το αρχείο epiloges.pas
ΠΡΟΣΘΗΚΗ 1 - χρήση const
Στην θέση του x θα βάλουμε και στις 2 περιπτώσεις μια μεταβλητή π.χ. pliktro_exodou. Γνωρίζουμε πως βάζουμε μεταβλητές σε μια writeln και προσοχή πως θα την βάλουμε στην επιλογή της case.
Δεν θα ορίσουμε το
pliktro_exodou ως μεταβλητή στο var. Θα την ορίσουμε ως
σταθερά const. Κάτω από το
uses και πάνω από το
var εισάγουμε
const
pliktro_exodou = 'x';
Μεταγλωττίζουμε το πρόγραμμα και ως χρήστης πατάμε x για έξοδο. Λειτουργεί όπως πριν;
Έστω ότι θέλουμε να αλλάξουμε το πλήκτρο εξόδου από x σε q (από το quit). Αλλάξτε το.
Πριν θα αλλάζαμε σε 2 σημεία τον κώδικα. Φανταστείτε να υπήρχε το x σε 5 ή περισσότερα σημεία. Τώρα αλλάζουμε μόνο ένα. Αυτή είναι μία από τις χρησιμότητες των σταθερών.
Οι σταθερές έχουν επίσης την ασφάλεια ότι από την αρχή μέχρι το τέλος του προγράμματος κρατάνε την ίδια τιμή. Δεν μπορούμε μέσα στο πρόγραμμα να βάλουμε πιο μετά pliktro_exodou:= 'z';, οπότε προστατευόμαστε από πιθανά λάθη μας.
ΠΡΟΣΘΗΚΗ 2 - mod και if..then..else
Φτιάχνουμε λοιπόν τον κώδικα της επιλογής 3 ώστε να ζητάμε από τον χρήστη έναν αριθμό και να τον αποθηκεύουμε σε μία μεταβλητή π.χ. akeraios3.
Το mod δηλαδή το υπόλοιπο της διαίρεσης ενός αριθμού με το 2 θα είναι είτε 0 είτε 1. Χρησιμοποιήστε σε μια if την πράξη akeraios3 mod 2. Αν είναι 0 εμφανίστε Ο αριθμός τάδε είναι ζυγός (όπου τάδε η αντίστοιχη μεταβλητή). Αλλιώς εμφανίστε Ο αριθμός τάδε είναι μονός. Δείτε την άσκηση 5 - ergasia για να θυμηθείτε την if.
ΠΡΟΣΘΗΚΗ 3 - Δομή επανάληψης repeat .. until
Το πρόγραμμά μας εκτελείται 1 μόνο φορά, κάνει μία από τις 3 επιλογές ή στην 4η επιλογή δεν κάνει τίποτα. Θα ήταν πιο ωραίο εάν επαναλάμβανε την εκτέλεσή του ξανά και ξανά και τερμάτιζε μόνο στην 4η επιλογή εάν δηλαδή πατάγαμε το πλήκτρο εξόδου.
Για να το κάνουμε αυτό θα βάλουμε όλο τον κώδικα του προγράμματος μέσα σε μια repeat .. until.
Κάτω από το 1ο BEGIN όλου του προγράμματος βάζουμε ως 1η εντολή repeat.
Επιλέγουμε όλο τον κώδικα κάτω από το repeat χωρίς το τελευταίο END. και πατάμε TAB ώστε να στοιχηθεί μία θέση δεξιά.
Τέλος πάνω από το
END. γράφουμε
until.
BEGIN
repeat
textcolor(lightgreen);
textbackground(blue);
..
.. {Το υπόλοιπο πρόγραμμα}
..
else writeln('Λάθος επιλογή');
end;
until
END.
Στην
until πρέπει να βάλουμε την συνθήκη στην οποία θα τερματίσει το πρόγραμμά μας. Αυτή είναι όταν πατήσουμε σαν χρήστης το πλήκτρο εξόδου π.χ.
q. Αυτό αποθηκεύεται στην μεταβλητή
epilogi. Οπότε η
until θα γίνει:
until epilogi=pliktro_exodou;
Το πρόγραμμά μας κάνει την επανάληψη αλλά αν έχουμε στην αρχή της
repeat την εντολή
clrscr() που καθαρίζει την οθόνη δεν προλαβαίνουμε να δούμε τα αποτελέσματα.
Πάνω λοιπόν από την
until πριν ξαναγυρίσει το πρόγραμμα στην αρχή της
repeat, βάζουμε τις εξής εντολές:
writeln('Πατήστε ENTER');
readln;
until epilogi=pliktro_exodou;
BONUS
Για να κάνουμε πιο ωραίο το πρόγραμμά μας μπορούμε να βάλουμε μια clrscr(); πριν τα μηνύματα στην Οθόνη Διαίρεση Ακεραίων, Διαίρεση Πραγματικών και Μονά Ζυγά
ΠΡΟΣΘΗΚΗ 4 - νέα επίλογή στην case
Θα εισάγουμε μια νέα επιλογή στο μενού 4. Χλμ σε μίλια. Την προσθέτουμε μαζί με τις άλλες writeln που εμφανίζουν το μενού.
Εισάγουμε την νέα επιλογή στην case.
Θα ζητήσουμε από τον χρήστη να μας δώσει τα χλμ. Ότι πληκτρολογήσει θα το βάλουμε σε μια μεταβλητή km
Τα μίλια υπολογίζονται εάν διαιρέσουμε τα χλμ με 1.609. Τα υπολογίζουμε και τα βάζουμε σε μια μεταβλητή milia. (Δείτε και τις εντολές στην Διαίρεση Πραγματικών).
Τέλος θα εμφανίσουμε το μήνυμα Τα τόσα χλμ είναι τόσα μίλια. (όπου τόσα οι αντίστοιχες μεταβλητές). Εμφανίζουμε 1 δεκαδικό ψηφίο στις μεταβλητές. χωρίς στοίχιση. (Όπως στις εντολές στην Διαίρεση Πραγματικών - Άσκηση 7)
Το 1.609 είναι τα χλμ που αντιστοιχούν σε 1 μίλι. Είναι μια τιμή που δεν αλλάζει. Θα την ορίσουμε λοιπόν ως μια σταθερά με όνομα km_ana_mili.
el/school/lessons/programmatismos/pascal/askisi8_repeat_until.txt · Last modified: Y/m/d H:i by vagk