ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 05/10/2015 Ημερομηνία Παράδοσης: 19/10/2015, 09:00 π.μ. Στόχος Στόχος αυτής της εργασίας είναι η χρησιμοποίηση δομών ελέγχου και βρόγχων. ιαβάστε προσεχτικά το πρόβλημα και κατανοήστε τι πρέπει να γίνει. Όταν καταλάβετε πως λειτουργεί, τότε ξεκινάτε την υλοποίηση του στον υπολογιστή εφαρμόζοντας τη σύνταξη και σημασιολογία της γλώσσας προγραμματισμού Java. Πρόβλημα Το πρόγραμμα σας επιτρέπει στο χρήστη να παίξει ένα παιχνίδι στο οποίο ο υπολογιστής σκέφτεται ένα τυχαίο ακέραιο και ο χρήστης προσπαθεί να τον μαντέψει σωστά. Μετά από κάθε λανθασμένη απάντηση, ο υπολογιστής ενημερώνει το χρήστη εάν ο τυχαίος αριθμός είναι μεγαλύτερος ή μικρότερος από τη λανθασμένη απάντηση. Το πρόγραμμά σας πρέπει να εκτυπώνει ακριβώς τα ίδια αποτελέσματα που φαίνονται στα παραδείγματα εκτέλεσης πιο κάτω (με κόκκινο οι απαντήσεις του χρήστη). Welcome to the EPL131 guessing game! Your guess? 43 Your guess? 64 Your guess? 76 Your guess? 85 Your guess? 83 Your guess? 82 You got it right in 6 guesses! Do you want to play again? y Your guess? 40 Your guess? 75 Your guess? 59 Your guess? 56 You got it right in 4 guesses! Do you want to play again? YES Your guess? 90 ΕΠΛ131 Εργασία 1. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 1
Your guess? 20 Your guess? 85 Your guess? 55 Your guess? 65 Your guess? 80 Your guess? 81 You got it right in 7 guesses! Do you want to play again? no Overall results: Total rounds = 3 Total guesses = 17 Guesses/round = 5.666666666666667 Best game : 4 guesses in round 2 Η έξοδος του δικού σας προγράμματος θα διαφέρει ως προς τους τυχαίους αριθμούς που θα επιλέγονται από τον υπολογιστή και τις απαντήσεις που δίνει ο χρήστης αλλά η γενικότερη δομή παρουσίασης (μηνύματα εισόδου/εξόδου) θα πρέπει να ταιριάζει με αυτή που φαίνεται πιο πάνω. Αρχικά, το πρόγραμμα τυπώνει ένα εισαγωγικό μήνυμα. Στη συνέχεια, παίζεται το παιχνίδι μαντέματος, που μπορεί να περιλαμβάνει αρκετούς γύρους, μέχρι ο χρήστης να αποφασίσει να σταματήσει. Σε κάθε γύρο, ο υπολογιστής επιλέγει έναν τυχαίο αριθμό μεταξύ του 1 και του 100 συμπεριλαμβανομένων. Το παιχνίδι ζητά από το χρήστη να μαντέψει τον τυχαίο αριθμό μέχρι να βρει τη σωστή απάντηση. Μετά από κάθε εσφαλμένη απάντηση, ο υπολογιστής δίνει μια ένδειξη για το αν το σωστός αριθμός είναι μεγαλύτερος ή μικρότερος από αυτόν που έδωσε ο χρήστης. Μόλις ο χρήστης πληκτρολογήσει τον σωστό αριθμό, το παιχνίδι τελειώνει και εκτυπώνεται στην οθόνη ο συνολικός αριθμός των απαντήσεων του χρήστη μέσα στον γύρο που μόλις τέλειωσε. Στη συνέχεια, ο χρήστης ερωτάται αν θέλει να παίξει άλλον ένα γύρο. Ας υποθέσουμε ότι ο χρήστης θα δώσει ως απάντηση μια συμβολοσειρά (string). Ένα νέο παιχνίδι θα πρέπει να αρχίσει, αν η απάντηση του χρήστη ξεκινά με ένα μικρό ή ένα κεφαλαίο Υ (από το αγγλικό αλφάβητο). Για παράδειγμα, οι απαντήσεις όπως το "y", "Υ", "yes", "YES", "YEs" ή "Yeehaw" υποδεικνύουν ότι ο χρήστης θέλει να παίξει ξανά. Αν η συμβολοσειρά ξεκινά με οποιοδήποτε άλλο γράμμα σημαίνει ότι ο χρήστης δεν θέλει να παίξει ξανά. Για παράδειγμα, οι απαντήσεις "no", "No", "okay", "0", "certainly", και "hello" υποθέτουν ότι ο χρήστης δεν θέλει να παίξει ξανά. Μόλις ο χρήστης επιλέξει να μην παίξει ξανά, θα εκτυπώνονται τα συνολικά στατιστικά στοιχεία για όλους τους γύρους: o συνολικός αριθμός γύρων, ο συνολικός αριθμός των απαντήσεων του χρήστη μέσα σε όλους τους γύρους, ο μέσος αριθμός απαντήσεων ανά παιχνίδι, και ο καλύτερος γύρος (με τις λιγότερες απαντήσεις) και πόσες απαντήσεις είχε ο γύρος αυτός. ΕΠΛ131 Εργασία 1. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 2
Τα στατιστικά στοιχεία θα πρέπει να είναι σωστά για οποιοδήποτε αριθμό γύρων ή απαντήσεων 1. Θα πρέπει να χειριστείτε την ειδική περίπτωση όπου ο χρήστης μαντεύει το σωστό αριθμό με την πρώτη προσπάθεια. Εκτυπώστε ένα μήνυμα ως εξής: Your guess? 80 You got it right in 1 guesses! Υποθέστε ότι ο χρήστης δίνει πάντοτε έγκυρη είσοδο. ηλαδή, όταν θα ερωτάται για αριθμούς θα δίνει μόνο ακέραιους, οποιουδήποτε μεγέθους. Οδηγίες υλοποίησης Ορίστε μια σταθερά που να υποδηλώνει το μέγιστο αριθμό που χρησιμοποιείται για την παραγωγή του τυχαίου αριθμού. Το προηγούμενο παράδειγμα εκτέλεσης έδειχνε ότι ο τυχαίος αριθμός που παραγόταν ήταν μεταξύ 1 και 100 συμπεριλαμβανομένων αλλά θα πρέπει να μπορείτε να αλλάξετε την τιμή της σταθεράς έτσι ώστε να μπορεί ο υπολογιστής να παράξει τυχαίο αριθμό και μέσα από άλλο εύρος τιμών π.χ. από 1 έως 50 συμπεριλαμβανομένων. Η σταθερά θα πρέπει να χρησιμοποιείται παντού μέσα στον κώδικα και να μην αναφέρεστε στον μέγιστο αριθμό π.χ. 100 άμεσα. Ελέγξτε το πρόγραμμά σας αν συμπεριφέρεται σωστά αλλάζοντας την τιμή της σταθεράς. Αν, για παράδειγμα, ο μέγιστος αριθμός (τιμή της σταθεράς) είναι 5 τότε η έξοδος του προγράμματός σας θα μοιάζει με την πιο κάτω: Welcome to the EPL131 guessing game! I'm thinking of a number between 1 and 5... Your guess? 2 Your guess? 5 Your guess? 3 You got it right in 3 guesses! Do you want to play again? yeah I'm thinking of a number between 1 and 5... Your guess? 4 Your guess? 2 You got it right in 2 guesses! Do you want to play again? Nah Overall results: Total rounds = 2 Total guesses = 5 Guesses/round = 2.5 Best game : 2 guesses in round 2 ΕΠΛ131 Εργασία 1. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 3
Παράδοση 1. Όταν έχετε τελειώσει με τον πηγαίο κώδικα, μεταγλωττίστε το και βεβαιωθείτε ότι τρέχει σωστά. 2. Παραδώστε τον πηγαίο κώδικα (userid_erg1.java) και τη λίστα δοκιμής (userid_erg1.txt) με 2 παραδείγματα εκτέλεσης (ένα παράδειγμα με 5 γύρους εκτέλεσης και ένα παράδειγμα με 1 γύρο εκτέλεσης) ηλεκτρονικά μέσω του submit assignment (κάτω από το Ασκήσεις Εργασία 1 στην ιστοσελίδα του μαθήματος μέχρι τις 19/10/2015 και ώρα 09:00 π.μ. Όπου userid βάλτε το username που σας δόθηκε από το τμήμα. 3. Προσοχή: Το σύστημα ελέγχει το χρόνο παράδοσης εργασιών γι αυτό μην περιμένετε την τελευταία στιγμή να κάνετε submit την εργασία σας. 4. Στα εργαστήρια (19/10/2015) θα πρέπει να παραδώσετε σε χαρτί τον πηγαίο κώδικα και τη λίστα δοκιμής. Ο κώδικας που θα αποστείλετε ηλεκτρονικά και ο κώδικας που θα παραδώσετε σε χαρτί πρέπει να είναι ακριβώς ο ίδιος. Σε αντίθετη περίπτωση παίρνετε αυτόματα βαθμολογία 0. Βαθμολογία Επίσης, ένα πρόγραμμα για να πάρει όλες τις μονάδες είναι απαραίτητο να: 1. χρησιμοποιεί σχόλια 2. έχει ευθυγραμμισμένος κώδικας 3. χρησιμοποιεί αυτό-επεξηγηματικά ονόματα για τις μεταβλητές 4. Κώδικας που δε μεταγλωττίζει ή δεν τρέχει (crashes) παίρνει αυτόματα βαθμολογία 0. Για όλα τα παραπάνω ακολουθήστε τις οδηγίες που περιγράφονται εδώ: http://introcs.cs.princeton.edu/java/11style/. Το αρχείο με τον πηγαίο κώδικα πρέπει οπωσδήποτε να περιέχει μια συμπληρωμένη κατάλληλα επικεφαλίδα από σχόλια στην αρχή του αρχείου όπως: / Author: Γράψτε εδώ το όνομα σας Written:../../2015 Last updated:../../2015 Compilation: javac userid_erg1.java Execution: java userid_erg1 Γράψτε εδώ πληροφορίες σχετικά με το τι κάνει το πρόγραμμα ΕΠΛ131 Εργασία 1. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 4
/ ΠΡΟΣΟΧΗ: Η εργασία είναι ΑΤΟΜΙΚΗ. Οι προγραμματιστικές ασκήσεις θα ελέγχονται από ειδικό πρόγραμμα για την ανίχνευση των αντιγραφών. Οι αντιγραμμένες εργασίες θα μηδενίζονται και για τους αντιγραφείς θα εφαρμόζονται οι κανόνες τού Πανεπιστημίου. Αποφύγετε λοιπόν την αντιγραφή προγραμμάτων από άλλους συναδέλφους σας, διότι έτσι εκθέτετε και αυτούς και τον εαυτό σας στον κίνδυνο μηδενισμού και πειθαρχικής δίωξης. ΕΠΛ131 Εργασία 1. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 5