46
Στις επόμενες σελίδες μπορείτε να δείτε κάποιες από τις σελίδες του ακόλουθου βιβλίου. Οι σελίδες είναι τυχαία επιλεγμένες και δεν αποτελούν κάποιο ενιαίο τμήμα του βιβλίου. «Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Θεωρία Ασκήσεις ∆ιαγωνίσματα» Γ Λυκείου Τεχνολογική Κατεύθυνση Φ. Λαζαρίνης 608 σελίδες, ISBN: 978-960-92721-0-0 Εκδόσεις Ελληνοεκδοτική Ολοκληρωμένο βοήθημα για μελέτη θεωρίας και ασκήσεωνΠεριέχει όλη τη θεωρία υπό τη μορφή ερωτήσεων/απαντήσεων, περισσότερες από 600 ασκήσεις, όλα τα θέματα των εξετάσεων απαντημένα στο τέλος κάθε κεφαλαίου και συγκεντρωμένα στο τέλος του βιβλίου, ασκήσεις προς επίλυση και επαναληπτικά κριτήρια αξιολόγησης. ∆είτε δείγμα του βιβλίου στο διαδίκτυο www.lazarinis.gr

Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Embed Size (px)

DESCRIPTION

Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον: ΘΕΩΡΙΑ - ΑΣΚΗΣΕΙΣ - ΔΙΑΓΩΝΙΣΜΑΤΑ, Γ ΛΥΚΕΙΟΥ

Citation preview

Page 1: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Στις επόμενες σελίδες μπορείτε να δείτε κάποιες από τις σελίδες του ακόλουθου βιβλίου. Οι σελίδες είναι τυχαία επιλεγμένες και

δεν αποτελούν κάποιο ενιαίο τμήμα του βιβλίου.

«Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Θεωρία – Ασκήσεις – ∆ιαγωνίσματα»

Γ Λυκείου – Τεχνολογική Κατεύθυνση Φ. Λαζαρίνης

608 σελίδες, ISBN: 978-960-92721-0-0 Εκδόσεις Ελληνοεκδοτική

“Ολοκληρωμένο βοήθημα για μελέτη θεωρίας και ασκήσεων„

Περιέχει όλη τη θεωρία υπό τη μορφή ερωτήσεων/απαντήσεων, περισσότερες από 600 ασκήσεις, όλα τα θέματα των εξετάσεων απαντημένα στο τέλος κάθε κεφαλαίου και συγκεντρωμένα στο τέλος του βιβλίου, ασκήσεις προς επίλυση και επαναληπτικά

κριτήρια αξιολόγησης.

∆είτε δείγμα του βιβλίου στο διαδίκτυο

www.lazarinis.gr

Page 2: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

5

Περιεχόμενα

Πρόλογος ............................................................................................................... 7

Σημείωμα προς μαθητές και εκπαιδευτικούς .................................................... 8

1. Ανάλυση Προβλήματος ................................................................................... 9

Θέματα θεωρίας ............................................................................................ 10 Θέματα εξετάσεων προηγουμένων ετών ...................................................... 15 Ερωτήσεις επανάληψης ................................................................................. 18 Επαναληπτικό τεστ ....................................................................................... 19

2. Βασικές Έννοιες Αλγορίθμων ...................................................................... 21

Α. Εισαγωγή & Δομή Ακολουθίας Θέματα θεωρίας ............................................................................................. 22 Λυμένες ασκήσεις .......................................................................................... 33 Θέματα εξετάσεων προηγουμένων ετών ...................................................... 45 Ερωτήσεις & ασκήσεις για επίλυση............................................................... 50 Επαναληπτικό τεστ ........................................................................................ 57 Διαγώνισμα .................................................................................................... 58

Β. Δομή Επιλογής Θέματα θεωρίας ............................................................................................. 61 Λυμένες ασκήσεις .......................................................................................... 70 Θέματα εξετάσεων προηγουμένων ετών ..................................................... 103 Ερωτήσεις & ασκήσεις για επίλυση............................................................. 124 Επαναληπτικό τεστ ...................................................................................... 140 Διαγώνισμα (δομή ακολουθίας και επιλογής) ............................................. 141

Γ. Δομή Επανάληψης Θέματα θεωρίας ........................................................................................... 144 Λυμένες ασκήσεις ........................................................................................ 160 Θέματα εξετάσεων προηγουμένων ετών ..................................................... 191 Ερωτήσεις & ασκήσεις για επίλυση............................................................. 220 1ο επαναληπτικό τεστ ................................................................................... 243 2ο επαναληπτικό τεστ ................................................................................... 244 Διαγώνισμα (δομή ακολουθίας, επιλογής και επανάληψης)........................ 246

3. Δομές Δεδομένων (πίνακες) ......................................................................... 249

Θέματα θεωρίας ........................................................................................... 250

Page 3: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

6 Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Λυµένες ασκήσεις ........................................................................................ 264 Μονοδιάστατοι πίνακες .......................................................................... 264 ∆ισδιάστατοι πίνακες .............................................................................. 284 Συνδυαστικές ασκήσεις ........................................................................... 299

Θέµατα εξετάσεων προηγουµένων ετών ..................................................... 315 Ερωτήσεις & ασκήσεις για επίλυση ............................................................. 366 1ο επαναληπτικό τεστ ................................................................................... 381 2ο επαναληπτικό τεστ ................................................................................... 383 ∆ιαγώνισµα................................................................................................... 385

4. Επιλεγµένα Θέµατα ∆οµών ∆εδοµένων 2010 και 2011 ........................... 387

5. Εισαγωγή στον Προγραµµατισµό (κεφ. 6 σχολ. βιβλίου)......................... 391

Θέµατα θεωρίας ........................................................................................... 392 Θέµατα εξετάσεων προηγουµένων ετών ..................................................... 402 Ερωτήσεις & ασκήσεις για επίλυση ............................................................. 405

6. Προγραµµατισµός στη ΓΛΩΣΣΑ (κεφ. 7, 8, 9 σχολ. βιβλίου) ................. 409

Θέµατα θεωρίας ........................................................................................... 410 Λυµένες ασκήσεις ........................................................................................ 415 Θέµατα εξετάσεων προηγουµένων ετών ..................................................... 424 Ερωτήσεις & ασκήσεις για επίλυση ............................................................. 430

7. Υποπρογράµµατα (κεφ. 10 σχολ. βιβλίου) ................................................. 433

Θέµατα θεωρίας............................................................................................ 434 Λυµένες ασκήσεις ........................................................................................ 441 Θέµατα εξετάσεων προηγουµένων ετών...................................................... 469 Ερωτήσεις & ασκήσεις για επίλυση ............................................................. 487 Επαναληπτικό τεστ....................................................................................... 503

8. Επαναληπτικά θέµατα: ασκήσεις και επαναληπτικά διαγωνίσµατα ...... 505

Ασκήσεις ...................................................................................................... 505 1ο ∆ιαγώνισµα .............................................................................................. 513 2ο ∆ιαγώνισµα .............................................................................................. 516 3ο ∆ιαγώνισµα .............................................................................................. 519

Παράρτηµα Α: Απαντήσεις - υποδείξεις........................................................ 521

Παράρτηµα B: Θέµατα και Απαντήσεις Εξετάσεων 2008 - 2011................ 566

Page 4: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

21

Βασικές Έννοιες Αλγορίθμων*

Θέματα θεωρίας

Λυμένες ασκήσεις

Θέματα εξετάσεων προηγούμενων ετών

Ερωτήσεις & ασκήσεις για επίλυση

Επαναληπτικά τεστ & διαγωνίσματα

2

* Το κεφάλαιο αποτελείται από 3 ενότητες (A. Εισαγωγή & Δομή ακολουθίας, B. Δομή επιλογής, Γ. Δομή επανάληψης) αντίστοιχες με τις λογικές ενότητες του κεφαλαίου 2 του σχολικού βιβλίου.

Page 5: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

22 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

- ΕΝΟΤΗΤΑ A - ΕΙΣΑΓΩΓΗ & ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ

2.1 Να δοθεί ο ορισμός του αλγορίθμου και να περιγραφεί σύντομα η προέλευ-ση του όρου.

Απάντηση

Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών και κανόνων (όχι άπειρες) που στο-χεύουν στην επίλυση ενός προβλήματος. Οι ενέργειες αυτές θα πρέπει να είναι σαφώς καθορισμένες και να τερματίζουν σε πεπερασμένο χρόνο. Με άλλα λόγια ο αλγόριθμος είναι η σαφής περιγραφή των βημάτων για την ολοκλήρωση μιας διαδικασίας. Ο αλγό-ριθμος δεν συνδέεται αποκλειστικά με την Πληροφορική. Ο όρος αλγόριθμος ήταν σπάνιος και σήμαινε «συστηματική διαδικασία αριθμητικών

χειρισμών» και προήλθε από μια μελέτη ενός Πέρση μαθηματικού. Με την ανάπτυξη των υπολογιστών ο αλγόριθμος σημαίνει συστηματική διαδικασία επίλυσης προβλημά-των με υπολογιστή.

2.2 Ποια κριτήρια πρέπει να ικανοποιεί ένας αλγόριθμος.

Απάντηση

Τα κριτήρια που πρέπει να ικανοποιεί ένας αλγόριθμος είναι: 1. Είσοδος: κάθε αλγόριθμος πρέπει να έχει καμία, μία ή περισσότερες τιμές δεδομέ-

νων ως είσοδο. 2. Έξοδος: ο αλγόριθμος πρέπει να παράγει τουλάχιστον ένα αποτέλεσμα, είτε προς

τον χρήστη είτε προς έναν άλλο αλγόριθμο. 3. Καθοριστικότητα: τα βήματα του αλγορίθμου πρέπει να είναι σαφώς καθορισμέ-

να ως προς τον τρόπο εκτέλεσής τους. Για παράδειγμα, σε περίπτωση διαίρεσης πρέπει να ελέγχεται αν ο παρονομαστής είναι διάφορος του μηδενός για να μπορεί να εκτελεστεί η πράξη.

4. Περατότητα: ο αλγόριθμος πρέπει να τερματίζει μετά από ένα πεπερασμένο α-ριθμό βημάτων. Μία διαδικασία που δεν τερματίζει μετά από συγκεκριμένο αριθ-μό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται απλά υπολογιστική διαδικασία.

5. Αποτελεσματικότητα: κάθε εντολή του αλγορίθμου να είναι απλή και να είναι εκτελέσιμη.

Θέματα Θεωρίας

Page 6: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 23

ΕΝΟΤΗΤΑ Α. ΕΙΣΑΓΩΓΗ & ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ

2.3 Για ποιο λόγο η έννοια του αλγόριθμου είναι θεμελιώδης στην επιστήμη της Πληροφορικής;

Απάντηση

Η μελέτη των αλγορίθμων είναι βασική στην Πληροφορική, γιατί είναι η πρώτη ύλη για τη μελέτη και εμβάθυνση, σε πάρα πολλές γνωστικές περιοχές της επιστήμης της Πλη-ροφορικής.

2.4 Να περιγραφούν οι σκοπιές μελέτης των αλγορίθμων στην πληροφορική.

Απάντηση

Η πληροφορική μελετά τους αλγορίθμους από τις ακόλουθες σκοπιές: 1. Υλικού: Η ταχύτητα εκτέλεσης (ολοκλήρωσης) ενός αλγορίθμου εξαρτάται από

την αρχιτεκτονική (υλικό), την ταχύτητα και τη μνήμη του υπολογιστή που εκτε-λείται.

2. Γλωσσών Προγραμματισμού: Η γλώσσα προγραμματισμού και οι δυνατότητες που προσφέρει επηρεάζει τη δομή και τις εντολές του αλγορίθμου. Για παράδειγ-μα, οι γλώσσες χαμηλότερου επιπέδου (π.χ. C) είναι ταχύτερες από τις γλώσσες υψηλότερου επιπέδου (π.χ. Pascal). Επίσης διαφορές υπάρχουν και σε σχέση με το πότε εμφανίστηκε μια γλώσσα προγραμματισμού. Παλαιότερες γλώσσες, για πα-ράδειγμα, δεν υποστηρίζουν την τεχνική της αναδρομής.

3. Θεωρητική: Ελέγχεται αν πράγματι υπάρχει ή όχι κάποιος αποδοτικός αλγόριθ-μος για την επίλυση ενός προβλήματος.

4. Αναλυτική: Μελετώνται οι υπολογιστικοί πόροι (π.χ. μνήμη) που απαιτούνται για την εκτέλεση ενός αλγορίθμου.

2.5 Να αναλυθούν οι τρόποι αναπαράστασης (περιγραφής) των αλγορίθμων.

Απάντηση

Οι τρόποι αναπαράστασης ενός αλγορίθμου είναι: 1. Με ελεύθερο κείμενο, δηλαδή περιγραφή σε μορφή έκθεσης. Αποτελεί τον λιγό-

τερο επεξεργασμένο και τον πιο αδόμητο τρόπο παρουσίασης ενός αλγορίθμου. Μπορεί να οδηγήσει σε μη εκτελέσιμο αλγόριθμο, γιατί μπορεί εύκολα να παρα-βιασθεί το κριτήριο της αποτελεσματικότητας.

2. Με διαγραμματικές τεχνικές, που συνιστούν ένα γραφικό τρόπο παρουσίασης του αλγορίθμου. Η πιο γνωστή διαγραμματική τεχνική, είναι το διάγραμμα ροής. Οι διαγραμματικές τεχνικές χρησιμοποιούνται όλο και πιο σπάνια στην πράξη.

3. Με φυσική γλώσσα κατά βήματα, με τον κίνδυνο όμως να παραβιασθεί το κρι-τήριο της καθοριστικότητας των αλγορίθμων.

4. Με κωδικοποίηση, δηλαδή με ένα πρόγραμμα γραμμένο, είτε σε ψευδογλώσσα είτε σε κάποιο προγραμματιστικό περιβάλλον που όταν εκτελεσθεί θα δώσει τα ί-δια αποτελέσματα με τον αλγόριθμο.

Ο πιο καλά δομημένος τρόπος είναι η κωδικοποίηση, γιατί οι εντολές είναι σαφώς κα-

Page 7: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 43

ΕΝΟΤΗΤΑ Α. ΕΙΣΑΓΩΓΗ & ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ

ντεστραμμένος (π.χ. αν έχει διαβαστεί ο 86 να δημιουργείται ο 68).

Απάντηση

Ο υπολογισμός των ψηφίων ενός αριθμού γίνεται με χρήση div και mod. Για να μπορέ-σουμε να βρούμε τον τύπο υπολογισμού πρέπει να πάρουμε ως παράδειγμα έναν αριθμό και να κάνουμε δοκιμές με div 10, mod 10, div 100, mod 100,… Στη συγκεκριμένη άσκηση πρέπει να πάρουμε ως παράδειγμα έναν διψήφιο αριθμό,

π.χ. τον 12, και να κάνουμε δοκιμές. 12 div 10 = 1 (πρώτο ψηφίο) 12 mod 10 = 2 (τελευταίο ψηφίο)

Αν χρησιμοποιήσουμε και άλλον διψήφιο αριθμό, π.χ. τον 86, τότε πράγματι 86 div 10 = 8, ενώ 86 mod 10 = 6. Στη γενική περίπτωση ενός διψήφιου x, το x div 10 δίνει το πρώτο ψηφίο, ενώ το x

mod 10 υπολογίζει το τελευταίο ψηφίο.

Παρατήρηση

Αν ο αριθμός είναι τριψήφιος, τότε πρέπει να δοκιμάσουμε και το div 10 και το mod 10, αλλά και το div 100 και mod 100, π.χ. 123 div 100 = 1, 123 mod 100 = 23, 123 mod 10 = 3. Το δεύτερο ψηφίο υπολογίζεται με συνδυασμό (123 mod 100) div 10 ή (123 div 10) mod 10. Σε αριθμό με περισσότερα ψηφία πρέπει να δοκιμάσουμε και τα div 1000, mod 1000, κ.ο.κ.

Αλγόριθμος Ασκ Διάβασε x π ← x div 10 τ ← x mod 10 α ← π + τ ν ← τ*10 + π ! π.χ. για τον 86 π=8, τ=6, οπότε τ*10+π=68 Εμφάνισε π, τ, α, ν

Τέλος Ασκ 2.47 Να γραφεί αλγόριθμος που θα διαβάζει ένα ποσό σε Ευρώ και θα το αναλύει

σε χαρτονομίσματα των 20 Ευρώ, των 10 Ευρώ και των 5 Ευρώ (π.χ. 95 Ευρώ είναι 4 των 20 Ευρώ, 1 των 10 Ευρώ, 1 των 5 Ευρώ). Στο τέλος θαεμφανίζει πόσα από κάθε τύπο χαρτονομισμάτων υπάρχουν στον αρχικό α-ριθμό.

Απάντηση

Αν το ποσό είναι x, τότε x div 20 υπολογίζει τον αριθμό των 20ρικων, ενώ το x mod 20 υπολογίζει το υπόλοιπο που θα χρησιμοποιηθεί για τον υπολογισμό των 10ρικων.

Αλγόριθμος Ασκ Διάβασε x ε ← x div 20 υ ← x mod 20

Page 8: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

44 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

δ ← υ div 10 νυ ← υ mod 10 π ← νυ div 5 Εμφάνισε ε, δ, π

Τέλος Ασκ 2.48 Ένας πελάτης ενός πολυκαταστήματος αγόρασε μια ποσότητα Π από ένα προ-

ϊόν. Να γραφεί αλγόριθμος που αφού διαβάσει την τιμή μονάδος Τ σε Ευρώ και την ποσότητα, να υπολογίζει πόσο πρέπει να πληρώσει ο πελάτης με ΦΠΑ 19%σε Ευρώ και Δραχμές. Επίσης να εμφανίζει το ΦΠΑ σε Ευρώ και Δραχμές (1Ευρώ = 340,75 Δρχ).

Απάντηση

Αλγόριθμος Ασκ Διάβασε Π, Τ X ← Π*Τ ΦΠΑ ← 0.19*Χ Υ ← Χ + ΦΠΑ Εμφάνισε Υ, ΦΠΑ ΔΦΠΑ ← 340.75*ΦΠΑ ΔΥ ← 340.75*Υ Εμφάνισε ΔΥ, ΔΦΠΑ

Τέλος Ασκ 2.49 Ένας μαθητής εξετάστηκε σε τρία μαθήματα και εισάγει σε αλγόριθμο τον

βαθμό κάθε μαθήματος στην κλίμακα 0-100 μετά από το ονοματεπώνυμό του. Ο υπολογισμός του τελικού βαθμού του μαθητή γίνεται ως εξής: ο βαθμός του1ου μαθήματος συμμετέχει στον υπολογισμό του τελικού βαθμού με συντελε-στή 20%, ο βαθμός του 2ου μαθήματος με συντελεστή 35% και ο βαθμός του3ου μαθήματος με συντελεστή 45%. Να εμφανιστεί το ονοματεπώνυμο του μα-θητή και ο τελικός του βαθμός στην κλίμακα 0-20.

Απάντηση

Αλγόριθμος Ασκ Διάβασε ο, α, β, γ τ ← 0.2*α + 0.35*β + 0.45*γ τ1 ← τ/5 Εμφάνισε ο, τ1

Τέλος Ασκ 2.50 Ο υπολογισμός της δόσης για την αγορά ενός αυτοκινήτου γίνεται βάσει του

τύπου:

1mi)(1

mi)(1d)i(pα−+

+−=

, όπου α: μηνιαία δόση, p: αρχική τιμή αυτοκινήτου, d: ποσό προκαταβολής, i:

Page 9: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 45

ΕΝΟΤΗΤΑ Α. ΕΙΣΑΓΩΓΗ & ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ

μηνιαίο επιτόκιο, m: περίοδος αποπληρωμής σε μήνες. Να γραφεί αλγόριθμος ο οποίος να υπολογίζει το ποσό κάθε δόσης και το ποσο-στό επιβάρυνσης της τιμής του αυτοκινήτου από την αρχική του αξία αφού διαβαστούν τα i, p, d, m.

Απάντηση

Αλγόριθμος Ασκ Διάβασε i, p, d, m α ← i*(p-d)*((1+i)^m)/((1+i)^m-1) Εμφάνισε α ! δόση κ ← d + α*m ! κόστος επ ← κ – p ! επιβάρυνση ποσ ← επ*100/p ! ποσοστό επιβάρυνσης Εμφάνισε ποσ

Τέλος Ασκ

Τα παρακάτω ερωτήματα έχουν ζητηθεί στις εξετάσεις των ημερησίων και των εσπερινών Ε-νιαίων (Γενικών) Λυκείων και αφορούν θέματα της ενότητας Α. Τα θέματα είναι ομαδοποιημέ-να ανά τύπο και ανά έτος. Στο τέλος του βιβλίου υπάρχουν και τα θέματα των εξετάσεων ολο-κληρωμένα ανά έτος.

Οι απαντήσεις των θεωρητικών ζητημάτων υπάρχουν στο τέλος του βιβλίου.

Οι ασκήσεις επιλύονται στην τρέχουσα ενότητα για να μπορεί εύκολα ο μαθητής να μελε-τήσει τις λύσεις ή να ελέγξει την ορθότητα των λύσεων που θα δώσει. Επίσης με αυτό τον τρόπο ο μαθητής μπορεί εύκολα να κάνει επανάληψη στο τέλος της χρονιάς.

[Σωστό – Λάθος] 1. Για να αναπαραστήσουμε τα δεδομένα και τα αποτελέσματα σε έναν αλγόριθμο, χρησι-

μοποιούμε μόνο σταθερές.

2. Η περατότητα ενός αλγορίθμου αναφέρεται στο γεγονός ότι καταλήγει στη λύση του προβλήματος μετά από πεπερασμένο αριθμό βημάτων.

3. Το διάγραμμα ροής είναι ένα τρόπος περιγραφής αλγορίθμου.

4. Στο διάγραμμα ροής το σχήμα του ρόμβου δηλώνει το τέλος ενός αλγορίθμου.

5. Η εντολή εκχώρησης τιμής αποδίδει το αποτέλεσμα μιας έκφρασης (παράστασης) σε μία μεταβλητή.

6. Σε μία εντολή εκχώρησης είναι δυνατόν μία παράσταση στο δεξιό μέλος να περιέχει τη μεταβλητή που βρίσκεται στο αριστερό μέλος. [Εξετάσεις 2000]

Θέματα εξετάσεων προηγουμένων ετών

Page 10: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 57

ΕΝΟΤΗΤΑ Α. ΕΙΣΑΓΩΓΗ & ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ

⋅⋅⋅ Εισαγωγή στους αλγορίθμους και δομή ακολουθίας ⋅⋅⋅ [Διάρκεια 1 ώρα]

Σωστό-Λάθος Να σημειώσετε αν είναι σωστή ή λανθασμένη καθεμιά από τις παρακάτω προτάσεις, βάζοντας σε κύκλο το αντίστοιχο γράμμα Σ ή Λ.

1. Η καθοριστικότητα είναι ένα κριτήριο που πρέπει να πληρούν οι αλγόριθμοι. Σ Λ

2. Η εντολή «Διάβασε Α» είναι εντολή εξόδου. Σ Λ

3. Το 1 mod 2 ισούται με 1. Σ Λ

4. Ο τελεστής της δύναμης έχει την υψηλότερη προτεραιότητα από τους αριθ-μητικούς τελεστές.

Σ Λ

5. Στην αναπαράσταση ενός αλγορίθμου με ελεύθερο κείμενο μπορεί να παρα-βιασθεί το κριτήριο της αποτελεσματικότητας.

Σ Λ

Μονάδες 10 Σύντομης απάντησης/ανάπτυξης

α. Τι εμφανίζει ο αλγόριθμος αν δοθεί ως είσοδος η τιμή 2;

Αλγόριθμος Α1 Διάβασε α β ← α + 2^3 – 10 + α/4 α ← -α + α^2 Εμφάνισε α, β

Τέλος Α1 Μονάδες 10

β. Να μετατραπεί ο προηγούμενος αλγόριθμος σε διάγραμμα ροής.

Μονάδες 10 γ. Να δοθεί ο ορισμός του αλγορίθμου και να αναφερθούν τα κριτήρια που πρέπει να πληρεί.

Μονάδες 20 δ. Ποιες είναι οι κατηγορίες τελεστών και ποιοι οι τελεστές ανά κατηγορία.

Μονάδες 15 Άσκηση

Να γραφεί αλγόριθμος που θα διαβάζει την τιμή λίτρου αμόλυβδης βενζίνης και τα χιλιόμε-τρα που θέλει να διανύσει κάποιος με το αυτοκίνητό του. Αν γνωρίζουμε ότι το αυτοκίνητο για να διανύσει 2 χιλιόμετρα πρέπει να καταναλώσει 1 λίτρο και 250 ml να εμφανιστεί πόση βενζίνη πρέπει να βάλει στο ντεπόζιτο και πόσο θα του κοστίσει κανονικά.

Επειδή στο βενζινάδικο είναι τακτικός πελάτης γίνεται 10% έκπτωση στο κανονικό κόστος. Να εμφανιστεί και το ποσό της έκπτωσης.

Μονάδες 35

Επαναληπτικό τεστ

Page 11: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

58 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

⋅⋅⋅ Εισαγωγή στους αλγορίθμους και δομή ακολουθίας ⋅⋅⋅ [Διάρκεια 3 ώρες]

Θέμα 1ο Α. Σε ποιες κατηγορίες διακρίνονται οι μεταβλητές και οι σταθερές; Δώστε από ένα παρά-δειγμα τιμής για κάθε κατηγορία μεταβλητής.

Μονάδες 10

Β. Να αναφερθούν ονομαστικά οι τρόποι αναπαράστασης των αλγορίθμων.

Μονάδες 4

Γ. Να σημειώσετε αν είναι σωστή ή λανθασμένη καθεμιά από τις παρακάτω προτάσεις, βάζο-ντας σε κύκλο το αντίστοιχο γράμμα Σ ή Λ.

1. Στα διαγράμματα ροής το πλάγιο παραλληλόγραμμο χρησιμοποιείται γιαεντολές υπολογισμού.

Σ Λ

2. Οι γλώσσες χαμηλότερου επιπέδου είναι ταχύτερες από τις γλώσσες υψηλό-τερου επιπέδου.

Σ Λ

3. Μία διαδικασία που δεν τερματίζει μετά από συγκεκριμένο αριθμό βημάτωνδεν είναι αλγόριθμος, αλλά λέγεται απλά υπολογιστική διαδικασία.

Σ Λ

4. Η ακολουθία χαρακτήρων 1Χ είναι αποδεκτή ως όνομα μεταβλητής. Σ Λ

5. Όταν αριθμητικοί, λογικοί και τελεστές σύγκρισης συνδυάζονται στις παρα-στάσεις, τότε την υψηλότερη ιεραρχία την έχουν οι λογικοί τελεστές.

Σ Λ

6. Το 1 mod 0 δεν ορίζεται. Σ Λ

Μονάδες 12

Δ. Να γράψετε τους αριθμούς της στήλης Α και δίπλα το γράμμα της στήλης Β που αντιστοι-χεί. Σε κάποιες από τις επιλογές της στήλης Α αντιστοιχούν περισσότερες από μία από τις επιλογές της στήλης Β.

Στήλη Α Σχήμα διαγράμματος ροής

Στήλη Β Χρήση

α. Εκτέλεση πράξεων β. Έξοδος γ. Αρχή δ. Είσοδος ε. Τέλος

Μονάδες 6

1.

2.

3.

Διαγώνισμα

Page 12: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 59

ΕΝΟΤΗΤΑ Α. ΕΙΣΑΓΩΓΗ & ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ

Ε. Δίνονται οι ακόλουθες έννοιες:

1. Αναλυτική 2. Γλωσσών προγραμματισμού 3. Περατότητα 4. Άλυτα 5. Έξοδος 6. Στατική

7. Είσοδος 8. Βελτιστοποίησης 9. Θεωρητική 10. Κωδικοποίηση 11. Καθοριστικότητα 12. Υλικού

Ποιες από τις έννοιες αναφέρονται: 1. σε κριτήρια αλγορίθμων

Μονάδες 4 2. σε μελέτη αλγορίθμων

Μονάδες 4

Θέμα 2ο Α. Να μετατραπεί το ακόλουθο τμήμα διαγράμματος ροής σε ψευδοκώδικα.

Μονάδες 4 Β. Τι εμφανίζει ο αλγόριθμος αν δοθούν ως είσοδος οι αριθμοί: 1. 1, 2 2. -5, 1 3. τι τύπου (κατηγορία) είναι οι μεταβλητές του αλγορίθμου και γιατί;

Μονάδες 16

Διάβασε x, y

x ← x mod y

Εμφάνισε x, y

x ← x + y

y ← x + y

Εμφάνισε x, y

Page 13: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

60 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Θέμα 3ο

Να γραφεί αλγόριθμος που θα διαβάζει τους βαθμούς στα γραπτά ενός μαθητή στα 6 μαθή-ματα τα Πανελλαδικώς εξεταζόμενα και το ονοματεπώνυμό του. Επίσης για κάθε μάθημα να διαβάζεται ο μέσος όρος των προφορικών του. Οι βαθμοί των γραπτών είναι στην κλίμακα 0-100 ενώ των προφορικών στην κλίμακα 0-20.

Μονάδες 4 Να υπολογίζεται, στην εικοσαβάθμια κλίμακα, για κάθε μάθημα ο τελικός βαθμός που είναι το άθροισμα του 70% του γραπτού και του 30% του αντίστοιχου μέσου όρου. Επίσης να υπολογιστεί και ο γενικός τελικός μέσος όρος που υπολογίζεται από το άθροισμα των επιμέ-ρους τελικών βαθμών διά του πλήθους των μαθημάτων.

Μονάδες 12 Να εμφανίζεται κατά σειρά το ονοματεπώνυμο του μαθητή, το μήνυμα «Τελικός βαθμός» και ο γενικός τελικός μέσος όρος του.

Μονάδες 4

Θέμα 4ο Ένα μηχάνημα συναλλάγματος αλλάζει τα Ευρώ σε Δολάρια με την αντιστοιχία 1 Ευρώ = 1 Δολάριο και 34 Cents. Κάθε δολάριο έχει 100 Cents. Το ποσό που εισάγεται στον αλγόριθμο δίνεται σε χαρτονομίσματα των 100 Ευρώ και των 50 Ευρώ. Το μηχάνημα κρατάει ως προ-μήθεια το 1/100 του ποσού των δολαρίων που πρέπει να επιστρέψει και τα υπόλοιπα τα επι-στρέφει στον χρήστη του μηχανήματος. Να γραφεί αλγόριθμος που: α) Θα διαβάζει σε δύο μεταβλητές το πλήθος των χαρτονομισμάτων από καθέναν από τους δύο τύπους χαρτονομισμάτων που δέχεται το μηχάνημα ως είσοδο.

Μονάδες 2 β) Θα εμφανίζει το συνολικό ποσό σε Ευρώ.

Μονάδες 2 γ) Θα εμφανίζει σε δολάρια το ποσό που τελικά το μηχάνημα δίδει στον χρήστη του.

Μονάδες 8 δ) Θα αναλύει και εμφανίζει το ποσό των δολαρίων σε χαρτονομίσματα των 100 και 50 δο-λαρίων και σε νομίσματα του ενός δολαρίου και του ενός cents (π.χ. αν το ποσό είναι 157,34 Δολάρια ο αλγόριθμος πρέπει να εμφανίζει 1, 1, 7, 34 που σημαίνουν 1 x 100 δολάρια, 1 x 50 δολάρια, 7 x 1 δολάρια, 34 x 1 cents). Σημ. Θα πρέπει να χρησιμοποιηθεί και η συνάρτηση Α_Μ( ) στο τελευταίο ερώτημα, διότι το ποσό των δολαρίων είναι πραγματικό.

Μονάδες 8

Page 14: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 61

ΕΝΟΤΗΤΑ Β. ΔΟΜΗ ΕΠΙΛΟΓΗΣ

- ΕΝΟΤΗΤΑ Β - ΔΟΜΗ ΕΠΙΛΟΓΗΣ

2.51 Ποιοι είναι οι τελεστές σύγκρισης και που χρησιμοποιούνται;1

Απάντηση

Οι τελεστές σύγκρισης είναι: • Ίσον = • Διάφορο <> (ή ≠ ) • Μικρότερο < • Μικρότερο ή ίσο <= (ή ≤ ) • Μεγαλύτερο > • Μεγαλύτερο ή ίσο >= (ή ≥ )

Οι τελεστές σύγκρισης χρησιμοποιούνται για τη σύγκριση μεταξύ μεταβλητών, στα-θερών και αριθμών, δηλαδή στη δημιουργία λογικών συνθηκών (εκφράσεων). Όπως α-ναφέρθηκε στην προηγούμενη ενότητα, οι λογικές συνθήκες περιέχουν συγκριτικούς τελεστές και ίσως και αριθμητικούς και λογικούς τελεστές και η τιμή τους είναι ή Αλη-θής ή Ψευδής. Παραδείγματα απλών λογικών συνθηκών: 5 > 8 Α + Β > 8 X mod 2 > P – 8

Παρατηρήσεις

Στη σύγκριση λογικών εκφράσεων ή μεταβλητών έχει νόημα μόνο η ισότητα (=) και η διαφορά (<>) διότι οι τιμές μπορεί να είναι Αληθής ή Ψευδής (π.χ. η συνθήκη Α > 5 θα είναι ή ίση ή διάφορη με τη συνθήκη Β <> 8). Η σύγκριση ατομικών χαρακτήρων βασίζεται στην αλφαβητική σειρά. Για παράδειγμα το "α" θεωρείται μικρότερο από το "β". Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα μέχρι να βρεθεί κάποια διαφορά σε κάποια θέση, π.χ. η λέξη "διάφορα" είναι μικρότερη από τη λέξη "διάφορο", διότι το τελευταίο "α" είναι μικρότερο από το "ο".

1 Η αρίθμηση των θεμάτων θεωρίας και των ασκήσεων συνεχίζει την αρίθμηση των αντί-στοιχων θεμάτων της ενότητας Α του κεφαλαίου 2.

Θέματα Θεωρίας

Page 15: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

62 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

2.52 Ποιοι είναι οι λογικοί τελεστές και ποια είναι η ιεραρχία τους.

Απάντηση

Οι λογικοί τελεστές με βάση την ιεραρχία (προτεραιότητα) τους είναι: • Όχι (άρνηση) • Και (σύζευξη) • Ή (διάζευξη)

Παραδείγματα συνθηκών με λογικούς τελεστές: όχι 5 > 8 Α + Β > 8 και Γ > 10 X mod 2 > P - 8 ή Υ < 2

Στις σύνθετες συνθήκες, όπου δηλαδή συνδυάζονται πολλοί λογικοί τελεστές, αν δεν υπάρχουν παρενθέσεις, η εκτέλεση βασίζεται στην πιο πάνω ιεραρχία (Όχι, Και, Ή).

2.53 Περιγραφή λογικού τελεστή ΌΧΙ.

Απάντηση

O λογικός τελεστής όχι (άρνηση) εφαρμόζεται σε μια λογική συνθήκη και επιστρέφει λογική τιμή αντίθετη από αυτή της συνθήκης. Δηλαδή, η έκφραση όχι Α είναι ψευδής αν η Α είναι αληθής και αληθής αν η Α είναι

ψευδής.

Παραδείγματα συνθηκών με «όχι»: όχι -2 > -3 ψευδής γιατί η συνθήκη -2 > -3 είναι αληθής όχι 4 > 5 αληθής γιατί η συνθήκη 4 > 5 είναι ψευδής

2.54 Περιγραφή λογικού τελεστή ΚΑΙ.

Απάντηση

O λογικός τελεστής και (σύζευξη) συνδέει δυο ή περισσότερες λογικές συνθήκες και πρέπει όλες οι προτάσεις να είναι αληθείς για να είναι αληθής και η συνδυασμένη πρό-ταση. Δηλαδή, η έκφραση Α και Β για να είναι αληθής πρέπει και η συνθήκη Α και η συν-

θήκη Β να είναι αληθής. Σε οποιαδήποτε άλλη περίπτωση είναι ψευδής.

Παραδείγματα συνθηκών με «και»: 20 > 10 και -2 > -3 αληθής γιατί και οι 2 συνθήκες είναι αληθείς 3 > 1 και 4 > 5 ψευδής γιατί η δεύτερη συνθήκη είναι ψευδής 10 > 8 και 15 > 10 και 22 > 24 ψευδής γιατί η τρίτη συνθήκη είναι ψευδής 30 < 5 και 10 < 10 ψευδής γιατί και οι 2 συνθήκες είναι ψευδείς

Page 16: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 63

ΕΝΟΤΗΤΑ Β. ΔΟΜΗ ΕΠΙΛΟΓΗΣ

2.55 Περιγραφή λογικού τελεστή Ή.

Απάντηση

O λογικός τελεστής ή (διάζευξη) συνδέει δυο ή περισσότερες λογικές συνθήκες και πρέ-πει τουλάχιστον μία να είναι αληθής για να είναι και η συνδυασμένη. Δηλαδή, η έκφραση Α ή Β για να είναι αληθής πρέπει ή η Α ή η Β ή και οι δύο να εί-

ναι αληθείς. Όταν και οι δύο είναι ψευδείς, τότε ψευδής είναι και ο συνδυασμός τους.

Παραδείγματα συνθηκών με «ή»: 20 > 10 ή -2 > -3 αληθής γιατί και οι δύο συνθήκες είναι αληθείς 3 > 1 ή 4 > 5 αληθής γιατί η πρώτη συνθήκη είναι αληθής 10 > 8 ή 15 > 10 ή 22 > 24 αληθής γιατί υπάρχει τουλάχιστον μία αληθής 30 < 5 ή 10 < 10 ψευδής γιατί και οι δύο συνθήκες είναι ψευδείς

2.56 Να συμπληρωθεί ο ακόλουθος πίνακας αληθείας. Πρόταση Α Πρόταση Β Α και Β Α ή Β όχι Α Αληθής Αληθής Αληθής Ψευδής Ψευδής Αληθής Ψευδής Ψευδής

Απάντηση

Με βάση τα προηγούμενα θέματα ο συμπληρωμένος πίνακας είναι: Πρόταση Α Πρόταση Β Α και Β Α ή Β όχι Α Αληθής Αληθής Αληθής Αληθής Ψευδής Αληθής Ψευδής Ψευδής Αληθής Ψευδής Ψευδής Αληθής Ψευδής Αληθής Αληθής Ψευδής Ψευδής Ψευδής Ψευδής Αληθής

2.57 Τι είναι η δομή επιλογής;

Απάντηση

Στα περισσότερα προβλήματα υπάρχουν κάποιες ιδιαιτερότητες και δεν ακολουθούνται πάντα τα ίδια βήματα για την επίλυσή τους. Συνήθως λαμβάνονται διαφορετικές αποφά-σεις με βάση κάποια ή κάποιες τιμές. Η διαδικασία της επιλογής περιλαμβάνει τον έλεγχο κάποιας λογικής συνθήκης και

την εκτέλεση μιας ή περισσότερων ενεργειών μόνο αν η συνθήκη ισχύει (Αληθής).

2.58 Περιγραφή απλής δομής επιλογής.

Απάντηση

Page 17: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

70 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Παρατηρήσεις

1. Παρατηρούμε ότι στην περίπτωση της απλής επιλογής η επιλογή Ψευδής ουσι-αστικά παρακάμπτει τις εντολές που είναι μέσα στο Αν.

2. Στην πολλαπλή επιλογή, η επιλογή Ψευδής μας οδηγεί σε έναν νέο ρόμβο. Γε-νικά πρέπει να έχουμε υπόψη μας ότι κάθε συνθήκη είναι ρόμβος με βέλη Ψευ-δής και Αληθής (ή Ναι και Όχι).

3. Η εμφωλευμένη και η επιλογή Επίλεξε έχουν ίδιο διάγραμμα ροής με την πολ-λαπλή. Η Επίλεξε πρέπει να μετατρέπεται πρώτα σε πολλαπλή επιλογή και έ-πειτα να γίνεται το διάγραμμα ροής της.

2.65 Δίνονται οι μεταβλητές Α και Β με τιμές 15 και 18 αντίστοιχα. Να χαρα-

κτηρισθεί καθεμία από τις ακόλουθες λογικές συνθήκες ως Αληθής ή Ψευ-δής.

α) Α > Β β) Α + 4 > Β γ) Α - Β < 0 δ) Α + Β - 10 <> 0 ε) Α^2 mod 2 > 8.5 ζ) (A+B) div 2 = 16 η) A - Β > Α^2 - Β^2 θ) Α < Β*2/36 +3 ι) Α - 20 >= -2 * Α

Απάντηση

α) Ψευδής, γιατί το Α έχει τιμή 15, που είναι μικρότερη από την τιμή του Β. β) Αληθής, γιατί το Α + 4 ισούται με 19, άρα είναι μεγαλύτερο από την τιμή του Β. γ) Αληθής, γιατί το Α - Β ισούται με -3, άρα είναι μικρότερο από 0. δ) Αληθής, γιατί το Α + Β - 10 ισούται με 23, δηλαδή διάφορο του μηδέν. ε) Ψευδής, γιατί Α^2 mod 2 = 15^2 mod 2 = 225 mod 2 = 1. ζ) Αληθής, γιατί (A + B) div 2 = (15 + 18) div 2 = 16. η) Αληθής, γιατί Α - Β = -3, ενώ Α^2 - Β^2 = 15^2 - 18^2 = -99. θ) Ψευδής, γιατί Β*2/36 +3 = 18*2/36 + 3 = 4, δηλαδή μικρότερο από την τιμή του Α. ι) Αληθής, γιατί Α - 20 = 15 - 20 = -5, ενώ -2 * Α = -2 * 15 = -30.

2.66 Να συμπληρωθεί ο πίνακας αληθείας. Α Β Γ Α + Β = Γ Α >= Γ + 2*Β Α + Β + Γ <> 6010 20 30 15 10 20 100 10 5 -10 -20 -30

Απάντηση

Λυμένες ασκήσεις

Page 18: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

76 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

2.75 Να μετατραπεί το ακόλουθο διάγραμμα ροής σε ψευδοκώδικα.

Απάντηση

Η συνθήκη α = β είναι σύνθετη επιλογή διότι και στο Αληθής και στο Ψευδής υ-πάρχουν εντολές. Ο αλγόριθμος είναι:

Διάβασε α, β Αν α = β τότε Εμφάνισε α Αλλιώς Εμφάνισε β Τέλος_αν γ ← α + β Εμφάνισε γ

2.76 Δίνεται το ακόλουθο διάγραμμα ροής:

Εμφάνισε α

α = β Αληθής Ψευδής

Εμφάνισε β

γ ← α + β

Εμφάνισε γ

Διάβασε α, β

Χ ← 10

Υ ← X^1/2-5

X ← 30

Y ← Ρίζα(Χ+6) X div Y = 0

Εμφάνισε Χ, Υ

Υ mod 2 = 0

Εμφάνισε Y-2, X+1

Εμφάνισε Χ+Υ/3

Ναι

Όχι

Ναι

Όχι

Page 19: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 93

ΕΝΟΤΗΤΑ Β. ΔΟΜΗ ΕΠΙΛΟΓΗΣ

ε1 ← 7.5/100*μ ε2 ← 6/100*μ

Αλλιώς_αν μ >== 250001 και μ <= 400000 τότε ε1 ← 9.5/100*μ ε2 ← 8/100*μ

Αλλιώς_αν μ > 400000 τότε ε1 ← 12/100*μ ε2 ← 11/100*μ

Τέλος_αν κ ← μ - ε1 - ε2 Εμφάνισε ε1, ε2, κ

Τέλος Ασκ

2.100 Στο ΚΤΕΛ υπάρχουν πέντε κατηγορίες εισιτηρίων: Πολύτεκνο (Π), Ανα-πηρικό (Α), Στρατιωτικό (Σ), Φοιτητικό (Φ) και Κανονικό (Κ). Οι δυοπρώτες κατηγορίες πληρώνουν το 50% της αξίας του κανονικού εισιτηρίου. Η τρίτη και τέταρτη κατηγορία έχουν έκπτωση 25%, ενώ η τελευταία κα-τηγορία πληρώνει ολόκληρη την αξία του εισιτηρίου. Να γραφεί αλγόριθμος που αφού διαβάσει το αντίτιμο του κανονικού εισι-τηρίου μιας διαδρομής και την κατηγορία που ανήκει ο επιβάτης να εμφα-νίζει τι πρέπει να πληρώσει. Η πληροφορία για την κατηγορία του επιβάτηθα δίνεται με το αντίστοιχο γράμμα.

Απάντηση

Αλγόριθμος Ασκ Διάβασε ΑΝΤΙ, ΚΑΤ Αν ΚΑΤ = "Π" ή ΚΑΤ = "Α" τότε

Π ← 0.50*ΑΝΤΙ Αλλιώς_αν ΚΑΤ = "Σ" ή ΚΑΤ = "Φ" τότε

Π ← ΑΝΤΙ - 0.25*ΑΝΤΙ ! ή 0.75*ΑΝΤΙ Αλλιώς

Π ← ΑΝΤΙ Τέλος_αν Εμφάνισε Π

Τέλος Ασκ

2.101 Στο πλαίσιο προγράμματος προληπτικής ιατρικής για την αντιμετώπιση του νεανικού διαβήτη έγιναν αιματολογικές εξετάσεις στους μαθητές (αγό-ρια και κορίτσια) ενός Γυμνασίου. Για ένα παιδί καταχωρήθηκαν σε υπολογιστή τα ακόλουθα στοιχεία: 1. ονοματεπώνυμο μαθητή 2. κωδικός φύλου ("Α" για τα αγόρια και "Κ" για τα κορίτσια) 3. περιεκτικότητα σακχάρου στο αίμα.

Page 20: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

102 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

D ← Α_Μ(Χ/10) ! div M ← X - 10*D ! mod Εμφάνισε D, Μ

Αλλιώς Δ ← X - Α_Μ(Χ) ! δεκαδικό μέρος Αν Δ >= 0.5 τότε

Σ ← Α_Μ(Χ) + 1 Αλλιώς

Σ ← Α_Μ(Χ) Τέλος_αν Εμφάνισε Σ

Τέλος_αν Τέλος Ασκ

2.111 Μια εταιρεία εμπορίας ξύλου έχει 2 ειδών πελάτες. Τους τακτικούς με κω-δικό "TA" και τους περιστασιακούς με κωδικό "ΠΕ". Η μηνιαία χρέωση κάθε πελάτη γίνεται ως εξής: Τακτικοί: 1) Αν έχουν αγοράσει ποσότητα μέχρι και 100 κιλά ξύλου, τότε γίνεται μηδενική χρέωση και εμφανίζεται στον πελάτη το μήνυμα "Μετα-φορά υπολοίπου". 2) Αν έχουν αγοράσει περισσότερα από 100 κιλά ξύλου,τότε πληρώνουν συνολικά 80 € για τα 100 πρώτα και για καθένα από τα υ-πόλοιπα κιλά πληρώνουν 1.20€ ανά κιλό. Περιστασιακοί: Πληρώνουν 1.4€ ανά κιλό. Να γραφεί αλγόριθμος που: α) Θα διαβάζει την κατηγορία "TA" ή "ΠΕ" που ανήκει ένας πελάτης και τα κιλά που αγόρασε συνολικά έναν μήνα. Ο αλγόριθμος θα πρέπει να κάνει έλεγχο εγκυρότητας ώστε η κατηγορία να είναι αποδεκτή μόνο αν είναι "TA" ή "ΠΕ". β) Θα υπολογίζει τη μηνιαία χρέωση με βάση την παραπάνω μέθοδο. γ) Θα προσθέτει 19% ΦΠΑ και θα εμφανίζει σε κάθε περίπτωση την τελική χρέωση μετά το μήνυμα "Πληρωμή: ".

Απάντηση

Παρατήρηση

Ο έλεγχος εγκυρότητας είναι θέμα της επόμενης ενότητας Γ διότι βασίζεται στις δομές επανάληψης, αλλά όπως θα δούμε και από τις ασκήσεις των Πανελληνίων ζητείται σε ασκήσεις αυτής της ενότητας. Όταν η άσκηση μας ζητά έλεγχο εγκυρότητας κατά το διάβασμα μιας ή περισσο-τέρων μεταβλητών, τότε αυτές θα τις μεταβλητές θα τις διαβάζουμε καθεμία σε μια δομή Αρχή_επανάληψης … Μέχρις_ότου. Για παράδειγμα, η ακόλουθη δομή σημαίνει ότι το κ θα διαβάζεται συνεχώς μέχρι να έχει μία από τις δύο τιμές: Αρχή_επανάληψης Διάβασε κ Μέχρις_ότου κ = "ΤΑ" ή κ = "ΠΕ" Γενικά η συνθήκη του Μέχρις_ότου θα έχει τη μορφή μεταβλητή = σωστές τιμές ή θα έχει τη μορφή μεταβλητή ανήκει στο σωστό διάστημα τιμών. Η πλήρης ανάλυση του θέματος γίνεται στην επόμενη ενότητα Γ.

Page 21: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 103

ΕΝΟΤΗΤΑ Β. ΔΟΜΗ ΕΠΙΛΟΓΗΣ

Αλγόριθμος Ασκ Αρχή_επανάληψης

Διάβασε κ Μέχρις_ότου κ = "ΤΑ" ή κ = "ΠΕ" Διάβασε π Αν κ = "ΤΑ" τότε

Αν π <= 100 τότε x ← 0 Εμφάνισε "Μεταφορά υπολοίπου"

Αλλιώς x ← 80 + (π-100)*1.20

Τέλος_αν Αλλιώς

x ← π*1.40 Τέλος_αν τ ← x + 0.19*x Εμφάνισε "Πληρωμή: ", τ

Τέλος Ασκ

Τα παρακάτω ερωτήματα έχουν ζητηθεί στις εξετάσεις των ημερησίων και των εσπερινών Ε-νιαίων (Γενικών) Λυκείων και αφορούν θέματα της ενότητας B. Τα θέματα είναι ομαδοποιημέ-να ανά τύπο και ανά έτος. Στο τέλος του βιβλίου υπάρχουν και τα θέματα των εξετάσεων ολο-κληρωμένα ανά έτος.

Οι απαντήσεις/υποδείξεις των θεωρητικών ζητημάτων υπάρχουν στο τέλος του βιβλίου.

Οι ασκήσεις επιλύονται στην τρέχουσα ενότητα για να μπορεί εύκολα ο μαθητής να μελε-τήσει τις λύσεις ή να ελέγξει την ορθότητα των λύσεων που θα δώσει. Επίσης με αυτό τον τρόπο ο μαθητής μπορεί εύκολα να κάνει επανάληψη στο τέλος της χρονιάς.

[Σωστό - Λάθος] 1. Η συνθήκη που ελέγχεται σε μία δομή επιλογής μπορεί να πάρει περισσότερες από δύο

διαφορετικές τιμές. [Εξετάσεις 2000]

2. Η λογική πράξη "ή" μεταξύ δύο προτάσεων είναι ψευδής, όταν οποιαδήποτε από τις δύο προτάσεις είναι ψευδής.

[Εξετάσεις 2004]

Θέματα εξετάσεων προηγουμένων ετών

Page 22: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

122 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

17. Μία εταιρεία ασφάλισης οχημάτων καθορίζει το ετήσιο κόστος ασφάλισης ανά τύπο οχήματος (δίκυκλο ή αυτοκίνητο) και κυβισμό, σύμφωνα με τους παρακάτω πίνακες:

ΔΙΚΥΚΛΟ Κυβισμός

(σε κυβικά εκατοστά) Κόστος ασφάλισης

(σε ευρώ) έως και 125 100 πάνω από 125 140

ΑΥΤΟΚΙΝΗΤΟ Κυβισμός

(σε κυβικά εκατοστά) Κόστος ασφάλισης

(σε ευρώ) έως και 1400 400

από 1401 έως και 1800 500 πάνω από 1800 700

Αν η ηλικία του οδηγού είναι από 18 έως και 24 ετών τότε το κόστος της ασφάλισης του οχήματος προσαυξάνεται κατά 10%. Να αναπτύξετε αλγόριθμο, ο οποίος: α. Να διαβάζει την ηλικία ενός οδηγού, τον τύπο του οχήματος και τον κυβισμό του, ε-λέγχοντας ώστε ο τύπος του οχήματος να είναι «ΔΙΚΥΚΛΟ» ή «ΑΥΤΟΚΙΝΗΤΟ». β. Να υπολογίζει και να εμφανίζει το ετήσιο κόστος ασφάλισης του οχήματος. Σημείωση: Να θεωρήσετε ότι η ηλικία του οδηγού είναι τουλάχιστον 18 ετών.

[Εσπερινά Λύκεια 2007]

Απάντηση

Αλγόριθμος Ασκ Διάβασε Η Αρχή_επανάληψης

Διάβασε Τ Μέχρις_ότου Τ = "ΔΙΚΥΚΛΟ" ή Τ = "ΑΥΤΟΚΙΝΗΤΟ" Διάβασε Κ Αν Τ = "ΔΙΚΥΚΛΟ" τότε

Αν Κ <= 125 τότε Π ← 100

Αλλιώς Π ← 140

Τέλος_αν Αλλιώς

Αν Κ <= 1400 τότε Π ← 400

Αλλιώς_αν Κ <= 1800 τότε Π ← 500

Αλλιώς Π ← 700

Τέλος_αν

Page 23: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

144 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

- ΕΝΟΤΗΤΑ Γ - ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

2.112 Ποιες είναι οι επαναληπτικές δομές και πότε χρησιμοποιούνται;1

Απάντηση

Οι επαναληπτικές δομές εφαρμόζονται στις περιπτώσεις, όπου μία ακολουθία εντολών πρέπει να εκτελεστεί πολλές φορές. Πάρα πολλά προβλήματα απαιτούν δομές επανάληψης για να επιλυθούν. Για παρά-

δειγμα, ο υπολογισμός τόκου πρέπει να υπολογισθεί για όλους τους τραπεζικούς λογα-ριασμούς. Οι τρεις επαναληπτικές δομές που χρησιμοποιούνται είναι: • Όσο … επανάλαβε … Τέλος_επανάληψης • Αρχή_επανάληψης … Μέχρις_ότου • Για … από … μέχρι … Τέλος_επανάληψης

Μια δομή επανάληψης καλείται και βρόχος επανάληψης ή απλά βρόχος. Οι επανα-ληπτικές δομές συνήθως εμπεριέχουν και συνθήκες επιλογών εμφωλευμένες. Επίσης μια δομή επανάληψης μπορεί να περιέχει εμφωλευμένες και άλλες δομές επανάληψης.

2.113 Περιγραφή δομής επανάληψης ΌΣΟ … ΕΠΑΝΑΛΑΒΕ.

Απάντηση

Η δομή επανάληψης Όσο ... επανάλαβε αποτελεί τον πιο γενικό τύπο δομής επανάλη-ψης. Ο τρόπος με τον οποίο συντάσσεται είναι:

Όσο Συνθήκη επανάλαβε Ομάδα εντολών Τέλος_επανάληψης

Η ομάδα εντολών στο εσωτερικό της επανάληψης εκτελείται όσο ισχύει η συνθήκη

1 Η αρίθμηση των θεμάτων θεωρίας και των ασκήσεων συνεχίζει την αρίθμηση των αντί-στοιχων θεμάτων της ενότητας Β του κεφαλαίου 2.

Θέματα Θεωρίας

Page 24: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 2. Βασικές έννοιες αλγορίθμων 145

ΕΝΟΤΗΤΑ Γ. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

που υπάρχει στην αρχή της επανάληψης: • Αρχικά γίνεται έλεγχος της συνθήκης. Αν η συνθήκη ισχύει εκτελούμε τις εντο-

λές που υπάρχουν μέσα στο Όσο … επανάλαβε. Αν η συνθήκη δεν ισχύει, τότε η εκτέλεση του αλγορίθμου συνεχίζει μετά το Τέλος_επανάληψης.

• Όταν εκτελούνται οι εντολές που υπάρχουν ανάμεσα στο Όσο … επανάλαβε και στο Τέλος_επανάληψης επανερχόμαστε στη συνθήκη και ελέγχουμε εκ νέου αν ισχύει.

Παρατηρήσεις

Στη δομή επανάληψης Όσο ... επανάλαβε παρατηρούμε τα εξής: 1. Η ομάδα εντολών ανάμεσα στο Όσο … επανάλαβε και στο Τέλος_επανάληψης

μπορεί να μην εκτελεστεί ποτέ, γιατί μπορεί να μην ισχύει η συνθήκη από την αρχή.

2. Η δομή επανάληψης Όσο … επανάλαβε χρησιμοποιείται όταν δεν γνωρίζουμε τον ακριβή αριθμό επαναλήψεων. Όταν δηλαδή δεν γνωρίζουμε από την αρχή πόσες φορές πρέπει να εκτελεστεί μια ομάδα εντολών, αλλά η εκτέλεση εξαρ-τάται από μια συνθήκη.

3. Στην ομάδα εντολών θα πρέπει να περιλαμβάνονται και εντολές που θα τροπο-ποιούν τη συνθήκη, έτσι ώστε κάποια στιγμή αυτή να γίνει ψευδής και η επα-νάληψη να τερματίσει. Διαφορετικά η επανάληψη (βρόχος) θα επαναλαμβάνε-ται συνεχώς. Με άλλα λόγια θα είναι ατέρμων βρόχος.

Παράδειγμα δομής επανάληψης Όσο … επανάλαβε:

Χ ← 50 Όσο Χ > 5 επανάλαβε

Υ ← Χ + 10 Χ ← Χ - 5

Τέλος_επανάληψης Εμφάνισε Χ, Υ

Αρχικά στη Χ εκχωρείται η τιμή 50. Εφόσον ισχύει η συνθήκη Χ > 5 εκτελούνται οι εντολές που βρίσκονται μέσα στο Όσο … επανάλαβε. Μετά την εντολή Χ ← Χ - 5 πηγαίνουμε πάλι στη συνθήκη και ε-λέγχουμε αν ισχύει. Αν ισχύει επαναλαμβάνουμε την ε-κτέλεση των εντολών που βρίσκονται μέσα στο Όσο … επανάλαβε. Σε κάθε επανάληψη η Χ μειώνεται κατά 5. Όταν τελικά η Χ γίνει 5 δεν θα ισχύει η συνθήκη και η εκτέλεση θα πάει μετά το Τέλος_επανάληψης και θα εμφανιστούν οι τιμές των Χ και Υ.

2.114 Περιγραφή δομής επανάληψης ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ…ΜΕΧΡΙΣ_ΟΤΟΥ.

Απάντηση

Η δομή επανάληψης Αρχή_επανάληψης ... μέχρις_ότου συντάσσεται ως εξής:

Αρχή_επανάληψης Ομάδα εντολών Μέχρις_ότου Συνθήκη

Page 25: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

146 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Η ομάδα εντολών στο εσωτερικό της επανάληψης εκτελείται μέχρις ότου η συνθήκη να γίνει αληθής, δηλαδή όσο η συνθήκη είναι ψευδής:

• Αρχικά εκτελούνται οι εντολές και πηγαίνουμε στο Μέχρις_ότου. • Αν η συνθήκη δεν ισχύει επανερχόμαστε στο Αρχή_επανάληψης και εκτελούμε

ξανά τις εντολές και ελέγχουμε εκ νέου τη συνθήκη. Αν η συνθήκη ισχύει τότε τερματίζει η επανάληψη.

Παρατηρήσεις

Στη δομή επανάληψης Αρχή_επανάληψης ... Μέχρις_ότου παρατηρούμε τα εξής: 1. Η ομάδα εντολών ανάμεσα στο Αρχή_επανάληψης … Μέχρις_ότου εκτελείται

τουλάχιστον μια φορά διότι πρώτα εκτελούνται οι εντολές και έπειτα γίνεται έ-λεγχος της συνθήκης.

2. Δεν γνωρίζουμε εκ των προτέρων τον αριθμό των επαναλήψεων. Η ομάδα ε-ντολών της επανάληψης εκτελείται μέχρις ότου η συνθήκη να γίνει αληθής, όσο δηλαδή η συνθήκη είναι ψευδής.

3. Στην ομάδα εντολών θα πρέπει να περιλαμβάνονται και εντολές που θα τροπο-ποιούν τη συνθήκη, έτσι ώστε κάποια στιγμή αυτή να γίνει αληθής και η επανά-ληψη να τερματίσει. Διαφορετικά η επανάληψη (βρόχος) θα επαναλαμβάνεται συνεχώς. Με άλλα λόγια θα είναι ατέρμων βρόχος.

Παράδειγμα δομής επανάληψης Αρχή_επανάληψης … Μέχρις_ότου:

Χ ← 50 Αρχή_επανάληψης

Υ ← Χ + 10 Χ ← Χ - 5

Μέχρις_ότου Χ <= 5 Εμφάνισε Χ, Υ

Αρχικά στη Χ εκχωρείται η τιμή 50. Έπειτα εκτελούνται οι εντολές που βρίσκονται μέσα στην επανάληψη. Η συνθήκη Χ <= 5 δεν ισχύει, άρα η εκτέλεση πηγαίνει στο Αρχή_επανάληψης και εκτελούνται εκ νέου οι εντολές. Σε κάθε επανάληψη η Χ μειώνεται κατά 5. Όταν τελικά η Χ γίνει 0 θα ισχύει η συνθήκη Χ <=5 και η εκτέλεση θα πάει μετά το Μέχρις_ότου και θα εμφανιστούν οι τιμές των Χ και Υ.

2.115 Διαφορές των δομών επανάληψης Όσο … επανάλαβε και Αρχή_επανάληψης.

Απάντηση

Οι διαφορές μεταξύ των δομών επανάληψης Όσο ... επανάλαβε και Αρχή_επανάληψης ... Μέχρις_ότου είναι:

• Στο Όσο ... επανάλαβε οι εντολές μπορεί να μην εκτελεστούν ποτέ, γιατί μπορεί να μην ισχύσει ποτέ η συνθήκη, ενώ στο Αρχή_επανάληψης ... Μέχρις_ότου οι εντολές θα εκτελεστούν τουλάχιστον μια φορά.

• Στο Όσο ... επανάλαβε ο έλεγχος της συνθήκης γίνεται στην αρχή, ενώ στο Αρ-χή_επανάληψης ... Μέχρις_ότου στο τέλος.

• Στο Όσο ... επανάλαβε η επανάληψη συνεχίζει όσο η συνθήκη είναι αληθής, ενώ στο Αρχή_επανάληψης ... Μέχρις_ότου η επανάληψη συνεχίζει όσο η συν-θήκη είναι ψευδής, δηλαδή μέχρι η συνθήκη να γίνει αληθής.

Page 26: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

172 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

πα ← πα + 1

Τέλος_αν Αν x > max τότε ! Το x αλλάζει τιμή σε κάθε επανάληψη

max ← x Τέλος_αν Διάβασε x

Τέλος_επανάληψης Σ ← πα + πθ ! Συνολικό πλήθος Αν Σ <> 0 τότε

ποσ_θ ← πθ*100/Σ ποσ_α ← πα*100/Σ Εμφάνισε ποσ_θ, ποσ_α

Τέλος_αν Εμφάνισε max

Τέλος Ασκ

2.146 Να γραφεί αλγόριθμος που για καθέναν από τους μαθητές ενός σχολείου θα διαβάζει το ονοματεπώνυμό του και το βαθμό του στα μαθηματικά, τη φυ-σική, την πληροφορική και την έκθεση. Ο αλγόριθμος θα σταματά όταν ωςονοματεπώνυμο δοθεί ο χαρακτήρας του κενού. Θεωρώντας ότι οι βαθμοί είναι θετικοί, στην εικοσαβάθμια κλίμακα, να υπολογιστεί και εμφανιστεί: α) για κάθε μαθητή ο μέσος όρος του μετά το ονοματεπώνυμό του, β) το σύνολο των μαθητών των οποίων τα στοιχεία διαβάστηκαν, γ) τον ελάχιστο βαθμό στα μαθηματικά, δ) το ποσοστό αυτών που έχουν βαθμό κάτω από τη βάση στην πληροφορι-κή (βαθμός < 10).

Απάντηση

Στη συγκεκριμένη άσκηση θα πρέπει να διαβάζουμε τις μεταβλητές ον, μαθ, φυσ, πλ, εκθ. Επειδή στη συνθήκη τερματισμού χρειαζόμαστε μόνο το ον θα το διαβά-ζουμε πριν το Όσο και πριν το Τέλος_επανάληψης. Τις υπόλοιπες μεταβλητές θα τις διαβάζουμε απευθείας μετά το Όσο … επανάλαβε.

Ο χαρακτήρας του κενού συμβολίζεται ως " ". Αλγόριθμος Ασκ

Διάβασε ον π ← 0 ! σύνολο μαθητών min ← 21 ! εδώ ξέρουμε τα όρια, άρα μπορούμε να θέσουμε έναν μεγάλο αριθμό πκ ← 0 ! πλήθος κάτω από τη βάση Όσο ον <> " " επανάλαβε

Διάβασε μαθ, φυσ, πλ, εκθ μο ← (μαθ + φυσ + πλ + εκθ)/4 ! υπολογισμός μέσου όρου ανά μαθητή Εμφάνισε ον, μο

π ← π + 1

Page 27: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

176 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Τέλος_αν

Τέλος Ασκ

2.149 Η ΔΕΗ εφαρμόζει την εξής μηνιαία τιμολογιακή πολιτική: 1) Πάγιο 14 Ευρώ 2) Για κάθε κιλοβατώρα χρεώνει 1 Ευρώ και 28 λεπτά αν έχει γίνει συνολι-κή κατανάλωση μέχρι και 200 κιλοβατώρες. Αν έχουν καταναλωθεί περισ-σότερες από 200 κιλοβατώρες, οι πρώτες ακολουθούν την προηγούμενηχρέωση, ενώ καθεμία από τις υπόλοιπες χρεώνεται προς 1.10 Ευρώ. 3) Αν κάποιος καταναλωτής είχε βλάβες, τότε πληρώνει έξτρα 5.5 Ευρώ. Να γραφεί αλγόριθμος που για καθέναν από τους δημότες μιας πόλης θαδιαβάζει το ονοματεπώνυμό του, τη μηνιαία κατανάλωσή του σε κιλοβατώ-ρες και μία από τις λέξεις "ΝΑΙ" ή "OXI". Αν διαβαστεί "OXI" τότε ο δη-μότης δεν έχει βλάβες. Ο αλγόριθμος να υπολογίζει και εμφανίζει: α) τη χρέωση κάθε δημότη μετά από το ονοματεπώνυμό του, β) τα συνολικά έσοδα της ΔΕΗ, γ) το δημοτικό φόρο που είναι το 1/500 των συνολικών εσόδων της ΔΕΗ.Η είσοδος δεδομένων επαναλαμβάνεται όσο δίνονται ως δεδομένα θετικοίαριθμοί και μία από τις δύο επιτρεπτές λέξεις.

Απάντηση

Στη συγκεκριμένη άσκηση διαβάζουμε τα δεδομένα και υπολογίζουμε κλιμακωτά τη χρέωση για κάθε δημότη. Έπειτα την εμφανίζουμε μέσα στην επανάληψη.

Τα συνολικά έσοδα της ΔΕΗ υπολογίζονται ως άθροισμα Αλγόριθμος Ασκ

Διάβασε ΟΕ, Κ, Χ αθρ ← 0 Όσο Κ > 0 και (Χ = "ΝΑΙ" ή Χ = "ΟΧΙ") επανάλαβε

Αν Κ <= 200 τότε Π1 ← Κ*1.28

Αλλιώς Π1 ← 200*1.28 + (Κ-200)*1.10

Τέλος_αν Αν Χ = "ΝΑΙ" τότε

Π2 ← 5.5 Αλλιώς

Π2 ← 0 Τέλος_αν Π ← 14 + Π1 + Π2 Εμφάνισε ΟΕ, Π αθρ ← αθρ + Π Διάβασε ΟΕ, Κ, Χ

Page 28: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

249

Δομές Δεδομένων

Θέματα θεωρίας

Λυμένες ασκήσεις

Θέματα εξετάσεων προηγούμενων ετών

Ερωτήσεις & ασκήσεις για επίλυση

Επαναληπτικά τεστ & διαγώνισμα

3

Page 29: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

250 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

3.1 Να δοθεί ο ορισμός των όρων «δεδομένα» και «πληροφορία».

Απάντηση

Δεδομένο αποτελεί οποιοδήποτε στοιχείο μπορεί να γίνει αντιληπτό με μια από τις πέντε αισθήσεις του παρατηρητή, στον οποίο διατυπώνεται το πρόβλημα. Είναι δηλαδή οποιο-δήποτε στοιχείο μπορεί να εξαχθεί από τη διατύπωση του προβλήματος. Η επιλογή των δεδομένων εξαρτάται από τον τύπο του προβλήματος. Η συλλογή των αρχικών ακατέργαστων δεδομένων ενός προβλήματος και η επεξερ-

γασία τους παράγει ως αποτέλεσμα την πληροφορία.

3.2 Ποιο είναι το αντικείμενο μελέτης της θεωρίας πληροφοριών;

Απάντηση

Η θεωρία πληροφοριών αποτελεί επιστημονικό πεδίο της πληροφορικής που μελετά τη μέτρηση, την κωδικοποίηση και τη μετάδοση της πληροφορίας.

3.3 Από ποιες σκοπιές μελετούνται τα δεδομένα στην πληροφορική;

Απάντηση

Στην πληροφορική τα δεδομένα μελετούνται από τις ακόλουθες σκοπιές: 1. Υλικού: Το υλικό, αναφέρεται στον υπολογιστή στον οποίο αποθηκεύονται, με διά-

φορους τρόπους κωδικοποίησης, τα δεδομένα ενός προγράμματος. Μερικές μορφές κωδικοποίησης είναι ο κώδικας ΑSCII, ο κώδικας EBCDIC, κ.λπ.

2. Γλωσσών προγραμματισμού: Οι γλώσσες προγραμματισμού υψηλού επιπέδου επιτρέπουν τη χρήση διάφορων τύπων μεταβλητών για την φύλαξη των δεδομένων. Ο μεταφραστής κάθε γλώσσας φροντίζει για την αποδοτικότερη μορφή αποθήκευ-σης, κάθε μεταβλητής στον υπολογιστή.

3. Δομών Δεδομένων: Δομή δεδομένων είναι ένα σύνολο δεδομένων μαζί με ένα σύ-νολο επιτρεπτών λειτουργιών σε αυτά. Για παράδειγμα, μια δομή δεδομένων είναι ο πίνακας στον οποίο μπορούμε να αποθηκεύουμε πολλά δεδομένα (αριθμούς, λέξεις). Επιτρεπτή λειτουργία σε έναν πίνακα είναι η εύρεση στοιχείου.

4. Ανάλυσης Δεδομένων: Γίνεται μελέτη του τρόπου καταγραφής και συσχέτισης των δεδομένων για να αναπαρασταθούν σωστά τα πραγματικά γεγονότα. Οι τεχνολογίες των Βάσεων Δεδομένων, της Μοντελοποίησης Δεδομένων και της Αναπαράστασης Γνώσης ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων.

3.4 Να δοθεί ο ορισμός της «Δομής Δεδομένων» και να περιγραφούν οι βασικέςλειτουργίες επί των δομών δεδομένων.

Απάντηση

Θέματα Θεωρίας

Page 30: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

256 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Έπειτα το i γίνεται 2 και αρχίζει πάλι η εκτέλεση της εσωτερικής επανάληψης από 1 μέχρι 20. Έτσι θα δια-βαστούν και θα εμφανιστούν τα στοιχεία Π[2, 1], Π[2, 2], …, Π[2, 20], κ.ο.κ.

Ειδικά για το διάβασμα και την εμφάνιση των στοιχείων ενός πίνακα δισδιάστατου μπορούμε να χρησιμοποιήσουμε αντίστοιχα τα Δεδομένα // Π // και τα Αποτελέσματα // Π // στην αρχή και το τέλος του αλγορίθμου, αντί για την επανάληψη ΓΙΑ.

3.12 Περιγραφή της δομής δεδομένων «Στοίβα».

Απάντηση

Στη δομή δεδομένων στοίβα τα δεδομένα στοιβάζονται το ένα πάνω στο άλλο, όπως για παράδειγμα μια στοίβα από πιάτα. Από τη στοίβα μπορούμε να χρησιμοποιήσουμε το πιάτο στην κορυφή της. Σχηματικά οι λειτουργίες μια δομής δεδομένων στοίβας μπορούν να αναπαρασταθούν

ως εξής: Α.

10 Β.

33 10 Γ.

-2 33 10 Δ.

33 10 Ε.

10 Ζ.

Α. Η στοίβα είναι κενή, δεν περιέχει στοιχεία. Β. Έγινε ώθηση (εισαγωγή) στην κορυφή της στοίβας του στοιχείου 10. Γ. Έγινε ώθηση του στοιχείου 33, το οποίο πλέον βρίσκεται στην κορυφή της στοίβας. Δ. Έγινε ώθηση του στοιχείου -2. Ε. Έγινε απώθηση (εξαγωγή) του στοιχείου -2. Στην κορυφή της στοίβας βρίσκεται πλέ-ον το στοιχείο 33. Ζ. Έγινε απώθηση του στοιχείου 33. Στην κορυφή της στοίβας απομένει το στοιχείο 10.

Οι λειτουργίες σε μια στοίβα είναι η: • Ώθηση (push) στοιχείου στην κορυφή μιας στοίβας.

Στη διαδικασία της ώθησης πρέπει να ελέγχεται, αν η στοίβα είναι γεμάτη, οπότε λέγεται ότι συμβαίνει υπερχείλιση (overflow) της στοίβας.

• Απώθηση (pop) στοιχείου από την κορυφή της στοίβας. Στη διαδικασία απώθησης ελέγχεται, αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα, δηλαδή ελέγχει αν γίνεται υποχείλιση (underflow) της στοίβας.

Παρατηρήσεις 1. Η μέθοδος επεξεργασίας της στοίβας ονομάζεται Τελευταίο μέσα, πρώτο έξω ή

με την αγγλική συντομογραφία LIFO (Last In First Out). 2. Κάθε νέο στοιχείο προστίθεται μόνο στην κορυφή της στοίβας. 3. Κάθε φορά μπορούμε να επεξεργαστούμε μόνο το στοιχείο που βρίσκεται στην

κορυφή της στοίβας.

Page 31: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

284 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

πρώτα τα στοιχεία του πίνακα Α στον πίνακα Γ και έπειτα τα στοιχεία του πίνακα Β στον πίνακα Γ. Στη συνέχεια ταξινομούμε τον πίνακα Γ. Ουσιαστικά δεν εκμεταλλευό-μαστε το γεγονός ότι οι αρχικοί πίνακες είναι ταξινομημένοι, αλλά ο αλγόριθμος είναι πιο απλός.

Για i από 1 μέχρι Ν Γ[i] ← Α[i]

Τέλος_επανάληψης Για i από 1 μέχρι Μ

Γ[i+N] ← Β[i] ! εκχωρούμε τα στοιχεία του Β στις θέσεις Ν+1 ως Ν+Μ του Γ Τέλος_επανάληψης Για i από 2 μέχρι Ν+Μ

Για j από Ν+Μ μέχρι i με_βήμα -1 Αν Γ[j-1] > Γ[j] τότε

Αντιμετάθεσε Γ[j-1], Γ[j] Τέλος_αν

Τέλος_επανάληψης Τέλος_επανάληψης

…… ΑΑσσκκήήσσεειιςς μμεε δδιισσδδιιάάσσττααττοουυςς ππίίνναακκεεςς ……

3.42 Δίνεται ο ακόλουθος αλγόριθμος:

Αλγόριθμος Ασκ Για q από 1 μέχρι 100 Για p από 1 μέχρι 200 CD[p, q] ← 0 Τέλος_επανάληψης Τέλος_επανάληψης Για q από 1 μέχρι 100 Για p από 1 μέχρι 200 Διάβασε CD[p, q] Εμφάνισε CD[p, q] Τέλος_επανάληψης Τέλος_επανάληψης Τέλος Ασκ

α) Πόσες γραμμές και πόσες στήλες έχει ο πίνακας CD; β) Να αναγνωρίσετε τους μετρητές που χρησιμοποιούνται στον αλγόριθμο. γ) Αν οι αρχικές τιμές που δίνονται ως είσοδος είναι 2, 4, 6, 8, να προσδιο-ριστούν οι τιμές των στοιχείων CD[1, 1], CD[1, 2], CD[2, 1] και CD[2, 2]. δ) Να γραφεί ισοδύναμος αλγόριθμος με χρήση μονοδιάστατου πίνακα που θα έχει τον ίδιο αριθμό θέσεων με τον δισδιάστατο πίνακα.

Page 32: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 3. Δομές δεδομένων 285 Απάντηση

α) Ο πίνακας έχει 200 γραμμές και 100 στήλες, διότι το p που γράφεται πρώτο στον πίνακα (CD[p, q]) παίρνει τιμές από 1 μέχρι 200 και ο μετρητής στηλών q παίρνει τιμές από 1 μέχρι 100.

β) Ο μετρητής γραμμών είναι ο p και ο μετρητής στηλών o q. γ) Ο πίνακας διαβάζεται κατά στήλη, εφόσον πρώτα υπάρχει ο μετρητής των στηλών.

Άρα οι αριθμοί 2, 4, 6, 8 θα εκχωρηθούν στα στοιχεία CD[1, 1], CD[2, 1], CD[3, 1], CD[4, 1]. Τα υπόλοιπα στοιχεία του πίνακα θα είναι 0. Άρα τα στοιχεία CD[1, 1], CD[1, 2], CD[2, 1] και CD[2, 2] θα έχουν αντίστοιχα τιμές 2, 0, 4, 0.

δ) Αλγόριθμος Ασκ Για i από 1 μέχρι 20000

CD[i] ← 0 Τέλος_επανάληψης Για i από 1 μέχρι 20000

Διάβασε CD[i] Εμφάνισε CD[i]

Τέλος_επανάληψης Τέλος Ασκ

3.43 Να γραφεί αλγόριθμος που να διαβάζει έναν πίνακα 3x4 και να δημιουργεί ένανπίνακα 12 στοιχείων που θα περιέχει τα ίδια στοιχεία. Στη συνέχεια να εμφανί-ζει τον πίνακα. Στο παρακάτω σχήμα φαίνεται ένα παράδειγμα της μετατρο-πής.

2 1 8 9

4 5 2 8

3 4 9 1

2 1 8 9 4 5 2 8 3 4 9 1

Απάντηση

Όταν πρέπει να μετατρέψουμε έναν πίνακα σε κάποιον άλλον, τότε θα επεξεργαζόμαστε κάθε στοιχείο του πρώτου πίνακα με τον κανονικό τρόπο (μονή ή διπλή επανάληψη) και θα χρησιμοποιούμε έναν ή δύο επιπλέον δείκτες για τον νέο πίνακα. Οι νέοι δείκτες δεί-χνουν τη θέση, στον νέο πίνακα, που θα τοποθετηθούν τα στοιχεία του παλιού πίνακα.

Αλγόριθμος Ασκ Για i από 1 μέχρι 3

Για j από 1 μέχρι 4 Διάβασε Π[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης

k ← 0 Για i από 1 μέχρι 3

Page 33: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

294 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Για i από 1 μέχρι 100

Για j από 1 μέχρι 200 Αν Π[i, j] < min[j] τότε

min[j] ← Π[i, j] Τέλος_αν

Τέλος_επανάληψης Τέλος_επανάληψης

Για j από 1 μέχρι 200 Εμφάνισε min[j]

Τέλος_επανάληψης

Για i από 1 μέχρι 100 ! γ ερώτημα πλ[i] ← 0

Τέλος_επανάληψης Για i από 1 μέχρι 100

Για j από 1 μέχρι 200 Αν Π[i, j] = 0 τότε

πλ[i] ← πλ[i] + 1 Τέλος_αν

Τέλος_επανάληψης Τέλος_επανάληψης

Για i από 1 μέχρι 100 ! κάθε γραμμή έχει τόσα κουτάκια όσα και οι στήλες, ποσ[i] ← πλ[i]*100/200 ! άρα στην απλή μέθοδο έχουμε στα: 200 πλ[i] Εμφάνισε ποσ[i] ! 100 x;

Τέλος_επανάληψης

max1 ← Π[3, 1] ! δ ερώτημα - πρώτο στοιχείο 3ης γραμμής Για j από 1 μέχρι 200

Αν Π[3, j] > max1 τότε max1 ← Π[3, j]

Τέλος_αν Τέλος_επανάληψης

Εμφάνισε max1 Τέλος Ασκ

3.51 Να γραφεί αλγόριθμος που θα διαβάζει σε πίνακα 100x12 το μισθό 100 υπαλ-λήλων για καθέναν από τους 12 μήνες του έτους 2006 (Ιανουάριο – Δεκέμβρι-ο). Να υπολογιστεί και εμφανιστεί: α) Ο μέσος μηνιαίος μισθός ανά υπάλληλο. β) Το σύνολο των μισθών για καθέναν από τους μονούς μήνες. γ) Το μέγιστο μισθό το μήνα Δεκέμβριο. δ) Το σύνολο των αποδοχών των 30 πρώτων υπαλλήλων. ε) Το σύνολο των μηνών όπου υπήρχε μισθός μικρότερος από 300 Ευρώ.

Page 34: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 3. Δομές δεδομένων 295 Απάντηση

α) Ζητά το μέσο όρο ανά υπάλληλο. Δηλαδή ζητά 100 μέσους όρους. Άρα πρέπει να υπολογίσουμε το μέσο όρο κατά γραμμή. Υπολογίζουμε πρώτα το άθροισμα κατά γραμμή και διαιρούμε δια τους 12 μήνες (όσες και οι στήλες). β) Ζητά σύνολο μισθών για καθέναν από τους μήνες 1, 3, 5, 7, 9, 11. Πρέπει να υπολογίσουμε το άθροισμα των στηλών 1, 3, 5, 7, 9, 11 διότι κάθε στήλη αντιστοιχεί στους μισθούς ενός μήνα. γ) Ζητείται ο μέγιστος μισθός της 12ης στήλης. Θα αρχικοποιήσουμε το max σε -1 και θα υπολογί-σουμε το max όπως στην άσκηση 3.50. Εδώ δεν θα χρησιμοποιήσουμε το j διότι θα είναι 12. δ) Ζητείται ένα άθροισμα με βάση τα στοιχεία Μ[1, 1] μέχρι Μ[30, 12]. Δηλαδή το i θα παίρνει τιμές από 1 μέχρι 30. ε) Πρέπει να βρούμε σε πόσες στήλες υπήρχε μισθός μικρότερος από 300 Ευρώ. Η ά-σκηση δεν ζητά πλήθος κατά στήλη. Το πλήθος κατά στήλη υπολογίζει πόσες φορές εμφανίστηκε σε κάποια στήλη μισθός μικρότερος από 300 Ευρώ. Αν, για παράδειγμα, σε κάποια στήλη υπήρχε 2 φορές ή περισσότερες φορές μισθός μικρότερος από 300 Ευ-ρώ, τότε το πλήθος κατά στήλη θα έβγαζε δύο για αυτή τη στήλη. Όμως κανονικά η στήλη πρέπει να μετρηθεί μία φορά για τον υπολογισμό του ζητουμένου. Στη συγκεκριμένη περίπτωση μπορούμε να υπολογίσουμε το πλήθος κατά στήλη και έπειτα να υπολογίσουμε τον αριθμό των φορών (πλήθος) που το πλήθος κατά στήλη ήταν >= 1.

Αλγόριθμος Ασκ Για i από 1 μέχρι 100

Για j από 1 μέχρι 12 Διάβασε Μ[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης

Για i από 1 μέχρι 100 ! α ερώτημα Α[i] ← 0

Τέλος_επανάληψης Για i από 1 μέχρι 100

Για j από 1 μέχρι 12 Α[i] ← Α[i] + Μ[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης

Για i από 1 μέχρι 100 ! κάθε γραμμή έχει τόσα κουτάκια όσα και οι στήλες, ΜΟ[i] ← A[i] /12 ! άρα διαιρούμε δια 12 Εμφάνισε ΜΟ[i]

Τέλος_επανάληψης

Μ 1 2

… 100

1 2 … 12 Κάθε κελί περιέχει το μισθό των υ-παλλήλων. Κάθε γραμμή περιέχει τους μισθούς ενός υπαλλήλου. Η 1η γραμμή του 1ου υπαλλήλου, η 2η του 2ου, κ.ο.κ. Κάθε στήλη αντιστοιχεί σε ένα μήνα.

Page 35: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 3. Δομές δεδομένων 299

…… ΣΣυυννδδυυαασσττιικκέέςς αασσκκήήσσεειιςς μμεε μμοοννοοδδιιάάσσττααττοουυςς κκααιι δδιισσδδιιάάσσττααττοουυςς ππίίνναακκεεςς ……

3.53 Ένας διευθυντής σχολείου καταχωρεί σε πίνακα δυο διαστάσεων τη βαθμο-λογία των 80 μαθητών της Γ’ Λυκείου στα 6 μαθήματα τα υποχρεωτικά Πα-νελλαδικώς εξεταζόμενα. Σε δεύτερο πίνακα καταχωρεί τα επίθετα των μα-θητών. Σε τρίτο πίνακα καταχωρεί τους τίτλους των μαθημάτων. Να γραφείαλγόριθμος που θα: α) διαβάζει τους πίνακες, β) υπολογίζει το μέσο όρο κάθε μαθητή στα 6 μαθήματα και θα τον εμφανίζει μετά το επίθετο κάθε μαθητή, γ) ελέγχει αν ο βαθμός κάθε μαθήματος για κάθε μαθητή είναι μικρότεροςαπό το μέσο όρο του μαθητή. Αν σε κάποιο μάθημα ο βαθμός είναι μικρότε-ρος να εμφανίζεται το επίθετο του μαθητή και του μαθήματος ακολουθούμε-νο από το μήνυμα «Μικρότερος Βαθμός».

Απάντηση

α) Πρέπει να διαβαστούν τρεις πίνακες: δισδιάστατος 80x6, μο-νοδιάστατος 80 θέσεων και μο-νοδιάστατος 6 θέσεων. Επειδή ο μονοδιάστατος 6 θέσεων αντι-στοιχεί στις στήλες θα τον επε-ξεργαζόμαστε με τον μετρητή j. β) Πρέπει να υπολογίσουμε το μέσο όρο ανά γραμμή. γ) Πρέπει να συγκρίνουμε τη βαθμολογία με το μέσο όρο για κάθε μαθητή.

Αλγόριθμος Ασκ Για i από 1 μέχρι 80 ! α ερώτημα

Για j από 1 μέχρι 6 Διάβασε Β[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 80

Διάβασε Ε[i] Τέλος_επανάληψης Για j από 1 μέχρι 6

Διάβασε Τ[j] Τέλος_επανάληψης

Για i από 1 μέχρι 80 ! β ερώτημα Α[i] ← 0

Τέλος_επανάληψης

1 2 … 6 Τ

Κάθε κελί περιέχει τον τίτλο μαθήματος. Ε 1

… 80

Κάθε κελί περιέχει το επίθετο ενός μαθητή.

B 1

… 80

1 2 … 6 Κάθε κελί περιέχει το βαθμό ενός μαθητή σε κάποιο μάθημα. Κάθε γραμμή αφορά έναν μαθητή. Η 1η γραμμή τον 1ο μαθητή, κ.ο.κ. Κάθε στήλη αφορά ένα μάθημα. Η 1η στήλη το 1ο μάθημα, κ.ο.κ.

Page 36: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

300 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Για i από 1 μέχρι 80

Για j από 1 μέχρι 6 Α[i] ← Α[i] + Β[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 80

ΜΟ[i] ← Α[i]/6 Εμφάνισε Ε[i], ΜΟ[i]

Τέλος_επανάληψης

Για i από 1 μέχρι 80 ! γ ερώτημα Για j από 1 μέχρι 6

Αν Β[i, j] < MO[i] τότε Εμφάνισε Ε[i], T[j], "Μικρότερος βαθμός"

Τέλος_αν Τέλος_επανάληψης

Τέλος_επανάληψης Τέλος Ασκ

3.54 Να γραφεί αλγόριθμος που θα διαβάζει για 30 μαθητές το βαθμό τους σταμαθήματα «Μαθηματικά», «Φυσική», «Πληροφορική», «Έκθεση» σε ένανδισδιάστατο πίνακα. Οι τίτλοι των μαθημάτων να εκχωρηθούν σε νέο μονο-διάστατο πίνακα. α) Να εμφανιστεί ο αριθμός μαθητών με μέσο όρο στα 4 μαθήματα μικρότερο από 10. β) Να υπολογιστεί ο αριθμός μαθητών ανά μάθημα με βαθμό μικρότερο από10 και να εμφανιστεί με το όνομα του μαθήματος. γ) Να εμφανιστεί ο μέσος όρος στο μάθημα της πληροφορικής.

Απάντηση

Αλγόριθμος Ασκ Για i από 1 μέχρι 30

Για j από 1 μέχρι 4 Διάβασε Β[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης

Τ[1] ← "Μαθηματικά" ! εκχώρηση τιμών στον πίνακα Τ[2] ← "Φυσική" Τ[3] ← "Πληροφορική" Τ[4] ← "Έκθεση"

Για i από 1 μέχρι 30 ! α ερώτημα Α[i] ← 0

Τέλος_επανάληψης Για i από 1 μέχρι 30

Page 37: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 3. Δομές δεδομένων 307

Εμφάνισε "Δεν ισχύει η καταγγελία για το προϊόν: Πατάτες" Τέλος_αν

Τέλος Ασκ

3.58 Να γραφεί αλγόριθμος που για 100 φοιτητές θα διαβάζει το βαθμό τους στα 48 μαθήματα που έχουν εξεταστεί στη διάρκεια των σπουδών τους. Επίσης θα διαβάζει το επίθετο των φοιτητών και τον αριθμό μητρώου τους. α) Για να πάρει πτυχίο ένας φοιτητής πρέπει και στα 48 μαθήματα να έχειβαθμό τουλάχιστον 5. Να εμφανιστούν τα επίθετα και οι αριθμοί μητρώωναυτών που μπορούν να πάρουν πτυχίο. β) Για όσους παίρνουν πτυχίο να εμφανιστεί το επίθετό τους, ο αριθμός μη-τρώου, ο μέσος όρος τους και ένας από τους ακόλουθους χαρακτηρισμούςανάλογα με το μέσο όρο: Σχεδόν Καλώς [5 - 6,5) Καλώς [6,5 - 7,5) Λίαν Καλώς [7,5 - 8,5) Άριστα [8,5 - 10] Θεωρείστε ότι οι βαθμοί εισόδου είναι μεταξύ 0 και 10.

Απάντηση

α) Για να πάρει πτυχίο κάποιος φοιτητής πρέπει σε 48 μαθήματα να έχει βαθμό μεγαλύ-τερο ή ίσο του 5. Άρα πρέπει να υπολογίσουμε για κάθε φοιτητή το πλήθος των μαθημά-των που έχει βαθμό μεγαλύτερο ή του 5. Χρειαζόμαστε το πλήθος κατά γραμμή διότι οι φοιτητές, όπως και οι γραμμές, είναι 100. β) Θα υπολογιστεί ο μέσος όρος ανά φοιτητή (κατά γραμμή) και θα εμφανιστεί ο μέσος όρος μόνο των φοιτητών που παίρνουν πτυχίο.

Αλγόριθμος Ασκ Για i από 1 μέχρι 100 ! διάβασμα πινάκων

Για j από 1 μέχρι 48 Διάβασε B[i, j]

Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 100

Διάβασε ΟΝ[i], ΑΜ[i] Τέλος_επανάληψης

Για i από 1 μέχρι 100 ! α ερώτημα πλ[i] ← 0

Τέλος_επανάληψης Για i από 1 μέχρι 100

Για j από 1 μέχρι 48 Αν B[i, j] >= 5 τότε

πλ[i] ← πλ[i] + 1 Τέλος_αν

Τέλος_επανάληψης

Page 38: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

433

Υποπρογράμματα

Θέματα θεωρίας

Λυμένες ασκήσεις

Θέματα εξετάσεων προηγούμενων ετών

Ερωτήσεις & ασκήσεις για επίλυση

Επαναληπτικό τεστ

7

(Κεφάλαιο 10 σχολικού βιβλίου)

Page 39: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

434 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

7.1 Τι είναι ο τμηματικός προγραμματισμός;

Απάντηση

Τμηματικός προγραμματισμός είναι η τεχνική σχεδίασης και ανάπτυξης προγραμμά-των ως ένα σύνολο από απλούστερα τμήματα κώδικα. Δηλαδή στον τμηματικό προγραμματισμό τα προγράμματα αποτελούνται από ένα σύ-

νολο τμημάτων τα οποία επιλύουν τα επιμέρους υποπροβλήματα του αρχικού προβλή-ματος.

7.2 Τι είναι το «υποπρόγραμμα»; Δώστε παράδειγμα.

Απάντηση

Στον τμηματικό προγραμματισμό, κάθε τμήμα που επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο πρόγραμμα, ονομάζεται υποπρόγραμμα. Για παράδειγμα, ας υποθέσουμε ότι θέλουμε να επιλύσουμε το ακόλουθο πρόβλημα:

«Ένας καθηγητής επιθυμεί να φτιάξει πρόγραμμα το οποίο θα διαβάζει τους βαθμούς ενός μαθητή της Γ' Εν. Λυκείου στα μαθήματα κατεύθυνσης και θα υπολογίζει το μέσο όρο τους.»

Το πρόβλημα μπορεί να αντιμετωπισθεί πιο εύκολα, αν το αναλύσουμε στα τμήματα: • Εισαγωγή βαθμών. • Υπολογισμός μέσου όρου. • Εκτύπωση αποτελέσματος. Καθένα από αυτά τα τμήματα μπορεί να υλοποιηθεί ως ένα υποπρόγραμμα, τμήμα δη-

λαδή του προγράμματος. Οπότε η δημιουργία του τελικού προβλήματος προέρχεται από τη σύνθεση των υποπρογραμμάτων.

7.3 Υπάρχει μεθοδολογία για το χωρισμό ενός προγράμματος σε υποπρογράμμα-τα;

Απάντηση

Ο χωρισμός ενός προγράμματος σε υποπρογράμματα, προϋποθέτει την ανάλυση του αρχικού προβλήματος σε υποπροβλήματα, τα οποία μπορούν να αντιμετωπισθούν εύκο-λα και ανεξάρτητα το ένα από το άλλο. Η ανάλυση αυτή δεν είναι πάντα εύκολη και συνήθως δεν υπάρχουν καθορισμένα βή-

ματα που πρέπει να γίνουν. Η δυσκολία αυξάνεται όσο πιο μεγάλο και πιο σύνθετο είναι το πρόβλημα. Η σωστή εφαρμογή του τμηματικού προγραμματισμού απαιτεί καλή μελέ-τη του προβλήματος και εμπειρία στον προγραμματισμό.

Θέματα Θεωρίας

Page 40: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 7. Υποπρογράμματα 435 7.4 Ποιες ιδιότητες πρέπει να διακρίνουν τα υποπρογράμματα;

Απάντηση

Κάθε υποπρόγραμμα πρέπει να έχει τις εξής ιδιότητες (χαρακτηριστικά): 1. Πρέπει να έχει μόνο μία είσοδο και μία έξοδο και να ενεργοποιείται με την είσοδο

σε αυτό. Κατόπιν εκτελεί ορισμένες ενέργειες και απενεργοποιείται με την έξοδο από αυτό.

2. Πρέπει να είναι ανεξάρτητο από τα άλλα. Αυτό σημαίνει ότι κάθε υποπρόγραμμα μπορεί να σχεδιαστεί, να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επη-ρεαστούν άλλα υποπρογράμματα. Στην πράξη βέβαια η απόλυτη ανεξαρτησία εί-ναι δύσκολο να επιτευχθεί.

3. Πρέπει να μην είναι πολύ μεγάλο, ώστε να είναι εύκολα κατανοητό και να μπορεί να ελέγχεται. Γενικά κάθε υποπρόγραμμα πρέπει να εκτελεί μόνο μία λειτουργία. Αν εκτελεί περισσότερες λειτουργίες, τότε συνήθως διασπάται μικρότερα υπο-προγράμματα.

7.5 Να αναλυθούν τα πλεονεκτήματα του τμηματικού προγραμματισμού.

Απάντηση

1. Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμμα-τος. Η επίλυση προέρχεται από την επίλυση των απλών υποπροβλημάτων και όχι α-πευθείας από την αντιμετώπιση του συνολικού προβλήματος.

2. Διευκολύνει την κατανόηση και διόρθωση του προγράμματος. Ο χωρισμός ενός προγράμματος σε μικρότερα αυτοτελή τμήματα επιτρέπει τη γρήγορη διόρθωση οποιουδήποτε τμήματος, χωρίς οι αλλαγές αυτές να επηρεά-σουν όλο το υπόλοιπο πρόγραμμα. Επίσης διευκολύνει την ανάγνωση και κατα-νόηση του τρόπου που λειτουργεί το πρόγραμμα.

3. Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος, μειώνοντας συγχρόνως τα λάθη. Το ίδιο υποπρόγραμμα μπορεί να χρησιμοποιείται σε πολλά σημεία ενός προ-γράμματος που χρειάζεται. Με αυτό τον τρόπο μειώνεται το μέγεθος του προ-γράμματος, ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λά-θους, ενώ ταυτόχρονα το πρόγραμμα γίνεται πιο κατανοητό.

4. Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού. Ένα υποπρόγραμμα μπορεί να χρησιμοποιηθεί και σε άλλα προγράμματα. Από τη στιγμή που έχει δημιουργηθεί, η χρήση του δεν διαφέρει από τη χρήση των ενσω-ματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού. Αν λοιπόν κάποια λειτουργία που δεν υποστηρίζεται απευθείας από τη γλώσσα χρειάζεται συχνά, όπως για παράδειγμα η εύρεση του μικρότερου δύο αριθμών, τότε μπορεί να γραφεί το αντίστοιχο υποπρόγραμμα και να χρησιμοποιείται όταν χρειάζεται. Η συγγραφή πολλών υποπρογραμμάτων και η δημιουργία βιβλιοθη-κών με αυτά, ουσιαστικά επεκτείνουν την ίδια τη γλώσσα προγραμματισμού.

Page 41: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

436 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

7.6 Τι είναι οι παράμετροι στα υποπρογράμματα;

Απάντηση

Τα υποπρογράμματα ενεργοποιούνται από ένα πρόγραμμα ή κάποιο άλλο υποπρόγραμ-μα για να εκτελέσουν συγκεκριμένες λειτουργίες. Κάθε υποπρόγραμμα για να ενεργο-ποιηθεί καλείται, από το αρχικό (κύριο) πρόγραμμα ή ένα άλλο υποπρόγραμμα. Συνήθως ένα υποπρόγραμμα δέχεται τιμές από το τμήμα προγράμματος που το καλεί και μετά την εκτέλεσή του, επιστρέφει στο πρόγραμμα νέες τιμές ως αποτελέσματα. Οι τιμές αυτές καλούνται παράμετροι. Οι παράμετροι είναι μεταβλητές που επιτρέπουν το πέρα-σμα τιμής από ένα τμήμα προγράμματος σε ένα άλλο. Είναι σαν τις κοινές μεταβλητές, αλλά χρησιμοποιούνται για να περνούν τιμές στα υποπρογράμματα.

7.7 Ποιες κατηγορίες υποπρογραμμάτων υπάρχουν και ποιες οι διαφορές τους;

Απάντηση

Το είδος κάθε υποπρογράμματος καθορίζεται από το είδος της λειτουργίας που επιτελεί. Υπάρχουν δύο κατηγορίες υποπρογραμμάτων, οι διαδικασίες και οι συναρτήσεις: • Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει

μόνο μία τιμή με το όνομά της (όπως οι μαθηματικές συναρτήσεις). • Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις

λειτουργίες όπως ένα πρόγραμμα. Δηλαδή να διαβάζει τιμές, να επιστρέφει πολλές τιμές ως αποτελέσματα και να παράγει μηνύματα.

Ο ακόλουθος πίνακας συνοψίζει τα χαρακτηριστικά και τις διαφορές των διαδικασιών και των συναρτήσεων.

Συναρτήσεις Διαδικασίες Οι συναρτήσεις υπολογίζουν μόνο μία τιμή, αριθμητική, χαρακτήρα ή λογική και μόνο αυτήν επιστρέφουν στο πρό-γραμμα που την κάλεσε.

Οι διαδικασίες μπορούν να εκτελέσουν οποια-δήποτε λειτουργία, π.χ. να διαβάσουν δεδομέ-να, να εκτελέσουν υπολογισμούς, να μεταβάλ-λουν τις τιμές των μεταβλητών και να τυπώ-σουν αποτελέσματα.

Οι συναρτήσεις μοιάζουν με τις συναρ-τήσεις των μαθηματικών και μεταφέ-ρουν το αποτέλεσμά τους στο πρόγραμ-μα που τις κάλεσε με το όνομά τους.

Οι διαδικασίες μεταφέρουν τα αποτελέσματά τους στα άλλα υποπρογράμματα με τη χρήση παραμέτρων.

Οι συναρτήσεις εκτελούνται με την εμ-φάνιση του ονόματος τους σε οποιαδή-ποτε έκφραση.

Για να ενεργοποιηθούν οι διαδικασίες χρησιμο-ποιείται η ειδική εντολή ΚΑΛΕΣΕ και το όνομα της διαδικασίας.

7.8 Πως ορίζονται οι συναρτήσεις;

Απάντηση

Η δομή των συναρτήσεων είναι:

Page 42: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 7. Υποπρογράμματα 449

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ <− αθρ/50

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Παρατήρηση Στα προγράμματα δηλώνουμε τις μεταβλητές που βλέπουμε μέσα στο πρόγραμμα.

Δηλαδή όσες διαβάζουμε και εμφανίζουμε και όσες υπάρχουν και στις παρενθέ-σεις των συναρτήσεων και διαδικασιών. Για παράδειγμα, στο πιο πάνω πρόγραμμα δηλώσαμε τον πίνακα Π στο πρόγραμ-μα διότι εμφανίζεται ως παράμετρος των υποπρογραμμάτων.

7.29 Ένας φοιτητής στατιστικής έχει ως άσκηση να πραγματοποιήσει μια σειρά 200 μετρήσεων και να υπολογίσει τα ακόλουθα στατιστικά μεγέθη: α) μέση τιμή μ = (χ1 + χ2 + … + χ200)/200 β) διασπορά δ = [(χ1 – μ)2 + (χ2 – μ)2 + … + (χ200 – μ)2]/200

γ) τυπική απόκλιση σ = δ Να γραφεί πρόγραμμα σε γλώσσα προγραμματισμού ΓΛΩΣΣΑ που θα υπο-λογίζει και θα εμφανίζει τα πιο πάνω στατιστικά μεγέθη. Ως είσοδος στο πρόγραμμα δίνονται οι 200 μετρήσεις ως πραγματικοί αριθ-μοί και εισάγονται σε πίνακα. Ο υπολογισμός του ερωτήματος β να γίνει με χρήση συνάρτησης. Ως είσοδος στη συνάρτηση δίνονται οι 200 μετρήσεις και η μέση τιμή τους.

Απάντηση

ΠΡΟΓΡΑΜΜΑ Ασκ ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ: Χ[200], αθρ, μ, σ, δ ΑΚΕΡΑΙΕΣ: i

ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 200

ΔΙΑΒΑΣΕ Χ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ αθρ <− 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 200

αθρ <− αθρ + Χ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ μ <− αθρ/200 ΓΡΑΨΕ μ δ <− ΔΙΑΣΠ(Χ, μ) ΓΡΑΨΕ δ σ <− Τ_Ρ(δ) ΓΡΑΨΕ σ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ ΔΙΑΣΠ(Χ, μ): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ

Page 43: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

450 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΠΡΑΓΜΑΤΙΚΕΣ: Χ[200], μ, αθρ ΑΚΕΡΑΙΕΣ: i

ΑΡΧΗ αθρ <− 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 200

αθρ <− αθρ + (Χ[i]-μ)^2 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΣΠ <− αθρ/200

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

7.30 Κάποια δημοτική αρχή ακολουθεί την εξής τιμολογιακή πολιτική για τηνκατανάλωση νερού ανά μήνα: Χρεώνει πάγιο ποσό 2 ευρώ και εφαρμόζει κλιμακωτή χρέωση σύμφωνα μετον παρακάτω πίνακα:

Κατανάλωση σε κυβικά μέτρα Χρέωση ανά κυβικόαπό 0 έως και 5 δωρεάν από 5 έως και 10 0,5 ευρώ από 10 έως και 20 0,7 ευρώ από 20 και άνω 1,0 ευρώ

Στο ποσό που προκύπτει από την αξία του νερού και το πάγιο υπολογίζεταιο Φ.Π.Α. με συντελεστή 18%. Το τελικό ποσό προκύπτει από την άθροισητης αξίας του νερού, το πάγιο, το Φ.Π.Α. και το δημοτικό φόρο που είναι 5 ευρώ. Να γράψετε πρόγραμμα το οποίο: α. Να διαβάζει τη μηνιαία κατανάλωση του νερού εμφανίζοντας πριν κα-τάλληλο μήνυμα με χρήση υποπρογράμματος. β. Να υπολογίζει την αξία του νερού που καταναλώθηκε σύμφωνα με τηνπαραπάνω τιμολογιακή πολιτική με χρήση υποπρογράμματος γ. Να υπολογίζει το Φ.Π.Α. δ. Να υπολογίζει και να εκτυπώνει το τελικό ποσό.

Απάντηση

Το α ερώτημα θα γίνει με διαδικασία επειδή εμφανίζει μήνυμα και διαβάζει μεταβλητή. Το β ερώτημα θα γίνει με χρήση συνάρτησης διότι υπολογίζει ένα αποτέλεσμα.

ΠΡΟΓΡΑΜΜΑ Ασκ ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ: Μ, Χ, ΦΠΑ, Τ ΑΡΧΗ

ΚΑΛΕΣΕ Εισαγωγή(Μ) Χ <− ΑΞΙΑ(Μ) ΦΠΑ <− 0. 18*(Χ+2) Τ <− Χ + 2 + 5 + ΦΠΑ ΓΡΑΨΕ Τ

Page 44: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 7. Υποπρογράμματα 451

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή(Μ) ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ: Μ ΑΡΧΗ

ΓΡΑΨΕ 'Δώσε μηνιαία κατανάλωση' ΔΙΑΒΑΣΕ Μ

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ ΑΞΙΑ(Μ): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ: Μ, Π ΑΡΧΗ

ΑΝ Μ <= 5 ΤΟΤΕ Π <− 0

ΑΛΛΙΩΣ_ΑΝ Μ <= 10 ΤΟΤΕ Π <− 0*5 + (Μ-5)*0.5

ΑΛΛΙΩΣ_ΑΝ Μ <= 20 ΤΟΤΕ Π <− 0*5 + 5*0.5 + (Μ-10)*0.7

ΑΛΛΙΩΣ Π <− 0*5 + 5*0.5 + 10*0.7 + (Μ-20)*1

ΤΕΛΟΣ_ΑΝ ΑΞΙΑ <− Π

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

7.31 Σε μια εταιρεία υπάρχουν 3 κατηγορίες υπαλλήλων με κωδικούς Κ1, Κ2, Κ3αντίστοιχα. Να γραφεί πρόγραμμα σε γλώσσα προγραμματισμού ΓΛΩΣΣΑπου θα διαβάζει για κάθε υπάλληλο τον κωδικό του και το μηνιαίο μισθό του σε Ευρώ. α) υπολογίζει και εμφανίζει πόσοι υπάλληλοι υπάρχουν σε κάθε κατηγορία. β) Γνωρίζοντας ότι οι υπάλληλοι της πρώτης κατηγορίας θα πάρουν δώροίσο με το 1/10 του μισθού τους, της δεύτερης κατηγορίας ίσο με το 1/15 και της τρίτης κατηγορίας 30 Ευρώ, να υπολογιστεί και να εμφανιστεί σε Ευρώτο δώρο κάθε υπαλλήλου. γ) Εμφανίζει σε δραχμές το δώρο κάθε υπαλλήλου. Η μετατροπή από Ευρώσε δραχμές θα γίνεται με χρήση συνάρτησης που θα δέχεται τα χρήματα σεΕυρώ ως πραγματικό αριθμό και θα επιστρέφει τα χρήματα σε δραχμές ως πραγματικό αριθμό επίσης. Το πρόγραμμα θα τερματίζει όταν δοθεί ως είσοδος μη αποδεκτός κωδικός.

Απάντηση

ΠΡΟΓΡΑΜΜΑ Ασκ ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: πλ1, πλ2, πλ3

Page 45: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

Κεφάλαιο 7. Υποπρογράμματα 455

ΑΡΧΗ ΑΝ αθρ <= 5000 ΤΟΤΕ Κ <− 100 ΑΛΛΙΩΣ Κ <− 100 + (αθρ – 5000)*2 ΤΕΛΟΣ_ΑΝ ΧΡ <− Κ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

7.34 Να γραφεί υποπρόγραμμα που θα διαβάζει έναν πίνακα Π[100] ακεραίων α-ριθμών. Επίσης να γραφεί υποπρόγραμμα που θα υπολογίζει το μέγιστο πίνα-κα Π[100] ακεραίων. Να γραφεί πρόγραμμα που με χρήση των προηγούμενων υποπρογραμμάτωνθα διαβάζει 2 πινάκες Α και Β 100 ακεραίων αριθμών και θα εμφανίζει το μέγιστο στοιχείο τους.

Απάντηση

Όπως γνωρίζουμε από τη θεωρία έχουμε τη δυνατότητα να αλλάζουμε τα ονόματα των παραμέτρων κατά την κλήση των συναρτήσεων και των διαδικασιών. Φυσικά πρέπει οι τυπικές παράμετροι (στην περίπτωσή μας ο Π) και οι πραγματικές παράμετροι (στην περίπτωσή μας οι Α και Β) να είναι του ίδιου τύπου.

ΠΡΟΓΡΑΜΜΑ Ασκ ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: Α[100], Β[100] ΑΡΧΗ

ΚΑΛΕΣΕ Εισαγωγή(Α) ΓΡΑΨΕ max(Α) ΚΑΛΕΣΕ Εισαγωγή(Β) ΓΡΑΨΕ max(Β)

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή(Π) ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: Π[100], i ΑΡΧΗ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 ΔΙΑΒΑΣΕ Π[i]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ max(Π): ΑΚΕΡΑΙΑ ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, Π[100], μεγ ΑΡΧΗ

μεγ <− Π[1]

Page 46: Περιεχόμενα και Δείγμα: Ανάπτυξη Εφαρμογών σε προγραμματιστικό Περιβάλλον

456 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100

ΑΝ Π[i] > μεγ ΤΟΤΕ μεγ <− Π[i]

ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ max <− μεγ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

7.35 Να γραφεί υποπρόγραμμα με όνομα swap που θα αντιμεταθέτει τις τιμές δύο ακεραίων τιμών Α και Β. Έπειτα να γραφεί διαδικασία με όνομα sort που θα δέχεται ως είσοδο πίνακα Π[100] ακεραίων αριθμών και με χρήση του υποπρογράμματος αντιμετάθε-σης θα ταξινομεί τον πίνακα σε φθίνουσα σειρά.

Απάντηση

Αρχικά θα φτιάξουμε το υποπρόγραμμα που θα κάνει την αντιμετάθεση των αριθμών. Επειδή το αποτέλεσμα του υποπρογράμματος θα είναι δύο αριθμοί, θα φτιάξουμε διαδι-κασία.

ΔΙΑΔΙΚΑΣΙΑ swap(Α, Β) ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: Α, Β, TEMP ΑΡΧΗ

TEMP <− Α Α <− Β Β <− TEMP

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Η διαδικασία ταξινόμησης θα καλεί τη διαδικασία της αντιμετάθεσης με ορίσματα τα στοιχεία Π[j-1] και Π[j]. Όπως γνωρίζουμε τα στοιχεία των πινάκων είναι σαν τις απλές μεταβλητές, που σημαίνει ότι κατά την κλήση της swap μπορούμε να τα χρησιμοποιή-σουμε στη θέση των μεταβλητών Α και Β.

ΔΙΑΔΙΚΑΣΙΑ sort(Π) ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, j, Π[100] ΑΡΧΗ

ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100 ΓΙΑ j ΑΠΟ 100 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1

ΑΝ Π[j-1] < Π[j] ΤΟΤΕ ΚΑΛΕΣΕ swap(Π[j-1], Π[j])

ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ