Το 2011 στους Μηχανολόγους Θεσσαλονίκης πήρε το μάτι μου μια άσκηση σε FORTRAN. Τη μετέτρεψα σε ΓΛΩΣΣΑ. Μου άρεσε πάρα πολύ.
Στο παρακάτω πρόγραμμα έχει κατά λάθος διαγραφεί ο αφαιρετέος από τον δεύτερο έλεγχο της διαδικασίας callit. Παρόλα αυτά γνωρίζουμε οτι το πρόγραμμα τρέχει.
1. Αν δώσουμε ως στοιχείο εισόδου τον αριθμό 22 ποιό θα είναι το αποτέλεσμα που θα παράξει το πρόγραμμα;
2. Γνωρίζοντας οτι εαν δώσουμε ως είσοδο τον αριθμό 12 παράγεται ως αποτέλεσμα ο αριθμός 108. Ενώ αν δώσουμε το 10 παράγεται ως αποτέλεσμα ο αριθμός 10. Ποιά είναι η τιμή που έχει διαγραφεί;
Σημειώνεται πως η τιμή που έχει διαγραφεί είναι τέτοια ώστε στη διαδικασία callit όταν i=3 θα ισχύει ο πρώτος λογικός έλεγχος.
ΠΡΟΓΡΑΜΜΑ Ποιά_τιμή_λείπει
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x, y
ΑΡΧΗ
ΓΡΑΨΕ "Δώσε εναν αριθμό"
ΔΙΑΒΑΣΕ x
ΑΝ x >= 0 ΤΟΤΕ
y <- getit(x)
ΓΡΑΨΕ y
ΑΛΛΙΩΣ
ΓΡΑΨΕ "Λάθος Αριθμός"
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΣΥΝΑΡΤΗΣΗ getit(gx): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: gy, gx, gz
ΑΡΧΗ
gy <- gx
ΚΑΛΕΣΕ callit(gy, gz)
getit <- gy* gz
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
ΔΙΑΔΙΚΑΣΙΑ callit(cy, cz)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, cz, cy
ΑΡΧΗ
cz <- cy
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3 ΜΕ_ΒΗΜΑ 2
ΑΝ cz < 10 ΤΟΤΕ
cz <- cz^2
ΑΛΛΙΩΣ_ΑΝ cz < 14 ΤΟΤΕ
cz <- cz - .....
ΑΛΛΙΩΣ
cz <- cz*(-2)
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ