el:school:lessons:programmatismos:pascal:askisi4_if_then_else
Άσκηση 4 - If then else
ΑΝΟΙΓΜΑ ΕΡΓΟΥ - Αν δεν είναι ήδη ανοιχτό, θα ανοίξουμε το υπάρχον έργο agora και το αρχείο agora.pas
ΠΡΟΣΘΗΚΗ ΕΛΕΓΧΟΥ
Μετά τις τελευταίες αλλαγές στην άσκηση 3, δηλώσαμε μια νέα μεταβλητή pliromi_synolo (ή άλλο όνομα που διαλέξατε εσείς) και ζητήσαμε από τον χρήστη να εισάγει το συνολικό ποσό πληρωμής. Επίσης καλό είναι να δηλωθεί (αν δεν το κάνατε ήδη) και μια μεταβλητή kostos_synolo (ή άλλο περιγραφικό όνομα που σας αρέσει) στην οποία θα αποθηκευτεί το συνολικό κόστος και των 2 προϊόντων.
Τα συνολικά ρέστα υπολογίζονται με μια απλή αφαίρεση και αποθηκεύονται στην μεταβλητή resta_synolo (ή άλλο περιγραφικό όνομα που σας αρέσει)
ΠΡΟΒΛΗΜΑ : Αν ο χρήστης εισάγει ποσό μικρότερο από το συνολικό κόστος π.χ. 60€ αντί για τουλάχιστον 70€, εμείς θα του απαντήσουμε σαν να μην συμβαίνει τίποτα ότι τα ρέστα του είναι -10€ και θα φύγει σίγουρα ευχαριστημένος!
Θα πρέπει λοιπόν να ελέγξουμε το ποσό που μας δίνει. Ο έλεγχος θα γίνει με την εντολή
if και την σύγκριση των μεταβλητών και αν η πληρωμή είναι μικρότερη από το συνολικό κόστος, θα του εμφανίσουμε ένα μήνυμα ότι δεν μας έδωσε όλο το ποσό. Εισάγουμε :
if pliromi_synolo < kostos_synolo then
writeln('Παρακαλώ δώστε όλο το ποσό');
Αλλιώς,
(else), είμαστε εντάξει. Οπότε τις εντολές που υπολογίζουν τα συνολικά ρέστα και τα εμφανίζουν στην οθόνη θα τις βάλουμε μέσα στο αλλιώς
(else). Και επειδή είναι 2 εντολές θα τις βάλουμε μέσα σε
begin .. end if pliromi_synolo < kostos_synolo then
writeln('Παρακαλώ δώστε όλο το ποσό')
else
begin
resta_synolo:=pliromi_synolo - kostos_synolo;
writeln('Μου έδωσες ', pliromi_synolo, '€. Τα ρέστα σου είναι ', resta_synolo, '€');
end
Μετά το then, (τότε), είχαμε μία εντολή, οπότε δεν χρειαστήκαμε begin .. end. Θα μπορούσαμε να βάλουμε, αλλά είναι περιττό.
Επίσης η pascal έχει μία ιδιαιτερότητα στην σύνταξη, αν έχουμε μόνο μια εντολή πριν από το else δεν βάζουμε ερωτηματικό. Απλά θα το θυμόμαστε..
ΑΛΛΑΓΕΣ 1 - Ανάποδη συνθήκη
Αλλάζουμε την συνθήκη λοιπόν και μεταφέρουμε αντίστοιχα τις εντολές που θα εκτελεστούν αν ισχύει και αν δεν ισχύει.
Επίσης κάνουμε πιο περιγραφική την απάντηση Παρακαλώ δώστε όλο το ποσό. Το συνολικό κόστος είναι τόσα €. (Εννοείται ότι όπου τόσα Θα εμφανίσουμε την τιμή της μεταβλητής που περιέχει το συνολικό κόστος)
ΑΛΛΑΓΕΣ 2 - Ιδιαιτερότητες στην σύνταξη
Γράφουμε μία τελευταία εντολή μετά από όλη την if .. then .. else και πριν το END. που να εμφανίζει το κείμενο –»ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ«–
Μήπως η μεταγλώττιση απέτυχε; Αν ναί, ΠΡΟΣΟΧΗ!! Αν έχουμε 1 εντολή μετά το else βάζουμε στο τέλος ερωτηματικό, ενώ πριν είδαμε ότι με 1 εντολή μετά το then δεν βάζουμε
Στην τελευταία εντολή πριν το END. αφαιρέστε το ερωτηματικό. Ομοίως αφαιρέστε το και στην τελευταία εντολή πριν το end της συνθήκης.
Κάντε ξανά μεταγλώττιση. Γίνεται με επιτυχία! Πριν από κάθε end το ερωτηματικό είναι προεραιτικό!
ΑΛΛΑΓΕΣ 3 - Συντομότερες δηλώσεις
Έστω ότι είμαστε 10 άτομα και χωριζόμαστε σε 2 ομάδες για να παίξουμε κάποιο άθλημα. Τι θα λέγαμε; Ο Γιώργος είναι στην 1η ομάδα, ο Νίκος είναι στην 2η ομάδα, η Μαρία είναι στην 1η ομάδα, ο Τάσος είναι στην 1η ομάδα, η Χριστίνα είναι στην 2η ομάδα.. ;; Μάλλον θα λέγαμε : Ο Γιώργος, η Μαρία, ο Τάσος είναι στην 1η ομάδα. Ο Νίκος, η Χριστίνα είναι στην 2η ομάδα..
Πάμε να κάνουμε κάτι ανάλογο στις δηλώσεις, δηλώνοντας πολλές μεταβλητές ότι είναι ίδιου τύπου, χωρίζοντάς τις με , .
Στην Pascal ισχύει ότι οι δηλώσεις :
kostos_proion1 : integer;
kostos_proion2 : integer;
είναι όμοιες με τις δηλώσεις :
kostos_proion1, kostos_proion2 : integer;
Με τον παραπάνω τρόπο, μαζεύουμε όλες τις δηλώσεις που είναι 6-7 γραμμές, σε 2 γραμμές.
el/school/lessons/programmatismos/pascal/askisi4_if_then_else.txt · Last modified: Y/m/d H:i by vagk