ΠΡΟΓΡΑΜΜΑ Sequential_Search ! Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ το οποίο διαβάζει έναν πίνακα (μονοδιάστατο) ! Ν πραγματικών αριθμών (το Ν να δηλωθεί ως σταθερά) από το πληκτρολόγιο, ! και έπειτα αναζητά εάν υπάρχει κάποια τιμή (που επίσης δίνει ο χρήστης από το ! πληκτρολόγιο) στον πίνακα αυτόν. Στο τέλος το πρόγραμμα εμφανίζει ! μήνυμα που πληροφορεί τον χρήστη σχετικά με το εάν βρέθηκε ή όχι ! η τιμή που αναζητήσαμε στον πίνακα, και σε θετική περίπτωση ! την πρώτη θέση του πίνακα στην οποία βρέθηκε. ΣΤΑΘΕΡΕΣ ! N : το πλήθος των στοιχείων του πίνακα N = 5 ΜΕΤΑΒΛΗΤΕΣ ! table : πίνακας (μονοδιάστατος) με N πραγματικούς αριθμούς ! i : η τρέχουσα θέση σάρωσης του πίνακα ! key : η τιμή την οποία αναζητούμε στον πίνακα ! position : μηδέν(0) εάν δεν έχει βρεθεί το key, ! αλλιώς μιά ακέραια τιμή μεταξύ ένα(1) και Ν ! η οποία είναι η πρώτη θέση στον πίνακα όπου ! βρέθηκε το key ! done : λογική μεταβλητή που γίνεται ΑΛΗΘΗΣ όταν ! βρεθεί το key στον πίνακα table, αλλιώς ΨΕΥΔΗΣ ΠΡΑΓΜΑΤΙΚΕΣ: table[N], key ΑΚΕΡΑΙΕΣ: i, position ΛΟΓΙΚΕΣ: done ΑΡΧΗ ! Διαβάζουμε από το πληκτρολόγιο N πραγματικούς αριθμούς ! με τους οποίους αποθηκεύουμε στον πίνακα table ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N ΓΡΑΨΕ 'Παρακαλώ πληκτρολογήστε το ', i, 'ο στοιχείο του πίνακα table και πατήστε enter:' ΔΙΑΒΑΣΕ table[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Διαβάζουμε από το πληκτρολόγιο το key που θα αναζητήσουμε ! στη συνέχεια στον πίνακα table ΓΡΑΨΕ 'Παρακαλώ πληκτρολογήστε την τιμή που θέλετε να αναζητήσω στον πίνακα table και πατήστε enter:' ΔΙΑΒΑΣΕ key ! Αρχικοποιούμε το done ως ΨΕΥΔΗΣ και θα το αλλάξουμε αργότερα ! σε ΑΛΗΘΗΣ όταν (και εάν) βρούμε το key στον πίνακα table done <-- ΨΕΥΔΗΣ ! Αρχικοποιούμε το position ως μηδέν(0) και θα το αλλάξουμε αργότερα ! στην κατάλληλη τιμή όταν (και εάν) βρούμε το key στον πίνακα table position <-- 0 ! Αρχικοποιούμε το i με ένα(1) ώστε παρακάτω να ξεκινήσουμε από το ! πρώτο στοιχείο του πίνακα i <-- 1 ! Η συνθήκη της παρακάτω ΟΣΟ διαβάζεται με απλά λόγια ως εξής: ! "όσο δεν έχει βρεθεί το key στον πίνακα table (αυτό είναι το done = ΨΕΥΔΗΣ) ! και δεν έχουμε περάσει πέρα από το τελευταίο στοιχείο του πίνακα ! (αυτό είναι το i <= N), επανάλαβε ΟΣΟ ( done = ΨΕΥΔΗΣ ) ΚΑΙ ( i <= N ) ΕΠΑΝΑΛΑΒΕ ! ελέγχουμε εάν η τιμή στη τρέχουσα θέση, δηλαδή στην θέση i, είναι αυτό που ! ψάχνουμε, δηλαδή το key ΑΝ table[i] = key ΤΟΤΕ ! Αφού είμαστε εδώ, αυτό σημαίνει ότι βρέθηκε η τιμή που αναζητούμε, ! οπότε κάνουμε το done ΑΛΗΘΗΣ και αποθηκεύουμε τη θέση που ! βρήκαμε την τιμή (δηλαδή το i που είναι αυτή η θέση) στην μεταβλητή position done <-- ΑΛΗΘΗΣ position <-- i ΑΛΛΙΩΣ ! Αφού είμαστε εδώ, αυτό σημαίνει ότι (ακόμα τουλάχιστον) δεν βρέθηκε ! η τιμή, οπότε αυξάνουμε το i κατά 1 ώστε στην επόμενη επανάληψη ! του ΟΣΟ να ασχοληθούμε με το επόμενο στοιχείο του πίνακα. i <-- i + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Εκτύπωση αποτελεσμάτων στην οθόνη: ! Το ελάχιστο που μπορούμε να κάνουμε είναι: ! ! ΓΡΑΨΕ done, position ! ! Μια κομψότερη λύση είναι η εξής: ! ! Ελέγχουμε εάν βρέθηκε το key στον πίνακα table ΑΝ done = ΑΛΗΘΗΣ ΤΟΤΕ ! Αφού είμαστε εδώ, αυτό σημαίνει ότι βρέθηκε το key στον πίνακα ΓΡΑΨΕ 'Η τιμή ', key, ' βρέθηκε στον πίνακα. Η θέση στην οποία βρέθηκε είναι ', position, '.' ΓΡΑΨΕ 'Εάν η τιμή υπήρχε δύο ή περισσότερες φορές στον πίνακα, η θέση αυτή είναι η πρώτη' ΓΡΑΨΕ 'εμφάνιση της τιμής στον πίνακα.' ΑΛΛΙΩΣ ! Αφού είμαστε εδώ, αυτό σημαίνει ότι (τελικά) δεν βρέθηκε το key στον πίνακα ΓΡΑΨΕ 'Η τιμή ', key, 'δεν βρέθηκε στον πίνακα' ΤΕΛΟΣ_ΑΝ ! Σημείωση: Η χρήση της μεταβλητής done δεν είναι απαραίτητη! Μπορούμε να χρησιμοποιήσουμε ! την ήδη υπάρχουσα μεταβλητή position. Συγκεκριμένα, στον παραπάνω κώδικα αφαιρούμε τις ! γραμμές 24, 38, 56, και κάνουμε τα εξής: ! α) αντικαθιστούμε την γραμμή 49 με την παρακάτω: (χωρίς το θαυμαστικό) ! ΟΣΟ ( position = 0 ) ΚΑΙ ( i <= N ) ΕΠΑΝΑΛΑΒΕ ! και ! β) αντικαθιστούμε την γραμμή 73 με την παρακάτω: (χωρίς το θαυμαστικό) ! ΑΝ position <> 0 ΤΟΤΕ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ