ενϊριο Διδαςκαλύασ: Βαςικϊ ςτοιχεύα τησ Java και ςυναρτόςεισ Αλεξανδρό Ευαγγελύα-Μαρύα Υοιτότρια Πληροφορικόσ Πανεπιςτημύου Πειραιϊ 1. Σύτλοσ διδακτικού ςεναρύου «Η ϋννοια τησ μεθόδου, βαςικϋσ εντολϋσ τησ γλώςςασ προγραμματιςμού Java.» 2. Εκτιμώμενη διϊρκεια διδακτικού ςεναρύου Ο αρχικόσ ςχεδιαςμόσ του ςεναρύου προβλϋπει τρεισ (3) διδακτικϋσ ώρεσ. 3. Ένταξη του διδακτικού ςεναρύου ςτο πρόγραμμα ςπουδών/προαπαιτούμενεσ γνώςεισ Το παρόν διδακτικό ςενϊριο εντϊςςεται ςτο μϊθημα «Ειδικϊ θϋματα ςτον προγραμματιςμό υπολογιςτών", ςύμφωνα με το αναλυτικό πρόγραμμα ςπουδών (ΦΕΚ 2010/16-9-15) τησ Γ' τϊξησ ΕΠΑΛ ςτον τομϋα Πληροφορικόσ. Πιο ςυγκεκριμϋνα το ςενϊριο προορύζεται για μαθητϋσ που ϋχουν διδαχθεύ προγραμματιςμό ςε προηγούμενεσ τϊξεισ ( γλώςςεσ προγραμματιςμού Pascal και Python),δηλαδό ϋχουν βαςικϋσ γνώςεισ αλγοριθμικόσ. Συνεπώσ ακόμη και αν το πρόγραμμα Greenfoot δεν διδϊςκεται ςε κϊποια προηγούμενη τϊξη, μπορεύ να χρηςιμοποιηθεύ από μαθητϋσ του Επαγγελματικού Λυκεύου, καθώσ πρόκειται για ϋνα περιβϊλλον πολύ απλό και κατανοητό λόγω τησ διαδραςτικότητϊσ του και αξιοποιεύ την πρότερη γνώςη των μαθητών. 4. κοπού και ςτόχοι του διδακτικού ςεναρύου Σκοπόσ των δραςτηριοτότων εύναι οι μαθητϋσ να εμπλουτύςουν και να ενιςχύςουν τισ όδη υπϊρχουςεσ γνώςεισ τουσ, καθώσ και να εξοικειωθούν με νϋεσ ϋννοιεσ. Διδακτικοί Στόχοι Μετϊ την ολοκλόρωςη τησ διδαςκαλύασ οι μαθητϋσ θα εύναι ςε θϋςη να: Α. Γνώςεισ 1. Χρηςιμοποιούν ορθϊ τη δομό επιλογόσ και τουσ βρόχουσ επανϊληψησ. 2. Ξεχωρύζουν τουσ τύπουσ των δεδομϋνων. 3. Γνωρύζουν τουσ τελεςτϋσ. 4. Γνωρύζουν και να χρηςιμοποιούν βαςικϋσ μεθόδουσ και ςυναρτόςεισ. Β. Δεξιότητεσ 1. Εκτελούν εντολϋσ ανϊλογα με την ικανοπούηςη ό όχι κϊποιασ ςυνθόκησ. 2. Αναπτύςςουν πολύπλοκεσ Boolean εκφρϊςεισ. 3. Ορύζουν τύπουσ δεδομϋνων, οι οπούοι δεν εύναι αντικεύμενα κϊποιασ κλϊςησ. 4. Συντϊςςουν κώδικα για διαγνωςτικϊ μηνύματα. 5. Ειςϊγουν ςχόλια. 6. Δημιουργούν και διαχειρύζονται τουσ πύνακεσ. 7. Υλοποιούν μεθόδουσ για τον χειριςμό γεγονότων από μονϊδεσ ειςόδου. Γ. Στϊςεισ 1. Αναπτύξουν ενδιαφϋρον όςον αφορϊ τη ςυγγραφό κώδικα. 5. Περιγραφό του διδακτικού ςεναρύου Το ςενϊριο εςτιϊζει ςτο πρώτο μϋροσ των ςημειώςεων του μαθόματοσ «Ειδικϊ Θϋματα ςτον Προγραμματιςμό Υπολογιςτών» που αναφϋρεται ςτον αντικειμενοςτρεφό προγραμματιςμό και καλύπτει την ύλη του δεύτερου κεφαλαύου Βαςικϊ ςτοιχεύα τησ γλώςςασ. Οι μαθητϋσ θα αςχοληθούν με τον αντικειμενοςτρεφό προγραμματιςμό επεκτεύνοντασ τισ γνώςεισ τουσ. Συγκεκριμϋνα: 1 η Διδακτικό ώρα Επεξόγηςη των τύπων δεδομϋνων, των τελεςτών, τησ δομόσ επιλογόσ, των βρόχων επανϊληψησ και ςυναρτόςεων Κατϊ την πρώτη διδακτικό ώρα, ο καθηγητόσ δεύχνει ςτουσ μαθητϋσ τουσ λογικούσ τελεςτϋσ που μπορεύ να χρηςιμοποιηθούν για πιο περύπλοκεσ Boolean εκφρϊςεισ καθώσ και τουσ τύπουσ των μεταβλητών
που μπορούν να οριςτούν(5'). Έπειτα γύνεται ςύντομη παρουςύαςη τησ ςύνταξησ και λειτουργύασ τησ δομόσ επιλογόσ if/else(5 ) και των δομών επανϊληψησ for και while(10). Στο τϋλοσ τησ διδακτικόσ ώρασ, γύνονται γνωςτϋσ ςτουσ μαθητϋσ βαςικϋσ ςυναρτόςεισ και μϋθοδοι(10 ). O εκπαιδευτικόσ μοιρϊζει ςτουσ μαθητϋσ το Φύλλο Εργαςύασ 1 και εξηγεύ τισ δραςτηριότητεσ του (5 ). Οι μαθητϋσ καλούνται να υλοποιόςουν τισ Δραςτηριότητεσ 1,2 και 3 (10 ).Οι ςτόχοι που καλύπτονται από τισ δραςτηριότητεσ εύναι: Δραςτηριότητα 1(3 ) - Α.2, A.3, Β.4 και Γ.1, Δραςτηριότητα 2(2 ) - A.3 και Γ.1, Δραςτηριότητα 3(5 ) - A.1, Α.2, A.3 και Γ.1. 2 η Διδακτικό ώρα Υύλλο Εργαςύασ 1 Κατϊ τη δεύτερη διδακτικό ώρα οι μαθητϋσ ςυνεχύζουν με την υλοπούηςη των Δραςτηριοτότων 4 και 5 τoυ Φύλλου Εργαςύασ 1(25 ). Αυτϋσ οι δραςτηριότητεσ προτεύνονται για την εξοικεύωςη των μαθητών με βαςικϋσ ϋννοιεσ του αντικειμενοςτραφούσ προγραμματιςμού. Στη ςυνϋχεια ο καθηγητόσ επεξηγεύ ςτουσ μαθητϋσ τουσ πύνακεσ (10 ) και ςτη ςυνϋχεια οι μαθητϋσ καλούνται να επιλύςουν την Δραςτηριότητα 6 του Φύλλου Εργαςύασ 1(10 ). Οι ςτόχοι που καλύπτονται από τισ δραςτηριότητεσ εύναι: Δραςτηριότητα 4(10 ) - Α.1, Β.1, Β.3και Β.4, Δραςτηριότητα 5(15 ) - Α.1, A.4, Β.1, Β.3 και Γ.1, Δραςτηριότητα 6(10 ) -Α.1, Β.6 και Γ.1. 3 η Διδακτικό ώρα χόλια και διαγνωςτικϊ μηνύματα Την τρύτη διδακτικό ώρα, ο καθηγητόσ εξηγεύ ςτουσ μαθητϋσ την αναγκαιότητα των ςχολύων ςτον προγραμματιςμό, και τουσ δεύχνει τρόπουσ ειςαγωγόσ ςχολύων (5 ). Έπειτα, ο καθηγητόσ παρουςιϊζει ςτουσ μαθητϋσ τον τρόπο δημιουργύασ διαγνωςτικών μηνυμϊτων(5 ). Στη ςυνϋχεια, μοιρϊζεται ςτουσ μαθητϋσ το Φύλλο Εργαςύασ 2 και επεξηγεύται από τον εκπαιδευτικό(5 ). Τϋλοσ, οι μαθητϋσ υλοποιούν τισ Δραςτηριότητεσ του Φύλλου Εργαςύασ 2(30 ). Οι ςτόχοι που καλύπτονται από τισ δραςτηριότητεσ εύναι: Δραςτηριότητα 1(10 ) - Α.1, A.3, A.4, Β.1, Β.3 και Γ.1, Δραςτηριότητα 2(5 ) - A.1, A2, A4, Β.1, Β.3, Β.5 και Γ.1, Δραςτηριότητα 3(15 ) Α.1, Β.7 και Γ.1. Φρονοπρογραμματιςμόσ εργαςιών τϊδια Δραςτηριότητεσ Μϋςο Φρόνοσ 1 η Διδακτικό ώρα Επεξόγηςη τελεςτών Βιντεοπροβολϋασ 5 και τύπων μεταβλητών 1 η Διδακτικό ώρα Παρουςύαςη ςύνταξησ Βιντεοπροβολϋασ 5 Λειτουργύασ if/else 1 η Διδακτικό ώρα Παρουςύαςη ςύνταξησ - Βιντεοπροβολϋασ 10 λειτουργύασ for & while 1 η Διδακτικό ώρα Βαςικϋσ ςυναρτόςεισ Βιντεοπροβολϋασ 10 1 η Διδακτικό ώρα Διανομό Επεξόγηςη Έντυπο φύλλο εργαςύασ 5 Φύλλου εργαςύασ 1 1 η Διδακτικό ώρα Δραςτηριότητα 1 Έντυπο φύλλο εργαςύασ 3 Φύλλου εργαςύασ 1 1 η Διδακτικό ώρα Δραςτηριότητα 2 Έντυπο φύλλο εργαςύασ 2 Φύλλου εργαςύασ 1 1 η Διδακτικό ώρα Δραςτηριότητα 3 Έντυπο φύλλο εργαςύασ 5 Φύλλου εργαςύασ 1 2 η Διδακτικό ώρα Δραςτηριότητα 4 Έντυπο φύλλο εργαςύασ 10 Φύλλου εργαςύασ 1 2 η Διδακτικό ώρα Δραςτηριότητα 5 Έντυπο φύλλο εργαςύασ 15 Φύλλου εργαςύασ 1 2 η Διδακτικό ώρα Επεξόγηςη πινϊκων Βιντεοπροβολϋασ 10 2 η Διδακτικό ώρα Δραςτηριότητα 6 Φύλλου εργαςύασ 1 Έντυπο φύλλο εργαςύασ 10
3 η Διδακτικό ώρα Ειςαγωγό ςχολύων Βιντεοπροβολϋασ 5 3 η Διδακτικό ώρα Διαγνωςτικϊ Μηνύματα Βιντεοπροβολϋασ 5 3 η Διδακτικό ώρα Διανομό Επεξόγηςη Έντυπο φύλλο εργαςύασ 5 Φύλλου εργαςύασ 2 3 η Διδακτικό ώρα Δραςτηριότητα 1 Έντυπο φύλλο εργαςύασ 10 Φύλλου εργαςύασ 2 3 η Διδακτικό ώρα Δραςτηριότητα 2 Έντυπο φύλλο εργαςύασ 5 Φύλλου εργαςύασ 2 3 η Διδακτικό ώρα Δραςτηριότητα 3 Φύλλου εργαςύασ 2 Έντυπο φύλλο εργαςύασ 15 Συνολικόσ εκτιμώμενοσ χρόνοσ 135 Στα φύλλα εργαςύασ περιλαμβϊνονται: Δραςτηριότητεσ κατανόηςησ των τελεςτών. Δραςτηριότητεσ εξοικεύωςησ με τουσ τύπουσ δεδομϋνων. Δραςτηριότητεσ χρόςησ τησ εντολόσ επιλογόσ if..else. Δραςτηριότητεσ κατανόηςησ των βρόχων επανϊληψησ. Δραςτηριότητεσ εξοικεύωςησ με βαςικϋσ ςυναρτόςεισ. Δραςτηριότητεσ ειςαγωγόσ ςχολύων. Δραςτηριότητεσ εμφϊνιςησ διαγνωςτικών μηνυμϊτων. Δραςτηριότητεσ διαχεύριςησ πινϊκων. Δραςτηριότητεσ κατανόηςησ πινϊκων 6. Επιςτημολογικό προςϋγγιςη και εννοιολογικό ανϊλυςη του διδακτικού ςεναρύου Για τη ςυγγραφό κώδικα, ςε οποιαδόποτε γλώςςα προγραμματιςμού και περιβϊλλοντοσ διεπαφόσ, εύναι απαραύτητη η γνώςη των βαςικών εννοιών, τελεςτών, τύπων δεδομϋνων καθώσ και βαςικών εντολών και ςυναρτόςεων τησ γλώςςασ. Επιπλϋον, πολύ ςημαντικό ρόλο διαδραματύζουν και τα ςχόλια που βοηθούν τουσ προγραμματιςτϋσ να κατανοούν το πρόγραμμα ςε βϊθοσ χρόνου. Το Greenfoot περιϋχει κϊποιεσ ειδικϋσ εντολϋσ που μπορούν να χρηςιμοποιούν οι χρόςτεσ που φτιϊχνουν την εκϊςτοτε εφαρμογό. Οι εντολϋσ mouseclicked(object obj) και SetWorld(World) ϋχουν όδη διδαχθεύ ςτουσ μαθητϋσ. Μερικϋσ ακόμα εντολϋσ, που πρόκειται να χρηςιμοποιηθούν, εύναι οι IsKeyDown() και getkey(), που αντύςτοιχα επιςτρϋφει true ό false αν ϋχει πατηθεύ το πλόκτρο που ϋχει ορύςει ο χρόςτησ και επιςτρϋφει το όνομα του πλόκτρου που πατόθηκε τελευταύα. Τϋλοσ, τα διαγνωςτικϊ μηνύματα εύναι μια βαςικό αλληλεπύδραςη με τον χρόςτη, καθώσ γύνεται εύςοδοσ και ϋξοδοσ δεδομϋνων. 7. Φρόςη Η/Y και γενικϊ ψηφιακών μϋςων για το διδακτικό ςενϊριο Για τη διδαςκαλύα του ςεναρύου και για την υλοπούηςη των δραςτηριοτότων απαιτεύται: Εργαςτόριο πληροφορικόσ, με υπολογιςτϋσ που ϋχουν εγκατεςτημϋνο το λογιςμικό Greenfoot. Βιντεοπροβολϋασ ό διαδραςτικόσ πύνακασ για την επεξόγηςη των εννοιών που θα διδαχθούν οι μαθητϋσ ςε αυτό το ςενϊριο. 8. Αναπαραςτϊςεισ των μαθητών/πρόβλεψη δυςκολιών ςτο εκπαιδευτικό ςενϊριο Οι μαθητϋσ εύναι πιθανό να δυςκολευτούν κατϊ τη φϊςη την επύλυςη των Δραςτηριοτότων 4 και 5 ςτο Φύλλο Εργαςύασ 1. Η δραςτηριότητα 4 αςχολεύται με την χρόςη ςυνθηκών και εντολών επιλογόσ, ενώ η 5 εύναι η πρώτη πρακτικό ϊςκηςη πϊνω ςτουσ βρόγχουσ επανϊληψησ. Οι δυςκολύεσ αυτϋσ εύναι αναμενόμενεσ και προβλϋπεται η πλόρησ κατανόηςη τουσ μετϊ από τριβό με το αντικεύμενο. 9. Διδακτικό ςυμβόλαιο Καθώσ θα εφαρμόζεται το παρόν ςενϊριο διδαςκαλύασ, δεν προβλϋπεται να υπϊρξουν προβλόματα κατϊ την εκκύνηςη του προγρϊμματοσ. Αυτό ςημαύνει ότι το πιο πιθανό εύναι ότι δεν θα υπϊρξει διδακτικόσ θόρυβοσ, εφόςον η επεξόγηςη τησ θεωρύασ καλύπτει πλόρωσ τισ ανϊγκεσ του ςεναρύου και τα Φύλλα Εργαςύασ εύναι απλϊ και καθοδηγούν τον μαθητό με ακολουθιακό τρόπο για την κατανόηςη των εννοιών που θα διδαχθούν ςε αυτό το ςενϊριο. Ο όποιοσ διδακτικόσ θόρυβοσ δημιουργηθεύ λόγω τησ πρακτικόσ ϊςκηςησ ςε δομϋσ επιλογόσ και επανϊληψησ θα ξεπεραςτεύ με τη βοόθεια του διδϊςκοντα. 10. Τποκεύμενη θεωρύα μϊθηςησ Ο τρόποσ διεξαγωγόσ των προτεινόμενων δραςτηριοτότων του ςεναρύου βαςύζεται ςτη θεωρύα του Κονςτρουκτιβιςμού (Εποικοδομιςμού) καθώσ οι μαθητϋσ αναλαμβϊνουν ενεργό ρόλο ςτην οικοδόμηςη
τησ γνώςησ τουσ με την επύλυςη των δραςτηριοτότων και ο καθηγητόσ μπορεύ να επϋμβει μόνο εϊν του ζητηθεύ. Επιπλϋον, μϋςω τησ θεωρύασ του Κοινωνικού Εποικοδομητιςμού, προωθεύται η αλληλεπύδραςη των μαθητών μεταξύ τουσ αλλϊ και με τον εκπαιδευτικό ώςτε να αποκτόςουν εμπειρύεσ από το περιβϊλλον. Οι μαθητϋσ λειτουργώντασ ομαδοςυνεργατικϊ, κατανεμημϋνοι ςε ομϊδεσ, ανταλλϊςουν εμπειρύεσ, γνώμεσ και ιδϋεσ. Επύςησ, μϋςω τησ ανακαλυπτικόσ μϊθηςησ, οι μαθητϋσ αποκτούν γνώςεισ με τη χρόςη εμπειριών και δυνατοτότων μϋςα από τισ δραςτηριότητεσ που καλούνται να αντιμετωπύςουν. Συνολικϊ, οι παραπϊνω θεωρύεσ εςτιϊζουν ςτον ενεργό ρόλο του μαθητό και ςτην αυτόβουλη απόκτηςη εμπειριών μϋςα από την αλληλεπύδραςη με το περιβϊλλον. 11. Οργϊνωςη τησ τϊξησ-εφικτότητα ςχεδύαςησ Και οι τρεισ διδακτικϋσ ώρεσ πραγματοποιούνται ςτο εργαςτόριο πληροφορικόσ του ςχολεύου όπου εύναι εγκατεςτημϋνο το περιβϊλλον του Greenfoot. Κατϊ την επύλυςη των Φύλλων Εργαςύασ οι μαθητϋσ εργϊζονται ςε ομϊδεσ με ςκοπό την προώθηςη τησ ςυνεργαςύασ και κατ επϋκταςη τησ ςυνεργατικόσ μϊθηςησ. 12. Αξιολόγηςη Οι μαθητϋσ αξιολογούνται αρχικϊ από την ολοκλόρωςη και επιτυχόσ επύλυςη των δραςτηριοτότων ςτα Φύλλα Εργαςύασ που τουσ δύνονται, χρηςιμοποιώντασ το περιβϊλλον Greenfoot. Επιπλϋον, ο καθηγητόσ μϋςω τησ παρατόρηςησ και τησ ενεργούσ ακρόαςησ κατϊ τη διϊρκεια τησ εργαςύασ των μαθητών ςε ομϊδεσ μπορεύ να αξιολογόςει το ϋργο τουσ. 13. Σο επιμορφωτικό ςενϊριο 1 η Διδακτικό ώρα Μεταβλητϋσ, Σύποι, Σελεςτϋσ και Εκφρϊςεισ (2.1) (5 λεπτϊ) Η διδακτικό ώρα ξεκινϊ με τον καθηγητό, ο οπούοσ παρουςιϊζει ςτουσ μαθητϋσ τουσ βαςικούσ πρωτογενεύσ τύπουσ δεδομϋνων που δεν εύναι αντικεύμενα κϊποιασ κλϊςησ (βλ. Εικόνα 1). Οι τύποι αυτού εύναι οι εξόσ: Εικόνα 1: Τύποι Δεδομϋνων Έπειτα γύνεται η παρουςύαςη των τελεςτών τησ Java (βλ. Εικόνα 2 και Εικόνα 3 και Εικόνα 4) μϋςα απο τα παρακϊτω παραδεύγματα:
Εικόνα 2: Αριθμητικού Τελεςτϋσ Εικόνα 3: Σχεςιακού Τελεςτϋσ Εικόνα 4: Λογικού Τελεςτϋσ Στη ςυνϋχεια, ο καθηγητόσ επεξηγεύ ςτουσ μαθητϋσ τουσ τρόπουσ δόλωςησ των μεταβλητών, ωσ ακολούθωσ: 1 οσ Σρόποσ <τύποσ δεδομϋνων><λύςτα μεταβλητών>; Π.χ. float mikos, platos, emvadon; 2 οσ Σρόποσ <τύποσ δεδομϋνων><μεταβλητό>=<τιμό>; Π.χ. int i = 2; 2.2 Η δομό επιλογόσ if else (5 λεπτϊ) Η διδακτικό ώρα ςυνεχύζεται με τον καθηγητό να εξηγεύ την λειτουργικότητα και την αναγκαιότητα αυτόσ τησ εντολόσ διακλϊδωςησ για ϋνα οποιοδόποτε πρόγραμμα. Στη ςυνϋχεια, δεύχνει ςτουσ μαθητϋσ τη ςύνταξό τησ (βλ. Εικόνα 5) και την εξηγεύ μϋςα από παραδεύγματα. Σύνταξη εντολόσ:
Επεξόγηςη μϋςα από παρϊδειγμα (βλ. Εικόνα 6): Εικόνα 5: Σύνταξη εντολόσ if else Εικόνα 6: Παρϊδειγμα εντολόσ if else Οι εντολϋσ κϊτω από το If εκτελούνται μόνο εϊν ικανοποιεύται η ςυνθόκη index2>index1 διαφορετικϊ εϊν index1>index2 εκτελούνται οι εντολϋσ που βρύςκονται κϊτω από το else. 2.3 Οι δομϋσ επαναλόψεισ for και while(10 λεπτϊ) Έπειτα ο καθηγητόσ επεξηγεύ ςτουσ μαθητϋσ την χρόςη των δομών επανϊληψησ. Η εντολό for εύναι χρόςιμη για την επανϊληψη μιασ ςειρϊσ εντολών όταν εύναι γνωςτό από πριν πόςεσ φορϋσ θϋλουμε να επαναληφθούν. Αυτό ςημαύνει ότι ςυνόθωσ η εντολό for ελϋγχεται από ϋναν μετρητό ο οπούο αλλϊζει από μύα αρχικό τιμό που ϋχουμε ορύςει μϋχρι να ξεπερϊςει μια τελικό τιμό. Επιπλϋον για αυτό την εντολό ορύζουμε κατϊ πόςο θα μεταβϊλλεται ο μετρητόσ ςε κϊθε βόμα. Η γενικό μορφό τησ εντολόσ for (βλ. Εικόνα 7) εύναι η εξόσ:
Εικόνα 7: Γενικό Μορφό Εντολόσ for Παρϊδειγμα εντολόσ for Για παρϊδειγμα το ακόλουθο τμόμα κώδικα (βλ. Εικόνα 8) εμφανύζει ςτην οθόνη τουσ αριθμούσ από το 1 μϋχρι το 10: Εικόνα 8: Παρϊδειγμα εντολό for Το i δηλώνεται και αρχικοποιεύται ςτο1 (int i=1;). Το i ελϋγχεται για το αν ϋχει ξεπερϊςει το 10 ( i<=10;). Άρα ο ςυγκεκριμϋνοσ βρόχοσ θα επαναληφθεύ μϋχρι το i να ξεπερϊςει το 10. Το i αυξϊνεται κατϊ 1 ( i++). Σε κϊθε βόμα τησ επανϊληψησ ελϋγχεται η τιμό του i. Aν το i ξεπερϊςει το 10 ο βρόχοσ τερματύζεται, αν όχι αυξϊνεται κατϊ 1 και εκτελεύται η εντολό System.out.println(i); Όπωσ αναφϋρθηκε και προηγουμϋνωσ, η εντολό for χρηςιμοποιεύται εϊν γνωρύζουμε τον αριθμό τον επαναλόψεων. Εϊν δεν τον γνωρύζουμε όμωσ χρηςιμοποιεύται η εντολό επανϊληψησ while, κατϊ την οπούα η εντολό ό οι εντολϋσ που ακολουθούν το while θα εκτελεςτούν όςο η ςυνθόκη εύναι αληθόσ. Ο βρόχοσ δηλαδό θα τερματιςτεύ όταν η ςυνθόκη - που εύναι μύα boolean ϋκφραςη - γύνει ψευδόσ. Η γενικό μορφό τησ εντολόσ while (βλ. Εικόνα 9 ) εύναι η εξόσ: Παρϊδειγμα εντολόσ while Εικόνα 9: Γενικό Μορφό εντολόσ while Εικόνα 10: Παρϊδειγμα εντολόσ while Το x δηλώνεται και αρχικοποιεύται ςτο 0 (int x=0;). Το x ελϋγχεται για το αν μικρότερο ό όςο με το 3 ( x<=3;). Άρα ο ςυγκεκριμϋνοσ βρόχοσ θα επαναληφθεύ μϋχρι το x να ξεπερϊςει το 3. Όςο το x εύναι μικρότερο ό ύςο με το 3. το x αυξϊνεται κατϊ 1 ( x=x+1) και τυπώνεται ςτην οθόνη η τιμό του x. 2.4 Βαςικϋσ ςυναρτόςεισ - μϋθοδοι(10 λεπτϊ)
Στο τϋλοσ τησ διδακτικόσ ώρασ, ο καθηγητόσ ειςϊγει τουσ μαθητϋσ ςτην ϋννοια των ςυναρτόςεων. Οι ςυναρτόςεισ, εύναι επαναχρηςιμοποιόςιμα τμόματα κώδικα, ςτα οπούα ϋχει δοθεύ ϋνα όνομα, με απλό αναφορϊ του οπούου και εκτελούνται. Η λειτουργύα αυτό εύναι γνωςτό ωσ κλόςη ςυνϊρτηςησ. Οι ςυναρτόςεισ ςτην Java ανόκουν πϊντα ςε μια κλϊςη και λϋγονται μϋθοδοι τησ κλϊςησ. Έπειτα επιςημαύνει ότι χρηςιμοποιούμε πολύ ςυχνϊ τη μϋθοδο println, για να εμφανιςτεύ ϋνα μόνυμα ςτην οθόνη Το αντικεύμενο out ανόκει ςτην κλϊςη System. Έτςι αν θϋλουμε να εμφανύςουμε το μόνυμα: Καληςπϋρα μαθητϋσ μου γρϊφουμε: System.out.println("Καληςπϋρα μαθητϋσ μου"); Μια κλϊςη εύναι υποκλϊςη τησ Actor και ςύμφωνα με τον οριςμό τησ κληρονομικότητασ, κληρονομεύ όλεσ τισ μεθόδουσ τησ. Οι μϋθοδοι αυτϋσ (βλ. Εικόνα 11) φαύνονται ςτουσ παρακϊτω πύνακεσ: Εικόνα 11: Διϊφορεσ Μϋθοδοι Επιπλϋον, τα παραπϊνω μπορούν να οριςτούν και με τη χρόςη κώδικα και θα ιςχύουν καθ όλη τη διϊρκεια του προγρϊμματοσ εφόςον τηρούνται οι ςυνθόκεσ που ϋχει ορύςει ο χρόςτησ. Υύλλο Εργαςύασ 1 (15 λεπτϊ) Στουσ μαθητϋσ μοιρϊζεται το Φύλλο Εργαςύασ 1 και καλούνται να υλοποιόςουν την Δραςτηριότητα 1,2 και 3. 2 η Διδακτικό ώρα Υύλλο Εργαςύασ 1 (25 λεπτϊ) Οι μαθητϋσ υλοποιούν τισ Δραςτηριότητεσ 4 και 5 από το Φύλλο Εργαςύασ 1. 3.10 Πύνακεσ(10 λεπτϊ) Οι πύνακεσ εύναι αντικεύμενα που ϋχουν την ιδιότητα να αποθηκεύουν ςε ςυνεχϋσ θϋςεισ ςτη μνόμη ϋνα προκαθοριςμϋνο αριθμό μεταβλητών εφόςον ανόκουν όλοι ςτον ύδιο τύπο δεδομϋνων. Μπορούμε να ορύςουμε ϋνα πύνακα με τουσ παρακϊτω τρόπουσ: int a[]={2,3,4,5,6}; ό int a[]=new int[5]; for( int i=0; i<5; i++){ a[i]=i; }
Μπορούμε ακόμη να ορύςουμε πολυδιϊςτατουσ πύνακεσ int a[][] = new int[5][5]; Με την εντολό a.length μπορούμε να βρούμε το μόκοσ του πύνακα. Αν δεν αρχικοποιόςουμε τισ θϋςεισ του πύνακα η αρχικό τουσ τιμό εύναι null. Υύλλο Εργαςύασ 1 (10 λεπτϊ) Οι μαθητϋσ υλοποιούν τη Δραςτηριότητα 6 από το Φύλλο Εργαςύασ 1. 3 η Διδακτικό ώρα 2.5 χόλια (5 λεπτϊ) Την τρύτη διδακτικό ώρα ο καθηγητόσ επιςημαύνει ςτουσ μαθητϋσ την αναγκαιότητα των ςχολύων φϋρνοντασ ωσ παρϊδειγμα την Δραςτηριότητα 5 του Φύλλου Εργαςύασ 1, όπου η χρόςη τουσ θα διευκόλυνε πολύ εύτε τον ύδιο το μαθητό που θα ϋχει εκτελϋςει τη Δραςτηριότητα, εύτε κϊποιον ϊλλον που θα ϋβλεπε το πρόγραμμα. Τα ςχόλια χρηςιμοποιούνται για να: Τεκμηριώνουμε: τον ςκοπό και τουσ ςτόχουσ του προγρϊμματοσ μασ, τον ςυγγραφϋα του προγρϊμματοσ, τισ εκδόςεισ του κώδικϊ μασ (revision history) κτλ. Περιγρϊφουμε: πεδύα, μεθόδουσ, κλϊςεισ και καταςκευαςτϋσ. Έπειτα ο καθηγητόσ δεύχνει ςτουσ μαθητϋσ τουσ τρόπουσ με τουσ οπούουσ μπορούν να ειςϊγουν ςχόλια, όπωσ παρουςιϊζονται κϊτωθι. 1 οσ Σρόποσ Για την ειςαγωγό ςχολύου πολλών γραμμών χρηςιμοποιούνται τα ςύμβολα /* και */, όπου τα ςχόλια μπαύνουν ανϊμεςϊ τουσ. 2 οσ Σρόποσ Από την ϊλλη πλευρϊ, για την ειςαγωγό ενόσ ςχολύου μιασ γραμμόσ χρηςιμοποιεύται το ςύμβολο // πριν από τα ςχόλια που θϋλουμε να γρϊψουμε και εύναι ςε ιςχύ μϋχρι το τϋλοσ τησ γραμμόσ. 2.6 Διαγνωςτικϊ Μηνύματα(5 λεπτϊ) Στη ςυνϋχεια τησ διδακτικόσ ώρασ, ο καθηγητόσ εξηγεύ ςτουσ μαθητϋσ ότι όλεσ οι γλώςςεσ προγραμματιςμού παρϋχουν τη δυνατότητα δημιουργύασ παραθυρικών εφαρμογών. Η γλώςςα προγραμματιςμού Java παρϋχει το πακϋτο javax.swing για τη δημιουργύα γραφικού περιβϊλλοντοσ διεπαφόσ (GUI). Η κλϊςη JOptionPane του πακϋτου διευκολύνει την χρόςη παραθύρων διαλόγου για διαγνωςτικϊ μηνύματα, εύςοδο και ϋξοδο δεδομϋνων. Για μια ολοκληρωμϋνη γνώςη τησ κλϊςησ JOptionPane και τισ μεθόδουσ τησ, μπορεύτε να ανατρϋξετε ςτο documentation τησ java ςτην διεύθυνςη: https://docs.oracle.com/javase/7/docs/api/javax/swing/joptionpane.html. Ενώ η κλϊςη JOptionPane μπορεύ να φαύνεται περύπλοκη εξαιτύασ των πολλών μεθόδων που μπορεύ να περιϋχει, οι περιςςότερεσ χρόςεισ αυτόσ τησ κλϊςησ εύναι η ςτατικϋσ showxxxdialog που εμφανύζονται ςτον παρακϊτω πύνακα:
Μούραςμα και υλοπούηςη Υύλλου Εργαςύασ 2 (35 λεπτϊ) Τϋλοσ, μοιρϊζεται ςτουσ μαθητϋσ το Φύλλο Εργαςύασ 2 για να υλοποιόςουν τισ Δραςτηριότητεσ 1,2 και 3. 14. Προτϊςεισ για περαιτϋρω δραςτηριότητεσ προτεινόμενεσ εργαςύεσ Οι μαθητϋσ μετϊ την ολοκλόρωςη του ςεναρύου θα μπορούςαν να επιςκεφτούν την επύςημη ςελύδα του Greenfoot (http://www.greenfoot.org/door) και να κατεβϊςουν κϊποια ςενϊρια ώςτε να δουν ςε εφαρμογό τη θεωρύα που διδϊχθηκαν αλλϊ και να πειραματιςτούν ςε αυτϊ. 15. Φρόςη εξωτερικών πηγών Βραχνόσ Ε., Κουρϋτασ Ι., Μακρυγιϊννησ Π., & Παραδεύςη Α., Ειδικϊ Θϋματα Στον Προγραμματιςμό Υπολογιςτών, Σχολικό Βιβλύο Γ τϊξησ ΕΠΑΛ Τομϋασ Πληροφορικόσ Kοlling Μ. (2010), Introduction to Programming with Greenfoot, Object-Oriented Programming in Java with Games and Simulations, Prentice Hall
16. Υύλλα Εργαςύασ ΥΤΛΛΟ ΕΡΓΑΙΑ 1 Οι αςκόςεισ να εκτελεςτούν μϋςα ςτην main() του προγρϊμματοσ. Δραςτηριότητα 1 Δηλώςτε ςτο περιβϊλλον Greenfoot τισ εξόσ μεταβλητϋσ: Αριθμού : x=5, y=x/25, z=65*y, a=0.5, b=67.8 Χαρακτόρεσ: e, v, e Λογικού: flag, check, factor Byte: 67, 0, 137, 89 Δραςτηριότητα 2 Συμπλθρϊςτε τα κενά με χριςθ τελεςτϊν: α) x μεγαλφτερο του y x.y β) x μικρότερο του z x.z γ) x διάφορο του y x.y δ) (x επί y) και z μεγαλφτερο ίςο του (x δια y) μείον z... Δραςτηριότητα 3 Σασ δίνετε το παρακάτω πρόγραμμα: int sum=0; for(int i=o; i<1000; i++) { sum = sum + 5; } Ποια είναι θ τιμι του sum όταν το i είναι 50;... Δραςτηριότητα 4 Πρόβλθμα αςφάλιςθσ αυτοκινιτων
Γράψτε ζνα πρόγραμμα που κακορίηει το κόςτοσ αςφάλιςθσ ενόσ αυτοκινιτου, βαςιηόμενο ςτθν θλικία του οδθγοφ και των αρικμό ατυχθμάτων που ζχει ο οδθγόσ. Η βαςικι τιμι αςφάλιςθσ είναι 500. Υπάρχει ζνα επιπλζον κόςτοσ αν ο οδθγόσ είναι κάτω των 25 ετϊν και ζνα επιπρόςκετο κόςτοσ για ατυχιματα: # ατυχθμάτων Πρόςκετο Κόςτοσ 1 50 2 125 3 225 4 375 5 575 6+ Δεν δίνεται αςφάλιςθ Εκτυπϊςτε τθν τελικι τιμι αςφάλιςθσ. Δραςτηριότητα 5 Δθμιουργιςτε ζνα πρόγραμμα που κάνει τα παρακάτω με τθ χριςθ κατάλλθλων εντολϊν: Τοποκετείςτε δυο βάτραχουσ με ζναν από τουσ τρόπουσ που διδαχτικατε ςτθν προθγοφμενθ ενότθτα. Βρείτε και ςθμειϊςτε το όνομα του κόςμου με χριςθ εντολισ. Ποια εντολι χρθςιμοποιιςατε;... Ορίςτε τισ ςυντεταγμζνεσ του πρϊτου βατράχου ςτο (50,50) και του δεφτερου ςτο (600,90). Ποια εντολι χρθςιμοποιιςατε;... Χρθςιμοποιείςτε τθν εντολι while για τθν εκτζλεςθ του παρακάτω κϊδικα: Όςο οι βάτραχοι είναι μζςα ςτο παραλλθλόγραμμο (30,30),(550,350),(350,30)& (550,350) οι βάτραχοι κα κουνιοφνται κατά 5. Τισ μονζσ φορζσ που οι βάτραχοι κα βγαίνουν εκτόσ ορίων κα αλλάηει rotation τουσ κατά 90 και κα κουνιοφνται κατά -2. Ζπειτα το rotation επανζρχεται. Τισ ηυγζσ φορζσ κα αλλάηει rotation τουσ κατά -90 και κα κουνιοφνται κατά -5. Ζπειτα το rotation επανζρχεται. Εκτελζςτε τουσ ελζγχουσ με χριςθ τθσ εντολισ if. Μετακινείςτε τουσ βατράχουσ χρθςιμοποιϊντασ τθν ςυνάρτθςθ move(). Περιςτρζψτε τουσ με τθν χριςθ του setrotation(). Ο ζλεγχοσ μονϊν-ηυγϊν μπορεί να γίνει με τθν χριςθ Boolean. Κάντε παφςθ ςτο πρόγραμμα όταν ζνασ βάτραχοσ τουλάχιςτον είναι ζξω των ορίων και δείτε: Τθν κζςθ του βάτραχου με τθν χριςθ τθσ getx() & gety(). Τι τιμζσ ςασ επεςτράφθςαν;... &... Τθν τιμι περιςτροφισ του βάτραχου με τθν χριςθ του getrotation().
Τι τιμι ςασ επιςτράφθκε;... Δραςτηριότητα 6 Δημιουργόςτε: 1. Ένα πύνακα Α με 10 θϋςεισ που δϋχεται χαρακτόρεσ. 2. Ένα πύνακα Β με 10 θϋςεισ που να περιϋχει τα ακϋραια ςτοιχεύα 2,4,6,8,10,12,14,16,18,20 3. Ένα δυςδιϊςτατο πύνακα Γ με διαςτϊςεισ 2,3 και γεμύςτε τον με ακϋραια ςτοιχεύα όπωσ εςεύσ επιθυμεύτε. Δραςτηριότητα 1 ΥΤΛΛΟ ΕΡΓΑΙΑ 2 Εμφανίςτε μινυμα ςτον χριςτθ που του ηθτάει το όνομά του και ζναν αρικμό. Τυπϊςτε το μινυμα «καλι προςπάκεια, όνομα_χριςτθ!» αν ο αρικμόσ είναι διάφοροσ από 5, ανάμεςα ςτο 8 και το 10 ι μεγαλφτερο του 33. Αλλιϊσ τυπϊςτε «προςπάκθςε ξανά όνομα_χριςτθ». Χρθςιμοποιιςτε τουσ τελεςτζσ!=, && και μζςα ςτθν ςυνκικθ του if. Συνοδεφςτε τον κϊδικά ςασ με ςχολιαςμό. Δραςτηριότητα 2 Χρθςιμοποιιςτε τθν εντολι if-else για να γράψετε ζνα πρόγραμμα που κακορίηει ποιοσ από τουσ τρεισ αρικμοφσ που δίνει ο χριςτθσ είναι ο μεγαλφτεροσ, ποιοσ είναι ο μικρότεροσ και εμφανίςτε ανάλογο μινυμα ςτον χριςτθ. Συνοδεφςτε τον κϊδικά ςασ με ςχολιαςμό Δραςτηριότητα 3 1. Δημιουργόςτε ϋναν Κόςμο με φόντο τησ αρεςκεύασ ςασ 2. Τοποθετόςτε ςτο Κόςμο ϋνα αντικεύμενο(για παρϊδειγμα διαςτημόπλοιο) από τισ εικόνεσ που υπϊρχουν ςτο Greenfoot 3. Γρϊψτε τον παρακϊτω κώδικα ςτην μϋθοδο act() του αντικειμϋνου που δημιουργόςατε, τα ςχόλια εύναι γραμμϋνα για την καλύτερη κατανόηςη των μεθόδων. if ( Greenfoot.isKeyDown("left") ) { move(-4);} /*Η μϋθοδοσ iskeydown() ελϋγχει αν ϋχει πατηθεύ το αριςτερό βϋλοσ από το πληκτρολόγιο και επιςτρϋφει true ό false*/ else if ( Greenfoot.isKeyDown("right") ) { move(4);} /*Η μϋθοδοσ iskeydown() ελϋγχει αν ϋχει πατηθεύ το δεξύ βϋλοσ από το πληκτρολόγιο και επιςτρϋφει true ό false*/ else if ( Greenfoot.isKeyDown("up") ) { setlocation(90,90);}
/*Η μϋθοδοσ iskeydown() ελϋγχει αν ϋχει πατηθεύ το πϊνω βϋλοσ από το πληκτρολόγιο και επιςτρϋφει true ό false*/ else if ( Greenfoot.isKeyDown("down") ) { setlocation(500,300); } /*Η μϋθοδοσ iskeydown() ελϋγχει αν ϋχει πατηθεύ το κϊτω βϋλοσ από το πληκτρολόγιο και επιςτρϋφει true ό false*/ if (Greenfoot.mouseClicked( null ) ) { /*Η μϋθοδοσ mouseclicked() ελϋγχει αν ϋχει γύνει κλικ με το ποντύκι οπουδόποτε και επιςτρϋφει true, επειδό ϋχει την τιμό null */ MouseInfo info = Greenfoot.getMouseInfo(); /*Η μϋθοδοσ getmouseinfo() επιςτρϋφει το αντικεύμενο info πληροφορύεσ για την κατϊςταςη του ποντικιού*/ System.out.println( info.getx() + " " + info.gety()); //Οι μϋθοδοι getx(),gety() επιςτρϋφουν τισ ςυντεταγμϋνεσ του ςημεύου που ϋγινε το κλικ } if (Greenfoot.mouseClicked( this ) ) { // Ελϋγχει αν ϋχει γύνει κλικ με το ποντύκι ςτο ςυγκεκριμϋνο αντικεύμενο και επιςτρϋφει true ό false MouseInfo info = Greenfoot.getMouseInfo(); Actor=info.getActor(); //Η μϋθοδοσ getactor() επιςτρϋφει το αντικεύμενο πϊνω ςτο οπούο ϋγινε κλικ getworld().removeobject(actor); /*Η μϋθοδοσ getworld() επιςτρϋφει τον Κόςμο μϋςα ςτον οπούο υπϊρχουν τα αντικεύμενα, και η μϋθοδοσ removeobject() αφαιρεύ το αντικεύμενο από τον Κόςμο */ } 4. Εκτελϋςτε το πρόγραμμα 5. Τϋλοσ, προςθϋςτε ακόμα ϋνα αντικεύμενο τησ αρεςκεύασ ςασ ώςτε να εκτελεύ τα παρακϊτω: i. Πατώντασ το πλόκτρο w, το αντικεύμενο θα πηγαύνει ςτισ ςυντεταγμϋνεσ (300,240) ii. Πατώντασ το πλόκτρο m το αντικεύμενο θα αφαιρεύται από τον Κόςμο iii. Πατώντασ οπουδόποτε, το αντικεύμενο θα μετακινεύται κατϊ 50 iv. Πατώντασ το πλόκτρο k θα εμφανύζονται οι ςυντεταγμϋνεσ του αντικειμϋνου