ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Στόχοι Εξάσκηση στη βασική είσοδο / έξοδο Εξάσκηση στη χρήση μεταβλητών Φορμαρισμένη είσοδος και έξοδος Δομές ελέγχου Δομές επανάληψης ΑΠΑΓΟΡΕΥΕΤΑΙ ΑΥΣΤΗΡΑ Η ΧΡΗΣΗ goto. Πριν ξεκινήσετε Πηγαίνετε στο φάκελο ce120 και κατασκευάστε μέσα σε αυτόν ένα φάκελο με όνομα lab5. Μέσα σε αυτό το φάκελο θα αποθηκεύσετε τις απαντήσεις σας για το σημερινό εργαστήριο.
Άσκηση 1 Το πρόγραμμα που θα γράψετε για την άσκηση 1 πρέπει να το αποθηκεύσετε σε αρχείο με όνομα lab5a.c μέσα στο φάκελο lab5. Προσοχή! Διαβάστε όλη την εκφώνηση της άσκησης πριν αρχίσετε να γράφετε κώδικα! Γράψτε ένα πρόγραμμα σε C το οποίο διαβάζει από την οθόνη ένα-ένα τα bits ενός ακεραίου αριθμού και εκτυπώνει στο τέλος τον αριθμό αυτό. Πιο συγκεκριμένα το πρόγραμμα σας θα πρέπει να κάνει τα εξής: 1. Εκτυπώνει στην οθόνη το μήνυμα "Give the binary digits of an integer starting from MS bit", ακολουθούμενο από χαρακτήρα αλλαγής γραμμής. 2. Για κάθε ψηφίο σε δυαδική μορφή το πρόγραμμα a) εκτυπώνει το μήνυμα "Next digit:", b) διαβάζει 0 ή 1 από την κονσόλα, (ως χαρακτήρα, ΟΧΙ ως ακέραιο) c) εάν ο χρήστης δώσει τιμή διαφορετική από 0 ή 1 (π.χ. 9, f, K) το πρόγραμμα εκτυπωνει "Unacceptable value!", και επιστρέφει στο σημείο a) παραπάνω. d) εάν ο χρήστης δώσει τιμή '$', το πρόγραμμα τερματίζει την ανάγνωση των bits και προχωρά στον υπολογισμό του αριθμού που αντιστοιχεί στα bits που διάβασε. Προχοχή: Το πρόγραμμα δεν πρέπει να επιτρέπει να δοθούν περισσότερα ψηφία από το όσα bits έχει ένας ακέραιος αριθμός στην αρχιτεκτονική που εκτελείται. Εάν υποβληθεί ο μέγιστος αριθμός ψηφίων 0 και 1 το πρόγραμμα θα πρέπει να τερματίζει αυτόματα την είσοδο ψηφίων και να προχωρά στο παρακάτω βήμα 3. 3. Εκτυπώνει τον αριθμό που αντιστοιχεί στα bits που διαβάστηκαν στην παρακάτω μοφή: Integer : X or 0xY όπου Χ είναι ο αριθμός σε δεκαδική μορφή και 0xΥ ο ίδιος αριθμός σε δεκαεξαδική μορφή. Αρχεία άσκησης 1 προς παράδοση: lab5a.c Δείτε τα παρακάτω παραδείγματα εκτέλεσης του προγράμματος (επόμενες 2 σελίδες).
Άσκηση 2 Το πρόγραμμα που θα γράψετε για την άσκηση 2 πρέπει να το αποθηκεύσετε σε αρχείο με όνομα lab5b.c μέσα στο φάκελο lab5. Στην άσκηση αυτή θα γράψετε ένα πρόγραμμα το οποίο θα διαβάζει από την κονσόλα έναν θετικό ακέραιο αριθμό και για κάθε έναν ακέραιο από το 1 έως και τον αριθμό που δόθηκε από την κονσόλα ελέγχει αν αυτός αποτελεί γινόμενο δύο συνεχόμενων ακεραίων αριθμών. Το πρόγραμμα σας θα πρέπει να ζητάει έναν ακέραιο αριθμό > 1 και < 10.000, εκτυπώνοντας το παρακάτω μήνυμα. Give Integer > 1 and < 10000: Εάν ο αριθμός που δόθηκε δεν πληρεί την απαιτούμενη συνθήκη το πρόγραμμα επαναλαμβάνει το παραπάνω ερώτημα αφού πρώτα τυπώσει: Unacceptable value! Εφόσον η συνθήκη πληρείται, το πρόγραμμα ελέγχει έναν-έναν αριθμό μέχρι αυτόν που δόθηκε κι εκτυπώνει είτε το γινόμενο είτε μόνο τον αριθμό που ελέγχεται ανάλογα αν αυτός αποτελεί γινόμενο δύο διαδοχικών ακεραίων ή όχι: 1 2 = 1 x 2 3 4 5 6 = 2 x 3 7 8 9 10 11 12 = 3 x 4 13 14 15 16 17 18 19 20 = 4 x 5 21 22 23 24 25 26 27 28 29 30 = 5 x 6 31 32 33 34 35 36 37 38 39 40 41 42 = 6 x 7... Δείτε τα παρακάτω παραδείγματα εκτέλεσης του προγράμματος. Αρχεία άσκησης 2 προς παράδοση: lab5b.c
Αποστολή του προγράμματος για διόρθωση και σχολιασμό Για να στείλετε το πρόγραμμά σας για βαθμολόγηση, ανοίξτε ένα τερματικό (ή χρησιμοποιήστε αυτό του Kate), πηγαίνετε στο φάκελο lab5, και χρησιμοποιήστε την εντολή mkdir για να κατασκευάσετε ένα νέο φάκελο μέσα στο lab5 με βάση τα ονόματα των δύο μελών της ομάδας. Για την ακρίβεια, το όνομα του φακέλου πρέπει να είναι (με λατινικούς χαρακτήρες) : επώνυμο1_am1_επώνυμο2_αμ2, όπου ΑΜ είναι ο τετραψήφιος αριθμός μητρώου σας. Για παράδειγμα, mkdir doufexi_1234_antonopoulos_5678 Αντιγράψτε τα lab5α.c και lab5b.c μέσα στο νέο φάκελο, όπως παρακάτω: cp -v lab5?.c doufexi_1234_antonopoulos_5678/ Τέλος πακετάρετε και συμπιέστε το φάκελο με το πρόγραμμά σας. Η εντολή είναι: tar cvzf επώνυμο1_αμ1_επώνυμο2_αμ2.tgz επώνυμο1_αμ1_επώνυμο2_αμ2 Θα πρέπει να δημιουργηθεί το αρχείο με όνομα επώνυμο1_αμ1_επώνυμο2_αμ2.tgz. Αν εμφανιστεί κάποιο μήνυμα λάθους ή δε δημιουργηθεί το αρχείο, ζητήστε βοήθεια! Στη συνέχεια στείλτε ένα email: στη διεύθυνση: ce120lab@gmail.com με τίτλο (subject): CE120 lab5 sectionx όπου X είναι ο αριθμός του τμήματος, πχ section6 για μια ομάδα του τμήματος 6. CC στο άλλο μέλος της ομάδας σας και στον εαυτό σας συνημμένο (attached) το αρχείο: επώνυμο1_αμ1_επώνυμο2_αμ2.tgz μέσα στο email γράψτε τα ονόματα των δύο μελών της ομάδας. Αφού στείλετε το email, επιβεβαιώστε ότι είχε σωστό attachment κι ότι έλαβε αντίγραφο και το άλλο μέλος της ομάδας. Το άλλο μέλος της ομάδας μπορεί να ξεπακετάρει το tgz αρχείο στο δικό του υπολογιστή με την εντολή tar xvzf επώνυμο1_αμ1_επώνυμο2_αμ2.tgz ΜΗΝ ΞΕΧΑΣΕΤΕ ΝΑ ΚΑΝΕΤΕ LOGOUT ΠΡΙΝ ΦΥΓΕΤΕ!!