Παραδείγματα Χρήσης του DrJava Version 1.1 Επιμέλεια: Κόγιας Δημήτρης, Χαράλαμπος Πατρικάκης, Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [1]
Πίνακας Περιεχομένων Κεφάλαιο 1. Προγράμματα για εξάσκηση... 3 Παράδειγμα Κλάσης... 4 Μονά - Ζυγά... 5 Πρώτοι Αριθμοί... 6 Πυραμίδα... 7 Υπολογισμός Μέσου Όρου Πίνακα... 8 Ακολουθία Fibonacci... 9 Αντιστροφή Ψηφίων Ενός Αριθμού... 10 Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [2]
Κεφάλαιο 1. Προγράμματα για εξάσκηση Στο έντυπο αυτό θα δούμε διάφορα προγράμματα που μπορούμε να τρέξουμε στο DrJava και θα τα μελετήσουμε για να εξοικειωθούμε με τις βασικές έννοιες της γλώσσας Java, όπως τελεστές, κλάσεις, βρόχους επαναλήψεων και ελέγχου ροής. Επιπλέον, θα μας βοηθήσουν τα παραδείγματα αυτά να γνωρίσουμε καλύτερα το περιβάλλον του DrJava. Να σημειωθεί, ότι τα προγράμματα είναι περασμένα με τη μορφή εικόνας (άρα το copy paste δε θα δουλέψει), όχι για να δυσκολέψουν τους φοιτητές, αλλά για να τους αναγκάσουν να περάσουν τον κώδικα και να δουν τις δυνατότητες για στοίχιση, χρωματισμό, και αυτόματη συμπλήρωση που παρέχει το Dr. Java, καθώς και μέσα από πιθανά λάθη πληκτρολόγησης, να μπορέσουν να αντιμετωπίσουν σε μία πρώτη απλή μορφή, θέματα debugging. Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [3]
Παράδειγμα Κλάσης Στο πρώτο παράδειγμα που θα μελετήσουμε, θα ασχοληθούμε με τη δημιουργία μιας καινούργιας κλάσης και, κατόπιν, θα δημιουργήσουμε ένα αντικείμενο της κλάσης αυτής με μια τιμή. Καταρχάς, δημιουργούμε ένα καινούργιο project στο DrJava το οποίο ας το ονομάσουμε ClassExample. Κατόπιν σε ένα καινούργιο αρχείο κλάσης γράφουμε την κλάση που βλέπουμε στη συνέχεια. Δεν αμελούμε να την αποθηκεύσουμε με το ίδιο όνομα με το project. Στο παραπάνω παράδειγμα βλέπουμε τη δημιουργία της κλάσης ClassExample που έχει 1 μεταβλητή (ιδιότητα) και 2 μεθόδους (setname, getname). Η πρώτη μέθοδος χρησιμοποιείται από την κλάση για να δώσει τιμή στην ιδιότητα και η άλλη για να γίνει δυνατόν να έχουν πρόσβαση στο διάβασμα της ιδιότητας της κλάσης και άλλες μέθοδοι, μιας και η ιδιότητα name είναι private. Κατόπιν, ορίζουμε μια μέθοδο main και μέσα σε αυτήν δημιουργούμε ένα αντικείμενο από την κλάση ClassExample και του δίνουμε μια τιμή και την παρουσιάζουμε στην οθόνη, εκμεταλλευόμενοι τις μεθόδους της κλάσης. Περάστε την κλάση στο DrJava και δείτε τι θα εκτυπωθεί στην οθόνη. ΕΡΩΤΗΣΗ: Στο συγκεκριμένο παράδειγμα, παραβήκαμε έναν κανόνα από τις συμβάσεις που έχουμε πει στην ονοματοδοσία στη Java. Μπορείτε να βρείτε ποιον; Υπάρχει κάποιο πρόβλημα; Παραλλαγές: - Δημιουργήστε ένα δεύτερο αντικείμενο της κλάσης το οποίο και θα του δώσετε το όνομα Student. Εκτυπώστε το όνομα του στην οθόνη. - Δημιουργήστε ένα ακόμα αντικείμενο και δώστε του το όνομα σας. Πως μπορείτε να εκτυπώσετε στην οθόνη το παρακάτω μήνυμα: Hello yourname! You are a good Student! Όπου yourname το όνομα σας όπως το έχετε δώσει στο αντικείμενο που δημιουργήσατε. Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [4]
Μονά - Ζυγά Στο επόμενο πρόγραμμα θα δούμε πως μπορούμε να εκτυπώσουμε στην οθόνη του υπολογιστή μας όλους τους μονούς και όλους τους ζυγούς αριθμούς από το 1 ως το 10. Όπως θα δείτε και στο πρόγραμμα που ακολουθεί θα χρησιμοποιήσουμε έναν πίνακα για να βάλουμε όλους τους αριθμούς και κατόπιν θα διατρέξουμε τον πίνακα αυτό για να εκτυπώσουμε την ιδιότητα τους. Για να βρούμε αν ένας αριθμός είναι μονός ή ζυγός χρησιμοποιούμε το σύμβολο του modulo2, δηλαδή το %. Η πράξη σε modulo2 μας επιστρέφει, στην ουσία, το υπόλοιπο της διαίρεσης ενός αριθμού που δίνεται με το 2. Π.χ., 5 % 2 = 1. Όλοι οι μονοί αριθμοί θα έχουν υπόλοιπο 1 στην περίπτωση αυτή και όλοι οι ζυγοί μηδέν. Περάστε το παραπάνω πρόγραμμα και τρέξτε το. Τι θα δείτε στην οθόνη; Παραλλαγές: - Μπορείτε να εκτυπώσετε και πόσοι αριθμοί είναι άρτιοι και πόσοι περιττοί στο τέλος της διαδικασίας; - Μπορείτε να εκτυπώσετε τους άρτιους και ζυγούς αριθμούς από το 1 έως το 100; Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [5]
Πρώτοι Αριθμοί Στο παρακάτω πρόγραμμα μπορείτε να δείτε πως θα φτιάξετε ένα πρόγραμμα που θα εμφανίζει όλους τους πρώτους αριθμούς από το 1 έως το 100. Υπενθυμίζεται ότι πρώτοι λέγονται οι αριθμοί εκείνοι που διαιρούνται με το ένα και με τον εαυτό τους. Ο έλεγχος για το εάν είναι πρώτος ο αριθμός φαίνεται στη γραμμή 18-22, όπου ουσιαστικά ελέγχουμε αν ο αριθμός διαιρείται ακριβώς από κάποιον άλλο αριθμό στο εύρος των υποψηφίων τιμών. Παραλλαγή: - Στο παρακάτω πρόγραμμα εκτυπώστε τους αριθμούς από το 1-100 που είναι δίπλα σε έναν πρώτο π.χ ένας πρώτος αριθμός είναι ο 3 θα εκτυπώσουμε 2 και 4 (ανεξαρτήτως αν είναι πρώτοι). - Εκτυπώστε από τους πρώτους αριθμούς που βρήκατε μόνο όσους είναι μονοί. Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [6]
Πυραμίδα Στο επόμενο πρόγραμμα, θα πρέπει να φτιάξουμε μια πυραμίδα από αστερίσκους, όπως αυτή που φαίνεται δίπλα. Για να το πετύχουμε αυτό, θα πρέπει να γράψουμε μια καινούργια κλάση στο DrJava, η οποία να μετράει τον αριθμό των γραμμών και να συμπληρώνει στην κάθε γραμμή τον αντίστοιχο αριθμό από αστερίσκους. Ο κώδικας του προγράμματος φαίνεται στην εικόνα που ακολουθεί: * ** *** **** ***** Παραλλαγή: ***** - Φτιάξτε μια πυραμίδα με 10 αστερίσκους στη βάση της. **** - Φτιάξτε μια πυραμίδα ανάποδα σε σχέση με την πρώτη. Δηλαδή, να έχει τη *** μεγάλη βάση προς τα πάνω και τη μικρή προς τα κάτω, όπως φαίνεται δίπλα. ** - Συνδυάστε τα 2 τελευταία σχήματα για να παράγετε μια καινούργια πυραμίδα διπλάσιου μεγέθους. * - Αντί για αστερίσκους, φτιάξτε μια πυραμίδα με νούμερα όπως αυτή που φαίνεται παρακάτω. 1 12 123 1234 12345 Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [7]
Υπολογισμός Μέσου Όρου Πίνακα Στο επόμενο μας πρόγραμμα, θα επιστρέψουμε στους πίνακες και θα δούμε κώδικα που μας επιτρέπει να υπολογίζουμε τον μέσο όρο ενός πίνακα ακεραίων αριθμών. Για να το πετύχουμε αυτό θα πρέπει να διατρέξουμε όλα τα στοιχεία του πίνακα, αθροίζοντας τις τιμές τους και στο τέλος, το άθροισμα αυτό, να διαιρεθεί με τον αριθμό των στοιχείων του πίνακα, δηλαδή με το μέγεθος αυτού. Περάστε το πρόγραμμα και τρέξτε το. Τι αποτέλεσμα βγάζει; Πως θα μπορούσαμε να βρούμε τον μέσο όρο με 2 δεκαδικά ψηφία; Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [8]
Ακολουθία Fibonacci Στο πρόγραμμα αυτό θα προσπαθήσουμε να υλοποιήσουμε την ακολουθία Fibonacci. Στην ακολουθία αυτή ο κάθε όρος έχει προκύψει από το άθροισμα των δύο προηγούμενων όρων. Γνωρίζοντας ότι οι 2 πρώτοι όροι της ακολουθίας είναι το 0 και το 1, οι 10 πρώτοι αριθμοί της ακολουθίας είναι οι: 0 1 1 2 3 5 8 13 21 Στη συνέχεια θα δούμε ένα πρόγραμμα που θα υπολογίζει τους 20 πρώτους όρους της γνωστής ακολουθίας. Παραλλαγή: - Φτιάξτε ένα πρόγραμμα που θα ελέγχει αν οι αριθμοί 500 και 987 είναι μέσα στους 20 πρώτους όρους της ακολουθίας Fibonacci. Αν ναι, ποιοί όροι αυτής είναι; Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [9]
Αντιστροφή Ψηφίων Ενός Αριθμού Στο τελευταίο πρόγραμμα μας, θα δούμε πως μπορούμε να αντιστρέψουμε τα ψηφία ενός αριθμού, δηλαδή αν έχουμε τον αριθμό 352 να πάρουμε τον αριθμό 253. Για να το πετύχουμε αυτό θα πρέπει να κρατάμε το υπόλοιπο της διαίρεσης με το 10 και να το προσθέτουμε στον αντίστροφο αφού σπρώξουμε ότι υπήρχε πριν μια θέση αριστερά. Η στροφή αυτή γίνεται με πολλαπλασιασμό με το 10, μια τεχνική ιδιαίτερα δημοφιλή και στα υπόλοιπα αριθμητικά συστήματα. Στο παράδειγμα που ακολουθεί θα δείτε το τμήμα του κώδικα που επιτυγχάνει την αντιστροφή του αριθμού 1234 σε 4321. Περάστε το πρόγραμμα και τρέξτε το. Βεβαιωθείτε ότι αντιλαμβάνεστε τον τρόπο που λειτουργεί. Αν δοκιμάζαμε έναν 6-ψήφιο αριθμό θα έτρεχε κανονικά το πρόγραμμα μας ή θα έπρεπε να αλλάξουμε κάποιο σημείο του κώδικα μας; Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [10]