SlideShare a Scribd company logo
1 of 11
Karel The Robot
Ιωάννου Γιαννάκης
14/10/2023
Εισαγωγή
O Karel είναι ένα ρομπότ που ζει σε ένα κόσμο που αποτελείται
από οριζόντιους δρόμους και κάθετες λεωφόρους που
διασταυρώνονται δημιουργώντας μπλοκ (τμήματα δρόμου ή
λεωφόρου) του ίδιου μήκους.
Οι δρόμοι και οι λεωφόροι είναι αριθμημένες και η θέση του Karel
μέσα στον κόσμο προσδιορίζεται από τον αριθμό του δρόμου
και της λεωφόρου, δηλαδή της διασταύρωσης που βρίσκεται το
ρομπότ (1ος δρόμος - 4η λεωφόρος Þ διασταύρωση (1, 4).
Δυτικά και νότια αυτού του κόσμου υπάρχουν ένας κάθετος και
ένας οριζόντιος τοίχος αντίστοιχα, που εμποδίζουν την έξοδο
του Karel εκτός των ορίων του κόσμου.
Εισαγωγή
Στον κόσμο αυτό εκτός από τον Karel είναι δυνατόν να υπάρχουν:
 τμήματα τοίχου μήκους ενός μπλοκ που εμποδίζουν την άμεση μετάβαση του
Karel από τη μια διασταύρωση στην άλλη και
 beepers, μικροί πλαστικοί κώνοι που παράγουν ένα ήχο (μπιπ).
Στον απλό αυτό κόσμο ο Karel καλείται να φέρει εις πέρας συγκεκριμένες
αποστολές, όπως για παράδειγμα να κατορθώσει να βγουν από ένα λαβύρινθο,
να «θερίσει» ένα χωράφι από beepers που έχουν μια συγκεκριμένη διάταξη
κ.τ.λ. Το ρομπότ Karel όμως δεν διαθέτει νοημοσύνη και δεν έχει τη δυνατότητα
να φέρει εις πέρας τις αποστολές αν δεν του δοθούν ακριβείς οδηγίες (εντολές).
Συγκεκριμένα, ο Karel ενεργεί διαβάζοντας και ακολουθώντας ένα τέτοιο σύνολο
εντολών που ονομάζεται πρόγραμμα. Ο Karel, ωστόσο, έχει περιορισμένες
δυνατότητες. Αν ο Karel δεν μπορεί να ολοκληρώσει μια αποστολή ή είναι
δύσκολο να καθορίσει ένα αποτελεσματικό τρόπο αντιμετώπισης του
προβλήματος, μπορούμε να ορίσουμε νέες εντολές.
Εισαγωγή
Η γλώσσα που χρησιμοποιούμε για να προγραμματίσουμε το
ρομπότ Karel δεν είναι η φυσική μας γλώσσα, αλλά μια ειδική
γλώσσα προγραμματισμού που όπως η φυσική μας γλώσσα
έτσι και αυτή έχει
 λεξιλόγιο,
 σημεία στίξης και
 κανόνες γραμματικής.
Βασικές Εντολές
O Karel μπορεί να βρίσκεται σε οποιαδήποτε διασταύρωση, να «βλέπει» σε ένα από τα τέσσερα
σημεία του ορίζοντα και να έχει κανένα, ένα ή περισσότερα beepers στην τσάντα του. Ο Karel
καταλαβαίνει, και επομένως μπορεί να εκτελέσει, πέντε βασικές εντολές (primitive
instructions):
 move() Μετακίνηση προς τα εμπρός κατά ένα μπλοκ, χωρίς να αλλάζει κατεύθυνση ο Karel.
Για την αποφυγή ζημιάς ο Karel δεν προχωράει αν διαπιστώσει (με την κάμερα που διαθέτει)
ότι μπροστά του υπάρχει τοίχος, είτε αυτός είναι ο τοίχος που βρίσκεται στα όρια του κόσμου
του είτε ένα μεμονωμένο τμήμα τοίχου. Αντίθετα, τερματίζει τη λειτουργία του με μια ενέργεια
γνωστή ως κλείσιμο λόγω λάθους, error shutoff στη γλώσσα τoυ Karel.
 turnLeft() Ο Karel στρίβει κατά 90 μοίρες προς τα αριστερά παραμένοντας στην ίδια
διασταύρωση.
 pickBeeper() Ο Karel σηκώνει με το μηχανικό του χέρι ένα beeper από τη διασταύρωση που
βρίσκεται και το τοποθετεί στην ηχομονωμένη τσάντα του. Αν δεν υπάρχει κανένα beeper στη
διασταύρωση ο Karel προχωρά σε κλείσιμο λόγω λάθους.
 putBeeper() Ο Karel βγάζει ένα beeper από την τσάντα του και το τοποθετεί στη διασταύρωση
που βρίσκεται. Αν δεν υπάρχει κανένα beeper στην τσάντα ο Karel προχωρά σε κλείσιμο
λόγω λάθους.
 turnΟff() Ο Karel τερματίζει τη λειτουργία του και δεν μπορεί να εκτελέσει άλλες εντολές. Αν σε
ένα πρόγραμμα δεν υπάρχει η μέθοδος turnOff() τότε ο Karel εκτελεί όλες τις εντολές που
περιλαμβάνονται σε αυτό. Η μέθοδος αυτή χρειάζεται σε ελάχιστες περιπτώσεις και αποτρέπει
τον Karel από την εκτέλεση κάποιων εντολών έπ' άπειρο.
Βασικές Εντολές
Ο Karel εκτελεί μια εντολή μόνο αν αυτή ανήκει στο λεξιλόγιό του και είναι απολύτως
ακριβής. Μιας και ο Karel δεν διαθέτει την παραμικρή νοημοσύνη δεν θα ανταποκριθεί στην
εντολή Move() αφού το 'M' είναι κεφαλαίο και όχι πεζό ( η ακριβής εντολή είναι move()).
Μορφή προγράμματος
Η λίστα των εντολών που κατευθύνουν τον Karel ονομάζεται στη γλώσσα προγραμματισμού του
Karel αποστολή και ξεκινάει με τη δεσμευμένη λέξη task. Οι εντολές περικλείονται σε { } και
χωρίζονται μεταξύ τους με τον χαρακτήρα του ελληνικού ερωτηματικού ' ; '. Οι αγκύλες αυτές
ορίζουν ένα μπλοκ εντολών που στη συγκεκριμένη περίπτωση ονομάζεται κυρίως
μπλοκ/σώμα του προγράμματος. Το κυρίως μπλοκ/σώμα ενός προγράμματος αποτελείται
συνήθως από τις εντολές που χαρακτηρίζουν τα εκτελέσιμα βήματα ενός προγράμματος. Με τη
χρήση των βασικών εντολών και τη δημιουργία νέων εντολών, στην οποία θα αναφερθούμε
στην επόμενη ενότητα, μπορεί να περιοριστεί σε πολύ μικρό αριθμό εντολών. Τοποθετείται
πάντα μέσα σε λογικό μπλοκ, όπως και κάθε άλλη λογική ενότητα του μεταφραζόμενου
αλγορίθμου που υπάρχει στο πρόγραμμα, δηλαδή αρχίζει πάντα με { και τελειώνει με }.
task
{
<εντολή>;
. . .
<εντολή>;
}
ΟΡΙΣΜΟΣ ΝΕΩΝ ΕΝΤΟΛΩΝ
Παράδειγμα
task
{
move();
…
pickBeeper();
turnLeft();
move();
…
}
Το παραπάνω πρόβλημα έγκειται στο γεγονός ότι οι λύσεις μας πρέπει να μεταφράζονται στις
στοιχειώδεις, βασικές εντολές του ρομπότ Karel. Προκειμένου να λυθεί το πρόβλημα αυτό, η
γλώσσα προγραμματισμού του ρομπότ Karel μας δίνει τη δυνατότητα να δημιουργούμε νέες
εντολές που προσθέτουν νέες δυνατότητες στο ρομπότ Karel. Ο Karel εφοδιάζεται με ένα
λεξικό με τα ονόματα και τους ορισμούς των βασικών εντολών και των εντολών που ορίζουμε
εμείς οι ίδιοι. Ο ορισμός μιας νέας εντολής αποτελείται από μια σειρά απλούστερων εντολών,
ήδη γνωστών στα ρομπότ. Για το παράδειγμά μας μπορούμε να ορίσουμε μια εντολή
moveKlm() η οποία θα καλεί 8 φορές την εντολή move(). Έτσι όταν δίνεται στο ρομπότ Karel η
εντολή moveKlm() το ρομπότ βρίσκει τον ορισμό που αντιστοιχεί σ' αυτή την εντολή και την
εκτελεί, εκτελεί δηλαδή 8 φορές την εντολή move(). Χρησιμοποιώντας αυτή τη μέθοδο το
πρόγραμμά μας θα αποτελείται από 23 εντολές.
Ανάπτυξη, Μεταγλώττιση,
Εκτέλεση Προγράμματος
Για την ανάπτυξη, μεταγλώττιση και εκτέλεση ενός προγράμματος ακολουθούμε τα
παρακάτω βήματα, στο περιβάλλον προγραμματισμού:
Το βασικό παράθυρο του Περιβάλλοντος Προγραμματισμού.
Ανάπτυξη, Μεταγλώττιση,
Εκτέλεση Προγράμματος
 Βήμα 1ο Δημιουργούμε την αρχική κατάσταση του κόσμου
 Βήμα 2ο Ζητάμε την παράδοση του ρομπότ Karel στην κατάλληλη θέση,
με την κατάλληλη κατεύθυνση, και τον απαιτούμενο αριθμό beepers στην
τσάντα του.
 Βήμα 3ο Αναπτύσσουμε το κυρίως πρόγραμμα, επιλέγοντας από το
μενού Εντολές:
αρχικά, τη δεσμευμένη λέξη task με την οποία ξεκινάει πάντα το κυρίως
πρόγραμμα.
στη συνέχεια, τις εντολές που θέλουμε να εκτελέσει ο Karel
τέλος, το σύμβολο ‘}’ με το οποίο κλείνουμε το μπλοκ εντολών του κυρίως
προγράμματος.
Ανάπτυξη, Μεταγλώττιση,
Εκτέλεση Προγράμματος
 Βήμα 4ο Μεταγλωττίζουμε το πρόγραμμα, επιλέγοντας Μεταγλώττιση
από το μενού Εκτέλεση. Σε περίπτωση που η μεταγλώττιση δεν είναι επιτυχής,
πρέπει να εντοπίσουμε τα λάθη να τα διορθώσουμε και να μεταγλωττίσουμε
ξανά το πρόγραμμα.
 Βήμα 5ο Εκτελούμε βηματικά το πρόγραμμα, επιλέγοντας Εκτέλεση
Βήμα προς Βήμα από το μενού Εντολές ή πατώντας το F8 από το πληκτρολόγιο
για την εκτέλεση της επόμενης κάθε φορά εντολής. Παρατηρούμε την τρέχουσα
εντολή του προγράμματος που εκτελείται, το αποτέλεσμα στον κόσμο του Karel
και στο ίδιο το ρομπότ και διαβάζουμε τις επεξηγήσεις στο κάτω μέρος του
παραθύρου. Το γεγονός ότι ένα πρόγραμμα μεταγλωττίζεται και εκτελείται
χωρίς λάθη εκτέλεσης, δεν σημαίνει απαραίτητα ότι είναι σωστό! Ελέγξτε την
τελική κατάσταση του κόσμου και του Karel.
Ανάπτυξη, Μεταγλώττιση,
Εκτέλεση Προγράμματος
Βήμα 6ο Αποθηκεύουμε το αρχείο του πηγαίου κώδικα (.kpp) και της κατάστασης
του κόσμου (.wld) με το ίδιο όνομα στον προεπιλεγμένο φάκελο projects,
επιλέγοντας Αποθήκευση Πηγαίου Κώδικα – Κατάστασης του κόσμου από το
μενού Αρχείο. Το βήμα αυτό βέβαια μπορεί να είναι και το πρώτο.
Δεν πρέπει να περιμένουμε να τελειώσει το πρόγραμμα για να το
αποθηκεύσουμε – αν για οποιοδήποτε λόγο κλείσει ο υπολογιστής μας θα
χάσουμε τη δουλειά μας!

More Related Content

More from Ιωάννου Γιαννάκης

03 διαχείριση συστήματος λογισμικού
03 διαχείριση συστήματος   λογισμικού03 διαχείριση συστήματος   λογισμικού
03 διαχείριση συστήματος λογισμικούΙωάννου Γιαννάκης
 
02 γνωριμία με το περιβάλλον κειμένου εντολή man
02 γνωριμία με το περιβάλλον κειμένου εντολή man02 γνωριμία με το περιβάλλον κειμένου εντολή man
02 γνωριμία με το περιβάλλον κειμένου εντολή manΙωάννου Γιαννάκης
 

More from Ιωάννου Γιαννάκης (20)

Σωληνώσεις cat sort tee
Σωληνώσεις cat sort teeΣωληνώσεις cat sort tee
Σωληνώσεις cat sort tee
 
Παρακολούθηση διεργασιών
Παρακολούθηση διεργασιώνΠαρακολούθηση διεργασιών
Παρακολούθηση διεργασιών
 
Eντολή Chmod
Eντολή ChmodEντολή Chmod
Eντολή Chmod
 
Eντολές More less head tail
Eντολές More less head tailEντολές More less head tail
Eντολές More less head tail
 
Εντολές lp wc grep
Εντολές lp wc grepΕντολές lp wc grep
Εντολές lp wc grep
 
10 εντολές cp mv rm ln
10 εντολές cp mv rm ln10 εντολές cp mv rm ln
10 εντολές cp mv rm ln
 
09 εντολές mkdir rmdir
09 εντολές mkdir rmdir09 εντολές mkdir rmdir
09 εντολές mkdir rmdir
 
08 εντολή cd
08 εντολή cd08 εντολή cd
08 εντολή cd
 
07 εντολές pwd ls
07 εντολές pwd ls07 εντολές pwd ls
07 εντολές pwd ls
 
06 εντολές clear cal date finger
06 εντολές clear cal date finger06 εντολές clear cal date finger
06 εντολές clear cal date finger
 
05 απόλυτη σχετική διαδρομή
05 απόλυτη  σχετική διαδρομή05 απόλυτη  σχετική διαδρομή
05 απόλυτη σχετική διαδρομή
 
04 σύστημα αρχείων
04 σύστημα αρχείων04 σύστημα αρχείων
04 σύστημα αρχείων
 
03 διαχείριση συστήματος λογισμικού
03 διαχείριση συστήματος   λογισμικού03 διαχείριση συστήματος   λογισμικού
03 διαχείριση συστήματος λογισμικού
 
02 γνωριμία με το περιβάλλον κειμένου εντολή man
02 γνωριμία με το περιβάλλον κειμένου εντολή man02 γνωριμία με το περιβάλλον κειμένου εντολή man
02 γνωριμία με το περιβάλλον κειμένου εντολή man
 
01 bash
01 bash01 bash
01 bash
 
App inventor2 εφαρμογή 1 (Hello purr)
App inventor2 εφαρμογή 1 (Hello purr)App inventor2 εφαρμογή 1 (Hello purr)
App inventor2 εφαρμογή 1 (Hello purr)
 
Python Κεφ. 1.6.1 Πίνακες
Python Κεφ. 1.6.1 ΠίνακεςPython Κεφ. 1.6.1 Πίνακες
Python Κεφ. 1.6.1 Πίνακες
 
Python Κεφ. 1.6 Λίστες
Python Κεφ. 1.6 ΛίστεςPython Κεφ. 1.6 Λίστες
Python Κεφ. 1.6 Λίστες
 
Python Κεφ. 1.5 συναρτήσεις
Python Κεφ. 1.5 συναρτήσειςPython Κεφ. 1.5 συναρτήσεις
Python Κεφ. 1.5 συναρτήσεις
 
Python Κεφ. 1.4 Δομή Επανάληψης
Python Κεφ. 1.4 Δομή ΕπανάληψηςPython Κεφ. 1.4 Δομή Επανάληψης
Python Κεφ. 1.4 Δομή Επανάληψης
 

Recently uploaded

Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptxΠασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx36dimperist
 
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΓιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΟΛΓΑ ΤΣΕΧΕΛΙΔΟΥ
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008Θεόδωρος Μαραγκούλας
 
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της ΙταλίαςKonstantina Katirtzi
 
Μια νύχτα σε κατάστημα παιχνιδιών.pdf
Μια νύχτα σε κατάστημα             παιχνιδιών.pdfΜια νύχτα σε κατάστημα             παιχνιδιών.pdf
Μια νύχτα σε κατάστημα παιχνιδιών.pdfDimitra Mylonaki
 
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdfΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdfssuserf9afe7
 
Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη              στο 11ο Γυμνάσιο ΠάτραςΕπίσκεψη              στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη στο 11ο Γυμνάσιο ΠάτραςDimitra Mylonaki
 
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxΗ Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxeucharis
 
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYEKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYssuser369a35
 
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptxΠασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx36dimperist
 
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxssuserb0ed14
 
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHRODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHROUT Family
 
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptxΠασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx36dimperist
 
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑΜια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑDimitra Mylonaki
 
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-242lykkomo
 

Recently uploaded (15)

Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptxΠασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
 
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΓιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
 
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
 
Μια νύχτα σε κατάστημα παιχνιδιών.pdf
Μια νύχτα σε κατάστημα             παιχνιδιών.pdfΜια νύχτα σε κατάστημα             παιχνιδιών.pdf
Μια νύχτα σε κατάστημα παιχνιδιών.pdf
 
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdfΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
 
Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη              στο 11ο Γυμνάσιο ΠάτραςΕπίσκεψη              στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
 
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxΗ Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
 
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYEKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
 
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptxΠασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
 
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
 
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHRODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
 
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptxΠασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
 
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑΜια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
 
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
 

Karel The Robot

  • 1. Karel The Robot Ιωάννου Γιαννάκης 14/10/2023
  • 2. Εισαγωγή O Karel είναι ένα ρομπότ που ζει σε ένα κόσμο που αποτελείται από οριζόντιους δρόμους και κάθετες λεωφόρους που διασταυρώνονται δημιουργώντας μπλοκ (τμήματα δρόμου ή λεωφόρου) του ίδιου μήκους. Οι δρόμοι και οι λεωφόροι είναι αριθμημένες και η θέση του Karel μέσα στον κόσμο προσδιορίζεται από τον αριθμό του δρόμου και της λεωφόρου, δηλαδή της διασταύρωσης που βρίσκεται το ρομπότ (1ος δρόμος - 4η λεωφόρος Þ διασταύρωση (1, 4). Δυτικά και νότια αυτού του κόσμου υπάρχουν ένας κάθετος και ένας οριζόντιος τοίχος αντίστοιχα, που εμποδίζουν την έξοδο του Karel εκτός των ορίων του κόσμου.
  • 3. Εισαγωγή Στον κόσμο αυτό εκτός από τον Karel είναι δυνατόν να υπάρχουν:  τμήματα τοίχου μήκους ενός μπλοκ που εμποδίζουν την άμεση μετάβαση του Karel από τη μια διασταύρωση στην άλλη και  beepers, μικροί πλαστικοί κώνοι που παράγουν ένα ήχο (μπιπ). Στον απλό αυτό κόσμο ο Karel καλείται να φέρει εις πέρας συγκεκριμένες αποστολές, όπως για παράδειγμα να κατορθώσει να βγουν από ένα λαβύρινθο, να «θερίσει» ένα χωράφι από beepers που έχουν μια συγκεκριμένη διάταξη κ.τ.λ. Το ρομπότ Karel όμως δεν διαθέτει νοημοσύνη και δεν έχει τη δυνατότητα να φέρει εις πέρας τις αποστολές αν δεν του δοθούν ακριβείς οδηγίες (εντολές). Συγκεκριμένα, ο Karel ενεργεί διαβάζοντας και ακολουθώντας ένα τέτοιο σύνολο εντολών που ονομάζεται πρόγραμμα. Ο Karel, ωστόσο, έχει περιορισμένες δυνατότητες. Αν ο Karel δεν μπορεί να ολοκληρώσει μια αποστολή ή είναι δύσκολο να καθορίσει ένα αποτελεσματικό τρόπο αντιμετώπισης του προβλήματος, μπορούμε να ορίσουμε νέες εντολές.
  • 4. Εισαγωγή Η γλώσσα που χρησιμοποιούμε για να προγραμματίσουμε το ρομπότ Karel δεν είναι η φυσική μας γλώσσα, αλλά μια ειδική γλώσσα προγραμματισμού που όπως η φυσική μας γλώσσα έτσι και αυτή έχει  λεξιλόγιο,  σημεία στίξης και  κανόνες γραμματικής.
  • 5. Βασικές Εντολές O Karel μπορεί να βρίσκεται σε οποιαδήποτε διασταύρωση, να «βλέπει» σε ένα από τα τέσσερα σημεία του ορίζοντα και να έχει κανένα, ένα ή περισσότερα beepers στην τσάντα του. Ο Karel καταλαβαίνει, και επομένως μπορεί να εκτελέσει, πέντε βασικές εντολές (primitive instructions):  move() Μετακίνηση προς τα εμπρός κατά ένα μπλοκ, χωρίς να αλλάζει κατεύθυνση ο Karel. Για την αποφυγή ζημιάς ο Karel δεν προχωράει αν διαπιστώσει (με την κάμερα που διαθέτει) ότι μπροστά του υπάρχει τοίχος, είτε αυτός είναι ο τοίχος που βρίσκεται στα όρια του κόσμου του είτε ένα μεμονωμένο τμήμα τοίχου. Αντίθετα, τερματίζει τη λειτουργία του με μια ενέργεια γνωστή ως κλείσιμο λόγω λάθους, error shutoff στη γλώσσα τoυ Karel.  turnLeft() Ο Karel στρίβει κατά 90 μοίρες προς τα αριστερά παραμένοντας στην ίδια διασταύρωση.  pickBeeper() Ο Karel σηκώνει με το μηχανικό του χέρι ένα beeper από τη διασταύρωση που βρίσκεται και το τοποθετεί στην ηχομονωμένη τσάντα του. Αν δεν υπάρχει κανένα beeper στη διασταύρωση ο Karel προχωρά σε κλείσιμο λόγω λάθους.  putBeeper() Ο Karel βγάζει ένα beeper από την τσάντα του και το τοποθετεί στη διασταύρωση που βρίσκεται. Αν δεν υπάρχει κανένα beeper στην τσάντα ο Karel προχωρά σε κλείσιμο λόγω λάθους.  turnΟff() Ο Karel τερματίζει τη λειτουργία του και δεν μπορεί να εκτελέσει άλλες εντολές. Αν σε ένα πρόγραμμα δεν υπάρχει η μέθοδος turnOff() τότε ο Karel εκτελεί όλες τις εντολές που περιλαμβάνονται σε αυτό. Η μέθοδος αυτή χρειάζεται σε ελάχιστες περιπτώσεις και αποτρέπει τον Karel από την εκτέλεση κάποιων εντολών έπ' άπειρο.
  • 6. Βασικές Εντολές Ο Karel εκτελεί μια εντολή μόνο αν αυτή ανήκει στο λεξιλόγιό του και είναι απολύτως ακριβής. Μιας και ο Karel δεν διαθέτει την παραμικρή νοημοσύνη δεν θα ανταποκριθεί στην εντολή Move() αφού το 'M' είναι κεφαλαίο και όχι πεζό ( η ακριβής εντολή είναι move()). Μορφή προγράμματος Η λίστα των εντολών που κατευθύνουν τον Karel ονομάζεται στη γλώσσα προγραμματισμού του Karel αποστολή και ξεκινάει με τη δεσμευμένη λέξη task. Οι εντολές περικλείονται σε { } και χωρίζονται μεταξύ τους με τον χαρακτήρα του ελληνικού ερωτηματικού ' ; '. Οι αγκύλες αυτές ορίζουν ένα μπλοκ εντολών που στη συγκεκριμένη περίπτωση ονομάζεται κυρίως μπλοκ/σώμα του προγράμματος. Το κυρίως μπλοκ/σώμα ενός προγράμματος αποτελείται συνήθως από τις εντολές που χαρακτηρίζουν τα εκτελέσιμα βήματα ενός προγράμματος. Με τη χρήση των βασικών εντολών και τη δημιουργία νέων εντολών, στην οποία θα αναφερθούμε στην επόμενη ενότητα, μπορεί να περιοριστεί σε πολύ μικρό αριθμό εντολών. Τοποθετείται πάντα μέσα σε λογικό μπλοκ, όπως και κάθε άλλη λογική ενότητα του μεταφραζόμενου αλγορίθμου που υπάρχει στο πρόγραμμα, δηλαδή αρχίζει πάντα με { και τελειώνει με }. task { <εντολή>; . . . <εντολή>; }
  • 7. ΟΡΙΣΜΟΣ ΝΕΩΝ ΕΝΤΟΛΩΝ Παράδειγμα task { move(); … pickBeeper(); turnLeft(); move(); … } Το παραπάνω πρόβλημα έγκειται στο γεγονός ότι οι λύσεις μας πρέπει να μεταφράζονται στις στοιχειώδεις, βασικές εντολές του ρομπότ Karel. Προκειμένου να λυθεί το πρόβλημα αυτό, η γλώσσα προγραμματισμού του ρομπότ Karel μας δίνει τη δυνατότητα να δημιουργούμε νέες εντολές που προσθέτουν νέες δυνατότητες στο ρομπότ Karel. Ο Karel εφοδιάζεται με ένα λεξικό με τα ονόματα και τους ορισμούς των βασικών εντολών και των εντολών που ορίζουμε εμείς οι ίδιοι. Ο ορισμός μιας νέας εντολής αποτελείται από μια σειρά απλούστερων εντολών, ήδη γνωστών στα ρομπότ. Για το παράδειγμά μας μπορούμε να ορίσουμε μια εντολή moveKlm() η οποία θα καλεί 8 φορές την εντολή move(). Έτσι όταν δίνεται στο ρομπότ Karel η εντολή moveKlm() το ρομπότ βρίσκει τον ορισμό που αντιστοιχεί σ' αυτή την εντολή και την εκτελεί, εκτελεί δηλαδή 8 φορές την εντολή move(). Χρησιμοποιώντας αυτή τη μέθοδο το πρόγραμμά μας θα αποτελείται από 23 εντολές.
  • 8. Ανάπτυξη, Μεταγλώττιση, Εκτέλεση Προγράμματος Για την ανάπτυξη, μεταγλώττιση και εκτέλεση ενός προγράμματος ακολουθούμε τα παρακάτω βήματα, στο περιβάλλον προγραμματισμού: Το βασικό παράθυρο του Περιβάλλοντος Προγραμματισμού.
  • 9. Ανάπτυξη, Μεταγλώττιση, Εκτέλεση Προγράμματος  Βήμα 1ο Δημιουργούμε την αρχική κατάσταση του κόσμου  Βήμα 2ο Ζητάμε την παράδοση του ρομπότ Karel στην κατάλληλη θέση, με την κατάλληλη κατεύθυνση, και τον απαιτούμενο αριθμό beepers στην τσάντα του.  Βήμα 3ο Αναπτύσσουμε το κυρίως πρόγραμμα, επιλέγοντας από το μενού Εντολές: αρχικά, τη δεσμευμένη λέξη task με την οποία ξεκινάει πάντα το κυρίως πρόγραμμα. στη συνέχεια, τις εντολές που θέλουμε να εκτελέσει ο Karel τέλος, το σύμβολο ‘}’ με το οποίο κλείνουμε το μπλοκ εντολών του κυρίως προγράμματος.
  • 10. Ανάπτυξη, Μεταγλώττιση, Εκτέλεση Προγράμματος  Βήμα 4ο Μεταγλωττίζουμε το πρόγραμμα, επιλέγοντας Μεταγλώττιση από το μενού Εκτέλεση. Σε περίπτωση που η μεταγλώττιση δεν είναι επιτυχής, πρέπει να εντοπίσουμε τα λάθη να τα διορθώσουμε και να μεταγλωττίσουμε ξανά το πρόγραμμα.  Βήμα 5ο Εκτελούμε βηματικά το πρόγραμμα, επιλέγοντας Εκτέλεση Βήμα προς Βήμα από το μενού Εντολές ή πατώντας το F8 από το πληκτρολόγιο για την εκτέλεση της επόμενης κάθε φορά εντολής. Παρατηρούμε την τρέχουσα εντολή του προγράμματος που εκτελείται, το αποτέλεσμα στον κόσμο του Karel και στο ίδιο το ρομπότ και διαβάζουμε τις επεξηγήσεις στο κάτω μέρος του παραθύρου. Το γεγονός ότι ένα πρόγραμμα μεταγλωττίζεται και εκτελείται χωρίς λάθη εκτέλεσης, δεν σημαίνει απαραίτητα ότι είναι σωστό! Ελέγξτε την τελική κατάσταση του κόσμου και του Karel.
  • 11. Ανάπτυξη, Μεταγλώττιση, Εκτέλεση Προγράμματος Βήμα 6ο Αποθηκεύουμε το αρχείο του πηγαίου κώδικα (.kpp) και της κατάστασης του κόσμου (.wld) με το ίδιο όνομα στον προεπιλεγμένο φάκελο projects, επιλέγοντας Αποθήκευση Πηγαίου Κώδικα – Κατάστασης του κόσμου από το μενού Αρχείο. Το βήμα αυτό βέβαια μπορεί να είναι και το πρώτο. Δεν πρέπει να περιμένουμε να τελειώσει το πρόγραμμα για να το αποθηκεύσουμε – αν για οποιοδήποτε λόγο κλείσει ο υπολογιστής μας θα χάσουμε τη δουλειά μας!