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

Άσκηση : δυσδιάστατος πίνακας (μετρητής ιδιότητας+άθροισμα ανά γραμμή+ελάχιστο ανά στήλη)

Γράψτε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
α) διαβάζει τις επωνυμίες 8 μεταφορικών εταιρειών και
     τις καταχωρεί σε κατάλληλο πίνακα,
β) διαβάζει το πλήθος των πακέτων που διακίνησε κάθε
     εταιρεία για κάθε μήνα του χρόνου που πέρασε,
γ) υπολογίζει και εμφανίζει:
     * πόσες εταιρείες διακίνησαν περισσότερα από 12000
        πακέτα κατά τη διάρκεια της προηγούμενης χρονιάς,
     * τις επωνυμίες των εταιρειών που διακίνησαν το
        μικρότερο πλήθος δεμάτων κατά το μήνα Νοέμβριο.

Λύση

      ΠΡΟΓΡΑΜΜΑ Εταιρείες
      ΜΕΤΑΒΛΗΤΕΣ
             ΧΑΡΑΚΤΗΡΕΣ: ΕΤ[8]
             ΑΚΕΡΑΙΕΣ: ΔΕΜ[8, 12], κ, λ, σ, Φ12, Μικ
      ΑΡΧΗ
             ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 8
                    ΔΙΑΒΑΣΕ ΕΤ[κ]
             ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             ΓΙΑ κ ΑΠΟ ΜΕΧΡΙ 8
                  ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 12
                      ΔΙΑΒΑΣΕ ΔΕΜ[κ, λ]
                  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             Φ12 <-- 0
             ΓΙΑ κ ΑΠΟ ΜΕΧΡΙ 8
                  σ <-- 0
                  ΓΙΑ λ ΑΠΟ ΜΕΧΡΙ 12
                      σ <-- σ+ΔΕΜ[κ, λ]
                  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
                  ΑΝ σ > 12000 ΤΟΤΕ
                       Φ12 <-- Φ12+1
                  ΤΕΛΟΣ_ΑΝ
             ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             ΓΡΑΨΕ Φ12
             Μικ <-- ΔΕΜ[1, 11]
             ΓΙΑ κ ΑΠΟ ΜΕΧΡΙ 8
                  ΑΝ ΔΕΜ[κ, 11] < Μικ ΤΟΤΕ
                       Μικ <-- ΔΕΜ[κ, 11]
                  ΤΕΛΟΣ_ΑΝ
             ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
             ΓΙΑ κ ΑΠΟ ΜΕΧΡΙ 8
                  ΑΝ ΔΕΜ[κ, 11] = Μικ ΤΟΤΕ
                       ΓΡΑΨΕ ΕΤ[κ]
                  ΤΕΛΟΣ_ΑΝ
             ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
      ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  

Σάββατο 27 Νοεμβρίου 2010

Άσκηση : δυσδιάστατος πίνακας (επεξεργασία δοσμένης γραμμής και στήλης)

Θεωρήστε τον πίνακα ΠΤΗΣΗ[16, 12] που περιέχει τις
ώρες πτήσης 16 πιλότων για κάθε μήνα του προηγούμενου
έτους. Γράψτε αλγόριθμο που, με δεδομένο τον παραπάνω
πίνακα, υπολογίζει και εμφανίζει:
α) το ετήσιο σύνολο των ωρών πτήσης για τον 7ο πιλότο,
β) τον αύξοντα αριθμό (1-16) του πιλότου που έκανε τις
     περισσότερες ώρες πτήσης κατά τη διάρκεια του
     Φεβρουαρίου.

Λύση

     Αλγόριθμος Πιλότοι
     Δεδομένα // ΠΤΗΣΗ //
     σ <-- 0
     Για λ από 1 μέχρι 12
          σ <-- σ+ΠΤΗΣΗ[7, λ]
     Τέλος_επανάληψης
     Εμφάνισε σ
     Μεγ <-- ΠΤΗΣΗ[1, 2]
     ΑΑΜεγ <-- 1
     Για λ από 2 μέχρι 16
          Αν ΠΤΗΣΗ[λ, 2] > Μεγ τότε
                Μεγ <-- ΠΤΗΣΗ[λ, 2]
                ΑΑΜεγ <-- λ
          Τέλος_αν
     Τέλος_επανάληψης
      Εμφάνισε ΑΑΜεγ
     Τέλος Πιλότοι

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

Άσκηση: Βρείτε τα λάθη

Το παρακάτω σύνολο εντολών υπολογίζει το γινόμενο Γ
50 θετικών και περιττών ακεραίων τιμών και εμφανίζει
στην οθόνη το τετράγωνο του Γ. Ωστόσο υπάρχουν
αρκετά λάθη, τόσο συντακτικά όσο και λογικά. Εντοπίστε
το καθένα από αυτά.

     Γ <-- 0
     Για κ από 1 μέχρι_και 50
          Αρχή_επανάληψης
              Διάβασε Χ
          Μέχρις_ότου (Χ <= 0) Ή mod 2 = 0)
          Γ <-- Γ*Χ
     Τέλος_επανάληψης
     Τύπωσε Γ*2

Λύση

    * Γ <-- 0 : λογικό λάθος (η αρχική τιμή πρέπει να είναι 1)
    * μέχρι_και : συντακτικό λάθος (σωστό είναι το μέχρι)
    * Η συνθήκη της Μέχρις ότου αποτελεί λογικό λάθος
       (σωστό : (Χ > 0) ΚΑΙ (Χ mod 2 = 1) )
    * Τύπωσε Γ*2 : συντακτικό λάθος στην Τύπωσε
       (σωστό : Εκτύπωσε) και λογικό λάθος στο Γ*2
       (σωστό Γ^2)

Εξαφανίστε την GOTO

Ξαναγράψτε το παρακάτω σύνολο εντολών έτσι ώστε
να ικανοποιεί τις αρχές του δομημένου προγραμματισμού
        Α <-- 0
    10: ΔΙΑΒΑΣΕ Χ
         ΑΝ Χ <= 0 ΤΟΤΕ GOTO 10
         A <-- A+X
         AN A <= 10000 TOTE GOTO 10
         AN A < 15000 TOTE GOTO 20
         AN A < 25000 TOTE  GOTO 30
         ΓΡΑΨΕ 'γ'
         GOTO 40
    20: ΓΡΑΨΕ 'α'
          GOTO 40
    30: ΓΡΑΨΕ 'β'
    40: ΓΡΑΨΕ 'ΤΕΛΟΣ'

Λύση

     Α <-- 0
     ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
          ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                ΔΙΑΒΑΣΕ Χ
          ΜΕΧΡΙΣ_ΟΤΟΥ Χ > 0
          Α <-- Α+Χ
     ΜΕΧΡΙΣ_ΟΤΟΥ Α > 10000
     ΑΝ  Α < 15000 ΤΟΤΕ
          ΓΡΑΨΕ 'α'
     ΑΛΛΙΩΣ_ΑΝ Α < 25000 ΤΟΤΕ
          ΓΡΑΨΕ 'β'
     ΑΛΛΙΩΣ
          ΓΡΑΨΕ 'γ'
     ΤΕΛΟΣ_ΑΝ
     ΓΡΑΨΕ 'ΤΕΛΟΣ'

      

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

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

Η ώρα Ελλάδας είναι 1,5 ώρα πίσω από την αντίστοιχη
του Ιράν. Γράψτε διαδικασία που δέχεται ως παραμέτρους
την ώρα Ελλάδας (σε 24ωρη μορφή, ώρα και λεπτά) και
υπολογίζει την αντίστοιχη ώρα Ιράν.

Λύση

     ΔΙΑΔΙΚΑΣΙΑ ΙΡΑΝ(ΩΕ, ΛΕ, ΩΙ, ΛΙ)
     ΜΕΤΑΒΛΗΤΕΣ
           ΑΚΕΡΑΙΕΣ: ΩΕ, ΛΕ, ΩΙ, ΛΙ, ΔΙΑΦ
     ΑΡΧΗ
           ΑΝ ΛΕ < 30 ΤΟΤΕ
                ΛΙ <-- ΛΕ+30
                ΔΙΑΦ <-- 0
           ΑΛΛΙΩΣ
                ΛΙ <-- ΛΕ-30
                ΔΙΑΦ <-- 1
           ΤΕΛΟΣ_ΑΝ
           ΑΝ ΩΕ <= 21 ΤΟΤΕ
                ΩΙ <-- ΩΕ+1+ΔΙΑΦ
           ΑΛΛΙΩΣ_ΑΝ ΩΕ = 22 ΤΟΤΕ
                ΩΙ <-- ΩΕ+1+ΔΙΑΦ
                ΑΝ ΩΙ = 24 ΤΟΤΕ
                     ΩΙ <-- 0
                ΤΕΛΟΣ_ΑΝ
           ΑΛΛΙΩΣ     ! ΩΕ = 23
                ΩΙ <-- ΔΙΑΦ
           ΤΕΛΟΣ_ΑΝ      
     ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

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

Μέσα στο σκληρό σας δίσκο υπάρχουν φωτογραφίες,
βίντεο, μουσική και κείμενα. Γράψτε διαδικασία
που διαβάζει το είδος (Φ - φωτογραφία, Β - βίντεο,
Μ - μουσική, Κ - κείμενο) κάθε αρχείου που υπάρχει
σ' αυτό το δίσκο (η είσοδος δεδομένων ολοκληρώνεται
μόλις δοθεί ως είδος το γράμμα 'Τ') και υπολογίζει
το πλήθος των φωτογραφιών, βίντεο, κειμένων και μουσικών
αρχείων.
Παρατήρηση : Πρέπει να διασφαλίζεται η εγκυρότητα των
εισερχόμενων δεδομένων.

Λύση

     ΔΙΑΔΙΚΑΣΙΑ  ΔΙΣΚΟΣ (Φωτ, Βιν, Μουσικ, Κειμ)
     ΜΕΤΑΒΛΗΤΕΣ
           ΑΚΕΡΑΙΕΣ: Φωτ, Βιν, Μουσικ, Κειμ
           ΧΑΡΑΚΤΗΡΕΣ: Είδος
     ΑΡΧΗ
           Φωτ <-- 0
           Βιν <-- 0
           Μουσικ <-- 0
           Κειμ <-- 0
           ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                     ΔΙΑΒΑΣΕ Είδος
                ΜΕΧΡΙΣ_ΟΤΟΥ (Είδος = 'Φ') Ή (Είδος = 'Β') Ή 
                              (Είδος = 'Μ') Ή (Είδος = 'Κ') Ή (Είδος = 'Τ')
                ΑΝ Είδος < > 'Τ' ΤΟΤΕ
                      ΑΝ Είδος = 'Φ' ΤΟΤΕ
                            Φωτ <-- Φωτ+1
                      ΑΛΛΙΩΣ_ΑΝ Είδος = 'Β' ΤΟΤΕ
                            Βιν <-- Βιν+1
                      ΑΛΛΙΩΣ_ΑΝ Είδος = 'Μ' ΤΟΤΕ
                            Μουσικ <-- Μουσικ+1
                      ΑΛΛΙΩΣ
                            Κειμ <-- Κειμ+1
                      ΤΕΛΟΣ_ΑΝ
                ΤΕΛΟΣ_ΑΝ
           ΜΕΧΡΙΣ_ΟΤΟΥ Είδος = 'Τ'
     ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

Διορθώστε τις παρακάτω  λανθασμένες προτάσεις και
επαναδιατυπώστε τις με σωστό τρόπο.
1. Στα υπολογιστικά προβλήματα  η τελική απάντηση
     είναι ένα ΝΑΙ ή ένα ΟΧΙ.
2. Όταν γράφουμε ένα αλγόριθμο χρησιμοποιώντας
    φυσική γλώσσα κατά βήματα, κινδυνεύουμε να
    παραβιάσουμε το κριτήριο της περατότητας.
3. Μια από τις περιπτώσεις που προτιμούμε τη
    σειριακή αναζήτηση είναι όταν ο πίνακας είναι
    μεγάλου μεγέθους.
4. Οι συμβολικές γλώσσες λέγονται και γλώσσες
    4ης γενιάς.
5. Ο τελεστής < > είναι λογικός.
6. Η εντολή Για..από..μέχρι είναι ιδανική για τη
    δημιουργία προγραμμάτων που λειτουργούν με
    μενού.
7. Ο πίνακας Β[12, 10]  έχει 120 στοιχεία ακεραίου
    τύπου.
8. Οι συναρτήσεις γράφονται πριν από το κύριο
    πρόγραμμα και οι διαδικασίες μετά.


 


Απάντηση

1. Στα προβλήματα  απόφασης η τελική απάντηση
     είναι ένα ΝΑΙ ή ένα ΟΧΙ.
2. Όταν γράφουμε ένα αλγόριθμο χρησιμοποιώντας    
    φυσική γλώσσα κατά βήματα, κινδυνεύουμε να
    παραβιάσουμε το κριτήριο της καθοριστικότητας.
3. Μια από τις περιπτώσεις που προτιμούμε τη
    σειριακή αναζήτηση είναι όταν ο πίνακας είναι
    μικρού μεγέθους.
4. Οι συμβολικές γλώσσες λέγονται και γλώσσες
    χαμηλού επιπέδου.
5. Ο τελεστής < > είναι συγκριτικός.
6. Η εντολή Μέχρις_ότου είναι ιδανική για τη
    δημιουργία προγραμμάτων που λειτουργούν με
    μενού.7. Ο πίνακας Β[12, 10]  έχει 120 στοιχεία ίδιου
    τύπου.
8. Τόσο οι συναρτήσεις όσο και οι διαδικασίες γράφονται  
    μετά από το κύριο πρόγραμμα.

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

Βρείτε τα συντακτικά και τα λογικά λάθη

Οι παρακάτω εντολές εκχώρησης φιλοδοξούν να
υπολογίσουν το μήκος Ζ της υποτείνουσας ορθογωνίου
τριγώνου με μήκη πλευρών Χ και Υ, χωρίς ωστόσο να
το καταφέρνουν. Γράψτε τον αριθμό της εντολής και
δίπλα τη λέξη Συντακτικό ή Λογικό, ανάλογα με το
λάθος που υπάρχει στην κάθε εντολή.
     1.  Ζ <-- Τ_Ρ(Χ^2)+Υ^2
     2.  Ζ <-- ΤΡ(Χ^2+Υ^2)
     3.  Ζ <-- Τ_Ρ( (Χ+Υ)^2 )
     4.  Ζ <-- Τ_Ρ(Χ^2+Υ^2
     5.  Ζ <-- Τ_Ρ(Χ2+Υ2)

Απάντηση

      1. Λογικό
      2. Συντακτικό
      3. Λογικό
      4. Συντακτικό
      5. Συντακτικό

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

Στην Γ' τάξη ενός ημερήσιου γενικού λυκείου φοιτούν
132 μαθητές. Γράψτε συνάρτηση που δέχεται ως παραμέτρους:
* τον πραγματικό πίνακα ΥΨΗ[132], που περιέχει τα ύψη των
   μαθητών,
* τον λογικό πίνακα ΦΥΛΟ[132], που περιέχει το φύλο των
   μαθητών ( ΑΛΗΘΗΣ - αγόρι, ΨΕΥΔΗΣ - κορίτσι),
* τον πραγματικό πίνακα ΒΑΡΗ[132], που περιέχει τα βάρη
   των μαθητών
και υπολογίζει το ποσοστό (%) επί του συνόλου των αγοριών,
των μαθητών που έχουν ύψος τουλάχιστον 1.65 και ζυγίζουν
το πολύ 68 κιλά.
Παρατήρηση : Αν ο υπολογισμός του ποσοστού δεν είναι
εφικτός, η συνάρτηση επιστρέφει την τιμή -1.

Λύση

ΣΥΝΑΡΤΗΣΗ Ποσοστό(ΥΨΗ, ΦΥΛΟ, ΒΑΡΗ) : ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
      ΠΡΑΓΜΑΤΙΚΕΣ: ΥΨΗ[132], ΒΑΡΗ[132]
      ΛΟΓΙΚΕΣ: ΦΥΛΟ[132]
      ΑΚΕΡΑΙΕΣ: Λ, Φ, ΑΓΟΡΙΑ
ΑΡΧΗ
       ΑΓΟΡΙΑ <-- 0
       Φ <-- 0
       ΓΙΑ Λ ΑΠΟ 1 ΜΕΧΡΙ 132
          ΑΝ ΦΥΛΟ[Λ] = ΑΛΗΘΗΣ ΤΟΤΕ
                ΑΓΟΡΙΑ <-- ΑΓΟΡΙΑ+1
                ΑΝ (ΥΨΗ[Λ] >= 1.65) ΚΑΙ (ΒΑΡΗ[Λ] <= 68) ΤΟΤΕ
                     Φ <-- Φ+1
               ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΑΝ
       ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
       ΑΝ ΑΓΟΡΙΑ > 0 ΤΟΤΕ
             Ποσοστό <-- 100*Φ/ΑΓΟΡΙΑ
       ΑΛΛΙΩΣ
             Ποσοστό <-- -1
       ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Κυριακή 21 Νοεμβρίου 2010

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

Σε ένα πάρτυ διασκεδάζουν 230 άτομα. Γράψτε διαδικασία
που δέχεται ως παράμετρο έναν ακέραιο πίνακα Η[230] που
περιέχει τις ηλικίες των ατόμων αυτών και υπολογίζει πόσα
από αυτά έχουν ηλικία 18, 19, 20, 21, ...., 46 έτη.

Λύση

      ΔΙΑΔΙΚΑΣΙΑ Ηλικίες(Η, Αποτ)
      ΜΕΤΑΒΛΗΤΕΣ
            ΑΚΕΡΑΙΕΣ: Η[230], Αποτ[29], Θ, λ
      ΑΡΧΗ
            ΓΙΑ λ ΑΠΟ 1 ΜΕΧΡΙ 29
                   Αποτ[λ] <-- 0
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΓΙΑ λ ΑΠΟ ΜΕΧΡΙ 230
                  ΑΝ (Η[λ] >= 18) ΚΑΙ (Η[λ] <= 46) ΤΟΤΕ
                      Θ <-- Η[λ]-17
                      Αποτ[Θ] <-- Αποτ[Θ]+1
                  ΤΕΛΟΣ_ΑΝ
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
      ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

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

Λύση

      ΣΥΝΑΡΤΗΣΗ ΥΠΟΛ(Χ) : ΠΡΑΓΜΑΤΙΚΗ
      ΜΕΤΑΒΛΗΤΕΣ
             ΠΡΑΓΜΑΤΙΚΕΣ: Χ
      ΑΡΧΗ
             ΑΝ Α_Μ(Χ) = Χ ΤΟΤΕ
                   ΥΠΟΛ <-- 4*Χ
             ΑΛΛΙΩΣ
                   ΥΠΟΛ <-- Χ^2
             ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Σάββατο 20 Νοεμβρίου 2010

Άσκηση: Φρουρός+απάντηση σε ερώτηση

Σε ένα τουρνουά σκακιού, εστιάζουμε την προσοχή μας
σε εκείνες τις παρτίδες που ολοκληρώθηκαν με νίκη
ενός εκ των δύο παικτών. Γράψτε πρόγραμμα σε ΓΛΩΣΣΑ
το οποίο:
α) διαβάζει το πλήθος των κινήσεων που απαιτήθηκαν προκει-
     μένου να ολοκληρωθεί καθεμιά από τις παραπάνω παρτίδες
     (η είσοδος δεδομένων ολοκληρώνεται μόλις δοθεί η απάντηση
     'ΟΧΙ' στην υποβαλλόμενη προς το χρήστη ερώτηση 'Υπάρχει
     άλλη παρτίδα;' ή όταν το εισαγόμενο πλήθος απαιτούμενων
     κινήσεων είναι μη θετικό),
β) υπολογίζει και εμφανίζει:
     * τον αύξοντα αριθμό της παρτίδας που ολοκληρώθηκε με
        το μικρότερο πλήθος κινήσεων από όλες τις άλλες,
     * το ποσοστό (%) των παρτίδων που ολοκληρώθηκαν με το
        πολύ 110 κινήσεις.
Παρατηρήσεις
Ι. Το ανώτερο πλήθος κινήσεων που απαιτήθηκε για την ολοκλήρωση
    μιας παρτίδας ήταν 225.
ΙΙ. Θεωρείστε ότι  δόθηκαν δεδομένα για τουλάχιστον μια παρτίδα.

Λύση


      ΠΡΟΓΡΑΜΜΑ Σκάκι
      ΜΕΤΑΒΛΗΤΕΣ
            ΑΚΕΡΑΙΕΣ: Κιν, Μικ, Φ, Πλήθος, ΑΑΜικ
            ΧΑΡΑΚΤΗΡΕΣ: Απ
            ΠΡΑΓΜΑΤΙΚΕΣ: ΠΟΣ
      ΑΡΧΗ
            Πλήθος <-- 0
            Μικ <-- 226
            Φ <-- 0
            ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                 ΔΙΑΒΑΣΕ Κιν
                 ΑΝ Κιν > 0 ΤΟΤΕ
                       Πλήθος <-- Πλήθος+1
                       ΑΝ Κιν < Μικ ΤΟΤΕ
                            Μικ <-- Κιν
                            ΑΑΜικ <-- Πλήθος
                       ΤΕΛΟΣ_ΑΝ
                       ΑΝ Κιν <= 110 ΤΟΤΕ
                            Φ <-- Φ+1
                       ΤΕΛΟΣ_ΑΝ
                 ΤΕΛΟΣ_ΑΝ
                 ΓΡΑΨΕ 'Υπάρχει άλλη παρτίδα;'
                 ΔΙΑΒΑΣΕ Απ
            ΜΕΧΡΙΣ_ΟΤΟΥ (Απ = 'ΟΧΙ') Ή (Κιν <= 0)
            ΠΟΣ <-- 100*Φ/Πλήθος
            ΓΡΑΨΕ ΑΑΜικ, ΠΟΣ
      ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Παρασκευή 19 Νοεμβρίου 2010

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

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

Λύση

      ΔΙΑΔΙΚΑΣΙΑ Βιβλία(Πλήθος, ΠΟΣ, ΜΟ)
      ΜΕΤΑΒΛΗΤΕΣ
             ΑΚΕΡΑΙΕΣ: Πλήθος, Φ
             ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ, Τιμή, ΠΟΣ, σ
      ΑΡΧΗ
             Πλήθος <-- 0
             Φ <-- 0
             σ <-- 0
             ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                  ΔΙΑΒΑΣΕ Τιμή
                  ΑΝ Τιμή > 0 ΤΟΤΕ
                         Πλήθος <-- Πλήθος+1
                         σ <-- σ+Τιμή
                         ΑΝ Τιμή > 12 ΤΟΤΕ
                               Φ <-- Φ+1
                         ΤΕΛΟΣ_ΑΝ
                  ΤΕΛΟΣ_ΑΝ
             ΜΕΧΡΙΣ_ΟΤΟΥ Τιμή <= 0
             ΑΝ Πλήθος > 0 ΤΟΤΕ
                   ΠΟΣ <-- 100*Φ/Πλήθος
                   ΜΟ <-- σ/Πλήθος
             ΑΛΛΙΩΣ
                   Πλήθος <-- -1
                   ΠΟΣ <-- -1
                   ΜΟ <-- -1
             ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Άσκηση : Μενού επιλογών

Γράψτε αλγόριθμο που παρέχει το ακόλουθο μενού
λειτουργιών
     1. Υπολογισμός του ποσοστού των αρτίων αριθμών
          από 1 έως και Ν
     2. Υπολογισμός πλήθους περιττών από 1 έως και Ν
     3. Υπολογισμός μέσου όρου Ν τυχαίων θετικών αριθμών
     4. Έξοδος
Αν η επιλογή του χρήστη είναι 1 ή 2 ή 3, διαβάζεται
ένας θετικός αριθμός Ν,  γίνεται ο αντίστοιχος υπολογισμός
και εμφανίζονται τα αποτελέσματα στην οθόνη. Όταν η
επιλογή είναι 4 (και μόνο τότε) ο αλγόριθμος τερματίζεται.
Παρατηρήσεις
Ι. Αν η επιλογή είναι 3, ο αλγόριθμος διαβάζει Ν τιμές
   εισόδου, διασφαλίζοντας ότι είναι θετικοί αριθμοί.
ΙΙ. Ο αλγόριθμος πρέπει να διασφαλίζει την εγκυρότητα των
     εισερχόμενων δεδομένων.

Λύση

      Αλγόριθμος Μενού
      Αρχή_επανάληψης
           Εμφάνισε '1. Ποσοστό αρτίων από 1 έως και Ν'
           Εμφάνισε '2. Πλήθος περιττών από 1 έως και Ν'
           Εμφάνισε '3. Μέσος όρος Ν τυχαίων θετικών'
           Εμφάνισε '4. Έξοδος'
           Αρχή_επανάληψης
                 Εμφάνισε 'Δώσε επιλογή:'
                 Διάβασε Επ
           Μέχρις_ότου (Επ >= 1) ΚΑΙ (Επ <= 4)
           Αν Επ < > 4 τότε
                Αρχή_επανάληψης
                      Διάβασε Ν
                Μέχρις_ότου Ν > 0
           Τέλος_αν
           Αν Επ = 1 τότε
                Αρτ <-- 0
                Για λ από 1 μέχρι Ν
                    Αν λ mod 2 = 0 τότε
                         Αρτ <-- Αρτ+1
                    Τέλος_αν
                Τέλος_επανάληψης
                ΠΟΣ <-- 100*Αρτ/Ν
                Εμφάνισε ΠΟΣ
           αλλιώς_αν Επ = 2 τότε
                Περ <-- 0
                Για λ από 1 μέχρι Ν
                    Αν λ mod 2 = 1 τότε
                         Περ <-- Περ+1
                    Τέλος_αν
                Τέλος_επανάληψης
                Εμφάνισε Περ
           αλλιώς_αν Επ = 3 τότε
                σ <-- 0
                Για λ από 1 μέχρι Ν
                    Αρχή_επανάληψης
                        Διάβασε Χ
                    Μέχρις_ότου Χ > 0

                    σ <-- σ+Χ
                Τέλος_επανάληψης
                ΜΟ <-- σ/Ν
                Εμφάνισε
ΜΟ
          αλλιώς   ! Επ = 4
                Εμφάνισε 'Τερματισμός λειτουργιών'
          Τέλος_αν  
      Μέχρις_ότου Επ = 4
      Τέλος Μενού

Πέμπτη 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 και έτσι
η Για..από..μέχρι δε θα τερματιστεί ποτέ (ατέρμων βρόχος)

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

Ποιές από τις παρακάτω προτάσεις είναι σωστές (Σ) και ποιές
λάθος (Λ);
1. Το εκτελέσιμο πρόγραμμα είναι το τελικό αποτέλεσμα του
     διερμηνευτή.
2. Η ιεραρχική σχεδίαση χρησιμοποιεί τη στρατηγική της συνεχούς
    διαίρεσης του προβλήματος σε υποπροβλήματα.
3. Με μια απλοποιημένη προσέγγιση, αλγόριθμος είναι μια
    "συνταγή" που προσδιορίζει τι πρέπει να κάνουμε κάτω από
    ορισμένες συνθήκες, έτσι ώστε να φτάσουμε στον επιθυμητό
    σκοπό.
4. Η επίλυση είναι ένα από τα στάδια αντιμετώπισης ενός προβλή-
    ματος, όπου υλοποιείται η λύση (μέσω της λύσης των επιμέρους
    προβλημάτων).
5. Οι σταθερές είναι αριθμητικές τιμές που δε μεταβάλλονται ποτέ.
6. Μια συνθήκη είναι μια παράσταση (έκφραση) λογικού τύπου.
7. Πολλαπλές επιλογές μπορούν να γίνουν και με εμφωλευμένες
   δομές επιλογής.
8. Ο βρόχος
        Για κ από 12 μέχρι -3
             Εντολές
        Τέλος_επανάληψης
     εκτελείται τουλάχιστον μια φορά.
9. Εισαγωγή είναι η λειτουργία της προσθήκης νέων κόμβων σε
    έναν υπάρχοντα πίνακα.
10. Η στοίβα είναι καθημερινό φαινόμενο.


Απάντηση

    1. Λ
    2. Σ
    3. Σ
    4. Σ
    5. Λ
    6. Σ
    7. Σ
    8. Λ
    9. Λ
   10. Λ

Απλοποίηση

Απλοποιήστε το παρακάτω σύνολο εντολών
      Αν (Χ >= 5) ΚΑΙ (Χ < > 5) τότε
             Ζ <-- Ψευδής Ή (Χ > Υ) Ή (Χ < Υ)
      αλλιώς
             Ζ <-- Α_Τ(5-Χ)+1
      Τέλος_αν


Λύση


      Αν Χ > 5 τότε
             Ζ <-- (Χ < > Υ)
      αλλιώς
             Ζ <-- 6-Χ
      Τέλος_αν

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

Ποιά από τα παρακάτω είναι πλεονεκτήματα του δομημένου
προγραμματισμού;
1. Δημιουργία απλούστερων προγραμμάτων
2. Υψηλή μεταφερσιμότητα
3. Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα
4. Δυσκολότερη διόρθωση και συντήρηση
5. Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος
6. Ανωτερότητα έναντι κάθε άλλης τεχνικής προγραμματισμού
7. Άμεση μεταφορά των αλγορίθμων σε προγράμματα







Απάντηση
      1, 3, 5, 7

Σάββατο 13 Νοεμβρίου 2010

Άσκηση : Βήμα-βήμα εκτέλεση (Όσο+Όσο)

Τι θα εμφανίσει το παρακάτω σύνολο εντολών, αν οι τιμές
εισόδου είναι 2 και 7;
     Διάβασε  ν, μ
     Όσο μ > 0 επανάλαβε
           Όσο ν < 5 επανάλαβε
                Εμφάνισε μ^(ν-1), μ+ν > 8
                ν <-- ν+2
           Τέλος_επανάληψης
           Εμφάνισε 2*μ+3*ν
           μ <-- μ-4
           ν <-- μ+1
     Τέλος_επανάληψης
     Εμφάνισε μ, ν

Λύση

     ν = 2, μ = 7
     1η επανάληψη της εξωτερικής Όσο
           1η επανάληψη της εσωτερικής Όσο
                    Αφού μ^(ν-1) = 7^(2-1) = 7^1 = 7 και 
                    μ+ν > 8 = 7+2 > 8 = 9> 8 = Αληθής, 
                    η Εμφάνισε τυπώνει:
                            7      Αληθής
                    ν = ν+2 = 2+2 = 4
           2η επανάληψη της εσωτερικής Όσο
                    Αφού μ^(ν-1) = 7^(4-1) = 7^3 = 343  και 
                    μ+ν > 8 = 7+4 > 8 = 11 > 8 = Αληθής, 
                    η Εμφάνισε τυπώνει:
                            343      Αληθής
                    ν = ν+2 = 4+2 = 6
           Η εσωτερική Όσο τερματίζεται με ν = 6.
           Αφού 2*μ+3*ν = 2*7+3*6 = 14+18 = 32, 
           η Εμφάνισε τυπώνει:
                  32
           μ = μ-4 = 7-4 = 3
           ν = μ+1 = 3+1 = 4
     2η επανάληψη της εξωτερικής Όσο
           1η επανάληψη της εσωτερικής Όσο
                    Αφού μ^(ν-1) = 3^(4-1) = 3^3 = 27 και 
                    μ+ν > 8 = 3+4 > 8 = 7 > 8 = Ψευδής, 
                    η Εμφάνισε τυπώνει:
                            27     Ψευδής
                    ν = ν+2 = 4+2 = 6
           Η εσωτερική Όσο τερματίζεται με ν = 6.
           Αφού 2*μ+3*ν = 2*3+3*6 = 6+18 = 24, 
           η Εμφάνισε τυπώνει:
                  24
           μ = μ-4 = 3-4 = -1
           ν = μ+1 = -1+1 = 0
     Η εξωτερική Όσο τερματίζεται.
     Η Εμφάνισε τυπώνει:
              -1      0

Άσκηση : Απάντηση σε ερώτηση+αναγωγή στη μονάδα+πορτοφόλι

Γράψτε αλγόριθμο που:
α) διαβάζει τις τιμές πώλησης και το πλήθος σε κόλλες
    κάποιων τετραδίων (η είσοδος δεδομένων ολοκληρώνεται
    μόλις δοθεί η απάντηση 'Ο' ή 'ο' στην υποβαλλόμενη προς
    το χρήστη ερώτηση 'Υπάρχει άλλο τετράδιο;'),
β) υπολογίζει και εμφανίζει:
    * πόσα τετράδια εξετάστηκαν συνολικά,
    * τον αύξοντα αριθμό του πιο συμφέροντος τετραδίου,
    * πόσα τέτοια τετράδια μπορείτε να προμηθευτείτε με
       27 ευρώ.
Παρατηρήσεις
Ι. Κανένα τετράδιο δεν είχε τιμή πώλησης μεγαλύτερη από
    7 ευρώ.
ΙΙ. Η πιο συμφέρουσα επιλογή είναι μοναδική.
ΙΙΙ. Δεν απαιτείται έλεγχος της εγκυρότητας των εισερχόμενων
      δεδομένων.

Λύση

     Αλγόριθμος Τετράδια
     ΜΙΝ <-- 8
     Πληθ <-- 0
     Αρχή_επανάληψης
           Διάβασε Τιμή, Κόλλες
           Πληθ <-- Πληθ+1
           ΤιμΚολ <-- Τιμή/Κόλλες
           Αν ΤιμΚολ < ΜΙΝ τότε
                ΜΙΝ <-- ΤιμΚολ
                ΑΑΜΙΝ <-- Πληθ
                ΣυμφΤιμ <-- Τιμή
           Τέλος_αν
           Εμφάνισε 'Υπάρχει άλλο τετράδιο;'
           Διάβασε Απ
     Μέχρις_ότου (Απ = 'Ο') Ή (Απ = 'ο')
     Εμφάνισε Πληθ, ΑΑΜΙΝ
     Ποσό <-- 27
     Αγ <-- 0
     Όσο Ποσό >= ΣυμφΤιμ επανάλαβε
           Ποσό <-- Ποσό-ΣυμφΤιμ
           Αγ <-- Αγ+1
     Τέλος_επανάληψης
     Εμφάνισε Αγ
     Τέλος Τετράδια
  

Παρασκευή 12 Νοεμβρίου 2010

Άσκηση με GOTO

Επαναδιατυπώστε το παρακάτω σύνολο εντολών έτσι ώστε να
ακολουθεί τις αρχές του δομημένου προγραμματισμού
      Γ <-- 1
      ΔΙΑΒΑΣΕ Χ
 10: ΑΝ Χ = 0 ΤΟΤΕ GOTO 20
       Γ <-- Γ*Χ
       ΔΙΑΒΑΣΕ Χ
       GOTO 10
 20: ΓΡΑΨΕ Γ

Λύση

     Γ <-- 1
     ΔΙΑΒΑΣΕ Χ
     ΟΣΟ Χ < > 0 ΕΠΑΝΑΛΑΒΕ
             Γ <-- Γ*Χ
             ΔΙΑΒΑΣΕ Χ
     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

Διορθώστε τις παρακάτω λανθασμένες προτάσεις και επαναδια-
τυπώστε τις
1. Η λύση ενός τεστ με ερωτήσεις σωστού-λάθους είναι ένα
    αδόμητο πρόβλημα.
2. Η διαγραμματική αναπαράσταση μιας Αν..τότε..αλλιώς_αν
    περιλαμβάνει δύο ή περισσότερους ρόμβους που διατάσσονται
    από πάνω προς τα κάτω.
3. Η γλώσσα C ανήκει στην κατηγορία των γλωσσών
    προγραμματισμού συσκευών.
4. Όταν το υποπρόγραμμα υπολογίζει ένα μόνο αποτέλεσμα
    και οι εντολές του δεν περιλαμβάνουν ΓΡΑΨΕ και ΔΙΑΒΑΣΕ,
    πρέπει να υλοποιηθεί ως διαδικασία.
5. Μια εγγραφή αποτελείται από ένα ή περισσότερους κόμβους.


Απάντηση

1. Η λύση ενός τεστ με ερωτήσεις σωστού-λάθους είναι ένα
    δομημένο πρόβλημα.
2. Η διαγραμματική αναπαράσταση μιας Αν..τότε..αλλιώς_αν 
    περιλαμβάνει δύο ή περισσότερους ρόμβους που διατάσσονται
    από αριστερά προς τα δεξιά.
3. Η γλώσσα C ανήκει στην κατηγορία των γλωσσών 
    προγραμματισμού συστημάτων.
4. Όταν το υποπρόγραμμα υπολογίζει ένα μόνο αποτέλεσμα
    και οι εντολές του δεν περιλαμβάνουν ΓΡΑΨΕ και ΔΙΑΒΑΣΕ,
    πρέπει να υλοποιηθεί ως συνάρτηση.
5. Μια εγγραφή αποτελείται από ένα ή περισσότερα πεδία.

Άσκηση : Δυσδιάστατος πίνακας(μέγιστα ανά γραμμή+μετρητής ιδιότητας)

Θεωρείστε τον ακέραιο πίνακα ΕΦΗΜ[12, 120] που περιέχει το
πλήθος των φύλλων που πούλησαν 12 αθλητικές εφημερίδες τις
τελευταίες 120 ημέρες.Γράψτε αλγόριθμο που με δεδομένο τον
παραπάνω πίνακα, υπολογίζει και εμφανίζει:
α) τη μεγαλύτερο πλήθος πουλημένων φύλλων για κάθε εφημε-
    ρίδα και τον αύξοντα αριθμό (1-12) της ημέρας που σημειώθηκε
    το παραπάνω γεγονός,
β) πόσες εφημερίδες πούλησαν τουλάχιστον 15 φορές περισσότερα
    από 15000 φύλλα ημερησίως.

Λύση

        Αλγόριθμος ΑΘΛ
        Δεδομένα // ΕΦΗΜ //
        Φ15 <-- 0
        Για κ από 1 μέχρι 12
             ΜΑΧ <-- ΕΦΗΜ[κ, 1]
             ΗμερΜΑΧ <-- 1
             Πληθ <-- 0
             Για λ από 1 μέχρι 120
                   Αν ΕΦΗΜ[κ, λ] > ΜΑΧ τότε
                         ΜΑΧ <-- ΕΦΗΜ[κ, λ]
                         ΗμερΜΑΧ <-- λ
                   Τέλος_αν
                   Αν ΕΦΗΜ[κ, λ] > 15000 τότε
                         Πληθ <-- Πληθ+1
                   Τέλος_αν
             Τέλος_επανάληψης
             Εμφάνισε ΜΑΧ, ΗμερΜΑΧ
             Αν Πληθ >= 15 τότε
                   Φ15 <-- Φ15+1
             Τέλος_αν
        Τέλος_επανάληψης
        Εμφάνισε Φ15
        Τέλος ΑΘΛ

Άσκηση : Δυσδιάστατοι πίνακες (αθροίσματα ανά γραμμή+στήλη)

Γράψτε αλγόριθμο που :
α) διαβάζει το πλήθος των πελατών που εξυπηρετούν 5
     ταμίες μιας τράπεζας κάθε εργάσιμη ημέρα του Φεβρουαρίου
     και καταχωρεί τα δεδομένα αυτά στον ακέραιο πίνακα
     ΠΕΛΑΤΕΣ[5, 20],
β) υπολογίζει και εμφανίζει:
    * το σύνολο των πελατών που εξυπηρέτησε κάθε 
       ταμίας (μέσα στο Φεβρουάριο),
    * το σύνολο των πελατών που εξυπηρετήθηκαν από
       όλους τους ταμίες, για κάθε εργάσιμη ημέρα ξεχωριστά.

Λύση

      Αλγόριθμος ΤΡΑΠΕΖΑ
      Για κ από 1 μέχρι 5
           Για λ από 1 μέχρι 20
                 Διάβασε ΠΕΛΑΤΕΣ[κ, λ]
           Τέλος_επανάληψης
      Τέλος_επανάληψης
      Για κ από μέχρι 5
           σ <-- 0
           Για λ από μέχρι 20
                 σ <-- σ+ΠΕΛΑΤΕΣ[κ, λ]
           Τέλος_επανάληψης
           Εμφάνισε 'Σύνολο πελατών για ', κ , 'ταμία:', σ
      Τέλος_επανάληψης
       Για λ από μέχρι 20
           σ <-- 0
           Για κ από μέχρι 5
                 σ <-- σ+ΠΕΛΑΤΕΣ[κ, λ]
           Τέλος_επανάληψης
           Εμφάνισε 'Σύνολο πελατών για ', λ , 'ημέρα:', σ
      Τέλος_επανάληψης
      Τέλος ΤΡΑΠΕΖΑ

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

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

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


Απάντηση

1. Τα προγράμματα γράφονται σε μια γλώσσα προγραμματισμού.
2. Η παράσταση που ελέγχει μια ΑΝ..ΤΟΤΕ..ΑΛΛΙΩΣ
    μπορεί να πάρει ακριβώς δύο τιμές.
3. Η προσπέλαση είναι μια από τις βασικές λειτουργίες σε
    μια δομή δεδομένων.
4. Η μορφή με την οποία διατυπώνεται ένα πρόβλημα πρέπει
    να είναι τέτοια ώστε να γίνεται αντιληπτή με μια από τις πέντε
    ανθρώπινες αισθήσεις μας.
5. Ο τμηματικός προγραμματισμός είναι μια τεχνική σχεδίασης
    προγραμμάτων που στηρίζεται στη φιλοσοφία των υποπρο-
    γραμμάτων.

Φρουρός

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

Λύση

     ΠΡΟΓΡΑΜΜΑ ΠΕΤΡΕΛΑΙΟ
     ΜΕΤΑΒΛΗΤΕΣ
            ΑΚΕΡΑΙΕΣ: Πληθ, ΑΑΜΙΝ
            ΠΡΑΓΜΑΤΙΚΕΣ: Τιμή, ΜΙΝ, Κόστος
     ΑΡΧΗ
            ΜΙΝ <-- 1000000
            Πληθ <-- 0
            ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                   ΔΙΑΒΑΣΕ Τιμή
                   ΑΝ Τιμή > 0 ΤΟΤΕ
                         Πληθ <-- Πληθ+1
                         ΑΝ Τιμή < ΜΙΝ ΤΟΤΕ
                               ΜΙΝ <-- Τιμή
                               ΑΑΜΙΝ <-- Πληθ
                         ΤΕΛΟΣ_ΑΝ
                   ΤΕΛΟΣ_ΑΝ
            ΜΕΧΡΙΣ_ΟΤΟΥ Τιμή <= 0
            ΑΝ Πληθ > 0 ΤΟΤΕ
                   Κόστος <-- 2000*ΜΙΝ
                   ΓΡΑΨΕ ΑΑΜΙΝ, Κόστος
            ΑΛΛΙΩΣ
                   ΓΡΑΨΕ 'Δε δόθηκαν δεδομένα'
            ΤΕΛΟΣ_ΑΝ
     ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

Άσκηση : Εμφωλευμένα Για+μέγιστο+ελάχιστο

Γράψτε αλγόριθμο που διαβάζει:
α) τις επωνυμίες 15 εστιατορίων και τις μηνιαίες εισπράξεις
    τους τα τελευταία πέντε χρόνια (από 2005 έως και 2009),
β) υπολογίζει και εμφανίζει :
    * την επωνυμία του εστιατορίου που πέτυχε τη μεγαλύτερη
       μηνιαία είσπραξη, τον αύξοντα αριθμό του μήνα (1-12)
       που σημειώθηκε το γεγονός αυτό και  το έτος στο οποίο
       αντιστοιχεί,
    * την επωνυμία του εστιατορίου που πέτυχε τη μικρότερη
       μηνιαία είσπραξη, τον αύξοντα αριθμό του μήνα (1-12)
       που σημειώθηκε το γεγονός αυτό και  το έτος στο οποίο
       αντιστοιχεί.
Παρατηρήσεις
Ι. Όλες οι μηνιαίες εισπράξεις είναι διαφορετικές μεταξύ
   τους.
ΙΙ. Ο αλγόριθμος πρέπει να διασφαλίζει την εγκυρότητα των
     εισερχόμενων δεδομένων και συγκεκριμένα ότι:
    * οι επωνυμίες είναι διαφορετικές από το κενό διάστημα,
    * οι μηνιαίες εισπράξεις είναι θετικοί αριθμοί που δεν
       υπερβαίνουν το 5600.

Λύση

       Αλγόριθμος ΕΣΤ
       Μεγ <-- -1111
       Μικ <-- 5601
       Για κ από 1 μέχρι 15
              Αρχή_επανάληψης
                  Διάβασε Εστ
              Μέχρις_ότου Εστ < > '  '
             Για λ από 1 μέχρι 5
                   Για μ από 1 μέχρι 12
                         Αρχή_επανάληψης
                               Διάβασε Εισπ
                         Μέχρις_ότου (Εισπ > 0) ΚΑΙ (Εισπ <= 5600)
                         Αν Εισπ > Μεγ τότε
                               Μεγ <-- Εισπ
                               ΕστΜεγ <-- Εστ
                               ΧρΜεγ <-- 2004+λ
                               ΜηνΜεγ <-- μ
                         Τέλος_αν
                         Αν Εισπ < Μικ τότε
                               Μικ <-- Εισπ
                               ΕστΜικ <-- Εστ
                               ΧρΜικ <-- 2004+λ
                               ΜηνΜικ <-- μ
                         Τέλος_αν
                   Τέλος_επανάληψης
             Τέλος_επανάληψης
       Τέλος_επανάληψης
       Εμφάνισε ΕστΜεγ, ΧρΜεγ, ΜηνΜεγ
       Εμφάνισε ΕστΜικ, ΧρΜικ, ΜηνΜικ
       Τέλος ΕΣΤ

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

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

Ποιές από τις παρακάτω προτάσεις είναι σωστές και ποιές
λάθος;
1. Ο υπολογιστής διαθέτει φαντασία και μπορεί να παράγει
    ιδέες.
2. Ένα πρόβλημα μπορεί να έχει προφανή λύση.
3. Η ροή των εντολών σε ένα διάγραμμα ροής υποδεικνύεται
    από βέλη.
4. Η περιεχόμενη ομάδα εντολών μιας Για..από..μέχρι μπορεί
    να μην εκτελεστεί καμία φορά.
5. Όταν προσπαθούμε να βγάλουμε ένα στοιχείο από μια άδεια
    στοίβα εκδηλώνεται το φαινόμενο της υπερχείλισης.
6. Για να υλοποιήσουμε μια στοίβα χρειαζόμαστε ένα μονο-
    διάστατο πίνακα και δύο δείκτες.
7. Ο συμβολομεταφραστής μεταφράζει ένα πρόγραμμα
    που είναι γραμμένο σε συμβολική γλώσσα, σε 0 και 1.
8. Με τις γλώσσες υψηλού επιπέδου, το κόστος δημιουργίας
    των προγραμμάτων αυξήθηκε σημαντικά.
9. Η επιλογή της μεθόδου ταξινόμησης εξαρτάται και από
    την αρχική διάταξη των στοιχείων του πίνακα.
10. Οι πίνακες απαιτούν μνήμη.
11. Κάθε διαδικασία έχει ένα μοναδικό τύπο.
12. Κάθε συνάρτηση τελειώνει με τη δεσμευμένη λέξη
      ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ.

Απάντηση

1. Λ
2. Λ
3. Σ
4. Σ
5. Λ
6. Σ
7. Σ
8. Λ
9. Σ
10. Σ
11. Λ
12. Σ

Κυριακή 7 Νοεμβρίου 2010

Άσκηση : Μονοδιάστατοι πίνακες (ΜΟ+Μέγιστο+Μετρητής ιδιότητας)

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

Λύση

     Αλγόριθμος Νομοί
     Για λ από 1 μέχρι 15
          Διάβασε Νομ[λ]
          Διάβασε Πληθ[λ]
     Τέλος_επανάληψης
     σ <-- 0
     Φ <-- 0
     Μεγ <-- -100
     Για λ από μέχρι 15
          Αν Πληθ[λ] > Μεγ τότε
               Μεγ <-- Πληθ[λ]
               ΝοΜεγ <-- Νομ[λ]
          Τέλος_αν
          σ <-- σ+Πληθ[λ]
          Αν Πληθ[λ] > 180000 τότε
                Φ <-- Φ+1
          Τέλος_αν   
     Τέλος_επανάληψης
     ΜΟ <-- σ/15
     Εμφάνισε ΜΟ, ΝοΜεγ, Φ
     Τέλος Νομοί

Σάββατο 6 Νοεμβρίου 2010

Άσκηση : Μονοδιάστατοι πίνακες (Φιλτράρισμα+Ταξινόμηση)

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

Λύση

     Αλγόριθμος Επαγγελματίες
     Για λ από 1 μέχρι 20
           Διάβασε ΟΝ[λ], ΑΦΜ[λ], Ενημ[λ]
     Τέλος_επανάληψης
     ΜεΟφ <-- 0
     ΧωρΟφ <-- 0
     Για λ από μέχρι 20
           Αν Ενημ[λ] = 1 τότε
                ΧωρΟφ <-- ΧωρΟφ+1
                ΟΝΧωρΟφ[ΧωρΟφ] <-- ΟΝ[λ]
                ΑΦΜΧωρΟφ[ΧωρΟφ] <-- ΑΦΜ[λ]
           αλλιώς
                ΜεΟφ <-- ΜεΟφ+1
           Τέλος_αν
     Τέλος_επανάληψης
     Εμφάνισε ΧωρΟφ, ΜεΟφ
     Για κ από 2 μέχρι ΧωρΟφ
          Για λ από ΧωρΟφ μέχρι κ με_βήμα -1
                Αν ΟΝΧωρΟφ[λ-1] > ΟΝΧωρΟφ[λ] τότε
                       Βοηθ <-- ΟΝΧωρΟφ[λ-1]
                       ΟΝΧωρΟφ[λ-1] <-- ΟΝΧωρΟφ[λ]
                       ΟΝΧωρΟφ[λ] <-- Βοηθ
                       ΤΕΜΡ <-- ΑΦΜΧωρΟφ[λ-1]
                       ΑΦΜΧωρΟφ[λ-1] <-- ΑΦΜΧωρΟφ[λ]
                       ΑΦΜΧωρΟφ[λ] <-- ΤΕΜΡ
                Τέλος_αν
          Τέλος_επανάληψης
     Τέλος_επανάληψης
     Για κ από 1 μέχρι ΧωρΟφ
           Εμφάνισε ΟΝΧωρΟφ[κ], ΑΦΜΧωρΟφ[κ]
     Τέλος_επανάληψης
     Τέλος Επαγγελματίες

Παρασκευή 5 Νοεμβρίου 2010

Άσκηση : Κουμπαράς

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

Λύση

     Αλγόριθμος ΦΟΡ
     Διάβασε Ρεκόρ
     Σύνολο <-- 0
     Χρόνια <-- 0
     Όσο Σύνολο <= Ρεκόρ επανάλαβε
           Διάβασε Γκολ
           Σύνολο <-- Σύνολο+Γκολ
           Χρόνια <-- Χρόνια+1
     Τέλος_επανάληψης
     Εμφάνισε Χρόνια
     Τέλος ΦΟΡ