ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ
ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ
 ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ

Μάρτιος 1998
ΕΙΣΑΓΩΓΗ

Το μάθημα Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον εντάσσεται ως υποχρεωτικό στο ωρολόγιο πρόγραμμα της Γ΄ τάξης του κύκλου Πληροφορικής και Υπηρεσιών της Τεχνολογικής Κατεύθυνσης του Ενιαίου Λυκείου. Διδάσκεται τρεις ώρες την εβδομάδα και έχει γενικό σκοπό, οι μαθητές:
•	να αναπτύξουν αναλυτική και συνθετική σκέψη 
•	να αποκτήσουν ικανότητες μεθοδολογικού χαρακτήρα
•	να μπορούν να επιλύουν απλά προβλήματα σε προγραμματιστικό περιβάλλον.

Η προσέγγιση των εννοιών και η καλλιέργεια των δεξιοτήτων που απαιτούνται για την υλοποίηση του γενικού σκοπού ταξινομούνται σε τέσσερις άξονες-ενότητες:

Ενότητα	Περιεχόμενο	
1.	Ανάλυση προβλήματος
	•	Καθορισμός και κατανόηση του προβλήματος
•	Δομή του προβλήματος
•	Καθορισμός απαιτήσεων
Διδακτικές ώρες:12	
2. Σχεδίαση αλγορίθμων	•	Αλγόριθμοι - Βασικές έννοιες
•	Μεθοδολογίες σχεδιασμού αλγορίθμων
•	Ανάπτυξη αλγορίθμων
•	Έλεγχος αλγορίθμων
Διδακτικές ώρες:27	
3. Υλοποίηση σε προγραμματιστικό περιβάλλον

	•	Είδη, τεχνικές και περιβάλλοντα προγραμματισμού
•	Στοιχεία δομημένου προγραμματισμού
•	Στοιχεία σύγχρονων προγραμματιστικών περιβαλλόντων
•	Σχεδιασμός και υλοποίηση περιβάλλοντος διεπαφής
•	Έλεγχος και εκσφαλμάτωση προγράμματος
Διδακτικές ώρες: 27	
4. Αξιολόγηση-Τεκμηρίωση	•	Αξιολόγηση, βελτιστοποίηση, επέκταση του προγράμματος
•	Τεκμηρίωση του προγράμματος
•	Κύκλος ζωής λογισμικού
Διδακτικές ώρες: 9	

Σκοπός του μαθήματος δεν είναι η εκμάθηση μιας γλώσσας προγραμματισμού. Έμφαση δίνεται στις ενότητες Ανάλυση προβλήματος και Σχεδίαση αλγορίθμου ώστε οι μαθητές, 
•	να αναπτύξουν δεξιότητες αλγοριθμικής προσέγγισης, δημιουργικότητα, φαντασία, αναλυτικό πνεύμα και αυστηρότητα στην έκφραση 
•	να μπορούν να διακρίνουν ποια προβλήματα αντιμετωπίζονται σε προγραμματιστικό περιβάλλον

1η Ενότητα: Ανάλυση προβλήματος

Ο Γενικός σκοπός της ενότητας αυτής είναι, να αναπτύξουν οι μαθητές ικανότητες αναλυτικής και συστηματικής προσέγγισης στη διαδικασία επίλυσης προβλημάτων. 

Ειδικοί σκοποί
Οι μαθητές πρέπει:
•	να μπορούν να ανιχνεύουν και να διακρίνουν τα μέρη ενός προβλήματος
•	να μπορούν να προσδιορίζουν και να αναφέρουν με ακρίβεια και σαφήνεια τα δεδομένα και τα ζητούμενα ενός προβλήματος

Περιεχόμενα	Στόχοι
Οι μαθητές πρέπει…	Οδηγίες-Παρατηρήσεις	
1.	Καθορισμός και κατανόηση του προβλήματος
	να μπορούν να αποσαφηνίζουν και να κατανοούν πλήρως το “χώρο” του προβλήματος και  να απαντούν σε όλα τα σχετικά ερωτήματα.

να μπορούν να θέτουν προβλήματα.	Να δοθούν παραδείγματα προβλημάτων από την καθημερινή ζωή και διάφορους επιστημονικούς τομείς. Με διάλογο, οι μαθητές να προσεγγίσουν τα προβλήματα και να τα κατανοήσουν.

Να θέσουν οι μαθητές προβλήματα και να συζητηθούν στην τάξη.	
2.	Δομή του προβλήματος

	να μπορούν να διακρίνουν τα μέρη ενός προβλήματος 

να μπορούν να αναλύουν ένα πρόβλημα σε απλούστερα προβλήματα 	Να δοθούν παραδείγματα προβλημάτων που μπορούν να αναλυθούν σε άλλα επιμέρους απλούστερα προβλήματα και να γίνει ανάλυσή τους (φραστικά και με διαγράμματα)
	
3.	Καθορισμός απαιτήσεων

•	Προσδιορισμός δεδομένων
•	Προσδιορισμός αποτελεσμάτων
	να μπορούν να προσδιορίζουν τα δεδομένα του προβλήματος, τη φύση και το εύρος τους, καθώς και τα ζητούμενα αποτελέσματα και τον τρόπο παρουσίασής τους	Να γίνει συζήτηση σε θέματα όπως: 
•	Τι ζητάει; Είναι σαφές;
•	Ποια είναι τα δεδομένα;
•	Ποια είναι τα ζητούμενα αποτελέσματα;
•	Οριοθέτηση του προβλήματος	

2η Ενότητα: Σχεδίαση αλγορίθμου

Ο Γενικός σκοπός της ενότητας αυτής είναι, να αποκτήσουν οι μαθητές ικανότητες μεθοδολογικού χαρακτήρα που αφορούν στο σχεδιασμό, στην ανάπτυξη και στον έλεγχο αλγορίθμων.

Ειδικοί σκοποί
Οι μαθητές πρέπει:
•	να κατανοήσουν τη σπουδαιότητα των αλγορίθμων 
•	να μπορούν να εφαρμόζουν τους κανόνες και τις τεχνικές σχεδίασης αλγορίθμων
•	να μπορούν να αποφανθούν εάν ένας αλγόριθμος είναι σωστός και να εντοπίζουν πιθανά λάθη
•	να μπορούν να αξιολογούν και να συγκρίνουν αλγορίθμους

Περιεχόμενα	Στόχοι
Οι μαθητές πρέπει…	Οδηγίες-Παρατηρήσεις	
1.	Αλγόριθμοι – Βασικές έννοιες

•	Ορισμός- Σπουδαιότητα αλγορίθμου
•	Πληρότητα αλγορίθμου
•	Περιγραφή/ αναπαράσταση αλγορίθμου
	να κατανοήσουν την έννοια και τη σπουδαιότητα των αλγορίθμων 
	Με πολλά παραδείγματα να αναδειχθεί η ανάγκη αλγοριθμικής προσέγγισης στη διαδικασία επίλυσης προβλημάτων και να γίνει αναφορά στα άλυτα και ανοικτά προβλήματα. 

Να γίνει συζήτηση για θέματα που αφορούν στην πληρότητα ενός αλγορίθμου (Είσοδος, έξοδος, περατότητα, καθοριστικότητα, αποτελεσματικότητα) και να γίνει αναφορά στην πολυπλοκότητα ενός αλγορίθμου

Να δοθούν έτοιμα παραδείγματα αλγορίθμων που αφορούν σε προβλήματα που έχουν ήδη αναφερθεί στην προηγούμενη ενότητα:
§	σε ελεύθερο κείμενο
§	σε φυσική γλώσσα με βήματα
§	με διαγράμματα ροής
§	με ψευδοκώδικα.
Το κύριο βάρος να δοθεί στον ψευδοκώδικα

Να μορφοποιηθούν προβλήματα σε μαθηματικά μοντέλα και να συζητηθεί η φράση: “η μοντελοποίηση είναι περισσότερο τέχνη παρά τεχνική”.

Να γίνει αναφορά σε διάφορα είδη αλγορίθμων (αναδρομικός, παράλληλος, προσεγγιστικός, κλπ).	
2. Μεθοδολογίες σχεδιασμού αλγορίθμων 

•	Προσέγγιση “από πάνω προς τα κάτω”
•	Προσέγγιση “από κάτω προς τα πάνω”
	να γνωρίσουν σύγχρονες τεχνικές σχεδίασης αλγορίθμων

να μπορούν να εφαρμόζουν την “από πάνω προς τα κάτω” μέθοδο

να εξοικειωθούν με την κατά βήματα ανάλυση των αλγορίθμων 	Να συζητηθούν οι δυσκολίες στο σχεδιασμό αλγορίθμων και να τεθεί για συζήτηση το ερώτημα: “υπάρχει αλγόριθμος για τη σχεδίαση αλγορίθμων;”

Να χρησιμοποιηθούν απλά προβλήματα των οποίων η αλγοριθμική προσέγγιση να σχεδιαστεί με την “από πάνω προς τα κάτω” μέθοδο
	
3. Ανάπτυξη αλγορίθμων

•	Βασικές αλγοριθμικές δομές (ακολουθία, επιλογή, επανάληψη)
•	Αναδρομή
•	Εμφωλιασμένες δομές	να εξοικειωθούν και να μπορούν να εφαρμόζουν διάφορες τεχνικές για την ανάπτυξη αλγορίθμων 
	Να δοθεί ιδιαίτερη έμφαση στις επαναληπτικές διαδικασίες (δυνατότητες που προσφέρουν, τρόποι τερματισμού κ.λπ.).

Να γίνει συζήτηση σχετικά με τη δυνατότητα υλοποίησης οποιουδήποτε αλγορίθμου με τη χρήση μόνο των τριών αλγοριθμικών δομών: ακολουθία, επιλογή, επανάληψη.

Με κατάλληλα παραδείγματα να παρουσιαστεί και να σχολιαστεί η δομή της αναδρομής. 

Να παρουσιαστούν οι δομές του πίνακα και περιληπτικά της στοίβας, της ουράς, της λίστας και του δένδρου

Να δοθούν παραδείγματα αλγορίθμων σχετικά με αναζήτηση και ταξινόμηση στοιχείων πίνακα

Να δοθούν εργασίες στο πλαίσιο των οποίων οι μαθητές να εξοικειωθούν με τις διάφορες τεχνικές σχεδίασης αλγορίθμων έτσι ώστε να γίνουν τελικά ικανοί να γράφουν έναν αλγόριθμο για ένα πρόβλημα που τους δίνεται	
4. Έλεγχος αλγορίθμων

•	Διαδικασίες τερματισμού αλγορίθμων
•	Εντοπισμός λαθών αλγορίθμων
•	Σύγκριση αλγορίθμων
	να μπορούν να ελέγχουν την ορθότητα και την πληρότητα ενός αλγορίθμου και να διερευνούν οριακές καταστάσεις.

	Να γίνει συζήτηση σχετικά με την αποδοτικότητα των αλγορίθμων

Να δοθούν διαφορετικοί αλγόριθμοι για το ίδιο πρόβλημα και να γίνει συζήτηση για θέματα όπως:
•	απαιτήσεις σε χρόνο 
•	πόροι του συστήματος που απασχολούν, κλπ	

3η Ενότητα: Υλοποίηση σε προγραμματιστικό περιβάλλον

Ο Γενικός σκοπός της ενότητας αυτής είναι, να αποκτήσουν  οι μαθητές δεξιότητες υλοποίησης αλγορίθμων σε σύγχρονα προγραμματιστικά περιβάλλοντα. 

Ειδικοί σκοποί
Οι μαθητές πρέπει:
•	να μπορούν να μετατρέπουν έναν αλγόριθμο επίλυσης ενός προβλήματος σε πρόγραμμα
•	να μπορούν να επιλέγουν το καταλληλότερο, κατά περίπτωση, προγραμματιστικό περιβάλλον
•	να μπορούν να διορθώνουν και να βελτιώνουν τα προγράμματα που δημιουργούν.

Περιεχόμενα	Στόχοι
Οι μαθητές πρέπει…	Οδηγίες-Παρατηρήσεις	
1.	Είδη, τεχνικές και περιβάλλοντα προγραμματισμού

•	Είδη προγραμματισμού
•	Τεχνικές προγραμματισμού
•	Προγραμματιστικά περιβάλλοντα
	να μπορούν να αναφέρουν τα κυριότερα  είδη προγραμματισμού και να περιγράφουν τα βασικά χαρακτηριστικά τους

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

Να γίνει αναφορά στα σύγχρονα προγραμματιστικά περιβάλλοντα (δυνατότητες που έχουν, ευκολίες που παρέχουν κλπ)	
2. Στοιχεία δομημένου προγραμματισμού

•	Γενικές αρχές δομημένου προγραμματισμού
•	Τύποι δεδομένων
•	Σταθερές και  μεταβλητές 
•	Εντολές εισόδου και εξόδου
•	Δομή ακολουθίας, ελέγχου-επιλογής, επανάληψης
•	Αναδρομή
•	Πίνακες
•	Διαδικασίες
•	Συναρτήσεις

	να μπορούν να δημιουργούν απλές εφαρμογές με τη χρήση δομημένης γλώσσας προγραμματισμού

	Να επισημανθεί ότι ο δομημένος προγραμματισμός εμπεριέχει τις έννοιες του ιεραρχικού και του τμηματικού προγραμματισμού

Να επισημανθούν και να δοθεί έμφαση στα πλεονεκτήματα του δομημένου προγραμματισμού 

Να δίδονται εναλλακτικές προσεγγίσεις και να συζητούνται τα πλεονεκτήματα και τα μειονεκτήματά τους. 

Να γίνει συζήτηση πάνω στις έννοιες διαδικασία και ρουτίνα 

Να συνηθίσουν οι μαθητές να δημιουργούν μικρές και εύχρηστες βιβλιοθήκες γενικής χρήσης

Να επιλυθούν απλά προβλήματα σε περιβάλλον δομημένης γλώσσας προγραμματισμού 	
3. Στοιχεία σύγχρονων προγραμματιστικών περιβαλλόντων

•	Γενικές αρχές αντικειμενοστραφούς οδηγούμενου από γεγονότα προγραμματισμού
•	Αντικείμενα και ιδιότητες τους
•	Γεγονότα, μέθοδοι
•	Στοιχεία γραφικού προγραμματιστικού περιβάλλοντος
•	Menu επιλογών
•	Πλαίσια διαλόγου
•	Επικοινωνία με άλλες εφαρμογές 
	να κατανοήσουν τις βασικές αρχές του αντικειμενοστραφούς, οδηγούμενου από γεγονότα προγραμματισμού και να μπορούν να δημιουργούν απλές εφαρμογές.
	Να εξηγηθούν οι έννοιες κλάση, αντικείμενο, κληρονομικότητα. 

Να επισημανθεί πως κάθε αντικείμενο δεν έχει υποχρεωτικά και το γραφικό του αντίστοιχο

Να εξηγηθούν οι έννοιες μέθοδος και διαδικασία 

Να υλοποιηθούν απλές εφαρμογές σε περιβάλλον αντικειμενοστραφούς, οδηγούμενης από γεγονότα γλώσσας προγραμματισμού 

Να γίνουν απλά παραδείγματα επικοινωνίας της εφαρμογής με άλλες εφαρμογές (πχ. επεξεργαστής κειμένου, λογιστικό φύλλο) 

Να χρησιμοποιηθούν σε εφαρμογές, αρχεία “πολυμεσικών” δεδομένων, μέσω των κατάλληλων μηχανισμών 	
4. Σχεδιασμός και υλοποίηση περιβάλλοντος διεπαφής

•	Κανόνες εργονομίας λογισμικού
•	Στοιχεία ψυχολογίας χρωμάτων
	να μπορούν να σχεδιάζουν ένα λειτουργικό και εύχρηστο περιβάλλον διεπαφής που θα ικανοποιεί τους βασικούς κανόνες εργονομίας λογισμικού.	Να παρουσιαστούν και να αναλυθούν οι βασικές αρχές και κανόνες της εργονομίας λογισμικού και να δοθούν παραδείγματα.

Να δοθεί έμφαση στη  σχεδίαση και υλοποίηση της εξόδου του προγράμματος. 	
5. Έλεγχος και εκσφαλμάτωση προγράμματος 

•	Κατηγορίες λαθών
•	Εργαλεία εκσφαλμάτωσης
•	Βήμα προς βήμα εκτέλεση προγράμματος	να μπορούν να χειρίζονται τα εργαλεία εκσφαλμάτωσης που διαθέτει το προγραμματιστικό περιβάλλον

να μπορούν να εντοπίζουν τα ορθογραφικά, τα συντακτικά και τα λογικά λάθη των προγραμμάτων που δημιουργούν.
	Να χρησιμοποιήσουν οι μαθητές τα εργαλεία του προγραμματιστικού περιβάλλοντος για να εκτελέσουν βήμα-βήμα το πρόγραμμά τους με σκοπό να εντοπίσουν εκείνα τα σημεία που πιθανόν χρειάζεται να  διορθώσουν ή να βελτιώσουν. 

Να υποδειχθούν τρόποι εντοπισμού των λογικών λαθών και να επισημανθεί ότι τα λογικά λάθη δεν μπορεί να τα εντοπίσει ο υπολογιστής.

Να ενθαρρύνονται οι μαθητές να επιδιώκουν τη βελτίωση των προγραμμάτων που δημιουργούν 	

4η Ενότητα: Αξιολόγηση-Τεκμηρίωση

Ο Γενικός σκοπός της ενότητας αυτής είναι, να αποκτήσουν οι μαθητές ικανότητες τεκμηρίωσης και αξιολόγησης της εργασίας τους.

Ειδικοί σκοποί
Οι μαθητές πρέπει:
•	να αιτιολογούν με πληρότητα και με ακρίβεια τη μεθοδολογία επίλυσης του προβλήματος που ακολούθησαν και εφάρμοσαν
•	να μπορούν να κρίνουν και να αξιολογούν τα αποτελέσματα της εργασίας τους
•	να αναζητούν εναλλακτικές λύσεις 

Περιεχόμενα	Στόχοι
Οι μαθητές πρέπει…	Οδηγίες-Παρατηρήσεις	
1.	Αξιολόγηση, βελτιστοποίηση, επέκταση του προγράμματος

•	Κριτήρια αξιολόγησης προγράμματος
•	Επέκταση προγράμματος	να μπορούν να αξιολογούν τα προγράμματα που δημιουργούν και να διερευνούν τις δυνατότητες επέκτασής τους 

να μπορούν να προτείνουν εναλλακτικές λύσεις και να τις συγκρίνουν.	Να ενθαρρύνονται οι μαθητές να διατυπώνουν για το ίδιο πρόβλημα εναλλακτικές προγραμματιστικές λύσεις, να τις συγκρίνουν και να τις αξιολογούν με βάση προκαθορισμένα κριτήρια.

Να προσδιορίζονται, με τη βοήθεια του καθηγητή, τα όρια χρήσης κάθε προγράμματος που δημιουργούν.

Να αναζητούν και να διερευνούν τις δυνατότητες επέκτασης των προγραμμάτων που δημιουργούν (νέες πρόσθετες λειτουργίες κ.λπ.).	
2. Τεκμηρίωση του προγράμματος

•	Φάκελος τεκμηρίωσης προγράμματος
	να κατανοήσουν τη σημασία και την αναγκαιότητα της τεκμηρίωσης

να μπορούν να καταγράφουν τα στοιχεία και τις λειτουργίες του προγράμματός τους	Να ζητηθεί από τους μαθητές, με το τέλος της ανάπτυξης μιας εφαρμογής, να δημιουργήσουν και να καταθέσουν φάκελο τεκμηρίωσής της.	
3. Κύκλος ζωής λογισμικού

•	Ανάλυση απαιτήσεων
•	Λογικός σχεδιασμός 
•	Φυσικός σχεδιασμός
•	Ανάπτυξη προγραμμάτων
•	Λειτουργία - Συντήρηση	να μπορούν να αναγνωρίζουν τα διάφορα στάδια του κύκλου ζωής λογισμικού	Να αξιοποιηθεί το θέμα ώστε να γίνει μια επισκόπηση όλης της ύλης, αφού προηγουμένως δοθούν οι έννοιες του κύκλου ζωής λογισμικού