Περιβάλλον: Greenfoot
Επίπεδο: Αρχάριοι – Μέτριο
Ενδεικτική διάρκεια: 1–2 διδακτικές ώρες
Μέχρι τώρα εξερευνήσατε το σενάριο Wombat and Leaves.
Σήμερα θα προχωρήσουμε ένα βήμα παραπέρα.
Δεν θα αρκεστούμε στο να παρατηρούμε το Wombat.
Θα αλλάξουμε τον κώδικά του και θα αλλάξουμε τη συμπεριφορά του!
Στο τέλος της άσκησης θα μπορείτε:
να ξεχωρίζετε μια κλάση από ένα αντικείμενο,
να αναγνωρίζετε μια μέθοδο,
να καταλαβαίνετε τον ρόλο της act(),
να κάνετε απλές αλλαγές σε κώδικα Java,
να προβλέπετε τι αποτέλεσμα θα έχει μια αλλαγή,
να χρησιμοποιείτε μια απλή συνθήκη if.
Ανοίξτε το Wombat and Leaves.
Εντοπίστε τις:
WombatWorld
Wombat
Leaf
Συμπληρώστε:
| Κλάση | Τι αναπαριστά; |
|---|---|
WombatWorld |
__________________________ |
Wombat |
__________________________ |
Leaf |
__________________________ |
Τοποθετήστε στον κόσμο:
1 Wombat
4 Leaves
Ερώτηση:
Πόσες κλάσεις χρησιμοποιήσατε για να δημιουργήσετε αυτά τα 5 αντικείμενα;
Απάντηση: __________
Κάντε δεξί κλικ επάνω στο Wombat.
Εντοπίστε και δοκιμάστε ορισμένες από τις διαθέσιμες μεθόδους του.
| Μέθοδος που δοκιμάσατε | Τι έκανε; |
|---|---|
________________ |
__________________________ |
________________ |
__________________________ |
________________ |
__________________________ |
Χωρίς να μετακινήσετε το Wombat με το ποντίκι, προσπαθήστε χρησιμοποιώντας μόνο τις μεθόδους του:
να το οδηγήσετε σε ένα Leaf.
Ποιες μεθόδους χρησιμοποιήσατε;
Τώρα ανοίξτε τον κώδικα της κλάσης:
Wombat
⚠️ Μην τρομάξετε από τον κώδικα!
Δεν χρειάζεται να καταλαβαίνετε ακόμη τα πάντα.
Ψάξτε τη μέθοδο:
public void act()
{
...
}
Ποια γνωστή σας μέθοδο μπορείτε να αναγνωρίσετε μέσα στην act();
Απάντηση:
________________________
act();Γράψτε με δικά σας λόγια:
Τώρα θα κάνουμε την πρώτη μας πραγματική επέμβαση στον κώδικα.
Εντοπίστε μέσα στην act() την εντολή:
move();
Προσθέστε ακριβώς από κάτω άλλη μία ίδια:
move();
move();
Τι πιστεύετε ότι θα αλλάξει;
Κάντε Compile.
Πατήστε Run.
Παρατηρήστε το Wombat.
Τι συνέβη;
Η πρόβλεψή σας ήταν σωστή;
☐ ΝΑΙ
☐ ΟΧΙ
Επαναφέρετε αρχικά τον κώδικα όπως ήταν.
Στη συνέχεια προσθέστε μετά την move() μια εντολή που κάνει το Wombat να στρίβει.
Δεν σας δίνεται η εντολή.
Πρέπει να την ανακαλύψετε από τις μεθόδους που εξετάσατε προηγουμένως.
Η εντολή που χρησιμοποιήσαμε:
________________________;
Τι διαδρομή πιστεύετε ότι θα ακολουθήσει τώρα το Wombat;
Κάντε Compile → Run.
Περιγράψτε τη διαδρομή του:
Γιατί πιστεύετε ότι το Wombat στρίβει συνεχώς και όχι μόνο μία φορά;
Τώρα δοκιμάστε να αλλάξετε τη σειρά των δύο εντολών.
Για παράδειγμα, αν έχετε:
move();
ΕΝΤΟΛΗ_ΣΤΡΟΦΗΣ;
δοκιμάστε:
ΕΝΤΟΛΗ_ΣΤΡΟΦΗΣ;
move();
Πιστεύετε ότι θα υπάρχει διαφορά;
☐ ΝΑΙ
☐ ΟΧΙ
Γιατί;
Τώρα εκτελέστε το πρόγραμμα.
Τι παρατηρήσατε;
Μέχρι τώρα το Wombat εκτελεί εντολές.
Θέλουμε όμως να αρχίσει να αποφασίζει.
Για παράδειγμα:
ΑΝ υπάρχει φύλλο στη θέση μου, ΤΟΤΕ φάε το.
Στον προγραμματισμό μπορούμε να γράψουμε:
if (foundLeaf())
{
eatLeaf();
}
Δεν χρειάζεται να απομνημονεύσετε τον κώδικα.
Προσπαθήστε όμως να τον διαβάσετε.
Τι πιστεύετε ότι σημαίνει:
foundLeaf()
Και τι πιστεύετε ότι κάνει:
eatLeaf();
Με τη βοήθεια του παραπάνω κώδικα προσπαθήστε να δημιουργήσετε μια act() με την ακόλουθη λογική:
Το Wombat κινείται.
Αν βρει φύλλο, το τρώει.
Χρησιμοποιήστε τα παρακάτω κομμάτια:
move();
if (foundLeaf())
eatLeaf();
{
}
⚠️ Δεν δίνονται στη σωστή σειρά.
Γράψτε εδώ τη δική σας εκδοχή:
public void act()
{
}
Τώρα περάστε την στον κώδικα.
Compile → Run
☐ ΝΑΙ
☐ ΟΧΙ
Αν όχι, προσπαθήστε να εντοπίσετε το λάθος πριν ζητήσετε βοήθεια.
Ένας μαθητής έγραψε:
public void act()
{
move()
if (foundLeaf())
{
eatLeaf();
}
}
Ο Greenfoot εμφανίζει σφάλμα κατά το Compile.
Μην διορθώσετε αμέσως τον κώδικα.
Παρατηρήστε τον προσεκτικά.
Ποιο πιστεύετε ότι είναι το λάθος;
Διορθώστε το στον δικό σας κώδικα και ελέγξτε αν γίνεται Compile.
Θέλουμε τώρα ένα Wombat που:
1. κινείται,
2. ελέγχει αν υπάρχει φύλλο,
3. αν υπάρχει φύλλο, το τρώει.
Αλλά θέλουμε και κάτι ακόμη:
Ψάξτε στον κώδικα της κλάσης Wombat.
Υπάρχει κάποια μεταβλητή που φαίνεται ότι κρατά τον αριθμό των φύλλων;
Γράψτε το όνομά της:
________________________
Μπορείτε να βρείτε σε ποιο σημείο του κώδικα αυξάνεται η τιμή της;
Αν ναι, αντιγράψτε τη συγκεκριμένη γραμμή:
________________________________
Αν η αρχική τιμή είναι:
0
και το Wombat φάει τρία φύλλα, ποια τιμή περιμένετε να έχει μετά;
Απάντηση: ________
Δημιουργήστε:
2 Wombats
8 Leaves
Πριν πατήσετε Run:
Πιστεύετε ότι και τα δύο Wombats θα συμπεριφερθούν με τον ίδιο τρόπο;
☐ ΝΑΙ
☐ ΟΧΙ
Γιατί;
Τώρα πατήστε Run.
Παρατηρήστε τα για λίγο.
Αφού και τα δύο δημιουργήθηκαν από την ίδια κλάση Wombat, γιατί μπορούν να βρίσκονται σε διαφορετικές θέσεις και να έχουν φάει διαφορετικό αριθμό φύλλων;
Χωρίς να κοιτάξετε τις προηγούμενες απαντήσεις, συμπληρώστε:
1. Τι είναι κλάση;
2. Τι είναι αντικείμενο;
3. Τι είναι μέθοδος;
4. Τι κάνει περίπου η act();
5. Τι σημαίνει περίπου η παρακάτω εντολή;
if (foundLeaf())
Μπορείτε να αλλάξετε τον κώδικα του Wombat ώστε να παρουσιάζει μια διαφορετική συμπεριφορά από την αρχική;
Δεν υπάρχει μία σωστή απάντηση.
Κάντε μία μικρή αλλαγή, εκτελέστε το πρόγραμμα και παρατηρήστε το αποτέλεσμα.
Γράψτε:
Τι άλλαξα στον κώδικα:
Τι περίμενα να συμβεί:
Τι συνέβη πραγματικά:
Γιατί πιστεύω ότι συνέβη: