Πέμπτη 18 Νοεμβρίου 2010

Άσκηση : Απάντηση σε ερώτηση

Γράψτε αλγόριθμο που διαβάζει τις ημερομηνίες γέννησης
(μέρα, μήνας, έτος) κάποιων ανθρώπων (η είσοδος δεδομένων
ολοκληρώνεται μόλις δοθεί η απάντηση 'ναι' στην υποβαλλόμενη
προς το χρήστη ερώτηση 'Ολοκληρώθηκε η είσοδος;'),
υπολογίζει και εμφανίζει:
α) πόσοι έχουν γεννηθεί άνοιξη,
β) το ποσοστό (%) αυτών που έχουν γεννηθεί καλοκαίρι,
γ) το μέσο όρο ηλικίας αυτών που έχουν γεννηθεί πριν από
    το 1965,
δ) πόσοι γεννήθηκαν μέσα στο πρώτο δεκαπενθήμερο κάποιου
    μήνα.
Παρατήρηση : Όλες οι τιμές εισόδου είναι ακεραίου τύπου και δεν
απαιτείται κανένας έλεγχος της εγκυρότητάς τους.

Λύση

       Αλγόριθμος Άνθρωποι
       Ανοιξη <-- 0
       Καλοκ <-- 0
       ΠρινΑπο <-- 0
       σ <-- 0
       Πληθ <-- 0
       Δεκ <-- 0
       Αρχή_επανάληψης
            Διάβασε Μέρα, Μήνας, Έτος
            Πληθ <-- Πληθ+1
            Αν (Μήνας >= 3) ΚΑΙ (Μήνας <= 5) τότε
                 Άνοιξη <-- Άνοιξη+1
            Τέλος_αν
            Αν (Μήνας >= 6) ΚΑΙ (Μήνας <= 8) τότε
                 Καλοκ <-- Καλοκ+1
            Τέλος_αν
            Αν Έτος < 1965 τότε
                 ΠρινΑπο <-- ΠρινΑπο+1
                 σ <-- σ+(2010-Έτος)
            Τέλος_αν
            Αν (Μέρα >= 1) ΚΑΙ (Μέρα <= 15) τότε
                 Δεκ <-- Δεκ+1
            Τέλος_αν
            Εμφάνισε 'Ολοκληρώθηκε η είσοδος;'
            Διάβασε Απ
       Μέχρις_ότου Απ = 'ναι'
       ΠΟΣ <-- 100*Καλοκ/Πληθ
       Εμφάνισε Άνοιξη, ΠΟΣ, Δεκ
       Αν ΠρινΑπο > 0 τότε
            ΜΟ <-- σ/ΠρινΑπο
            Εμφάνισε ΜΟ
       αλλιώς 
            Εμφάνισε 'Δεν υπάρχει κανένας γεννηθείς πριν το 65'
       Τέλος_αν
       Τέλος Άνθρωποι

Άσκηση : συγγραφή διαδικασίας

Γράψτε διαδικασία που δέχεται ως παραμέτρους δύο
ακέραιες τιμές Α, Β και επιλύει την εξίσωση
       Α |Χ| = Β

Λύση

       ΔΙΑΔΙΚΑΣΙΑ ΕΞΙΣΩΣΗ(Α, Β)
       ΜΕΤΑΒΛΗΤΕΣ
             ΑΚΕΡΑΙΕΣ: Α, Β,
             ΠΡΑΓΜΑΤΙΚΕΣ : Υ, Χ1, Χ2
       ΑΡΧΗ
             ΑΝ Α < > 0 ΤΟΤΕ
                  Υ <-- Β/Α
                   ΑΝ Υ > 0 ΤΟΤΕ
                         Χ1 <-- Υ
                         Χ2 <-- -Υ
                         ΓΡΑΨΕ Χ1, Χ2
                   ΑΛΛΙΩΣ_ΑΝ Υ = 0 ΤΟΤΕ
                         ΓΡΑΨΕ 'Χ = 0'
                   ΑΛΛΙΩΣ
                         ΓΡΑΨΕ 'ΑΔΥΝΑΤΗ'
                   ΤΕΛΟΣ_ΑΝ
             ΑΛΛΙΩΣ
                   ΑΝ Β = 0 ΤΟΤΕ
                         ΓΡΑΨΕ 'ΑΠΕΙΡΕΣ ΛΥΣΕΙΣ'
                   ΑΛΛΙΩΣ
                         ΓΡΑΨΕ 'ΑΔΥΝΑΤΗ'
                   ΤΕΛΟΣ_ΑΝ
             ΤΕΛΟΣ_ΑΝ
       ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

Γράψτε συνάρτηση που δέχεται ως παραμέτρους ένα ακέραιο Ν
και μια λογική τιμή Τ και υπολογίζει:
    * το άθροισμα 1+2+3+...+Ν, αν Τ = ΑΛΗΘΗΣ
    * το γινόμενο 1 Χ 2 Χ ... Χ Ν, αν Τ = ΨΕΥΔΗΣ

Λύση

     ΣΥΝΑΡΤΗΣΗ ΑΠ(Ν, Τ) : ΑΚΕΡΑΙΑ
     ΜΕΤΑΒΛΗΤΕΣ
            ΑΚΕΡΑΙΕΣ: Ν, Παρ, μ
            ΛΟΓΙΚΕΣ: Τ
     ΑΡΧΗ
            ΑΝ Τ = ΑΛΗΘΗΣ ΤΟΤΕ
                  Παρ <-- 0
                  ΓΙΑ μ ΑΠΟ ΜΕΧΡΙ Ν
                        Παρ <-- Παρ+μ
                  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΑΛΛΙΩΣ
                  Παρ <-- 1
                  ΓΙΑ μ ΑΠΟ ΜΕΧΡΙ Ν
                        Παρ <-- Παρ*μ
                  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΤΕΛΟΣ_ΑΝ
            ΑΠ <-- Παρ
     ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Τετάρτη 17 Νοεμβρίου 2010

Άσκηση : Απάντηση σε ερώτηση

Γράψτε αλγόριθμο που διαβάζει το πλήθος των έγκυρων, των
άκυρων και των λευκών ψηφοδελτίων σε κάθε εκλογικό
τμήμα της χώρας (η είσοδος δεδομένων ολοκληρώνεται
μόλις δοθεί η απάντηση  ΌΧΙ' στην υποβαλλόμενη προς το
χρήστη ερώτηση 'Υπάρχει άλλο εκλογικό τμήμα;'), υπολογίζει
και εμφανίζει:
α) τον αύξοντα αριθμό του εκλογικού τμήματος με το μικρότερο
    ποσοστό (%) έγκυρων ψηφοδελτίων,
β) το ποσοστό (%) των εκλογικών τμημάτων που είχαν τουλάχιστον
    3% ποσοστό άκυρων ψηφοδελτίων,
γ) το μέσο όρο λευκών ψηφοδελτίων ανά εκλογικό τμήμα.

Λύση

       Αλγόριθμος Εκλογές
       Μικ <-- 101
       Πληθ <-- 0
       Φ3 <-- 0
       σ <-- 0
       Αρχή_επανάληψης
            Διάβασε 'Εγκυρα, Άκυρα, Λευκά
            Πληθ <-- Πληθ+1
            Σύνολο <-- 'Εγκυρα+Άκυρα+Λευκά
            ΠοσΕγκ <-- 100*Έγκυρα/Σύνολο
            Αν ΠοσΕγκ < Μικ τότε
                 Μικ <-- ΠοσΕγκ
                 ΑΑΜικ <-- Πληθ
            Τέλος_αν
            ΠοσΑκυρ <-- 100*Άκυρα/Σύνολο
            Αν ΠοσΑκυρ >= 3 τότε
                 Φ3 <-- Φ3+1
            Τέλος_αν
            σ <-- σ+Λευκά
            Εμφάνισε 'Υπάρχει άλλο εκλογικό τμήμα;'
            Διάβασε Απ
       Μέχρις_ότου Απ = 'ΟΧΙ'
       ΜΟΛ <-- σ/Πληθ
       ΠΟΣ <-- 100*Φ3/Πληθ
       Εμφάνισε ΑΑΜικ, ΠΟΣ, ΜΟΛ
       Τέλος Εκλογές

Άσκηση : επεξεργασία δοσμένου πλήθους δεδομένων (Για..από..μέχρι)

Γράψτε αλγόριθμο που διαβάζει :
α) το πλήθος των εντολών 18 προγραμμάτων,
β) υπολογίζει και εμφανίζει:
    * το μέσο όρο εντολών ανά πρόγραμμα,
    * πόσα προγράμματα είχαν περισσότερες από 200
       εντολές,
    * το ποσοστό (%) των προγραμμάτων που είχαν
       το πολύ 120 εντολές.

Λύση

    Αλγόριθμος Προγ
    σ <-- 0
    φ1 <-- 0
    φ2 <-- 0
    Για λ από 1 μέχρι 18
         Διάβασε Εντ
         σ <-- σ+Εντ
         Αν Εντ > 200 τότε
               φ1 <-- φ1+1
         Τέλος_αν
         Αν Εντ <= 120 τότε
              φ2 <-- φ2+1
         Τέλος_αν
    Τέλος_επανάληψης
    ΜΟ <-- σ/18
    ΠΟΣ <-- 100*φ2/18
    Εμφάνισε ΜΟ, φ1, ΠΟΣ
    Τέλος Προγ

Τρίτη 16 Νοεμβρίου 2010

Διόρθωση λανθασμένων προτάσεων

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


Απάντηση


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

Δευτέρα 15 Νοεμβρίου 2010

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

Ποιό ή ποιά αλγοριθμικά κριτήρια παραβιάζει το παρακάτω
σύνολο εντολών;
      Για κ από 12 μέχρι 112 με_βήμα 0
          Διάβασε Χ
          Υ <-- κ*Χ
           Εμφάνισε Υ
      Τέλος_επανάληψης


Απάντηση
Παραβιάζεται το κριτήριο της περατότητας, αφού με βήμα
μηδενικό το κ δεν αλλάζει τιμή, δεν ξεπερνάει ποτέ το 112 και έτσι
η Για..από..μέχρι δε θα τερματιστεί ποτέ (ατέρμων βρόχος)