ΘΕΩΡΙΑ ΓΙΑ ΤΟ ΚΕΦΑΛΑΙΟ ΤΩΝ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ
Ως γνωστό ασκήσεις για την ουρά δεν μπορούν να υλοποιηθούν σε γλώσσα. Παρακάτω παραθέτω μερικά παραδείγματα ουράς για θεωρητική και μόνο χρήση.
ΑΣΚΗΣΗ ΥΠ10_ΚΥΚΛΙΚΗ_ΟΥΡΑ **** (ΥΛΟΠΟΙΗΣΗ ΚΥΚΛΙΚΗΣ ΟΥΡΑΣ ΣΕ ΓΛΩΣΣΑ)
Να γράψετε πρόγραμμα που θα διαβάζει 10 ακεραίους αριθμούς και θα κάνει εισαγωγή των αριθμών σε μια ουρά 10 θέσεων, στη συνέχεια να εξαχθούν 5 αριθμοί οι οποίοι θα εμφανίζονται με τη σειρά που εξάγονται.
Να εμφανιστούν κατά σειρά οι αριθμοί που βρίσκονται στο τέλος μέσα στην ουρά.
Το πρόγραμμα θα καλεί τις διαδικασίες ΕΙΣΑΓΩΓΗ και ΕΞΑΓΩΓΗ που θα υλοποιούν τις αντίστοιχες λειτουργίες της ουράς τις οποίες και θα γράψετε. Αν η ουρά γεμίσει αλλά έχει άδειες θέσεις μπροστά, τότε να μεταφέρονται τα στοιχεία που βρίσκονται στην ουρά μπροστά ώστε να συνεχίζεται η διαδικασία της εισαγωγής.
Θα επιστρέφονται από τις διαδικασίες οι λογικές τιμές ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ αναλόγως αν η εισαγωγή ή η εξαγωγή στοιχείου στην ουρά έγιναν επιτυχώς ή όχι.
Απάντηση
ΠΡΟΓΡΑΜΜΑ ΥΠ10
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: μπροστα, πισω, i, στοιχειο, ΟΥ[10]
ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
μπροστα <- 0
πισω <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΡΑΨΕ ‘Δώστε ακέραιο αριθμό’
ΔΙΑΒΑΣΕ στοιχειο
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ (ΟΥ, στοιχειο, μπροστα, πισω, done)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
ΚΑΛΕΣΕ ΕΞΑΓΩΓΗ (ΟΥ, στοιχειο, μπροστα, πισω, done)
ΓΡΑΨΕ στοιχειο
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ μπροστα ΜΕΧΡΙ πισω
ΓΡΑΨΕ ΟΥ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ (ΟΥ, στοιχειο, μπροστα, πισω, done)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΟΥ[10], στοιχειο, μπροστα, πισω, S, i
ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
ΑΝ πισω< 10 ΤΟΤΕ
πισω <- πισω + 1
ΟΥ[πισω] <-στοιχειο
ΑΝ μπροστα= 0 ΤΟΤΕ
μπροστα <- 1
ΤΕΛΟΣ_ΑΝ
done <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ_ΑΝ μπροστα = 1 ΤΟΤΕ
done <- ΨΕΥΔΗΣ ! Έχουμε στοίβα με δείκτη πισω=10 και μπροστα=1, δηλαδή γεμάτη λίστα
ΑΛΛΙΩΣ !μετακίνηση στοιχείων στην αρχή του πίνακα αφού υπάρχουν κενές θέσεις μπροστά
S <- πισω - μπροστα + 1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ S
ΟΥ[i] <- ΟΥ[μπροστα]
μπροστα <- μπροστα + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μπροστα <- 1
πισω <- S + 1
ΟΥ[πισω] <- στοιχειο
done <-- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ ΕΞΑΓΩΓΗ (ΟΥ, στοιχειο, μπροστα, πισω, done)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΟΥ[10], στοιχειο, μπροστα, πισω
ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
ΑΝ μπροστα <= πισω ΚΑΙ μπροστα <> 0 ΤΟΤΕ
στοιχειο <- ΟΥ[μπροστα]
μπροστα<- μπροστα+ 1
done <-- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
done <-- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Να γράψετε πρόγραμμα που θα διαβάζει 10 ακεραίους αριθμούς και θα κάνει εισαγωγή των αριθμών σε μια ουρά 10 θέσεων, στη συνέχεια να εξαχθούν 5 αριθμοί οι οποίοι θα εμφανίζονται με τη σειρά που εξάγονται.
Να εμφανιστούν κατά σειρά οι αριθμοί που βρίσκονται στο τέλος μέσα στην ουρά.
Το πρόγραμμα θα καλεί τις διαδικασίες ΕΙΣΑΓΩΓΗ και ΕΞΑΓΩΓΗ που θα υλοποιούν τις αντίστοιχες λειτουργίες της ουράς τις οποίες και θα γράψετε. Αν η ουρά γεμίσει αλλά έχει άδειες θέσεις μπροστά, τότε να μεταφέρονται τα στοιχεία που βρίσκονται στην ουρά μπροστά ώστε να συνεχίζεται η διαδικασία της εισαγωγής.
Θα επιστρέφονται από τις διαδικασίες οι λογικές τιμές ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ αναλόγως αν η εισαγωγή ή η εξαγωγή στοιχείου στην ουρά έγιναν επιτυχώς ή όχι.
Απάντηση
ΠΡΟΓΡΑΜΜΑ ΥΠ10
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: μπροστα, πισω, i, στοιχειο, ΟΥ[10]
ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
μπροστα <- 0
πισω <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΡΑΨΕ ‘Δώστε ακέραιο αριθμό’
ΔΙΑΒΑΣΕ στοιχειο
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ (ΟΥ, στοιχειο, μπροστα, πισω, done)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
ΚΑΛΕΣΕ ΕΞΑΓΩΓΗ (ΟΥ, στοιχειο, μπροστα, πισω, done)
ΓΡΑΨΕ στοιχειο
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ μπροστα ΜΕΧΡΙ πισω
ΓΡΑΨΕ ΟΥ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ (ΟΥ, στοιχειο, μπροστα, πισω, done)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΟΥ[10], στοιχειο, μπροστα, πισω, S, i
ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
ΑΝ πισω< 10 ΤΟΤΕ
πισω <- πισω + 1
ΟΥ[πισω] <-στοιχειο
ΑΝ μπροστα= 0 ΤΟΤΕ
μπροστα <- 1
ΤΕΛΟΣ_ΑΝ
done <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ_ΑΝ μπροστα = 1 ΤΟΤΕ
done <- ΨΕΥΔΗΣ ! Έχουμε στοίβα με δείκτη πισω=10 και μπροστα=1, δηλαδή γεμάτη λίστα
ΑΛΛΙΩΣ !μετακίνηση στοιχείων στην αρχή του πίνακα αφού υπάρχουν κενές θέσεις μπροστά
S <- πισω - μπροστα + 1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ S
ΟΥ[i] <- ΟΥ[μπροστα]
μπροστα <- μπροστα + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
μπροστα <- 1
πισω <- S + 1
ΟΥ[πισω] <- στοιχειο
done <-- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ ΕΞΑΓΩΓΗ (ΟΥ, στοιχειο, μπροστα, πισω, done)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΟΥ[10], στοιχειο, μπροστα, πισω
ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
ΑΝ μπροστα <= πισω ΚΑΙ μπροστα <> 0 ΤΟΤΕ
στοιχειο <- ΟΥ[μπροστα]
μπροστα<- μπροστα+ 1
done <-- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
done <-- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΑΣΚΗΣΗ ΥΠ7_ΟΥΡΑ *** (ΧΡΗΣΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ ΓΙΑ ΥΛΟΠΟΙΗΣΗ ΟΥΡΑΣ)
Να υλοποιήσετε την εισαγωγή και την εξαγωγή σε ουρά με χρήση υποπρογραμμάτων. Στο κυρίως πρόγραμμα να γίνεται εισαγωγή 10 στοιχείων και στη συνέχεια εξαγωγή 10 στοιχείων. Η ουρά να υλοποιηθεί με πίνακα 50 θέσεων. Τα υποπρογράμματα να παράγουν ως έξοδο τη ουρά, το στοιχείο, τον δείκτη μπροστά, στον δείκτη πίσω και μια λογική μεταβλητή για το αν η ενέργεια ολοκληρώθηκε.
Απάντηση
ΠΡΟΓΡΑΜΜΑ ΥΠ7_ΟΥΡΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : ι, μπροστά, πίσω, Ο[50], στοιχείο
ΛΟΓΙΚΕΣ : οκ
ΑΡΧΗ
μπροστά <- 0
πίσω <- 0
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΔΙΑΒΑΣΕ στοιχείο
ΚΑΛΕΣΕ Εισαγωγή(Ο, στοιχείο, μπροστά, πίσω, οκ)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΚΑΛΕΣΕ Εξαγωγή(Ο, στοιχείο, μπροστά, πίσω, οκ)
ΓΡΑΨΕ στοιχείο
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή(Ο, στοιχείο, μπροστά, πίσω, οκ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : Ο[50], στοιχείο, μπροστά, πίσω
ΛΟΓΙΚΕΣ : οκ
ΑΡΧΗ
ΑΝ πίσω<50 ΤΟΤΕ
πίσω<- πίσω + 1
Ο[πίσω] <- στοιχείο
οκ <- ΑΛΗΘΗΣ
ΑΝ μπροστά =0 ΤΟΤΕ
μπροστά <- 1
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
οκ <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Εξαγωγή(Ο, στοιχείο, μπροστά, πίσω, οκ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : Ο[50], στοιχείο, μπροστά, πίσω
ΛΟΓΙΚΕΣ : οκ
ΑΡΧΗ
ΑΝ μπροστά<=πίσω ΚΑΙ πίσω>0 ΤΟΤΕ
στοιχείο <- Ο[μπροστά]
μπροστά<- μπροστά + 1
οκ <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
οκ <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Να υλοποιήσετε την εισαγωγή και την εξαγωγή σε ουρά με χρήση υποπρογραμμάτων. Στο κυρίως πρόγραμμα να γίνεται εισαγωγή 10 στοιχείων και στη συνέχεια εξαγωγή 10 στοιχείων. Η ουρά να υλοποιηθεί με πίνακα 50 θέσεων. Τα υποπρογράμματα να παράγουν ως έξοδο τη ουρά, το στοιχείο, τον δείκτη μπροστά, στον δείκτη πίσω και μια λογική μεταβλητή για το αν η ενέργεια ολοκληρώθηκε.
Απάντηση
ΠΡΟΓΡΑΜΜΑ ΥΠ7_ΟΥΡΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : ι, μπροστά, πίσω, Ο[50], στοιχείο
ΛΟΓΙΚΕΣ : οκ
ΑΡΧΗ
μπροστά <- 0
πίσω <- 0
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΔΙΑΒΑΣΕ στοιχείο
ΚΑΛΕΣΕ Εισαγωγή(Ο, στοιχείο, μπροστά, πίσω, οκ)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΚΑΛΕΣΕ Εξαγωγή(Ο, στοιχείο, μπροστά, πίσω, οκ)
ΓΡΑΨΕ στοιχείο
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή(Ο, στοιχείο, μπροστά, πίσω, οκ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : Ο[50], στοιχείο, μπροστά, πίσω
ΛΟΓΙΚΕΣ : οκ
ΑΡΧΗ
ΑΝ πίσω<50 ΤΟΤΕ
πίσω<- πίσω + 1
Ο[πίσω] <- στοιχείο
οκ <- ΑΛΗΘΗΣ
ΑΝ μπροστά =0 ΤΟΤΕ
μπροστά <- 1
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
οκ <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Εξαγωγή(Ο, στοιχείο, μπροστά, πίσω, οκ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : Ο[50], στοιχείο, μπροστά, πίσω
ΛΟΓΙΚΕΣ : οκ
ΑΡΧΗ
ΑΝ μπροστά<=πίσω ΚΑΙ πίσω>0 ΤΟΤΕ
στοιχείο <- Ο[μπροστά]
μπροστά<- μπροστά + 1
οκ <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
οκ <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ