Παρασκευή 29 Απριλίου 2011

Εύρεση πλήθους επαναλήψεων

Πόσες φορές θα τυπώσει τη λέξη 'καλημέρα' το παρακάτω
σύνολο εντολών
     Για κ από 13 μέχρι Α με_βήμα Β
           Εμφάνισε 'καλημέρα'
     Τέλος_επανάληψης


Απάντηση


     1. Αν Α > 13 τότε
             * Αν  Β > 0 :  τουλάχιστον μία
             * Αν  Β < 0 : καμία
             * Αν  Β = 0 : άπειρες
    2.  Αν Α = 13 τότε:
             * Αν Β  < > 0 : μία
             * Αν Β = 0 : άπειρες
    3.  Αν Α < 13 τότε:
             * Αν Β < 0 :  τουλάχιστον μία
             * Αν  Β >= 0 : καμία
             

Τετάρτη 27 Απριλίου 2011

Ερωτήσεις σωστού λάθους

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



Απάντηση

1. Σ
2. Σ
3. Λ
4. Σ
5. Λ

Τρίτη 26 Απριλίου 2011

Άσκηση : επεξεργασία στοιχείων μονοδιάστατου πίνακα

Δίνεται πίνακας Α[80] που περιέχει 40 άσσους και 40
μηδενικά. Γράψτε αλγόριθμο που αναδιοργανώνει το
περιεχόμενο του Α κατά τέτοιο τρόπο ώστε τα μηδενικά
να καταλαμβάνουν τις τελευταίες θέσεις του πίνακα.

Λύση

    Αλγόριθμος ΑΣΚ
    Δεδομένα // Α //
    λ <-- 0
    Για κ από 1 μέχρι 80
        Αν Α[κ] < >  0 τότε
             λ <-- λ+1
             Β[λ] <-- Α[κ]
    Τέλος_επανάληψης
    Για κ από 1 μέχρι 40
          Α[κ] <-- Β[κ]
          Α[κ+40] <-- 0
    Τέλος_επανάληψης
    Αποτελέσματα // Α //
    Τέλος ΑΣΚ

Δευτέρα 25 Απριλίου 2011

Άσκηση : επιλεκτική ταξινόμηση

Θεωρείστε ένα πίνακα Α[50] που περιέχει εναλλάξ άρτιες και
περιττές τιμές (στην πρώτη θέση του πίνακα περιέχεται
άρτιος ακέραιος). Γράψτε αλγόριθμο που ταξινομεί, μόνο
τις άρτιες τιμές, κατά φθίνουσα σειρά.

Λύση

      Αλγόριθμος Ταξ
      Δεδομένα // Α //
      χ <-- 1
      Για κ από 1 μέχρι 49 με_βήμα 2
           Β[χ] <-- Α[κ]
           χ <-- χ+1
      Τέλος_επανάληψης
      Για κ από 2 μέχρι 25
           Για λ από 25 μέχρι κ με_βήμα -1
                 Αν Β[λ-1] < Β[λ] τότε
                      Βοηθ <-- Β[λ-1]
                      Β[λ-1] <-- Β[λ]
                      Β[λ] <-- Βοηθ
                 Τέλος_αν
           Τέλος_επανάληψης
      Τέλος_επανάληψης
      χ <-- 1
      Για κ από μέχρι 49 με_βήμα 2
           Α[κ] <-- Β[χ]
           χ <-- χ+1
      Τέλος_επανάληψης  
      Αποτελέσματα // Α //
      Τέλος Ταξ

Πέμπτη 21 Απριλίου 2011

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

Γράψτε συνάρτηση που υπολογίζει πόσοι συνδιασμοί τιμών
των ακέραιων μεταβλητών Χ, Υ, Ζ στο ακέραιο διάστημα
[Α, Β], κάνουν το αποτέλεσμα της παράστασης  Χ+Υ+Ζ
άρτιο.

Λύση

       ΣΥΝΑΡΤΗΣΗ ΣΥΝΔ(Α, Β) : ΑΚΕΡΑΙΑ
       ΜΕΤΑΒΛΗΤΕΣ
              ΑΚΕΡΑΙΕΣ: Α, Β, Χ, Υ, Ζ, ΠΛΗΘ
       ΑΡΧΗ
              ΠΛΗΘ <-- 0
              ΓΙΑ Χ ΑΠΟ Α ΜΕΧΡΙ Β
                   ΓΙΑ Υ ΑΠΟ Α ΜΕΧΡΙ Β
                         ΓΙΑ Ζ ΑΠΟ Α ΜΕΧΡΙ Β
                               ΑΝ (Χ+Υ+Ζ) MOD 2 = 0 TOTE
                                     ΠΛΗΘ <-- ΠΛΗΘ+1
                               ΤΕΛΟΣ_ΑΝ
                         ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
              ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
              ΣΥΝΔ <-- ΠΛΗΘ
       ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

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

Γράψτε συνάρτηση που δέχεται ως παραμέτρους δύο
επώνυμα Επ1, Επ2 και επιστρέφει την τιμή:
* 0, αν υπάρχει συνωνυμία
* 1, αν το Επ1 προηγείται αλφαβητικά του Επ2,
* 2, αν το Επ2 προηγείται αλφαβητικά του Επ1.

Λύση

      ΣΥΝΑΡΤΗΣΗ ΕΛ(Επ1, Επ2) : ΑΚΕΡΑΙΑ
      ΜΕΤΑΒΛΗΤΕΣ
             ΧΑΡΑΚΤΗΡΕΣ: Επ1, Επ2
      ΑΡΧΗ
             ΑΝ Επ1 = Επ2 ΤΟΤΕ
                   ΕΛ <-- 0
             ΑΛΛΙΩΣ_ΑΝ Επ1 < Επ2 ΤΟΤΕ
                   ΕΛ <-- 1
             ΑΛΛΙΩΣ
                   ΕΛ <-- 2
             ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Τρίτη 19 Απριλίου 2011

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

Γράψτε αλγόριθμο που διαβάζει τους τίτλους κάποιων τηλεο-
πτικών ειδησιογραφικών εκπομπών, το αντικείμενο τους,
τα ονοματεπώνυμα των παρουσιαστών τους, το κόστος
παραγωγής τους και το τηλεοπτικό κανάλι στο οποίο "παίζουν"
(η είσοδος δεδομένων ολοκληρώνεται μόλις δοθεί η απάντηση
'Ν' στην υποβαλλόμενη προς το χρήστη ερώτηση 'Ολοκληρώ-
θηκε η είσοδος;'), υπολογίζει και εμφανίζει:
α) τον τίτλο της εκπομπής που έχει το μεγαλύτερο κόστος
    παραγωγής, το αντικείμενό της, το ονοματεπώνυμο του
    παρουσιαστή της και το τηλεοπτικό κανάλι στο οποίο
    "παίζει",
β) πόσες από τις εκπομπές έχουν αντικείμενο τους την
    ΟΙΚΟΝΟΜΙΑ,
γ) το ποσοστό (%) των εκπομπών που "παίζουν" στο
    κανάλι  ΑΝΕΠ_CHANNEL,
δ) το μέσο κόστος παραγωγής ανά εκπομπή.

Λύση

      Αλγόριθμος Εκπομπές
      Μεγ <-- -1
      Οικ <-- 0
      Ανεπ <-- 0
      Πληθ <-- 0
      σ <-- 0
      Αρχή_επανάληψης
           Διάβασε Τίτλος, Αντικ, Ονεπ, Κοστ, Καν
           Αν Κοστ > Μεγ τότε
                Μεγ <-- Κοστ
                ΜεγΤιτλ <-- Τίτλος
                ΜεγΑντ <-- Αντικ
                ΜεγΟν <-- Ονεπ
                ΜεγΚαν <-- Καν
           Τέλος_αν
           Αν Αντικ = 'ΟΙΚΟΝΟΜΙΑ' τότε
                 Οικ <-- Οικ+1
           Τέλος_αν
           Αν Καν = 'ΑΝΕΠ_CHANNEL' τότε
                 Ανεπ <-- Ανεπ+1
           Τέλος_αν
           Πληθ <-- Πληθ+1
           σ <-- σ+Κοστ
           Εμφάνισε 'Ολοκληρώθηκε η είσοδος;'
           Διάβασε Απ
      Μέχρις_ότου Απ = 'Ν'
      ΜΟ <-- σ/Πληθ
      Εμφάνισε ΜεγΤιτλ, ΜεγΑντ, ΜεγΟν, ΜεγΚαν
      ΠΟΣ <-- 100*Ανεπ/Πληθ
      Εμφάνισε Οικ
      Εμφάνισε ΠΟΣ
      Εμφάνισε ΜΟ
      Τέλος Εκπομπές

Δευτέρα 18 Απριλίου 2011

Άσκηση : φρουρός+πίνακας

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

Λύση

       Αλγόριθμος Καταστήματα
       Ηλεκ <-- 0
       Πληθ <-- 0
       Αρχή_επανάληψης
            Διάβασε Επων
            Αν Επων < > '  ' τότε
                 Διάβασε Ονομ, Αντικ
                 Πληθ <-- Πληθ+1
                 Αν Αντικ = 'ΗΛΕΚΤΡΟΝΙΚΑ' τότε
                      Ηλεκ <-- Ηλεκ+1
                 Τέλος_αν
                 ΟΝ[Πληθ] <-- Ονομ
            Τέλος_αν
       Μέχρις_ότου Επων = '  '
       Αν Πληθ > 0 τότε
             ΠΟΣ <-- 100*Ηλεκ/Πληθ
             Εμφάνισε ΠΟΣ
             Για κ από 2 μέχρι Πληθ
                  Για λ από Πληθ μέχρι κ με_βήμα -1
                        Αν ΟΝ[λ-1] > ΟΝ[λ] τότε
                              Βοηθ <-- ΟΝ[λ-1]
                              ΟΝ[λ-1] <-- ΟΝ[λ]
                              ΟΝ[λ] <-- Βοηθ
                        Τέλος_αν
                  Τέλος_επανάληψης
             Τέλος_επανάληψης
             Για κ από 1 μέχρι Πληθ
                  Εμφάνισε ΟΝ[κ]
             Τέλος_επανάληψης
       αλλιώς
             Εμφάνισε 'Δε δόθηκαν δεδομένα'
       Τέλος_αν
       Τέλος Καταστήματα

Κυριακή 17 Απριλίου 2011

Συμπληρώστε κενών

Συμπληρώστε τα κενά που λείπουν παρακάτω
1. Η __________ είναι το στάδιο επίλυσης προβλημάτων
    που προηγείται της ανάλυσης.
2. Όταν η περιεχόμενη ομάδα εντολών σε μια Αν..τότε
    είναι μονομελής, η δεσμευμένη λέξη _______ μπορεί
    να παραληφθεί.
3. Μια μεταβλητή λογικού τύπου απαιτεί ______ byte για
    την αποθήκευσή της στη μνήμη.
4. Η Όσο..επανάλαβε είναι ισοδύναμη με την ________.
5. Η ιεραρχική σχεδίαση είναι μια τεχνική ανάλυσης
    προβλημάτων από ______ προς τα _______.


Απάντηση

1. κατανόηση
2. Τέλος_αν
3. ένα
4. Μέχρις_ότου
5. πάνω, κάτω

Σάββατο 16 Απριλίου 2011

Προσδιορισμός τύπου υποπρογράμματος

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

Απάντηση

1. Σ
2. Δ
3. Δ
4. Σ
5. Δ

Παρασκευή 15 Απριλίου 2011

Συμπλήρωση κενών

Συμπληρώστε τα κενά που λείπουν
1. Κάθε Όσο..επανάλαβε μπορεί να αντικατασταθεί από
    μια ____________ έτσι ώστε να προκύπτει το ίδιο
    αλγοριθμικό αποτέλεσμα.
2. Κάθε λογικό διάγραμμα ολοκληρώνεται με το
    σχήμα της ________.
3. Οι ________ μιας δομής δεδομένων μπορούν να
    ταξινομηθούν κατά αύξουσα ή φθίνουσα σειρά.
4. Η PASCAL είναι μια γλώσσα προγραμματισμού
   _______ χρήσης.
5. Όλα τα στοιχεία ενός πίνακα έχουν τον ίδιο _____.


Απαντήσεις

1. Μέχρις_ότου
2. έλλειψης
3. κόμβοι
4. γενικής
5. τύπο

Πέμπτη 14 Απριλίου 2011

Ερωτήσεις σωστού λάθους

Ποιές από τις παρακάτω προτάσεις είναι σωστές και ποιές
λάθος;
1. Τα στοιχεία ενός πίνακα διατάσσονται κατά μήκος μιας
    γραμμής ή μιας στήλης.
2. Μια δική μιας συνάρτηση μπορεί να μην κληθεί ποτέ.
3. Ο συντάκτης χρησιμοποιείται για τη συγγραφή του
    πηγαίου προγράμματος.
4. Ένα πρόβλημα έχει πάντοτε λύση.
5. Τα δεδομένα που επεξεργάζεται ένας αλγόριθμος μπορεί
     να προκύπτουν από μια γεννήτρια παραγωγής τυχαίων
     αριθμών.


Απάντηση

1. Λ
2. Σ
3. Σ
4. Λ
5. Σ

Τετάρτη 13 Απριλίου 2011

Άσκηση : απάντηση σε ερώτηση+δοσμένο ανώτατο πλήθος+πίνακας

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

Λύση

      Αλγόριθμος Κάτοικοι
      Φ20 <-- 0
      ΜΑΧ <-- -1
      Πληθ <-- 0
      Αρχή_επανάληψης
            Διάβασε ΑΔΤ, ΟΝ, Ηλικ
            Πληθ <-- Πληθ+1
            Αν Ηλικ >= 20 τότε
                 Φ20 <-- Φ20+1
            Τέλος_αν
            Αν Ηλικ > ΜΑΧ τότε
                 ΜΑΧ <-- Ηλικ
                 ΟνΜΑΧ <-- ΟΝ
            Τέλος_αν
            ΟΝΟΜ[Πληθ] <-- ΟΝ
            ΗΛ[Πληθ] <-- Ηλικ
            ΔΕΛΤΙΟ[Πληθ] <-- ΑΔΤ
            Εμφάνισε 'Υπάρχει άλλος κάτοικος;'
            Διάβασε Απ
      Μέχρις_ότου (Απ = 'ΟΧΙ') Ή (Πληθ = 10000)
      Εμφάνισε Φ20, ΟνΜΑΧ
      Διάβασε Αδελτ
      done <-- Ψευδής
      pos <-- 0
      κ <-- 1
      Όσο (κ <= Πληθ) ΚΑΙ (done = Ψευδής) επανάλαβε
              Αν ΔΕΛΤΙΟ[κ] = Αδελτ τότε
                  done <-- Αληθής
                  pos <-- κ
              αλλιώς
                  κ <-- κ+1
              Τέλος_αν
      Τέλος_επανάληψης
      Αν done = Αληθής τότε
             Εμφάνισε ΟΝΟΜ[pos], ΗΛ[pos]
      αλλιώς
             Εμφάνισε 'Αυτός ο ΑΔΤ δεν ανήκει σε κάτοικο'
             Εμφάνισε 'αυτής της πόλης'
      Τέλος_αν
      Τέλος Κάτοικοι

Τρίτη 12 Απριλίου 2011

άσκηση : απάντηση σε ερώτηση

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


Λύση

       Αλγόριθμος Κάτοικοι
       Πληθ <-- 0
       ΓενΗρακ <-- 0
       Αρτ <-- 0
       Αρχή_επανάληψης
             Διάβασε Πόλη, Οδός, Νο
             Πληθ <-- Πληθ+1
             Αν (Πόλη = 'Ηράκλειο') ΚΑΙ (Οδός = 'Γεννηματά')
             τότε
                  ΓενΗρακ <-- ΓενΗρακ+1
             Τέλος_αν
             Αν Νο mod 2 = 0 τότε
                  Αρτ <-- Αρτ+1
             Τέλος_αν
             Εμφάνισε 'Υπάρχει άλλη διεύθυνση;'
             Διάβασε Απ
       Μέχρις_ότου Απ = 'ΟΧΙ'
       ΠΟΣ <-- 100*Αρτ/Πληθ
       Εμφάνισε Πληθ, ΓενΗρακ, ΠΟΣ
       Τέλος Κάτοικοι

Δευτέρα 11 Απριλίου 2011

Άσκηση : φρουρός

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

Λύση

     Αλγόριθμος Φρουρός
     Ανδ <-- 0
     ΑνδΜπ <-- 0
     Γυν <-- 0
     ΓυνΚαστ <-- 0
     ΜΠ <-- 0
     Αρχή_επανάληψης
          Διάβασε Φύλο
          Αν Φύλο < > '   '  τότε
              Διάβασε Μαλλιά
              Διάβασε Μάτια
              Αν Φύλο = 'Α' τότε
                   Ανδ <-- Ανδ+1
                   Αν Μάτια = 'ΜΠΛΕ' τότε
                        ΑνδΜπ <-- ΑνδΜπ+1
                   Τέλος_αν
              αλλιώς
                   Γυν <-- Γυν+1
                   Αν Μαλλιά = 'ΚΑΣΤΑΝΑ' τότε
                          ΓυνΚαστ <-- ΓυνΚαστ+1
                   Τέλος_αν
              Τέλος_αν
              Αν (Μαλλιά = 'ΜΑΥΡΑ') ΚΑΙ (Μάτια = 'ΠΡΑΣΙΝΑ')
              τότε
                    ΜΠ <-- ΜΠ+1
              Τέλος_αν
          Τέλος_αν
     Μέχρις_ότου (Φύλο = '   ')
     Πληθ <-- Ανδ+Γυν
     Αν Πληθ > 0 τότε
          ΠΟΣΜΠ <-- 100*ΜΠ/Πληθ
          Εμφάνισε ΠΟΣΜΠ
          Αν Ανδ > 0 τότε
              ΠοσΑνδ <-- 100*ΑνδΜπ/Ανδ
              Εμφάνισε ΠοσΑνδ
          αλλιώς
              Εμφάνισε 'Δεν υπάρχει κανένας άνδρας'
          Τέλος_αν
          Αν Γυν > 0 τότε
              ΠοσΓυν <-- 100*ΓυνΚαστ/Γυν
              Εμφάνισε ΠοσΓυν
          αλλιώς
              Εμφάνισε 'Δεν υπάρχει καμία γυναίκα'

          Τέλος_αν
     αλλιώς
          Εμφάνισε 'Δε δόθηκαν καθόλου δεδομένα'
     Τέλος_αν
     Τέλος Φρουρός

Σάββατο 9 Απριλίου 2011

Απλοποίηση

Απλοποιήστε το παρακάτω σύνολο εντολών και εξαφανίσετε
τους περιττούς ελέγχους

      Διάβασε μ, ν
      Αν (μ < 0) Ή (μ > 0) τότε
           ζ <-- μ*ν
      αλλιώς
           ζ <-- μ*(ν+1000)
      Τέλος_αν
      λ <-- Α_Τ(ζ) mod (A_T(ζ)+1)
         
Λύση

      Διάβασε μ, ν
      Αν μ < > 0 τότε
           ζ <-- μ*ν
      αλλιώς    ! μ = 0
           ζ <-- 0
      Τέλος_αν
      λ <-- Α_Τ(ζ)
  

Παρασκευή 8 Απριλίου 2011

Ποιά είναι η τελικη τιμή της μεταβλητής;

Θεωρείστε τον πίνακα Α[30, 30] που είναι γεμάτος με
μονάδες. Ποιά είναι η τελική τιμή της μεταβλητής ζ
μετά την εκτέλεση των παρακάτω εντολών;
       ζ <-- 0
       Για γ από 1 μέχρι 30
           Για σ από 1 μέχρι 30
                Αν γ = σ  τότε
                     ζ <-- ζ+10
                αλλιώς_αν γ+σ = 31 τότε
                     ζ <-- ζ+20
                αλλιώς
                     ζ <-- ζ+2


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

Λύση

       Αφού το πλήθος των στοιχείων της 1ης κυρίας
       διαγωνίου είναι 30 και το πλήθος των στοιχείων της
       2ης κυρίας διαγωνίου είναι 30, το πλήθος των
       υπόλοιπων στοιχείων του πίνακα είναι:
              900-30-30 = 840
       Κατά συνέπεια έχουμε:
            ζ = 0+30*10+30*20+840*2 = 300+600+1680 =
                  900+1680 = 2580


Τετάρτη 6 Απριλίου 2011

Ποιά είναι η τελική τιμή της μεταβλητής

θεωρήστε ένα πίνακα Α[24] που περιέχει 12 θετικές και 12
αρνητικές τιμές. Ποιά είναι η τελική τιμή της μεταβλητής
ζ μετά την εκτέλεση των παρακάτω εντολών;
    ζ <-- 0
    χ <-- 1
    Για κ από 4 μέχρι 9 με_βήμα 3
         Για λ από 5 μέχρι 8
              Για μ από 12 μέχρι 10 με_βήμα -1
                   Αν Α[χ] > 0 τότε
                        ζ <-- ζ+1
                   αλλιώς
                        ζ <-- ζ+2
                   Τέλος_αν
                   χ <-- χ+1
              Τέλος_επανάληψης
         Τέλος_επανάληψης
    Τέλος_επανάληψης


Λύση


     Η πρώτη Για εκτελείται 2 φορές, η δεύτερη Για 4 φορές,
     και η τρίτη Για 3 φορές.  Αφού το συνολικό πλήθος των
     επαναλήψεων είναι 2 Χ 4 Χ 3 = 24, η Αν..τότε..αλλιώς
     ελέγχει όλα τα στοιχεία του πίνακα και τις μισές φορές
     αυξάνει το ζ κατά 1 και τις άλλες μισές κατά 2. Κατά
     συνέπεια έχουμε ζ = 0+12*1+12*2 = 36

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

Γράψτε συνάρτηση η οποία δέχεται ως παραμέτρους τα
άκρα Χ, Υ ενός ακέραιου διαστήματος και υπολογίζει
πόσες από τις τιμές του παραπάνω διαστήματος είναι
διαιρέτες του Χ+Υ.

Λύση

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

Δευτέρα 4 Απριλίου 2011

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

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

Λύση

    ΔΙΑΔΙΚΑΣΙΑ Ημερ(Μ, Μην, Χρ, Πληθ, ΕπΜ, ΕπΜην, ΕπΧρ)
    ΜΕΤΑΒΛΗΤΕΣ
          ΑΚΕΡΑΙΕΣ: Μ, Μην, Χρ, Πληθ, ΕπΜ, ΕπΜην, ΕπΧρ
    ΑΡΧΗ
          ΑΝ Μ < Πληθ ΤΟΤΕ
                ΕπΜ <-- Μ+1
                ΕπΜην <-- Μην
                ΕπΧρ <-- Χρ
          ΑΛΛΙΩΣ
                ΕπΜ <-- 1
                ΑΝ Μην < 12 ΤΟΤΕ
                     ΕπΜην <-- Μην+1
                     ΕπΧρ <-- Χρ
                ΑΛΛΙΩΣ
                     ΕπΜην <-- 1
                     ΕπΧρ <-- Χρ+1
                ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Κυριακή 3 Απριλίου 2011

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

Γράψτε συνάρτηση που δέχεται ως παραμέτρους
δύο αλφαριθμητικούς πίνακες Α[12, 34], Β[12, 34]
και ελέγχει αν οι δύο πίνακες έχουν όλα τα στοιχεία
τους, ένα προς ένα ίσα.

Λύση

       Α' τρόπος


      ΣΥΝΑΡΤΗΣΗ ΙΣΟΙ(Α, Β) : ΛΟΓΙΚΗ
      ΜΕΤΑΒΛΗΤΕΣ
             ΧΑΡΑΚΤΗΡΕΣ: Α[12, 34], Β[12, 34]
             ΑΚΕΡΑΙΕΣ: κ, λ
             ΛΟΓΙΚΕΣ: ΑΠ
      ΑΡΧΗ
             ΑΠ <-- ΑΛΗΘΗΣ
             κ <-- 1
             ΟΣΟ (κ <= 12) ΚΑΙ (ΑΠ = ΑΛΗΘΗΣ) ΕΠΑΝΑΛΑΒΕ
                     λ <-- 1
                     ΟΣΟ (λ <= 34) ΚΑΙ (ΑΠ = ΑΛΗΘΗΣ) ΕΠΑΝΑΛΑΒΕ
                           ΑΝ Α[κ, λ] < >  Β[κ, λ] ΤΟΤΕ
                                 ΑΠ <-- ΨΕΥΔΗΣ
                           ΑΛΛΙΩΣ
                                 λ <-- λ+1
                           ΤΕΛΟΣ_ΑΝ
                     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                     ΑΝ ΑΠ = ΑΛΗΘΗΣ ΤΟΤΕ
                           κ <-- κ+1
                     ΤΕΛΟΣ_ΑΝ
             ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             ΙΣΟΙ <-- ΑΠ
      ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


      Β΄ Τρόπος


      ΣΥΝΑΡΤΗΣΗ ΙΣΟΙ(Α, Β) : ΛΟΓΙΚΗ
      ΜΕΤΑΒΛΗΤΕΣ
             ΧΑΡΑΚΤΗΡΕΣ: Α[12, 34], Β[12, 34]
             ΑΚΕΡΑΙΕΣ: κ, λ, φ          
      ΑΡΧΗ
             φ <-- 0
             ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 12
                 ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 34
                      ΑΝ Α[κ, λ] = Β[κ, λ] ΤΟΤΕ
                            φ <-- φ+1
                      ΤΕΛΟΣ_ΑΝ
                 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             ΑΝ φ = 408 ΤΟΤΕ      ! 12 Χ 34 = 408 
                    ΙΣΟΙ <-- ΑΛΗΘΗΣ
             ΑΛΛΙΩΣ
                    ΙΣΟΙ <-- ΨΕΥΔΗΣ
             ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Παρασκευή 1 Απριλίου 2011

Άσκηση : Αναζήτηση (μονοδιάστατος+δισδιάστατος πίνακας)

Γράψτε αλγόριθμο που, έχοντας ως δεδομένα:
* έναν ακέραιο πίνακα Α[50, 4]
* έναν ακέραιο πίνακα Β[200]
υπολογίζει πόσες από τις τιμές του Α περιέχονται μέσα
στον Β.

Λύση

       Αλγόριθμος ΑΣΚ
       Δεδομένα // Α, Β //
       Πληθ <-- 0
       Για κ από 1 μέχρι 50
           Για λ από 1 μέχρι 4
                 απ <-- Ψευδής
                 ρ <-- 1
                 Όσο (ρ <= 200) ΚΑΙ (απ = Ψευδής) επανάλαβε
                       Αν Β[ρ] = Α[κ, λ] τότε
                            απ <-- Αληθής
                       αλλιώς
                            ρ <-- ρ+1
                       Τέλος_αν
                 Τέλος_επανάληψης
                 Αν απ = Αληθής τότε
                       Πληθ <-- Πληθ+1
                 Τέλος_αν
           Τέλος_επανάληψης
       Τέλος_επανάληψης
       Αποτελέσματα // Πληθ //
       Τέλος ΑΣΚ

Απλοποιήση και εξαφάνιση περιττών ελέγχων

Απλοποιήστε το παρακάτω σύνολο εντολών και απομακρύ-
νεται τους περιττούς ελέγχους
    Διάβασε Χ, Υ,  Ζ
    Αν Χ > Υ τότε
          Αν (Υ <= Ζ) Ή (Υ > Ζ) τότε
                 Εμφάνισε Χ+Υ+Ζ
          αλλιώς
                 Εμφάνισε Χ*Υ*Ζ
          Τέλος_αν
     αλλιώς_αν Χ < Υ τότε
          Αν Α_Τ(Ζ)  mod 2 >= 2 τότε
                Εμφάνισε Ζ^2+Χ^Υ
          αλλιώς
                 Εμφάνισε (Ζ+Χ)^Υ
          Τέλος_αν
     αλλιώς
           Αν Χ = Υ τότε
                 Εμφάνισε Χ-Υ-Ζ
           αλλιώς
                 Εμφάνισε Χ-Υ+Ζ
            Τέλος_αν
      Τέλος_αν

Λύση

    Διάβασε Χ, Υ,  Ζ
    Αν Χ > Υ τότε
          Εμφάνισε Χ+Υ+Ζ
    αλλιώς_αν Χ < Υ τότε     

          Εμφάνισε (Ζ+Χ)^Υ
    αλλιώς
          Εμφάνισε Χ-Υ-Ζ       

    Τέλος_αν


Άσκηση : Ποιά είναι η τελική τιμή της μεταβλητής

Θεωρείστε έναν πίνακα Α[4,35] που περιέχει μη μηδενικές
ακέραιες τιμές, από τις οποίες οι 40 είναι θετικοί αριθμοί.
Ποιά είναι η τιμή της μεταβλητής ζ μετά την εκτέλεση των
 παρακάτω εντολών;
     ζ <-- 0
     Για λ από 1 μέχρι
         Για μ από 1 μέχρι 35
             Αν Α[λ, μ] = 0 τότε
                    ζ <-- ζ+10
             αλλιώς_αν Α[λ, μ] < 0 τότε
                    ζ <-- ζ+1
             αλλιώς
                    ζ <-- ζ+2
             Τέλος_αν
         Τέλος_επανάληψης
     Τέλος_επανάληψης

Λύση

     Αφού ο πίνακας έχει συνολικά 4Χ35 = 140 στοιχεία
     και τα 40 από αυτά είναι θετικά, συμπεραίνουμε ότι
     τα υπόλοιπα 100 είναι αρνητικοί αριθμοί. Κατά συνέπεια:
     * η εντολή ζ <-- ζ+10 δεν εκτελείται ποτέ,
     * η εντολή ζ <-- ζ+1 εκτελείται 100 φορές,
     * η εντολή ζ <-- ζ+2 εκτελείται 40 φορές
     Κατά συνέπεια:
          ζ = 0+100*1+40*2 = 180

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

Α. Γράψτε διαδικασία Δυο_Στοιχεία η οποία δέχεται
     ως παράμετρο έναν πραγματικό πίνακα Α[30] και μια
     λογική τιμή Β και υπολογίζει:
     * τα δύο μεγαλύτερα στοιχεία του Α, αν Β = ΑΛΗΘΗΣ,
     * τα δύο μικρότερα στοιχεία του Α, αν Β = ΨΕΥΔΗΣ.
Β. Γράψτε πρόγραμμα το οποίο:
     1) διαβάζει 30 πραγματικές τιμές και τις καταχωρεί
         στον πίνακα Α,
     2) διαβάζει μια λογική τιμή Β,
     3) καλεί τη διαδικασία Δυο_Στοιχεία,
     4) υπολογίζει και εμφανίζει το μέσο όρο (ΜΟ) των δύο
         αποτελεσμάτων της διαδικασίας,
     5) αν αυτός ο μέσος όρος είναι μεγαλύτερος από 110,
         υπολογίζει και εμφανίζει το πλήθος των στοιχείων
         του πίνακα που είναι μη μηδενικά.


Λύση

      ΠΡΟΓΡΑΜΜΑ ΑΣΚ
      ΜΕΤΑΒΛΗΤΕΣ
           ΑΚΕΡΑΙΕΣ: κ, Πληθ
           ΠΡΑΓΜΑΤΙΚΕΣ: Α[30], ΜΟ, ΑΠ1, ΑΠ2
           ΛΟΓΙΚΕΣ: Β
      ΑΡΧΗ
            ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 30
                  ΔΙΑΒΑΣΕ Α[κ]
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΔΙΑΒΑΣΕ Β
            ΚΑΛΕΣΕ Δύο_Στοιχεία(Α, Β, ΑΠ1, ΑΠ2)
            ΜΟ <-- (ΑΠ1+ΑΠ2)/2
            ΓΡΑΨΕ ΜΟ
            ΑΝ ΜΟ > 110 ΤΟΤΕ
                 Πληθ <-- 0
                 ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 30
                    ΑΝ Α[κ] < > 0 ΤΟΤΕ
                          Πληθ <-- Πληθ+1
                    ΤΕΛΟΣ_ΑΝ
                 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                 ΓΡΑΨΕ Πληθ
            ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

      ΔΙΑΔΙΚΑΣΙΑ Δύο_Στοιχεία(Α, Β, ΑΠ1, ΑΠ2)
      ΜΕΤΑΒΛΗΤΕΣ
            ΠΡΑΓΜΑΤΙΚΕΣ: Α[30],  ΑΠ1, ΑΠ2, ΒΟΗΘ
           ΛΟΓΙΚΕΣ: Β
           ΑΚΕΡΑΙΕΣ: Κ, Λ
      ΑΡΧΗ
            ΓΙΑ Κ ΑΠΟ 2 ΜΕΧΡΙ 30
                  ΓΙΑ Λ ΑΠΟ 30 ΜΕΧΡΙ Κ ΜΕ_ΒΗΜΑ -1
                       ΑΝ Α[Λ-1] > Α[Λ] ΤΟΤΕ
                              ΒΟΗΘ <-- Α[Λ-1]
                              Α[Λ-1] <-- Α[Λ]
                              Α[Λ] <-- ΒΟΗΘ
                       ΤΕΛΟΣ_ΑΝ
                  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΑΝ Β ΤΟΤΕ
                  ΑΠ1 <-- Α[30]
                  ΑΠ2 <-- Α[29]
            ΑΛΛΙΩΣ
                  ΑΠ1 <-- Α[1]
                  ΑΠ2 <-- Α[2]
            ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ