ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: Θέμα 1ο I. Ποιες οι διαφορές μεταξύ των στατικών και των δυναμικών δομών; (Μονάδες 7) II. Να γράψετε στο τετράδιό σας τον αριθμό κάθε μιας από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη ΣΩΣΤΟ αν είναι σωστή ή τη λέξη ΛΑΘΟΣ αν είναι λανθασμένη. 1. Στην ταξινόμηση φυσαλίδας, η ταξινόμηση γίνεται αποκλειστικά σε αύξουσα σειρά. (ΛΑΘΟΣ) 2. Η σειριακή αναζήτηση επιλέγεται όταν τα στοιχεία στα οποία θα ψάξουμε δεν είναι ταξινομημένα. (ΣΩΣΤΟ) 3. Σε εμφωλευμένες δομές, η εκτέλεση της εσωτερικής δομής ολοκληρώνεται μετά από αυτήν της εξωτερικής δομής. (ΛΑΘΟΣ) 4. Ο ατέρμων βρόχος είναι αλγοριθμικό κριτήριο. (ΛΑΘΟΣ) 5. Η πράξη div δεν μπορεί να εφαρμοστεί σε πραγματική μεταβλητή. (ΣΩΣΤΟ) (Μονάδες 5) III. Να αναφέρετε τις περιπτώσεις στις οποίες χρησιμοποιείται η σειριακή αναζήτηση (Μονάδες 3) 1. Όταν ο πίνακας είναι μη ταξινομημένος 2. Όταν ο πίνακας είναι μικρού μεγέθους (για παράδειγμα, n 20) 3. Όταν η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια IV. Η ταξινόμηση με επιλογή (σε αύξουσα σειρά) εκτελείται ακολουθώντας τα επόμενα τρία βήματα: 1. Εύρεση του ελάχιστου στοιχείου του πίνακα 2. Ανταλλαγή του ελάχιστου με το πρώτο στοιχείο 3. Επανάληψη των βημάτων 1 και 2 για τα υπόλοιπα στοιχεία του πίνακα μέχρι και το προτελευταίο. Κάθε νέο ελάχιστο στοιχείο θα ανταλλάσσεται με το στοιχείο στην κατάλληλη θέση (2η, 3η κλπ). Να υλοποιηθεί ο παραπάνω αλγόριθμος για πίνακα 10 θέσεων. (Μονάδες 15) Αλγόριθμος Selection_Sort Δεδομένα // table // Για i από 1 μέχρι 9 k i min table[ i ] Για j από i+1 μέχρι 10 Αν min > table[ j ] Τότε k j min table[ j ] Τέλος_Αν Τέλος_ επανάληψης table[ k ] table[ i ] table[ i ] min
Τέλος_ επανάληψης V. Δίνεται το παρακάτω τμήμα αλγορίθμου. Να εξετάσετε αν ικανοποιεί τα αλγοριθμικά κριτήρια. Γράψε 'Δώσε μια τιμή' Διάβασε χ, n Αν χ>0 τότε Ψ 1 Γράψε ψ κ n + ψ Γράψε κ (Μονάδες 6) Σε περίπτωση που το χ δεν είναι θετικός, τότε δεν υπολογίζει το ψ. Συνεπώς αργότερα δε θα μπορέσει να εκτελέσει την πράξη κ n + ψ. Άρα δεν ικανοποιεί το κριτήριο της καθοριστικότητας VI. Να αναφέρετε ονομαστικά τις μορφές αναπαράστασης ενός αλγορίθμου. (Μονάδες 4) 1. Ελεύθερο κείμενο 2. Διαγραμματικές τεχνικές 3. Φυσική γλώσσα 4. Κωδικοποίηση
Θέμα 2ο Α) Να γραφεί ισοδύναμο τμήμα αλγορίθμου με το παρακάτω διάγραμμα ροής. (Μονάδες 10)
Για ipos από 1 μέχρι n imin ipos Για i από ipos + 1 μέχρι n 1 Αν a[ i ] < Σ[ imin ] τότε imin i Αν imin <> ipos τότε πρ Σ[ ipos ] Σ[ ipos ] Σ[ imin ] Σ[ imin ] πρ Β) Δίδεται ένας πίνακας Α[n] χαρακτήρων, με στοιχεία των οποίων οι τιμές είναι R, W, B. Ο επόμενος κώδικας υλοποιεί έναν αλγόριθμο ο οποίος επεξεργάζεται τον πίνακα και τον επιστρέφει με τις όποιες αλλαγές έχει κάνει. Πρόγραμμα Θέμα_2 Σταθερές n=7 Μεταβλητές χαρακτήρες:a[7], c, temp ακέραιες: red, white, blue Αρχή red 1 white n blue n Όσο white>=red επανάλαβε c A[white] Αν c= 'R' τότε temp A[red] A[red] A[white] A[white] temp red red+1 αλλιώς_αν c= 'W' τότε white white 1 αλλιώς_αν c= 'Β' τότε temp A[blue] A[blue] A[white] A[white] temp white white 1 blue blue 1 Τέλος_επανάληψης
Τέλος_προγράμματος Εφαρμόστε το πρόγραμμα στον παρακάτω πίνακα Α. W R B R B W W Ποια θα είναι η τελική μορφή του πίνακα; (Μονάδες 10) Α[1] Α[2] Α[3] Α[4] Α[5] Α[6] Α[7] c temp blue red white W R B R B W W W W 7 1 7 R R W W W B B W W 6 2 6 R B W 5 3 5 R R 4 W 3 B 2 R η τελική μορφή του πίνακα είναι R R W W W B B
Θέμα 3ο Μια τράπεζα καταγράφει τα ονόματα των 1500 πελατών της που έχουν λάβει δάνεια και το ποσό που ο κάθε πελάτης οφείλει. Να γράψετε πρόγραμμα το οποίο : Αποθηκεύει τα ονόματα και τις αντίστοιχες οφειλές των πελατών Διαβάζει το όνομα ενός πελάτη και εμφανίζει την οφειλή του. Σε περίπτωση που ο πελάτης δεν υπάρχει, εμφανίζει κατάλληλο μήνυμα. Εμφανίζει τους πελάτες ανάλογα με τον ποσό της οφειλής από την μεγαλύτερη οφειλή προς την μικρότερη. Εμφανίζει το πλήθος των πελατών που η οφειλή τους έχει υπερβεί τις 50000 ευρώ, τα ονόματά τους και την οφειλή του καθενός Εμφανίζει τα ονόματα και τις οφειλές των πελατών με τη μικρότερη οφειλή. (Μονάδες 20) Πρόγραμμα Θέμα3 Μεταβλητές Ακέραιες: i, j pos, πλ Πραγματικές: ΟΦ[1500], min Χαρακτήρες: ΟΝ[1500], name Λογικές: flag Αρχή!Διαβάζω τα ονόματα και τις οφειλές σε 2 μονοδιάστατους παράλληλους πίνακες Για i από 1 μέχρι 1500 Γράψε 'Δώσε όνομα και οφειλή πελάτη' Διάβασε ΟΝ[ i ], ΟΦ[ i ]!Διαβάζω το όνομα ενός πελάτη και ψάχνω σειριακά για να βρω την οφειλή του Γράψε 'Δώσε όνομα πελάτη' Διάβασε name i 1 pos 0 flag αληθής Όσο i <= 1500 και flag = αληθής επανάλαβε Αν ΟΝ[ i ] = name τότε pos i flag ψευδής αλλιώς
i i + 1 Αν flag = αληθής τότε Γράψε 'Ο πελάτης δε βρέθηκε' αλλιώς Γράψε 'Οφειλή πελάτη', ΟΦ[ pos ]!Ταξινομώ σε φθίνουσα σειρά τις οφειλές και τις εμφανίζω Για i από 2 μέχρι 1500 Για j από 1500 μέχρι i με_βήμα -1 Αν ΟΦ[ j-1 ] < ΟΦ[ j ] τότε αντιμετάθεσε ΟΦ[ j-1 ] < ΟΦ[ j ] αντιμετάθεσε ΟΝ[ j-1 ] < ΟΝ[ j ] Για i από 1 μέχρι 1500 Γράψε ΟΝ[ i ], ΟΦ[ i ]!Εμφανίζω και μετράω τους πελάτες με οφειλή πάνω από 50000 πλ 0 Για i από 1 μέχρι 1500 Αν ΟΦ[ i ] > 50000 τότε Γράψε ΟΝ[ i ], ΟΦ[ i ] πλ πλ +1 Γράψε 'Περισσότερα από 50000 οφείλουν', πλ, 'πελάτες'!βρίσκω τη μικρότερη οφειλή και εμφανίζω όλους τους πελάτες που έχουν τη μικρότερη οφειλή min ΟΦ[ 1 ] Για i από 2 μέχρι 1500 Αν ΟΦ[ i ] < min τότε min ΟΦ[ i ] Για i από 1 μέχρι 1500 Αν ΟΦ[ i ] = min τότε Γράψε ΟΝ[ i ], ΟΦ[ i ]
τέλος_προγράμματος Θέμα 4ο Μια εταιρία ταχυμεταφορών διαθέτει για τις μεταφορές της ένα φορτηγό το οποίο μπορεί να μεταφέρει ταυτόχρονα μέχρι 50 δέματα. Να γραφεί πρόγραμμα το οποίο: Θα διαβάζει (και θα ελέγχει) τον αριθμό δεμάτων που θα στείλει κάθε ένας από τους 200 πελάτες της εταιρίας. Κάθε πελάτης μπορεί να στείλει από ένα μέχρι και 30 δέματα ταυτόχρονα. Θα υπολογίζει και θα εμφανίζει τον αριθμό των δρομολογίων που θα πρέπει να κάνει το φορτηγό για να μεταφέρει τα δέματα όλων των πελατών. Τα δέματα ενός πελάτη, θα πρέπει να σταλούν όλα μαζί και όχι σε δύο δρομολόγια. Θα υπολογίζει και θα εμφανίζει πόσα δέματα θα μεταφέρει σε κάθε δρομολόγιο. Θα εμφανίζει τον μεγαλύτερο και τον μικρότερο αριθμό δεμάτων που μετέφερε σε ένα δρομολόγιο. (Μονάδες 20) Πρόγραμμα Θέμα4 Μεταβλητές Ακέραιες: i, j Πραγματικές: Χαρακτήρες: Αρχή!Διαβάζω και ελέγχω τα δέματα των 200 πελατών σε ένα μονοδιάστατο πίνακα Για i από 1 μέχρι 200 Αρχή_επανάληψης Γράψε 'Δώσε δέματα πελάτη' Διάβασε Δ[ i ] μέχρις_ότου Δ[ i ]>=1 και Δ[ i ]<=30 πλ 0 i 1 max -1 min 51!Ο αριθμός των συνολικών δρομολογίων!τα περισσότερα δέματα που μεταφέρθηκαν σε ένα δρομολόγιο!τα λιγότερα δέματα που μεταφέρθηκαν σε ένα δρομολόγιο Όσο i <=200 επανάλαβε αδ 0 Όσο αδ + Δ[ i ] <= 50 επανάλαβε!μετράω τα δέματα σε κάθε δρομολόγιο
αδ αδ + Δ[ i ] i i + 1 πλ πλ + 1 Αν αδ > max τότε max αδ Αν αδ < min τότε!αυξάνω τον αριθμό των δρομολογίων!υπολογίζω τον μεγαλύτερο αριθμό δεμάτων!υπολογίζω τον μικρότερο αριθμό δεμάτων min αδ Γράψε 'Στο δρομολόγιο μεταφέρθηκαν', αδ, 'δέματα' Γράψε 'Συνολικά έγιναν', πλ, 'δρομολόγια' Γράψε 'Τα περισσότερα δέματα που μεταφέρθηκαν σε ένα δρομολόγιο είναι, max Γράψε 'Τα λιγότερα δέματα που μεταφέρθηκαν σε ένα δρομολόγιο είναι, min τέλος_προγράμματος SCIENCE PRESS