Διαγώνισμα νάπτυξης Εφαρμογών Γ Λυκείου Θέμα Το GIS είναι ένα υπολογιστικό σύστημα το οποίο χρησιμοποιείται για την συλλογή, αποθήκευση και ανάλυση δεδομένων και πληροφοριών με γεωγραφική διάσταση. Ένα GIS μπορεί να χρησιμοποιηθεί ως ένας χάρτης, ικανός να προσφέρει μια μεγάλη ποικιλία από πληροφορίες. Το πιο σημαντικό είναι ότι, η ψηφιακή φύση των δεδομένων επιτρέπει τη γρήγορη επεξεργασία των δεδομένων και εκτέλεση διαφόρων αναλύσεων. ς πάρουμε το παράδειγμα του υψομέτρου. Το υψόμετρο αποτελεί ένα από τα πιο κοινά χαρακτηριστικά που αποθηκεύονται σαν δεδομένα σε ένα GIS. Τα δεδομένα αυτά μπορούν να χρησιμοποιηθούν σε πολλές εφαρμογές, όπως μηχανική, αρχαιολογία, μεταφορές, αεροπλοΐα κ.α. Θ Ε Μ Τ Ε Π Π Έστω ότι διαθέτουμε έναν πίνακα MAP[100,100] o οποίος αποθηκεύει το υψόμετρο διαφόρων σημείων μιας περιοχής. Οι τιμές που αποθηκεύει είναι αριθμητικές και μετρώνται σε μέτρα. Τον πίνακα αυτό θα χρησιμοποιήσει αεροπλάνο που εισέρχεται στην περιοχή για την ασφαλή διέλευση του. Θεωρήστε ότι το αεροπλάνο θα κινηθεί από αριστερά προς τα δεξιά στον πίνακα, δηλαδή από την πρώτη στήλη προς την τελευταία και ότι τα αεροπλάνα κινούνται στην ίδια γραμμή στον πίνακα, εκτός αν υπάρχει λόγος αλλαγής γραμμής. Κάθε τετραγωνάκι του πίνακα αντιπροσωπεύει μια περιοχή που έχει έκταση 2 χιλιόμετρα Χ 2 χιλιόμετρα. Να γραφεί πρόγραμμα που αρχικά:. Θα καλεί υποπρόγραμμα INPUT που θα διαβάζει τις τιμές του πίνακα MAP.
Στη συνέχεια: Β. Θα διαβάζει επαναληπτικά τις τρέχουσες συντεταγμένες (Χ,Υ) του αεροπλάνου στην περιοχή (σαν γραμμή και στήλη του πίνακα), καθώς και το ύψος (ALT) στο οποίο πετάει. Για κάθε ενδιάμεση θέση του αεροπλάνου θα καλεί τα υποπρογράμματα που περιγράφονται στα ερωτήματα Γ1, Γ2, Γ3. Το πρόγραμμα θα ολοκληρώνεται, όταν το αεροπλάνο φτάσει να εξέλθει της περιοχής (δηλαδή φτάσει στην τελευταία στήλη) και θα εμφανίζει το μέσο ύψος που το αεροπλάνο πέταξε στην περιοχή. Θα καλεί για κάθε θέση του αεροπλάνου: Γ1. Συνάρτηση DISTANCE που θα υπολογίζει την απόσταση του σε χιλιόμετρα από την έξοδο από την περιοχή (δηλαδή από την τελευταία στήλη). Γ2. Συνάρτηση ΜΧ_ALT που θα υπολογίζει το μεγαλύτερο υψόμετρο στην πορεία του (στην ίδια γραμμή). Το πρόγραμμα θα εμφανίζει τα αποτελέσματα. Γ3. Διαδικασία ALERT που θα επιτελεί την εξής λειτουργία: θα ελέγχει αν στην πορεία του αεροπλάνου (στην ίδια γραμμή) υπάρχει υψόμετρο που πιθανόν να δημιουργήσει πρόβλημα στο αεροπλάνο. Πρόβλημα θα προκύψει εάν το υψόμετρο του εδάφους διαφέρει από το ύψος που πετάει το αεροπλάνο την παρούσα στιγμή μέχρι και 500 μέτρα. Να εμφανίζεται το μήνυμα ALERT σε αυτή την περίπτωση. Θέμα Β Μια εικόνα 4000 x 4000 pixels (16 Megapixels) αποθηκεύεται σε ένα δισδιάστατο πίνακα PICT[4000,4000]. Ένα pixel με μαύρο χρώμα αντιστοιχεί στην τιμή 0, ενώ ένα pixel με άσπρο χρώμα αντιστοιχεί στην τιμή 255. Συνεπώς, ο πίνακας χρησιμεύει στην αποθήκευση των 256 αποχρώσεων του γκρι, δηλαδή κάθε στοιχείο του αποθηκεύει έναν ακέραιο αριθμό από 0 έως 255, ανάλογα με το χρώμα του κάθε pixel.
Να αναπτύξετε πρόγραμμα, το οποίο θα περιλαμβάνει τις εξής λειτουργίες επεξεργασίας της εικόνας: A. Θα περιλαμβάνει τμήμα δηλώσεων. Β. Να διαβάζει το χρώμα του κάθε pixel στο δισδιάστατο πίνακα PICT[4000,4000], ελέγχοντας την ορθή καταχώρηση (0-255). Γ. Μια συνήθης διαδικασία επεξεργασίας εικόνων είναι η λεύκανση, κατά την οποία η τιμή ενός χρώματος πολλαπλασιάζεται με συντελεστή μεγαλύτερο ή ίσο του 1. Το πρόγραμμα να εκτελεί λεύκανση της αρχικής εικόνας με συντελεστή 1,6 και να αποθηκεύει την νέα εικόνα σε νέο πίνακα PICT1[4000,4000]. Σημειώνεται ότι, εάν η νέα τιμή είναι μεγαλύτερη του 255, τότε ως νέα τιμή εκχωρείται το 255. Στην περίπτωση, που η προκύπτουσα τιμή δεν είναι ακέραια, πραγματοποιείται αποκοπή των δεκαδικών ψηφίων. Δ. Ορίζουμε ως «αρνητική» της αρχικής εικόνας, εκείνη που έχει τιμή 0 (μαύρο χρώμα) εκεί όπου η αρχική έχει τιμή 255 (άσπρο χρώμα) και έχει τιμή 1 εκεί όπου η αρχική εικόνα έχει τιμή 254, κ.ο.κ. Να υπολογίζει το «αρνητικό» της εικόνας και να το αποθηκεύει σε έναν νέο πίνακα PICT2[4000,4000]. Ε. Προκειμένου να γίνει συμπίεση της εικόνας στα 4 Megapixel (2000Χ2000 pixel), να πραγματοποιεί αποκοπή των 1000 πρώτων και των 1000 τελευταίων
γραμμών και αντίστοιχα των πρώτων 1000 στηλών και των τελευταίων 1000 στηλών της αρχικής εικόνας και να αποθηκεύει το αποτέλεσμα σε έναν νέο πίνακα PICT3[2000,2000]. Δηλαδή, θα αποθηκεύει τα «κεντρικά» 2000Χ2000 pixel της αρχικής εικόνας στον νέο πίνακα. ΣΤ. Θα εμφανίζει τους αριθμούς των γραμμών του πίνακα της αρχικής εικόνας που όλα τα pixel είχαν το ίδιο χρώμα, καθώς και τον αριθμό του χρώματος. Θέμα Γ Όπως είναι γνωστό, στο παιχνίδι «γωνία» κάθε παίχτης παίρνει 7 χαρτιά. Οι περισσότεροι παίχτες τακτοποιούν τα χαρτιά στα χέρια τους ώστε να επιλέγουν με μια πιο γρήγορη ματιά το τι θα παίξουν. Να γραφεί ένα πρόγραμμα που θα διαβάζει τις ενδείξεις των χαρτιών που λαμβάνει ένας παίχτης και τα ταξινομεί από το μικρότερο στο μεγαλύτερο μέσω του αλγορίθμου ταξινόμησης με εισαγωγή. Ο αλγόριθμος ταξινόμησης με εισαγωγή έχει το εξής σκεπτικό: Ο αλγόριθμος σε κάθε φάση τοποθετεί το στοιχείο που βρίσκεται στην θέση i αυτή την στιγμή, στην θέση που πρέπει να τοποθετηθεί σε σχέση με όλα τα προηγούμενα του στοιχεία. υτό το πετυχαίνει μεταφέροντας όλα τα στοιχεία που είναι αριστερά του και είναι μεγαλύτερα από αυτό μια θέση δεξιότερα, ώστε να μείνει μια κενή θέση και να τοποθετηθεί αυτό σε αυτή. Θεωρήστε ότι δεν μας ενδιαφέρει το χρώμα των χαρτιών και ότι οι βαλέδες, ντάμες και παπάδες έχουν τις τιμές 11,12,13. Το πρόγραμμα να εμφανίζει τα χαρτιά μετά την ταξινόμηση τους.
Θέμα Δ Δυο υπολογιστές επικοινωνούν αποστέλλοντας δυαδικά ψηφία (bits, 0 και 1). Ο υπολογιστής-αποστολέας στέλνει πακέτα των 256 bits. Γράψτε ένα τμήμα προγράμματος για τον υπολογιστή-δέκτη που θα ελέγχει την σωστή λήψη ενός πακέτου ως εξής: Θα διαβάζει ένα-ένα τα 256 bits ενός πακέτου και θα τα αποθηκεύει σε κατάλληλο πίνακα. Για να ελεγχθεί ότι τα bit που έλαβε είναι σωστά, το πρόγραμμα θα δέχεται από τον αποστολέα έναν αριθμό που θα εκφράζει πόσα bits ήταν 1 στο πακέτο. Κατόπιν, θα ελέγχει το πακέτο και αν ο αριθμός των 1 δεν συμφωνεί με τον αριθμό των 1 του αποστολέα, θα εμφανίζει το μήνυμα «Λανθασμένη λήψη πακέτου», θα δέχεται ένα νέο πακέτο (ίδιου μεγέθους) και θα συγκρίνει ένα-ένα τα bit του νέου πακέτου με τα αντίστοιχα του παλιού. Σε περίπτωση που βρίσκει διαφορετικά bit, θα εμφανίζει τις θέσεις που βρίσκονται αυτά.