Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Λύσεις Θεμάτων Επαναληπτικών Εξετάσεων Ενιαίου Λυκείου 2007 Θέμα 1 ο Α. Β. 1. Σωστό 2. Σωστό 3. Λάθος 4. Λάθος 5. Λάθος 1. Το διάγραμμα ροής είναι το ακόλουθο: 2. Το αντίστοιχο τμήμα αλγορίθμου χρησιμοποιώντας την εντολή Για από μέχρι είναι: Για i από 1 μέχρι 9 με_βήμα 3 Εμφάνισε I Γ. 1. Σελίδα 17 18 σχολικού βιβλίου: Απόφασης Υπολογιστικά Βελτιστοποίησης
2. Δεν μπορούν να χρησιμοποιηθούν η Εισαγωγή και η Διαγραφή γιατί οι πίνακες έχουν σταθερό μέγεθος (στατική δομή), το οποίο καθορίζεται στο τμήμα δηλώσεων του προγράμματος. Δηλαδή, το μέγεθος τους δεν μπορεί να μεταβληθεί 3. Η διαφορά μεταξύ α) Μεταβλητών και παραμέτρων είναι (σελίδα 31 και 210 σχολικού βιβλίου): Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο, που χρησιμοποιείται για να παραστήσει ένα στοιχείο δεδομένου. Στη μεταβλητή εκχωρείται μια τιμή, η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης του αλγορίθμου. Μία παράμετρος είναι μία μεταβλητή που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο β) Τυπικών και πραγματικών παραμέτρων είναι (σελίδα 217 σχολικού βιβλίου): Τυπικές είναι οι παράμετροι που δηλώνονται στη λίστα παραμέτρων του υποπρογράμματος. Πραγματικές είναι οι παράμετροι που δηλώνονται στη λίστα παραμέτρων του υποπρογράμματος κατά την κλήση του και αντικαθιστούν τις τυπικές παραμέτρους Δ. 1. Δεν ικανοποιείται το κριτήριο της Περατότητας. Ο λόγος είναι γιατί ο μετρητής (το I) δεν αυξάνει με αποτέλεσμα να έχουμε ή ατέρμων βρόχο, σε περίπτωση που το Π[1] Χ (μη περατότητα), ή μία μόνο επανάληψη, σε περίπτωση που το Π[1] = Χ 2. Αλγόριθμος Αναζήτηση Δεδομένα //Π,Ν,Χ// flag Ψευδής Ι 1 Όσο Ι Ν και flag = Ψευδής επανάλαβε Αν Π[Ι] = Χ τότε flag Αληθής Ι Ι + 1 Αποτελέσματα //flag// Τέλος Αναζήτηση Θέμα 2 ο Α. Για τις εντολές 1 και 2 έχουμε: 1. 4 2. 3 Β. Για τις υπόλοιπες έχουμε: 3. > 4. Α 5. Β, Α 6. Δ, Ε 7. 8. Β 9. Ζ 10. 11. +,
Θέμα 3ο Αλγόριθμος thema_3!----------------------------------------------------------αρχικοποίηση μεταβλητών---------------------------------------------------------------! victories_p1 0!Πλήθος νικών 1 ου παίκτη victories_p2 0!Πλήθος νικών 2 ου παίκτη!--------------------------εισαγωγή ονόματος 1 ου και 2 ου παίκτη και 1 ης επιλογής αυτών από τον χρήστη---------------------------! Εμφάνισε "Εισάγετε το όνομα του 1 ου παίκτη:" Διάβασε name_p1 Εμφάνισε "Εισάγετε την επιλογή του 1 ου παίκτη:" Διάβασε choice_p1 Εμφάνισε "Εισάγετε το όνομα του 2 ου παίκτη:" Διάβασε name_p2 Εμφάνισε "Εισάγετε την επιλογή του 2 ου παίκτη:" Διάβασε choice_p2 Όσο (choice_p1 <> "Τέλος" και choice_p2 <> "Τέλος") επανάλαβε!-----------------------------------------------------υπολογισμός νικών 1 ου και 2 ου παίκτη------------------------------------------------------! Αν choice_p1 = "Πέτρα" τότε Αν choice_p2 = "Ψαλίδι" τότε victories_p1 victories_p1 + 1 _αν choice_p2 = "Χαρτί" τότε victories_p2 victories_p2 + 1 _αν choice_p1 = " Ψαλίδι" τότε Αν choice_p2 = "Χαρτί" τότε victories_p1 victories_p1 + 1 _αν choice_p2 = "Πέτρα" τότε victories_p2 victories_p2 + 1 Αν choice_p2 = "Πέτρα" τότε victories_p1 victories_p1 + 1 _αν choice_p2 = "Ψαλίδι" τότε victories_p2 victories_p2 + 1!-------------------------------------Εισαγωγή επόμενης επιλογής 1 ου και 2 ου παίκτη από τον χρήστη----------------------------------! Εμφάνισε "Εισάγετε την επιλογή του 1 ου παίκτη:" Διάβασε choice_p1 Εμφάνισε "Εισάγετε την επιλογή του 2 ου παίκτη:" Διάβασε choice_p2
!----------------------------------------Υπολογισμός και εμφάνιση του νικητή ή μήνυμα ισοπαλίας--------------------------------------! Αν victories_p1 > victories_p2 τότε Εμφάνισε "Ο νικητής είναι ο :", name_p1 _αν victories_p1 < victories_p2 τότε Εμφάνισε "Ο νικητής είναι ο :", name_p2 Εμφάνισε "Το παιχνίδι έληξε ισόπαλο" Τέλος thema_3
Θέμα 4ο Πρόγραμμα thema_4!----------------------------------------------------------------------δήλωση μεταβλητών----------------------------------------------------------------------! Μεταβλητές Ακέραιες: daily_production[12,31], days_of_month[12] Ακέραιες:year, month, day, days_of_year, sum_month, sum_year, count_month, found_month Πραγματικές: avg_year, avg_month[12], absolute_percentage_difference Λογικές: flag!------------------------------------------------------------------------------------------------------------------------------------------------------------------------! Αρχή!---------------------------------------------Εισαγωγή του έτους παρακολούθησης από τον χρήστη---------------------------------------! Γράψε "Εισάγετε το έτος παρακολούθησης:" Διάβασε year!-----------------------------------------------έλεγχος εγκυρότητας για το έτος παρακολούθησης------------------------------------------! Όσο year < 2000 ή year > 2099 επανάλαβε Γράψε "Το έτος παρακολούθησης πρέπει να είναι 2000 και 2099" Γράψε "Εισάγετε ξανά το έτος παρακολούθησης:" Διάβασε year!------υπολογισμός ημερών κάθε μήνα (μέσω της συνάρτησης number_of_days) και πλήθους ημερών του χρόνου-------! days_of_year 0 Για month από 1 μέχρι 12 days_of_month[month] number_of_days(year,month) days_of_year days_of_year + days_of_month[month]!------------------------εισαγωγή του αριθμού παραγωγής αυγών για κάθε μέρα του έτους από τον χρήστη---------------------!!-----------------------------------υπολογισμός μηνιαίου και ετήσιου μέσου όρου παραγωγής αυγών--------------------------------! sum_year 0!Σύνολο ετήσιας παραγωγής αυγών Για month από 1 μέχρι 12 sum_month 0!Σύνολο μηνιαίας παραγωγής αυγών Για day από 1 μέχρι days_of_month[month] Γράψε "Εισάγετε αριθμό αυγών για την ", day, " η ημέρα του ", month, " ου μήνα:" Διάβασε daily_production[month,day] sum_month sum_month + daily_production[month,day] avg_month[month] sum_month / days_of_month[month] sum_year sum_year + sum_month avg_year sum_year / days_of_year
!------------------------Έλεγχος για την ύπαρξη 3 ου κατά σειρά μήνα με διαφορά ± 10 ποσοστιαίες μονάδες---------------------! month 1!Μετρητής επαναληπτικής διαδικασίας count_month 0!Μετρητής μηνών με διαφορά ± 10 ποσοστιαίες μονάδες found_month 0!Ο 3 ος κατά σειρά μήνας με διαφορά ± 10 ποσοστιαίες μονάδες flag Ψευδής!Λογική μεταβλητή για έλεγχο ύπαρξης 3 ου κατά σειρά μήνα με διαφορά ± 10 ποσοστιαίες μονάδες Όσο (month <= 12 και flag = Ψευδής) επανάλαβε absolute_percentage_difference Α_Τ((avg_year avg_month[month]) / avg_year * 100) Αν absolute_percentage_difference <= 10 τότε count_month count_month + 1 Αν count_month = 3 τότε flag Αληθής found_month month month month + 1!-Εμφάνιση του 3 ου κατά σειρά μήνα με διαφορά ± 10 ποσοστιαίες μονάδες. Αν όχι εμφάνιση κατάλληλου μηνύματος-! Αν flag = Αληθής τότε Γράψε "Ο 3 ος κατά σειρά μήνας με διαφορά ± 10 ποσοστιαίες μονάδες είναι o: " Αν found_month = 1 τότε Γράψε "Ιανουάριος" _αν found_month = 2 τότε Γράψε "Φεβρουάριος" _αν found_month = 3 τότε Γράψε "Μάρτιος" _αν found_month = 4 τότε Γράψε "Απρίλιος" _αν found_month = 5 τότε Γράψε "Μάιος" _αν found_month = 6 τότε Γράψε "Ιούνιος" _αν found_month = 7 τότε Γράψε "Ιούλιος" _αν found_month = 8 τότε Γράψε "Αύγουστος" _αν found_month = 9 τότε Γράψε "Σεπτέμβριος" _αν found_month = 10 τότε Γράψε "Οκτώβριος" _αν found_month = 11 τότε Γράψε "Νοέμβριος" Γράψε "Δεκέμβριος" Γράψε "Δεν υπάρχει 3 ος κατά σειρά μήνας που να έχει διαφορά ± 10 ποσοστιαίες μονάδες" Τέλος_προγράμματος
!--------------------------------------------------Υλοποίηση της συνάρτησης number_of_days ----------------------------------------------------------! Συνάρτηση number_of_days(etos, minas): Ακέραια Μεταβλητές Ακέραιες: etos, minas Αρχή Αν minas <> 2 τότε Αν (minas <= 7 και minas mod 2 = 0) ή (minas > 7 και minas mod 2 = 1) τότε number_of_days 30 number_of_days 31 Αν (etos mod 4 = 0 και etos mod 100 <> 0) ή etos mod 400 = 0 τότε number_of_days 29 number_of_days 28 Τέλος_συνάρτησης Επιμέλεια: Δημητρόπουλος Γιώργος - Πληροφορικός