Κυριακή 27 Μαρτίου 2011

Άσκηση : πρόγραμμα + υποπρογράμματα

Ι. Γράψτε συνάρτηση με όνομα Έλεγχος η οποία δέχεται ως
    παραμέτρους δύο πραγματικές τιμές Α, Β και ελέγχει αν
    το Β υπολείπεται του Α τουλάχιστον κατά 13%.
ΙΙ. Γράψτε διαδικασία με όνομα Φίλτρο η οποία δέχεται
     ως παραμέτρους:
       * έναν πραγματικό πίνακα Γ[25],
       * μια πραγματική τιμή Δ,
     και εμφανίζει τους αύξοντες αριθμούς των στοιχείων του
     πίνακα που υπολείπονται του Δ τουλάχιστον κατά 13%.
     Η διαδικασία πρέπει να καλεί με κατάλληλο τρόπο τη
     συνάρτηση Έλεγχος.
ΙΙΙ. Γράψτε πρόγραμμα το οποίο:
      α) Διαβάζει τους μέσους όρους βαθμολογίας των 25
           μαθητών μιας τάξης και τους καταχωρεί σε κατάλληλο
           μονοδιάστατο πίνακα ΠΙΝ,
      β)  Για κάθε τιμή της μεταβλητής ΒΑΘΜΟΣ από το 17.2
            μέχρι και το 20.0, με ενδιάμεσο βήμα μεταβολής το
            0.1, υπολογίζει και εμφανίζει τους αύξοντες αριθμούς
            των στοιχείων του  πίνακα που υπολείπονται του
            ΒΑΘΜΟΣ  τουλάχιστον κατά 13%.
      Το πρόγραμμα πρέπει να καλεί με κατάλληλο τρόπο τη
       διαδικασία Φίλτρο.

Λύση

        ΠΡΟΓΡΑΜΜΑ ΑΣΚ
        ΜΕΤΑΒΛΗΤΕΣ
                ΑΚΕΡΑΙΕΣ: κ
                ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ[25], ΒΑΘΜΟΣ
        ΑΡΧΗ
                ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 25
                      ΔΙΑΒΑΣΕ ΜΟ[κ]
                ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                ΓΙΑ ΒΑΘΜΟΣ ΑΠΟ 17.2 ΜΕΧΡΙ 20.0 ΜΕ_ΒΗΜΑ 0.1
                      ΚΑΛΕΣΕ Φίλτρο(ΜΟ, ΒΑΘΜΟΣ)
                ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
        ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


        ΣΥΝΑΡΤΗΣΗ Έλεγχος(Α, Β) : ΛΟΓΙΚΗ
        ΜΕΤΑΒΛΗΤΕΣ
               ΠΡΑΓΜΑΤΙΚΕΣ: Α, Β, ΠΟΣ
        ΑΡΧΗ
               ΠΟΣ <-- 100*(Α-Β)/Α
               ΑΝ ΠΟΣ >= 13 ΤΟΤΕ
                     Έλεγχος <-- ΑΛΗΘΗΣ
               ΑΛΛΙΩΣ
                     Έλεγχος <-- ΨΕΥΔΗΣ
               ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


        ΔΙΑΔΙΚΑΣΙΑ Φίλτρο(Γ, Δ)
        ΜΕΤΑΒΛΗΤΕΣ
                 ΠΡΑΓΜΑΤΙΚΕΣ: Γ[25], Δ, ΠΟΣ
                 ΑΚΕΡΑΙΕΣ: κ, Φ
                 ΛΟΓΙΚΕΣ: ΑΠ
        ΑΡΧΗ
                 Φ <-- 0
                 ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 25
                       ΑΠ <-- Έλεγχος(Δ, Γ[κ])
                       ΑΝ ΑΠ = ΑΛΗΘΗΣ ΤΟΤΕ
                             ΓΡΑΨΕ κ
                       ΤΕΛΟΣ_ΑΝ
                 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                 ΑΝ Φ = 0 ΤΟΤΕ
                       ΓΡΑΨΕ 'Δεν υπάρχει κανένας μαθητής που'
                       ΓΡΑΨΕ 'ο ΜΟ του να υπολείπεται του', Δ
                       ΓΡΑΨΕ 'τουλάχιστον κατά 13%'
                 ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


        

Σάββατο 26 Μαρτίου 2011

Άσκηση : Εμφωλευμένα Για + βοηθητικός πίνακας

Γράψτε αλγόριθμο που εμφανίζει το αποτέλεσμα
της λογικής παράστασης
  ΟΧΙ Α ΚΑΙ (ΟΧΙ Β Ή  Γ) Ή ΟΧΙ Δ

Λύση

        Αλγόριθμος ΑΣΚ
        Τιμ[1] <-- Αληθής
        Τιμ[2] <-- Ψευδής
        Για κ από 1 μέχρι 2
            Για λ από 1 μέχρι 2
               Για μ από 1 μέχρι 2
                     Για ν από 1 μέχρι 2
                          Εμφάνισε 'Α = ', Τιμ[κ], ' Β = ', Τιμ[λ]
                          Εμφάνισε 'Γ = ', Τιμ[μ], ' Δ = ', Τιμ[ν]
                          Β1 <-- ΟΧΙ (Τιμ[κ])
                          Β2 <-- ΟΧΙ (Τιμ[λ]) Ή Τιμ[μ]
                          Β3 <-- ΟΧΙ (Τιμ[ν])
                          Αποτ <-- Β1 ΚΑΙ Β2 Ή Β3
                          Εμφάνισε 'Αποτέλεσμα =', Αποτ
                     Τέλος_επανάληψης
                Τέλος_επανάληψης
            Τέλος_επανάληψης
        Τέλος_επανάληψης
        Τέλος ΑΣΚ

Παρασκευή 25 Μαρτίου 2011

Άσκηση : συγγραφή συνάρτησης

Ο καθηγητής πληροφορικής υποβάλλει τους 30 μαθητές της
τάξης του σε ένα τεστ που περιλαμβάνει 18 ερωτήσεις.
Θεωρήστε τον πίνακα Απ[30, 18] που περιέχει τις
απαντήσεις των μαθητών σε κάθε ερώτηση ( Ο - ορθή
απάντηση, Λ - λανθασμένη απάντηση).
Γράψτε συνάρτηση που δέχεται ως παράμετρο τον Απ
και υπολογίζει τον αύξοντα αριθμό (1-18) της ερώτησης
στην οποία έδωσαν λανθασμένη απάντηση οι περισσότεροι
μαθητές (θεωρείστε ότι είναι μοναδική).

Λύση

      ΣΥΝΑΡΤΗΣΗ Δύσκολη(Απ) : ΑΚΕΡΑΙΑ
      ΜΕΤΑΒΛΗΤΕΣ
            ΑΚΕΡΑΙΕΣ: Πληθ, κ , λ, Φορές[18], ΜΑΧ, ΑΑΜΑΧ, Φ
            ΧΑΡΑΚΤΗΡΕΣ: Απ[30, 18]
      ΑΡΧΗ
            ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 18
                   Φ <-- 0
                   ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 30
                          ΑΝ Απ[κ, λ] = 'Λ' ΤΟΤΕ
                                 Φ <-- Φ+1
                          ΤΕΛΟΣ_ΑΝ
                   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                   Φορές[λ] <-- Φ
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΜΑΧ <-- Φορές[1]
            ΑΑΜΑΧ <-- 1
            ΓΙΑ κ ΑΠΟ 2 ΜΕΧΡΙ 18
                   ΑΝ Φορές[κ] > ΜΑΧ ΤΟΤΕ
                           ΜΑΧ <-- Φορές[κ]
                           ΑΑΜΑΧ <-- κ
                   ΤΕΛΟΣ_ΑΝ
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            Δύσκολη <-- ΑΑΜΑΧ
      ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Τετάρτη 23 Μαρτίου 2011

Πίνακας αλήθειας

Συμπληρώστε τα κενά που λείπουν στον πίνακα αλήθειας
που ακολουθεί

    Χ                Υ               Χ ΚΑΙ Υ       ΟΧΙ (Χ Ή Υ)
Αληθής                        Αληθής
                                                           Αληθής

Λύση

     Χ                Υ               Χ ΚΑΙ Υ       ΟΧΙ (Χ Ή Υ)

Αληθής      Αληθής          Αληθής              Ψευδής
Ψευδής      Ψευδής          Ψευδής              Αληθής

'Ελεγχος αλγοριθμικών κριτηρίων

Ποιό ή  ποιά αλγοριθμικά κριτήρια παραβιάζονται στο
παρακάτω σύνολο εντολών. Αιτιολογήστε την απάντησή σας.
       Αλγόριθμος ΑΣΚ
       Διάβασε Χ
       Υ <-- Τ_Ρ(Α_Τ(Χ))+1
       Όσο Υ > 0 επανάλαβε
             Διάβασε κ
             Αν A_T(κ) div A_T(κ+1)  >  0 τότε
                   Υ <-- Υ-10
             αλλιώς
                   Υ <-- Υ+10
             Τέλος_αν
             μ <-- 1/(κ+7)
       Τέλος_επανάληψης
       Τέλος ΑΣΚ

Λύση

α) Καθοριστικότητα, γιατί αν κ = -7 η εντολή μ <-- 1/(κ+7) δεν
    μπορεί να εκτελεστεί.
β) Έξοδος, γιατί ο αλγόριθμος δεν εμφανίζει κανένα αποτέλεσμα.
γ) Περατότητα, γιατί A_T(κ) div A_T(κ+1)  >  0 = 0 > 0
    = Ψευδής και η εντολή Υ <-- Υ-10 δεν πρόκειται ποτέ να
   εκτελεστεί και το Υ θα αυξάνεται συνεχώς κατά 10. Έτσι το
   Υ θα είναι πάντα θετικό και  η Όσο..επανάλαβε δε θα
   τερματιστεί ποτέ.
 

Μετατροπές

Ξαναγράψτε το παρακάτω σύνολο εντολών με ισοδύναμο
τρόπο αντικαθιστώντας
α) την εξωτερική Για..από..μέχρι με Όσο..επανάλαβε
β) την εσωτερική Για..από..μέχρι με Μέχρις_ότου
γ) την Αν..τότε..αλλιώς με εντολές Αν..τότε

        Διάβασε Ζ, Μ
        Για κ από 21 μέχρι Ζ
             Για λ από 4 μέχρι Μ με_βήμα 2
                  Διάβασε Ν
                  Αν Ν < 10 τότε
                       Εμφάνισε (κ+λ)*Ν
                  αλλιώς
                       Εμφάνισε (κ-λ)*Ν
                  Τέλος_αν
             Τέλος_επανάληψης
        Τέλος_επανάληψης

Λύση


        Διάβασε Ζ, Μ
        κ <-- 21
        Όσο κ <= Ζ επανάλαβε
            Αν Μ >= 4 τότε
                 λ <-- 4
                 Αρχή_επανάληψης
                     Διάβασε Ν
                     Αν Ν < 10 τότε
                          Εμφάνισε (κ+λ)*Ν
                     Τέλος_αν
                     Αν Ν >= 10 τότε
                          Εμφάνισε (κ-λ)*Ν
                     Τέλος_αν
                     λ <-- λ+2
                 Μέχρις_ότου λ > Μ
             Τέλος_αν
             κ <-- κ+1
        Τέλος_επανάληψης


 

Τετάρτη 16 Μαρτίου 2011

Θέμα 4ο : Επαναληπτικές απολυτήριες εξετάσεις εσπερινού λυκείου 2004

Σ’ ένα διαγωνισμό συμμετέχουν 5000 διαγωνιζόμενοι και
εξετάζονται σε δύο μαθήματα.
Να γράψετε αλγόριθμο που
1. να διαβάζει και να καταχωρίζει σε κατάλληλους πίνακες
    για κάθε διαγωνιζόμενο τον αριθμό μητρώου, το
    ονοματεπώνυμο και τους βαθμούς που πήρε στα δύο
    μαθήματα.
    Οι αριθμοί μητρώου θεωρούνται μοναδικοί. Η
    βαθμολογική κλίμακα είναι από 0 έως και 100.
                                                                          Μονάδες 4
2. να εμφανίζει κατάσταση επιτυχόντων με την εξής μορφή:

Αριθ. Μητρώου  Ονοματεπώνυμο  Μέσος Όρος

Επιτυχών θεωρείται ότι είναι αυτός που έχει μέσο όρο
βαθμολογίας μεγαλύτερο ή ίσο του 60.
                                                                         Μονάδες 4
3. να διαβάζει έναν αριθμό μητρώου και
    α.  σε περίπτωση που ο αριθμός μητρώου είναι
         καταχωρισμένος στον πίνακα, να εμφανίζεται ο
         αριθμός μητρώου, το ονοματεπώνυμο, ο μέσος όρος
         βαθμολογίας και η ένδειξη «ΕΠΙΤΥΧΩΝ» ή «ΑΠΟΤΥΧΩΝ»,
         ανάλογα με τον μέσο όρο.
                                                                         Μονάδες 8
    β. σε περίπτωση που ο αριθμός μητρώου δεν είναι
        καταχωρισμένος στον πίνακα, να εμφανίζεται το
       μήνυμα «Ο αριθμός μητρώου δεν αντιστοιχεί σε
       διαγωνιζόμενο».
                                                                         Μονάδες 4
Σημείωση: Δεν απαιτείται έλεγχος εγκυρότητας καταχώρισης
δεδομένων.

Λύση

     Αλγόριθμος Θ4_ΕπανΕσπ2004

     Για γ από 1 μέχρι 5000
          Διάβασε ΑΜ[γ], ΟΝ[γ]
     Τέλος_επανάληψης
     Για γ από 1 μέχρι 5000
          Για σ από 1 μέχρι 2
               Διάβασε Βαθμ[γ, σ]
          Τέλος_επανάληψης
     Τέλος_επανάληψης
     Για γ από 1 μέχρι 5000
          Αθρ <-- 0
          Για σ από 1 μέχρι 2
               Αθρ <-- Αθρ+Βαθμ[γ, σ]
          Τέλος_επανάληψης
          ΜΟ[γ] <-- Αθρ/2
     Τέλος_επανάληψης
     Εμφάνισε 'Κατάσταση επιτυχόντων ...'
    
Επ <-- 0
     Για
γ από 1 μέχρι 5000
           Αν ΜΟ[γ] >= 60 τότε
                Εμφάνισε ΑΜ[γ], ΟΝ[γ], ΜΟ[γ]
                Επ <-- Επ+1
           Τέλος_αν
     Τέλος_επανάληψης
     Αν Επ = 0 τότε
           Εμφάνισε 'Δεν υπάρχει κανένας επιτυχών'
     Τέλος_αν
     Διάβασε Μητρώο
     done <-- Ψευδής
     pos <-- 0
     γ <-- 1
     Όσο (γ <= 5000) ΚΑΙ (done = Ψευδής) επανάλαβε
           Αν ΑΜ[γ] = Μητρώο τότε
                 done <-- Αληθής
                 pos <-- γ
           αλλιώς
                 γ <-- γ+1
           Τέλος_αν
     Τέλος_επανάληψης
     Αν done = Αληθής τότε
           Εμφάνισε Μητρώο, ΟΝ[pos], ΜΟ[pos]
           Αν ΜΟ[pos] >= 60 τότε
                 Εμφάνισε 'ΕΠΙΤΥΧΩΝ'
           αλλιώς
                 Εμφάνισε 'ΑΠΟΤΥΧΩΝ'
           Τέλος_αν
     αλλιώς
            Εμφάνισε 'Ο αριθμός μητρώου δεν αντιστοιχεί σε'
            Εμφάνισε 'διαγωνιζόμενο'
     Τέλος_αν
     Τέλος Θ4_ΕπανΕσπ2004