Μάθημα : ΓΕΛ Γ - ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Κωδικός : 0754020319

G-GEL - ΔΗΜΗΤΡΙΟΣ ΜΑΣΣΑΣ

Ενότητες μαθήματος

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ-ΟΥΡΕΣ

ΠΡΟΓΡΑΜΜΑ πλοίο_ουρά
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: αρχ, τελος, επ1, πλ
  ΧΑΡΑΚΤΗΡΕΣ: επ2, αρ, π[250] 
ΑΡΧΗ
  αρχ <- 0
  τελος <- 0
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Μενού Επιλογών'
    ΓΡΑΨΕ '1. Επιβίβαση'
    ΓΡΑΨΕ '2. Αποβίβαση'
    ΓΡΑΨΕ '3. Έξοδος'
    ΓΡΑΨΕ 'Δώσε επιλογή:'
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ επ1
      ΑΝ επ1 < 1 Η επ1 > 3 ΤΟΤΕ
        ΓΡΑΨΕ 'Λάθος επιλογή. Ξαναπροσπάθησε!!!'
      ΤΕΛΟΣ_ΑΝ
    ΜΕΧΡΙΣ_ΟΤΟΥ επ1 >= 1 ΚΑΙ επ1 <= 3
    ΑΝ επ1 = 1 ΤΟΤΕ
      ΑΝ τελος = 250 ΤΟΤΕ
        ΓΡΑΨΕ 'Το πλοίο είναι πλήρες και δε χωρά άλλα οχήματα'
      ΑΛΛΙΩΣ
        ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
          ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
            ΓΡΑΨΕ 'Υπάρχει όχημα για επιβίβαση (Ν/Ο);'
            ΔΙΑΒΑΣΕ επ2
            ΑΝ επ2 <> 'Ν' ΚΑΙ επ2 <> 'ν' ΚΑΙ επ2 <> 'Ο' ΚΑΙ επ2 <> 'ο' ΤΟΤΕ
              ΓΡΑΨΕ 'Λάθος επιλογή. Ξαναπροσπάθησε!!!'
            ΤΕΛΟΣ_ΑΝ
          ΜΕΧΡΙΣ_ΟΤΟΥ επ2 = 'Ο' Η επ2 = 'ο' Η επ2 = 'Ν' Η επ2 = 'ν'
          ΑΝ επ2 = 'Ν' Η επ2 = 'ν' ΤΟΤΕ
            ΓΡΑΨΕ 'Δώσε αριθμό κυκλοφορίας του οχήματος:'
            ΔΙΑΒΑΣΕ αρ
            ΑΝ (αρχ = 0 ΚΑΙ τελος = 0) ΤΟΤΕ
              αρχ <- 1
              τελος <- 1
              π[τελος] <- αρ
            ΑΛΛΙΩΣ
              τελος <- τελος + 1
              π[τελος] <- αρ
            ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΑΝ
        ΜΕΧΡΙΣ_ΟΤΟΥ τελος = 250 Η επ2 = 'Ο' Η επ2 = 'ο'
        ΑΝ τελος = 250 ΤΟΤΕ
          ΓΡΑΨΕ 'Το πλοίο είναι πλήρες και δε χωρά άλλα οχήματα'
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΑΛΛΙΩΣ_ΑΝ επ1 = 2 ΤΟΤΕ
      πλ <- 0
      ΑΝ (αρχ = 0 ΚΑΙ τελος = 0) ΤΟΤΕ
        ΓΡΑΨΕ 'Το πλοίο είναι άδειο'
      ΑΛΛΙΩΣ_ΑΝ αρχ = τελος ΤΟΤΕ
        ΓΡΑΨΕ 'Αποβιβάζεται το μοναδικό όχημα:', π[αρχ] 
        π[αρχ] <- ''
        αρχ <- 0
        τελος <- 0
        πλ <- πλ + 1
      ΑΛΛΙΩΣ
        ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΡΑΨΕ 'Αποβιβάζεται το όχημα:', π[αρχ] 
          π[αρχ] <- ''
          αρχ <- αρχ + 1
          πλ <- πλ + 1
        ΜΕΧΡΙΣ_ΟΤΟΥ (αρχ > τελος) 
      ΤΕΛΟΣ_ΑΝ
      ΓΡΑΨΕ 'Οχήματα που αποβιβάστηκαν στην ΑΙΓΙΝΑ:', πλ
      αρχ <- 0
      τελος <- 0
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ επ1 = 3
  ΓΡΑΨΕ 'ΕΞΟΔΟΣ ΑΠΟ ΤΟ ΠΡΟΓΡΑΜΜΑ'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ πλοίο_ουρά 

ΠΡΟΓΡΑΜΜΑ Ουρά_Αναμονής
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Επιλογή, Δείκτης_Αρχής, Δείκτης_Τέλους, i
  ΧΑΡΑΚΤΗΡΕΣ: Ονόματα[10] 
 
ΑΡΧΗ
  Δείκτης_Αρχής <- 0
  Δείκτης_Τέλους <- 0
 
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Επέλεξε Λειτουργία (1..3): '
    ΓΡΑΨΕ
    ΓΡΑΨΕ '1. Εγγραφή στην Ουρά αναμονής'
    ΓΡΑΨΕ '2. Έξοδος 1ου από τη Ουρά αναμονής'
    ΓΡΑΨΕ '3. Τέλος προγράμματος'
    ΔΙΑΒΑΣΕ Επιλογή

    ΕΠΙΛΕΞΕ Επιλογή
      ΠΕΡΙΠΤΩΣΗ 1
        ΑΝ Δείκτης_Τέλους = 10 ΤΟΤΕ
          ΓΡΑΨΕ 'Η Ουρά αναμονής είναι πλήρης.'
        ΑΛΛΙΩΣ_ΑΝ (Δείκτης_Αρχής = 0 ΚΑΙ Δείκτης_Τέλους = 0) ΤΟΤΕ
          Δείκτης_Αρχής <- 1
          Δείκτης_Τέλους <- 1
          ΓΡΑΨΕ 'Δώσε το όνομα: '
          ΔΙΑΒΑΣΕ Ονόματα[Δείκτης_Τέλους] 
          ΓΡΑΨΕ 'Το όνομα ', Ονόματα[Δείκτης_Τέλους], ' προστέθηκε στην Ουρά αναμονής στη θέση ', Δείκτης_Τέλους, ' από 10.'
        ΑΛΛΙΩΣ
          Δείκτης_Τέλους <- Δείκτης_Τέλους + 1
          ΓΡΑΨΕ 'Δώσε το όνομα: '
          ΔΙΑΒΑΣΕ Ονόματα[Δείκτης_Τέλους] 
          ΓΡΑΨΕ 'Το όνομα ', Ονόματα[Δείκτης_Τέλους], ' προστέθηκε στν Ουρά αναμονής στη θέση ', Δείκτης_Τέλους, ' από 10.'
        ΤΕΛΟΣ_ΑΝ
       
      ΠΕΡΙΠΤΩΣΗ 2
        ΑΝ (Δείκτης_Αρχής = 0 ΚΑΙ Δείκτης_Τέλους = 0) ΤΟΤΕ
          ΓΡΑΨΕ 'Η Ουρά αναμονής είναι άδεια.'
        ΑΛΛΙΩΣ_ΑΝ Δείκτης_Τέλους = 1 ΤΟΤΕ
          ΓΡΑΨΕ 'Το όνομα ', Ονόματα[Δείκτης_Αρχής], ' εξήλθε από την Ουρά αναμονής '
          Ονόματα[Δείκτης_Αρχής] <- ''
          ΓΡΑΨΕ
          Δείκτης_Αρχής <- 0
          Δείκτης_Τέλους <- 0
        ΑΛΛΙΩΣ
          ΓΡΑΨΕ 'Το όνομα ', Ονόματα[Δείκτης_Αρχής], ' εξήλθε από την Ουρά αναμονής '
          ΓΡΑΨΕ
          ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Δείκτης_Τέλους
            Ονόματα[i - 1] <- Ονόματα[i] 
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          Ονόματα[Δείκτης_Τέλους] <- ''
          Δείκτης_Τέλους <- Δείκτης_Τέλους - 1
        ΤΕΛΟΣ_ΑΝ
       
      ΠΕΡΙΠΤΩΣΗ 3
        ΓΡΑΨΕ 'Έξοδος από το πρόγραμμα.'
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
   
  ΜΕΧΡΙΣ_ΟΤΟΥ Επιλογή = 3

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Ουρά_Αναμονής 

Ένα αυτόματο ταμειακό μηχάνημα έχει 100 υποδοχές χαρτονομισμάτων των 50 ευρώ. Η λειτουργία του γίνεται με χρήση λογισμικού το οποίο υλοποιείται με ουρά σε κάθε θέση της οποίας τοποθετείται η αξία του χαρτονομίσματος δηλ. 50.

Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:

Α. Περιέχει κατάλληλο τμήμα δηλώσεων.

Β. Εμφανίζει το παρακάτω μενού επιλογών:

  1. Κατάθεση χαρτονομισμάτων
  2. Ανάληψη χαρτονομισμάτων
  3. Έξοδος

Γ. Στη περίπτωση της κατάθεσης  υλοποιεί την διαδικασία της εισαγωγής ως εξής:

    Διαβάζει το ποσό της κατάθεσης ελέγχοντας ότι είναι πολλαπλάσιο του 50.

    Αν το ποσό μπορεί να εισαχθεί στην ουρά τότε τοποθετεί στο πίσω μέρος της ουράς διαδοχικά τόσα στοιχεία ώστε να αντιστοιχούν στο ποσό κατάθεσης (κάθε στοιχείο είναι 50 ευρώ).

    Εμφανίζει το συνολικό ποσό που περιέχει η ουρά μετά την εισαγωγή.

    Θεωρείστε ότι αρχικά το αυτόματο ταμειακό μηχάνημα είναι άδειο.

Δ. Στην περίπτωση της ανάληψης υλοποιεί την διαδικασία της εξαγωγής ως εξής:

     Διαβάζει το ποσό της ανάληψης.

     Εξάγει  τόσα στοιχεία από το μπροστά μέρος της ουράς  ώστε το σύνολο  τους να είναι μικρότερο ή ίσο με το προς ανάληψη ποσό.

     Εμφανίζει το συνολικό ποσό που περιέχει η ουρά μετά την εξαγωγή.

 

ΠΡΟΓΡΑΜΜΑ ουρά_ΑΤΜ
ΣΤΑΘΕΡΕΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΟΥ[100], ΕΠΙΛΟΓΗ, ΠΟΣΟ, FRONT, REAR, SUM, I
ΑΡΧΗ
  FRONT <- 0
  REAR <- 0
  SUM <- 0
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ "1. Κατάθεση χαρτονομισμάτων"
    ΓΡΑΨΕ "2. Ανάληψη χαρτονομισμάτων"
    ΓΡΑΨΕ "3. Έξοδος"
    ΔΙΑΒΑΣΕ ΕΠΙΛΟΓΗ
    ΕΠΙΛΕΞΕ ΕΠΙΛΟΓΗ
      ΠΕΡΙΠΤΩΣΗ 1
        ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
          ΔΙΑΒΑΣΕ ΠΟΣΟ
        ΜΕΧΡΙΣ_ΟΤΟΥ ΠΟΣΟ MOD 50 = 0
        ΑΝ ΠΟΣΟ <= 50*100 - SUM ΚΑΙ REAR <= 100 - ΠΟΣΟ/50 ΤΟΤΕ
          ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ ΠΟΣΟ/50
            ΑΝ FRONT = 0 ΚΑΙ REAR = 0 ΤΟΤΕ
              FRONT <- 1
              REAR <- 1
              ΟΥ[REAR] <- 50
              SUM <- SUM + 50
            ΑΛΛΙΩΣ
              REAR <- REAR + 1
              ΟΥ[REAR] <- 50
              SUM <- SUM + 50
            ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΡΑΨΕ SUM
        ΑΛΛΙΩΣ
          ΓΡΑΨΕ "Αδύνατη η κατάθεση"
        ΤΕΛΟΣ_ΑΝ
      ΠΕΡΙΠΤΩΣΗ 2
        ΔΙΑΒΑΣΕ ΠΟΣΟ
        ΑΝ ΠΟΣΟ <= SUM ΤΟΤΕ
          ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ ΠΟΣΟ/50
            ΑΝ FRONT = REAR ΤΟΤΕ
              FRONT <- 0
              REAR <- 0
              SUM <- SUM - 50
            ΑΛΛΙΩΣ
              FRONT <- FRONT + 1
              SUM <- SUM - 50
            ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΡΑΨΕ SUM
        ΑΛΛΙΩΣ
          ΓΡΑΨΕ "Αδύνατη η ανάληψη"
        ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠΙΛΟΓΗ = 3
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ