Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Λύσεις Θεμάτων Επαναληπτικών Εξετάσεων Ενιαίου Λυκείου 2006 Θέμα 1 ο Α. Β. Γ. 1. Λάθος 2. Σωστό 3. Λάθος 4. Σωστό 5. Σωστό Αν ποσότητα <= 50 τότε Κόστος Ποσότητα * 580 Αλλιώς_αν Ποσότητα <= 100 τότε Κόστος Ποσότητα * 520 Αλλιώς_αν Ποσότητα <= 200 τότε Κόστος Ποσότητα * 470 Αλλιώς Κόστος Ποσότητα * 440 1. Η λειτουργία που θα χρησιμοποιηθεί για την τοποθέτηση των αριθμών είναι: Η ώθηση (push) για την στοίβα Η εισαγωγή (enqueue) για την ουρά 2. Σχεδιασμός δομών: Στοίβα: 1 41 71 14 12 8 25 Ουρά: 25 8 12 14 71 41 1 3. Η λειτουργία που θα χρησιμοποιηθεί για την έξοδο των αριθμών είναι: Η απώθηση (pop) για τη στοίβα Εξαγωγή (dequeue) για την ουρά 4. Για να εξέλθει ο αριθμός 71 η παραπάνω λειτουργία θα χρειαστεί να γίνει: 3 φορές στη στοίβα, δηλαδή 3 απωθήσεις (pop) 5 φορές στηn ουρά, δηλαδή 5 εξαγωγές (dequeue)
Δ. Ε. Αν Κ >= 1 τότε Χ 1 Αρχή_επανάληψης Εμφάνισε Χ Χ Χ + 1 Μέχρις_ότου Χ > Κ 1. Σελίδα 118 σχολικού βιβλίου: Αρχικά για να μπορέσει ο υπολογιστής να εκτελέσει μία οποιαδήποτε λειτουργία, έπρεπε να δοθούν κατευθείαν οι κατάλληλες ακολουθίες από 0 και 1, δηλαδή εντολές σε μορφή κατανοητή από τον υπολογιστή αλλά ακατανόητες από τον άνθρωπο. Ο τρόπος αυτός ήταν επίπονος και ελάχιστοι μπορούσαν να τον υλοποιήσουν, αφού απαιτούσε βαθιά γνώση του υλικού και της αρχιτεκτονικής του υπολογιστή. Ο πρώτος υπολογιστής ο περίφημος ENIAC για να "προγραμματιστεί", ώστε να εκτελέσει κάποιους υπολογισμούς, έπρεπε να αλλάξουν θέση εκατοντάδες διακόπτες και να ρυθμιστούν αντίστοιχα όλες οι καλωδιώσεις, διαδικασία εξαιρετικά επίπονη και χρονοβόρα. Ο "προγραμματισμός" των πρώτων αυτών υπολογιστών, δεν ήταν ουσιαστικά προγραμματισμός με τη σημερινή έννοια του όρου. Ο υπολογιστής αναδιαρθρωνόταν, ώστε να εκτελέσει τους απαιτούμενους υπολογισμούς και στη συνέχεια έπρεπε να αλλάξει πάλι η διάρθρωσή του, ώστε να εκτελέσει έναν άλλο υπολογισμό. Από τα πρώτα χρόνια άρχισαν να γίνονται προσπάθειες για τη δημιουργία μίας συμβολικής γλώσσας, η οποία ενώ θα έχει έννοια για τον άνθρωπο, θα μετατρέπεται εσωτερικά από τους υπολογιστές στις αντίστοιχες ακολουθίες από 0 και 1. Για παράδειγμα η λέξη ADD (πρόσθεσε) ακολουθούμενη από δύο αριθμούς, είναι κατανοητή από τον άνθρωπο και απομνημονεύεται σχετικά εύκολα 2. Σελίδα 118 σχολικού βιβλίου: Το έργο της μετάφρασης των εντολών από μορφή που είναι κατανοητή στον άνθρωπο σε μορφή που είναι κατανοητή στον υπολογιστή το αναλαμβάνει ένα ειδικό πρόγραμμα, ο συμβολομεταφραστής (assembler) Θέμα 2ο Οι τιμές που θα εμφανιστούν είναι: Οθόνη (εντολή Γράψε) 1 η Επανάληψη 4 3 7 2 η Επανάληψη 7 4 11 3 η Επανάληψη 7 4 20 Τελική τιμή 20
Θέμα 3ο Πρόγραμμα thema_3!-------------------------------------------------------------------δήλωση μεταβλητών-------------------------------------------------------------------------! Μεταβλητές Ακέραιες: count_hours Πραγματικές: parking_duration, payment Χαρακτήρες: license_plate!------------------------------------------------------------------------------------------------------------------------------------------------------------------------! Αρχή!------------------------------Εισαγωγή του αριθμού κυκλοφορίας του 1 ου αυτοκινήτου από τον χρήστη----------------------------! Γράψε "Εισάγετε τον αριθμό κυκλοφορίας του 1 ου αυτοκινήτου" Διάβασε license_plate count_hours 0!Μετρητής πλήθους ωρών Όσο license_plate <> "0" επανάλαβε!---------------------εισαγωγή της διάρκειας στάθμευσης του εκάστοτε αυτοκινήτου από τον χρήστη----------------------------! Γράψε "Εισάγετε τη διάρκεια στάθμευσης του αυτοκινήτου με Αρ. Κυκλοφορίας: ", license_plate Διάβασε parking_duration!-----------------------έλεγχος εγκυρότητας για την τιμή της διάρκειας στάθμευσης που έδωσε ο χρήστης-----------------------! Όσο parking_duration <= 0 επανάλαβε Γράψε "Η διάρκεια στάθμευσης πρέπει να είναι > 0" Γράψε "Εισάγετε τη σωστή τιμή" Διάβασε parking_duration!-------------------------υπολογισμός του ποσού πληρωμής μέσω της συνάρτησης payment_calculation -------------------------! payment payment_calculation(parking_duration)!-----------------------------υπολογισμός του πλήθους των αυτοκινήτων που έμειναν στο πάρκινγκ 2 ώρες---------------------! Αν parking_duration <= 2 τότε count_hours count_hours + 1 Γράψε "Το αυτοκίνητο με Αρ. Κυκλοφορίας: ", license_plate, " πρέπει να πληρώσει: ", payment, " "!------------------------Εισαγωγή του αριθμού κυκλοφορίας του επόμενου αυτοκινήτου από τον χρήστη-------------------------! Γράψε "Εισάγετε τον αριθμό κυκλοφορίας του επόμενου αυτοκινήτου" Διάβασε license_plate!----------------------------εμφάνιση του πλήθους των αυτοκινήτων που έμειναν στο πάρκινγκ 2 ώρες--------------------------! Γράψε "Το πλήθος των αυτοκινήτων που έμειναν στο πάρκινγκ μέχρι και 2 ώρες είναι: ", count_hours Τέλος_προγράμματος
!--------------------------------------------------------Υλοποίηση της συνάρτησης payment_calculation-----------------------------------------------! Συνάρτηση payment_calculation(hours): Πραγματική Μεταβλητές Πραγματικές: hours Αρχή Αν hours <= 3 τότε payment_calculation 2 Αλλιώς_αν hours <= 5 τότε payment_calculation 3 * 2 + (hours 3) * 1,5 Αλλιώς payment_calculation 3 * 2 + 2 * 1,5 + (hours 5) * 1,3 Τέλος_συνάρτησης
Θέμα 4ο Αλγόριθμος thema_4!--------------------------------εισαγωγή των 3 αγωνισμάτων στον πίνακα triathlon_competition[3]----------------------------------! triathlon_competition[1] "Ιππική Δεξιοτεχνία" triathlon_competition[2] "Υπερπήδηση Εμποδίων" triathlon_competition[3] "Ελεύθερη Ιππασία"!--Εισαγωγή από τον χρήστη ονόματος, επωνύμου, ονόματος αλόγου βαθμολογίας (στα 3 αγωνίσματα) κάθε αθλητή--! Για athlete από 1 μέχρι 16 Εμφάνισε "Εισάγετε τα στοιχεία του ", athlete, " ου αθλητή" Εμφάνισε "Όνομα:" Διάβασε athlete_name[athlete] Εμφάνισε "Επώνυμο:" Διάβασε athlete_last_name[athlete] Εμφάνισε "Όνομα αλόγου:" Διάβασε horse_name[athlete] Εμφάνισε "Εισάγετε την βαθμολογία του αθλητή για τα 3 αγωνίσματα" Εμφάνισε triathlon_competition[competition], ":" Διάβασε grade[athlete,competition]!------------------------------εισαγωγή από τον χρήστη ονόματος και επωνύμου αθλητή προς αναζήτηση-------------------------! Εμφάνισε "Εισάγετε το όνομα του αθλητή που ζητείται:" Διάβασε name Εμφάνισε "Εισάγετε το επώνυμο του αθλητή που ζητείται:" Διάβασε last_name flag Ψευδής!Λογική μεταβλητή για τον έλεγχο εύρεσης του αθλητή position 0!Θέση αθλητή athlete 1!Μετρητής επαναληπτικής διαδικασίας!--------------------------επαναληπτική διαδικασία για την εύρεση του αθλητή που εισήγαγε ο χρήστης--------------------------! Όσο (athlete <= 16 και flag = Ψευδής) επανάλαβε Αν (athlete_name[athlete] = name και athlete_last_name[athlete] = last_name) τότε flag Αληθής position athlete Αλλιώς athlete athlete + 1 Αν flag = Αληθής τότε!------------------αν υπάρχει ο αθλητής. Υπολογισμός και εμφάνιση της συνολικής βαθμολογίας του αθλητή-----------------! sum_grade 0 sum_grade sum_grade + grade[position,competition] Εμφάνισε "Ο αθλητής με το άλογο: ", horse_name[position], " έχει συνολική βαθμολογία: ", sum_grade
Αλλιώς!---------------------------------------Αν δεν υπάρχει ο αθλητής. Εμφάνιση κατάλληλου μηνύματος-----------------------------------! Εμφάνισε "Ο αθλητής που εισαγάγατε δεν υπάρχει"!-------------υπολογισμός της διαφοράς μεταξύ μεγαλύτερης και μικρότερης βαθμολογίας για κάθε αγώνισμα--------------! max_grade grade[1,competition] min_grade grade[1,competition] Για athlete από 2 μέχρι 16 Αν grade[athlete,competition] > max_grade τότε max_grade grade[athlete,competition] Αν grade[athlete,competition] < min_grade τότε min_grade grade[athlete,competition] score_difference[competition] max_grade min_grade!---- ---Υπολογισμός μέγιστης διαφοράς μεταξύ μεγαλύτερης και μικρότερης βαθμολογίας για κάθε αγώνισμα-----------! max_score_difference score_difference[1] Για competition από 2 μέχρι 3 Αν score_difference[competition] > max_score_difference τότε max_score_difference score_difference[competition]!----------------------εμφάνιση του αγωνίσματος ή των αγωνισμάτων με τη μέγιστη διαφορά βαθμολογίας--------------------! Αν score_difference[competition] = max_score_difference τότε Εμφάνισε "Μέγιστο εύρος βαθμολογίας: ", triathlon_competition[competition] Τέλος thema_4 Επιμέλεια: Δημητρόπουλος Γιώργος - Πληροφορικός