Να αναπτύξετε τμήμα προγράμματος σε ΓΛΩΣΣΑ που υλοποιεί την εισαγωγή στοιχείου σε ουρά, με χρήση μονοδιάστατου πίνακα Α, 10 θέσεων.
Σκέψη / Μεθοδολογία: Ξεχωρίζουμε τρεις περιπτώσεις: γεμάτη ουρά (rear=10) → υπερχείλιση· εντελώς κενή ουρά (front=0 και rear=0) → και οι δύο δείκτες γίνονται 1· ουρά με στοιχεία → μόνο ο rear αυξάνεται.
Απάντηση:
ΓΡΑΨΕ 'Δώσε στοιχείο για εισαγωγή στην ουρά Α:'
ΔΙΑΒΑΣΕ στοιχείο
ΑΝ rear = 10 ΤΟΤΕ
ΓΡΑΨΕ 'Γεμάτη ουρά'
ΑΛΛΙΩΣ_ΑΝ (front = 0) ΚΑΙ (rear = 0) ΤΟΤΕ
front←1
rear←1
Α[rear]←στοιχείο
ΑΛΛΙΩΣ
rear ← rear + 1
Α[rear]←στοιχείο
ΤΕΛΟΣ_ΑΝ
Πρόσεξε:
Να αναπτύξετε τμήμα προγράμματος σε ΓΛΩΣΣΑ που υλοποιεί την εξαγωγή στοιχείου από ουρά, με χρήση μονοδιάστατου πίνακα Α, 10 θέσεων.
Σκέψη / Μεθοδολογία: Ξεχωρίζουμε τρεις περιπτώσεις: άδεια ουρά → υποχείλιση· ουρά με ένα μόνο στοιχείο (front=rear) → μηδενισμός και των δύο δεικτών μετά την εξαγωγή· ουρά με περισσότερα στοιχεία → αύξηση μόνο του front.
Απάντηση:
ΑΝ (front = 0) ΚΑΙ (rear = 0) ΤΟΤΕ
ΓΡΑΨΕ 'Άδεια ουρά'
ΑΛΛΙΩΣ_ΑΝ (front = rear) ΤΟΤΕ
ΓΡΑΨΕ 'Εξάγεται το στοιχείο:', A[front]
front ← 0
rear ← 0
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Εξάγεται το στοιχείο:', A[front]
front ← front + 1
ΤΕΛΟΣ_ΑΝ
Πρόσεξε:
Να δώσετε παραδείγματα ουράς από την καθημερινή ζωή.
Σκέψη / Μεθοδολογία: Αναζητούμε καταστάσεις όπου η εξυπηρέτηση γίνεται με σειρά άφιξης (FIFO).
Απάντηση: Ενδεικτικά παραδείγματα ουράς (FIFO) από την καθημερινότητα: η ουρά αναμονής σε ταμείο τράπεζας ή σούπερ μάρκετ, η ουρά εκτύπωσης εγγράφων σε έναν κοινόχρηστο εκτυπωτή, η λίστα αναμονής για εισιτήριο πτήσης, η ουρά οχημάτων σε διόδια.
Πρόσεξε:
Δίνεται η επόμενη ακολουθία αριθμών: 4, 8, 2, 5, 9, 13.
- Ποια λειτουργία θα χρησιμοποιήσετε για την τοποθέτηση των αριθμών σε ουρά;
- Να σχεδιάσετε την ουρά έπειτα από την τοποθέτηση των αριθμών.
- Ποια λειτουργία θα χρησιμοποιήσετε για την εξαγωγή των αριθμών από την ουρά;
- Πόσες φορές θα πρέπει να εκτελεστεί η προηγούμενη λειτουργία στην ουρά για να εξαχθεί ο αριθμός 5;
Σκέψη / Μεθοδολογία: Στην ουρά, σε αντίθεση με τη στοίβα, τα στοιχεία εξάγονται με την ίδια σειρά που εισήχθησαν (FIFO): το 4 πρώτο, μετά 8, 2, 5, ...
Απάντηση: 1. Εισαγωγή. 2. Ουρά (front→rear): 4, 8, 2, 5, 9, 13 (front=1, rear=6). 3. Εξαγωγή. 4. Επειδή στην ουρά ισχύει FIFO, το 5 εξάγεται στην ίδια σειρά που εισήχθη (4ο), άρα χρειάζονται 4 διαδοχικές εξαγωγές (εξάγονται πρώτα τα 4, 8, 2 και μετά το 5).
Πρόσεξε:
- Σε μια ουρά 10 θέσεων έχουν τοποθετηθεί διαδοχικά τα στοιχεία: Χ, Α, Β, Α, Ρ στην 1η, 2η, 3η, 4η και 5η θέση αντίστοιχα. i. Να προσδιορίσετε τις τιμές των δεικτών rear και front της παραπάνω ουράς και να τη σχεδιάσετε. ii. Αν εφαρμόσουμε τις ακόλουθες λειτουργίες: Εξαγωγή, Εξαγωγή, Εξαγωγή, Εισαγωγή Χ, Εισαγωγή Α και Εξαγωγή ποιες είναι τις τιμές των δεικτών rear και front της παραπάνω ουράς και ποια η τελική μορφή της ουράς;
- Σε μια κενή ουρά 10 θέσεων εισάγουμε τα στοιχεία Κ, Φ, Ι, Α, Ρ. Με ποιον τρόπο πρέπει να «εισαχθούν» και να «εξαχθούν» τα στοιχεία, ώστε να έχουμε ως έξοδο τα δεδομένα Α, Ρ, Χ, Η.
Σκέψη / Μεθοδολογία: Εφαρμόζουμε βήμα-βήμα κάθε λειτουργία στους δείκτες front/rear (front αυξάνεται στην εξαγωγή, rear αυξάνεται στην εισαγωγή). Για το 2ο σκέλος, παρατηρούμε ότι η έξοδος Α, Ρ, Χ, Η δεν αντιστοιχεί στη σειρά εισαγωγής Κ, Φ, Ι, Α, Ρ που δόθηκε — άρα το ερώτημα, όπως είναι διατυπωμένο, περιέχει ασυνέπεια των στοιχείων.
Απάντηση:
i. front=1, rear=5. ii. Μετά τις λειτουργίες Εξαγωγή×3, Εισαγωγή Χ, Εισαγωγή Α, Εξαγωγή: front=5, rear=7, και η τελική ουρά (θέσεις 5-7) είναι: Ρ, Χ, Α.
2. Δεν είναι δυνατόν: σε μια ουρά η έξοδος ακολουθεί πάντα τη σειρά εισόδου (FIFO). Τα ζητούμενα στοιχεία εξόδου Α, Ρ, Χ, Η δεν αντιστοιχούν στη σειρά εισαγωγής Κ, Φ, Ι, Α, Ρ (τα Χ και Η μάλιστα δεν περιλαμβάνονται καθόλου στα στοιχεία εισαγωγής) — άρα καμία σειρά εισαγωγών/εξαγωγών σε απλή ουρά δεν μπορεί να παράγει αυτή την έξοδο.
Πρόσεξε:
Σε μία τράπεζα χρησιμοποιείται αυτόματο ηλεκτρονικό μηχάνημα που το χειρίζονται οι πελάτες, οι ταμίες και ο διευθυντής της τράπεζας. Ο πελάτης πατάει «Π» και εκτυπώνεται το νούμερό του στην ουρά. Η τράπεζα έχει 4 ταμεία («1»-«4»)· όταν ένας ταμίας εξυπηρετεί πελάτη πατάει το νούμερο ταμείου του. Ο διευθυντής, πατώντας «Δ», σταματά τη διαδικασία και βλέπει το σύνολο πελατών που εξυπηρέτησε κάθε ταμείο. Μέγιστος αριθμός πελατών: 1.000. Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ όπου:
- Υπάρχει μενού επιλογής: Π. Πελάτης, Τ. Ταμίας, Δ. Διευθυντής.
- Στο Π, εκτυπώνεται το νούμερο του πελάτη στην ουρά.
- Στο Τ, ο ταμίας επιλέγει το νούμερο ταμείου του («1»-«4»), ο πελάτης εξυπηρετείται (διαγράφεται από την ουρά).
- Στο Δ, σταματά η διαδικασία, τυπώνεται το ταμείο που εξυπηρέτησε τους περισσότερους πελάτες. Να γίνεται έλεγχος εγκυρότητας.
Σκέψη / Μεθοδολογία: Χρειαζόμαστε μια ουρά (FIFO) για τη σειρά εξυπηρέτησης πελατών και έναν πίνακα 4 θέσεων για να μετράμε πόσους εξυπηρέτησε κάθε ταμείο. Το νούμερο της ουράς αυξάνεται σε κάθε νέο πελάτη (μετρητής «πλ»).
Απάντηση:
ΠΡΟΓΡΑΜΜΑ τραπεζα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πλ, ταμειο, i, μεγιστο, θεση_μεγ
ΑΚΕΡΑΙΕΣ: εξ[4]
ΧΑΡΑΚΤΗΡΕΣ: επιλογη
ΑΡΧΗ
πλ ← 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
εξ[i] ← 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Επιλογή (Π/Τ/Δ):'
ΔΙΑΒΑΣΕ επιλογη
ΑΝ επιλογη<>'Π' ΚΑΙ επιλογη<>'Τ' ΚΑΙ επιλογη<>'Δ' ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος επιλογή'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επιλογη='Π' Η επιλογη='Τ' Η επιλογη='Δ'
ΑΝ επιλογη = 'Π' ΤΟΤΕ
πλ ← πλ + 1
ΓΡΑΨΕ 'Το νούμερό σας στην ουρά είναι:', πλ
ΑΛΛΙΩΣ_ΑΝ επιλογη = 'Τ' ΤΟΤΕ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε νούμερο ταμείου (1-4):'
ΔΙΑΒΑΣΕ ταμειο
ΑΝ ταμειο<1 Η ταμειο>4 ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος νούμερο ταμείου'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ ταμειο>=1 ΚΑΙ ταμειο<=4
εξ[ταμειο] ← εξ[ταμειο] + 1
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επιλογη = 'Δ'
μεγιστο ← εξ[1]
θεση_μεγ ← 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 4
ΑΝ εξ[i] > μεγιστο ΤΟΤΕ
μεγιστο ← εξ[i]
θεση_μεγ ← i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Το ταμείο που εξυπηρέτησε τους περισσότερους πελάτες είναι το:', θεση_μεγ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ τραπεζα
Πρόσεξε:
Μια αεροπορική εταιρεία εκτελεί το δρομολόγιο Αθήνα-Θεσσαλονίκη κατά την περίοδο του Σεπτέμβρη. Λόγω αυξημένης ζήτησης, τηρείται λίστα αναμονής (μέγιστο 10 ονόματα) για επιβάτες που δεν πρόλαβαν εισιτήριο. Αν προκύψει ακύρωση, ενημερώνεται ο πρώτος της λίστας. Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ όπου:
- Μενού: 1. ΕΓΓΡΑΦΗ, 2. ΑΚΥΡΩΣΗ, 3. ΤΕΛΟΣ.
- Στην «1.ΕΓΓΡΑΦΗ», ζητείται όνομα και καταχωρίζεται στη λίστα αναμονής, εφόσον δεν είναι γεμάτη (αλλιώς μήνυμα «Η λίστα αναμονής είναι πλήρης»).
- Στην «2.ΑΚΥΡΩΣΗ», εμφανίζεται το όνομα του πρώτου διαθέσιμου στη λίστα αναμονής (αν είναι άδεια, μήνυμα «Η λίστα αναμονής είναι άδεια»).
- Επαναλαμβάνεται μέχρι «3.ΤΕΛΟΣ». Να εμφανιστεί το πλήθος όσων έκαναν τελικά κράτηση και το μέγιστο πλήθος ατόμων που περίμεναν ταυτόχρονα. Να γίνεται έλεγχος εγκυρότητας.
Σκέψη / Μεθοδολογία: Πρόκειται για κλασική εφαρμογή ουράς (FIFO): εγγραφή=εισαγωγή στο τέλος, ακύρωση=εξαγωγή από την αρχή. Χρειαζόμαστε επιπλέον έναν μετρητή για τις επιτυχείς κρατήσεις και έναν για το μέγιστο πλήθος αναμενόντων που παρατηρήθηκε.
Απάντηση:
ΠΡΟΓΡΑΜΜΑ αναμονη_πτησης
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αρχ, τελος, επ, κρατ, μεγ_αναμ, τρεχον
ΧΑΡΑΚΤΗΡΕΣ: ονομ[10]
ΑΡΧΗ
αρχ ← 0
τελος ← 0
κρατ ← 0
μεγ_αναμ ← 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Μενού: 1.ΕΓΓΡΑΦΗ 2.ΑΚΥΡΩΣΗ 3.ΤΕΛΟΣ'
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ επ
ΑΝ επ<1 Η επ>3 ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος επιλογή'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ>=1 ΚΑΙ επ<=3
ΑΝ επ = 1 ΤΟΤΕ
ΑΝ τελος = 10 ΤΟΤΕ
ΓΡΑΨΕ 'Η λίστα αναμονής είναι πλήρης'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δώσε όνομα:'
ΔΙΑΒΑΣΕ ονομ[τελος+1]
ΑΝ (αρχ = 0) ΚΑΙ (τελος = 0) ΤΟΤΕ
αρχ ← 1
τελος ← 1
ΑΛΛΙΩΣ
τελος ← τελος + 1
ΤΕΛΟΣ_ΑΝ
τρεχον ← τελος - αρχ + 1
ΑΝ τρεχον > μεγ_αναμ ΤΟΤΕ
μεγ_αναμ ← τρεχον
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ_ΑΝ επ = 2 ΤΟΤΕ
ΑΝ (αρχ = 0) ΚΑΙ (τελος = 0) ΤΟΤΕ
ΓΡΑΨΕ 'Η λίστα αναμονής είναι άδεια'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Ενημερώνεται:', ονομ[αρχ]
κρατ ← κρατ + 1
ΑΝ αρχ = τελος ΤΟΤΕ
αρχ ← 0
τελος ← 0
ΑΛΛΙΩΣ
αρχ ← αρχ + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ = 3
ΓΡΑΨΕ 'Πλήθος επιτυχών κρατήσεων:', κρατ
ΓΡΑΨΕ 'Μέγιστο πλήθος αναμενόντων ταυτόχρονα:', μεγ_αναμ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ αναμονη_πτησης
Πρόσεξε:
Σε ένα ταχυδρομικό κατάστημα, οι πελάτες εξυπηρετούνται με βάση τη σειρά άφιξής τους. Υπάρχει ένα ταμείο, μέσος χρόνος εξυπηρέτησης 3 λεπτά ανά πελάτη. Η ουρά αναμονής δεν ξεπερνά τα 30 άτομα. Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ όπου:
- Δέχεται είσοδο «1.ΕΙΣΑΓΩΓΗ» ή «2.ΕΠΟΜΕΝΟΣ» (με έλεγχο εγκυρότητας).
- Στο «1.ΕΙΣΑΓΩΓΗ», διαβάζεται το ονοματεπώνυμο και εμφανίζεται το πλήθος όσων περιμένουν πριν από αυτόν· αν η ουρά είναι γεμάτη, μήνυμα «Το κατάστημα γέμισε. Παρακαλούμε ελάτε άλλη φορά».
- Στο «2.ΕΠΟΜΕΝΟΣ», εμφανίζεται το ονοματεπώνυμο του προς εξυπηρέτηση πελάτη.
- Επαναλαμβάνεται μέχρι να εξυπηρετηθούν όλοι.
- Στο τέλος, εμφανίζεται το πλήθος εξυπηρετηθέντων και ο μέσος χρόνος αναμονής.
Σκέψη / Μεθοδολογία: Το πλήθος όσων περιμένουν πριν από τον νέο πελάτη είναι όσα άτομα βρίσκονται ήδη στην ουρά τη στιγμή της εισαγωγής του (τελος-αρχ+1 πριν την εισαγωγή). Ο μέσος χρόνος αναμονής υπολογίζεται πολλαπλασιάζοντας τη μέση θέση αναμονής επί 3 λεπτά.
Απάντηση:
ΠΡΟΓΡΑΜΜΑ ταχυδρομειο
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αρχ, τελος, επ, εξ, τρεχον_αναμ, αθροισμα_θεσεων
ΠΡΑΓΜΑΤΙΚΕΣ: μεσος_χρονος
ΧΑΡΑΚΤΗΡΕΣ: ονομ[30]
ΑΡΧΗ
αρχ ← 0
τελος ← 0
εξ ← 0
αθροισμα_θεσεων ← 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Επιλογή (1.ΕΙΣΑΓΩΓΗ / 2.ΕΠΟΜΕΝΟΣ):'
ΔΙΑΒΑΣΕ επ
ΑΝ επ<>1 ΚΑΙ επ<>2 ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος επιλογή'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ=1 Η επ=2
ΑΝ επ = 1 ΤΟΤΕ
ΑΝ τελος = 30 ΤΟΤΕ
ΓΡΑΨΕ 'Το κατάστημα γέμισε. Παρακαλούμε ελάτε άλλη φορά'
ΑΛΛΙΩΣ
ΑΝ (αρχ = 0) ΚΑΙ (τελος = 0) ΤΟΤΕ
τρεχον_αναμ ← 0
ΑΛΛΙΩΣ
τρεχον_αναμ ← τελος - αρχ + 1
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ 'Δώσε ονοματεπώνυμο:'
ΔΙΑΒΑΣΕ ονομ[τελος+1]
ΓΡΑΨΕ 'Άτομα που περιμένουν πριν από εσάς:', τρεχον_αναμ
ΑΝ (αρχ = 0) ΚΑΙ (τελος = 0) ΤΟΤΕ
αρχ ← 1
τελος ← 1
ΑΛΛΙΩΣ
τελος ← τελος + 1
ΤΕΛΟΣ_ΑΝ
αθροισμα_θεσεων ← αθροισμα_θεσεων + τρεχον_αναμ
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ_ΑΝ επ = 2 ΤΟΤΕ
ΑΝ (αρχ = 0) ΚΑΙ (τελος = 0) ΤΟΤΕ
ΓΡΑΨΕ 'Δεν υπάρχει πελάτης σε αναμονή'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Εξυπηρετείται:', ονομ[αρχ]
εξ ← εξ + 1
ΑΝ αρχ = τελος ΤΟΤΕ
αρχ ← 0
τελος ← 0
ΑΛΛΙΩΣ
αρχ ← αρχ + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ (αρχ=0) ΚΑΙ (τελος=0) ΚΑΙ (εξ>0)
ΑΝ εξ > 0 ΤΟΤΕ
μεσος_χρονος ← (αθροισμα_θεσεων / εξ) * 3
ΓΡΑΨΕ 'Πλήθος εξυπηρετηθέντων:', εξ
ΓΡΑΨΕ 'Μέσος χρόνος αναμονής (λεπτά):', μεσος_χρονος
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ταχυδρομειο
Πρόσεξε:
Ένας εκτυπωτής χρησιμοποιεί ουρά εκτύπωσης για τα αρχεία που στέλνονται προς εκτύπωση, με τη σειρά αποστολής. Κάθε φορά εκτυπώνει το αρχείο στην αρχή της ουράς. Χωρητικότητα ουράς: το πολύ 15 αρχεία. Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ όπου:
- Διαβάζει επαναληπτικά (με έλεγχο εγκυρότητας) το γράμμα «Ν» (νέο αρχείο) ή «Ε» (εκτύπωση).
- Στο «Ν», διαβάζει το όνομα αρχείου και το εισάγει στην ουρά, αν υπάρχει χώρος (αλλιώς «Η ουρά γέμισε. Δε μπορεί να εκτυπωθεί το αρχείο»).
- Στο «Ε», αν υπάρχουν αρχεία, εξάγει και εμφανίζει «Εκτύπωση <όνομα αρχείου>».
- Ολοκληρώνεται όταν εκτυπωθούν όλα τα αρχεία.
- Στο τέλος, εμφανίζει το συνολικό πλήθος αρχείων που εκτυπώθηκαν.
Σκέψη / Μεθοδολογία: Τυπική εφαρμογή ουράς FIFO με πίνακα 15 θέσεων, δείκτες αρχ/τελος. Το πρόγραμμα σταματά όταν ο χρήστης έχει σταματήσει να στέλνει νέα αρχεία και η ουρά αδειάσει εντελώς.
Απάντηση:
ΠΡΟΓΡΑΜΜΑ ουρα_εκτυπωσης
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αρχ, τελος, πληθος_εκτυπωσεων
ΧΑΡΑΚΤΗΡΕΣ: επιλογη, τελος_εισαγωγων
ΧΑΡΑΚΤΗΡΕΣ: αρχεια[15]
ΑΡΧΗ
αρχ ← 0
τελος ← 0
πληθος_εκτυπωσεων ← 0
τελος_εισαγωγων ← 'Ο'
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε Ν (νέο αρχείο) ή Ε (εκτύπωση):'
ΔΙΑΒΑΣΕ επιλογη
ΑΝ επιλογη<>'Ν' ΚΑΙ επιλογη<>'Ε' ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος επιλογή'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επιλογη='Ν' Η επιλογη='Ε'
ΑΝ επιλογη = 'Ν' ΤΟΤΕ
ΑΝ τελος = 15 ΤΟΤΕ
ΓΡΑΨΕ 'Η ουρά γέμισε. Δε μπορεί να εκτυπωθεί το αρχείο'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δώσε όνομα αρχείου:'
ΔΙΑΒΑΣΕ αρχεια[τελος+1]
ΑΝ (αρχ = 0) ΚΑΙ (τελος = 0) ΤΟΤΕ
αρχ ← 1
τελος ← 1
ΑΛΛΙΩΣ
τελος ← τελος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ_ΑΝ επιλογη = 'Ε' ΤΟΤΕ
ΑΝ (αρχ = 0) ΚΑΙ (τελος = 0) ΤΟΤΕ
ΓΡΑΨΕ 'Δεν υπάρχουν αρχεία προς εκτύπωση'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Εκτύπωση', αρχεια[αρχ]
πληθος_εκτυπωσεων ← πληθος_εκτυπωσεων + 1
ΑΝ αρχ = τελος ΤΟΤΕ
αρχ ← 0
τελος ← 0
ΑΛΛΙΩΣ
αρχ ← αρχ + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ (αρχ = 0) ΚΑΙ (τελος = 0) ΚΑΙ (πληθος_εκτυπωσεων > 0)
ΓΡΑΨΕ 'Σύνολο αρχείων που εκτυπώθηκαν:', πληθος_εκτυπωσεων
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ουρα_εκτυπωσης
Πρόσεξε:
Χαρακτηρίστε τις παρακάτω προτάσεις ως Σωστές ή Λάθος. Στην περίπτωση που πιστεύετε ότι είναι λανθασμένες δικαιολογήστε την επιλογή σας.
- Για την υλοποίηση της ουράς μπορεί να χρησιμοποιηθεί πίνακας.
- Κατά την εισαγωγή ενός στοιχείου σε ουρά, αυτό τοποθετείται στο μπροστινό άκρο της.
- Σε μια ουρά κάθε στοιχείο της εξάγεται από το μπροστινό άκρο της.
- Η απόθηση είναι μια από τις λειτουργίες της ουράς.
- Η εισαγωγή και η εξαγωγή είναι οι δύο βασικές λειτουργίες της ουράς.
- Στην ουρά το στοιχείο που μπαίνει πρώτο βγαίνει και πρώτο.
- Η υλοποίηση της ουράς χρησιμοποιεί μία μεταβλητή-δείκτη για την εκτέλεση των δύο βασικών λειτουργιών της.
- Η λειτουργία της εξαγωγής μπορεί να εκτελεστεί σε μια γεμάτη ουρά.
Σκέψη / Μεθοδολογία: Ελέγχουμε κάθε πρόταση έναντι του ορισμού FIFO και της υλοποίησης με δύο δείκτες front/rear (οι προτάσεις 2, 4, 7 περιέχουν λανθασμένους όρους ή αναφέρονται σε άλλη δομή).
Απάντηση: 1. Σωστό — η υλοποίηση με μονοδιάστατο πίνακα είναι η συνηθέστερη. 2. Λάθος — η εισαγωγή γίνεται στο ΤΕΛΙΚΟ άκρο (rear), όχι στο μπροστινό. 3. Σωστό — η εξαγωγή γίνεται πάντα από το μπροστινό άκρο (front). 4. Λάθος — «απόθηση» δεν είναι όρος της ουράς (οι λειτουργίες λέγονται Εισαγωγή και Εξαγωγή)· η «ώθηση/απώθηση» αφορούν τη στοίβα. 5. Σωστό — αυτές είναι οι δύο βασικές λειτουργίες. 6. Σωστό — αυτός είναι ο ορισμός του FIFO. 7. Λάθος — χρειάζονται ΔΥΟ δείκτες (front και rear), όχι ένας. 8. Σωστό — η εξαγωγή μπορεί κανονικά να εκτελεστεί ακόμη κι αν η ουρά είναι γεμάτη (αφού αφαιρεί στοιχείο, δεν προσθέτει)· δεν χρειάζεται έλεγχος γεμάτης ουράς για την εξαγωγή, μόνο έλεγχος άδειας ουράς.
Πρόσεξε: