You are on page 1of 71

Αριθμητικοί τελεστές

Οι αριθμητικοί τελεστές είναι:


 πρόσθεση, αφαίρεση, πολλαπλασιασμός και διαίρεση +,-,*,/
 ύψωση σε δύναμη ^
 πηλίκο ακέραιης διαίρεσης δύο ακεραίων αριθμών div
 υπόλοιπο ακέραιης διαίρεσης δύο ακεραίων αριθμών mod
Η ιεραρχία των αριθμητικών πράξεων είναι η εξής:
1. ύψωση σε δύναμη
2. διαίρεση, πολλαπλασιασμός, div και mod
3. πρόσθεση και αφαίρεση

Υπολογισμός div– mod


Για τον υπολογισμό του div, πρέπει να διαιρέσουμε τον πρώτο αριθμό με τον δεύτερο και από το
αποτέλεσμα να κρατήσουμε το ακέραιο μέρος του. Δηλαδή αν το αποτέλεσμα της διαίρεσης δύο αριθμών
είναι 4.7, το div των δυο αριθμών είναι 4. Το mod δυο ακέραιων αριθμών είναι το υπόλοιπο της ακέραιης
διαίρεσης των δύο αριθμών. Για παράδειγμα,
5 mod 4 = 1. Για να υπολογίζουμε πάντα σωστά το mod, πρέπει να βρίσκουμε το div και στη συνέχεια να
πολλαπλασιάζουμε το αποτέλεσμα αυτό με το διαιρέτη και το αποτέλεσμα να το αφαιρούμε από τον
διαιρετέο. Το αποτέλεσμα είναι το mod.
Δηλαδή, αν θέλουμε να υπολογίσουμε το α mod β, τότε υπολογίζουμε αρχικά το α div β. Έστω ότι ισούται
με π. Το mod υπολογίζεται ως εξής: α – β*π.

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

Λογικοί τελεστές
 ΚΑΙ (σύζευξη)
 Ή (διάζευξη)
 ΟΧΙ (άρνηση)
Η ιεραρχία τους είναι η εξής:
1. ΟΧΙ (άρνηση)
2. ΚΑΙ (σύζευξη)
3. Ή (διάζευξη)

Αλγόριθμοι

ΛΥΜΕΝΑ ΠΑΡΑΔΕΙΓΜΑΤΑ

Δομή Ακολουθίας

1. Να γραφεί αλγόριθμος που:


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

2
Αλγόριθμος Α_1
Διάβασε m, υΑρχ
k←0.5*m* υΑρχ^2
Εμφάνισε k
Τέλος Α_1

2. Να γραφεί αλγόριθμος που να δέχεται ως δεδομένο ένα μήκος σε χιλιοστά (mm), να το μετατρέπει σε
χιλιόμετρα (km), μέτρα (m), εκατοστά (cm) και χιλιοστά (mm) και να εμφανίζει το αποτέλεσμα (π.χ. για
είσοδο 5.020.375 mm να εμφανίζει: 5km, 20m, 37cm, 5mm).

Αλγόριθμος Α_2
Διάβασε MM
KM ← MM DIV 1.000.000
Y1 ← MM MOD 1.000.000
Μ ← Υ1 DIV 1000
Y2 ← Y1 MOD 1000
CM ← Y2 DIV 10
MM_υπόλοιπα ← Y2 MOD 10
Εμφάνισε "Τα", MM, "χιλιοστά αντιστοιχούν σε:"
Εμφάνισε KM, "χιλιόμετρα"
Εμφάνισε Μ, "Μέτρα"
Εμφάνισε CM, "Εκατοστά"
Εμφάνισε MM_υπόλοιπα, "Χιλιοστά"
Τέλος Α_2

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

Αλγόριθμος Α_3
Εμφάνισε "Δώσε δύο τιμές"
Διάβασε α, β
!Για να επιλύσουμε το πρόβλημα θα φυλάξουμε την τιμή της α σε μια τρίτη βοηθητική μεταβλητή, !
κατόπιν θα αλλάξουμε την τιμή της α και στη β θα εκχωρήσουμε την τιμή της βοηθητικής !
μεταβλητής.
temp ← α
α←β
β ← temp
Εμφάνισε "Η τιμή του α είναι" ,α
Εμφάνισε "Η τιμή του β είναι" ,β
Τέλος Α_3

Δομή Επιλογής

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

Αλγόριθμος Α_4
Διάβασε α, β
Αν α*β>0 τότε

χ ← α+β)/2

αλλιώς

χ ← Α_Τ(α-β)

3
Τέλος_αν

Εμφάνισε χ

Τέλος Α_4

Κλιμακωτή Χρέωση

5. Ο λογαριασμός του νερού υπολογίζεται με βάση την κατανάλωση. Η αξία του νερού δίνεται από τον

παρακάτω πίνακα:

Κατανάλωση ( m3 /μήνα) Τιμή (€/ m3 )


0-5 1.17
5.1-20 1.78
>20.1 2.34

Στην αξία του νερού προστίθεται το πάγιο (€3) και ο ΦΠΑ (18%). Να γραφεί αλγόριθμος ο οποίος:

α) να διαβάζει το ονοματεπώνυμο του καταναλωτή, τον αριθμό του υδρομέτρου και την κατανάλωση ενός

μήνα

β) να υπολογίζει τη συνολική χρέωση (πάγιο, καθαρή αξία του νερού και ΦΠΑ)

γ) να εμφανίζει το ονοματεπώνυμο του καταναλωτή, τον αριθμό του υδρομέτρου και το συνολικό ποσό

που πρέπει να πληρώσει.

Αλγόριθμος Α_5

Διάβασε Όνομα, Υδρόμετρο, Κ

Αν Κ<=5 τότε

Π ← Κ*1,17

αλλιώς_αν Κ<=20 τότε

Π ← 5*1,17+(Κ-5)*1,78

αλλιώς

Π←5*1,17+15*1,78+(Κ-20)*2,34

Τέλος_αν

Συνολικό_Ποσό ← (Π+3)*1,18

Εμφάνισε Όνομα, Υδρόμετρο, Συνολικό_Ποσό

Τέλος Α_5

4
6. Το ATM μιας τράπεζας (μηχάνημα αυτόματων συναλλαγών) λειτουργεί με τον παρακάτω τρόπο. Με την

εισαγωγή της κάρτας του πελάτη στη σχισμή του μηχανήματος διαβάζει από την κάρτα το σωστό PIN

καταχωρώντας το σε μια μεταβλητή με το όνομα Σ_Ρ. Στη συνέχεια εμφανίζει το μήνυμα "Παρακαλώ

εισάγετε το PIN της κάρτας σας" και το καταχωρεί σε μια μεταβλητή με το όνομα PIN _ΠΛ. Ακολούθως

ελέγχει αν το PIN που δόθηκε από τον πελάτη (PIN _ΠΛ) είναι ίδιο με το PIN που διαβάστηκε από την

κάρτα (Σ_Ρ). Αν είναι ίδια εμφανίζει το μήνυμα "Μπορείτε να προχωρήσετε σε συναλλαγή". Αν δεν είναι

ίδια εμφανίζει το μήνυμα "Λάθος PIN. Δώστε το σωστό (έχετε ακόμα δύο προσπάθειες)" και ξαναδιαβάζει

το PIN του πελάτη (PIN _ΠΛ). Ακολούθως ελέγχει και πάλι αν το PIN που δόθηκε από τον πελάτη (PIN

_ΠΛ) είναι ίδιο με το PIN που διαβάστηκε από την κάρτα (Σ_Ρ). Αν στη δεύτερη προσπάθεια δοθεί το

σωστό PIN εμφανίζει το μήνυμα "Μπορείτε να προχωρήσετε σε συναλλαγή", αλλιώς εμφανίζει το μήνυμα

"Λάθος PIN. Δώστε το σωστό (έχετε ακόμα μια προσπάθεια)" και επαναλαμβάνει την προηγούμενη

διαδικασία. Αν στην τρίτη προσπάθεια δοθεί το σωστό PIN εμφανίζει το μήνυμα "Μπορείτε να

προχωρήσετε σε συναλλαγή", αλλιώς εμφανίζει το μήνυμα 'Ή κάρτα σας απενεργοποιήθηκε". Να γραφεί

αλγόριθμος που να εξομοιώνει τη λειτουργία του ATM.

Αλγόριθμος Α_6

Διάβασε Σ_Ρ

Εμφάνισε "Παρακαλώ εισάγετε το PIN της κάρτας σας"

Διάβασε PIN_ΠΛ

Αν PIN_ΠΛ = Σ_Ρ τότε

Εμφάνισε "Μπορείτε να προχωρήσετε σε συναλλαγή"

αλλιώς

Εμφάνισε "Λάθος ΡΙΝ. Δώστε το σωστό (έχετε ακόμα δύο προσπάθειες)"

Διάβασε ΡΙΝ_ΠΛ

Αν ΡΙΝ_ΠΛ = Σ_Ρ τότε

Εμφάνισε "Μπορείτε να προχωρήσετε σε συναλλαγή"


αλλιώς
Εμφάνισε "Λάθος ΡΙΝ. Δώστε το σωστό (έχετε ακόμα μια προσπάθεια)
Διάβασε ΡΙΝ_ΠΛ
Αν ΡΙΝ_ΠΛ = Σ_Ρ τότε
Εμφάνισε "Μπορείτε να προχωρήσετε σε συναλλαγή"
αλλιώς
Εμφάνισε "Η κάρτα σας απενεργοποιήθηκε"
Τέλος_αν
Τέλος_αν
Τέλος_αν
Τέλος Α_6

5
7. Επίλυση δευτεροβάθμιας εξίσωσης

Αλγόριθμος A_7
Διάβασε α, β, γ
Δ ← β^2-4*α*γ.
Αν Δ>0 τότε
Χ1 ← (-β+Ρίζα(Δ))/(2*α)
Χ2 ← (-β-Ρίζα(Δ))/(2*α)
Εμφάνισε Χ1,Χ2
αλλιώς
Αν Δ=0 τότε
Χ ← β/(2*α)
Εμφάνισε Χ
αλλιώς
Εμφάνισε "αδύνατη"
Τέλος_αν
Τέλος_αν
Τέλος A_7

Δομή Επανάληψης

Ασκήσεις "Για ... από … μέχρι"

Για μεταβλητή από τ1 μέχρι τ2 με_βημα τ3


Ομάδα Εντολών
Τέλος_επανάληψης

Στη δομή επανάληψης Για ... από ... μέχρι παρατηρούμε τα εξής:
1. Στο Για ... από ... μέχρι, το με_βήμα δεν είναι απαραίτητο. Όταν δεν υπάρχει το
βήμα αύξησης είναι 1.
2. Η συνθήκη τερματισμού (μεταβλητή ≤ τ2 ή μεταβλητή ≥ τ2) της επανάληψης
υπονοείται στη δομή επανάληψης Για ... από ... μέχρι.
3. Πότε δεν αλλάζουμε την τιμή της μεταβλητής μέσα στο σώμα της επανάληψης.
Δηλαδή δεν μπορούμε να διαβάσουμε ή να εκχωρήσουμε τιμή στη μεταβλητή της
επανάληψης, διότι τότε αλλοιώνονται τα βήματα της επανάληψης.
4. Ο αριθμός εκτέλεσης των επαναλήψεων είναι γνωστός εκ των προτέρων και
ισούται με τον αριθμό των διαφορετικών αποδεκτών τιμών που θα πάρει η
μεταβλητή για να οδηγηθούμε από το 2° βήμα στο 3° βήμα.

8. Να γραφεί αλγόριθμος που να διαβάζει έναν ακέραιο αριθμό Ν και να υπολογίζει και να εμφανίζει το
άθροισμα: S  12  22  32  ...  N 2 .

Αλγόριθμος Α_8
Διάβασε Ν
Sum ← 0
Για i από 1 μέχρι Ν
Sum ← Sum + i^2
Τέλος_Επανάληψης
Εμφάνισε Sum
Τέλος Α__8

6
9. Να γραφεί αλγόριθμος που να διαβάζει τον αριθμό πόντων που πέτυχε ένας παίκτης μπάσκετ σε 30
παιχνίδια και να υπολογίζει και να εμφανίζει το μέσο όρο του παίκτη αυτού.

Αλγόριθμος Α_9
Sum ← 0
Για i από 1 μέχρι 30
Διάβασε Πόντοι
Sum ←Sum+Πόντοι
Τέλος_Επανάληψης
ΜΟ ← Sum/30
Εμφάνισε ΜΟ
Τέλος Α_9

10. Ο κύκλος σπουδών μιας σχολής πληροφορικής αποτελείται από 50 μαθήματα και την εκπόνηση μιας
διπλωματικής εργασίας. Ο βαθμός πτυχίου ενός αποφοίτου προκύπτει από το μέσο όρο των μαθημάτων επί
τον συντελεστή 0,8 συν το βαθμό της διπλωματικής εργασίας επί τον συντελεστή 0,2. Με βάση αυτό το
βαθμό, αναγράφεται στο πτυχίο ένας από τους ακόλουθους χαρακτηρισμούς:
• "ΑΡΙΣΤΑ", αν 9≤ βαθμός ≤10
• "ΛΙΑΝ ΚΑΛΩΣ", αν 7≤ βαθμός <9
• "ΚΑΛΩΣ", αν 5≤ βαθμός <7.
Να γράψετε αλγόριθμο ο οποίος:
• Διαβάζει τους βαθμούς ενός αποφοίτου στα 50 αυτά μαθήματα.
• Υπολογίζει κι εμφανίζει το μέσο όρο μαθημάτων.
• Διαβάζει το βαθμό που πήρε στη διπλωματική του εργασία.
• Υπολογίζει κι εμφανίζει το βαθμό πτυχίου.
• Εμφανίζει μήνυμα με τον κατάλληλο χαρακτηρισμό.
Να θεωρήσετε ότι όλοι οι βαθμοί ανήκουν στο διάστημα [5, 10] και να μην ασχοληθείτε με την
εγκυρότητα τους.

Αλγόριθμος Α_10
Άθροισμα ← 0
Για i από 1 μέχρι 50
Εμφάνισε "Δώσε βαθμό μαθήματος: "
Διάβασε Βαθμός
Άθροισμα ← Άθροισμα + Βαθμός
Τέλος_Eπανάληψης
ΜΟ ← Άθροισμα/50
Εμφάνισε "Μέσος όρος μαθημάτων: ", ΜΟ
Εμφάνισε "Δώσε βαθμό διπλωματικής: "
Διάβασε Διπλωματική
ΒΠ ← 0.8*ΜΟ+0.2*Διπλωματική
Εμφάνισε "Βαθμός πτυχίου: ", ΒΠ
Αν ΒΠ > = 9 τότε
εμφάνισε "ΑΡΙΣΤΑ"
αλλιώς_αν ΒΠ > = 7 τότε
εμφάνισε "ΛΙΑΝ ΚΑΛΩΣ"
αλλιώς
εμφάνισε "ΚΑΛΩΣ"
Τέλος_αν
Τέλος Α_10

11. Να γίνει αλγόριθμος που θα διαβάζει τη θερμοκρασία μιας πόλης Α για διάστημα 30 ημερών και θα
υπολογίζει και θα εμφανίζει πόσες ημέρες η θερμοκρασία της πόλης Α ήταν μεγαλύτερη από 15 °C.

Αλγόριθμος Α_11
Κ←0

7
Για i από 1 μέχρι Ν
Διάβασε θ
Αν θ>15 τότε
Κ ← Κ+1
Τέλος_αν
Τέλος_Επανάληψης
Εμφάνισε Κ
Τέλος Α_11

12. Να γίνει αλγόριθμος που να διαβάζει τις τιμές της βενζίνης SUPER όπως ανακοινώνονται από το
Υπουργείο Εμπορείου για διάστημα 30 ημερών και να υπολογίζει και να εμφανίζει πόσες ημέρες η τιμή
της SUPER ήταν πάνω από €0.7, πόσες κάτω από €0.5 και πόσες ενδιάμεσα.

Αλγόριθμος Α_12
Κ1 ← 0
Κ2 ← 0
Κ3 ← 0
Για i από 1 μέχρι 30
Διάβασε Τιμή
Αν Τιμή<0.5 τότε
Κ1 ← Κ1+1
αλλιώς_αν Τιμή<0.7 τότε
Κ2 ← Κ2+1
αλλιώς
Κ3 ← Κ3+1
Τέλος_αν
Τέλος_Επανάληψης
Εμφάνισε Κ1, Κ2, Κ3
Τέλος Α_12

13. Να γίνει αλγόριθμος που να διαβάζει τον αριθμό των πόντων που πέτυχαν δέκα παίκτες μιας ομάδας
που συμμετείχαν σε έναν αγώνα μπάσκετ. Ο αλγόριθμος να προσδιορίζει και να εμφανίζει το σκορ και τον
αριθμό της φανέλας του παίκτη που πέτυχε τους περισσότερους πόντους στο παιχνίδι. Υποθέστε ότι ο κάθε
παίκτης έχει το δικό του σκορ, διαφορετικό από το σκορ όλων των υπολοίπων και ότι οι αριθμοί της
φανέλας ξεκινάνε από το 1 και φτάνουν μέχρι το 10.

Αλγόριθμος Α_13
Διάβασε Σκορ
max ← Σκορ
Αρ_Φανέλας ← 1
Για i από 2 μέχρι 10
Διάβασε Σκορ
Αν Σκορ>max τότε
max ← Σκορ
Αρ_Φανέλας ← 1
Τέλος_αν
Τέλος_Επανάληψης
Εμφάνισε max,Αρ_Φανέλας
Τέλος Α_13

14. Ένα εργοστάσιο έχει 200 υπαλλήλους. Για κάθε έναν από τους υπαλλήλους εισάγονται από το
πληκτρολόγιο ο μισθός, η ηλικία του, καθώς επίσης και το όνομα του. Να γραφεί αλγόριθμος ο οποίος:
1. Να διαβάζει το όνομα, την ηλικία και το μισθό κάθε υπαλλήλου
2. θα εμφανίζει πόσα άτομα που έχουν όνομα Μανώλης πληρώνονται με μισθό άνω των 1.000€ και πόσος
είναι ο μέσος μισθός των υπαλλήλων αυτών

8
3. Αν υποθέσουμε ότι οι υπάλληλοι αυτοί συνταξιοδοτούνται στην ηλικία των 65 ετών, να εμφανίζεται το
όνομα κάθε υπαλλήλου που πρόκειται να συνταξιοδοτηθεί μέσο στην επόμενη επταετία (7 έτη)

Αλγόριθμος A_14
Μ←0
ΣΜ ← 0
Για i από 1 μέχρι 200
Διάβασε Όνομα, Ηλικία, Μισθός
Αν (Όνομα = «Μανόλης») και (Μισθός > 1000) τότε
Μ←Μ+1
ΣΜ ← ΣΜ + Μισθός
Τέλος_Αν
Αν Ηλικία + 7 >= 65 τότε
Εμφάνισε "O", Όνομα, "Πρόκειται να συνταξιοδοτηθεί"
Τέλος_Αν
Τέλος_Επανάληψης
Εμφάνισε "Υπάρχουν" ,Μ, "άτομα με το όνομα Μανώλης και μισθό πάνω οπό 10000€"
Εμφάνισε "O μέσος μισθός είναι" ,ΣΜ/Μ
Τέλος A_14

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

Περιγραφή Χρέωσης Χρέωση σε €


Πάγιο 5€
Χρόνος ομιλίας 0,03€ ανά δευτερόλεπτο Ελάχιστη χρέωση
20 δευτερόλεπτα
Μηνύματα
0-20 0,04€ ανά μήνυμα
21-40 0,02€ ανά μήνυμα
41 και άνω 0/01€ ανά μήνυμα

Σχεδιάστε αλγόριθμο που θα υλοποιεί τα παρακάτω:


1. θα διαβάζει το πλήθος των συνδρομητών της εταιρείας
2. θα διαβάζει τον χρόνο ομιλίας και τον αριθμό μηνυμάτων που έχει στείλει ο κάθε
συνδρομητής
3. θα υπολογίζει τη συνολική χρέωση (πάγιο, ομιλία, μηνύματα) καθενός συνδρομητή
4. θα υπολογίζει τη συνολική χρέωση όλων των συνδρομητών της εταιρείας
5. θα υπολογίζει το μέσο όρο χρέωσης ομιλίας και αποστολής μηνυμάτων κάθε
συνδρομητή

Αλγόριθμος A_15
ΣυνολικήΧρέωση ← 0
ΣυνολικήΧρέωσηΟμιλίας ← 0
ΣυνολικήΧρέωσηΜηνυμάτων ← 0
Γράψε "Δώσε πλήθος συνδρομητών"
Διάβασε Ν
Για i από 1 μέχρι Ν
Γράψε "Δώσε χρόνο ομιλίας και αριθμό μηνυμάτων"
Διάβασε ΧρόνοςΟμιλίας, ΑριθμόςΜηνυμάτων
Αν ΑριθμόςΜηνυμάτων <= 20 τότε
ΧρέωσηΜηνυμάτων ← ΑριθμόςΜηνυμάτων * 0,04
Αλλιώς_Αν ΑριθμόςΜηνυμάτων <= 40 τότε
ΧρέωσηΜηνυμάτων ← ΑριθμόςΜηνυμάτων * 0,02
Αλλιώς
ΧρέωσηΜηνυμάτων <- ΑριθμόςΜηνυμάτων * 0,01
Τέλος_αν
Αν ΧρόνοςΟμιλίας<= 20 τότε
ΧρεωσηΟμιλίας ← 20 * 0,03

9
Αλλιώς
ΧρέωσηΟμιλίας ← ΧρόνοςΟμιλίας * 0,03
Τέλος_Αν
Χρέωση ← 5 + ΧρέωσηΟμιλίας + ΧρέωσηΜηνυμάτων
Γράψε "Η χρέωση του συνδρομητή είναι" ,Χρέωση
ΣυνολικήΧρέωσηΟμιλίας ← ΣυνολικήΧρέωσηΟμιλϊας + ΧρέωσηΟμιλίος
ΣυνολικήΧρέωσηΜηνυμάτων ← ΣυνολικήΧρέωσηΜηνυμάτων + ΧρέωσηΜηνυμάτων
Τέλος_επανάληψης
ΜΟ_Ομιλίας ← ΣυνολικήΧρέωσηΟμιλίας / Ν
ΜΟ_Μηνυμάτων «- ΣυνολικήΧρέωσηΜηνυμάτων / Ν
Γράψε "Συνολική Χρέωση" ,ΣυνολικήΧρέωση
Γράψε "Μέσος όρος χρέωσης ομιλίας" ,ΜΟ_Ομιλίας
Γράψε "Μέσος όρος χρέωσης μηνυμάτων" ,ΜΟ_Μηνυμάτων
Τέλος A_15

Ασκήσεις "Όσο ... επανάλαβε"

Όσο Συνθήκη επανάλαβε


Ομάδα Εντολών
Τέλος_επανάληψης

Στη δομή επανάληψης Όσο ... επανάλαβε παρατηρούμε τα εξής:


1. Η ομάδα εντολών ανάμεσα στο Όσο ... επανάλαβε και στο Τέλος_επανάληψης
μπορεί να μην εκτελεστεί ποτέ, γιατί μπορεί να μην ισχύει η συνθήκη εξ αρχής.
2. Δεν γνωρίζουμε εκ των προτέρων τον αριθμό των επαναλήψεων. Η ομάδα
εντολών της επανάληψης εκτελείται όσο η συνθήκη είναι αληθής.
3. Στην ομάδα εντολών θα πρέπει να περιλαμβάνονται και εντολές που θα
τροποποιούν τη συνθήκη, έτσι ώστε κάποια στιγμή αυτή να γίνει ψευδής και η
επανάληψη να τερματίσει.
4. Η δομή επανάληψης Όσο ... επανάλαβε χρησιμοποιείται όταν δεν γνωρίζουμε
τον ακριβή αριθμό επαναλήψεων. Όταν δηλαδή δεν γνωρίζουμε από την αρχή πόσες
φορές θέλουμε να εκτελεστεί μια ομάδα εντολών, αλλά η εκτέλεση εξαρτάται από
μια συνθήκη.

16. Να γραφεί αλγόριθμος ο οποίος διαβάζει έναν αριθμό σε δραχμές, τον μετατρέπει σε ευρώ και κατόπιν
τον εμφανίζει. Η διαδικασία αυτή θα πρέπει να επαναλαμβάνεται ξανά και ξανά, μέχρι ο υπολογιστής να
διαβάσει την τιμή 0. Δίνεται ότι: 1 ευρώ = 340,75 δραχμές.

Αλγόριθμος Α_16
Εμφάνισε "Δώσε τιμή σε δραχμές (0 για τέλος)"
Διάβασε ΔΡΧ
Όσο (ΔΡΧ <> 0) επανάλαβε
ΕΥΡΏ ← ΔΡΧ/340.75
Εμφάνισε ΕΥΡΏ
Εμφάνισε "Δώσε τιμή σε δραχμές (0 για τέλος)"
Διάβασε ΔΡΧ
Τέλος_Επανάληψης
Τέλος Α_16

17. Μία εταιρεία ύδρευσης χρεώνει τους πελάτες της κλιμακωτά με βάση τον παρακάτω πίνακα:

10
Κυβικά € ανά Κυβικό
1-15 10
16-50 25
51-100 40
101+ 50

Επιπροσθέτως του κόστους των κυβικών, ο πελάτης επιβαρύνεται και με πάγιο


συνδρομής ύψους 30€. Να γραφεί αλγόριθμος ο οποίος:
1. Διαβάζει από το πληκτρολόγιο το πλήθος των πελατών της εταιρείας ύδρευσης
2. Για κάθε ένα από τους πελάτες διαβάζει τα κυβικά που κατανάλωσε καθώς επίσης και το όνομα του. Να
σημειωθεί ότι το κυβικά πρέπει να είναι θετικός αριθμός και πρέπει να γίνεται ο σχετικός έλεγχος
3. Να εμφανίζει το κόστος που πρέπει να πληρώσει ο κάθε πελάτης, καθώς επίσης και
τις συνολικές εισπράξεις της εταιρείας.
Σε ποιον πελάτη (το όνομα του) πήγε ο μεγαλύτερος λογαριασμός (να θεωρήσετε ότι
δεν υπάρχουν δύο ή περισσότεροι πελάτες με το ίδιο ύψος λογαριασμού)

Αλγόριθμος A_17
Συνολικές_Εισπράξεις ← 0
max ← -1
maxΠ ← " "
Πάγιο ← 30
Διάβασε Αρ_Πελ
Για i από 1 μέχρι Αρ_Πελ
Διάβασε Κυβικά, Όνομα
Όσο Κυβικά < Ο επανάλαβε
Εμφάνισε "Μη αποδεκτός αριθμός κυβικών, εισάγετε θετικό αριθμό"
Διάβασε Κυβικά
Τέλος_Επανάληψης
Αν Κυβικά >= 1 και Κυβικά <= 15 τότε
Κ ← Κυβικά * 10
Αλλιώς_αν Κυβικά <= 50 τότε
Κ ← 15 * 10 + (Κυβικά -15) * 25
Αλλιώς_αν Κυβικά <= 100 τότε
Κ ← 15 * 10 + 35 * 25 + (Κυβικά - 50) * 40
Αλλιώς_αν Κυβικά >= 101 τότε
Κ ← 15 * 10 + 35 * 25 + 50 * 40 + (Κυβικά - 100) * 50
Αλλιώς
Εμφάνισε "Μη αποδεκτά δεδομένα εισόδου"
Τέλος_Αν
Τελικό_κ ← Κ + Πάγιο
Συνολικές,Εισπράξείς ← Συνολικές_Εισπράξεις + Τελικό_κ
Εμφάνισε Τελικό_κ
Αν Τελικό_κ > max τότε
max ← Τελικό_κ
maxΠ ← Όνομα
Τέλος_Αν
Τέλος_Επανάληψης
Εμφάνισε "Oι συνολικές εισπράξεις της εταιρείας είναι:" , Συνολικές_Εισπράξεις
Εμφάνισε "Μεγαλύτερο λογαριασμό έλαβε ο πελάτης:" , maxΠ
Τέλος A_17

18. Ένας εκδοτικός οίκος εκδίδει 10 διαφορετικά βιβλία. Συγκεντρωτικά τα στοιχεία με τις πωλήσεις του
έτους (12 μήνες) κάθε βιβλίου τοποθετούνται σε έναν πίνακα Α. Οι τίτλοι των βιβλίων τοποθετούνται σε
ένα πίνακα Β. Ζητείται να γραφεί αλγόριθμος ο οποίος:
Α) θα διαβάζει τα στοιχεία των πινάκων από το πληκτρολόγιο και θα γεμίζει τους πίνακες.
Β) θα υπολογίζει και θα εμφανίζει ποιος τίτλος βιβλίου και ποιο μήνα σημείωσε τις μεγαλύτερες πωλήσεις.
Γ) Να διαβάζει τον τίτλο ενός βιβλίου και να εμφανίζει πόσες ήταν οι συνολικές πωλήσεις του (όλο το
χρόνο).
Δ) Πόσα και ποια βιβλία είχαν ετήσιες πωλήσεις μεγαλύτερες ή ίσες του μέσου όρου πωλήσεων του
συγκεκριμένου οίκου.

11
Αλγόριθμος A_18

Για i από 1 μέχρι 10
Εμφάνισε "Εισάγετε το όνομα του" ,i, "βιβλίου"
Διάβασε Β[i]
Για j από 1 μέχρι 12
Αρχή_επανάληψης
Εμφάνισε "Παρακαλώ εισάγετε τις πωλήσεις του" ,i, "βιβλίου τον" ,j, "ο μήνα"
Διάβασε Α[i,j]
Μέχρις_ότου Α[i,j] ≥ 0
Τέλος_επανάληψης
Τέλος_επανάληψης

max ← Α[1,1]
max_Μήνας ← 1
max_Βιβλίο ← 1
Για i από 1 μέχρι 10
Για j από 1 μέχρι 12
Αν Α[i,j] > max τότε
max ← Α[i,j]
max_Μήνας ← j
max_Βιβλίο ← i
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Εμφάνισε "Το βιβλίο" , Β[max_Βιβλίο], "το μήνα" , max_Μήνας, "έκανε τις μεγαλύτερες πωλήσεις
με" ,max, "αντίτυπα"

Εμφάνισε "Εισάγετε τον τίτλο του βιβλίου προς αναζήτηση"
Διάβασε τίτλος
done ← ψευδής
θέση_βιβλίου_στον_πίνακα ← 0
i←1
Όσο (i <= 10) και (done = ψευδής) επανέλαβε
Αν Β[i| = τίτλος τότε
done ← αληθής
θέση_βιβλίου_στον_πίνακα ← i
αλλιώς
i←i+1
Τέλος_αν
Τέλος_επανάληψης
Αν done = Αληθής τότε
sum ← 0
Για i από 1 μέχρι 12
sum ← A[θέση_βιβλίου_στον_πίνακα,j] + sum
Τέλος_επανάληψης
Εμφάνισε "Το βιβλίο" ,Β[Θέση_Βιβλίου_Στον_Πίνακα], "πούλησε" ,sum, "αντίτυπα"
αλλιώς
Εμφάνισε "Δεν υπάρχει ο τίτλος αυτός στα βιβλία του εκδοτικού οίκου"
Τέλος_αν

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

12
Τέλος_επανάληψης
Γ[i] ← sum
Τέλος_επανάληψης
sum ← 0
Για i από 1 μέχρι 10
sum ← sum + Γ[i]
Τέλος_επανάληψης
MO ← sum / 10
πλήθος ← 0
Για i από 1 μέχρι 10
Αν Γ[i] >= ΜΟ τότε
Εμφάνισε "To βιβλίο" ,Β[i], "είχε ετήσιες πωλήσεις μεγαλύτερες ή ίσες του μέσου όρου
πωλήσεων"
πλήθος ← πλήθος + 1
Τέλος_Αν
Τέλος_επανάληψης
Εμφάνισε πλήθος, "βιβλία είχαν ετήσιες πωλήσεις μεγαλύτερες ή ίσες του μέσου όρου πωλήσεων"
Τέλος A_18

Ασκήσεις "Αρχή_επανάληψης … Μέχρις_ότου"

Αρχή_επανάληψης
Ομάδα Εντολών
Τέλος_επανάληψης

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


1. Η ομάδα εντολών ανάμεσα στο Αρχή_επανάληψης και στο Μέχρις_ότου εκτελείται τουλάχιστον μια
φορά.
2. Δεν γνωρίζουμε εκ των προτέρων τον αριθμό των επαναλήψεων. Η ομάδα εντολών της επανάληψης
εκτελείται μέχρις ότου η συνθήκη να γίνει αληθής, όσο δηλαδή η συνθήκη είναι ψευδής.
3. Στην ομάδα εντολών θα πρέπει να περιλαμβάνονται και εντολές που θα τροποποιούν τη συνθήκη, έτσι
ώστε κάποια στιγμή αυτή να γίνει αληθής και η επανάληψη να τερματίσει.
4. Η δομή επανάληψης Αρχή_επανάληψης ... Μέχρις_ότου χρησιμοποιείται όταν δεν γνωρίζουμε τον
ακριβή αριθμό επαναλήψεων, αλλά επιθυμούμε να εκτελεστεί τουλάχιστον μια φορά η επανάληψη.

Μετατροπή της γενικής μορφής της δομής επανάληψης Όσο … επανάλαβε σε ισοδύναμη μορφή
χρησιμοποιώντας τη δομή επανάληψης Αρχή_επανάληψης … Μέχρις_ότου

Όσο Συνθήκη επανάλαβε Αν Συνθήκη τότε


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

Μετατροπή της γενικής μορφής της δομής επανάληψης Αρχή_επανάληψης … Μέχρις_ότου σε ισοδύναμη
μορφή χρησιμοποιώντας τη δομή επανάληψης Όσο … επανάλαβε

Αρχή_επανάληψης Ομάδα Εντολών


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

Μετατροπή της γενικής μορφής της δομής επανάληψης Για … από … μέχρι σε ισοδύναμη μορφή
χρησιμοποιώντας τη δομή επανάληψης Όσο … επανάλαβε

13
1η περίπτωση: τ1≤τ2
Για μεταβλητή από τ1 μέχρι τ2 με_βημα τ3 μεταβλητή ← τ1
Ομάδα Εντολών Όσο μεταβλητή≤τ2 επανάλαβε
Τέλος_επανάληψης Ομάδα Εντολών
μεταβλητή ← μεταβλητή + τ3
Τέλος_επανάληψης

2η περίπτωση: τ1≥τ2
Για μεταβλητή από τ1 μέχρι τ2 με_βημα τ3 μεταβλητή ← τ1
Ομάδα Εντολών Όσο μεταβλητή≥τ2 επανάλαβε
Τέλος_επανάληψης Ομάδα Εντολών
μεταβλητή ← μεταβλητή + τ3
Τέλος_επανάληψης

ΑΛΥΤΕΣ ΑΣΚΗΣΕΙΣ

1. Δίνεται το παρακάτω τμήμα διαγράμματος ροής:

14
α. να γράψετε το τμήμα του αλγορίθμου που αντιστοιχεί στο τμήμα του διαγράμματος ροής
β. να γράψετε τον πίνακα τιμών των μεταβλητών Χ, Υ, W και Α καθώς και τα αποτελέσματα που
προκύπτουν από τις εντολές εμφάνισε

2. Να γράψετε στο τετράδιο σας τις τιμές των μεταβλητών Κ,Λ,Μ,Π,Φ όπως αυτές τυπώνονται μετά την
εκτέλεση του παρακάτω αλγορίθμου, αν σαν είσοδος δοθούν διαδοχικά οι παρακάτω τιμές για τις
μεταβλητές Π και Φ

Π Φ
2 5
3 6
6 4
7 8
5 1

Αλγόριθμος Ζήτημα_2ο

15
Κ10
Λ ((Κ Mod 3) – 1) div 2
Μ0
Όσο Μ<5 επανάλαβε
Διάβασε Π, Φ
Αν Π > Φ τότε
ΛΛ+Φ
Αν Π < Κ τότε
Κ  Π div 2
Τέλος_Αν
Αλλιώς
ΛΛ+Π
Αν Φ > Κ τότε
Κ  (Φ – 2) * Μ
Αλλιώς
ΚΚ+Φ
Τέλος_Αν
Τέλος_Αν
ΜΜ+1
Εκτύπωσε Κ,Λ,Π,Φ
Τέλος_Επανάληψης
Μ Κ + Λ
Εκτύπωσε Μ
Τέλος Ζήτημα_2o

3. Το τμήμα πληροφορικής του Οικονομικού Πανεπιστημίου Αθηνών έχει 150 τελειόφοιτους. Η


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

Μέσος όρος Χαρακτηρισμός


5 – 6.5 καλώς
6.51 – 8.5 Λίαν καλώς
8.51 και άνω άριστα

4. Να δώσετε αλγόριθμο που να υλοποιεί τα παρακάτω:


α) Να διαβάζει το ύψος τεσσάρων ατόμων
β) Να υπολογίζει πόσοι από τους πρώτους τρεις είναι ψηλότεροι από τον τέταρτο
γ) Αν βρέθηκαν π.χ. 2 άτομα ψηλότερα από τον τέταρτο να εμφανίζει μήνυμα της μορφής “Οι 2 είναι
ψηλότεροι από τον τέταρτο”
δ) Στην περίπτωση που και οι τρεις πρώτοι είναι ψηλότεροι από τον τέταρτο να εμφανίζει το μήνυμα “Ο
τέταρτος είναι ο πιο κοντός”

5. Για τον υπολογισμό του ποσού πληρωμής για την κατανάλωση ηλεκτρικού ρεύματος στη Δ.Ε.Η.
δίνονται:
α) ο κωδικός κατηγορίας τιμολογίου (1= οικιακό, 2= νυχτερινό, 3= βιομηχανικό
τιμολόγιο)
β) η παρούσα ένδειξη μετρητή
γ) η προηγούμενη ένδειξη μετρητή
δ) Η τιμή μονάδας ρεύματος εξαρτάται από την κατανάλωση και υπολογίζεται κλιμακωτά σύμφωνα µε τον
εξής πίνακα:

Κατανάλωση Τιμή μονάδας

16
1-200 0,035
201-500 0,037
501-1500 0,059
1501-πάνω 0,088

(δηλ. οι πρώτες 200 μονάδες κοστίζουν €0,035 η μια, οι επόμενες 300 μονάδες €0,037 η μια κτλ.).
ε) Το πάγιο για τις κατηγορίες 1 και 2 είναι €6 και για την κατηγορία 3 είναι €30
στ) Ο συντελεστής Φ.Π.Α. είναι 18% και προστίθεται στο συνολικό ποσό πληρωμής.
Να γραφεί αλγόριθμος ο οποίος:
1. Να διαβάζει από το πληκτρολόγιο τον κωδικό κατηγορίας τιμολογίου, την προηγούμενη και την
παρούσα ένδειξη του μετρητή
2. Να υπολογίζει και να εμφανίζει το λογαριασμό αναλυτικά ως εξής:
α. κατανάλωση ρεύματος σε μονάδες
β. αξία ρεύματος.
γ. πάγιο
δ. Φ.Π.Α.
ε. συνολικό ποσό πληρωμής

6. Η Δημόσια Επιχείρηση Ηλεκτρισμού υπολογίζει την αξία του ηλεκτρικού ρεύματος των καταναλωτών
της σύμφωνα με τον επόμενο πίνακα:

ΗΜΕΡΗΣΙΑ ΚΑΤΑΝΑΛΩΣΗ ΝΥΧΤΕΡΙΝΗ ΚΑΤΑΝΑΛΩΣΗ


Κατανάλωση Τιμή Κατανάλωση Τιμή/kWh
(σε kWh) (σε €) (σε kWh) (σε €)
1 - 800 0.22 ανεξαρτήτως 0.12
801 - 1200 0.25 κατανάλωσης
1201 - 1600 0.28
1601 και άνω 0.30

Στην ημερήσια κατανάλωση η χρέωση γίνεται κλιμακωτά. Για παράδειγμα, η αξία μιας κατανάλωσης 1255
kWh υπολογίζεται ως εξής: Οι πρώτες 800 kWh υπολογίζονται προς 0,22 €/kWh, οι επόμενες 400 kWh
προς 0,25 €/kWh και οι τελευταίες 55 kWh προς 0,28 €/kWh. Στην αξία της ημερήσιας χρέωσης
προστίθεται η αξία της νυχτερινής και ένα πάγιο ποσό 20 €, έτσι ώστε να προκύψει η συνολική αξία του
ρεύματος που καταναλώθηκε. Να κατασκευαστεί αλγόριθμος, ο οποίος να:
α. διαβάζει τον αριθμό ρολογιού (μετρητή της ΔΕΗ), καθώς επίσης την ημερήσια και τη νυκτερινή
κατανάλωση άγνωστου πλήθους καταναλωτών.
β. υπολογίζει και να εμφανίζει την αξία του ρεύματος που καταναλώθηκε ανά ρολόι
γ. υπολογίζει και να εμφανίζει το συνολικό ποσό που πρέπει να εισπράξει η εταιρία από όλους τους
καταναλωτές της για την αξία του ρεύματος που κατανάλωσαν
Ο αλγόριθμος θα πρέπει να λειτουργεί για άγνωστο αριθμό καταναλωτών και να τερματίζει, όταν δοθεί η
τιμή 0 στον αριθμό ρολογιού.

Αλφάβητο ΓΛΩΣΣΑΣ

Γράμματα
Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)
Πεζά ελληνικού αλφαβήτου (α-ω)
Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)
Πεζά λατινικού αλφαβήτου (a-z)

Ψηφία
0-9

Ειδικοί χαρακτήρες

17
+ - * / = ^ ( ) . , ' ! & κενός χαρακτήρας

Τύποι δεδομένων

Ακέραιος
Περιλαμβάνει τους ακέραιους αριθμούς. Οι ακέραιοι μπορεί να είναι θετικοί, αρνητικοί ή μηδέν.

Πραγματικός
Περιλαμβάνει τους πραγματικούς αριθμούς. Και οι πραγματικοί μπορεί να είναι θετικοί, αρνητικοί ή
μηδέν.

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

Λογικός
Ο λογικός τύπος δεδομένων δέχεται δύο τιμές: ΑΛΗΘΗΣ και ΨΕΥΔΗΣ.

Δομή προγράμματος

ΠΡΟΓΡΑΜΜΑ Όνομα προγράμματος


ΣΤΑΘΕΡΕΣ
Όνομα 1 = Τιμή
Όνομα 2 = Τιμή
...
Όνομα Ν = Τιμή
ΜΕΤΑΒΛΗΤΕΣ
Τύπος: Μεταβλητή 1, Μεταβλητή 2, …, Μεταβλητή Ν
Τύπος: Μεταβλητή 1, Μεταβλητή 2, …, Μεταβλητή Ν
...
ΑΡΧΗ
Εντολές
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Παρατήρηση: Στα προγράμματα πολλές φορές θα χρειαστεί να χρησιμοποιήσουμε μαθηματικές


συναρτήσεις. Οι συνηθέστερες συναρτήσεις είναι:

ΗΜ(χ): ημίτονο
ΣΥΝ(χ): συνημίτονο
ΕΦ(χ): εφαπτομένη
Τ_Ρ(χ): τετραγωνική ρίζα
ΛΟΓ(χ): λογάριθμος
Ε(χ): e X
Α_Μ(χ): ακέραιο μέρος
Α_Τ(χ): απόλυτη τιμή

Πίνακες

ΛΥΜΕΝΑ ΠΑΡΑΔΕΙΓΜΑΤΑ

Μονοδιάστατοι πίνακες

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

18
Αλγόριθμος Α_1
Για i από 1 μέχρι 100
Διάβασε Α[ί]
Τέλος_επανάληψης
Για i από 100 μέχρι 1 με_βήμα -1
Εμφάνισε Α[i]
Τέλος_επανάληψης
Τέλος Α_1

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

Αλγόριθμος Α_2
Για i από 1 μέχρι 100
Εμφάνισε "Δώσε το στοιχείο" ,i
Διάβασε Π[i]
Τέλος_επανάληψης
min ← Π[1]
θέση_min ← 1
Για i από 2 μέχρι 100
Αν Π[i]<min τότε
min ← Π[i]
θέση_min ← i
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Το ελάχιστο στοιχείο του πίνακα είναι" ,min
Εμφάνισε "Η θέση του ελάχιστου στοιχείου είναι" ,θέση_min
Τέλος A_2

3. Να γραφεί αλγόριθμος ο οποίος διαβάζει τις ηλικίες 100 ανθρώπων και τις καταχωρεί σε έναν

μονοδιάστατο πίνακα Α. Κατόπιν υπολογίζει και εκτυπώνει:

α) Το μέσο όρο όλων των ηλικιών.


β) Τη μέγιστη ηλικία.
γ) Το πλήθος των ανθρώπων που είναι άνω των 50 ετών.

Αλγόριθμος Α_3
S←0
max ← 0
ΑΝΩ_50 ← 0
Για i από 1 μέχρι 100
Διάβασε Α[i]

19
S ← S + Α[i]
Αν Α[i] > max τότε
max ← Α[i] !μόνο η μέγιστη ηλικία και όχι η θέση της
Τέλος_αν
Αν Α[i] > 50 τότε
ΑΝΩ_50 ← ΑΝΩ_50 + 1
Τέλος_αν
Τέλος_επανάληψης
ΜΟ ← S/100
Εκτύπωσε "Μέσος όρος ηλικιών: ", ΜΟ
Εκτύπωσε "Μέγιστη ηλικία: ", max
Εκτύπωσε "Πλήθος ατόμων άνω των 50 ετών: ", ΑΝΩ_50
Τέλος Α_3

4. Να γραφεί αλγόριθμος ο οποίος:


α) Να διαβάζει τα ονόματα και τις ετήσιες εισπράξεις 20 καταστημάτων.
β) Να εμφανίζει το πλήθος και τα ονόματα των καταστημάτων που έχουν εισπράξεις μικρότερες των
30.000 ευρώ.
γ) Να εμφανίζει το όνομα του καταστήματος με τις υψηλότερες εισπράξεις.

Αλγόριθμος Α_4
Π←0
Για i από 1 μέχρι 20
Εμφάνισε "Δώσε όνομα καταστήματος:"
Διάβασε ΟΝΟΜΑ[i]
Εμφάνισε "Δώσε ετήσια είσπραξη:"
Διάβασε ΕΙΣΠΡΑΞΗ[i]
Τέλος_επανάληψης
MAX ← ΕΙΣΠΡΑΞΗ[1]
iMAX ← 1
Π←0
Για i από 2 μέχρι 20
Αν ΕΙΣΠΡΑΞΗ[i] > MAX τότε
ΜΑΧ ← ΕΙΣΠΡΑΞΗ[i]
iΜΑΧ ← i
Τέλος_αν
Αν ΕΙΣΠΡΑΞΗ[i] < 30000 τότε
Εμφάνισε ΟΝΟΜΑ[i]
Π ← Π+1
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Πλήθος καταστημάτων με εισπράξεις μικρότερες των 30.000 ευρώ: ", Π

Εμφάνισε "Κατάστημα με τις υψηλότερες εισπράξεις: ", ΟΝΟΜΑ[ίΜΑΧ]

Τέλος Α_4

20
5. Να γραφεί αλγόριθμος που θα δημιουργεί έναν πίνακα 100 θέσεων στον οποίο τα περιττά στοιχεία του

θα έχουν την τιμή 1 και τα άρτια την τιμή 0.

Αλγόριθμος Α_5

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

Αν i mod 2 ≠ 0 τότε !Το στοιχείο του πίνακα είναι περιττό

Π[i] ← 1

Αλλιώς

Π[i] ← 0

Τέλος_αν

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

Τέλος Α_5

6. Ένας μονοδιάστατος πίνακας Π είναι το ουδέτερο στοιχείο της πρόσθεσης πινάκων αν όλα τα στοιχεία

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

είναι το ουδέτερο στοιχείο της πρόσθεσης.

Αλγόριθμος Α_6

Εμφάνισε "Δώσε το πλήθος των στοιχείων του πίνακα"

Διάβασε Ν

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

Εμφάνισε "Δώσε το στοιχείο" ,i

Διάβασε Π[i]

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

Χ ← Αληθής

i←1

Όσο i ≤ Ν και Χ = Αληθής επανάλαβε

Αν Π[i] ≠ 0 τότε

Χ ← Ψευδής

Αλλιώς

i←i+1

21
Τέλος_αν

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

Αν Χ = Αληθής τότε

Εμφάνισε "Ο πίνακας είναι το ουδέτερο στοιχείο της πρόσθεσης"

Αλλιώς

Εμφάνισε "Ο πίνακας δεν είναι το ουδέτερο στοιχείο της πρόσθεσης"

Τέλος_αν

Τέλος Α_6

7. Να γραφεί αλγόριθμος που θα διαβάζει δύο πίνακες 100 θέσεων και θα τους προσθέτει.

Αλγόριθμος Α_7

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

Εμφάνισε "Δώσε το" ,i, "στοιχείο του πίνακα Α"

Διάβασε Α[i]

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

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

Εμφάνισε "Δώσε το" ,i, "στοιχείο του πίνακα Β"

Διάβασε Β[i]

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

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

Γ[i] ← A[i] + B[i]

Εμφάνισε Γ[i]

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

Τέλος Α_7

8. Να γραφεί αλγόριθμος ο οποίος θα διαβάζει τους αριθμούς ενός μονοδιάστατου πίνακα Α 10 θέσεων και
θα εξετάζει αν είναι πρώτοι ή όχι. Στην περίπτωση που ο αριθμός της i θέσης του πίνακα Α είναι πρώτος θα
συμπληρώνεται η αντίστοιχη θέση ενός πίνακα Β (ίδιων διαστάσεων) με το στοιχείο 1, διαφορετικά θα
συμπληρώνεται με το 0. Πρώτος είναι ο αριθμός που διαιρείται μόνο με τον εαυτό του και την μονάδα.

Αλγόριθμος A_8
Δεδομένα //Α//
Για i από 1 μέχρι 10
Χ ← Α[i]
διαιρέτες ← 0
Για j από 1 μέχρι Χ

22
Αν Χ mod j = 0 τότε
διαιρέτες ← διαιρέτες + 1
Τέλος_αν
Τέλος_επανάληψης
Αν διαιρέτες ≤ 2 τότε
Β[i] ← 1
αλλιώς
Β[i] ← 0
Τέλος_αν
Τέλος_επανάληψης
Αποτελέσματα //Β//
Τέλος A_8

Δισδιάστατοι πίνακες

9. Δίνεται πίνακας Π δύο διαστάσεων, που τα στοιχεία του είναι ακέραιοι αριθμοί με Ν γραμμές και Μ
στήλες. Να αναπτύξετε αλγόριθμο που να υπολογίζει το μέγιστο και το ελάχιστο στοιχείο του πίνακα και
να εμφανίζει τη θέση τους.

Αλγόριθμος Α_9
Για i από 1 μέχρι Μ
Για j από 1 μέχρι Ν
Διάβασε Π[ί, j]
Τέλος_επανάληψης
Τέλος_επανάληψης
!Υπολογισμός ελάχιστου
min ← Π[1, 1]
mini ← 1
minj ← 1
Για i από 1 μέχρι Μ
Για j από 1 μέχρι Ν
Αν Π[i,j]<min τότε
min ← Π[i,j]
mini ← i
minj ← j
Τέλος_αν

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

Τέλος_επανάληψης
!Υπολογισμός μέγιστου
max ← Π[1, 1]
maxi ← 1
maxj ← 1
Για i από 1 μέχρι Μ
Για j από 1 μέχρι Ν
Αν Π[i,j]]>max τότε
max ← Π[i,j]

23
maxi ← i
maxj ← j
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
!Εμφάνιση αποτελεσμάτων
Εμφάνισε "Ελάχιστο", min, "στη θέση", mini, minj
Εμφάνισε "Μέγιστο", max, "στη θέση", maxi, maxj
Τέλος Α_9

10. Να γίνει αλγόριθμος που να διαβάζει 100 ακέραιους αριθμούς και να τους καταχωρεί σε ένα

δισδιάστατο πίνακα Α με 10 γραμμές και 10 στήλες. Ακολούθως να υπολογίζει το διπλάσιο όλων των

στοιχείων του Α και να το εμφανίζει δίνοντας και τις συντεταγμένες του κάθε σημείου.

Αλγόριθμος Α_10
Για i από 1 μέχρι 10
Για j από 1 μέχρι 10
Διάβασε Α[i,j]
Τέλος_επανάληψης
Τέλος_επανάληψης
Για i από 1 μέχρι 10
Για j από 1 μέχρι 10
Εμφάνισε i,j

Εμφάνισε 2*Α[i,j]

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

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

Τέλος Α_10

11. Να γραφεί αλγόριθμος που θα εισάγει αριθμούς σε έναν πίνακα 100x200 και θα υπολογίζει:

α) το άθροισμα των στοιχείων του

β) το γινόμενο των στοιχείων του

γ) το πλήθος των θετικών αριθμών του πίνακα

Αλγόριθμος Α_11

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

24
Για j από 1 μέχρι 200

Εμφάνισε "Δώσε το στοιχείο" ,i,j

Διάβασε Π[i,j]

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

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

!Υπολογισμός αθροίσματος

άθροισμα ← 0

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

Για j από 1 μέχρι 200

άθροισμα ← άθροισμα + Π[i,j]

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

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

Εμφάνισε "Το άθροισμα των στοιχείων του πίνακα είναι" ,άθροισμα

!Υπολογισμός γινομένου

γινόμενο ← 1

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

Για j από 1 μέχρι 200

γινόμενο ← γινόμενο* Π[i,j]

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

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

Εμφάνισε "Το γινόμενο των στοιχείων του πίνακα είναι" ,γινόμενο

!Υπολογισμός πλήθους

πλήθος ← 0

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

Για j από 1 μέχρι 200

Αν Π[i,j]>0 τότε

πλήθος ← πλήθος + 1

Τέλος_αν

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

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

Εμφάνισε "Το πλήθος των θετικών στοιχείων του πίνακα είναι" ,πλήθος

Τέλος Α_11

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

Αλγόριθμος Α_12
Για i από 1 μέχρι 10
Για j από 1 μέχρι 10
Εμφάνισε "Δώσε το στοιχείο" ,i,j
Διάβασε Π[i,j]
Τέλος_επανάληψης
Τέλος_επανάληψης
min ← Π[1,1]
γραμμή_min ← 1
στήλη_min ← 1 .
Για i από 1 μέχρι 10
Για j από 1 μέχρι 10
Αν Π[i,j]<min τότε
min ← Π[i,j]
γραμμή_min ← i
στήλη_min ← j
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Εμφάνισε "Το ελάχιστο στοιχείο είναι" ,min
Εμφάνισε "Η θέση του ελάχιστου στοιχείου είναι" ,γραμμή_min,στήλη_min
Τέλος A_12

13. Να γραφεί αλγόριθμος ο οποίος θα δημιουργεί τους ακόλουθους τετραγωνικούς (ίδιο αριθμό γραμμών
και στηλών) πίνακες:

α)

1 50 50
50 1 50
50 50 1

β)
66 66 1
66 1 66
1 66 66

γ)
20 0 0
20 20 0

26
20 20 20

δ)
9 9 9
1 9 9
1 1 9

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

Αλγόριθμος Κύρια_Διαγώνιος
Για i από 1 μέχρι 3
Για j από 1 μέχρι 3
Αν i=j τότε
Π[i,j] ← 1
Αλλιώς
Π[i,j] ← 50
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Τέλος Κύρια_Διαγώνιος

β) Στο δεύτερο πίνακα τα στοιχεία της δευτερεύουσας διαγωνίου είναι ίσα με 1. Για τα στοιχεία της
δευτερεύουσας διαγωνίου ενός τετραγωνικού πίνακα ΝxΝ ισχύει i=N - j + 1.

Αλγόριθμος Δευτερεύουσα_Διαγώνιος
Για i από 1 μέχρι 3
Για j από 1 μέχρι 3
Αν i=3 – j + 1 τότε
Π[i,j] ← 1
Αλλιώς
Π[i,j] ← 66
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Τέλος Δευτερεύουσα_Διαγώνιος

γ)
Αλγόριθμος Πάνω_Από_Κύρια_Διαγώνιο
Για i από 1 μέχρι 3
Για j από 1 μέχρι 3
Αν i<j τότε
Π[i,j] ← 0
Αλλιώς
Π[i,j] ← 20
Τέλος_αν
Τέλος_επανάληψης

27
Τέλος_επανάληψης
Τέλος Πάνω_Από_Κύρια_Διαγώνιο

δ)
Αλγόριθμος Κάτω_Από_Κύρια_Διαγώνιο
Για i από 1 μέχρι 3
Για j από 1 μέχρι 3
Αν i >j τότε
Π[i,j] ← 1
Αλλιώς
Π[i,j] ← 9
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Τέλος Κάτω_Από_Κύρια_Διαγώνιο

Παρατήρηση: Στις ασκήσεις όπου μας ζητείται να δημιουργήσουμε έναν πίνακα, θα πρέπει πάντα να
προσπαθούμε να ανακαλύψουμε τη σχέση της γραμμής και της στήλης στοιχείων που παρουσιάζουν
κάποια ιδιαιτερότητα. 0ι συνηθέστερες περιπτώσεις σχέσεων μεταξύ γραμμής και στήλης είναι:
1. i=j, στοιχεία της κυρίας διαγωνίου
2. i=Ν - j + 1, στοιχεία της δευτερεύουσας διαγωνίου
3. i < j, στοιχεία πάνω από την κύρια διαγώνιο
4. i > j, στοιχεία κάτω από την κύρια διαγώνιο
5. ( i + j ) mod 2 = 0 ή ≠ 0 άρτιο ή περιττό άθροισμα δεικτών γραμμής και στήλης

14. Ένας τετραγωνικός πίνακας ΝxΝ λέγεται τριγωνικός άνω, αν τα στοιχεία πάνω από την κύρια διαγώνιο
είναι μηδέν. Να γραφεί αλγόριθμος που θα ελέγχει αν ένας πίνακας 100x100 είναι τριγωνικός άνω.

Αλγόριθμος A_14
Για i από 1 μέχρι 100
Για j από 1 μέχρι 100
Εμφάνισε "Δώσε το στοιχείο" ,i,j
Διάβασε Π[i,j]
Τέλος_επανάληψης
Τέλος_επανάληψης
Χ ← Αληθής
Για i από 1 μέχρι 100
Για j από 1 μέχρι 100
Αν i<j και Π[i,j]≠0 τότε
Χ ← Ψευδής
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αν Χ=Αληθής τότε
Εμφάνισε "Ο πίνακας είναι τριγωνικός άνω"
Αλλιώς
Εμφάνισε "Ο πίνακας δεν είναι τριγωνικός άνω"

28
Τέλος_αν
Τέλος A_14

15. Να γραφτεί αλγόριθμος που να διαβάζει τον αριθμό των πόντων που έχουν επιτύχει πέντε

μπασκετμπολίστες σε πέντε παιχνίδια, να τους καταχωρεί σε δισδιάστατο πίνακα και να βρίσκει ποιος έχει

πετύχει συνολικά τους περισσότερους πόντους.

Αλγόριθμος Α_15
! Στις γραμμές του πίνακα Π[5, 5] είναι τα παιχνίδια και στις στήλες οι παίκτες.
! Διάβασμα πίνακα
Για i από 1 μέχρι 5
Για j από 1 μέχρι 5
Διάβασε Π[ί, ]]
Τέλος_επανάληψης

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

!Υπολογισμός συνολικού αριθμού πόντων κάθε παίκτη, δηλ. υπολογισμός των !αθροισμάτων κατά

στήλη

Για j από 1 μέχρι 5

Σ[j] ← 0

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

Σ[j] ← Σ[j]+Π[i,j]

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

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

!Εύρεση του πιο εύστοχου, δηλ. του μέγιστου του πίνακα Σ[j]

max ← Σ[1]

K←1

Για j από 2 μέχρι 5

Αν Σ[i]>max τότε

max ← Σ[j]

Κ←j

Τέλος_αν

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

!Εμφάνιση αποτελεσμάτων

Εμφάνισε "ο πιο εύστοχος είναι ο", Κ, "με", max, "πόντους"


Τέλος Α_15

29
16. Μία εταιρεία έχει υποκαταστήματα σε πέντε πόλεις της Ελλάδος. Σχεδιάστε αλγόριθμο, ο οποίος:
1. θα διαβάζει τα ονόματα των πέντε πόλεων σε μονοδιάστατο πίνακα
2. θα διαβάζει τις μηνιαίες πωλήσεις κάθε υποκαταστήματος για διάστημα ενός έτους σε δισδιάστατο
πίνακα
3. θα υπολογίζει και θα εμφανίζει το όνομα της πόλης με το υποκατάστημα που πραγματοποίησε τη
μεγαλύτερη μηνιαία πώληση

Αλγόριθμος Α_16
Για i από 1 μέχρι 5
Γράψε "Δώσε όνομα πόλης"
Διάβασε Όνομα[i]
Τέλος_επανάληψης
Για i από 1 μέχρι 5
Για j από 1 μέχρι 12
Γράψε "Δώσε την πώληση"
Διάβασε Πώληση[i,j]
Τέλος_επανάληψης
Τέλος_επονάληψης
max ← Πώληση[1,1]
max_πόλη ← 1
Για i από 1 μέχρι 5
Για j από 1 μέχρι 12
Αν max < Πώληση[i,j] τότε
max ← Πώληση[i,j]
max_πόλη ← i
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Γράψε "Η μέγιστη πώληση πραγματοποιήθηκε στην πόλη" ,Όνομα[max_πόλη]
Τέλος Α_16

17. Σε μια τάξη υπάρχουν 90 μαθητές που έχουν βαθμολογηθεί σε 14 μαθήματα. Να γραφεί πρόγραμμα ή
αλγόριθμος που :
1. θα αποθηκεύει τα ονόματα των μαθητών σε μονοδιάστατο πίνακα Ο
2. θα αποθηκεύει τις ονομασίες των 14 μαθημάτων σε μονοδιάστατο πίνακα Μ
3. θα αποθηκεύει τις βαθμολογίες των μαθητών σε δισδιάστατο πίνακα Β
4. θα υπολογίζει το μέσο όρο βαθμολογίας για κάθε μαθητή
5. θα υπολογίζει το μέσο όρο της τάξης ανά μάθημα
6. θα εμφανίζει το μαθητή με την καλύτερη βαθμολογία
7. θα εμφανίζει το μάθημα με τον καλύτερο μέσο όρο τάξης

Αλγόριθμος A_17
Για i από 1 μέχρι 90
Διάβασε Ο[i]
Για j από 1 μέχρι 14
Διάβασε Β[i,j]
Τέλος_επανάληψης
Τέλος_επανάληψης
Για i από 1 μέχρι 14
Διάβασε Μ[i]
Τέλος_επανάληψης
Για i από 1 μέχρι 90
sum_student ← 0
Για j από 1 μέχρι 14

30
sum_student ← sum_student + Β[i,j]
Τέλος_επανάληψης
μο_student[i] ← sum_student / 14
Τέλος_επανάληψης
Για j από 1 μέχρι 14
sum_lesson ← 0
Για i από 1 μέχρι 90
sum_lesson ← sum_lesson + Β[i,j]
Τέλος_επανάληψης
μο_lesson[i] ← sum_lesson / 90
Τέλος_επανάληψης
max_grade ← μο_student[1]
best_student ← 1
Για i από 2 μέχρι 90
Αν μο_student[i] > max_grade τότε
max_grade ← μο_student[i]
best_student ← i
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Ο μαθητής με το μεγαλύτερο βαθμό είναι" ,Ο[best_student]
max_lesson ← μο_lesson[1]
bestlesson ← 1
Για i από 2 μέχρι 14
Αν μο_lesson[i] > max_lesson τότε
max_lesson ← μο_lesson[i]
bestlesson ← i
Τέλος_αν
Τέλος_επονάληψης
Εμφάνισε "Το μάθημα με το μεγαλύτερο μέσο όρο είναι" ,Μ[best_lesson]
Τέλος A_17

Αναζήτηση

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

1.Εμφάνιση όλων των θέσεων που βρίσκεται το στοιχείο που αναζητούμε

Αλγόριθμος Σειριακή_Αναζήτηση_Εμφάνιση_Όλων
Δεδομένα // n, table, key //
done ← Ψευδής
Για i από 1 μέχρι n
Αν table[i] = key τότε
Εμφάνισε "Η τιμή βρέθηκε στη θέση" ,i
done ← Αληθής
Τέλος_αν

31
Τέλος_επανάληψης
Αν done = Ψευδής τότε
Εμφάνισε "Η τιμή δεν βρέθηκε στον πίνακα"
Τέλος_αν
Τέλος Σειριακή_Αναζήτηση_Εμφάνιση_Όλων

2. Εμφάνιση της πρώτης θέσης που βρίσκεται το στοιχείο που αναζητούμε (η περίπτωση του σχολικού
βιβλίου)

Αλγόριθμος Σειριακή_Αναζήτηση_Πρώτη_Εμφάνιση
Δεδομένα // n, table, key //
done ← Ψευδής
i←1
Όσο i ≤ n και done = Ψευδής επανάλαβε
Αν table[i] = key τότε
Εμφάνισε "Η τιμή βρέθηκε στη θέση" ,i
done ← Αληθής
Τέλος_αν
i←i+1
Τέλος_επανάληψης
Αν done = Ψευδής τότε
Εμφάνισε "Η τιμή δεν βρέθηκε στον πίνακα"
Τέλος_αν
Τέλος Σειριακή_Αναζήτηση_Πρώτη_Εμφάνιση

3. Εμφάνιση της τελευταίας θέσης που βρίσκεται το στοιχείο που αναζητούμε

Αλγόριθμος Σειριακή_Αναζήτηση_Τελευταία_Εμφάνιση
Δεδομένα // n, table, key //
done ← Ψευδής
position ← 0
Για i από 1 μέχρι n
Αν table[i] = key τότε
position ← i
done ← Αληθής
Τέλος_αν

32
Τέλος_επανάληψης
Αν done = Ψευδής τότε
Εμφάνισε "Η τιμή δεν βρέθηκε στον πίνακα"
Αλλιώς
Εμφάνισε "Η τιμή βρέθηκε στη θέση" ,position
Τέλος_αν
Τέλος Σειριακή_Αναζήτηση_Τελευταία_Εμφάνιση

18 Σε ένα σχολείο η β λυκείου, στην οποία φοιτούν 100 άτομα, αποφάσισε να πάει εκδρομή. Ο πρόεδρος
της β λυκείου συγκέντρωσε έναν κατάλογο με τα ονόματα των μαθητών και τα χρήματα που έδωσαν. Αν
κάποιος μαθητής δεν έδωσε χρήματα, τότε θεωρούμε ότι έδωσε 0 ευρώ. Να γραφεί αλγόριθμος που θα:
α) εμφανίζει πόσοι και ποιοι μαθητές δεν πλήρωσαν
β) αν ο μαθητής "Κωνσταντίνου" έδωσε χρήματα

Αλγόριθμος Α_18
Για i από 1 μέχρι 100
Εμφάνισε "Δώσε το όνομα του μαθητή" ,i
Διάβασε Όνομα[i]
Εμφάνισε "Δώσε τα χρήματα που έδωσε"
Διάβασε Χρήματα[i]
Τέλος_επανάληψης
!Επειδή μας ενδιαφέρει μόνο ποιοι μαθητές δεν πλήρωσαν δεν χρειάζεται να !χρησιμοποιήσουμε τη
βοηθητική μεταβλητή done
sum ← 0
Για i από 1 μέχρι 100
Αν Χρήματα[i] = 0 τότε
Εμφάνισε "Δεν έχει δώσει χρήματα ο μαθητής" , Όνομα[i]
sum ← sum + 1
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Συνολικά δεν έδωσαν χρήματα" ,sum, "μαθητές"
done ← Ψευδής
i←1
Όσο i ≤ 100 και done = Ψευδής επανάλαβε
Αν Όνομα[i] = "Κωνσταντίνου" τότε
Αν Χρήματα[i] = 0 τότε

33
Εμφάνισε "Ο Κωνσταντίνου δεν πλήρωσε"
Αλλιώς
Εμφάνισε "Ο Κωνσταντίνου πλήρωσε" ,Χρήματα[i]
Τέλος_αν
done ← Αληθής
Τέλος_αν
i←i+1
Τέλος_επανάληψης
Τέλος Α_18

19 Μία αλυσίδα σούπερ μάρκετ έχει εγκαταστάσεις σε 35 πόλεις σε όλη την Ελλάδα.
Οι μηνιαίοι τζίροι (συνολικές πωλήσεις) για κάθε κατάστημα για διάστημα ενός
χρόνου (12 μήνες) καταγράφεται σε έναν πίνακα Α. Τα ονόματα των πόλεων στις
οποίες έχει καταστήματα η αλυσίδα βρίσκονται σε έναν πίνακα Β. Σε ένα πίνακα Γ
βρίσκονται τα ονόματα των διευθυντών του κάθε καταστήματος. Να γραφεί
αλγόριθμος ο οποίος:
1. Γεμίζει τους πίνακες Α, Β και Γ με τιμές που δίνει ο χρήστης από το πληκτρολόγιο.
2. Να υπολογίζει σε ποια πόλη και σε ποιο μήνα σημειώθηκαν οι μεγαλύτερες
πωλήσεις του έτους για την εταιρεία.
3. Αν πρέπει να πάρει bonus παραγωγικότητας 2% επί του συνολικού ετήσιου τζίρου
του, ο διευθυντής του καταστήματος με τις μεγαλύτερες πωλήσεις, ποιος θα είναι
αυτός ο διευθυντής (το όνομα του) και τι ποσό πρόκειται να εισπράξει σαν bonus;
Να σημειωθεί ότι ΔΕΝ υπάρχουν ισοβαθμίες στους τζίρους των καταστημάτων.
4. Να διαβάζεται από το πληκτρολόγιο το όνομα ενός διευθυντή και να εμφανίζει αν ο διευθυντής αυτός
υπάρχει στο δυναμικό της επιχείρησης ή όχι. Αν ναι, τότε σε
ποιο υποκατάστημα (πόλη) είναι διευθυντής;

Αλγόριθμος Α_19
Για i από 1 μέχρι 35
Εμφάνισε "Δώσε το όνομα της" ,i, "πόλης"
Διάβασε Β[i]
Εμφάνισε "Δώσε το όνομα του διευθυντή του καταστήματος της" ,i, "πόλης"
Διάβασε Γ[i]
Για j από 1 μέχρι 12
Εμφάνισε "Δώσε τις πωλήσεις της" ,i, "πόλης τον" ,j, "μήνα"
Διάβασε Α[i,j]
Τέλος_επανάληψης
Τέλος_επανάληψης
Μax_Πωλήσεις ← Α[1,1]
Μήνας ← 1
Πόλη ← Β[1]
Για i από 1 μέχρι 35
Για j από 1 μέχρι 12
Αν Max_Πωλήσεις < Α[i,j] τότε
Μax_Πωλήσεις ← Α[i,j]
Μήνας ← j
Πόλη ← 1
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Εμφάνισε "Τις μεγαλύτερες πωλήσεις του έτους έκανε η" ,Β[Πόλη], "τον" ,j, "μήνα."
Σύνολο_Πωλήσεων ← Ο
Για i από 1 μέχρι 12
Σύνολο_Πωλήσεων ← Σύνολο_Πωλήσεων + Α[Πόλη,i]

34
Τέλος_επανάληψης
Εμφάνισε "Ο διευθυντής είναι ο" ,Γ[Πόλη], "και πήρε bonus" ,Σύνολο_Πωλήσεων * 0,02
Εμφάνισε "Δώσε το όνομα του διευθυντή που αναζητάς"
Διάβασε Όνομα
Βρέθηκε ← ψευδής
θέση ← Ο
Όσο (Βρέθηκε = ψευδής) και (i <= 35) επανάλαβε
Αν Γ[i] = Όνομα τότε
Βρέθηκε ← αληθής
θέση ← i
Αλλιώς
i←i+1
Τέλος_αν
Τέλος_επανάληψης
Αν Βρέθηκε = ψευδής τότε
Εμφάνισε "Δεν υπάρχει ο διευθυντής αυτός στο δυναμικό της εταιρείας"
Αλλιώς
Εμφάνισε Β[θέση]
Τέλος_αν
Τέλος Α_19

Ταξινόμηση

20. Να γραφεί αλγόριθμος που θα διαβάζει έναν πίνακα 100 θέσεων και θα εμφανίζει τους 5 μεγαλύτερους
αριθμούς του πίνακα.

Αλγόριθμος Α_20
Για i από 1 μέχρι 100
Εμφάνισε "Δώσε το στοιχείο" ,i
Διάβασε Π[i]
Τέλος_επανάληψης
Για i από 2 μέχρι 100
Για j από 100 μέχρι i με_βήμα -1
Αν Π[j-1] > Π[j] τότε
temp ← Π[J-1]
Π[j-1] ← Π[j]
Π[j] ← temp
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Εμφάνισε "Τα 5 μεγαλύτερα στοιχεία του πίνακα είναι"
Για i από 100 μέχρι 96 με_βήμα -1
Εμφάνισε Π[i]
Τέλος_επανάληψης

35
Τέλος Α_20

Σημείωση: Αν στο τμήμα ταξινόμησης του πίνακα αλλάξουμε τη σύγκριση σε Π[j-1] < Π[j], τότε ο
πίνακας Π ταξινομείται σε φθίνουσα σειρά. Οπότε η τελευταία επανάληψη εμφάνισης των 5 μεγαλύτερων
αριθμών θα εκτελούνταν από 1 ως 5.

21. Κατά τη διάρκεια πρωταθλήματος μπάσκετ μια ομάδα που αποτελείται από δώδεκα (12) παίκτες έδωσε
είκοσι (20) αγώνες, στους οποίους συμμετείχαν όλοι οι παίκτες. Να αναπτύξετε αλγόριθμο ο οποίος:
α) Να διαβάζει τα ονόματα των παικτών και να τα αποθηκεύει σε μονοδιάστατο πίνακα.
β) Να διαβάζει τους πόντους που σημείωσε κάθε παίκτης σε κάθε αγώνα και να τους αποθηκεύει σε πίνακα
δύο διαστάσεων.
γ) Να υπολογίζει για κάθε παίκτη το συνολικό αριθμό πόντων του σε όλους τους αγώνες και το μέσο όρο
πόντων ανά αγώνα.
δ) Να εκτυπώνει τα ονόματα των παικτών της ομάδας και το μέσο όρο πόντων του κάθε παίκτη
ταξινομημένα με βάση το μέσο όρο τους κατά φθίνουσα σειρά.

Αλγόριθμος Α_21
!Ανάγνωση μονοδιάστατου πίνακα
Για i από 1 μέχρι 12
Διάβασε Ο[i]

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

!Ανάγνωση δισδιάστατου πίνακα

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

Για j από 1 μέχρι 20


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

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

!Υπολογισμός συνολικού αριθμού πόντων

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

Σ[i] ← 0

Για j από 1 μέχρι 20

Σ[i] ← Σ[i]+Π[i,j]
Τέλος_επανάληψης
Τέλος_επανάληψης
!Υπολογισμός μέσου όρου
Για i από 1 μέχρι 12
Μ[i] ← Σ[i]/20
Τέλος_επανάληψης
!Ταξινόμηση

36
Για i από 2 μέχρι 12
Για j από 12 μέχρι i με_βήμα -1
Αν Μ[j-1]<Μ[j]τότε
temp ← Μ[j]
Μ[j] ← Μ[j-1]
Μ[j-1] ← Μ[j]
temp1 ← Ο[j]
Ο[j] ← Ο[j-1]
Ο[j-1] ← temp1
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
!Εκτύπωση αποτελεσμάτων
Για i από 1 μέχρι 12
Εμφάνισε Ο[i], Μ[i]
Τέλος_επανάληψης
Τέλος Α_21

22. Σε έναν αγώνα ακοντίου συμμετέχουν 15 αθλητές. Κάθε αθλητής κάνει 5 προσπάθειες. Να γραφεί
αλγόριθμος ο οποίος θα διαβάζει το επώνυμο και τις 5 μετρήσεις κάθε αθλητή και θα εμφανίζει για κάθε
αθλητή τη καλύτερη προσπάθειά του. Επίσης θα εμφανίζει τον πρώτο, τον δεύτερο και τον τρίτο αθλητή.

Αλγόριθμος Α_22
Για i από 1 μέχρι 15
Διάβασε Επώνυμο[i]
Τέλος_επανάληψης
Για i από 1 μέχρι 15
Για j από 1 μέχρι 5
Διάβασε Μέτρηση[i,j]
Τέλος_επανάληψης
Τέλος_επανάληψης
Για i από 1 μέχρι 15
max[i] ← Μέτρηση[i,1] !Το πρώτο στοιχείο κάθε γραμμής
Τέλος_επανάληψης
Για i από 1 μέχρι 15
Για j από 1 μέχρι 5
Αν Μέτρηση[i, j] > max[i] τότε
max[i] ← Μέτρηση[i,j]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης

37
Για i από 1 μέχρι 15
Εμφάνισε "Ή καλύτερη προσπάθεια του" ,Επώνυμο[i], "είναι" ,max[i]
Τέλος_επανάληψης
Για i από 2 μέχρι 15
Για j από 15 μέχρι i με_βήμα -1
Αν max[j-1] < max[j] τότε !Φθίνουσα σειρά
temp1 ← max[j-1]
max[j-1] ← max[j]
max[j] ← temp1
temp2 ← Επώνυμο[j-1]
Επώνυμο[j-1] ← Επώνυμο[j]
Επώνυμο[j] ← temp1
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Για i από 1 μέχρι 3
Εμφάνισε Επώνυμο[i]
Εμφάνισε "θέση" ,i
Τέλος_επανάληψης
Τέλος Α_22

Συγχώνευση

Η συγχώνευση είναι μια ακόμη βασική λειτουργία των δομών δεδομένων. Η συγχώνευση δυο
ταξινομημένων πινάκων έχει ως σκοπό τη δημιουργία ενός τρίτου πίνακα που θα περιέχει τα στοιχεία και
των δύο αρχικών πινάκων, ταξινομημένα κατά την ίδια φορά.
Στη συνέχεια παρουσιάζεται ένα πρόγραμμα που πραγματοποιεί τη συγχώνευση δύο πινάκων Α[m] και
Β[n] σε έναν πίνακα Γ[m+n]. Χρησιμοποιούνται τρεις δείκτες για τη χρήση των στοιχείων των πινάκων,
πιο συγκεκριμένα ο δείκτης i για τον πίνακα Α, ο δείκτης j για τον πίνακα Β και ο δείκτης k για τον Γ.

A
1 4 6 8 11 12 17

Β
2 3 5 20 24

Γ
1 2 3 4 5 6 8 11 12 17 20 24

Η μέθοδος προχωρά ως εξής: Το μικρότερο στοιχείο από τους πίνακες Α και Β τοποθετείται στον πίνακα Γ
με ταυτόχρονη αύξηση του αντίστοιχου δείκτη. Η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου
τελειώσουν τα στοιχεία του ενός πίνακα. Ύστερα τα υπόλοιπα στοιχεία του άλλου πίνακα μεταφέρονται
στον πίνακα Γ.

ΠΡΟΓΡΑΜΜΑ Συγχώνευση_Πινάκων
ΣΤΑΘΕΡΕΣ
n=7

38
m=5
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[n], B[m], Γ[n+m], ί, j, k, t
ΑΡΧΗ
!Εισαγωγή στοιχείων στους πίνακες Α και Β
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ n
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ m
ΔΙΑΒΑΣΕ B[j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Συγχώνευση Πινάκων
i ←1
ΟΣΟ i ≤ n ΚΑΙ j ≤ m ΕΠΑΝΕΛΑΒΕ
ΑΝ Α[i] < Β[j] ΤΟΤΕ
Γ[k] ← Α[i]
i ← i+1
ΑΛΛΙΩΣ
Γ[k] ← B[j]
j ← j+1
ΤΕΛΟΣ_ΑΝ
k ← k+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ i > n ΤΟΤΕ
ΓΙΑ t ΑΠΟ k ΜΕΧΡΙ n+m
Γ[t] ← B[j]
j ← j+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
ΓΙΑ t ΑΠΟ k ΜΕΧΡΙ n+m
Γ[t] ← Α[i]
i ← i+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Συγχώνευση_Πινάκων

ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ

1. Μια τάξη αποτελείται από 30 μαθητές. Ο κάθε μαθητής έχει αριθμό μητρώου από 1 έως 30. Να γίνει

πρόγραμμα που να διαβάζει τους βαθμούς των μαθητών καταχωρώντας τους σε μονοδιάστατο πίνακα και

να εμφανίζει το πλήθος και τους αριθμούς μητρώου των μαθητών που ο βαθμός τους είναι μεγαλύτερος

από το μέσο όρο της τάξης.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΒΑΘΜΟΣ[30], I, Σ, Π
!Ο ΠΙΝΑΚΑΣ ΒΑΘΜΟΣ[30] ΘΑ ΚΑΤΑΧΩΡΕΙ ΤΟΥΣ ΒΑΘΜΟΥΣ ΤΩΝ !ΜΑΘΗΤΩΝ
!Η ΜΕΤΑΒΛΗΤΗ Σ ΕΙΝΑΙ Ο ΑΘΡΟΙΣΤΗΣ
!Ή ΜΕΤΑΒΛΗΤΗ Π ΜΕΤΡΑΕΙ ΤΟ ΠΛΗΘΟΣ ΤΩΝ ΜΑΘΗΤΩΝ ΠΟΥ ΕΧΟΥΝ !ΒΑΘΜΟ ΠΑΝΩ
ΑΠΟ ΤΟ ΜΟ

39
!ΤΟ Ι ΕΙΝΑΙ Ο ΜΕΤΡΗΤΗΣ ΤΗΣ ΕΠΑΝΑΛΗΨΗΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ
!ΚΑΤΑΧΩΡΕΙ ΤΟ ΜΕΣΟ ΟΡΟ
ΑΡΧΗ
Σ←0
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 30
ΔΙΑΒΑΣΕ ΒΑΘΜΟΣ Σ[Ι]
Σ ← Σ + ΒΑΘΜΟΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ ← Σ/30
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 30
ΑΝ ΒΑΘΜΟΣ[Ι]>ΜΟ ΤΟΤΕ
Π <— Π+1
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΑΡΙΘΜΟ ΜΗΤΡΩΟΥ' ,I, 'ΕΧΕΙ ΒΑΘΜΟ ΜΕΓΑΛΥΤΕΡΟ ΑΠΟ
ΤΟ ΜΟ'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΤΟ ΣΥΝΟΔΙΚΟ ΠΛΗΘΟΣ ΤΩΝ ΜΑΘΗΤΩΝ ΜΕ ΒΑΘΜΟ ΜΕΓΑΛΥΤΕΡΟ ΑΠΟ ΤΟ ΜΟ
ΕΙΝΑΙ' ,Π
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

2. Μια εταιρεία ηλεκτρικών διαθέτει 15 πωλητές καθένας από τους οποίους έχει τον κωδικό του (από 1

μέχρι 15). Κάθε πωλητής κάνει κάθε μέρα πολλές πωλήσεις. Αμέσως μετά από κάθε πώληση ο πωλητής

παραδίδει στο λογιστήριο το τιμολόγιο. Να γραφεί πρόγραμμα το οποίο θα ζητά τον κωδικό του πωλητή

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

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

ημέρας. Το πρόγραμμα σταματά όταν δοθεί ο κωδικός 0. Να ληφθεί υπόψη ότι οι πωλητές φέρνουν τα

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

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

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΚΩΔΙΚΟΣ_ΠΩΛΗΤΗ, ΠΟΣΟ_ΠΩΛΗΣΗΣ, ΣΥΝ_ΠΩΛΗΣΕΙΣ[15], I
!ΚΑΤΑΧΩΡΟΥΜΕ ΤΙΣ ΣΥΝΟΛΙΚΕΣ ΠΩΛΗΣΕΙΣ ΤΟΥ ΚΑΘΕ ΠΩΛΗΤΗ ΣΕ !ΕΝΑ ΠΙΝΑΚΑ 15
ΘΕΣΕΩΝ
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 15
!ΑΡΧΙΚΑ ΜΗΔΕΝΙΖΟΥΜΕ ΤΟΝ ΠΙΝΑΚΑ ΤΩΝ ΣΥΝΟΛΙΚΩΝ ΠΩΛΗΣΕΩΝ
ΣΥΝ_ΠΩΛΗΣΕΙΣ[Ι] ← Ο
!ΜΠΟΡΟΥΜΕ ΝΑ ΦΑΝΤΑΣΤΟΥΜΕ ΤΟΝ ΠΙΝΑΚΑ ΣΑΝ ΝΑ ΕΧΟΥΜΕ 15
!ΑΘΡΟΙΣΤΕΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ΚΩΔΙΚΟΣ_ΠΩΛΗΤΗ
ΟΣΟ ΚΩΔΙΚΟΣ_ΠΩΛΗΤΗ<>0 ΕΠΑΝΑΛΑΒΕ
!ΑΝ Ο ΚΩΔΙΚΟΣ ΤΟΥ ΠΩΛΗΤΗ ΓΙΝΕΙ Ο ΒΓΑΙΝΟΥΜΕ ΑΠΟ ΤΟ ΒΡΟΓΧΟ

40
ΔΙΑΒΑΣΕ ΠΟΣΟ_ΠΩΛΗΣΗΣ
ΣΥΝ_ΠΩΛΗΣΕΙΣ[ΚΩΔΙΚΟΣ_ΠΩΛΗΤΗ] ← ΣΥΝ_ΠΩΛΗΣΕΙΣ[ΚΩΔΙΚΟΣ_ΠΩΛΗΤΗ]
+ΠΟΣΟ_ΠΩΛΗΣΗΣ
ΔΙΑΒΑΣΕ ΚΩΔΙΚΟΣ_ΠΩΛΗΤΗ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 15
ΓΡΑΨΕ ''ΟΙ ΣΥΝΟΛΙΚΕΣ ΠΩΛΗΣΕΙΣ ΤΟΥ ΠΩΛΗΤΗ ΜΕ ΚΩΔΙΚΟ' ,I, '
ΕΙΝΑΙ' ,ΣΥΝ_ΠΩΛΗΣΕΙΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ _ΠΡΟΓΡΑΜΜΑΤΟΣ

3. Στον κεντρικό υπολογιστή του τμήματος μηχανογράφησης ενός ασφαλιστικού ταμείου καταχωρούνται

οι ασφαλισμένοι με όλα τα απαραίτητα στοιχεία τους. Για το σκοπό αυτό χρησιμοποιούνται διαφορετικοί

πίνακες, μεταξύ των οποίων, ο μονοδιάστατος πίνακας Όνομα και ο μονοδιάστατος πίνακας Έτος, οι

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

κάποιος ασφαλισμένος συνταξιοδοτείται μόλις συμπληρώσει το 65ο έτος της ηλικίας του, να γράψετε

πρόγραμμα που:

α) Να διαβάζει τα ονόματα και τις χρονολογίες γέννησης 100.000 ασφαλισμένων.

β) Να διαβάζει το τρέχον έτος.

γ) Να εμφανίζει τα ονόματα και το πλήθος των ασφαλισμένων που συνταξιοδοτούνται φέτος.

δ) Να εμφανίζει τα ονόματα και το πλήθος των ασφαλισμένων που θα συνταξιοδοτηθούν σε λιγότερο από

10 χρόνια.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ3
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΕΤΟΣ[100000], ΤΡΕΧΟΝ_ΕΤΟΣ, ΗΛΙΚΙΑ, ΠΛΗΘΟΣ1, ΠΛΗΘΟΣ2, I
!ΤΟ ΠΛΗΘΟΣ1 ΜΕΤΡΑΕΙ ΤΟ ΠΛΗΘΟΣ ΤΩΝ ΑΤΟΜΩΝ ΠΟΥ ΒΓΑΙΝΟΥΝ !ΦΕΤΟΣ ΣΤΗ
ΣΥΝΤΑΞΗ
!ΤΟ ΠΛΗΘΟΣ2 ΑΥΤΟΥΣ ΠΟΥ ΒΓΑΙΝΟΥΝ ΣΕ ΛΙΓΟΤΕΡΟ ΑΠΟ ΔΕΚΑ ΧΡΟΝΙΑ
ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[100000]
ΑΡΧΗ
ΠΛΗΘΟΣ1 ← 0
ΠΛΗΘΟΣ2 ← 0
!ΔΙΝΟΥΜΕ ΤΙΣ ΤΙΜΕΣ ΣΤΟΥΣ ΔΥΟ ΠΙΝΑΚΕΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100000
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ ΚΑΙ ΤΟ ΕΤΟΣ ΤΟΥ' ,Ι, 'oυ ΑΣΦΑΛΙΣΜΕΝΟΥ'
ΔΙΑΒΑΣΕ ΟΝΟΜΑ[Ι], ΕΤΟΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ΤΡΕΧΟΝ_ΕΤΟΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100000
ΗΛΙΚΙΑ ← ΤΡΕΧΟΝ_ΕΤΟΣ - ΕΤΟΣ[Ι]
ΑΝ ΗΛΙΚΙΑ=65 ΤΟΤΕ

41
ΓΡΑΨΕ 'Ό ΑΣΦΑΛΙΣΜΕΝΟΣ ΜΕ ΟΝΟΜΑ' ,ΟΝΟΜΑ[Ι], 'ΒΓΑΙΝΕΙ ΦΕΤΟΣ ΣΤΗ
ΣΥΝΤΑΞΗ'
ΠΛΗΘΟΣ1 ← ΠΛΗΘΟΣ1+1
ΑΛΛΙΩΣ_ΑΝ (65-ΗΛΙΚΙΑ)<=10 ΤΟΤΕ
ΓΡΑΨΕ 'Ό ΑΣΦΑΛΙΣΜΕΝΟΣ ΜΕ ΟΝΟΜΑ' ,ΟΝΟΜΑ[Ι], 'ΒΓΑΙΝΕΙ ΣΕ ΛΙΓΟΤΕΡΟ ΑΠΟ
10 ΧΡΟΝΙΑ ΣΤΗ ΣΥΝΤΑΞΗ'
ΠΛΗΘΟΣ2 <-- ΠΛΗΘΟΣ2+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΦΕΤΟΣ ΣΥΝΤΑΞΙΟΔΟΤΟΥΝΤΑΙ ΣΥΝΟΛΙΚΑ' ,ΠΛΗΘΟΣ1, 'ΑΣΦΑΛΙΣΜΕΝΟΙ'
ΓΡΑΨΕ ' ΣΕ ΛΙΓΟΤΕΡΟ ΑΠΟ ΔΕΚΑ ΧΡΟΝΙΑ ΣΥΝΤΑΞΙΟΔΟΤΟΥΝΤΑΙ ', ΠΛΗΘΟΣ2,
'ΑΣΦΑΛΙΣΜΕΝΟΙ'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

4. Σε μια εταιρεία εργάζονται 200 εργαζόμενοι. Να γραφεί πρόγραμμα το οποίο:


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

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ4
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΜΙΣΘΟΣ[200], Ι, MAX, ΘΕΣΗ
!Ο ΠΙΝΑΚΑΣ ΜΙΣΘΟΣ[200] ΚΑΤΑΧΩΡΕΙ ΤΟΥ ΜΙΣΘΟΥΣ ΤΩΝ !ΥΠΑΛΛΗΛΩΝ
!Ή μεταβλητή ΘΕΣΗ είναι πολύ σημαντική γιατί κρατάει τη θέση που βρίσκεται ο !μεγαλύτερος
μισθός
ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ[200]
!ΕΔΩ ΚΑΤΑΧΩΡΟΥΝΤΑΙ ΤΑ ΟΝΟΜΑΤΑ
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 200
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ ΚΑΙ ΤΟ ΜΙΣΘΟ ΤΟΥ' ,Ι, 'oυ ΕΡΓΑΖΟΜΕΝΟΥ ΤΗΣ ΕΤΑΙΡΙΑΣ'
ΔΙΑΒΑΣΕ ΟΝΟΜΑ[Ι], ΜΙΣΘΟΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
MAX ← ΜΙΣΘΟΣ[1]
ΘΕΣΗ ← 1
!Θεωρούμε ότι το πρώτο στοιχείο του μονοδιάστατου πίνακα ΜΙΣΘΟΣ είναι το !μεγαλύτερο
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 200
ΑΝ ΜΙΣΘΟΣ[Ι]> MAX ΤΟΤΕ
MAX ← ΜΙΣΘΟΣ[Ι]
ΘΕΣΗ ← Ι
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Τελειώνοντας την επανάληψη η μεταβλητή θέση έχει τη θέση του εργαζομένου με !τον μεγαλύτερο
μισθό
ΓΡΑΨΕ 'Ό ΜΕΓΑΛΥΤΕΡΟΣ ΜΙΣΘΟΣ ΣΤΗ ΕΤΑΙΡΙΑ ΕΙΝΑΙ' ,MAX, 'ΚΑΙ ΤΟΝ ΔΕΧΕΤΑΙ Ο'
,ΟΝΟΜΑ[ΘΕΣΗ]
!Ή μεταβλητή ΘΕΣΗ έχει πάρει μία ακέραια τιμή και χρησιμοποιώντας τη μέσα !στον πίνακα
ΟΝΟΜΑ εντοπίζουμε το όνομα του εργαζομένου
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

42
5. Στην Α' κατηγορία του πρωταθλήματος ποδοσφαίρου υπάρχουν 14 ομάδες. Να γραφεί πρόγραμμα το
οποίο :
α) να διαβάζει τα ονόματα των ομάδων καταχωρώντας τα στο μονοδιάστατο πίνακα Ο
β) να διαβάζει τον αριθμό των τερμάτων που δέχτηκε κάθε ομάδα και τον αριθμό των τερμάτων που έβαλε
κάθε ομάδα στο τέλος του πρωταθλήματος καταχωρώντας τα σε δυο μονοδιάστατους πίνακες με τα
ονόματα Α και Β.
γ) να εμφανίζει το όνομα της ομάδας που δέχτηκε τα λιγότερα τέρματα και της ομάδας που έβαλε τα
περισσότερα τέρματα.
δ) εμφανίζει τα ονόματα των ομάδων που δέχθηκαν περισσότερα τέρματα απ' όσα έβαλαν.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ5
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[14] / Β[14],Ι, MAX, MIN, ΘΕΣΗ_ΜΑΧ, ΘΕΣΗ_ΜΙΝ
ΧΑΡΑΚΤΗΡΕΣ: Ο[14]
ΑΡΧΗ
!Αρχικά διαβάζουμε τα ονόματα των Ομάδων και τα αποδίδουμε στον Πίνακα Ο[14]
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 14
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ ΤΗΣ' ,Ι, 'ης ΟΜΑΔΑΣ'
ΔΙΑΒΑΣΕ Ο[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Διαβάζουμε τα τέρματα που έβαλε και δέχτηκε ή κάθε ομάδα
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 14
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟΝ ΑΡΙΘΜΟ ΤΕΡΜΑΤΩΝ ΠΟΥ ΈΒΑΛΕ Η' ,Ι, 'η ΟΜΑΔΑ'
ΔΙΑΒΑΣΕ Α[Ι]
!Ό Πίνακας Α[14] κρατάει τα τέρματα που έβαλε η κάθε ομάδα
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟΝ ΑΡΙΘΜΟ ΤΕΡΜΑΤΩΝ ΠΟΥ ΔΕΧΤΗΚΕ Η' ,Ι, 'η ΟΜΑΔΑ'
ΔΙΑΒΑΣΕ Β[Ι]
!Ό Πίνακας Β[14] κρατάει τα τέρματα που δέχτηκε η κάθε ομάδα
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
MAX ← Α[1] !θεωρούμε αρχικά ότι ή 1η Ομάδα έβαλε τα περισσότερα τέρματα
ΘΕΣΗ_MAX ← 1
MIN ← Β[1] !θεωρούμε αρχικά ότι η 1η Ομάδα δέχτηκε τα λιγότερα τέρματα
ΘΕΣΗ_MIN ← 1
!'Στη συνέχεια ελέγχουμε μία προς μία τις ομάδες για να βρούμε τα ζητούμενα
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 14
ΑΝ Α[Ι]>MAX ΤΟΤΕ
MAX ← Α[Ι]
ΘΕΣΗ_MAX ← Ι
!Η ΘΕΣΗ_MAX κρατάει τον αριθμό της ομάδας που έβαλε τα πιο πολλά τέρματα
ΤΕΛΟΣ_ΑΝ
ΑΝ Β[Ι]<MIN ΤΟΤΕ
MIN ← Β[Ι]
ΘΕΣΗ_MIN ← Ι
!Ή ΘΕΣΗ_MIN κρατάει τον αριθμό της ομάδας που δέχτηκε τα πιο λίγα τέρματα
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Η ΟΜΑΔΑ ΠΟΥ ΔΕΧΤΗΚΕ ΤΑ ΛΙΓΟΤΕΡΑ ΤΕΡΜΑΤΑ ΕΙΝΑΙ Η' ,Ο [ΘΕΣΗ_MIN]
ΓΡΑΨΕ 'Η ΟΜΑΔΑ ΠΟΥ ΈΒΑΛΕ ΤΑ ΠΕΡΙΣΣΟΤΕΡΑ ΤΕΡΜΑΤΑ ΕΙΝΑΙ Η ',Ο[ΘΕΣΗ_MAX]
!Τέλος ψάχνουμε να βρούμε ποια ομάδα δέχτηκε περισσότερα τέρματα από όσα !έβαλε
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 14
ΑΝ Β[Ι]>Α[Ι] ΤΟΤΕ
ΓΡΑΨΕ ' Η ΟΜΑΔΑ ',0[Ι],' ΔΕΧΤΗΚΕ ΠΕΡΙΣΣΟΤΕΡΑ ΤΕΡΜΑΤΑ ΑΠΟ ΟΤΙ ΈΒΑΛΕ '

43
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ

6. Ένα σχολείο αποτελείται από 6 τμήματα των 25 παιδιών το καθένα. Να γίνει πρόγραμμα που θα δέχεται
το βαθμό απολυτηρίου κάθε μαθητή κάθε τάξης, θα τον καταχωρεί σε μονοδιάστατο πίνακα και θα
εμφανίζει το μικρότερο και το μεγαλύτερο βαθμό που παρατηρήθηκε στο σχολείο καθώς και τα τμήματα
στα οποία βρίσκονται οι μαθητές με τους βαθμούς αυτούς.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ6
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΒΑΘΜΟΙ[150],Ι, MIN, MAX, ΘΕΣΗ_MIN, ΘΕΣΗ_MAX
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 25
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΒΑΘΜΟ ΤΟΥ' ,Ι, 'ου ΜΑΘΗΤΗ ΤΟΥ 1ου ΤΜΗΜΑΤΟΣ'
ΔΙΑΒΑΣΕ ΒΑΘΜΟ Ι[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 26 ΜΕΧΡΙ 50
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΒΑΘΜΟ ΤΟΥ' ,I-25, 'ου ΜΑΘΗΤΗ ΤΟΥ 2ου ΤΜΗΜΑΤΟΣ'
ΔΙΑΒΑΣΕ ΒΑΘΜΟ Ι[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 51 ΜΕΧΡΙ 75
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΒΑΘΜΟ ΤΟΥ' ,Ι-50, 'ου ΜΑΘΗΤΗ ΤΟΥ 3ου ΤΜΗΜΑΤΟΣ'
ΔΙΑΒΑΣΕ ΒΑΘΜΟΙ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 76 ΜΕΧΡΙ 100
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΒΑΘΜΟ ΤΟΥ' ,I-75, 'ου ΜΑΘΗΤΗ ΤΟΥ 4ου ΤΜΗΜΑΤΟΣ'
ΔΙΑΒΑΣΕ ΒΑΘΜΟ Ι[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 101 ΜΕΧΡΙ 125
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΒΑΘΜΟ ΤΟΥ' ,I-100, 'ου ΜΑΘΗΤΗ ΤΟΥ 5ου ΤΜΗΜΑΤΟΣ'
ΔΙΑΒΑΣΕ ΒΑΘΜΟ Ι[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 126 ΜΕΧΡΙ 150
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΒΑΘΜΟ ΤΟΥ' ,I-125, 'oυ ΜΑΘΗΤΗ ΤΟΥ 6ου ΤΜΗΜΑΤΟΣ'
ΔΙΑΒΑΣΕ ΒΑΘΜΟ Ι[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
MIN ← ΒΑΘΜΟΙ[1]
ΘΕΣΗ_MIN ← 1
MAX ← ΒΑΘΜΟΙ[1]
ΘΕΣΗ_MAX ← 1
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 150
ΑΝ ΒΑΘΜΟΙ[Ι]<MIN ΤΟΤΕ
MIN ← ΒΑΘΜΟΙ[Ι]
ΘΕΣΗ_MIN ← Ι
ΤΕΛΟΣ_ΑΝ
ΑΝ ΒΑΘΜΟΙ[Ι]>MAX ΤΟΤΕ
MAX ← ΒΑΘΜΟΙ[Ι]
ΘΕΣΗ_MAX ← Ι
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

44
!Χρησιμοποιούμε δυο δομές επιλογής ΕΠΙΛΕΞΕ για να βρούμε τα αντίστοιχα
!τμήματα
ΕΠΙΛΕΞΕ ΘΕΣΗ_MIN
ΠΕΡΙΠΤΩΣΗ 1..25
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΙΚΡΟΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 1ο ΤΜΗΜΑ'
ΠΕΡΙΠΤΩΣΗ 26..50
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΙΚΡΟΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 2ο ΤΜΗΜΑ'
ΠΕΡΙΠΤΩΣΗ 51..75
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΙΚΡΟΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 3ο ΤΜΗΜΑ'
ΠΕΡΙΠΤΩΣΗ 76..100
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΙΚΡΟΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 4ο ΤΜΗΜΑ'
ΠΕΡΙΠΤΩΣΗ 101..125
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΙΚΡΟΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 5ο ΤΜΗΜΑ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΙΚΡΟΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 6ο ΤΜΗΜΑ'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΕΠΙΛΕΞΕ ΘΕΣΗ_MAX
ΠΕΡΙΠΤΩΣΗ 1..25
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΕΓΑΛΥΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 1ο ΤΜΗΜΑ'
ΠΕΡΙΠΤΩΣΗ 26..50
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΕΓΑΛΥΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 2ο ΤΜΗΜΑ'
ΠΕΡΙΠΤΩΣΗ 51..75
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΕΓΑΛΥΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 3ο ΤΜΗΜΑ'
ΠΕΡΙΠΤΩΣΗ 76..100
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΕΓΑΛΥΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 4 ο ΤΜΗΜΑ'
ΠΕΡΙΠΤΩΣΗ 101..125
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΕΓΑΛΥΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 5ο ΤΜΗΜΑ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Ο ΜΑΘΗΤΗΣ ΜΕ ΤΗ ΜΕΓΑΛΥΤΕΡΗ ΒΑΘΜΟΛΟΓΙΑ ΕΙΝΑΙ ΣΤΟ 6ο ΤΜΗΜΑ'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

7. Ένας δήμος έχει τέσσερα λύκεια. Κάθε λύκειο έχει και τις τρεις κατευθύνσεις. Να αναπτυχθεί
πρόγραμμα το οποίο:
α) να διαβάζει το σύνολο των μαθητών της Γ' Λυκείου για κάθε λύκειο καταχωρώντας τον σε
μονοδιάστατο πίνακα και τον αριθμό των επιτυχόντων κάθε λυκείου σε κάθε κατεύθυνση καταχωρώντας
τον σε δισδιάστατο πίνακα.
β) να υπολογίζει και να εμφανίζει πόσοι μαθητές πέτυχαν συνολικά από κάθε λύκειο.
γ) να υπολογίζει το ποσοστό επιτυχίας κάθε λυκείου
δ) να βρίσκει ποιο λύκειο ήρθε πρώτο σε επιδόσεις και να εμφανίζει το σχετικό αποτέλεσμα.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ7
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΜΑΘΗΤΕΣ [4], Ε[4,3], I, J, Π_ΕΠ, ΘΕΣΗ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΟΣ_ΕΠ[4], MAX
ΑΡΧΗ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 4
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΣΥΝΟΛΙΚΟ ΑΡΙΘΜΟ ΤΩΝ ΜΑΘΗΤΩΝ ΤΗΣ Γ ΤΑΞΗΣ ΤΟΥ' ,Ι, 'ου
ΛΥΚΕΙΟΥ'

45
ΔΙΑΒΑΣΕ ΜΑΘΗΤΕΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 4
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟΝ ΑΡΙΘΜΟ ΤΩΝ ΕΠΙΤΥΧΟΝΤΩΝ ΤΟΥ' ,Ι, 'ου ΛΥΚΕΙΟΥ ΓΙΑ ΤΗΝ' ,J,
'η ΚΑΤΕΥΘΥΝΣΗ'
ΔΙΑΒΑΣΕ Ε[Ι,J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 4
Π_ΕΠ ← Ο
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
Π_ΕΠ ← Π_ΕΠ + Ε[Ι,J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΣΤΟ' ,Ι, 'ο ΛΥΚΕΙΟ ΠΕΤΥΧΑΝ ΣΥΝΟΛΙΚΑ' ,Π_ΕΠ, 'ΜΑΘΗΤΕΣ'
ΠΟΣ_ΕΠ[Ι] ← Π_ΕΠ/ΜΑΘΗΤΕΣ[Ι]*100
ΓΡΑΨΕ 'ΤΟ ΠΟΣΟΣΤΟ ΕΠΙΤΥΧΙΑΣ ΤΟΥ' ,Ι, 'ου ΛΥΚΕΙΟΥ ΕΙΝΑΙ ' ,ΠΟΣ_ΕΠ[Ι], '%'
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
MAX ← ΠΟΣ_ΕΠ[1]
ΘΕΣΗ ← 1
ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ 4
ΑΝ ΠΟΣ_ΕΠ[Ι]>MAX ΤΟΤΕ
MAX ← ΠΟΣ_ΕΠ[Ι]
ΘΕΣΗ ← Ι
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ' ΤΟ' ,ΘΕΣΗ, 'o ΛΥΚΕΙΟ ΗΡΘΕ ΠΡΩΤΟ ΜΕ ΠΟΣΟΣΤΟ' ,ΜΑΧ, '%'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

8. Ένα πολυκατάστημα διαθέτει 10 ταμεία. Ο ιδιοκτήτης του θέλει να κρατάει στατιστικά στοιχεία για
κάθε ταμείο και για τους 12 μήνες του χρόνου. Να γραφεί πρόγραμμα το οποίο:
α) Να εισάγει σε δισδιάστατο πίνακα τις συνολικές εισπράξεις κάθε ταμείου για κάθε μήνα.
β) Να υπολογίζει και να εμφανίζει ποιο από τα ταμεία έχει το μεγαλύτερο ετήσιο τζίρο και ποιο το
μικρότερο.
γ) Να υπολογίζει και να εμφανίζει ποιος μήνας είχε τις περισσότερες εισπράξεις για το πολυκατάστημα.
δ) Να υπολογίζει και να εμφανίζει τις συνολικές εισπράξεις του πολυκαταστήματος για όλο το χρόνο.
ε) Να υπολογίζει και να εμφανίζει τη μέση είσπραξη ανά μήνα και τη μέση είσπραξη ανά ταμείο.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ8
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΕΙΣΠΡΑΞΕΙΣ[10,12], Ι, ΟΓ, ΤΖΙΡΟΣ[10], MIN, MAX, ΘΕΣΗ1, ΘΕΣΗ2, ΘΕΣΗ3,
ΕΙΣ_ΜΗΝΑ, ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ_ΜΗΝΑ, ΜΟ_ΤΑΜΕΙΟ
!Στον πίνακα ΤΖΙΡΟΣ[10] καταχωρούνται οι συνολικές εισπράξεις κάθε ταμείου
!Οι μεταβλητές ΘΕΣΗ1,ΘΕΣΗ2 και ΘΕΣΗ3 χρησιμοποιούνται σαν δείκτες για να
!εντοπίσουμε το μεγαλύτερο ή το μικρότερο στοιχείο του αντίστοιχου πίνακα
!Στη μεταβλητή ΕΙΣ_ΜΗΝΑ καταχωρούμε τις εισπράξεις του μήνα
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 12

46
ΓΡΑΨΕ 'ΔΩΣΕ ΤΙΣ ΕΙΣΠΡΑΞΕΙΣ ΤΟΥ' ,Ι, 'oυ ΤΑΜΕΙΟΥ ΓΙΑ ΤΟΝ' ,J, 'ΜΗΝΑ'
ΔΙΑΒΑΣΕ ΕΙΣΠΡΑΞΕΙΣ[Ι,J]
!Εδώ καταχωρούμε τις εισπράξεις των ταμείων για κάθε μήνα
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ ← Ο
!Θέτουμε τη μεταβλητή ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ=0 για να μηδενίσουμε τον αθροιστή
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
!Εδώ ξεκινάμε να υπολογίσουμε τις συνολικές εισπράξεις κάθε ταμείου για κάθε !μήνα.
ΤΖΙΡΟΣ[Ι] ← 0
!Ό πίνακας ΤΖΙΡΟΣ[10] πρέπει αρχικά να μηδενιστεί
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 12
ΤΖΙΡΟΣ[Ι] ← ΤΖΙΡΟΣ[Ι]+ ΕΙΣΠΡΑΞΕΙΣ[Ι,J]
!Εδώ υπολογίζονται οι συν. εισπράξεις κάθε ταμείου
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ ← ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ + ΤΖΙΡΟΣ[Ι]
!Υπολογίζουμε τις συν. εισπράξεις του καταστήματος
ΜΟ_ΤΑΜΕΙΟ ← ΤΖΙΡΟΣ [Ι]/12
!Βρίσκουμε τη μέση τιμή κάθε ταμείου
ΓΡΑΨΕ Ή ΜΕΣΗ ΕΙΣΠΡΑΞΗ ΓΙΑ ΤΟ' ,Ι, 'ο ΤΑΜΕΙΟ ΕΙΝΑΙ:' ,ΜΟ_ΤΑΜΕΙΟ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΌΙ ΣΥΝΟΛΙΚΕΣ ΕΙΣΠΡΑΞΕΙΣ ΤΟΥ ΚΑΤΑΣΤΗΜΑΤΟΣ ΕΙΝΑΙ' ,ΣΥΝ_ΕΙΣΠΡΑΞΕΙΣ
!Ξεκινάμε να υπολογίσουμε το ταμείο με το μεγαλύτερο και το μικρότερο τζίρο
MIN ← ΤΖΙΡΟΣ[1]
ΘΕΣΗ1 ← 1
MAX ← ΤΖΙΡΟΣ[1]
ΘΕΣΗ2 ← 1
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 10
ΑΝ ΤΖΙΡΟΣ[Ι]<MIN ΤΟΤΕ
MIN ← ΤΖΙΡΟΣ[Ι]
ΘΕΣΗ1 ← Ι
ΤΕΛΟΣ_ΑΝ
ΑΝ ΤΖΙΡΟΣ[Ι]>MAX ΤΟΤΕ
MAX ← ΤΖΙΡΟΣ[Ι]
ΘΕΣΗ2 ← Ι
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΤΟ ΤΑΜΕΙΟ ΜΕ ΤΙΣ ΜΕΓΑΛΥΤΕΡΕΣ ΕΙΣΠΡΑΞΕΙΣ ΕΙΝΑΙ ΤΟ' ,ΘΕΣΗ2
ΓΡΑΨΕ 'ΤΟ ΤΑΜΕΙΟ ΜΕ ΤΙΣ ΜΙΚΡΟΤΕΡΕΣ ΕΙΣΠΡΑΞΕΙΣ ΕΙΝΑΙ ΤΟ' ,ΘΕΣΗ1
!Εδώ ξεκινάμε να υπολογίσουμε τον μήνα με τις περισσότερες εισπράξεις
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 12
ΕΙΣ_ΜΗΝΑ ← Ο
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΕΙΣ_ΜΗΝΑ ← ΕΙΣ_ΜΗΝΑ + ΕΙΣΠΡΑΞΕΙΣ[Ι,J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ_ΜΗΝΑ ← ΕΙΣ_ΜΗΝΑ/10
!Υπολογίζουμε και τη μέση είσπραξη ανά μήνα
ΓΡΑΨΕ 'Ή ΜΕΣΗ ΕΙΣΠΡΑΞΗ ΓΙΑ ΤΟ' ,J, 'ΜΗΝΑ ΕΙΝΑΙ:' ,ΜΟ_ΜΗΝΑ
MAX ← Ο

47
ΘΕΣΗ3 ← 0
ΑΝ ΕΙΣ_ΜΗΝΑ>MAX ΤΟΤΕ
MAX ← ΕΙΣ_ΜΗΝΑ
ΘΕΣΗ3 ← J
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Ο ΜΗΝΑΣ ΜΕ ΤΙΣ ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΙΣΠΡΑΞΕΙΣ ΕΙΝΑΙ Ο' ,ΘΕΣΗ3, 'oς'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

9. Να γραφεί πρόγραμμα σε «ΓΛΩΣΣΑ», το οποίο:


1. θα διαβάζει τα ονόματα 20 εταιριών υψηλής κεφαλαιοποίησης που είναι εισηγμένες στο Χρηματιστήριο
Αξιών Αθηνών καθώς και τα καθαρά τους κέρδη για κάθε έτος ξεχωριστά από το 1990 μέχρι και το 1999
(υποθέστε ότι καμία χρονιά δε σημείωσαν ζημία).
2. θα υπολογίζει για κάθε εταιρία την τετραετία εκείνη που είχε τα υψηλότερα κέρδη.
3. Για κάθε εταιρία θα εμφανίζει μήνυμα του τύπου «Η εταιρία όνομα εταιρίας σημείωσε τα υψηλότερα
κέρδη της, την τετραετία από το 199_ μέχρι το 199_».

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ9
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : i, j, k, sum, ΚΕΡΔΗ [20,10], ΤΕΤΡΑΕΤΙΑ [20], ΕΤΟΣ [20]
ΧΑΡΑΚΤΗΡΕΣ: ΟΝΟΜΑ [20]
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ 'ΔΏΣΕ ΤΟ ΟΝΟΜΑ ΤΗΣ' ,i, 'ης ΕΤΑΙΡΙΑΣ'
ΔΙΑΒΑΣΕ ΟΝΟΜΑ[i]
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΡΑΨΕ 'ΔΩΣΕ ΤΑ ΚΕΡΔΗ ΤΗΣ' ,i, 'ης ΕΤΑΙΡΙΑΣ ΤΟ & ΕΤΟΣ' ,1989 + j
ΔΙΑΒΑΣΕ ΚΕΡΔΗ [i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΤΕΤΡΑΕΤΙΑ[i] ← 0
ΤΕΛΟΣ..ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 7
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
sum ← 0
ΓΙΑ j ΑΠΟ k ΜΕΧΡΙ k + 3
sum ← sum + ΚΕΡΔΗ [i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ sum > ΤΕΤΡΑΕΤΙΑ[i] ΤΟΤΕ
ΤΕΤΡΑΕΤΙΑ[i] ← sum
ΕΤΟΣ[i] ← k
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ _ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ 'Η εταιρία' ,ΟΝΟΜΑ[ι], 'σημείωσε τα υψηλότερα κέρδη της την τετραετία από το' ,1989 +
ΕΤΟΣ[i], 'μέχρι το' ,1992 + ΕΤΟΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Αναζήτηση

10. Έστω ότι στην πόλη σας υπάρχουν 30 μουσεία και ο κατάλογος τους είναι αποθηκευμένος σε τρεις
μονοδιάστατους πίνακες που περιέχουν το όνομα κάθε μουσείου (πίνακας Ο), τη διεύθυνση του (πίνακας

48
Δ) και το τηλέφωνο του (πίνακας Τ). Έστω ότι κάποιος επισκέπτης θέλει να μάθει αν ένα συγκεκριμένο
μουσείο υπάρχει στην πόλη σας. Να γράψετε πρόγραμμα που να διαβάζει το όνομα του μουσείου που
ψάχνει ο επισκέπτης, να ελέγχει αν βρίσκεται στην πόλη σας και αν βρίσκεται να εμφανίζει όνομα,
διεύθυνση και τηλέφωνο, αν όχι να εμφανίζει κατάλληλο μήνυμα.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ10
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ι
ΧΑΡΑΚΤΗΡΕΣ: Ο[30], Δ[30], Τ[30), ΜΟΥΣΕΙΟ, ΠΟΛΗ
ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 30
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ, ΤΗΝ ΠΟΛΗ ΚΑΙ ΤΟ ΤΗΛΕΦΩΝΟ ΤΟΥ' ,Ι, 'ου ΜΟΥΣΕΙΟΥ'
ΔΙΑΒΑΣΕ Ο[Ι],Δ[Ι],Τ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ ΤΟΥ ΜΟΥΣΕΙΟΥ ΠΟΥ ΨΑΧΝΕΙΣ'
ΔΙΑΒΑΣΕ ΜΟΥΣΕΙΟ
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ ΤΗΣ ΠΟΛΗΣ ΠΟΥ ΜΕΝΕΙΣ'
ΔΙΑΒΑΣΕ ΠΟΛΗ
ΒΡΕΘΗΚΕ ← ΨΕΥΔΗΣ
ΟΣΟ (ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ) ΚΑΙ (Ι<=30) ΕΠΑΝΑΛΑΒΕ
ΑΝ ΜΟΥΣΕΙΟ = Ο[Ι] ΤΟΤΕ
ΒΡΕΘΗΚΕ ← ΑΛΗΘΗΣ
!Η μεταβλητή ΒΡΕΘΗΚΕ γίνεται αληθής όταν βρεθεί το στοιχείο που ψάχνουμε
ΑΝ Δ[Ι]=ΠΟΛΗ ΤΟΤΕ
ΓΡΑΨΕ Ο[Ι],Δ[Ι],Τ[Ι]
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΤΟ ΜΟΥΣΕΙΟ ΒΡΕΘΗΚΕ ΑΛΛΑ ΔΕΝ ΒΡΙΣΚΕΤΑΙ ΣΤΗΝ ΠΟΛΗ ΣΑΣ'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
Ι←Ι+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'ΤΟ ΜΟΥΣΕΙΟ ΠΟΥ ΖΗΤΑΤΕ ΔΕΝ ΥΠΑΡΧΕΙ ΣΕ ΚΑΜΙΑ ΠΟΛΗ'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ11
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ι, Κ[10000]
ΧΑΡΑΚΤΗΡΕΣ: Τ[10000], Ο[10000], ΣΥΓΓΡΑΦΕΑΣ
ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10000

49
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟΝ ΚΩΔΙΚΟ, ΤΟ ΤΙΤΛΟ ΚΑΙ ΤΟ ΟΝΟΜΑ ΤΟΥ ΣΥΓΓΡΑΦΕΑ'
ΔΙΑΒΑΣΕ Κ[Ι], Τ[Ι], Ο[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ ΤΟΥ ΣΥΓΓΡΑΦΕΑ ΠΟΥ ΨΑΧΝΕΙΣ'
ΔΙΑΒΑΣΕ ΣΥΓΓΡΑΦΕΑΣ
ΒΡΕΘΗΚΕ ← ΨΕΥΔΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10000
ΑΝ Ο[Ι]=ΣΥΓΓΡΑΦΕΑΣ ΤΟΤΕ
ΓΡΑΨΕ Κ[Ι], Τ[I]
ΒΡΕΘΗΚΕ ← ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
Ι←Ι+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'ΔΕΝ ΒΡΕΘΗΚΕ ΚΑΝΕΝΑ ΒΙΒΛΙΟ ΓΙΑ ΑΥΤΟ ΤΟ ΣΥΓΓΡΑΦΕΑ'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

12. Ένας ιδιοκτήτης πρακτορείου ΠΡΟΠΟ προκειμένου να διευκολυνθεί στη δουλειά του ενδιαφέρεται να
δημιουργήσει πρόγραμμα που να κάνει τα εξής:
α) να καταγράφει σε δυο μονοδιάστατους πίνακες τους αριθμούς 50 συνολικά λαχείων που κερδίζουν,
όπως και το ποσό που κερδίζει το καθένα
β) να ζητάει από έναν πελάτη που έχει αγοράσει 10 λαχεία να δώσει τους αριθμούς των λαχείων του τους
οποίους θα περνά σε μονοδιάστατο πίνακα
γ) να βρίσκει αν κάποια από τα λαχεία κερδίζουν
δ) να ενημερώνει τον πελάτη με κατάλληλα μηνύματα για το τι συμβαίνει, π.χ.: "το 1ο λαχείο δεν κερδίζει
τίποτα" ή "το 4ο κερδίζει 500.000".

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ12
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΛΑΧΝΟΙ[50], ΠΟΣΟ[50], Λ_ΠΕΛΑΤΗ[10], I, J, συνέχεια
ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟΝ ΑΡΙΘΜΟ ΤΟΥ' ,Ι, 'ου ΛΑΧΝΟΥ ΠΟΥ ΚΕΡΔΙΖΕΙ'
ΔΙΑΒΑΣΕ ΛΑΧΝΟΙ[Ι]
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΠΟΣΟ ΠΟΥ ΚΕΡΔΙΖΕΙ Ο' ,Ι, 'ος ΛΑΧΝΟΣ'
ΔΙΑΒΑΣΕ ΠΟΣΟ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟΥΣ 10 ΑΡΙΘΜΟΥΣ ΤΩΝ ΛΑΧΝΩΝ ΠΟΥ ΑΓΟΡΑΣΕΣ'
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΔΙΑΒΑΣΕ Λ_ΠΕΛΑΤΗ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΒΡΕΘΗΚΕ ← ΨΕΥΔΗΣ
J←1
ΟΣΟ (ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ) ΚΑΙ (J<=50) ΕΠΑΝΑΛΑΒΕ
ΑΝ Λ_ΠΕΛΑΤΗ[Ι] = ΛΑΧΝΟΙ[J] ΤΟΤΕ
ΓΡΑΨΕ 'ΤΟ' ,Ι, 'ο ΛΑΧΕΙΟ ΚΕΡΔΙΖΕΙ' ,ΠΟΣΟ[J], 'ΕΥΡΩ'
ΒΡΕΘΗΚΕ ← ΑΛΗΘΗΣ
ΑΛΛΙΩΣ

50
J←J+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ (ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ) ΤΟΤΕ
ΓΡΑΨΕ 'ΤΟ' ,I, 'ο ΛΑΧΕΙΟ ΔΕΝ ΚΕΡΔΙΖΕΙ ΤΙΠΟΤΕ'
ΤΕΛΟΣ__ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

13. Στο αγώνισμα του ακοντίου διεξάγεται ο τελικός του αθλήματος με τη συμμετοχή 30 αθλητών. Κάθε
αθλητής εκτελεί τρεις προσπάθειες. Να γραφεί πρόγραμμα το οποίο:
α) Να διαβάζει το όνομα κάθε αθλητή και να το αποθηκεύει στον μονοδιάστατο πίνακα 0[30].
β) Να διαβάζει τις επιδόσεις κάθε αθλητή για κάθε προσπάθεια και να τις αποθηκεύει σε ένα δισδιάστατο
πίνακα Ε [30, 3].
γ) Να διαβάζει το όνομα ενός αθλητή και να εμφανίζει την καλύτερη επίδοση του μαζί με το όνομα που
διάβασε.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ13
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ι, J, E[30,3], MAX[30]
ΧΑΡΑΚΤΗΡΕΣ: Ο[30]
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 30
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ ΤΟΥ' ,Ι, 'ου ΑΘΛΗΤΗ
ΔΙΑΒΑΣΕ Ο[Ι]
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
ΓΡΑΨΕ 'ΔΩΣΕ ΤΗΝ' ,J, 'η ΤΟΥ ΕΠΙΔΟΣΗ'
ΔΙΑΒΑΣΕ Ε[Ι,J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 30
MAX[I] ← Ε[Ι,1]
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
ΑΝ Ε[Ι,J]>MAX[Ι] ΤΟΤΕ
MAX[I] ← Ε[Ι,J]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 30
ΓΡΑΨΕ 'Ο' ,Ο[Ι], 'ΕΧΕΙ ΚΑΛΥΤΕΡΗ ΕΠΙΔΟΣΗ' ,MAX[I]
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

14. Ένας μαθητής, θέλει να αρχειοθετήσει και τα 200 μουσικά κομμάτια που διαθέτει. Για το λόγο αυτό
επιθυμεί να καταχωρήσει στον πίνακα ΤΙΤΛΟΣ τον τίτλο κάθε τραγουδιού, στον πίνακα CD τον τίτλο του
CD μέσα στο οποίο βρίσκεται κάθε τραγούδι και στον πίνακα ΔΙΑΡΚΕΙΑ την διάρκεια κάθε τραγουδιού,
σε δευτερόλεπτα. Να γραφεί πρόγραμμα σε «ΓΛΩΣΣΑ», το οποίο:
1. Διαβάζει τα παραπάνω στοιχεία και τα καταχωρεί στους πίνακες ΤΙΤΛΟΣ, CD, ΔΙΑΡΚΕΙΑ.
2. Διαβάζει τον τίτλο ενός κομματιού και εμφανίζει τον τίτλο του CD στο οποίο υπάρχει το κομμάτι αυτό,
καθώς και την χρονική του διάρκεια.
3. Εμφανίζει τον τίτλο του CD που έχει την συνολικά μεγαλύτερη χρονική διάρκεια σε μουσική.

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ14
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ι, J, MAX, ΔΙΑΡΚΕΙΑ[200], ΘΕΣΗ, F[200]

51
ΧΑΡΑΚΤΗΡΕΣ: ΤΙΤΛΟΣ [200], CD[200], KEY
ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 200
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟΝ ΤΙΤΛΟ, ΤΟ CD, ΚΑΙ ΤΗ ΔΙΑΡΚΕΙΑ:'
ΔΙΑΒΑΣΕ ΤΙΤΛΟΣ[Ι], CD[I], ΔΙΑΡΚΕΙΑ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΔΩΣΕ ΤΟΝ ΤΙΤΛΟ ΤΟΥ ΤΡΑΓΟΥΔΙΟΥ'
ΔΙΑΒΑΣΕ KEY
ΘΕΣΗ ← 0
ΒΡΕΘΗΚΕ ← ΨΕΥΔΗΣ
Ι←1
ΟΣΟ (Ι<=200) ΚΑΙ (ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ
ΑΝ ΤΙΤΛΟΣ[Ι] = KEY ΤΟΤΕ
ΒΡΕΘΗΚΕ ← ΑΛΗΘΗΣ
ΘΕΣΗ ← Ι
ΑΛΛΙΩΣ
I←Ι+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'ΤΟ ΚΟΜΜΑΤΙ ΔΕΝ ΒΡΕΘΗΚΕ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'CD:' ,CD[ΘΕΣΗ], 'ΔΙΑΡΚΕΙΑ:' ,ΔΙΑΡΚΕΙΑ[Ι]
ΤΕΛΟΣ_ΑΝ
!Εύρεση CD με την μεγαλύτερη διάρκεια σε μουσική
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 200
F[I] ← 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 200
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 200
ΑΝ CD[Ι] = CD[J] ΤΟΤΕ
F[Ι] ← F[Ι] + ΔΙΑΡΚΕΙΑ[J]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
MAX ← F[1]
ΘΕΣΗ ← 1
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 200
ΑΝ F[Ι]>MAX ΤΟΤΕ
MAX ← F[Ι]
ΘΕΣΗ ← I
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΤΟ CD ΜΕ ΤΗΝ ΜΕΓΑΛΥΤΕΡΗ ΧΡΟΝΙΚΗ ΔΙΑΡΚΕΙΑ ΕΙΝΑΙ ΤΟ' ,CD[ΘΕΣΗ]
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

15. Κατά την διάρκεια του πρωταθλήματος ΠΟΔΟΣΦΑΙΡΟΥ καταγράφονται τα τέρματα που έχουν πετύχει
οι 11 παίκτες μιας ομάδας στα 26 παιχνίδια του πρωταθλήματος. Να γράψετε έναν αλγόριθμο με τον
οποίο:
1. Αποθηκεύονται σε έναν μονοδιάστατο πίνακα τα ονόματα των 11 παιχτών και σε ένα δισδιάστατο
πίνακα τα τέρματα που έχει επιτύχει κάθε παίκτης, σε κάθε αγώνα.
2. Να τυπώνονται το ή τα ονόματα των παιχτών που πέτυχαν συνολικά τα περισσότερα τέρματα.
3. Αν δοθεί συγκεκριμένο όνομα παίκτη να βρεθεί σε ποιο παιχνίδι ή παιχνίδια αυτός
παίκτης πέτυχε τα λιγότερα τέρματα.

52
ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ15
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΤΕΡΜ[11,26], Ι, J, ΘΕΣΗ, ΠΑΙΚΤ[11], ΜΙΚΡ, MAX
ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[I], ΟΝΟΜΑ
ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 11
ΔΙΑΒΑΣΕ ΟΝ[Ι]
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 26
ΔΙΑΒΑΣΕ ΤΕΡΜ[Ι,J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 11
ΠΑΙΚΤ[I] ← 0
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 26
ΠΑΙΚΤ[Ι] ← ΠΑΙΚΤ[Ι] + ΤΕΡΜ[Ι,J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
MAX ← ΠΑΙΚΤ[1]
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 11
ΑΝ MAX < ΠΑΙΚΤ[Ι] ΤΟΤΕ
MAX ← ΠΑΙΚΤ[Ι]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΑΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 11
ΑΝ MAX = ΠΑΙΚΤ[Ι] ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[Ι]
ΤΕΛΟΣ.ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Με αυτόν τον τρόπο περιλαμβάνουμε και την περίπτωση που δύο ή περισσότεροι παίκτες πέτυχαν !
τα περισσότερα τέρματα
ΔΙΑΒΑΣΕ ΟΝΟΜΑ
ΒΡΕΘΗΚΕ ← ψευδής
Ι←1
ΟΣΟ Ι <= 11 ΚΑΙ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ ΟΝΟΜΑ = ΟΝ[Ι] ΤΟΤΕ
ΘΕΣΗ ← Ι
ΒΡΕΘΗΚΕ ← ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
Ι←Ι+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
MIN ← ΤΕΡΜ[ΘΕΣΗ,1]
ΓΙΑ J ΑΠΟ 2 ΜΕΧΡΙ 26
ΑΝ ΜΙΝ > ΤΕΡΜ[ΘΕΣΗ,J] ΤΟΤΕ
MIN ← ΤΕΡΜ[ΘΕΣΗ,J]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 26
ΑΝ MIN = ΤΕΡΜ[ΘΕΣΗ,J] ΤΟΤΕ
ΓΡΑΨΕ J
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Με αυτόν τον τρόπο περιλαμβάνουμε και την περίπτωση ο συγκεκριμένος παίκτης πέτυχε τα !
λιγότερα τέρματα σε δύο ή περισσότερα παιχνίδια
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

53
Ταξινόμηση

16. Να γραφτεί πρόγραμμα το οποίο:


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

ΠΡΟΓΡΑΜΜΑ ΑΣΚΗΣΗ16
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ι, J, ΠΟΝΤΟΙ[5,5], SUM[5], TEMP1,TEMP2
ΧΑΡΑΚΤΗΡΕΣ: Ο[5]
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
ΕΜΦΑΝΙΣΕ 'ΔΩΣΕ ΤΟ ΟΝΟΜΑ ΤΟΥ' ,Ι, 'ου ΠΑΙΚΤΗ'
ΔΙΑΒΑΣΕ Ο[Ι]
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 5
ΕΜΦΑΝΙΣΕ 'ΔΩΣΕ ΤΟΥΣ ΠΟΝΤΟΥΣ ΤΟΥ ΠΑΙΚΤΗ ΣΤΟ' ,J, 'ΠΑΙΧΝΙΔΙ'
ΔΙΑΒΑΣΕ ΠΟΝΤΟΙ[Ι,J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 5
SUM[I] ← 0
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 5
SUM[I] ← SUM[I] + ΠΟΝΤΟΙ[Ι,J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Εμφανίζουμε τους συνολικούς πόντους του κάθε παίχτη
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
ΕΜΦΑΝΙΣΕ 'ΟΙ ΣΥΝΟΛΙΚΟΙ ΠΟΝΤΟΙ ΤΟΥ' ,Ι, 'ου ΠΑΙΚΤΗ ΕΙΝΑΙ' ,SUM[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 5
ΓΙΑ J ΑΠΟ 5 ΜΕΧΡΙ Ι ΜΕ_ΒΗΜΑ -1
ΑΝ SUM[J]>SUM[J-1] ΤΟΤΕ
TEMP1 ← SUM[J]
SUM[J] ← SUM[J-1]
SUM[J-1] ← TEMP1
TEMP2 ← O[J]
O[J] ← O[J-1]
O[J-1] ← TEMP2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
ΕΜΦΑΝΙΣΕ Ο[Ι], SUM[I]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΑΛΥΤΕΣ ΑΣΚΗΣΕΙΣ

54
1. Θεωρούμε πίνακα Α διάστασης 3x3, όπου το Α[i,j] στοιχείο δίνεται από τον τύπο A[i,j]=i*j. Να βρεθεί
τι θα τυπώσει το παρακάτω τμήμα αλγορίθμου:

s←0
p←1
για i από 1 μέχρι 3
s ← s + A[i,i]
p ← p + A[i,i]
τέλος_επανάληψης
εμφάνισε "s=", s, "p=", p

Α. s=12 p=48 Β. s=14 p=36


Γ. s=55 p= 108 Δ. s=5 p=6

2. Έστω ο πίνακας Α που περιέχει με την σειρά τους 100 πρώτους αρτίους αριθμούς, (δηλ. 2,4,6,8,...), μετά
την εκτέλεση του κάτωθι τμήματος αλγορίθμου:

s←0
για i από 1 μέχρι n
s ← s + Α[Α[2*i]]
τέλος_επανάληψης

αν το 5=80 , τι τιμή θα έχει το n;


α) n=2 β) n=3 γ) n=4 δ) n=5

3. Ποια θα είναι τα περιεχόμενα του πίνακα Α μετά την εκτέλεση του παρακάτω αλγορίθμου;

Αλγόριθμος Δημιουργία_Πινάκα
Για i από 1 μέχρι 5
Α[i] ← i
Τέλος_επανάληψης
Για i από 2 μέχρι 5
Αν (i mod 2 = 0) τότε
Α[i] ← 2*Α[i-1] +1
Αλλιώς
Α[i] ← Α[i] + Α[i-1]
Τέλος_αν
Τέλος_Επανάληψης
Αποτελέσματα // Α //
Τέλος Δημιουργία_Πινάκα

4. O μονοδιάστατος αριθμητικός πίνακας table έχει τα ακόλουθα στοιχεία:

1η θέση 2η θέση 3η θέση 4η θέση 5η θέση

43 72 -4 63 56

Δίνεται το παρακάτω τμήμα αλγορίθμου:

Για Ι από 2 μέχρι 5


Για J από 5 μέχρι Ι με_βήμα -1
Αν table[J-1] < table[J] τότε
Αντιμετάθεσε table[J-1], table[J]
Τέλος_αν

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

Να μεταφερθεί στο τετράδιο σας ο ακόλουθος πίνακας και να συμπληρωθεί για όλες τις τιμές του J, που
αντιστοιχούν σε Ι = 2 και Ι = 3.

Πίνακας

Ι J 1ηθέση 2ηθέση 3" θέση 4ηθέση ^θέση


2 5 43 72 -4 63 56

(Εξετάσεις Εσπερινού 2002)

5. Ένα σχολείο σημειώνει σε βιβλίο απουσιών τα ονόματα 300 μαθητών και τις συνολικές τους απουσίες.
Να γράψετε αλγόριθμο ο οποίος:
Α. να διαβάζει και να αποθηκεύει σε πίνακες τα ονόματα και τις απουσίες των μαθητών,
Β. να εμφανίζει τα ονόματα των μαθητών που έχουν υπερβεί τις 30 απουσίες, καθώς και τις απουσίες που
έχουν σημειώσει, ώστε να σταλεί επιστολή,
Γ. να εμφανίζει το πλήθος των επιστολών που πρέπει να σταλούν.

6. Στο Πανεπιστήμιο Μακεδονίας λειτουργεί εργαστήριο υπολογιστών το οποίο μπορούν να


χρησιμοποιούν οι 100 φοιτητές του Τμήματος Πληροφορικής. Κάθε φοιτητής έχει έναν κωδικό
αναγνώρισης τον οποίο πρέπει να πληκτρολογήσει για να μπορέσει να χρησιμοποιήσει κάποιον από τους
υπολογιστές του εργαστηρίου. Να γράψετε αλγόριθμο ο οποίος:
Α. θα αποθηκεύει τους κωδικούς όλων των φοιτητών σε έναν πίνακα.
Β. θα ζητάει τον κωδικό ενός χρήστη και θα ελέγχει αν πρόκειται για φοιτητή του Τμήματος
Πληροφορικής. Στην περίπτωση που είναι θα εμφανίζει το μήνυμα «Καλώς ήρθατε στο Εργαστήριο
Πληροφορικής», στην αντίθετη περίπτωση θα εμφανίζεται το μήνυμα
«Ανύπαρκτος κωδικός, δεν επιτρέπεται η πρόσβαση.»

7. Έστω ότι ο κατάλογος με τα εμπορικά καταστήματα της πόλης είναι αποθηκεμένος σε έναν πίνακα ο
οποίος περιέχει το όνομα κάθε καταστήματος. Έστω ότι κάποιος θέλει να ανοίξει ένα νέο εμπορικό
κατάστημα. Να γραφεί αλγόριθμος που αναζητά αν η επωνυμία που θα χρησιμοποιηθεί είναι ήδη
καταχωρισμένη και να εμφανίζει το αντίστοιχο μήνυμα.

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

56
9. Να γίνει αλγόριθμος ο οποίος να δέχεται το πλήθος των γκολ που σημείωσε κάθε μια από τις 16 ομάδες
του επαγγελματικού πρωταθλήματος σε κάθε αγωνιστική. Θεωρείστε ότι το πρωτάθλημα έχει 30
αγωνιστικές. Στη συνέχεια ο αλγόριθμος πρέπει να υπολογίζει και να εμφανίζει τα εξής:
Α. το σύνολο των γκολ που πέτυχε κάθε ομάδα (σε όλες τις αγωνιστικές),
Β. το σύνολο των γκολ που σημειώθηκαν σε κάθε αγωνιστική (από όλες τις ομάδες),
Γ. την αγωνιστική με τα περισσότερα γκολ,
Δ. την ομάδα που σημείωσε τα λιγότερα γκολ σε όλο το πρωτάθλημα,
Ε. την ομάδα που σημείωσε τα λιγότερα γκολ, καθώς και την αγωνιστική στην οποία σημειώθηκαν,
ΣΤ. το σύνολο των γκολ που σημειώθηκαν σε όλο το πρωτάθλημα,
Ζ. τις ομάδες που στις 5 πρώτες αγωνιστικές είχαν αγώνα στον οποίο σημείωσαν περισσότερα γκολ
από το μέσο όρο των γκολ του πρωταθλήματος.

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

Έτη Εργασίας Ποσοστό αύξησης


Πάνω από 2 χρόνια 10%
Πάνω από 5 χρόνια 15%
Πάνω από 10 χρόνια 20%
Πάνω από 15 χρόνια 30%

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

11. Μια εταιρεία αμείβει του πωλητές της με μισθό 1000 Ευρώ και ποσοστά επί των πωλήσεων σύμφωνα
με τον παρακάτω πίνακα:

ΠΩΛΗΣΕΙΣ ΠΟΣΟΣΤΟ
1 Μέχρι 3.000 5%
2 Από 3.001 μέχρι 9.000 8%
3 Από 9.001 μέχρι 15.000 10%
4 Άνω των 15.000 12%

(Αν ο πωλητής πουλήσει 11.000 θα πάρει για τα 3000 Ευρώ 5%, για τα επόμενα 6000 Ευρώ ποσοστό 8%
και για 2000 Ευρώ 10%}
Να κατασκευάσετε πρόγραμμα που:
Α. Να διαβάζει τον κωδικό και τις πωλήσεις του πωλητή.
Β. Να υπολογίζει και να εκτυπώνει το συνολικό ποσό που δικαιούται για πριμ και το σύνολο της αμοιβής
του.
Γ. Η διαδικασία να επαναλαμβάνεται για άγνωστο αριθμό πωλητών μέχρι να εισαχθεί για κωδικός το 0.
Δ. Να υπολογίζει το συνολικό ποσό που θα πληρώσει η εταιρεία για αμοιβές.
Ε. Το μέσο όρο των πριμ.

12. Ενόψει των γιορτών η εταιρεία ΧΖΣ αποφάσισε να στείλει ευχετήριες κάρτες στους πελάτες της. Να
αναπτυχθεί πρόγραμμα το οποίο:
Α. θα δημιουργεί ένα δυσδιάστατο πίνακα ΣΤΟΙΧΕΙΑ[1000,3] που περιέχει τα ονοματεπώνυμα των 1000
πελατών της εταιρείας στη στήλη 1, το πατρώνυμο στη στήλη 2 και τις διευθύνσεις των πελατών στη
στήλη 3.
Β. Στη συνέχεια θα ταξινομεί τα στοιχεία ως προς την πρώτη στήλη και θα εκτυπώνει τα ονόματα και τις
διευθύνσεις για τις ευχετήριες κάρτες.

57
2. Να γράψετε πρόγραμμα που αποθηκεύει σε δύο μονοδιάστατους πίνακες τα ονόματα και τις ηλικίες των
3000 κατοίκων ενός χωριού. Στη συνέχεια να ταξινομεί τους κατοίκους-με βάση την ηλικία τους κατά
αύξουσα σειρά. Σημείωση: σε περίπτωση ισότητας ηλικίας να γίνεται ταξινόμηση αλφαβητικά.

13. Στο διαγωνισμό της Eurovision συμμετέχουν 35 κράτη. Να γράψετε πρόγραμμα το οποίο:
Α. αποθηκεύει σε έναν μονοδιάστατο πίνακα τα ονόματα των χωρών και σε ένα δυσδιάστατο πίνακα τους
βαθμούς που έδωσε κάθε χώρα,
Β. εμφανίζει σε ποια υποψήφια χώρα έδωσε κάθε κράτος τους δώδεκα βαθμούς.
Γ. Πώς πρέπει να τροποποιηθεί το πρόγραμμα ώστε να μην πραγματοποιεί την παραπάνω ενέργεια για όλα
τα κράτη, αλλά μόνο για αυτήν που μας ενδιαφέρει;

14. Να αναπτύξετε πρόγραμμα το οποίο θα καταγράφει σε έναν μονοδιάστατο πίνακα ΟΝΟΜΑΤΑ τα


ονόματα 20 αθλητών που συμμετέχουν στον τελικό της σφαιροβολίας και σε έναν δυσδιάστατο πίνακα
ΕΠΙΔΟΣΕΙΣ τις επιδόσεις κάθε αθλητή στις 5 προσπάθειες που δικαιούται. Στη συνέχεια το πρόγραμμα να
εκτυπώνει τα ονόματα των αθλητών που πήραν μετάλλιο.

15. Ο Γιωργάκης είναι μαθητής Γυμνασίου και χρησιμοποιεί τις εξής δομές δεδομένων για να αποθηκεύει
τη βαθμολογία του σε όλα τα μαθήματα:
• Ένα μονοδιάστατο πίνακα ΜΑΘΗΜΑ που περιέχει τα ονόματα για κάθε ένα από τα 17 μαθήματα που
παρακολουθεί στο σχολείο και
• Ένα δυσδιάστατο πίνακα ΤΡΙΜΗΝΟ όπου κάθε στήλη περιέχει τον βαθμό στο αντίστοιχο τρίμηνο για
το μάθημα που αντιστοιχεί στην γραμμή αυτή.
Να αναπτύξετε πρόγραμμα που θα αποθηκεύει τους βαθμούς του Γιωργάκη σε όλα τα
μαθήματα στους αντίστοιχους πίνακες και στη συνέχεια θα υπολογίζει και θα εμφανίζει:
Α. το μέσο όρο του Γιωργάκη ανά μάθημα,
Β. το μέσο όρο του 2ου τριμήνου,
Γ. το γενικό μέσο όρο,
Δ. σε ποια μαθήματα και σε ποιο τρίμηνο πήρε βαθμολογία 20. Πώς θα έπρεπε να
τροποποιηθεί η απάντηση στο ερώτημα αυτό αν υποθέσουμε ότι πήρε μόνο σε ένα
μάθημα και σε ένα τρίμηνο 20;

16. Να αναπτύξετε πρόγραμμα που θα δημιουργεί μονοδιάστατο πίνακα 10 θέσεων τοποθετώντας την τιμή
-1 στις περιττές θέσεις και 1 στις άρτιες.

17. Η δημοτική αρχή του δήμου Ωραιοκάστρου σας ανέθεσε την στατιστική επεξεργασία των στοιχείων
των 15000 δημοτών της. Για κάθε δημότη καταγράφεται: το έτος γεννήσεως και το φύλο του. Να
αναπτύξετε πρόγραμμα που θα διαβάζει σε δυο μονοδιάστατους πίνακες ΕΤΟΣ_ΓΕΝΝΗΣΕΩΣ και ΦΥΛΟ
τα προαναφερθέντα στοιχεία και θα απαντά στα εξής ερωτήματα:
Α. το πλήθος των δημοτών που έχουν δικαίωμα ψήφου, και ποσοστό ανδρών και γυναικών,
Β. το πλήθος των ατόμων που έχουν ηλικία < 18,
Γ. το πλήθος των δημοτών με ηλικία > 80, και ποσοστό ανδρών και γυναικών.

18. Η εταιρεία Χ απασχολεί 500 πωλητές σε όλη την Ελλάδα. Έστω ότι για κάθε πωλητή γνωρίζουμε τις
μηνιαίες πωλήσεις που πραγματοποίησε το περασμένο έτος (12 μήνες) και το όνομα του που είναι σε ένα
πίνακα Β.
Να αναπτύξετε αλγόριθμο που:
α. Να διαβάζει τα παραπάνω δεδομένα εισόδου και να γεμίζει τους πίνακες δεδομένων.
β. Να εντοπίζει ποιος πωλητής (το όνομα του) έκανε τη μεγαλύτερη πώληση και σε ποιο μήνα
γ. Να υπολογίζει το συνολικό μέσο όρο πωλήσεων δηλαδή τη μέση πώληση ανά πωλητή.
δ. Να εκτυπώνει τους πωλητές (τα ονόματα τους) που θα πάρουν μπόνους. Μπόνους
δικαιούται όποιος πωλητής ξεπεράσει τα 3/2 του συνολικού μέσου όρου πωλήσεων.
Να εκτυπώνει επίσης το πλήθος τους.
ε. Να διαβάζει το όνομα πωλητή και να υπολογίζει ποιο μήνα έκανε τις μεγαλύτερες πωλήσεις.
στ. Να εντοπίζει ποιος πωλητής έκανε τις μεγαλύτερες πωλήσεις τον Μάιο.
ζ. Να εκτυπώνει τον ή τους πωλητές που έχουν πραγματοποιήσει μηδενικές
πωλήσεις περισσότερες από δύο φορές.

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

19. Κεντρικό δισκοπωλείο με 15 υποκαταστήματα καταγράφει τα CD που διαθέτει. Να αναπτυχθεί


πρόγραμμα όπου:
α) θα διαβάζει τα ονόματα των 15 δισκοπωλείων και θα τα καταχωρεί σε μονοδιάστατο πίνακα με όνομα
ΥΠΟΚΑΤΑΣΤΗΜΑ.
β) θα διαβάζει τους διαφορετικούς τίτλους CD (10000 στο πλήθος) και θα τους καταχωρεί στο
μονοδιάστατο πίνακα ΤΙΤΛΟΣ_CD.
γ) θα διαβάζει το πλήθος των τίτλων που κάθε κατάστημα κατέχει και θα το καταχωρεί σε δισδιάστατο
πίνακα ΑΡΙΘΜΟΣ_CD[15,10000].
δ) θα διαβάζει τον τίτλο ενός CD και να εκτυπώνει τα καταστήματα που αυτό είναι διαθέσιμο.
ε) θα διαβάζει το όνομα ενός καταστήματος και να εκτυπώνει το πλήθος των CD που διαθέτει προς
πώληση.

20. Να γραφεί ένα πρόγραμμα που να διαβάζει ένα όνομα και να υπολογίζει πόσες φορές υπάρχει το
συγκεκριμένο όνομα στο μονοδιάστατο πίνακα Ο των ονομάτων μια ηλεκτρονικής ατζέντας. Έστω ότι ο
πίνακας ονομάτων περιέχει 100 ονόματα, θεωρήστε ότι δεν χρειάζεται να διαβάσετε τα δεδομένα του.

21. Να αναπτύξετε αλγόριθμο που θα συνενώνει (λειτουργία συγχώνευσης) δύο πίνακες: Α διαστάσεων
Ν1xΜ και Β διαστάσεων Ν2xΜ.

22. Η Επιτροπή Τηλεπικοινωνιών του κρατιδίου ΒΒΟ ζήτησε από τις 2 εταιρείες κινητής τηλεφωνίας να
εκδώσουν κοινό τηλεφωνικό κατάλογο. Οι εταιρείες δεσμεύτηκαν να παραδώσουν στην Επιτροπή σε
ηλεκτρονική μορφή από δυο πίνακες που θα περιέχουν τα ονόματα των συνδρομητών (ταξινομημένα σε
αύξουσα διάταξη) και τα τηλεφωνά τους. Να αναπτύξετε αλγόριθμο που θα συγχωνεύει τους τέσσερις
πίνακες σε δυο νέους που θα περιέχουν τα ονόματα όλων των συνδρομητών (ταξινομημένα) και τα
τηλέφωνα.

23. Σ’ ένα κατάστημα ενοικιάσεως DVD ο ιδιοκτήτης θέλει να εκτιμήσει την πορεία της επιχείρησής του
την περασμένη χρονιά. Έτσι λοιπόν, καταγράφει τα εξής: τον τίτλο της κάθε ταινίας, τον προμηθευτή της
και το πλήθος των ενοικιάσεων του κάθε τίτλου για όλη τη χρονιά. Υποθέστε ότι οι διαθέσιμοι
προμηθευτές είναι ΚΡΟΝΟΣ, ΔΙΑΣ και ΠΛΟΥΤΩΝΑΣ.
Αν η επιχείρηση προμηθευτεί 10.000 τίτλους DVD τότε τα παραπάνω στοιχεία καταγράφονται σε
αντίστοιχους πίνακες με ονόματα ΤΙΤΛΟΣ[10.000], ΠΡΟΜΗΘΕΥΤΗΣ[10.000] και
ΕΝΟΙΚΙΑΣΕΙΣ[10.000]. Δημιουργήστε ένα πρόγραμμα το οποίο:
α. καταχωρεί τα δεδομένα στους αντίστοιχους πίνακες όπως αυτοί αναφέρθηκαν και ορίστηκαν.
β. υπολογίζει το πλήθος των ταινιών που προμηθεύεται ο επιχειρηματίας από τον κάθε προμηθευτή,
εμφανίζοντας το στην οθόνη μετά το όνομα του κάθε προμηθευτή.
γ. εμφανίζει ποια ταινία από κάθε προμηθευτή έχει τη μεγαλύτερη κυκλοφορία(σε περίπτωση ίσου αριθμού
ενοικιάσεων να εμφανίζεται η τελευταία στη λίστα).
δ. δέχεται το όνομα ενός προμηθευτή (ελέγχοντας αν το όνομα του προμηθευτή είναι αποδεκτό) και
εμφανίζει μια λίστα με τις ταινίες που προμηθεύει τον επιχειρηματία. Αν όχι, να δίνεται η δυνατότητα στο
χρήστη να εισάγει ξανά ή να δώσει τη λέξη ‘ΤΕΛΟΣ’ για να ακυρώσει την αναζήτηση.

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

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

Συναρτήσεις

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

ΣΥΝΑΡΤΗΣΗ Όνομα (λίστα παραμέτρων): Τύπος συνάρτησης


Τμήμα δηλώσεων μεταβλητών συνάρτησης
ΑΡΧΗ
Εντολές
Όνομα ← Έκφραση
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Στη δομή της συνάρτησης μπορούμε να κάνουμε τις εξής παρατηρήσεις:


1. Το όνομα της συνάρτησης μπορεί να είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ.
2. Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές
μεταβιβάζονται στη συνάρτηση, κατά την κλήση της από το πρόγραμμα. Ουσιαστικά πρόκειται για τα
δεδομένα εισόδου της συνάρτησης.
3. Οι συναρτήσεις υπολογίζουν και επιστρέφουν μια τιμή η οποία μπορεί να είναι
ΠΡΑΓΜΑΤΙΚΗ, ΑΚΕΡΑΙΑ, ΧΑΡΑΚΤΗΡΑΣ, ή ΛΟΓΙΚΗ. Ο τύπος της τιμής που
επιστρέφει η συνάρτηση, δηλώνεται μετά τη λίστα παραμέτρων.
4. Πριν τη λέξη ΑΡΧΗ, που καθορίζει την αρχή της συνάρτησης, δηλώνονται οι τύποι των μεταβλητών
εισόδου, καθώς και οι τυχόν βοηθητικές μεταβλητές ή σταθερές που χρησιμοποιεί η συνάρτηση.
5. Στις εντολές του σώματος της συνάρτησης πρέπει υποχρεωτικά να υπάρχει μία
εντολή εκχώρησης τιμής στο όνομα της συνάρτησης. Αυτή η τιμή, είναι η επιστρεφόμενη τιμή.
Η κλήση μιας συνάρτησης γίνεται απλά με την αναφορά του ονόματος της συνάρτησης σε μια έκφραση ή
σε μια εντολή.

ΛΥΜΕΝΑ ΠΑΡΑΔΕΙΓΜΑΤΑ

1. Να γραφεί συνάρτηση, η οποία θα υπολογίζει και θα επιστρέφει το άθροισμα δυο πραγματικών αριθμών.

ΣΥΝΑΡΤΗΣΗ Άθροισμα (α,β): ΠΡΑΓΜΑΤΙΚΗ


ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: α, β
ΑΡΧΗ
Άθροισμα ← α + β
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

2. Να γραφεί συνάρτηση η οποία θα υπολογίζει το μέγιστο τριών πραγματικών αριθμών.

ΣΥΝΑΡΤΗΣΗ Μέγιστος(α,β,γ): ΠΡΑΓΜΑΤΙΚΗ


ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: α, β, γ, max
ΑΡΧΗ
max ← α
ΑΝ β > max ΤΟΤΕ
max ← β
ΤΕΛΟΣ_ΑΝ
ΑΝ γ > max ΤΟΤΕ
max ← γ
ΤΕΛΟΣ_ΑΝ
Μέγιστος ← max
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

60
3. Να γραφεί συνάρτηση η οποία θα δέχεται ως είσοδο έναν αριθμό και θα επιστρέφει στο πρόγραμμα την
τιμή ΑΛΗΘΗΣ αν ο αριθμός είναι άρτιος ή ΨΕΥΔΗΣ αν ο αριθμός είναι περιττός.

ΣΥΝΑΡΤΗΣΗ Άρτιος(χ): ΛΟΓΙΚΗ


ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: χ
ΑΡΧΗ
ΑΝ χ MOD 2 = 0 ΤΟΤΕ
Άρτιος ← ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
Άρτιος ← ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

4. Να γραφεί συνάρτηση η οποία θα δέχεται έναν πίνακα 100 ακεραίων και θα υπολογίζει το ελάχιστο
στοιχείο του.

ΣΥΝΑΡΤΗΣΗ Ελάχιστο(Π): ΑΚΕΡΑΙΑ


ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Π[100], i, min
ΑΡΧΗ
min ← Π[1]
ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ 100
ΑΝ Π[Ι] < min ΤΟΤΕ
min ← Π[I]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ελάχιστο ← min
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

5. Να γραφεί συνάρτηση που θα υπολογίζει και θα επιστρέφει την τιμή της μαθηματικής συνάρτησης

�2 x - 10, x < 0

f ( x )  �2 x  1, 0 � x < 1 .

� x ,1 � x

ΣΥΝΑΡΤΗΣΗ FX(χ): ΠΡΑΓΜΑΤΙΚΗ


ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: χ, y
ΑΡΧΗ
ΑΝ χ<0 ΤΟΤΕ
y ← 2*χ-10
ΑΛΛΙΩΣ_ΑΝ χ<1 ΤΟΤΕ
y ← 2*χ+1
ΑΛΛΙΩΣ
y ← Τ_Ρ(χ)

61
ΤΕΛΟΣ_ΑΝ
FX ← y
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

6. Να δημιουργήσετε μια συνάρτηση με το όνομα Είναι_Πρώτος που θα δέχεται ως όρισμα έναν ακέραιο
αριθμό και θα επιστρέφει Αληθής αν ο αριθμός είναι πρώτος ή Ψευδής αν ο αριθμός δεν είναι. Πρώτος
είναι ο αριθμός που διαιρείται μόνο με τον εαυτό του και την μονάδα.

ΣΥΝΑΡΤΗΣΗ Είναι_Πρώτος(χ): ΛΟΓΙΚΗ


ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: χ, i
ΠΡΑΓΜΑΤΙΚΕΣ: done
ΑΡΧΗ
done ← ΑΛΗΘΗΣ
i←2
ΟΣΟ done = Αληθής ΚΑΙ i <= χ – 1 ΕΠΑΝΑΛΑΒΕ
ΑΝ χ MOD i = 0 ΤΟΤΕ
done ← ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Είναι_Πρώτος ← done
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Διαδικασίες

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

ΔΙΑΔΙΚΑΣΙΑ Όνομα (λίστα παραμέτρων)


Τμήμα δηλώσεων μεταβλητών διαδικασίας
ΑΡΧΗ
Εντολές
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Στη δομή της διαδικασίας μπορούμε να κάνουμε τις εξής παρατηρήσεις:


1. Το όνομα μιας διαδικασίας μπορεί να είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ.
2. Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές
μεταβιβάζονται στη διαδικασία, κατά την κλήση της από το πρόγραμμα, αλλά και επιστρέφονται στο κύριο
πρόγραμμα μετά την εκτέλεση των εντολών της διαδικασίας.
Είναι δηλαδή οι μεταβλητές εισόδου (δεδομένα) και εξόδου (αποτελέσματα).
3. Στο σώμα της διαδικασίας μπορούν να υπάρχουν οποιεσδήποτε εντολές της ΓΛΩΣΣΑΣ.
4. Πριν τη λέξη ΑΡΧΗ δηλώνονται οι τύποι των μεταβλητών εισόδου, καθώς και οι τυχόν βοηθητικές
μεταβλητές ή σταθερές που χρησιμοποιεί η διαδικασία.
Η κλήση μιας διαδικασίας γίνεται με την εντολή ΚΑΛΕΣΕ η οποία έχει την εξής σύνταξη:
ΚΑΛΕΣΕ Όνομα Διαδικασίας (λίστα παραμέτρων)

Διαφορές Συναρτήσεων – Διαδικασιών

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

62
Οι συναρτήσεις μοιάζουν με τις συναρτήσεις των Οι διαδικασίες μεταφέρουν τα αποτελέσματά τους
μαθηματικών και μεταφέρουν το αποτέλεσμά τους στα άλλα υποπρογράμματα με τη χρήση
στο πρόγραμμα που τις κάλεσε με το όνομά τους. παραμέτρων.
Απλά δηλαδή με τη χρήση του ονόματος και όχι με
παραμέτρους.
Οι συναρτήσεις εκτελούνται απλά με την εμφάνιση Για να ενεργοποιηθεί μια διαδικασία
του ονόματός τους σε οποιαδήποτε έκφραση. χρησιμοποιείται η ειδική εντολή ΚΑΛΕΣΕ και το
όνομα της διαδικασίας.

ΛΥΜΕΝΑ ΠΑΡΑΔΕΙΓΜΑΤΑ

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

ΔΙΑΔΙΚΑΣΙΑ Είσοδος_Δεδομένων(χ)
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Χ
ΑΡΧΗ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΕΜΦΑΝΙΣΕ 'Δώσε έναν αριθμό'
ΔΙΑΒΑΣΕ χ
ΜΕΧΡΙΣ_ΟΤΟΥ χ > 0
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

ΠΡΟΓΡΑΜΜΑ Μέσος_όρος_πίνακα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Π[50]
ΑΡΧΗ
ΚΑΛΕΣΕ Εισαγωγή_Στοιχείων(Π)
ΕΜΦΑΝΙΣΕ 'Ο μέσος όρος των στοιχείων του πίνακα είναι' ,Μέσος_όρος(Π)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Στοιχείων(table)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: table[50], i
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΕΜΦΑΝΙΣΕ 'Δώσε το στοιχείο' ,i
ΔΙΑΒΑΣΕ table[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ Μέσος_όρος(table): ΠΡΑΓΜΑΤΙΚΗ


ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: table[50], i, sum

63
ΑΡΧΗ
sum ← 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
sum ← sum + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Μέσος_όρος ← sum / 50
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

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

ΠΡΟΓΡΑΜΜΑ Μέγιστο_Στοιχείο
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[100], Β[100]
ΑΡΧΗ
ΚΑΛΕΣΕ Εισαγωγή_Στοιχείων(Α)
ΕΜΦΑΝΙΣΕ 'Το μέγιστο στοιχείο του πρώτου πίνακα:' , Μέγιστο(Α)
ΚΑΛΕΣΕ Εισαγωγή_Στοιχείων(Β)
ΕΜΦΑΝΙΣΕ 'Το μέγιστο στοιχείο του πρώτου πίνακα:' , Μέγιστο(Β)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Στοιχείων(Π)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Π[100], i
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΕΜΦΑΝΙΣΕ 'Δώσε το στοιχείο' ,i
ΔΙΑΒΑΣΕ Π[I]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ Μέγιστο(Π): ΑΚΕΡΑΙΑ


ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Π[100], i, max
ΑΡΧΗ
max ← Π[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100
ΑΝ Π[i] > max ΤΟΤΕ
max ← Π[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Μέγιστο ← max
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

10. α) Να γραφεί συνάρτηση που θα υπολογίζει το πλήθος εμφάνισης της λέξης


"Αλγόριθμος". Η συνάρτηση θα δέχεται ως είσοδο έναν πίνακα 200 λέξεων.
β) Να γραφεί διαδικασία που θα διαβάζει έναν πίνακα 200 θέσεων που περιέχει λέξεις.
γ) Να γραφεί πρόγραμμα που με χρήση των υποπρογραμμάτων των προηγούμενων
υποερωτημάτων θα εμφανίζει το πλήθος και το ποσοστό της εμφάνισης της λέξης
"Αλγόριθμος" σε ένα πίνακα 200 θέσεων.

α)

64
ΣΥΝΑΡΤΗΣΗ Συχνότητα(Π): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, sum
ΧΑΡΑΚΤΗΡΕΣ: Π[200]
ΑΡΧΗ
sum ← Ο
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 200
ΑΝ Π[i] = "Αλγόριθμος" ΤΟΤΕ
sum ← sum + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Συχνότητα ← sum
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

β)

ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Στοιχείων(Π)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i
ΧΑΡΑΚΤΗΡΕΣ: Π[200]
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 200
ΔΙΑΒΑΣΕ Π[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

γ)

ΠΡΟΓΡΑΜΜΑ Υπολογισμός
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πλήθος
ΠΡΑΓΜΑΤΙΚΕΣ: π
ΧΑΡΑΚΤΗΡΕΣ: Π[200]
ΑΡΧΗ
ΚΑΛΕΣΕ Εισαγωγή_Στοιχείων(Π)
πλήθος ← Συχνότητα(Π)
ποσοστό ← πλήθος *100/200
ΕΜΦΑΝΙΣΕ πλήθος, ποσοστό
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

11. Χρησιμοποιώντας την κατάλληλη μορφή υποπρογράμματος, να γραφεί ως υποπρόγραμμα ο


αλγόριθμος αλά ρωσικά με είσοδο ακεραίους Μ1, Μ2.

ΣΥΝΑΡΤΗΣΗ Γινόμενο(Μ1, Μ2): ΑΚΕΡΑΙΑ


ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΜΙ, Μ2, άθροισμα
ΑΡΧΗ
άθροισμα ← Ο
ΟΣΟ Μ2 > Ο ΕΠΑΝΑΛΑΒΕ
ΑΝ Μ2 MOD 2 = 1 ΤΟΤΕ

65
άθροισμα ← άθροισμα + Μ1
ΤΕΛΟΣ_ΑΝ
Μ1 ← Μ1*2
Μ2 ← Μ2 DIV 2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Γινόμενο ← άθροισμα
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

12. Να γίνει πρόγραμμα το οποίο:


1. Να διαβάζει 2 πραγματικούς αριθμούς α, β.
2. Να λύνει την εξίσωση αχ + β = 0.
Η επίλυση της εξίσωσης να γίνεται με ΔΙΑΔΙΚΑΣΙΑ της μορφής: Επίλυση_εξίσωσης(α, β, χ, είδος) όπου:
• α, β: Οι τιμές των συντελεστών της εξίσωσης (είσοδοι ΔΙΑΔΙΚΑΣΙΑΣ)
• χ: Η λύση της εξίσωσης (έξοδος ΔΙΑΔΙΚΑΣΙΑΣ)
• είδος: ΑΚΕΡΑΙΑ μεταβλητή (έξοδος ΔΙΑΔΙΚΑΣΙΑΣ) που περιγράφει το είδος της
εξίσωσης ως εξής:
1 = Η εξίσωση έχει μια λύση
2 = Η εξίσωση είναι ΑΟΡΙΣΤΗ
3 = Η εξίσωση είναι ΑΔΥΝΑΤΗ
Η εμφάνιση της τιμής του χ (στο κυρίως πρόγραμμα) να γίνεται μόνο αν εξίσωση έχει
μία λύση. Αλλιώς να εμφανίζεται ενημερωτικό μήνυμα.

ΠΡΟΓΡΑΜΜΑ Επίλυση_πρωτοβάθμιας_εξίσωσης
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: α, β, χ
ΑΚΕΡΑΙΕΣ: είδος
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε το συντελεστή α:'
ΔΙΑΒΑΣΕ α
ΓΡΑΨΕ 'Δώσε το συντελεστή β:'
ΔΙΑΒΑΣΕ β
ΚΑΛΕΣΕ Επίλυση_εξίσωσης(α, β, χ, είδος)
ΕΠΙΛΕΞΕ είδος
ΠΕΡΙΠΤΩΣΗ 1
ΓΡΑΨΕ 'Η εξίσωση έχει λύση την τιμή χ=', χ
ΠΕΡΙΠΤΩΣΗ 2
ΓΡΑΨΕ 'Η εξίσωση είναι ΑΟΡΙΣΤΗ'
ΠΕΡΙΠΤΩΣΗ 3
ΓΡΑΨΕ 'Η εξίσωση είναι ΑΔΥΝΑΤΗ'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Επίλυση_εξίσωσης(a, b, c, type)


ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: a, b, c
ΑΚΕΡΑΙΕΣ: type
ΑΡΧΗ
ΑΝ a <> 0 ΤΟΤΕ
χ ← -β/α
type ← 1 !Δηλαδή η εξίσωση έχει μια λύση
ΑΛΛΙΩΣ
ΑΝ β=0 ΤΟΤΕ
type ← 2 !Δηλαδή η εξίσωση είναι αόριστη
ΑΛΛΙΩΣ
type ← 3 !Δηλαδή η εξίσωση είναι αδύνατη

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

13. Κάποιος προγραμματιστής θέλει να αναπτύξει ένα πρόγραμμα το οποίο θα ταξινομεί τα στοιχεία
πινάκων ακεραίων αριθμών. Έτσι σας ζητάει να τον βοηθήσετε
κατασκευάζοντας για αυτόν μια ΔΙΑΔΙΚΑΣΙΑ με τα εξής χαρακτηριστικά:
- Όνομα: Ταξινόμησε_πίνακα
- Παράμετροι:
Π: Μονοδιάστατος πίνακας ακεραίων (100 θέσεων).
Ν: Το πλήθος των αριθμών που θα πρέπει να ταξινομηθούν (1<=Ν<=100).
Α: ΛΟΓΙΚΗ παράμετρος η οποία:
 θα έχει την τιμή ΑΛΗΘΗΣ αν πρέπει να γίνει αύξουσα ταξινόμηση
 θα έχει την τιμή ΨΕΥΔΗΣ αν πρέπει να γίνει φθίνουσα ταξινόμηση
- Αν η παράμετρος Ν είναι μικρότερη του 1 ή μεγαλύτερη του 100, η διαδικασία θα
πρέπει να εμφανίζει το μήνυμα "Λάθος πλήθος στοιχείων" χωρίς να πραγματοποιεί καμιά άλλη λειτουργία.

ΔΙΑΔΙΚΑΣΙΑ Ταξινόμησε_πίνακα(Π, Ν, Α)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Π[100], Ν, i, j, temp
ΛΟΓΙΚΕΣ: Α
ΑΡΧΗ
ΑΝ (Ν >= 1) ΚΑΙ (Ν <= 100) ΤΟΤΕ
ΕΠΙΛΕΞΕ Α
ΠΕΡΙΠΤΩΣΗ ΑΛΗΘΗΣ
ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ I ΜΕ_ΒΗΜΑ -1
ΑΝ Π[j-1] > Πj] ΤΟΤΕ
temp ← Π[j]
Π[j] ← Π[j-1]
Πj-1] ← temp
ΤΕΛΟΣ_ΑΝ ,
ΠΕΡΙΠΤΩΣΗ ΨΕΥΔΗΣ
ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ I ΜΕ_ΒΗΜΑ -1
AN Π[j-1] < Πj] TOTE
temp ← Π[j]
Π[j] ← Π[j-1]
Πj-1] ← temp
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ.ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ.ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος πλήθος στοιχείων'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

14. Να γίνει πρόγραμμα το οποίο:


1. Να ζητάει έναν αριθμό Κ από το 1 ως το 100 (αν δοθεί λάθος αριθμός να
επαναλαμβάνει την ερώτηση).
2. Να διαβάζει Κ αριθμούς τους οποίους θα αποθηκεύει στις πρώτες Κ θέσεις ενός
πίνακα Α ακεραίων.
3. Να διαβάζει Κ αριθμούς τους οποίους θα αποθηκεύει στις πρώτες Κ θέσεις ενός
πίνακα Β ακεραίων.
4. Να ελέγχει αν οι δύο πίνακες είναι όμοιοι, δηλαδή αν στις πρώτες Κ θέσεις περιέχουν ακριβώς τους
ίδιους αριθμούς.

67
Ο έλεγχος για το αν οι δύο πίνακες είναι όμοιοι να γίνεται με χρήση ΛΟΓΙΚΗΣ ΣΥΝΑΡΤΗΣΗΣ που θα
έχει τη μορφή: Όμοιοι_πίνακες(πιν1, πιν2, Κ) όπου πιν1, πιν2 οι δύο πίνακες και Κ το πλήθος των
στοιχείων που θα ελεγχθούν.

ΠΡΟΓΡΑΜΜΑ Σύγκριση_πινάκων
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[100], Β[100], κ, i
ΑΡΧΗ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε το πλήθος των στοιχείων των πινάκων (1<=κ<=100):'
ΔΙΑΒΑΣΕ κ
ΜΕΧΡΙΣ_ΟΤΟΥ (Κ >= 1) ΚΑΙ (Κ <= 100)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ κ
ΓΡΑΨΕ 'Δώσε το' ,i, 'ο στοιχείο του 1ου πίνακα:'
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ κ
ΓΡΑΨΕ 'Δώσε το' ,i, 'ο στοιχείο του 2ου πίνακα:'
ΔΙΑΒΑΣΕ Β[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Όμοιοι_πίνακες(Α, Β, κ) = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Οι πίνακες ΕΙΝΑΙ όμοιοι.'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Οι πίνακες ΔΕΝ ΕΙΝΑΙ όμοιοι.'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Όμοιοι_πίνακες(πιν1, πιν2. Κ): ΛΟΓΙΚΗ


ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πιν1[100], πιν2[100], Κ, i
ΛΟΓΙΚΕΣ: βρέθηκε_διαφορά
ΑΡΧΗ
i←1
βρέθηκε_διαφορά ← ΨΕΥΔΗΣ
ΟΣΟ (i<=Κ) ΚΑΙ (βρέθηκε_διαφορά = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ
ΑΝ πιν1[i] <> πιν2[i] ΤΟΤΕ
βρέθηκε_διαφορά ← ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
i←i+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε_διαφορά = ΑΛΗΘΗΣ ΤΟΤΕ
Όμοιοι_πίνακες ← ΨΕΥΔΗΣ
ΑΛΛΙΩΣ
Όμοιοι_πίνακες ← ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΑΛΥΤΕΣ ΑΣΚΗΣΕΙΣ

1. Τι θα τυπώσουν οι παρακάτω εντολές;

Α ← 10
Β←5
ΚΑΛΕΣΕ διαδ(Α, Β)
ΓΡΑΨΕ Α, Β

68
ΔΙΑΔΙΚΑΣΙΑ διαδ(Γ, Δ)

Α←0
Β←0
ΓΡΑΨΕ Α, Β

Α. 10, 5 Β. 10, 5 Γ. 0, 0 Δ. 0, 0
0, 0 10, 5 0, 0 10, 5

2. Δίνεται το παρακάτω πρόγραμμα (όχι ολοκληρωμένο):

ΠΡΟΓΡΑΜΜΑ Σκελετός
ΣΤΑΘΕΡΕΣ
π = 3.1415
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α, Β
ΠΡΑΓΜΑΤΙΚΕΣ: Γ, Δ
ΧΑΡΑΚΤΗΡΕΣ: Ε
ΑΡΧΗ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
!====================================
ΔΙΑΔΙΚΑΣΙΑ Διαδικασία_Σκελετός (όρισμα1, όρισμα2)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: όρισμα1
ΧΑΡΑΚΤΗΡΕΣ: όρισμα2
ΑΡΧΗ

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
!====================================
ΣΥΝΑΡΤΗΣΗ Συνάρτηση_Σκελετός (όρισμα1, όρισμα2): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: όρισμα1, όρισμα2
ΑΡΧΗ

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

Ποιες από τις παρακάτω εντολές μπορούν να χρησιμοποιηθούν στο κυρίως πρόγραμμα και γιατί:

1. Συνάρτηση_Σκελετός (Α, Β)
2. Ε ← Συνάρτηση_Σκελετός (Α, Β)
3. Δ ← Συνάρτηση_Σκελετός (Α, Β)
4. Διαδικασία_Σκελετός (Β, Δ)
5. Δ ← Διαδικασία_Σκελετός (Β, Δ)
6. ΚΑΛΕΣΕ Διαδικασία_Σκελετός (Β, Δ)
7. ΓΡΑΨΕ Συνάρτηση_Σκελετός (Α, Β)
8. Δ ← 5 * Συνάρτηση_Σκελετός (Α, Β)^2
9. ΚΑΛΕΣΕ Διαδικασία_Σκελετός (Β, Ε)
10. ΚΑΛΕΣΕ Διαδικασία_Σκελετός (Β, Ε, Α)
11. Δ ← Συνάρτηση_Σκελετός (Α, Α_Μ (Γ) )

3. Να σχηματίσετε τον πίνακα τιμών του παρακάτω αλγορίθμου. Τι θα εκτυπωθεί;

ΠΡΟΓΡΑΜΜΑ Κλήσεις_Υποπρογραμμάτων
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α, Β

69
ΠΡΑΓΜΑΤΙΚΕΣ : ΜΟ, Γ
ΑΡΧΗ
Α←1
Β ← 10
Γ ← 31.6
ΚΑΛΕΣΕ Πράξεις (Α, Γ)
ΚΑΛΕΣΕ Πράξεις (Β, Γ)
ΓΡΑΨΕ Α, Β, Γ
Γ ← Γ^2 + Α* Β
Α ← Α + Τιμή (Γ)
ΓΡΑΨΕ Α, Β, Γ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Πράξεις (αριθμός1, αριθμός2)


ΣΤΑΘΕΡΕΣ
Χ = 13.2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αριθμός1
ΠΡΑΓΜΑΤΙΚΕΣ : αριθμός2
ΑΡΧΗ
αριθμός1 ← Τιμή (αριθμός2)
αριθμός2 ← αριθμός2 - Χ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ Τιμή (Χ): ΑΚΕΡΑΙΗ


ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ : Χ
ΑΚΕΡΑΙΕΣ: εκτίμηση
ΑΡΧΗ
εκτίμηση ← Α_Μ (Τ_Ρ (Χ)) + 1
Τιμή ← εκτίμηση
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Κυρίως Διαδικασία Συνάρτηση


πρόγραμμα
Α Β Γ αριθμός1 αριθμός2 εκτίμηση Χ
Κυρίως πρόγραμμα 1 10 31.6
1η κλήση διαδικασίας
Κλήση συνάρτησης 31.6
Εκτέλεση συνάρτησης
Επιστροφή στη διαδικασία
Εκτέλεση διαδικασίας
Επιστροφή στο κυρίως 18.4
πρόγραμμα
2η κλήση διαδικασίας 18.4
Κλήση συνάρτησης
Εκτέλεση συνάρτησης
Επιστροφή στη διαδικασία 5
Εκτέλεση διαδικασίας 5.2
Επιστροφή στο κυρίως
πρόγραμμα
Εκτέλεση κύριου
προγράμματος
Κλήση συνάρτησης 57.04

70
Εκτέλεση συνάρτησης
Επιστροφή στο κυρίως 14
πρόγραμμα και τερματισμός

4. Να σχηματίσετε τον πίνακα τιμών του παρακάτω αλγορίθμου. Τι θα εκτυπωθεί;

ΠΡΟΓΡΑΜΜΑ Πίνακας_Τιμών1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α, Β, Γ
ΑΡΧΗ
Α←3
Β ← 13
Γ←2
ΓΡΑΨΕ Α, Β, Γ
ΚΑΛΕΣΕ Επεξεργασία_Τιμών2 (Β, Γ)
ΓΡΑΨΕ Α, Β, Γ
ΚΑΛΕΣΕ Επεξεργασία_Τιμών2 (Γ, Α)
ΓΡΑΨΕ Α, Β, Γ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Επεξεργασία_Τιμών2 (αριθμός1, αριθμός2)


ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αριθμός1, αριθμός2
ΑΡΧΗ
αριθμός1 ← αριθμός1 DIV 2
αριθμός2 ← αριθμός2 ^3
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Κυρίως πρόγραμμα Υποπρόγραμμα


Α Β Γ αριθμός1 αριθμός2
Κυρίως πρόγραμμα
1η κλήση διαδικασίας
Εκτέλεση διαδικασίας
Επιστροφή στο κυρίως πρόγραμμα
2η κλήση διαδικασίας
Εκτέλεση διαδικασίας
Επιστροφή στο κυρίως πρόγραμμα

Στην 1η εντολή ΓΡΑΨΕ θα εκτυπωθούν οι τιμές:


Στην 2η εντολή ΓΡΑΨΕ θα εκτυπωθούν οι τιμές:
Στην 3η εντολή ΓΡΑΨΕ θα εκτυπωθούν οι τιμές:

5. Να χρησιμοποιηθεί το κατάλληλο υποπρόγραμμα (συνάρτηση ή διαδικασία) το οποίο θα δέχεται έναν


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

6. Να γραφεί διαδικασία η οποία θα διαβάζει αριθμούς μέχρι να δοθεί σαν είσοδος το 0. Η διαδικασία θα
υπολογίζει το πλήθος των θετικών και των αρνητικών αριθμών.

7. Χρησιμοποιώντας την κατάλληλη μορφή υποπρογράμματος να υλοποιήσετε τον αλγόριθμο εύρεσης


στοιχείου χ σε πίνακα Π[100] πραγματικών αριθμών. Το αποτέλεσμα θα είναι Αληθής ή Ψευδής.

71
8. Να γραφεί υποπρόγραμμα που να διαβάζει τις τιμές Ν θετικών αριθμών, να υπολογίζει και να εμφανίζει
το μέσο όρο τους. Στο κυρίως πρόγραμμα θα ορίζεται το πλήθος Ν των αριθμών κάνοντας έλεγχο
δεδομένων (θετική τιμή).

9. Να γραφεί υποπρόγραμμα το οποίο να μετατρέπει οποιοδήποτε ποσό από Δραχμές σε Ευρώ. Στο κυρίως
πρόγραμμα θα εισάγεται η τιμή του ποσού σε Δραχμές το οποίο θα πρέπει να είναι θετικός αριθμός και να
εμφανίζεται η τιμή του ποσού σε Ευρώ.

10. Μια εταιρία κάνει κρατήσεις 16% επί του μισθού των 30 υπαλλήλων της. Να γίνει πρόγραμμα που θα
διαβάζει τον μισθό των 30 υπαλλήλων, θα καλεί συνάρτηση που θα υπολογίζει τις κρατήσεις των
υπαλλήλων, και θα εμφανίζει το όνομα του κάθε υπαλλήλου και το καθαρό ποσό που θα εισπράξει αυτός
τελικά. Να γραφεί επίσης και η συνάρτηση που θα δέχεται το μισθό του υπαλλήλου και θα υπολογίζει τις
κρατήσεις του.

11. Σε ένα Λύκειο, υπάρχουν 500 μαθητές και μαθήτριες σε κάθε τάξη. Να γραφεί πρόγραμμα το οποίο να
εισάγει σε ξεχωριστούς πίνακες, τους μαθητές κάθε τάξης και τον μέσο όρο του κάθε μαθητή, ( 3 πίνακες
για τους μέσους όρους και 3 για τα ονοματεπώνυμα τους). Μετά να εμφανισθούν οι δύο καλύτεροι μαθητές
από κάθε τάξη με τα ονοματεπώνυμα τους. (Να γίνει χρήση διαδικασιών τόσο για την εισαγωγή των
δεδομένων, όσο και για την ταξινόμηση τους.)

12. Μια εταιρεία καταγράφει τις φορτώσεις των προϊόντων της σε κιλά που εκτελεί την εβδομάδα για κάθε
έναν από τους 600 πελάτες της σε διάφορους προορισμούς. Δημιουργήστε πρόγραμμα το οποίο:
α. καταχωρεί σ' ένα πίνακα ΠΕΛ[600] τα ονόματα των πελατών της
β. καταχωρεί σ' ένα πίνακα ΦΟΡΤ[600,52] τα κιλά της κάθε φόρτωσης για τον αντίστοιχο πελάτη την
αντίστοιχη εβδομάδα του έτους
γ. υπολογίζει και εμφανίζει το ετήσιο κόστος της μεταφορικής εταιρείας για κάθε πελάτη καλώντας το
υποπρόγραμμα ΧΡΕΩΣΗ. Η χρέωση της μεταφορικής εταιρείας εξαρτάται από τα κιλά της κάθε φόρτωσης
και είναι ως εξής: φορτίο από 1 μέχρι 50 κιλά κοστίζει 25 € ενώ από 51 έως 1500 κιλά κοστίζουν 0,06 € για
κάθε κιλό μεγαλύτερο των 50 και η φόρτωση θα εκτελεστεί με μικρό αυτοκίνητο. Τα βάρη μεγαλύτερα των
1500 κιλών μεταφέρονται με νταλίκα και κοστίζουν 0,045 €/κιλό από 1501 μέχρι 12.000 κιλά ενώ τα
επιπλέον κιλά από τα 12.000 κοστίζουν 0,035 €/κιλό.
δ. να εκτυπώνεται μια λίστα με τα ονόματα των πελατών και τον αριθμό της εβδομάδας με τη μεγαλύτερη
και τη μικρότερη σε κιλά φόρτωση καλώντας ένα υποπρόγραμμα ΜΙΝ_ΜΑΧ που να δέχεται ως εισόδους
τον πίνακα ΦΟΡΤ[600,52] και τον αριθμό που αντιστοιχεί στον πελάτη και να εμφανίζει ποια εβδομάδα
του χρόνου έκανε την μεγαλύτερη και ποια τη μικρότερη φόρτωση.

13. Το τμήμα Πληροφορικής του Οικονομικού Πανεπιστημίου Αθηνών διατηρεί μια βάση δεδομένων με τα
στοιχεία των φοιτητών του (μέγιστος αριθμός φοιτητών 200). Να αναπτύξετε πρόγραμμα με τη χρήση
υποπρογραμμάτων το οποίο:
α. Να διαβάζει το πλήθος των φοιτητών του τμήματος, το όνομα και επώνυμο των φοιτητών. Ακόμη, για
κάθε φοιτητή πρέπει να εισάγεται από το χρήστη η βαθμολογία του στα 12 μαθήματα του πρώτου έτους
φοίτησης. Σημειώνεται ότι πρέπει να εισαχθούν από το χρήστη και τα ονόματα των 12 μαθημάτων σε έναν
ξεχωριστό μονοδιάστατο πίνακα.
β. Να υπολογίζει το μέσο όρο βαθμολογίας κάθε φοιτητή και να εκτυπώνει τον γενικό μέσο όρο όλων των
φοιτητών του πρώτου έτους.
γ. Να διαβάζει το όνομα ενός φοιτητή και να εκτυπώνει το μέσο όρο της βαθμολογίας του.
δ. Να εντοπίζει και να εκτυπώνει το όνομα του φοιτητή που έχει το μεγαλύτερο μέσο όρο.
ε. Να εντοπίζει ποιοι είναι οι 3 φοιτητές που δικαιούνται υποτροφία από το ΙΚΥ.

72

You might also like