22 Απριλίου 2018

Άσκηση πανελλαδικών ΓΕΛ στο μάθημα ΑΕΠΠ προσαρμοσμένη για Python


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

Κατηγορία
έργου
Προϋπολογισμός
έργου σε ευρώ
Ποσοστό
Επιδότησης
Μικρή
200.000 – 299.999
60%
Μεγάλη
300.000 – 399.999
70%

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

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

2. Να διαβάζει το όνομα κάθε έργου. Η σειρά ανάγνωσης είναι η σειρά υποβολής των έργων. Η επαναληπτική διαδικασία να τερματίζεται, όταν αντί για όνομα έργου δοθεί η λέξη «ΤΕΛΟΣ», ή όταν το διαθέσιμο ποσό έχει μειωθεί τόσο, ώστε να μην είναι δυνατή η επιδότηση ούτε ενός έργου μικρής κατηγορίας. Για κάθε έργο, αφού διαβάσει το όνομά του, να διαβάζει και τον προϋπολογισμό του (δεν απαιτείται έλεγχος εγκυρότητας του προϋπολογισμού).

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

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

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


Ενδεικτική λύση

15 Απριλίου 2018

Άσκηση πανελλαδικών ΓΕΛ στο μάθημα ΑΕΠΠ προσαρμοσμένη για Python


Σε κάποιο σχολικό αγώνα, για το άθλημα «Άλμα εις μήκος» καταγράφεται για κάθε αθλητή η καλύτερη έγκυρη επίδοσή του. Τιμής ένεκεν, πρώτος αγωνίζεται ο περσινός πρωταθλητής. Η Επιτροπή του αγώνα διαχειρίζεται τα στοιχεία των αθλητών που αγωνίστηκαν. Να γράψετε πρόγραμμα σε python που:



1. Να ζητάει το ρεκόρ αγώνων και να το δέχεται, εφόσον είναι θετικό και μικρότερο των 10 μέτρων.

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

3. Να εμφανίζει το όνομα του αθλητή με τη χειρότερη επίδοση.

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

5. Να βρίσκει και να εμφανίζει τη θέση που κατέλαβε στην τελική κατάταξη ο περσινός πρωταθλητής.

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



Ενδεικτική λύση

20 Μαρτίου 2018

Παράδειγμα δημιουργίας κλάσης Καλαθοσφαιριστή με ιδιότητες όνομα, ύψος, πόντους και φάουλ και μεθόδων σημείωσης πόντων και φάουλ

Παράδειγμα δημιουργίας κλάσης Καλαθοσφαιριστή με ιδιότητες όνομα, ύψος, πόντους και φάουλ και μεθόδων σημείωσης πόντων (scores) και φάουλ (makesfoul).
Οι αρχικές τιμές για τους πόντους και τα φάουλ ενός παίκτη (στιγμιότυπο κλάσης Καλαθοσφαιριστή) είναι 0.
Ζητάμε τα ύψη των παικτών h1 και h2
Δημιουργούμε δύο παίκτες (στιγμιότυπα) p1 και p2 με ονόματα Player1 και Player2 και ύψη h1 και h2.
Ακολουθούν οι παρακάτω ενέργειες:
Ο p1 κάνει φάουλ
Ο p2 βάζει 3 πόντους
Ο p1 κάνει φάουλ
Ο p2 βάζει 2 πόντους
Ο p2 κάνει φάουλ
Εμφανίζονται οι πόντοι και τα φάουλ των 2 παικτών

Το παράδειγμα

27 Φεβρουαρίου 2018

Άσκηση με υπολογισμό αθροίσματος, μέσου όρου, μέγιστου και ελάχιστου σε αρχείο κειμένου που περιέχει αριθμούς

Να γίνει πρόγραμμα που ζητάει 10 θετικούς ακέραιους αριθμούς (>0, να γίνεται έλεγχος τιμών) και τους γράφει σε ένα αρχείο κειμένου (έναν σε κάθε γραμμή). Μετά να ανοίγει το αρχείο για ανάγνωση και να υπολογίζεται το άθροισμα, ο μέσος όρος, ο μεγαλύτερος και ο μικρότερος αριθμός.

1 Φεβρουαρίου 2018

Άσκηση Python με αρχεία κειμένου

Να γίνει πρόγραμμα σε Python που ζητά ακέραιους θετικούς αριθμούς (>=0) μέχρι να δοθεί ο αριθμός 0.
 Σε περίπτωση που ο αριθμός που δίνουμε είναι κάτω από το 0 να τον ξαναζητά.
Οι αριθμοί που δίνουμε να γράφονται σε ένα αρχείο κειμένου (ένας αριθμός σε κάθε γραμμή).
Μετά το αρχείο να ανοίγει για ανάγνωση και να διαβάζονται μία-μία οι γραμμές του (οι αριθμοί) και να εμφανίζονται.
Οι αριθμοί να αθροίζονται ώστε στο τέλος του προγράμματος να εμφανίζεται το άθροισμά τους.

Ενδεικτική Λύση


Εισαγωγικές σημειώσεις για τα αρχεία κεμένου στην Python

Εισαγωγικές σημειώσεις και εντολές για τα αρχεία κειμένου στην Python

PDF

21 Ιανουαρίου 2018

Παράλληλη ταξινόμηση 2 λιστών με τον αλγόριθμο ευθείας ανταλλαγής (bubble sort)

Στην περίπτωση που έχουμε 2 λίστες που συσχετίζονται, μπορούμε με την εφαρμογή του αλγόριθμου ταξινόμησης ευθείας ανταλλαγής να τις ταξινομήσουμε ταυτόχρονα.

Έστω 2 λίστες που συσχετίζονται:


x1=[65, 90, 85, 92, 78, 80]

x2=['A', 'B', 'C', 'D', 'E', 'F']

Π.χ. αν είναι βαθμολογίες, ο 'A' έχει βαθμολογία 65, ο 'B' έχει βαθμολογία 90, ο 'C' 85 κ.ο.κ.

Παρουσιάζονται δυο υλοποιήσεις του αλγόριθμου. 
Στην πρώτη, η λίστα με τις βαθμολογίες ταξινομείται σε αύξουσα σειρά (65,78,80,85,90,92) και παράλληλα η λίστα των ονομάτων. 
Στη δεύτερη, η λίστα με τις βαθμολογίες ταξινομείται σε φθίνουσα σειρά (92,90,85,80,78,65) και παράλληλα η λίστα των ονομάτων. 
Παρατήρηση:
Όταν ταξινομούμε σε φθίνουσα σειρά η γραμμή:
if L[j]<L[j-1]:
 γίνεται:
if L[j]>L[j-1]:

Επαναληπτικές ασκήσεις σε Συμβολοσειρές και Λίστες (strings and lists)

Φύλλο επανάληψης στις συμβολοσειρές (strings) και στις λίστες (lists)


Το φύλλο σε pdf


18 Ιανουαρίου 2018

Ταξινόμηση ευθείας ανταλλαγής (bubble sort)

Δημιουργία συνάρτησης που υλοποιεί τον αλγόριθμο ευθείας ανταλλαγής (bubble sort). Στο κυρίως πρόγραμμα γεμίζουμε μια λίστα με αριθμούς χωρίς ταξινόμηση. Καλούμε τη συνάρτηση ταξινόμησης και εμφανίζεται η λίστα αταξινόμητη και ταξινομημένη.




Ταξινομηση bubble sort

9 Ιανουαρίου 2018

Δυαδική αναζήτηση αριθμών και δυαδική αναζήτηση αριθμού σε ταξινομημένη λίστα σε python

Δυαδική αναζήτηση αριθμού (του χρήστη) σε εύρος αριθμών (1-1000) σε python. Ο αλγόριθμος ρωτάει αν ο αριθμός που αναζητούμε είναι μεγαλύτερος ή μικρότερος από αυτόν που προτείνει ο αλγόριθμος.




Δυαδική αναζήτηση αριθμού από 1 - 1000


Δυαδική αναζήτηση αριθμού σε ταξινομημένη λίστα (αύξουσα ταξινόμηση) σε python. Ο αλγόριθμος υλοποιείται με τη χρήση συνάρτησης που δέχεται ως ορίσματα τη λίστα και το αριθμό που αναζητούμε.  Ο αλγόριθμος συγκρίνει αν ο αριθμός που αναζητούμε είναι μεγαλύτερος ή μικρότερος από αυτόν που προτείνει ο αλγόριθμος.


Αλγόριθμος δυαδικής αναζήτησης σε ταξινομημένη λίστα