Επιλογή Σελίδας

Θέμα Δ, 2017, Ημερήσια

ΘΕΜΑ Δ
Σε ένα σεμινάριο διάρκειας 6 μηνών, τηρούνται απουσίες ανά μήνα για κάθε συμμετέχοντα. Στο σεμινάριο συμμετέχουν 50 επιμορφούμενοι και ο καθένας έχει ένα μοναδικό αλφαριθμητικό κωδικό, που αποθηκεύεται στον πίνακα ΚΩΔ[50]. Οι απουσίες κάθε συμμετέχοντα ανά μήνα σεμιναρίου αποθηκεύονται σε δισδιάστατο πίνακα απουσιών ΑΠ[50,6]. Η γραμματεία τηρεί το σύνολο των απουσιών για τα δύο τρίμηνα του εξαμήνου σε πίνακα ΑΠΤΡ[50,2], όπου η πρώτη στήλη προσδιορίζει το πρώτο τρίμηνο και η δεύτερη το δεύτερο τρίμηνο για κάθε συμμετέχοντα.
Να κατασκευάσετε πρόγραμμα σε ΓΛΩΣΣΑ αποτελούμενο από υποπρογράμματα ως εξής:
Δ1. Διαδικασία ΕΙΣ, που διαβάζει τον κωδικό του κάθε επιμορφούμενου, τις απουσίες του ανά μήνα σεμιναρίου και ενημερώνει τον πίνακα ΚΩΔ και τον πίνακα ΑΠ κατάλληλα (θεωρείστε ότι τα δεδομένα εισάγονται σωστά). Μονάδες 2
Δ2. Συνάρτηση ΑΝΑΖ, που δέχεται τον κωδικό ενός επιμορφούμενου και τον πίνακα των κωδικών ΚΩΔ και επιστρέφει τον αριθμό της γραμμής που βρίσκεται ο κωδικός που αναζητείται. Αν ο κωδικός δεν βρεθεί, επιστρέφει 0. Μονάδες 4
Δ3. Συνάρτηση ΣΥΝΑΠ, που υπολογίζει το σύνολο απουσιών για έναν επιμορφούμενο σε ένα τρίμηνο. Η συνάρτηση δέχεται τον αριθμό της γραμμής που προσδιορίζει τον επιμορφούμενο στον πίνακα ΑΠ, τον πίνακα των απουσιών και τον αριθμό του πρώτου μήνα του τριμήνου (για παράδειγμα, 1 για το πρώτο τρίμηνο, 4 για το δεύτερο τρίμηνο) και επιστρέφει το σύνολο των απουσιών του τριμήνου.
Μονάδες 3
Δ4. Κύριο πρόγραμμα το οποίο:
α) περιέχει τμήμα δηλώσεων. (μονάδα 1)
β) καλεί τη διαδικασία ΕΙΣ για είσοδο δεδομένων. (μονάδα 1)
γ) για κάθε επιμορφούμενο υπολογίζει το σύνολο των απουσιών των δύο
τριμήνων καλώντας τη συνάρτηση ΣΥΝΑΠ και ενημερώνει τον πίνακα
ΑΠΤΡ. (μονάδες 3)
δ) διαβάζει επαναληπτικά έναν κωδικό. Για τον συγκεκριμένο κωδικό καλείται η συνάρτηση ΑΝΑΖ. Αν ο κωδικός αντιστοιχεί σε επιμορφούμενο, να εμφανίζει κατάλληλο μήνυμα δυνατότητας ή μη συμμετοχής του στις εξετάσεις. Στις εξετάσεις δικαιούνται συμμετοχής οι επιμορφούμενοι που έχουν λιγότερες από 10 απουσίες σε καθένα από τα δύο τρίμηνα. Αν ο κωδικός δεν βρεθεί, εμφανίζει μήνυμα «ΔΕΝ ΒΡΕΘΗΚΕ Ο ΚΩΔΙΚΟΣ». Η διαδικασία επαναλαμβάνεται μέχρι να δοθεί ως κωδικός η λέξη ΤΕΛΟΣ. (μονάδες 6)
Μονάδες 11

Θέμα Δ, 2008, Επαναληπτικές, Ημερήσια

Στο άθλημα των 110 μέτρων μετ’ εμποδίων, στους δύο ημιτελικούς αγώνες συμμετέχουν δέκα έξι (16) αθλητές (8 σε κάθε ημιτελικό). Σύμφωνα με τον κανονισμό στον τελικό προκρίνεται ο πρώτος αθλητής κάθε ημιτελικού. Η οκτάδα του τελικού συμπληρώνεται με τους αθλητές που έχουν τους έξι (6) καλύτερους χρόνους απ’ όλους τους υπόλοιπους συμμετέχοντες. Να θεωρήσετε ότι δεν υπάρχουν αθλητές με ίδιους χρόνους. Να γράψετε πρόγραμμα στη «ΓΛΩΣΣΑ» το οποίο:
α. περιλαμβάνει το τμήμα δηλώσεων. Μονάδες 2
β. καλεί τη διαδικασία ΕΙΣΟ∆ΟΣ για κάθε ημιτελικό ξεχωριστά. Η διαδικασία διαβάζει το όνομα του αθλητή και τoν χρόνο του (με ακρίβεια δεκάτου του δευτερολέπτου). Μονάδες 2
γ. καλεί τη διαδικασία ΤΑΞΙΝΟΜΗΣΗ για κάθε ημιτελικό ξεχωριστά. Η διαδικασία ταξινομεί τους αθλητές ως προς τον χρόνο τους με αύξουσα σειρά. Μονάδες 2
δ. δημιουργεί τον πίνακα ΟΝ με τα ονόματα και τον πίνακα ΧΡ με τους αντίστοιχους χρόνους των αθλητών που προκρίθηκαν στον τελικό Μονάδες 6
ε. εμφανίζει τα ονόματα και τους χρόνους των αθλητών που θα λάβουν μέρος στον τελικό. Μονάδες 2
Να γράψετε
α. τη διαδικασία ΕΙΣΟ∆ΟΣ. Μονάδες 2
β. τη διαδικασία ΤΑΞΙΝΟΜΗΣΗ. Μονάδες 4

ΛΥΣΗ

(περισσότερα…)

ΔΣ1. Κεφάλαιο 10. Μετατροπή νομισμάτων

Να γράψεις ένα πρόγραμμα το οποίο διαβάζει την τιμή βιβλίων σε ΕΥΡΩ και μετατρέπει τις τιμές τους σε Δραχμές, Γερμανικά Μάρκα, Γαλλικά Φράγκα και Ιταλικές Λιρέτες. Να χρησιμοποιήσεις για τις μετατροπές τις τρέχουσες ισοτιμίες των νομισμάτων.

ΛΥΣΗ (περισσότερα…)

ΔΣ3. Κεφάλαιο 10. Επικρατούσα τιμή στοιχείων πίνακα

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

ΛΥΣΗ

! εύρεση της τιμής που εμφανίζεται συχνότερα σε έναν πίνακα
ΠΡΟΓΡΑΜΜΑ Επικρατούσα_Τιμή
ΜΕΤΑΒΛΗΤΕΣ  
ΑΚΕΡΑΙΕΣ: ΣΤΟΙΧΕΙΑ[100], ΠΛΗΘΟΣ, ΤΙΜΗ[100], ΣΥΧΝΟΤΗΤΑ[100], ΘΕΣΗ
ΑΡΧΗ 
ΚΑΛΕΣΕ Εισαγωγή_δεδ(ΣΤΟΙΧΕΙΑ, ΠΛΗΘΟΣ)
ΚΑΛΕΣΕ Ταξινόμησε(ΣΤΟΙΧΕΙΑ, ΠΛΗΘΟΣ)
ΚΑΛΕΣΕ Συχνότητα_στοιχείων(ΣΤΟΙΧΕΙΑ, ΠΛΗΘΟΣ, ΤΙΜΗ, ΣΥΧΝΟΤΗΤΑ)
ΘΕΣΗ<-- Θέση_μέγιστο_πίνακα(ΣΥΧΝΟΤΗΤΑ, ΠΛΗΘΟΣ)
! απαιτείται επέκταση για περισσότερες τιμές με ίδια μέγιστη συχνότητα
ΓΡΑΨΕ 'Επικρατούσα τιμή =', ΤΙΜΗ[ΘΕΣΗ] 
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

! εισαγωγή στοιχείων σε πίνακα ίσα με πλήθος
ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_δεδ(στοιχεία, πλήθος)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, πλήθος, στοιχεία[100]
ΑΡΧΗ
! Εισαγωγή στοιχείων 
ΓΡΑΨΕ 'Δώσε το πλήθος των αριθμών (μέγιστο 100)' 
ΔΙΑΒΑΣΕ πλήθος 
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλήθος 
    ΓΡΑΨΕ 'Δώσε έναν αριθμό' 
    ΔΙΑΒΑΣΕ στοιχεία[i] 
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ Ταξινόμησε(Πίνακας, Ν) 
!Ταξινόμηση των στοιχείων του πίνακα ('έξυπνη')
ΜΕΤΑΒΛΗΤΕΣ 
ΑΚΕΡΑΙΕΣ:I,Ν1,Τ,Βοηθητική, Πίνακας[100], Ν 
ΑΡΧΗ 
Ν1 <-- Ν 
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ 
    Τ <-- 0 
    ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ Ν1-1 
        ΑΝ Πίνακας[I] > Πίνακας[I+1] ΤΟΤΕ
           Βοηθητική <-- Πίνακας[I] 
           Πίνακας[I] <-- Πίνακας[I+1] 
           Πίνακας[I+1] <-- Βοηθητική 
           Τ <-- I 
        ΤΕΛΟΣ_ΑΝ 
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ 
    Ν1 <-- Τ 
ΜΕΧΡΙΣ_ΟΤΟΥ Τ=0 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

! δέχεται ως είσοδο ΤΑΞΙΝΟΜΗΜΕΝΟ πίνακα με στοιχεία ίσα με πλήθος
! καταχωρεί σε 2 νέους παράλληλους πίνακες τις μοναδικές τιμές στον πίνακα τιμή
! και τη συχνότητα εμφάνισης τους στον πίνακα συχνότητα
ΔΙΑΔΙΚΑΣΙΑ Συχνότητα_στοιχείων(στοιχεία, πλήθος, τιμή, συχνότητα)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: στοιχεία[100], πλήθος, i, j, συχνότητα[100], τιμή[100]
ΑΡΧΗ
! Αρχικοποίηση πίνακα-μετρητή συχνότητα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλήθος
    συχνότητα[i]<--0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

τιμή[1]<-- στοιχεία[1]
συχνότητα[1] <-- 1
j<--1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ πλήθος
    ΑΝ στοιχεία[i] <> στοιχεία[i-1] ΤΟΤΕ
       j<--j+1
       τιμή[j]<--στοιχεία[i]
    ΤΕΛΟΣ_ΑΝ
    συχνότητα[j] <-- συχνότητα[j] + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

! επιστρέφει τη θέση του μέγιστου στοιχείου ενός πίνακα
ΣΥΝΑΡΤΗΣΗ Θέση_μέγιστο_πίνακα(συχνότητα,πλήθος) : ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: συχνότητα[100], θέση, πλήθος, max, i
ΑΡΧΗ
θέση<--1
max<--συχνότητα[1]
ΓΙΑ i ΑΠΟ 2 ΜΈΧΡΙ πλήθος
    ΑΝ συχνότητα[i]> max ΤΌΤΕ
       max<--συχνότητα[i]
       θέση<--i
    ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Θέση_μέγιστο_πίνακα<-- θέση
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΣ4. Κεφάλαιο 10. Υπολογισμών ολικής αντίστασης / αγωγιμότητας, ΔΕ5 με τη χρήση υποπρογραμμάτων

Να γράψεις το πρόγραμμα ΔΕ5 του κεφαλαίου 8 που υπολογίζει τη συνολική χωρητικότητα πυκνωτών και τη συνολική αντίσταση αντιστάσεων με τη χρήση υποπρογραμμάτων.

ΛΥΣΗ

ΠΡΟΓΡΑΜΜΑ ΟΛΙΚΗ_R_C
 ΜΕΤΑΒΛΗΤΕΣ
 ΑΚΕΡΑΙΕΣ: ΕΠΙΛΟΓΗ, ΠΛΗΘΟΣ
 ΠΡΑΓΜΑΤΙΚΕΣ: ΟΛΙΚΗ, ΜΕΓΕΘΟΣ[100] ! άθροιση μέχρι 100 στοιχείων
 ΛΟΓΙΚΕΣ: Άθροισμα_Αντιστρόφων
 ΑΡΧΗ
 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
     ΚΑΛΕΣΕ Μενού(ΕΠΙΛΟΓΗ)
     ΑΝ ΕΠΙΛΟΓΗ = 5 ΤΟΤΕ 
        ΓΡΑΨΕ 'ΕΞΟΔΟΣ'
     ΑΛΛΙΩΣ
        ΚΑΛΕΣΕ Εισαγωγή_Δεδ(ΜΕΓΕΘΟΣ, ΠΛΗΘΟΣ)
        ΑΝ ΕΠΙΛΟΓΗ = 1 ΤΟΤΕ                  ! αντιστάσεις σε σειρά
           Αθροισμα_Αντιστρόφων <-- ΨΕΥΔΗΣ
        ΑΛΛΙΩΣ_ΑΝ ΕΠΙΛΟΓΗ=2 ΤΟΤΕ             ! αντιστάσεις παράλληλα
           Άθροισμα_Αντιστρόφων <-- ΑΛΗΘΗΣ
        ΑΛΛΙΩΣ_ΑΝ ΕΠΙΛΟΓΗ = 3 ΤΟΤΕ           ! πυκνωτές σε σειρά
           Άθροισμα_Αντιστρόφων <-- ΑΛΗΘΗΣ
        ΑΛΛΙΩΣ_ΑΝ ΕΠΙΛΟΓΗ=4 ΤΟΤΕ             ! πυκνωτές παράλληλα
           Άθροισμα_Αντιστρόφων <-- ΨΕΥΔΗΣ
        ! Προαιρετικά, έλεγχος εισόδου.
        ΑΛΛΙΩΣ
           ΓΡΑΨΕ 'Επίλεξε από 1 ως 5'
        ΤΕΛΟΣ_ΑΝ
        ΟΛΙΚΗ<-- Ολ_Μέγεθος(Άθροισμα_Αντιστρόφων, ΜΕΓΕΘΟΣ, ΠΛΗΘΟΣ)
        ΚΑΛΕΣΕ Εμφάνιση_αποτ(ΕΠΙΛΟΓΗ,ΟΛΙΚΗ)
     ΤΕΛΟΣ_ΑΝ
 ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠΙΛΟΓΗ = 5
 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Μενού(επιλογή)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:επιλογή
ΑΡΧΗ
  ΓΡΑΨΕ '1. Αντιστάσεις σε Σειρά'
  ΓΡΑΨΕ '2. Αντιστάσεις Παράλληλα'
  ΓΡΑΨΕ '3. Πυκνωτές σε Σειρά'
  ΓΡΑΨΕ '4. Αντιστάσεις σε Σειρά'
  ΓΡΑΨΕ '5. Έξοδος'
  ΓΡΑΨΕ 'Επίλεξε υπολογισμό (1-5)'
  ΔΙΑΒΑΣΕ επιλογή
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

ΣΥΝΑΡΤΗΣΗ Ολ_Μέγεθος(Αντίστροφοι, στοιχείο, πλήθος): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πλήθος, i
ΠΡΑΓΜΑΤΙΚΕΣ: στοιχείο[100], Sum
ΛΟΓΙΚΕΣ: Αντίστροφοι
ΑΡΧΗ
Sum<--0
ΑΝ Αντίστροφοι = ΨΕΥΔΗΣ ΤΟΤΕ 
   ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλήθος
       Sum <-- Sum + στοιχείο[i]
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
   ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλήθος
       Sum <-- Sum + 1 / στοιχείο[i]
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ

Ολ_Μέγεθος <-- Sum
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

 

ΔΣ5. Κεφάλαιο 10. Πρόσθεση κλασμάτων

Να γραφεί πρόγραμμα το οποίο να προσθέτει δύο κλάσματα. Το πρόγραμμα δέχεται τέσσερις ακεραίους αριθμούς, τους παρονομαστές και τους αριθμητές των δύο κλασμάτων, υπολογίζει και εκτυπώνει τον αριθμητή και τον παρονομαστή του αποτελέσματος. Α/Β + Γ/Δ = Ε/Ζ

Υπόδειξη: Ενώ το πρόβλημα αρχικά φαίνεται απλό, η υλοποίησή του είναι αρκετά πολύπλοκη. Αρχικά πρέπει να απλοποιηθούν τα κλάσματα, στη συνέχεια να γίνουν ομώνυμα, να προστεθούν οι αριθμητές και τέλος να απλοποιηθεί το αποτέλεσμα. Οι διαδικασίες αυτές απαιτούν τον υπολογισμό του ΜΚΔ (για την απλοποίηση) και του ΕΚΠ για τη μετατροπή των κλασμάτων σε ομώνυμα. Να χρησιμοποιήσετε τις συναρτήσεις της άσκησης ΔΕ1.

ΛΥΣΗ (περισσότερα…)

ΔΣ6. Κεφάλαιο 10. Αναζήτηση ριζών εξίσωσης, μέθοδος της διχοτόμησης (παράγραφος 4.3)

Δίνεται η εξίσωση e^x – 2x – 1 = 0. Να γραφεί πρόγραμμα το οποίο να βρίσκει μια ρίζα της εξίσωσης αυτής στο διάστημα [1,2] με τη μέθοδο της διχοτόμησης, όπως περιγράφηκε στην παράγραφο 4.3 του βιβλίου σου.

…» Ο τρόπος που λειτουργεί η δυαδική αναζήτηση είναι ανάλογος με αυτόν της μεθόδου της διχοτόμησης. Η μέθοδος της διχοτόμησης (ή του Bolzano) χρησιμοποιείται για την εύρεση μιας ρίζας της εξίσωσης f(x)=0 στο διάστημα [a, b]. Ως γνωστό, στο διάστημα αυτό υπάρχει μία τουλάχιστον ρίζα, αν ισχύει f(a).f(b)<0 (για την ακρίβεια μπορεί να υπάρχει περιττός αριθμός ριζών). Με τη μέθοδο της διχοτόμησης βρίσκεται ένα σημείο x1 ( = (a+b)/2) στο μέσο του διαστήματος [a, b] και εξετάζεται, αv f(a).f(x1)<0. Αν ναι, τότε η ρίζα υπάρχει στο διάστημα [a, x1], αλλιώς στο [x1, b]. Στη συνέχεια βρίσκεται το μέσο x2 του υποδιαστήματος που υπάρχει η ρίζα και επαναλαμβάνονται τα ίδια. Έτσι σε κάθε επανάληψη εξαιρείται από την έρευνα το μισό διάστημα και προφανώς η ακολουθία τιμών x1, x2,… συγκλίνει προς τη ρίζα της εξίσωσης. Η διαδικασία τερματίζεται, όταν η προσέγγιση της ρίζας θεωρείται ικανοποιητική.»

ΛΥΣΗ (περισσότερα…)

Παράδειγμα 1. Κεφάλαιο 10. Βιβλίο, Αξιολόγηση αποτελεσμάτων μαθητών Γ’ Λυκείου

Ας μελετήσουμε κατ’ αρχήν το πρόβλημα που μας απασχόλησε στο πρώτο κεφάλαιο του βιβλίου, την αξιολόγηση των αποτελεσμάτων των μαθητών Γ’ Λυκείου στα μαθήματα ειδικότητας.
Το σύνθετο αυτό πρόβλημα για να αντιμετωπισθεί πιο εύκολα πρέπει να αναλυθεί σε επιμέρους μικρότερα προβλήματα.
Συγκεκριμένα τα τρία βασικά διαφορετικά τμήματα είναι:
l Εισαγωγή δεδομένων
l Επεξεργασία δεδομένων
l Εκτύπωση αποτελεσμάτων
Τα τρία αυτά τμήματα μπορούν να αναλυθούν περισσότερο. Συγκεκριμένα:
Εισαγωγή δεδομένων
l Καταχώριση δεδομένων
l Έλεγχος δεδομένων
Επεξεργασία δεδομένων
l Υπολογισμός μέσης τιμής
l Υπολογισμός τυπικής απόκλισης
l Κατανομή συχνοτήτων
l Δημιουργία γραφικών παραστάσεων
Εκτύπωση αποτελεσμάτων
l Εκτύπωση πινάκων συχνοτήτων
l Εκτύπωση γραφικών παραστάσεων

Όπως φαίνεται το αρχικό πρόβλημα διασπάστηκε σε αρκετά απλούστερα υποπροβλήματα. Η δημιουργία λοιπόν του τελικού προγράμματος ανάγεται στη δημιουργία των επί μέρους τμημάτων προγραμμάτων ή ενοτήτων και τη σύνδεση αυτών μεταξύ τους. Μερικά από αυτά τα τμήματα, όπως ο υπολογισμός της μέσης τιμής ή της τυπικής απόκλισης, έχουν ήδη αντιμετωπιστεί στο προηγούμενο κεφάλαιο, που σημαίνει ότι μπορούμε να εκμεταλλευτούμε τα προγράμματα που ήδη έχουμε γράψει μειώνοντας έτσι την εργασία για την επίλυση του προβλήματος. Η παράσταση της ανάλυσης του προβλήματος μπορεί να γίνει γραφικά με το διάγραμμα του σχήματος 10.1. Η έννοια του τμηματικού προγραμματισμού έχει ήδη αποτυπωθεί και σε προηγούμενα κεφάλαια. Για παράδειγμα, στο πρόγραμμα υπολογισμού των θερμοκρασιών του προηγούμενου κεφαλαίου (παράδειγμα 3) το τμήμα της εισαγωγής δεδομένων έχει ξεχωρίσει από το τμήμα υπολογισμών σε αντίθεση με τα παραδείγματα 1 και 2 που είναι ενιαία. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο πρόγραμμα, τότε αναφερόμαστε σε υποπρόγραμμα (subprogram).

Παράδειγμα 2. Κεφάλαιο 10. Βιβλίο, Υπολογισμός Εμβαδού κύκλου

Να γραφεί πρόγραμμα το οποίο υπολογίζει το εμβαδό του κύκλου από την ακτίνα του.

Το πρόγραμμα εκτελεί τρεις συγκεκριμένες απλές λειτουργίες.
α) Διαβάζει τα δεδομένα, την ακτίνα η οποία πρέπει να είναι θετικός αριθμός
β) Υπολογίζει το εμβαδό (Ε=πr2)
γ) Τυπώνει το αποτέλεσμα, το εμβαδό, Ε

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

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

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

Το δεύτερο πρέπει να υπολογίζει το εμβαδό και να επιστρέφει την τιμή στο κύριο πρόγραμμα. Το υποπρόγραμμα αυτό παίρνει την τιμή της ακτίνας και επιστρέφει μόνο μία τιμή, την τιμή του Εμβαδού. Μπορεί λοιπόν να υλοποιηθεί με μία συνάρτηση, η οποία επιστρέφει έναν πραγματικό αριθμό. Η συνάρτηση Εμβαδό_κύκλου(R) δέχεται έναν πραγματικό αριθμό και υπολογίζει το εμβαδό που επίσης είναι ένας πραγματικός αριθμός. Το είδος της συνάρτησης, δηλαδή η τιμή που επιστρέφει, δηλώνεται στην αρχή της συνάρτησης.

ΣΥΝΑΡΤΗΣΗ Εμβαδό_κύκλου(R) : ΠΡΑΓΜΑΤΙΚΗ 
ΣΤΑΘΕΡΕΣ 
Π=3.14 
ΜΕΤΑΒΛΗΤΕΣ 
ΠΡΑΓΜΑΤΙΚΕΣ: R 
ΑΡΧΗ 
Εμβαδό_κύκλου <-- Π*R^2 
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 

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

ΔΙΑΔΙΚΑΣΙΑ Εκτύπωση(Αποτέλεσμα) 
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ : Αποτέλεσμα 
ΑΡΧΗ 
ΓΡΑΨΕ 'Το εμβαδό του κύκλου είναι :',Αποτέλεσμα 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 

Το κύριο πρόγραμμα που καλεί όλα τα υποπρογράμματα έχει ως εξής:

ΠΡΟΓΡΑΜΜΑ Παράδειγμα_2 
ΜΕΤΑΒΛΗΤΕΣ 
ΠΡΑΓΜΑΤΙΚΕΣ : R, Εμ 
ΑΡΧΗ
ΚΑΛΕΣΕ Είσοδος_δεδομένων(R) 
Εμ <-- Εμβαδό_κύκλου(R) 
ΚΑΛΕΣΕ Εκτύπωση(Εμ) 
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ 

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

Δώσε την ακτίνα 
10 
Το εμβαδό του κύκλου είναι : 314

Παράδειγμα 3, Κεφάλαιο 10.5.3. Βιβλίο, Πραγματικές και τυπικές παράμετροι

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

ΠΡΟΓΡΑΜΜΑ Παράδειγμα_3 
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Α, Β, Διαφ1, Αθρ1, Διαφ2, Αθρ2
ΑΡΧΗ
Α<--5 
Β<--7 
ΚΑΛΕΣΕ Πράξεις (Α, Β, Διαφ1, Αθρ1) 
Α<--9 
Β<--6 
ΚΑΛΕΣΕ Πράξεις(Α, Β, Διαφ2, Αθρ2) 
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Πράξεις(Χ, Υ, Διαφορά, Άθροισμα) 
ΜΕΤΑΒΛΗΤΕΣ 
ΠΡΑΓΜΑΤΙΚΕΣ : Χ, Υ, Διαφορά, Άθροισμα 
ΑΡΧΗ 
Διαφορά <-- Χ-Υ 
Άθροισμα <-- Χ+Υ 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Οι μεταβλητές Α, Β, Διαφ1, Αθρ1, Διαφ2, Αθρ2 είναι μεταβλητές του προγράμματος Παράδειγμα_3 και αποτελούν τις πραγματικές παραμέτρους, ενώ οι μεταβλητές Χ,Υ, Διαφορά, Άθροισμα είναι μεταβλητές της διαδικασίας Πράξεις, και ονομάζονται τυπικές παράμετροι.

Οι μεταβλητές Α, Β, Διαφ1 καθώς και όλες οι μεταβλητές του προγράμματος Παράδειγμα_3 δεν είναι γνωστές στη διαδικασία Πράξεις και αντίστοιχα όλες οι μεταβλητές της διαδικασίας Πράξεις είναι άγνωστες στο πρόγραμμα Παράδειγμα_3. Τα ονόματα των τυπικών και των πραγματικών παραμέτρων μπορούν να είναι οποιαδήποτε. Αφού είναι ονόματα μεταβλητών σε διαφορετικά τμήματα προγράμματος, είναι υποχρεωτικά διαφορετικές μεταβλητές, άσχετα αν έχουν το ίδιο όνομα. Όλες οι μεταβλητές είναι γνωστές, έχουν ισχύ όπως λέγεται, μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί, ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα.

ΔΕ1. Κεφάλαιο 10. Υπολογισμός Μέγιστου Κοινού Διαιρέτη (ΜΚΔ), Ελάχιστου Κοινού Πολλαπλάσιου (ΕΚΠ)

Να γράψεις πρόγραμμα το οποίο θα διαβάζει δύο αριθμούς, θα υπολογίζει το Μέγιστο Κοινό Διαιρέτη (ΜΚΔ) και το Ελάχιστο Κοινό Πολλαπλάσιο (ΕΚΠ) και τέλος θα τυπώνει τα αποτελέσματα.

Υπόδειξη: Για δύο αριθμούς x, y ισχύει: x∙y = ΜΚΔ(x,y) ∙ ΕΚΠ(x,y)

ΛΥΣΗ (περισσότερα…)