e-ΜΑΘΗΜΑΤΑ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό περιβάλλον

Λύσεις ασκήσεων από τον Οδηγό Μελέτης Μαθητών


ΠΡΟΓΡΑΜΜΑ ΚΛΗΣΗ_ΥΠΟΠΡΟΓΡΑΜΜΑΤΟΣ
! ΑΕΠΠ - Οδηγός Μελέτης Μαθητή
! Μη λυμένες ασκήσεις 5.4.4.9
!
!9. Να γραφεί πρόγραμμα σε «ΓΛΩΣΣΑ» το οποίο να:
!1) Καταχωρεί στους πίνακες Ημέρα[500] και Μήνα[500] την ημέρα
!   και τον μήνα αντίστοιχα μιας δαπάνης, στον πίνακα Περιγραφή[500]
!   την περιγραφή της δαπάνης και στον πίνακα Κόστος[500] το
!   συνολικό ποσό της αντίστοιχης δαπάνης.
!2) Ταξινομεί τους πίνακες πρώτα ως προς το μήνα κατά αύξουσα τάξη
!   και στην περίπτωση ίδιου μήνα η ταξινόμηση να γίνει ως προς την ημέρα,
!   κατά αύξουσα τάξη.
!3) Δίνονται από το πληκτρολόγιο 2 ημερομηνίες (εκφράζουν μια χρονική
!   περίοδο) να εμφανίζεται η περιγραφή κάθε δαπάνης με τα αντίστοιχα
!   ποσά δαπάνης της χρονικής περιόδου που πληκτρολογήσαμε.
!   Επίσης στο τέλος να εμφανίζεται το συνολικό ποσό που έχει ξοδευτεί
!   την αντίστοιχη χρονική περίοδο.
!4) Να γίνεται χρήση του υποπρογράμματος ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ,
!   που να ελέγχει ότι η 1η ημ/νια είναι μικρότερη από την 2η ημ/νία .
!   Στην αντίθετη περίπτωση να τις αντιμεταθέτει. Να χρησιμοποιηθεί
!   η διαδικασία ΑΝΤΙΜΕΤΑΘΕΣΗ όπου χρειάζεται.

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ημερα[50], Μήνα[50], i, j, temp
  ΑΚΕΡΑΙΕΣ: ημέρα1, ημέρα2, μήνα1, μήνα2, start, end
  ΠΡΑΓΜΑΤΙΚΕΣ: Κόστος[50], temp_Πρ, sum
  ΧΑΡΑΚΤΗΡΕΣ: Περιγραφή[50], temp_Χαρ
  ΛΟΓΙΚΕΣ: οκ
ΑΡΧΗ
! 1) Καταχωρεί στους πίνακες Ημέρα[50] και Μήνα[50] την ημέρα
!   και τον μήνα αντίστοιχα μιας δαπάνης, στον πίνακα Περιγραφή[50]
!   την περιγραφή της δαπάνης και στον πίνακα Κόστος[50] το
!   συνολικό ποσό της αντίστοιχης δαπάνης.
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
    ΓΡΑΨΕ 'Δαπάνη : ', i
    ΓΡΑΨΕ 'Δώστε ημέρα : '
    ΔΙΑΒΑΣΕ ημερα[i] 
    ΓΡΑΨΕ 'Δώστε Μήνα : '
    ΔΙΑΒΑΣΕ Μήνα[i] 
    ΓΡΑΨΕ 'Δώστε Περιγραφή : '
    ΔΙΑΒΑΣΕ Περιγραφή[i] 
    ΓΡΑΨΕ 'Δώστε Κόστος : '
    ΔΙΑΒΑΣΕ Κόστος[i] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!2) Ταξινομεί τους πίνακες πρώτα ως προς το μήνα κατά αύξουσα τάξη
!   και στην περίπτωση ίδιου μήνα η ταξινόμηση να γίνει ως προς την ημέρα,
!   κατά αύξουσα τάξη.

  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 50
    ΓΙΑ j ΑΠΟ 50 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
      ΑΝ (Μήνα[j - 1] > Μήνα[j]) Η
        & ( Μήνα[j - 1] = Μήνα[j] ΚΑΙ ημερα[j - 1] > ημερα[j]) ΤΟΤΕ

        temp <- Μήνα[j - 1] 
        Μήνα[j - 1] <- Μήνα[j] 
        Μήνα[j] <- temp

        temp <- ημερα[j - 1] 
        ημερα[j - 1] <- ημερα[j] 
        ημερα[j] <- temp

        temp_Πρ <- Κόστος[j - 1] 
        Κόστος[j - 1] <- Κόστος[j] 
        Κόστος[j] <- temp_Πρ

        temp_Χαρ <- Περιγραφή[j - 1] 
        Περιγραφή[j - 1] <- Περιγραφή[j] 
        Περιγραφή[j] <- temp_Χαρ

      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!3) Δίνονται από το πληκτρολόγιο 2 ημερομηνίες (εκφράζουν μια χρονική
!   περίοδο)
  ΓΡΑΨΕ 'Δώστε 1η Ημερομηνία (ημέρα, μήνα)'
  ΔΙΑΒΑΣΕ ημέρα1, μήνα1
  ΓΡΑΨΕ 'Δώστε 2η Ημερομηνία (ημέρα, μήνα)'
  ΔΙΑΒΑΣΕ ημέρα2, μήνα2

!4) Να γίνεται χρήση του υποπρογράμματος ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ,
!   που να ελέγχει ότι η 1η ημ/νια είναι μικρότερη από την 2η ημ/νία .
!   Στην αντίθετη περίπτωση να τις αντιμεταθέτει. Να χρησιμοποιηθεί
!   η διαδικασία ΑΝΤΙΜΕΤΑΘΕΣΗ όπου χρειάζεται.
  ΚΑΛΕΣΕ ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ (ημέρα1, μήνα1, ημέρα2, μήνα2, οκ) 
  ΑΝ οκ = ΨΕΥΔΗΣ ΤΟΤΕ
    ΚΑΛΕΣΕ ΑΝΤΙΜΕΤΑΘΕΣΗ (ημέρα1, μήνα1, ημέρα2, μήνα2) 
  ΤΕΛΟΣ_ΑΝ

! 3β   να εμφανίζεται η περιγραφή κάθε δαπάνης με τα αντίστοιχα
!   ποσά δαπάνης της χρονικής περιόδου που πληκτρολογήσαμε.
!   Επίσης στο τέλος να εμφανίζεται το συνολικό ποσό που έχει ξοδευτεί
!   την αντίστοιχη χρονική περίοδο.

! Για να βρούμε από ποια γραμμή των πινάκων θα αρχίσουμε την άθροιση
! κοιτάμε από την αρχή τις ημερομηνίες και όσο είναι μικρότερες από
! την επιθυμητή αρχή ελέγχουμε την επόμενη.
  i <- 1
  οκ <- ΑΛΗΘΗΣ
  ΟΣΟ i <= 50 ΚΑΙ οκ = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
    ΚΑΛΕΣΕ ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ ( ημερα[i], Μήνα[i], ημέρα1, μήνα1, οκ) 
    ΑΝ οκ = ΑΛΗΘΗΣ ΤΟΤΕ
      i <- i + 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  start <- i

! Για να βρούμε μέχρι οια γραμμή των πινάκων θα τελειώσουμε την άθροιση
! κοιτάμε από το τέλος  τις ημερομηνίες και όσο είναι μεγαλύτερες από
! το επιθυμητό τέλος ελέγχουμε την προηγούμενη.
  i <- 50
  οκ <- ΑΛΗΘΗΣ
  ΟΣΟ i >= 1 ΚΑΙ οκ = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
    ΚΑΛΕΣΕ ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ ( ημέρα2, μήνα2, ημερα[i], Μήνα[i], οκ) 
    ΑΝ οκ = ΑΛΗΘΗΣ ΤΟΤΕ
      i <- i - 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  end <- i

  ! ΓΡΑΨΕ start, end
  sum <- 0
  ΓΙΑ i ΑΠΟ start ΜΕΧΡΙ end
    ΓΡΑΨΕ Περιγραφή[i], ' : ', Κόστος[i]
    sum <- sum + Κόστος[i] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Συνολικό ποσό : ', sum
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ



ΔΙΑΔΙΚΑΣΙΑ ΕΛΕΓΧΟΣ_ΗΜΕΡΟΜΗΝΙΑΣ (η1, μ1, η2, μ2, οκ) 
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: η1, μ1, η2, μ2
  ΛΟΓΙΚΕΣ: οκ

ΑΡΧΗ
  ΑΝ (μ1 < μ2) Η (μ1 = μ2 ΚΑΙ η1 < η2) ΤΟΤΕ
    οκ <- ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ
    οκ <- ΨΕΥΔΗΣ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ ΑΝΤΙΜΕΤΑΘΕΣΗ (η1, μ1, η2, μ2) 
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: η1, μ1, η2, μ2, temp
ΑΡΧΗ
  temp <- η1
  η1 <- η2
  η2 <- temp

  temp <- μ1
  μ1 <- μ2
  μ2 <- temp

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

 

© 2020 - 2ο Γενικό Λύκειο Γέρακα - Βασίλειος Αναστόπουλος