Εργαστηριακή Άσκηση

Wombat and Leaves – Τα πρώτα μας βήματα στον κώδικα Java μου

Περιβάλλον: Greenfoot
Επίπεδο: Αρχάριοι – Μέτριο
Ενδεικτική διάρκεια: 1–2 διδακτικές ώρες


🎯 Στόχος

Μέχρι τώρα εξερευνήσατε το σενάριο Wombat and Leaves.

Σήμερα θα προχωρήσουμε ένα βήμα παραπέρα.

Δεν θα αρκεστούμε στο να παρατηρούμε το Wombat.

Θα αλλάξουμε τον κώδικά του και θα αλλάξουμε τη συμπεριφορά του!

Στο τέλος της άσκησης θα μπορείτε:


ΜΕΡΟΣ Α – Θυμόμαστε το σενάριο

Ανοίξτε το Wombat and Leaves.

1. Παρατηρήστε τις κλάσεις

Εντοπίστε τις:

WombatWorld

Wombat

Leaf

Συμπληρώστε:

Κλάση Τι αναπαριστά;
WombatWorld __________________________
Wombat __________________________
Leaf __________________________

2. Δημιουργήστε αντικείμενα

Τοποθετήστε στον κόσμο:

Ερώτηση:

Πόσες κλάσεις χρησιμοποιήσατε για να δημιουργήσετε αυτά τα 5 αντικείμενα;

Απάντηση: __________


ΜΕΡΟΣ Β – Δίνουμε εντολές στο Wombat

Κάντε δεξί κλικ επάνω στο Wombat.

Εντοπίστε και δοκιμάστε ορισμένες από τις διαθέσιμες μεθόδους του.

3. Συμπληρώστε

Μέθοδος που δοκιμάσατε Τι έκανε;
________________ __________________________
________________ __________________________
________________ __________________________

4. Πρόκληση

Χωρίς να μετακινήσετε το Wombat με το ποντίκι, προσπαθήστε χρησιμοποιώντας μόνο τις μεθόδους του:

να το οδηγήσετε σε ένα Leaf.

Ποιες μεθόδους χρησιμοποιήσατε;



ΜΕΡΟΣ Γ – Ανοίγουμε τον κώδικα

Τώρα ανοίξτε τον κώδικα της κλάσης:

Wombat

⚠️ Μην τρομάξετε από τον κώδικα!

Δεν χρειάζεται να καταλαβαίνετε ακόμη τα πάντα.

Ψάξτε τη μέθοδο:

public void act()
{
    ...
}

5. Παρατήρηση

Ποια γνωστή σας μέθοδο μπορείτε να αναγνωρίσετε μέσα στην act();

Απάντηση:

________________________

6. Τι πιστεύετε ότι κάνει η act();

Γράψτε με δικά σας λόγια:




ΜΕΡΟΣ Δ – Πρώτη αλλαγή στον κώδικα!

Τώρα θα κάνουμε την πρώτη μας πραγματική επέμβαση στον κώδικα.

Πείραμα 1

Εντοπίστε μέσα στην act() την εντολή:

move();

Προσθέστε ακριβώς από κάτω άλλη μία ίδια:

move();
move();

ΠΡΙΝ πατήσετε Compile ή Run:

Τι πιστεύετε ότι θα αλλάξει;


Τώρα:

  1. Κάντε Compile.

  2. Πατήστε Run.

  3. Παρατηρήστε το Wombat.

Τι συνέβη;


Η πρόβλεψή σας ήταν σωστή;

☐ ΝΑΙ
☐ ΟΧΙ


ΜΕΡΟΣ Ε – Κάνουμε το Wombat λίγο... περίεργο!

Πείραμα 2

Επαναφέρετε αρχικά τον κώδικα όπως ήταν.

Στη συνέχεια προσθέστε μετά την move() μια εντολή που κάνει το Wombat να στρίβει.

Δεν σας δίνεται η εντολή.

Πρέπει να την ανακαλύψετε από τις μεθόδους που εξετάσατε προηγουμένως.

Η εντολή που χρησιμοποιήσαμε:

________________________;

Πρόβλεψη

Τι διαδρομή πιστεύετε ότι θα ακολουθήσει τώρα το Wombat;


Κάντε Compile → Run.

Περιγράψτε τη διαδρομή του:


Ερώτηση

Γιατί πιστεύετε ότι το Wombat στρίβει συνεχώς και όχι μόνο μία φορά;



ΜΕΡΟΣ ΣΤ – Πειραματιζόμαστε μόνοι μας

Τώρα δοκιμάστε να αλλάξετε τη σειρά των δύο εντολών.

Για παράδειγμα, αν έχετε:

move();
ΕΝΤΟΛΗ_ΣΤΡΟΦΗΣ;

δοκιμάστε:

ΕΝΤΟΛΗ_ΣΤΡΟΦΗΣ;
move();

Πριν το εκτελέσετε:

Πιστεύετε ότι θα υπάρχει διαφορά;

☐ ΝΑΙ
☐ ΟΧΙ

Γιατί;


Τώρα εκτελέστε το πρόγραμμα.

Τι παρατηρήσατε;



ΜΕΡΟΣ Ζ – Το Wombat πρέπει να πάρει μια απόφαση

Μέχρι τώρα το Wombat εκτελεί εντολές.

Θέλουμε όμως να αρχίσει να αποφασίζει.

Για παράδειγμα:

ΑΝ υπάρχει φύλλο στη θέση μου, ΤΟΤΕ φάε το.

Στον προγραμματισμό μπορούμε να γράψουμε:

if (foundLeaf())
{
    eatLeaf();
}

Δεν χρειάζεται να απομνημονεύσετε τον κώδικα.

Προσπαθήστε όμως να τον διαβάσετε.

7. Απαντήστε

Τι πιστεύετε ότι σημαίνει:

foundLeaf()

Και τι πιστεύετε ότι κάνει:

eatLeaf();


ΜΕΡΟΣ Η – Τροποποιούμε τη συμπεριφορά

Με τη βοήθεια του παραπάνω κώδικα προσπαθήστε να δημιουργήσετε μια act() με την ακόλουθη λογική:

Το Wombat κινείται.

Αν βρει φύλλο, το τρώει.

Χρησιμοποιήστε τα παρακάτω κομμάτια:

move();

if (foundLeaf())

eatLeaf();

{

}

⚠️ Δεν δίνονται στη σωστή σειρά.

Γράψτε εδώ τη δική σας εκδοχή:

public void act()
{



}

Τώρα περάστε την στον κώδικα.

Compile → Run

8. Λειτουργεί;

☐ ΝΑΙ

☐ ΟΧΙ

Αν όχι, προσπαθήστε να εντοπίσετε το λάθος πριν ζητήσετε βοήθεια.


ΜΕΡΟΣ Θ – Μικρό debugging

Ένας μαθητής έγραψε:

public void act()
{
    move()
    
    if (foundLeaf())
    {
        eatLeaf();
    }
}

Ο Greenfoot εμφανίζει σφάλμα κατά το Compile.

Αποστολή

Μην διορθώσετε αμέσως τον κώδικα.

Παρατηρήστε τον προσεκτικά.

Ποιο πιστεύετε ότι είναι το λάθος;


Διορθώστε το στον δικό σας κώδικα και ελέγξτε αν γίνεται Compile.


ΜΕΡΟΣ Ι – Πρόκληση ⭐

Θέλουμε τώρα ένα Wombat που:

1. κινείται,

2. ελέγχει αν υπάρχει φύλλο,

3. αν υπάρχει φύλλο, το τρώει.

Αλλά θέλουμε και κάτι ακόμη:

Να μετρά πόσα φύλλα έχει φάει.

Ψάξτε στον κώδικα της κλάσης Wombat.

Υπάρχει κάποια μεταβλητή που φαίνεται ότι κρατά τον αριθμό των φύλλων;

Γράψτε το όνομά της:

________________________

Μπορείτε να βρείτε σε ποιο σημείο του κώδικα αυξάνεται η τιμή της;

Αν ναι, αντιγράψτε τη συγκεκριμένη γραμμή:

________________________________

Σκεφτείτε:

Αν η αρχική τιμή είναι:

0

και το Wombat φάει τρία φύλλα, ποια τιμή περιμένετε να έχει μετά;

Απάντηση: ________


ΜΕΡΟΣ Κ – Τελική πρόκληση 🏆

Δημιουργήστε:

Πριν πατήσετε Run:

Πρόβλεψη

Πιστεύετε ότι και τα δύο Wombats θα συμπεριφερθούν με τον ίδιο τρόπο;

☐ ΝΑΙ
☐ ΟΧΙ

Γιατί;


Τώρα πατήστε Run.

Παρατηρήστε τα για λίγο.

Ερώτηση

Αφού και τα δύο δημιουργήθηκαν από την ίδια κλάση Wombat, γιατί μπορούν να βρίσκονται σε διαφορετικές θέσεις και να έχουν φάει διαφορετικό αριθμό φύλλων;




ΤΕΛΙΚΗ ΑΠΟΣΤΟΛΗ

Χωρίς να κοιτάξετε τις προηγούμενες απαντήσεις, συμπληρώστε:

1. Τι είναι κλάση;


2. Τι είναι αντικείμενο;


3. Τι είναι μέθοδος;


4. Τι κάνει περίπου η act();


5. Τι σημαίνει περίπου η παρακάτω εντολή;

if (foundLeaf())


⭐ Bonus Challenge

Μπορείτε να αλλάξετε τον κώδικα του Wombat ώστε να παρουσιάζει μια διαφορετική συμπεριφορά από την αρχική;

Δεν υπάρχει μία σωστή απάντηση.

Κάντε μία μικρή αλλαγή, εκτελέστε το πρόγραμμα και παρατηρήστε το αποτέλεσμα.

Γράψτε:

Τι άλλαξα στον κώδικα:


Τι περίμενα να συμβεί:


Τι συνέβη πραγματικά:


Γιατί πιστεύω ότι συνέβη: