Πέμπτη 29 Μαρτίου 2012

Επεξεργασία δοσμένου πλήθους τιμών

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

Λύση


     Αλγόριθμος Ασκ
     σ <-- 0
     Ακερ <-- 0
     Για κ από 1 μέχρι 50
         Διάβασε Χ
         Αν Α_Μ(Χ) = Χ τότε
              σ <-- σ+Χ
              Ακερ <-- Ακερ+1
         Τέλος_αν
     Τέλος_επανάληψης
     Αν Ακερ > 0 τότε
           ΜΟ <-- σ/Ακερ
           Εμφάνισε ΜΟ
     αλλιώς
           Εμφάνισε 'Δεν υπάρχει κανένας ακέραιος!'
     Τέλος_αν
     Τέλος Ασκ

Τετάρτη 28 Μαρτίου 2012

Συγγραφή συνάρτησης

Γράψτε συνάρτηση που υπολογίζει το άθροισμα των στοιχείων
της 1ης κυρίας διαγωνίου του ακέραιου πίνακα Α[10, 10, 10].

Λύση

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

Παρασκευή 23 Μαρτίου 2012

Δυαδική αναζήτηση του ακέραιου Χ στον ακέραιο ταξινομημένο πίνακα Α[200]

Ως γνωστόν η δυαδική αναζήτηση είναι μια μέθοδος που εφαρμόζεται
σε ταξινομημένους πίνακες. Η μέθοδος λειτουργεί ως εξής:
α) Υπάρχουν δύο δείκτες ΑΡΧ και ΤΕΛ που προσδιορίζουν το εύρος
    του διαστήματος μέσα στο οποίο κάνουμε την αναζήτηση
    (αρχικά ΑΡΧ = 1 και ΤΕΛ =  100)
β) Υπολογίζουμε το μέσο Μ του διαστήματος [ΑΡΧ, ΤΕΛ]
γ) Αν Α[Μ] = Χ, τότε το στοιχείο εντοπίστηκε στη θέση Μ και η
    μέθοδος ολοκληρώθηκε.
δ) Αν Α[Μ] < Χ, η αναζήτηση συνεχίζεται στο διάστημα [Μ+1, ΤΕΛ]
ε) Αν Α[Μ] > Χ, η αναζήτηση συνεχίζεται στο διάστημα [ΑΡΧ, Μ-1]
στ) Αν κατά την εκτέλεση της μεθόδου, το ΑΡΧ γίνει μεγαλύτερο του
      ΤΕΛ, είμαστε σίγουροι ότι η τιμή Χ δεν υπάρχει μέσα στον πίνακα
       και η αναζήτηση σταματά επί τόπου.
Γράψτε διαδικασία που να υλοποιεί την παραπάνω μέθοδο.

Λύση

      ΔΙΑΔΙΚΑΣΙΑ ΔΥΑΔΙΚΗ(Α, Χ, ΒΡΕΘ, ΘΕΣΗ)
      ΜΕΤΑΒΛΗΤΕΣ
             ΑΚΕΡΑΙΕΣ: Α[200], Χ, ΑΡΧ, ΤΕΛ, Μ
             ΛΟΓΙΚΕΣ : ΒΡΕΘ
      ΑΡΧΗ
             ΒΡΕΘ <-- ΨΕΥΔΗΣ
             ΑΡΧ <-- 1
             ΤΕΛ <-- 200
             Μ <-- (ΑΡΧ+ΤΕΛ) DIV 2
             ΘΕΣΗ <-- 0
             ΟΣΟ (ΑΡΧ <= ΤΕΛ) ΚΑΙ (ΒΡΕΘ = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ
                     ΑΝ Α[Μ] = Χ ΤΟΤΕ
                           ΒΡΕΘ <-- ΑΛΗΘΗΣ
                           ΘΕΣΗ <-- Μ
                     ΑΛΛΙΩΣ_ΑΝ Α[Μ] < Χ ΤΟΤΕ
                           ΑΡΧ <-- Μ+1
                     ΑΛΛΙΩΣ  ! A[M] > X
                           ΤΕΛ <-- Μ-1
                     ΤΕΛΟΣ_ΑΝ
                     Μ <-- (ΑΡΧ+ΤΕΛ) DIV 2
              ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
      ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Πέμπτη 22 Μαρτίου 2012

Ποιο είναι το περιεχόμενο του πίνακα

Ποιο θα είναι το περιεχόμενο του πίνακα Α[3, 4] μετά
την εκτέλεση των παρακάτω εντολών;
Για κ από 1 μέχρι 3
       Για λ από 1 μέχρι 4
              Α[κ, λ] <-- κ + λ mod 5
       Τέλος_επανάληψης
Τέλος_επανάληψης

Απάντηση
Ο κανόνας με τον οποίο γεμίζει ο πίνακας είναι απλός:
κάθε στοιχείο του παίρνει ως τιμή το αποτέλεσμα που
προκύπτει αν αθροίσουμε τη γραμμή στην οποία ανήκει
με τη στήλη στην οποία ανήκει (αφού λ mod 5 = λ, αν
λ <=4). Κατά συνέπεια ο πίνακας έχει το περιεχόμενο:
      2     3      4       5
      3     4      5       6
      4     5      6       7

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

Διορθώστε τις παρακάτω προτάσεις και επαναδιατυπώστε τις
με σωστό τρόπο.
1. Η πράξη / δίνει αποτέλεσμα ακεραίου τύπου.
2. Η πράξη ΟΧΙ εφαρμόζεται σε δύο ακέραια ορίσματα.
3. Ο πίνακας Α[12][13] είναι δυσδιάστατος.
4. Η γλώσσα μηχανής είναι μια ακολουθία από τιμές
   ΑΛΗΘΗΣ και ΨΕΥΔΗΣ.
5. Η εντολή ΑΝ..ΤΟΤΕ επιτρέπει τη βίαιη αλλαγή της
   σειράς εκτέλεσης των εντολών ενός προγράμματος.


Απαντήσεις

1. Η πράξη / δίνει αποτέλεσμα πραγματικού τύπου.
2. Η πράξη ΟΧΙ εφαρμόζεται σε ένα λογικό όρισμα.
3. Ο πίνακας Α[12, 13] είναι δυσδιάστατος.
4. Η γλώσσα μηχανής είναι μια ακολουθία από τιμές
   0 και 1.
5.  Η εντολή GOTO επιτρέπει τη βίαιη αλλαγή της
   σειράς εκτέλεσης των εντολών ενός προγράμματος.





Δευτέρα 19 Μαρτίου 2012

Κυκλώστε τα σωστά

Ποια από τα παρακάτω ισχύουν για τους τελεστές
1. Διακρίνονται σε αριθμητικούς, συγκριτικούς και λογικούς.
2. Χρησιμοποιούνται πολύ σπάνια.
3. Έχουν συγκεκριμένη ιεραρχία/προτεραιότητα.
4. Χρησιμοποιούνται για τη δημιουργία παραστάσεων.
5. Υποστηρίζονται από ελάχιστες γλώσσες προγραμματισμού.
6. Δίνουν πάντοτε αριθμητικό αποτέλεσμα.
7. Δυσχεραίνουν το έργο των προγραμματιστών.

Απαντήσεις
 1, 3, 4
 

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

Ποιες από τις παρακάτω προτάσεις ειναι σωστές και ποιες
λάθος;
1. Μέσα σε μια διαδικασία δεν μπορούμε να χρησιμοποιήσουμε
    επαναληπτικές δομές.
2. Δεν μπορούμε να χρησιμοποιήσουμε μια εντολή ΓΡΑΨΕ μέσα
    σε μια συνάρτηση.
3. 'Ενας πίνακας έχει πεπερασμένο πλήθος στοιχείων.
4. Ο πίνακας Α[3, 3, 3] είναι τριγωνικός.
5. Μια κατάσταση που πρέπει να αντιμετωπίσουμε και
    έχει προφανή λύση δεν αποτελεί πρόβλημα.

Απαντήσεις

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

Πέμπτη 15 Μαρτίου 2012

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

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

Απαντήσεις

1. εξόδου
2. ελεύθερο
3. τετραγωνικός
4. δεδομένων
5. υποπρογράμματος

Συγγραφή διαδικασίας

Γράψτε διαδικασία που γεμίζει τον ακέραιο πίνακα Α[12, 3, 9]
έτσι ώστε σε κάθε στοιχείο του να εκχωρείται ως τιμή το
γινόμενο των τριών συντεταγμένων του.

Λύση

       ΔΙΑΔΙΚΑΣΙΑ ΓΕΜ(Α)
       ΜΕΤΑΒΛΗΤΕΣ
             ΑΚΕΡΑΙΕΣ: Α[12, 3, 9], Κ, Λ, Μ
       ΑΡΧΗ
             ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 12
                  ΓΙΑ Λ ΑΠΟ 1 ΜΕΧΡΙ 3
                       ΓΙΑ Μ ΑΠΟ 1 ΜΕΧΡΙ 9
                              Α[Κ, Λ, Μ] <-- Κ*Λ*Μ
                       ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
       ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

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

Λύση

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

Κυριακή 11 Μαρτίου 2012

Συγγραφή διαδικασίας

Γράψτε διαδικασία η οποία γεμίζει τον ακέραιο πίνακα
Α[10] με τις τιμές Χ και Υ (εναλλάξ).

Λύση

      ΔΙΑΔΙΚΑΣΙΑ ΓΕΜ(Α, Χ, Υ)
      ΜΕΤΑΒΛΗΤΕΣ
           ΑΚΕΡΑΙΕΣ : Α[10], Χ, Υ
      ΑΡΧΗ
           ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 9 ΜΕ_ΒΗΜΑ 2
                 Α[Κ] <-- Χ
           ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
           ΓΙΑ Κ ΑΠΟ 2 ΜΕΧΡΙ 10 ΜΕ_ΒΗΜΑ 2
                 Α[Κ] <-- Υ
           ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
      ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Προσδιορίστε το περιεχόμενο του πίνακα

Ποιο είναι το περιεχόμενο του πίνακα Α[2, 3] μετά την
εκτέλεση των παρακάτω εντολών;
      Για κ από 1 μέχρι 2
           Για λ από 1 μέχρι 3
                Αν κ >= λ τότε
                       Α[κ, λ] <-- κ div λ
                αλλιώς
                       Α[κ, λ] <-- κ*λ
                Τέλος_αν
           Τέλος_επανάληψης
      Τέλος_επανάληψης

Λύση

     Παρατηρούμε ότι όταν η γραμμή στην οποία ανήκει το στοιχείο
     είναι μεγαλύτερη ή ίση από τη στήλη, εκχωρείται ως περιεχόμενο
     το πηλίκο της διαίρεσης των δύο συντεταγμένων. Σε αντίθετη
     περίπτωση το γινόμενό τους. Κατά συνέπεια:
          Α[1, 1] = 1 div 2 = 0
          A[1, 2] = 1*2 = 2
          A[1, 3] = 1*3 = 3
          A[2, 1] = 2 div 1 = 2
          A[2, 2] = 2 div 2 = 1
          A[2, 3] = 2*3 = 6
     To περιεχόμενο του πίνακα λοιπόν είναι:
              0       2       3
              2       1       6
  
    

Τετάρτη 7 Μαρτίου 2012

Κυκλώστε τα σωστά

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

Απαντήσεις

2, 3

Κυκλώστε τα σωστά

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

Απαντήσεις

2, 4, 5, 6

Δευτέρα 5 Μαρτίου 2012

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

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

Απαντήσεις

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

Πέμπτη 1 Μαρτίου 2012

Υπολογισμός ΜΚΔ

Γράψτε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
α) διαβάζει δύο θετικούς ακέραιους Α, Β τέτοιους ώστε
    Α > Β (να διασφαλίζεται η εγκυρότητα των εισερχόμενων
    δεδομένων),
β) να υπολογίζει και να εμφανίζει το μέγιστο κοινό
    διαιρέτη (ΜΚΔ) των Α, Β.

Λύση

     ΠΡΟΓΡΑΜΜΑ ΜΕΓ_ΚΟΙΝ_ΔΙΑΙΡ
     ΜΕΤΑΒΛΗΤΕΣ
            ΑΚΕΡΑΙΕΣ: Α, Β, ΥΠΟΛ, ΜΚΔ
     ΑΡΧΗ
            ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                   ΔΙΑΒΑΣΕ Α, Β
            ΜΕΧΡΙΣ_ΟΤΟΥ (Α > 0) ΚΑΙ (Β > 0) ΚΑΙ (Α > Β)
            ΥΠΟΛ <-- Β
            ΟΣΟ ΥΠΟΛ < > 0 ΕΠΑΝΑΛΑΒΕ
                   ΥΠΟΛ <-- Α MOD B
                   A <-- B
                   B <-- ΥΠΟΛ
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΜΚΔ <-- Α
            ΓΡΑΨΕ 'ΜΚΔ = ', ΜΚΔ
     ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ