ΜΑΘΗΜΑ / ΤΑΞΗ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ / Γ'ΕΠΑΛ ΗΜΕΡΟΜΗΝΙΑ: 25-10-2015 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι.ΜΙΧΑΛΕΑΚΟΣ-Α.ΚΑΤΡΑΚΗ-Χ.ΠΑΠΠΑ ΘΕΜΑ Α ΑΠΑΝΤΗΣΕΙΣ Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση τη λέξη Σωστό, αν η πρόταση είναι σωστή, ή τη λέξη Λάθος, αν η πρόταση είναι λανθασμένη. α. Οι εντολές σε γλώσσα μηχανής αποτελούνται από μια ακολουθία 0 και 1 σταθερού ή μεταβλητού μήκους. β. Τα προγράμματα σε συμβολική γλώσσα δεν ήταν εξαρτημένα από τον υπολογιστή. γ. Η Pascal δεν δίνει τη δυνατότητα στον προγραμματιστή να δημιουργεί δικούς του τύπους δεδομένων. δ. Ο ακέραιος τύπος είναι ένας από τους προκαθορισμένους από την Pascal απλούς ή στοιχειώδεις τύπους δεδομένων. ε. Ο λογικός τύπος Boolean έχει δύο μόνο τιμές την Αληθή (true) και την Ψευδής (false). α- Σωστό β-λάθος γ-λάθος δ-σωστό ε-σωστό Α2. α. Να αναφέρετε ονομαστικά τέσσερα (4) από τα είδη προγραμματισμού.. (Μονάδες 4) β. Να αναφέρετε ονομαστικά τρεις (3) συνηθισμένες παραστάσεις αλγορίθμου. (Μονάδες 6) α. Διαδικασιακός Προγραμματισμός Δομημένος Προγραμματισμός Παράλληλος Προγραμματισμός Αντικειμενοστραφής Προγραμματισμός β. Φραστική Ψευδοκώδικας Λογικό διάγραμμα Σελίδα 1 από 8
Α3. Να γράψετε τους αριθμούς 1, 2, 3, 4, 5 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε, στ από τη Στήλη Β που δίνει τη σωστή αντιστοιχία. Στήλη Α Στήλη Β 1. xor α. Εντολή εισόδου 2. Ακέραια διαίρεση (πηλίκο) β. MOD 3. Γλώσσες 4 ης γενιάς γ. Εμπορικές εφαρμογές 4. read δ. Λογικός τελεστής 5. COBOL ε. DIV στ. ORACLE 1 δ 2 ε 3 στ 4 α 5 γ Α4. α. Να μεταφέρετε στο γραπτό σας και να συμπληρώσετε τον παρακάτω πίνακα με τους κατάλληλους τύπους δεδομένων. Περιγραφή Πλήθος μαθητών τμήματος Τιμή εισιτηρίου Επίθετο μαθητή Αποτέλεσμα ελέγχου αν το άτομο είναι έγγαμος ή όχι (Μονάδες 4) Τύπος δεδομένων β. Γράψτε τμήμα δήλωσης σταθερών σε Pascal για τα παρακάτω: Μέγιστη τιμή =20 ΦΠΑ=23% Τάξη = Γ (Μονάδες 3) γ. Γράψτε τμήμα δήλωσης μεταβλητών σε Pascal για τα παρακάτω: Αριθμός Επιβατών Ονομασία προϊόντος Θερμοκρασία σώματος (Μονάδες 3) Σελίδα 2 από 8
α. Περιγραφή Πλήθος μαθητών τμήματος Τιμή εισιτηρίου Επίθετο μαθητή Αποτέλεσμα ελέγχου αν το άτομο είναι έγγαμος ή όχι (Μονάδες 4) Τύπος δεδομένων integer real sting Boolean β. const max_price=20; fpa=0.23; taksi= Γ ; γ. var epivates: integer; onoma_proiontos: string[20]; thermokrasia_somatos : real; Παρατήρηση: τα ονόματα των σταθερών και των μεταβλητών είναι ενδεικτικά ΘΕΜΑ Β Β1. Να γράψετε στην Pascal λογικές εκφράσεις για τους παρακάτω ελέγχους : 1. Η μεταβλητή X να είναι μεγαλύτερη του 5 2. Η μεταβλητή Υ να είναι μεταξύ 1 και 50 συμπεριλαμβανομένων και των άκρων. 3. Η μεταβλητή Pos να είναι περιττός αριθμός 4. Η μεταβλητή Class να είναι Γ-ΕΠΑΛ 5. Η μεταβλητή pollaplasio_5 να είναι πολλαπλάσιο του 5 Β2. α. Δίνεται το παρακάτω πρόγραμμα Pascal: Σελίδα 3 από 8
program test; const k=7; var x, y, z, w, f : integer; begin readln (x, y, z); w:= k + x DIV y; writeln( w=, w); z:= x + y MOD z; writeln( z=, z); f:= (z + x) DIV (k y); writeln( y, z, f) end.. Να γράψετε τι θα εμφανίσει στην έξοδο του το παραπάνω πρόγραμμα αν κατά την είσοδο δοθούν οι τιμές 5, 4, 2 στις μεταβλητές x, y, z αντίστοιχα.. β. Τι εμφανίζει η παρακάτω εντολή της Pascal : writeln(5.237:4:2) (Μονάδες 7) (Μονάδες 3) Β1. B2. 1. Χ > 5 2. Υ > = 1 and Y < = 50 3. Pos MOD 2 < > 0 4. Class = Γ-ΕΠΑΛ 5. pollaplasio_5 MOD 5 = 0 α. Εμφανίζει στην έξοδο : w=8 f=5 4 5 3 β. Εμφανίζει 5.24 Σελίδα 4 από 8
ΘΕΜΑ Γ Ένα βιβλιοπωλείο κάνει έκπτωση 25% στην τελική τιμή των ξενόγλωσσων βιβλίων. Η τελική τιμή των βιβλίων επιβαρύνεται με ΦΠΑ 6%. Να γράψετε πρόγραμμα σε Pascal το οποίο: Γ1. Να περιέχει τμήμα δήλωσης σταθερών στο οποίο : α) να δηλωθεί σαν σταθερά το ποσοστό της έκπτωσης των βιβλίων με το συμβολικό όνομα pososto_ekpt. β) να δηλωθεί σαν σταθερά το ποσοστό της επιβάρυνσης ΦΠΑ των βιβλίων με το συμβολικό όνομα pososto_fpa. Γ2. Να περιέχει τμήμα δηλώσεων μεταβλητών. Γ3. Να διαβάζει το τίτλο του βιβλίου καθώς και τον εκδότη του, και να τα αποθηκεύει στις μεταβλητές title και editor αντίστοιχα. Πριν από κάθε ανάγνωση να υπάρχει κατάλληλο μήνυμα εισόδου. (Μονάδες 4) Γ4. Να διαβάζει εμφανίζοντας πριν την είσοδο κατάλληλα διαμορφωμένο μήνυμα εισόδου την αρχική τιμή του βιβλίου (να θεωρήσετε ότι είναι θετικός πραγματικός αριθμός) χωρίς επιβάρυνση ΦΠΑ και να την αποθηκεύει στην μεταβλητή book_price. Γ5. Να υπολογίζει: α. την επιβάρυνση ΦΠΑ και να την αποθηκεύει στην μεταβλητή fpa. (μονάδες 2) β. την τιμή του βιβλίου με την επιβάρυνση ΦΠΑ και να την αποθηκεύει στην μεταβλητή timi_me_fpa, (μονάδες 2) γ. το πόσο της έκπτωσης που δικαιούται και να τo αποθηκεύει στην μεταβλητή ekptosi. (μονάδες 2) δ. την τελική τιμή του βιβλίου, σαν την διαφορά του ποσού της έκπτωσης από την τελική τιμή του βιβλίου με ΦΠΑ και να τo αποθηκεύει στην teliki_timi. (μονάδες 2) (Μονάδες 8) Γ6. Να εμφανίζει τα αποτελέσματα με την εξής σειρά: Τίτλος βιβλίου: Εκδότης: Τιμή βιβλίου με ΦΠΑ: Ποσό έκπτωσης: Τελική τιμή βιβλίου: Όπου στα κενά να εμφανίζονται τα κατάλληλα στοιχεία. Σελίδα 5 από 8
program vivlia; const {Γ1- ερώτημα. Τμήμα δήλωσης σταθερών} pososto_ekpt=0.25; pososto_fpa=0.06; var {Γ2- ερώτημα. Τμήμα δήλωσης μεταβλητών} title, editor : string[30]; book_price, fpa, timi_me_fpa, ekptosi, teliki_timi : real; begin {Γ3-ερώτημα. Είσοδος τίτλου και εκδότη του βιβλίου} write( δώστε το τίτλο και τον εκδότη του βιβλίου: ); readln(title, editor); {Γ4-ερώτημα. Είσοδος αρχικής τιμή (χωρίς ΦΠΑ) του βιβλίου} write( δώστε την αρχική τιμή του βιβλίου: ); readln(book_price); {Γ5-ερώτημα. Υπολογισμός αποτελεσμάτων} {Υπολογισμός επιβάρυνσης ΦΠΑ του βιβλίου} fpa:= book_price * pososto_fpa; {Υπολογισμός τιμής βιβλίου με ΦΠΑ} timi_me_fpa:= book_price + fpa; {Υπολογισμός ποσού έκπτωσης} ekptosi:= timi_me_fpa * pososto_ekpt; {Υπολογισμός τελικής τιμής του βιβλίου} teliki_timi:= timi_me_fpa - ekptosi (Γ6-Ερώτημα. Εμφάνιση αποτελεσμάτων} writeln( Τίτλος βιβλίου:, title); writeln( Εκδότης:, editor); writeln( Τιμή βιβλίου με ΦΠΑ:, timi_me_fpa); writeln( Ποσό έκπτωσης:, ekptosi); writeln( Τελική τιμή βιβλίου:, teliki_timi) end. Παρατήρηση: τα σχόλια είναι προαιρετικά και τοποθετήθηκαν για διευκόλυνση του αναγνώστη. ΘΕΜΑ Δ Ένας σύλλογος έχει 200 μέλη. Στον σύλλογο έγιναν εκλογές για την ανάδειξη προέδρου. Στις εκλογές πήραν μέρος 3 υποψήφιοι,. Κάθε μέλος του συλλόγου που ψήφισε στις εκλογές είχε το δικαίωμα να ψηφίσει ένα μόνο υποψήφιο βάζοντας σταυρό στο όνομα του. Να λάβετε υπόψη σας ότι στις εκλογές δεν ψήφισαν όλα τα μέλη του συλλόγου και ότι όσοι ψήφισαν δεν «έριξαν» άκυρο ή λευκό ψηφοδέλτιο. Να γραφεί πρόγραμμα σε Pascal το οποίο: Δ1. Να περιέχει τμήμα δηλώσεων. (Μονάδες 4) Σελίδα 6 από 8
Δ2. Να διαβάζει: α) τον αριθμό των μελών του συλλόγου που ψήφισαν. (μονάδες 2) β) τα ονοματεπώνυμα των τριών υποψηφίων και τον αριθμό των ψήφων που έλαβε ο καθένας. Η είσοδος θα γίνεται ως εξής: Πρώτα το ονοματεπώνυμο και οι ψήφοι που αφορούν τον νικητή (αυτόν που εκλέχθηκε πρόεδρος δηλ.), δεύτερο το ονοματεπώνυμο και οι ψήφοι του δεύτερου σε ψήφους κοκ. (μονάδες 2) (Μονάδες 4) Δ3. Να υπολογίζει α) το ποσοστό (%) ψήφων του κάθε υποψηφίου επί του συνόλου των ψήφων που έλαβε ο κάθε υποψήφιος. (μονάδες 5) β) το ποσοστό (%) της αποχής που παρουσιάστηκε. (μονάδες 3) Δ4. να εμφανίζει τα αποτελέσματα των εκλογών ως εξής: Ψήφισαν: μέλη Ποσοστό αποχής: % Πρόεδρος: Ψήφοι: Ποσοστό: % Δεύτερος: Ψήφοι: Ποσοστό: % Τρίτος: Ψήφοι: Ποσοστό: %. Όπου στα κενά να εμφανίζονται τα κατάλληλα στοιχεία. Υποδείξεις για το ΘΕΜΑ Δ: 1. Να θεωρήσετε ότι τα δεδομένα εισόδου είναι έγκυρα. 2. Να θεωρήσετε ότι δεν υπάρχει περίπτωση ισοψηφίας. 3. Δεν χρειάζεται να υπάρχουν κατάλληλα διαμορφωμένα μηνύματα κατά την είσοδο των δεδομένων. Σελίδα 7 από 8 program syllogos; const {Δ1- ερώτημα. Τμήμα δήλωσης σταθερών} meli_syllogoy=200; var {Δ1- ερώτημα. Τμήμα δήλωσης μεταβλητών} name1, name2, name3 : string[30]; meli_poy_psifisan, psifoi1, psifoi2, psifoi3, den_psifisan: integer; pos_proedroy, pos_deyteroy, pos_tritoy, pos_apochis: real; begin {Δ2-ερώτημα. Είσοδος αριθμού μελών συλλόγου που πήραν μέρος στην ψηφοφορία} write( δώστε τα μέλη του συλλόγου που ψήφισαν: ); readln(meli_poy_psifisan); {Δ2-ερώτημα. Είσοδος ονόματος και ψήφων} write( δώστε το ονοματεπώνυμο και τους ψήφους του νικητή: );
readln(name1, psifoi1); write( δώστε το ονοματεπώνυμο και τους ψήφους του δεύτερου σε κατάταξη υποψήφιου: ); readln(name2, psifoi2); write( δώστε το ονοματεπώνυμο και τους ψήφους του τρίτου σε κατάταξη υποψήφιου: ); readln(name3, psifoi3); {Δ3-Ερώτημα. Υπολογισμός ποσοστών κάθε υποψήφιου} pos_proedroy:= (psifoi1 / meli_poy_psifisan) * 100; pos_deyteroy:= (psifoi2 / meli_poy_psifisan) * 100; pos_tritoy:= (psifoi3 / meli_poy_psifisan) * 100; den_psifisan:= meli_syllogoy - meli_poy_psifisan; pos_apochis:= (den_psifisan / meli_syllogoy) * 100; (Δ4-Ερώτημα. Εμφάνιση αποτελεσμάτων} writeln( Ψήφισαν:, meli_poy_psifisan, μέλη ); writeln( Ποσοστό αποχής:, pos_apochis, % ); writeln( Πρόεδρος:, name1, Ψήφοι:, psifoi1, Ποσοστό, pos_proedroy, % ); writeln( Δεύτερος:, name2, Ψήφοι:, psifoi2, Ποσοστό, pos_deyteroy, % ); writeln( Τρίτος:, name3, Ψήφοι:, psifoi3, Ποσοστό, pos_tritoy, % ) end. Παρατηρήσεις: 1. Τα ονόματα των μεταβλητών είναι ενδεικτικά, τα σχόλια είναι προαιρετικά και τοποθετήθηκαν για διευκόλυνση του αναγνώστη. 2. Τα προτρεπτικά μηνύματα εισόδου είναι προαιρετικά και τοποθετήθηκαν για διευκόλυνση του αναγνώστη. 3. Η δήλωση της σταθεράς meli_syllogoy θα μπορούσε να μην γίνει και αντί αυτής να χρησιμοποιηθεί στο πρόγραμμα η τιμή 200. 4. Οι συστοιχία των εντολών : den_psifisan:= meli_syllogoy - meli_poy_psifisan; pos_apochis:= (den_psifisan / meli_syllogoy) * 100; είναι ισοδύναμη με την εντολή: pos_apochis:= (meli_syllogoy - meli_poy_psifisan) / meli_syllogoy * 100; Σελίδα 8 από 8