ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: Θέμα 1ο I. Τι γνωρίζετε για τους γράφους; βλ. σχ. βιβλίο σελ 73 (Μονάδες 5) II. Να γράψετε στο τετράδιό σας τον αριθμό κάθε μιας από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη ΣΩΣΤΟ αν είναι σωστή ή τη λέξη ΛΑΘΟΣ αν είναι λανθασμένη. 1. Η εντολή goto χρησιμοποιείται στον δομημένο προγραμματισμό. ΛΑΘΟΣ 2. Η δυαδική αναζήτηση επιλέγεται όταν τα στοιχεία στα οποία θα ψάξουμε δεν είναι ταξινομημένα. ΛΑΘΟΣ 3. Τα λογικά λάθη εμφανίζονται κατά την εκτέλεση του προγράμματος. ΣΩΣΤΟ 4. Μια συνάρτηση μπορεί να καλέσει μια διαδικασία. ΛΑΘΟΣ 5. Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος. ΣΩΣΤΟ (Μονάδες 5) III. Τι είναι ο δομημένος προγραμματισμός; βλ. σχ. βιβλίο σελ 119 (Μονάδες 5) IV. Δίνονται κατά σειρά τα στοιχεία 4, 6, 12, 5, 16, 32. Ποιες ενέργειες πρέπει να γίνουν για να μπουν σε μια στοίβα και η τελική της μορφή να είναι. Ποια η τιμή του δείκτη top; 32 5 12 Ώθηση 4
Ώθηση 6 Απώθηση 4 Απώθηση 6 Ώθηση 12 Ώθηση 5 Ώθηση 16 Απώθηση 16 Ώθηση 32 Ο top έχει τιμή 3 Ποιες ενέργειες πρέπει να γίνουν για να μπουν σε μια ουρά και η τελική της μορφή να είναι. Ποια η τιμή των δεικτών front και rear; 5 16 32 Εισαγωγή 4 Εισαγωγή 6 Εισαγωγή 12 Εισαγωγή 5 Εισαγωγή 16 Εισαγωγή 32 Εξαγωγή 4 Εξαγωγή 6 Εξαγωγή 12 Ο front έχει τιμή 4 και ο rear 6 (Μονάδες 15) V. Να αναφέρετε ονομαστικά από τι προσδιορίζεται μια γλώσσα. Αλφάβητο Λεξιλόγιο Γραμματική Σημασιολογία (Μονάδες 4) VI. Να περιγραφούν οι απαιτούμενες ενέργειες για την παρεμβολή κόμβου σε λίστα. βλ. σχ. βιβλίο σελ 71 (Μονάδες 6)
Θέμα 2ο Α) Να γραφεί ισοδύναμος αλγόριθμος με το παρακάτω διάγραμμα ροής. Αλγόριθμος Θέμα2Α S 0 Γράψε 'Δώσε τιμή' Διάβασε x flag Αληθής Όσο flag = αληθής και x<0 επανάλαβε
Γράψε x Αν x < -5 τότε S S + 2 _αν x < -3 τότε S S + 1 flag ψευδής Διάβασε x Γράψε S τέλος Θέμα2Α (Μονάδες 12) Β) Να συμπληρωθούν τα κενά ώστε ο παρακάτω αλγόριθμος να υλοποιεί την δυαδική αναζήτηση σε πίνακα που έχει τα δεδομένα του ταξινομημένα σε φθίνουσα σειρά. ΠΡΟΓΡΑΜΜΑ δυαδική_αναζήτηση ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: A[20], Left, Right, M, pos, S, i ΛΟΓΙΚΕΣ: flag ΑΡΧΗ ΓΡΑΨΕ 'Δώσε στοιχεία ταξινομημένα σε φθίνουσα σειρά' ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20 ΓΡΑΨΕ 'Δώσε το', i, ' στοιχείο του πίνακα' ΔΙΑΒΑΣΕ A[ i ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Δωσε τιμή για αναζήτηση: ' ΔΙΑΒΑΣΕ S Left 1 Right 20 pos 0 flag ΑΛΗΘΗΣ ΟΣΟ flag = ΑΛΗΘΗΣ ΚΑΙ Left <= Right ΕΠΑΝΑΛΑΒΕ M (Left + Right) DIV 2 ΑΝ A[M] = S ΤΟΤΕ pos M flag ΨΕΥΔΗΣ ΑΛΛΙΩΣ ΑΝ A[M] < S ΤΟΤΕ Right M - 1 ΑΛΛΙΩΣ
Left M + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ flag = ΨΕΥΔΗΣ ΤΟΤΕ ΓΡΑΨΕ "Το στοιχείο", S, "υπάρχει στη θέση: ", pos ΑΛΛΙΩΣ ΓΡΑΨΕ "Το στοιχείο", S, " δεν υπάρχει στον πίνακα" ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ δυαδική_αναζήτηση (Μονάδες 8) Θέμα 3ο Μια εταιρία ενοικιάζει 50 γραφεία σε διάφορους οργανισμούς και εταιρίες. Το μηνιαίο μίσθωμα κάθε γραφείου καθορίζεται από το εμβαδόν του σε τετραγωνικά μέτρα, τον όροφο στο οποίο βρίσκεται, την παλαιότητα του κτιρίου καθώς και το αν είναι στην πρόσοψη του κτιρίου ή όχι. Για την καλύτερη διαχείρισή τους, σας ανέθεσε την κατασκευή προγράμματος το οποίο: Περιέχει τμήμα δηλώσεων (Μονάδες 1) Καταχωρεί σε μονοδιάστατο πίνακα ΟΝ[50] το όνομα του ενοικιαστή. (Μονάδες 1) Καταχωρεί τα στοιχεία για τα γραφεία σε διδιάστατο πίνακα Σ[50, 4]. Όταν ένα γραφείο βρίσκεται στην πρόσοψη του κτιρίου, στο αντίστοιχο κελί θα καταχωρείται ο αριθμός 1, διαφορετικά θα καταχωρείται ο αριθμός 0. Το κάθε γραφείο μπορεί να βρίσκεται σε όροφο από 1 έως και 10 (να γίνει έλεγχος δεδομένων). (Μονάδες 2) Καλεί υποπρόγραμμα το οποίο υπολογίζει το μίσθωμα και το καταχωρεί σε πίνακα Μ[50] (Μονάδες 1) Βρίσκει και εμφανίζει τους 3 ενοικιαστές με τα μεγαλύτερα μισθώματα (να χρησιμοποιηθεί η ταξινόμηση με επιλογή) (Μονάδες 3) Διαβάζει το όνομα ενός ενοικιαστή και εμφανίζει το μίσθωμα που πρέπει να καταβάλει. Αν δε βρεθεί ο ενοικιαστής εμφανίζει κατάλληλο μήνυμα. (Μονάδες 3) Εμφανίζει τα συνολικά μηνιαία έσοδα της εταιρίας από τα γραφεία. (Μονάδες 2) Να κατασκευάσετε το υποπρόγραμμα υπολογισμού του μισθώματος ως εξής:
Κάθε τετραγωνικό μέτρο χρεώνεται με 1,8 ευρώ. Το ποσό που προκύπτει πολλαπλασιάζεται με έναν συντελεστή ανάλογα με τον όροφο που βρίσκεται. Για τον 1ο όροφο ο συντελεστής είναι 5% και αυξάνει κατά 1,5% για κάθε όροφο, με τελικό συντελεστή για τον 10 όροφο 18,5%. Για κάθε χρόνο παλαιότητας αφαιρούνται 2 ευρώ Αν βρίσκεται στην πρόσοψη προσθέτονται 70 ευρώ, διαφορετικά αφαιρούνται 20 ευρώ. Σε κάθε περίπτωση το μίσθωμα δεν μπορεί να είναι μικρότερο από 100 ευρώ. (Μονάδες 7) Σημείωση: Το κάθε γραφείο θεωρούμε ότι είναι μεγαλύτερο από 100 τμ. Πρόγραμμα Θέμα3 Μεταβλητές Ακέραιες: i, j, θmax, pos Πραγματικές: Σ[50, 4], Μ[50], max, S Χαρακτήρες: ΟΝ[50], name Λογικές: flag Αρχή Για i από 1 μέχρι 50 Γράψε 'Δώσε όνομα ενοικιαστή' Διάβασε ΟΝ[ i ] Για i από 1 μέχρι 50 Για j από 1 μέχρι 4 Γράψε 'Δώσε τετραγωνικά και παλαιότητα' Διάβασε Σ[ i, 1 ], Σ[ i, 3 ] Αρχή_επανάληψης Γράψε 'Δώσε όροφο' Διάβασε Σ[ i, 2 ] μέχρις_ότου Σ[ i, 2 ] >= 1 και Σ[ i, 2 ] <=10 Γράψε 'Δώσε 1 για πρόσοψη 0 διαφορετικά' Διάβασε Σ[ i, 4 ] Για i από 1 μέχρι 50 Μ[ i ] μίσθωμα(σ, i) Για i από 1 μέχρι 49 max M[ i ] θmax i Για j από i + 1 μέχρι 50 Αν M[ j ] > max τότε max M[ j ] θmax j
Μ[ θmax ] M[ i ] M[ i ] max Για i από 1 μέχρι 3 Γράψε ΟΝ[ i ], Μ[ i ] Γράψε 'Δώσε όνομα ενοικιαστή' Διάβασε name i 1 pos 0 flag αληθής Όσο flag= αληθής και i <= 50 επανάλαβε Αν ΟΝ[ i ] = name τότε flag ψευδής pos i i i + 1 Αν flag = αληθής τότε Γράψε 'Δε βρέθηκε' Γράψε 'Μίσθωμα', Μ[ pos ] S 0 Για i από 1 μέχρι 50 S S + Μ[ i ] Γράψε 'Συνολικά μηνιαία έσοδα', S τέλος_προγράμματος Συνάρτηση μίσθωμα(σ, i): πραγματική Μεταβλητές Ακέραιες: i, ΠΑΛ, ΠΡΟ Πραγματικές: Σ[50,4], ΜΙΣ, ΠΟΣ Αρχή ΜΙΣ Σ[i, 1] * 1,8 ΠΟΣ ΜΙΣ * (5 + 1,5*(Σ[ i, 2] -1))/100 ΠΑΛ Σ[ i, 3] * 2 Αν Σ[ i, 4] = 1 τότε ΠΡΟ 70 ΠΡΟ -20 μίσθωμα ΜΙΣ + ΠΟΣ + ΠΑΛ + ΠΡΟ Αν μίσθωμα < 100 τότε μίσθωμα 100
τέλος_συνάρτησης Θέμα 4ο Ένας οδηγός νταλίκας εκτελεί ένα δρομολόγιο κατά το οποίο μεταφέρει σε διάφορες πόλεις παλέτες με τρόφιμα. Η νταλίκα έχει μία πόρτα στο πίσω μέρος από την οποία γίνεται η φορτοεκφόρτωση των παλετών οι οποίες τοποθετούνται στη σειρά η μία μπροστά από την άλλη. Η χωρητικότητα της νταλίκας είναι 20 παλέτες. Να γραφεί πρόγραμμα το οποίο: Περιέχει τμήμα δηλώσεων (Μονάδες 1) Διαβάζει για κάθε παλέτα το βάρος της και τον προορισμό της (όνομα της πόλης που θα παραδοθεί). Η διαδικασία θα τερματίζει όταν για προορισμό δώσει ο χρήστης τη λέξη ΤΕΛΟΣ ή όταν γεμίσει η νταλίκα με παλέτες και δεν μπορεί να πάρει άλλες. (Μονάδες 3) Να εμφανίζει με κάθε παράδοση παλέτας, το όνομα της πόλης στην οποία βρίσκεται (θεωρούμε ότι σε κάθε πόλη παραδίδει μόνο μία παλέτα). (Μονάδες 5) Με πόσο βάρος είναι φορτωμένη η νταλίκα μετά από την τρίτη παράδοση; (Μονάδες 3) Με δεδομένο ότι το δρομολόγιο επιστροφής είναι το αντίστροφο από αυτό της παράδοσης, να εμφανίσετε με τη σειρά τα ονόματα των πόλεων από τα οποία θα περάσει κατά την επιστροφή. (Μονάδες 8) Σημείωση: Θεωρήστε ότι θα φορτώσει τουλάχιστον 3 παλέτες Πρόγραμμα Θέμα4 Μεταβλητές Ακέραιες: top, top2, i, πλ Πραγματικές: Β, ΣΒ, ΦΟΡ[ 20 ] Χαρακτήρες: ΠΡ, ΠΟΛΗ[ 20 ], ΑΝΤ[ 20 ] Αρχή top 0 Γράψε 'Δώσε βάρος και προορισμό' Διάβασε Β, ΠΡ Όσο top <> 20 και ΠΡ <> ΤΕΛΟΣ επανάλαβε Αν top = 20 τότε Γράψε 'Το φορτηγό γέμισε'
top top + 1 ΦΟΡ[ top ] Β ΠΟΛΗ[ top ] ΠΡ Γράψε 'Δώσε βάρος και προορισμό' Διάβασε Β, ΠΡ top2 0 πλ 0 Όσο top <> 0 επανάλαβε Αν top = 0 τότε Γράψε 'Παραδόθηκαν όλες οι παλέτες' Γράψε 'Παραδόθηκε παλέτα στην πόλη', ΠΟΛΗ[ top ] πλ πλ + 1 top2 top2 + 1 ΑΝΤ[ top2 ] ΠΟΛΗ[ top ] top top 1 Αν πλ = 3 τότε ΣΒ 0 Για i από 1 μέχρι top ΣΒ ΣΒ + ΦΟΡ[ i ] Γράψε 'Το δρομολόγιο επιστροφής θα περάσει από τις πόλεις' Όσο top2 <> 0 επανάλαβε Γράψε ΑΝΤ[ top2 ] top2 top2 1 τέλος_προγράμματος SCIENCE PRESS