Δευτέρα 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. Τόσο οι συναρτήσεις όσο και οι διαδικασίες γράφονται  
    μετά από το κύριο πρόγραμμα.