Λειτουργικά Συστήματα Nachos

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Λειτουργικά Συστήματα Nachos"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Λειτουργικά Συστήματα Nachos Μόσχογλου Στυλιανός η Μαρτίου, 2013 Επιβλέπων: κ. Χασάπης Γεώργιος Επικουρών: κ. Φρόνιμος Θεόδωρος

2 1 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s Περιεχόμενα Εισαγωγή... 2 Ερώτημα 1ο... 2 Ερώτημα 2ο... 3 Ερώτημα 3ο... 4 Ερώτημα 4ο... 5 Ερώτημα 5ο... 6 Η λειτουργία εν συντομία... 7 Ερώτημα 6ο Επίλογος... 12

3 2 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s Εισαγωγή Στόχος της παρούσας εργασίας είναι να παρουσιάσουμε εξ ολοκλήρου τη νηματική λειτουργία του λειτουργικού συστήματος Nachos, που αναπτύχθηκε καθαρά για εκπαιδευτικούς σκοπό από το Berkeley University, CA. Η σωστή διαχείριση νημάτων (threads) από ένα λειτουργικό σύστημα στις μέρες μας αποτελεί βασική προϋπόθεση. Στην υλοποίηση των παρακάτω ερωτημάτων, επιχειρείται το δυνατόν να κατανοηθεί σε βάθος ο τρόπος του πώς τελικώς επιτυγχάνεται αυτή η σωστή διαχείριση. Ερώτημα 1ο Το πρώτο ερώτημα, μας ζητάει να υλοποιήσουμε τη συνάρτηση join(). Παρακάτω, επεξηγείται ο τρόπος λειτουργίας της. Ας υποθέσουμε ότι έ- χουμε δύο νήματα, που δυνητικά μπορούν να τρέξουν. Έστω το T 1 και το T 2. Αν σε περίπτωση που τρέχει το T 1, κάποια στιγμή καλέσει το ίδιο τη συνάρτηση join() (απευθυνόμενο προς το T 2 ), τότε, αυτομάτως το T 1 σταματά την εκτέλεσή του και τη σκυτάλη τη λαμβάνει το T 2. Εφόσον εν συνεχεία ολοκληρωθεί το T 2, το T 1 συνεχίζει την εκτέλεσή του από εκεί που είχε μείνει προηγουμένως. Πρέπει να διευκρινιστεί ότι ενόσω το T 2 εκτελείται, το T 1 μπαίνει σε κατάσταση blocked, έτσι ώστε να μη δαπανά τους πόρους του επεξεργαστή (μέχρι και σε αυτό το ερώτημα ο επεξεργαστής δουλεύει με Round-Robin Scheduler). Αυτό που κάνουμε λοιπόν είναι να ορίσουμε για κάθε ένα εκ των threads ένα semaphore join, o οποίος αρχικά έχει την τιμή 0. Όταν το T 1 εκτελέσει την εντολή join() για το 2 T, τότε αρχικά θα εκτελεστεί η συνάρτηση join.p () και εν συνεχεία η join.v(). Εφόσον το κάθε thread ολοκληρώσει ό,τι έχει να κάνει, εκτελεί κατόπιν την join.v(). Όσο το δεύτερο thread απασχολεί τον επεξεργαστή, το πρώτο δε θα μπορεί να κάνει τίποτα, καθώς θα βλέπει ότι ο αντίστοιχος semaphore είναι 0! Mόνο όταν τελειώσει το δεύτερο τη δουλειά του και αυξήσει τον αντίστοιχο semaphore σε 1, θα μπορεί πλέον το πρώτο να αναλάβει δράση. Μαζί με την υλοποίηση του ερωτήματος, υπάρχει και μία συνάρτηση ελέγχου. Στη συνάρτηση αυτή, δημιουργούμε έναν αυθαίρετο αριθμό από threads και στη συνέχεια καλούμε σε κάποια από αυτά τη συνάρτηση join, ώστε να καλέσουν άλλα threads, και βλέπουμε τελικώς ότι τα πρώτα εξ αυτών, που κάλεσαν την join(), δε συνεχίζουν τη λειτουργία τους, μέχρι να τελειώσουν τα δεύτερα.

4 3 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s Ερώτημα 2ο Το δεύτερο ερώτημα σε λογική είναι πανομοιότυπο με αυτό του πρώτου ερωτήματος. Αυτό που αλλάζει ουσιαστικά είναι το πώς ακριβώς γίνεται η υλοποίηση. Εδώ, πρέπει να υλοποιήσουμε μεταβλητές συνθηκών (condition variables), ώστε να διασφαλίσουμε την ατομικότητα. Προφανώς, η όλη διαδικασία, γίνεται με την χρήση διακοπών, ώστε να εξασφαλιστεί η fail-safe λογική του λειτουργικού συστήματος. Αρχικώς φτιάχνουμε την κλάση με το όνομα Condition2 που περιέχει τις συναρτήσεις sleep, wake και τελικώς wakeall. Η λογική τους επεξηγείται παρακάτω. Πέραν της βασικής ουράς του προγράμματός μας (της readyqueue), όπου τοποθετούνται τα threads που είναι έτοιμα προς εκτέλεση, εδώ έχουμε τη δημιουργία μιας άλλης ουράς, έστω της waitqueue. Κάθε thread, όταν εκτελείται (είναι σε running mode), αν πέσει πάνω σε μία condition variable, ελέγχεται η τιμή της. Αν αυτή είναι false, τότε αυτό το thread τοποθετείται στην waitqueue και περιμένει εκεί σε sleep mode, μέχρι να ξανακληθεί από την ίδια condition variable και να ξυπνήσει (δηλαδή να αλλάξει της condition variable η τιμή σε true, με αποτέλεσμα τώρα το thread να περάσει στην readyqueue και να περιμένει μέχρι να έρθει η σειρά εκτέλεσής του από την CPU). Όταν λέμε να ξυπνήσει, εννοούμε ουσιαστικά να κληθεί η wake ή η wakeall! Στην πρώτη περίπτωση, α- πλώς εκκινείται το thread που βρίσκεται πρώτο στην ουρά. Στη δεύτερη περίπτωση, δηλαδή στην περίπτωση του wakeall, ξυπνάνε όλα τα threads και μεταφέρονται αυτομάτως στην readyqueue. Πρέπει επίσης να επισημανθεί εδώ ότι υπάρχει ουσιαστικώς δυνητικά μία ουρά για κάθε πιθανώς χρησιμοποιούμενο πόρο του συστήματός μας. Δηλαδή, ανάλογα με το condition variable, υπάρχει θεωρητικώς μία ουρά τύπου waitqueue για τον εκτυπωτή, μία άλλη για τον σαρωτή, μία άλλη για οποιονδήποτε άλλο πόρο, όπως ένα πρόγραμμα, κ.λπ. Είναι πολύ βασικό να αναφέρουμε ότι ο τρόπος με τον οποίο υλοποιείται η ουρά εξαρτάται εξ ολοκλήρου από την υλοποίηση του scheduler. Η default υλοποίηση του Nachos, όπως αναφέρθηκε και προηγούμενα, γίνεται βάσει της λογικής Round Robin. Δηλαδή, ανά συγκεκριμένη χρονική διάρκεια που μετράται σε tics του επεξεργαστή, ο scheduler δίνει παύει όποιο thread εκτελείται, και θέτει σε λειτουργία το αμέσως επόμενο από την ουρά. Αξίζει να σημειωθεί εδώ ότι η ουρά αυτή λειτουργεί βάσει της λογικής FIFO, First In First Out. Ωστόσο, στο 5ο ερώτημα, όπως θα δούμε και παρακάτω, έχουμε την υλοποίηση της PriorityQueue, η οποία ταξινομεί τα στοιχεία της βάση ενός κλειδιού. Περισσότερα γι αυτό θα δούμε παρακάτω. Για την επαλήθευση του συγκεκριμένου ερωτήματος, χρησιμοποιήσαμε ένα απλό test function, ωστόσο η ακεραιότητά του φαίνεται καλύτερα από τα επόμενα ερωτήματα, καθώς, όπως θα δούμε, περαιώνονται όλα εις το ακέραιο.

5 4 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s Ερώτημα 3ο Στο τρίτο ερώτημα, καλούμαστε να συμπληρώσουμε την ημιτελή κλάση Alarm. Ουσιαστικά, εδώ, έχουμε να περαιώσουμε τη λειτουργία της συναρτήσεως waintuntil(long x). Αυτή, δέχεται ως όρισμα έναν αυστηρώς θετικό ακέραιο αριθμό, ο οποίος ουσιαστικώς εκφράζει μία χρονική διάρκεια. Η χρονική αυτή διάρκεια μετράται σε κτύπους του επεξεργαστή. Επομένως, το x είναι ο αριθμός των κτύπων του επεξεργαστή που θα μεσολαβήσουν από τη στιγμή μηδέν (την ώρα που εκτελείται η συγκεκριμένη συνάρτηση) μέχρι τη στιγμή μηδέν + x. Αφού διευκρινίσαμε τι ακριβώς σημαίνει το όρισμα, είναι καιρός να αναφέρουμε τι α- κριβώς κάνει αυτή η συνάρτηση. Η λογική πίσω από τη συγκεκριμένη συνάρτηση είναι απλή. Σκοπός της είναι η αναμονή του thread που την καλεί μέχρις ότου να περάσει το χρονικό όριο που θέτουμε ως όρισμα κατά την εκτέλεσή της. Η δομή της βασίζεται πάνω σε έτοιμες, ήδη υλοποιημένες συναρτήσεις της πλατφόρμας της Java, όπως π.χ. αυτών των LinkedList, HashMap. Η LinkedList χρησιμοποιείται προκειμένου να αποθηκευτούν όλοι οι χρόνοι κατά τους οποίους πρόκειται να ξυπνήσει το εκάστοτε thread. Είναι εντελώς βασικό να σημειώσουμε εδώ ότι η λίστα αυτή αναδιατάσσεται κάθε φορά που εισέρχεται ένα νέο στοιχείο σε αυτήν. Η διάταξή της γίνεται με τέτοιον τρόπο, ώστε στην κορυφή της να υπάρχει κάθε φορά η μικρότερη τιμή. Πράγμα λογικό, καθώς σε κάθε περίπτωση θα εξέρχεται από τη λίστα και θα τίθεται σε κατάσταση ετοιμότητας κάθε thread του οποίου ο λήθαργος έχει μόλις τελειώσει. Από την άλλη μεριά, το HashMap ας το φανταστούμε ως εξής: έχω πέντε διαφορετικά κλειδιά, για πέντε διαφορετικές πόρτες. Κάθε κλειδί αντιστοιχεί σε αναλογία ένα-προς-ένα σε μία πόρτα. Αν υπήρχε ένας χάρτης που μας έλεγε ποιο κλειδί αντιστοιχεί σε ποια πόρτα, αυτός θα ήταν ο HashMap! Εντελώς αντίστοιχα κι εδώ, κάθε στοιχείο της λίστας (που έχει τη μορφή ενός κλειδιού ) αντιστοιχίζεται στην αυτή καθ αυτή πόρτα (αντικείμενο). Έτσι, για κάθε κλειδί της λίστας (που το κλειδί από μόνο του δε μας δίνει ουσιαστική πληροφορία), μπορούμε, μέσω του HashMap να βρούμε την πόρτα (το αντικείμενο, δηλαδή το thread!) στο οποίο αντιστοιχεί. Οπότε, όταν εξάγεται ένα στοιχείο από τη λίστα, μέσω του HashMap, βλέπουμε το κλειδί αυτό σε ποιο thread αντιστοιχεί και εν συνεχεία το ξυπνάμε. Πρέπει να σημειώσουμε ότι το λειτουργικό σύστημα κάθε 500 κύκλους καλεί μία συνάρτηση η οποία ονομάζεται TimerInterrupt. Επομένως, δεν έχει νόημα να ορίσουμε χρόνο αναμονής, τουλάχιστον στην αρχή, μικρότερο από 500 κτύπους επεξεργαστή. Ο έ- λεγχος της σωστής λειτουργίας της συναρτήσεως έγινε με την τοποθέτηση διαφόρων threads σε αναμονή για (τυχαία) χρονικά διαστήματα. Εν συνεχεία, όταν ξυπνούσαν, τυπώνονταν ο χρόνος έναρξής τους, χρόνος

6 5 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s αναμονής, χρόνος εκκίνησης, με αποτέλεσμα να γίνει η σωστή εξακρίβωση των αποτελεσμάτων. Ερώτημα 4ο Στο ερώτημα αυτό καλούμαστε να υλοποιήσουμε τη διαδικασία της σύγχρονης ανταλλαγής μηνυμάτων μεταξύ δύο threads, κάνοντας χρήση των condition variables που υλοποιήσαμε στο Ερώτημα 2ο προηγουμένως. Η κλάση αυτή απαιτεί τη δημιουργία δύο ξεχωριστών συναρτήσεων. Της speak από τη μία και της receive από την άλλη μεριά. Τα ονόματα είναι πολύ σαφή και όπως θα δούμε εν συνεχεία, κάνουν ό,τι ακριβώς δηλώνουν! Για να επιτύχουμε τη σωστή περαίωση αυτών των συναρτήσεων, θα χρειαστούμε τα εξής συστατικά : αρχικώς, χρειαζόμαστε ένα αντικείμενο τύπου lock (θα δηλώνει τον εκάστοτε πόρο που κλειδώνουμε και χρησιμοποιούμε μόνον εμείς τότε). Επίσης, θα χρειαστούμε δύο condition variables, μία γι αυτόν που μιλάει (speak function), και μία γι αυτόν που ακούει (listen function). Μία boolean μεταβλητή που θα βλέπει κάθε φορά αν κάποιος έχει ήδη μιλήσει και αναλόγως θα πράττει ενέργειες που θα δούμε εν συνεχεία. Μία λίστα (το πώς αυτή λειτουργεί το έχουμε δει προηγουμένως) που θα περιλαμβάνει όλους που αυτούς πρόκειται να ακούσουν τα μηνύματα, τους listeners δηλαδή. Μία μεταβλητή τύπου int, που είναι ένας τυχαίος ακέραιος αριθμός που αποτελεί και το μήνυμα που πρόκειται να σταλεί. Έστω ότι σε πρώτη φάση εκτέλεσης του Communicator πως καλείται η συνάρτηση speak. Αυτό σημαίνει πως στην παρούσα φάση ένα thread θέλει να στείλει ένα μήνυμα. Για να γίνει αυτό, σε πρώτη φάση λαμβάνει το lock (δηλαδή, κλειδώνει τον πόρο). Εν συνεχεία, κοιτάει να δει αν υπάρχει κάποιος πιθανός ακροατής (listener) στην αντίπερα όχθη. Αν υπάρχει, τότε τον ξυπνάει και ολοκληρώνεται η μεταφορά του μηνύματος. Αν δεν υπάρχει, τότε το συγκεκριμένο thread μπαίνει σε κατάσταση sleep μέχρι να υπάρξει κάποιος ακροατής στην αντίπερα όχθη. Στην φάση τώρα που καλείται η listen, με την ίδια εντελώς λογική, γίνεται έλεγχος αν υπάρχει κάποιος από την α- ντίπερα όχθη που μίλησε. Αν υπάρχει κάποιος, τότε λαμβάνεται το μήνυμα και η συνδιαλλαγή ολοκληρώνεται επιτυχώς. Αν δεν υπάρχει, τότε το thread μπαίνει στη λίστα και περιμένει κάποιος να μιλήσει. Υπάρχει όμως ένα λογικό κενό που πρέπει να αποφύγουμε. Αν έχει μιλήσει κάποιος και στο καπάκι μιλήσει κι άλλος, τότε ο πρώτος που μίλησε θα χαθεί και το μήνυμά του θα πάει στα αζήτητα! Για να το αποφύγουμε αυτό, φτιάχνουμε μία μεταβλητή boolean που την ονομάζουμε spoke και αυτή ελέγχει αν έχει μιλήσει κάποιος άλλος πριν. Αν έχει μιλήσει (και το μήνυμά του δεν έχει εισακουστεί ακόμη, έτσι ώστε να γυρίσει η τιμή της spoke σε false!), τότε ο επόμενος που πρόκειται να μι-

7 6 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s λήσει, δε μιλάει, και μπαίνει σε sleep mode, μέχρι να μιλήσει ο πρώτος και στη συνέχεια να τον ξυπνήσει. Η διαδικασία αυτή γίνεται αναδρομικά για όσους speakers κι αν μαζευτούν (αυτό σημαίνει ότι υπάρχει η μεταβλητή spoke σε πολλά αντίγραφα, ένα για κάθε speaker). O έλεγχος της σωστής λειτουργίας είναι απλός. Δημιουργούμε πολλά threads, άλλα τύπου speak, άλλα τύπου listen, που ανταλλάσουν μεταξύ τους μηνύματα και στη συνέχεια, όταν το αλισβερίσι τους τελειώσει, τερματίζονται. Από το άρτιο αποτέλεσμα αυτού του τεστ, καταλαβαίνουμε ότι η κλάση μας δουλεύει όπως θα έπρεπε. Ερώτημα 5ο Στο ερώτημα αυτό, που αποτελεί αναμφισβήτητα το πιο σύνθετο και δύσκολο μέρος του project, καλούμαστε να φτιάξουμε έναν δικό μας scheduler για το λειτουργικό σύστημα. Όπως αναφέραμε στην αρχή, by default, το Nachos δουλεύει με τον Round Robin. Εμείς καλούμαστε να φτιάξουμε έναν PriorityScheduler. Σύμφωνα με αυτόν, το thread που θα εκτελεστεί πρώτο εξ αυτών που βρίσκονται στην ουρά αναμονής, είναι αυτό με τη μεγαλύτερη προτεραιότητα απ όσα βρίσκονται εκεί. Επίσης, σε περίπτωση που έχουμε πολλά threads με την ίδια προτεραιότητα, πλεονέκτημα έχει το thread που περιμένει την περισσότερη ώρα στην ουρά. Δηλαδή, έχουμε αν το δούμε χονδροειδώς, μία λογική FIFO μαζί με προτεραιότητες. Ας δούμε όμως ένα tricky σημείο της υλοποίησης που είναι και αυτό πάνω στο οποίο δόθηκε ιδιαίτερη έμφαση για την άρτια εκτέλεση του προγράμματος. Ας υποθέσουμε ότι έχουμε ένα thread A με τη μέγιστη προτεραιότητα, ένα thread B με τη μέση προτεραιότητα, κι ένα thread C με την ελάχιστη προτεραιότητα. Επίσης, ας υποθέσουμε ότι το C είναι ο ιδιοκτήτης ενός πόρου (τον κατέχει δηλαδή) και ότι το A προκειμένου να εκτελεστεί χρειάζεται τον πόρο που κατέχει το C. Σε αυτή την περίπτωση, όταν πάει ο scheduler να διαλέξει ποιο thread θα ε- κτελεστεί πρώτα, θα δει ότι το A είναι σε blocked state, επομένως θα δώσει άδεια στο B να εκτελέσει τη λειτουργία του. Επειδή το C έχει μικρότερη προτεραιότητα από το B, το B θα εκτελείται συνέχεια, με αποτέλεσμα το A να λιμοκτονήσει. Σε τούτη την περίπτωση, το A θα πρέπει να δωρίσει την προτεραιότητά του στο C προκειμένου να εκτελεστεί αυτό πρώτα, να ελευθερώσει τον πόρο, και εν συνεχεία να εκτελεστούν τα A και B άνευ κολλημάτων. Υπ όψιν ότι το C θα εκτελεστεί όχι μέχρι να τερματίσει, αλλά μέχρι να ελευθερώσει τον πολυπόθητο πόρο! Αφού τον ελευθερώσει, πλέον είναι το A που θα εκτελεστεί (καθώς είναι αυτό με τη μέγιστη προτεραιότητα!). Το C θα εκτελεστεί από εκεί που είχε μείνει (όταν άφησε τον πόρο), αφού τελειώσει το A και εν συνεχεία το B με τις όποιες δουλειές έχουν να κάνουν.

8 7 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s Η λειτουργία εν συντομία Αρχικώς όλα τα threads τοποθετούνται σε μία κοινή ουρά, τη γνωστή από τα προηγούμενα ερωτήματα readyqueue. Αυτό συμβαίνει ανεξαρτήτως οποιωνδήποτε εξαιρέσεων. Σε πρώτη φάση επιλέγεται λοιπόν το thread με τη μεγαλύτερη προτεραιότητα. Σε περίπτωση που κάποιο thread λαμβάνει έναν πόρο, γίνεται έλεγχος αν είναι απαραίτητο να τον δωρίσει, για να μην έχουμε αδιέξοδα ή λιμοκτονίες. Για να δωρίσει αυτόν τον πόρο, θα πρέπει να έχουμε αλλαγή προτεραιοτήτων. Κάθε φορά που έχουμε αλλαγή προτεραιοτήτων, έχουμε και μία ανασυγκρότηση της ουράς με φθίνουσα σειρά (το πρώτο στοιχείο είναι αυτό με τη μεγαλύτερη προτεραιότητα!). Η διαδικασία αυτή επαναλαμβάνεται αναδρομικώς μέχρι να έχουν εκτελεστεί επιτυχώς όλα τα threads. Καθότι, όπως αναφέραμε, το συγκεκριμένο ερώτημα είναι το πιο δύσκολο στην κατανόησή του, κρίθηκε σκόπιμο να σχολιάσουμε ενδελεχώς συγκεκριμένες μεταβλητές-κλειδιά της συγκεκριμένης κλάσης. PriorityScheduler Η συγκεκριμένη κλάση είναι η βασική που μας ζητείται να υλοποιήσουμε. Αυτή, μεταξύ άλλων, περιλαμβάνει τα εξής καίρια συστατικά στοιχεία: SortedMap<Integer, Queue<ThreadState>> Όπως έχει αναφερθεί και σε προηγούμενο ερώτημα, η δομή αυτή είναι μία έτοιμη δομή της Java που ουσιαστικά περιέχει δύο στοιχεία. Ένα κλειδί και μία πόρτα σε αναλογία ένα προς ένα. Το κλειδί στην προκειμένη περίπτωση είναι ένας ακέραιος αριθμός, ενώ η πόρτα είναι ένα α- ντικείμενο τύπου Queue<ThreadState>. H μεταξύ τους σχέση είναι έναπρος-ένα. Δηλαδή, κάθε κλειδί ορίζει μονοσήμαντα μία πόρτα και αντιστρόφως. Η τιμή του εκάστοτε κλειδιού αντιστοιχεί και σε μία προτεραιότητα. Η λίστα αυτή είναι ταξινομημένη με φθίνουσα σειρά. Δηλαδή, πάνω πάνω, βρίσκεται η μεγαλύτερη προτεραιότητα (κλειδί). Αν υπάρχουν threads με την ίδια προτεραιότητα, αυτά βρίσκονται στην ουρά (πόρτα) που βρίσκεται σε αντιστοιχία ένα-προς-ένα, όπως προαναφέρθηκε, με το κλειδί. ThreadState idioktiths Εδώ αποθηκεύεται το threadstate του ιδιοκτήτη (thread) ενός συγκεκριμένου πόρου. Αυτός μπορεί να είναι κάποιο lock, μπορεί να είναι η CPU, κ.λπ.

9 8 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s boolean transferpriority Αυτής της μεταβλητής η τιμή είναι αληθής ( true ), όταν υπάρχει νόημα κάποιο εκ των threads να δωρίσει την προτεραιότητά του. Αν δεν υπάρχει νόημα δωρισμού προτεραιότητας, τότε η τιμή της είναι ψευδής ( false ). waitforaccess(kthread thread) H συνάρτηση αυτή κάνει ό,τι ακριβώς λέει και το όνομά της. Δηλαδή, τοποθετεί το εκάστοτε thread στη λίστα αναμονής, ανάλογα με τον πόρο που φρουρεί την εκάστοτε χρονική στιγμή η PriorityQueue. acquire(kthread thread) Η συνάρτηση αυτή κάνει ό,τι ακριβώς λέει και το όνομά της. Δηλαδή, ανάλογα με το thread που της δίνεται ως όρισμα, λαμβάνει υπό την κατοχή της τον πόρο που φρουρεί την εκάστοτε χρονική στιγμή η PriorityQueue. ThreadState dialekseepomenothread() Επιλέγει το επόμενο threadstate από τον χάρτη ουρών (ουσιαστικά αυτόν που βρίσκεται πρώτο, πάνω-πάνω!). Εν συνεχεία, παίρνει από την ουρά στην οποία αντιστοιχεί το συγκεκριμένο threadstate το πρώτο της στοιχείο. KThread nextthread() Σε συνεργασία με την προηγούμενη συνάρτηση, γίνεται η τελική επιλογή του thread μέσω του αντίστοιχου threadstate. class DwrismosProteraiotitas H κλάση αυτή, όπως φαίνεται και από το όνομά της, είναι υπεύθυνη για το δωρισμό προτεραιότητας, σε περίπτωση που διαπιστωθεί ότι δε διαφορετική περίπτωση (αν δε δωριστεί η προτεραιότητα), θα οδηγηθούμε σε αδιέξοδο. Για να γίνει αυτό επιτυχώς, ορίζονται δύο μεταβλητή. Η πρώτη είναι τύπου PriorityQueue και η δεύτερη ένας ακέραιος που δηλώνει την προτεραιότητα. TreeSet<DwrismosProteraiotitas> Εδώ έχουμε το σύνολο των επικείμενων δωρισμών προτεραιότητας. Για να μην υπάρχει μπέρδεμα κατά την περαίωση των δωρισμών προτεραιότητας, πρέπει να ακολουθείται μία ιεραρχία. Τουτέστιν, θα ξεκινήσει

10 9 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s το thread με τη μέγιστη προτεραιότητα (που αιτείται προφανώς κάποιον πόρο που είναι κατειλημμένο από άλλο thread, μικρότερης προτεραιότητας) να δωρίσει την προτεραιότητά του, και εν συνεχεία, σε φθίνουσα σειρά, θα ακολουθήσουν τα υπόλοιπα. Αυτό γίνεται βάση της δομής ενός δυαδικού δένδρου. Κάθε φορά που υπεισέρχεται ένα νέο thread που πρόκειται να δωρίσει την προτεραιότητά του, το δένδρο αυτό αναδιοργανώνεται. PriorityQueue perimenei Στην ουρά αυτή καταχωρείται το thread το οποίο αναμένει μέχρι να ε- κτελεστεί. apoxwrhsh(priorityqueue ouraanamonhs) Σε αυτή τη συνάρτηση, αφαιρείται από την ουρά το thread που τρέχει. Αν έχει αδειάσει η ουρά, ενημερώνεται ο ιδιόκτητης για τυχόν αλλαγές. epanasugkrothsh(priorityqueue ouraanamonhs) Αυτή παίζει το ρόλο επανασυγκρότησης της ουράς κάθε φορά που έχουμε δυνητικά μία αλλαγή. Επανασυγκροτείται η ουρά, όταν διαγράφεται κάποιο thread, όταν προστίθεται κάποιο άλλο σε αυτή, κ.λπ. Η ουρά όπως έχουμε αναφέρει είναι σε φθίνουσα σειρά. getleadpriority(priorityqueue anamonh) Επιστρέφεται μέσω αυτής η μέγιστη προτεραιότητα που υπάρχει στον χάρτη ουρών. eidopoihshidioktith(priorityqueue ouraanamonhs) Ειδοποιεί τον ιδιοκτήτη σε περίπτωση που πρόκειται να έχουμε μεταφορά προτεραιότητας (καθώς είναι αυτός που πρόκειται να τη λάβει). kataxwrhshproteraiotitas(priorityqueue anamonh) Κάνει μία καταχώρηση προτεραιότητας στην cache που είδαμε προηγουμένως. Στη συνέχεια προχωρεί σε ανασυγκρότηση της ουράς. anaklhshproteraiotitas(priorityqueue anamonh) Κάνει έλεγχο να δει αν υπάρχει μέσα στην cache η ουρά (anamonh). Αν υπάρχει, την αφαιρεί. Εν συνεχεία, καλή τη συνάρτηση ανασυγκρότησης. Η επαλήθευση έγινε βάσει μίας selftest που βγάζει αναμενόμενα αποτελέσματα σαν output.

11 10 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s Ερώτημα 6ο Στο ερώτημα αυτό, καλούμαστε να επιλύσουμε ένα αρκετά σύνθετο πρόβλημα, συνδυάζοντας τα τέσσερα πρώτα ερωτήματα της εργασίας. Συγκεκριμένα, δοθέντος ενός τυχαίου αριθμού παιδιών και ενηλίκων, και με την προϋπόθεση ότι έχουμε ένα μόνο καΐκι και ότι τηρούνται κάποιοι κανόνες, πρέπει να περάσουμε όλους τους ενήλικες και τα παιδιά από το Oahu στο Molokai. H λογική, βάσει των περιορισμών που τίθενται κατά εκφώνηση της άσκησης, είναι τελικώς η εξής: ένα παιδί πηγαινοέρχεται από το Molokai στο Oahu. Όταν φθάνει στο Oahu, αν υπάρχει έστω ένας ενήλικας, δίνει στη διάθεσή του το καΐκι για να πάει ο ίδιος στο Molokai, δεδομένου βεβαίως ότι υπάρχει ήδη τουλάχιστον ένα παιδί εκεί (για να μη παραβούμε τους κανόνες!). Αφού πάει ο ενήλικας στο Molokai, παραμένει εκεί, και δίνει το καΐκι σε ένα από τα παιδιά για να επιστρέψει πίσω στο Oahu. Όταν επιστρέψει αυτό το παιδί στο Oahu, με την ίδια λογική που περιγράφηκε προηγουμένως, θα δει αν υπάρχει ένας ενήλικας και θα του δώσει τη βάρκα, κ.λπ. Στο τελευταίο δρομολόγιο, ένα παιδί πάλι θα πάρει το καΐκι για το Oahu, απλώς για να διαπιστώσει ότι δεν υπάρχει κανείς και να γυρίσει τελικά πίσω. Πρέπει να σημειωθεί ότι όλα τα δρομολόγια από το Molokai στο Oahu γίνονται με ένα μόνο παιδί πάνω στο καΐκι. Παρακάτω, επιχειρείται μία ανάλυση των βασικών σημείων του κώδικα. Υπάρχει μία μεταβλητή ektelesi τύπου BoatGrader, η οποία χρησιμοποιείται για να ανακαλούνται οι (έτοιμες) συναρτήσεις που τυπώνουν ποιος πηγαίνει πού. Υπάρχει ένα lock με όνομα kaiki, μιας και το ίδιο το καΐκι είναι ένας (δυνητικά) πόρος. Υπάρχει μία boolean μεταβλητή enapaidakistokaiki, η οποία, όπως λέει και το όνομά της, γίνεται true, αν υπάρχει ήδη ένα παιδί πάνω στο καΐκι. Επίσης, υ- πάρχει το condition paidakimolokai, το οποίο σημαίνει ουσιαστικά ότι όταν παιδάκι φθάσει στο Molokai, πέφτει σε κατάσταση ύπνου και ταυτοχρόνως ξυπνάει έναν ενήλικα για να πάρει το καΐκι και να οδεύσει προς το Oahu. Κατόπιν, υπάρχει το condition variable enapaidakisto- KaikiPerimeneiDeutero. Σε αυτήν τη συνθήκη τελείται το εξής: αν ανέβει ένα παιδάκι στο καΐκι, κοιτάει αν υπάρχει άλλο παιδάκι ήδη πάνω στο καΐκι, βάσει της προηγούμενης boolean μεταβλητής που αναφέραμε. Αν αυτή είναι false, τότε, αυτό, επιβιβάζεται στο καΐκι και μπαίνει σε κατάσταση ύπνου, μέχρι να έρθει κάποιο άλλο παιδάκι, να επιβιβαστεί κι αυτό και στη συνέχεια (το δεύτερο παιδάκι) να το ξυπνήσει (το πρώτο παιδάκι). Επίσης, υπάρχει ο semaphore PaidakiaStoMolokai, που χρησιμοποιείται για να γνωρίζει a priori ένας ενήλικας αν υπάρχει ήδη ένα (τουλάχιστον) παιδί στο Molokai πριν ανέβει στο καΐκι. Αν δεν υπάρχει, τότε μπαίνει σε κατάσταση ύπνου. Κατόπιν, υπάρχει ένας semaphore KaikiRezerve, ο οποίος χρησιμοποιείται για να δηλώσει ότι το καΐκι είναι ρεζερβέ και δε μπορεί να το χρησιμοποιήσει κανένας άλ-

12 11 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s λος! Επίσης, υπάρχει ο semaphore KaikiRezerve2Paidakia, ο οποίος χρησιμοποιείται για να διαπιστωθεί ότι όντως δύο παιδιά ανέβηκαν πάνω στο καΐκι. Κατόπιν, υπάρχει και η boolean μεταβλητή dromologiotelos που αρχικοποιείται σε τιμή false. Αυτή παίρνει την τιμή true, μόνον όταν ολοκληρωθεί η όλη διαδικασία μεταφοράς ενηλίκων-παιδιών από το Oahu στο Molokai. Τέλος, υπάρχουν και δύο μεταβλητές τύπου ακεραίων αριθμών, οι paidakiapouperasan, enilikespouperasan, που κάνουν ό,τι ακριβώς λένε. Δηλαδή, η κάθε μία δηλώνει τον αριθμό των παιδιών και των ενηλίκων που πέρασαν αντιστοίχως. Υπάρχει η συνάρτηση selftest() η οποία δημιουργεί τον boatgrader και καλή τη συνάρτηση εκκίνησης (begin), η οποία αρχικοποιεί όλες τις μεταβλητές και δημιουργεί αντίστοιχα threads και για κάθε έναν εκ των ενηλίκων και κάθε ενός εκ των παιδιών. Εν συνεχεία τελεί τον έλεγχο ώστε να επαληθεύσει ότι η τιμή του dromologiotelos παραμένει false, όσο εκτελείται το πρόγραμμα. Όταν δει ότι η τιμή αυτή αλλάξει σε true, κάνει yield και τερματίζει. Το πρόγραμμά μας μας λέει ότι τελειώσαμε όταν όλα τα παιδιά και οι ενήλικες βρεθούν τελικώς στο Molokai. Πέραν της selftest, υπάρχει η συνάρτηση EktelesiEnilika, η οποία, όπως αναφέρθηκε και προηγουμένως, κοιτάει αν υπάρχει κάποιο παιδί ήδη στο Molokai, μέσω του semaphore PaidakiaStoMolokai. Αν δεν υπάρχει, μπαίνει σε κατάσταση sleep, όπως και όλοι οι υπόλοιποι ενήλικες, μέχρι να τον ξυπνήσει αυτή η boolean μεταβλητή. Όταν ξυπνήσει, μπαίνει και πάλι στην ουρά αναμονής. Αφού λάβει το lock, πλέον είναι σε θέση να πάρει το καΐκι και να πάει στο Molokai. Όταν φθάσει εκεί, θα ξυπνήσει ένα παιδί κι αυτός θα πέσει για ύπνο. Ξυπνάει ένα παιδί κι όχι ενήλικα, γιατί, ό- πως αναφέραμε προηγουμένως, το δρομολόγιο από το Molokai στο Oahu μπορεί να το κάνει μόνο ένα παιδί. Αυξάνονται εν συνεχεία οι ενήλικες που έκαναν το δρομολόγιο κατά ένα και αντίστοιχα μειώνονται τα παιδιά κατά ένα, καθώς ένα είναι αυτό που επιστρέφει. Αφού επιστρέψει, κάνουμε release το lock. Τέλος, υπάρχει και η συνάρτηση EkteleshPaidiou, οπού και σε αυτήν αρχικά ορίζεται μία boolean μεταβλητή, για να δηλώσει ότι αυτό το παιδί δε βρίσκεται στο Molokai. Στη συνέχεια ξεκινάει και τρέχει ένας βρόγχος επανάληψης μέχρι να ολοκληρωθεί το πρόγραμμα. Σε περίπτωση που το παιδάκι βρίσκεται στο Molokai, τότε λαμβάνει υπό την κατοχή του το καΐκι που μόλις άφησε ο ενήλικας που έφθασε στο Molokai και αναφέρει ότι γυρνάει στο Oahu, θέτοντας τη boolean μεταβλητή του ότι δε βρίσκεται πλέον στο Molokai. Εν συνεχεία, αφήνει από την κατοχή του το καΐκι και ξυπνάει έναν εξ αυτών που περιμένουν τη βάρκα. Αν είναι στο Oahu, τότε μπαίνει στην ουρά αναμονής μέχρι δύο παιδία να ταξιδέψουν στο Molokai. Όταν βρεθούν και τα δύο παιδιά, ένα εκ των οποίων θα ναι αυτό, λαμβάνει υπό την κατοχή του το καΐκι και ξεκινάνε για το Molokai. Υπάρχουν βέβαια δύο περιπτώσεις. Αν είναι το δεύτερο που ανέβηκε, βλέποντας την αντί-

13 12 Λ ε ι τ ο υ ρ γ ι κ ά Σ υ σ τ ή μ α τ α, N a c h o s στοιχη boolean μεταβλητή, τη θέτει false, αφήνει το lock και το ανακαταλαμβάνει, έτσι ώστε να τραβήξει αυτό κουπί. Όταν (ξανά) πάρει το lock, ξυπνάει το πρώτο παιδί που ήταν ήδη πάνω στη βάρκα, αναφέρει μέσω της αντίστοιχης μεταβλητής ότι πηγαίνει στο Molokai και τελικώς αυξάνει τα παιδιά που βρίσκονται εκεί (στο Molokai) κατά έναν. Εν συνεχεία, κοιμάται. Αν δεν είναι το δεύτερο που ανεβαίνει, τότε θέτει την αντίστοιχη μεταβλητή που σηματοδοτεί ότι μόνο ένα παιδί υπάρχει πάνω στο καΐκι σε true και πέφτει για ύπνο, μέχρι να το ξυπνήσει το δεύτερο παιδάκι που πρόκειται να ανέβει στη βάρκα. Όταν το ξυπνήσει το δεύτερο παιδάκι που ανεβαίνει στη βάρκα, τότε αυτό κάνει μία φορά (μαζί με το δεύτερο που το ξύπνησε και το οποίο είναι αυτό που τραβάει κουπί) το δρομολόγιο από το Oahu στο Molokai και εν συνεχεία είναι αυτό που γυρνάει από το Molokai στο Oahu (λογικό, καθότι μιας και το δεύτερο είναι που θα πιλοτάρει στο πρώτο δρομολόγιο τη βάρκα, το πρώτο είναι αυτό που θα γυρίσει. Η απόσταση Oahu Molokai είναι 17χιλιόμετρα και είναι αφύσικο για ένα παιδί να κάνει δύο συνεχόμενα δρομολόγια). Αφού φθάσει στο Oahu κάνει release το lock και πλέον η βάρκα μπορεί να χρησιμοποιηθεί από ενήλικα. Αν δεν υπάρχει ενήλικας ή παιδί, είναι αυτό που γυρνάει μόνο του πίσω στο Molokai και η εφαρμογή τερματίζεται. Επίλογος Ελπίζω μέσα από αυτή την αρκετά περιεκτική αναφορά να αποκτήσει ο αναγνώστης μία αναλυτική γνώση της λειτουργίας του νηματικού συστήματος του Nachos. Λεπτομέρειες, που πιθανώς δεν υπάρχουν εδώ, βρίσκονται με τη μορφή σχολίων μέσα στον κώδικα των εκάστοτε κλάσεων στον φάκελο Threads. Ευχαριστώ πολύ για την ανάγνωση. Μόσχογλου Στυλιανός

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

Διαβάστε περισσότερα

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 2016-2017 ΕΡΓΑΣΙΑ 1 (JAVA) Παράδοση 26/4/2017 Στα πλαίσια της εργασίας θα υλοποιηθεί ένα απλοϊκό πρόγραμμα κρατήσεων Ξενοδοχείων. Για απλοποίηση θα περιοριστούμε

Διαβάστε περισσότερα

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση Εργαστηριακή Άσκηση Οι Αλγόριθμοι Χρονοπρογραμματισμού First Come First Serve (FCFS), Shortest Job First (SJF), Round Robin (RR), Priority Weighted (PRI) Επιμέλεια: Βασίλης Τσακανίκας Περιεχόμενα Αλγόριθμοι

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Η/Υ

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του

Διαβάστε περισσότερα

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 ο Α. Δίνεται η εντολή εκχώρησης: τ κ < λ Ποιες από τις παρακάτω προτάσεις είναι σωστές και ποιες λάθος. Να δικαιολογήσετε

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012 ΘΕΜΑ Α Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: 1. Κάθε βρόγχος που υλοποιείται με την εντολή Για μπορεί να

Διαβάστε περισσότερα

HY-486 Αρχές Κατανεμημένου Υπολογισμού

HY-486 Αρχές Κατανεμημένου Υπολογισμού HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

Διαβάστε περισσότερα

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΚΥΡΙΑΚΗ 24/04/2016 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6) ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιο σας τον αριθμό για καθεμία από τις παρακάτω

Διαβάστε περισσότερα

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2015-2016 Θέμα Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις προτάσεις 1-4 και δίπλα τη λέξη ΣΩΣΤΟ,

Διαβάστε περισσότερα

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1 Κρίσιμη Περιοχή Υπό Συνθήκη (onditional ritical Regions) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Πέρα από ελεγκτές Ο ελεγκτής είναι χρήσιμο εργαλείο συγχρονισμού παρέχει στον προγραμματιστή εγγυημένο

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο Να περιγραφεί η δομή επανάληψης Αρχή_επανάληψης Μέχρις_ότου

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο Να περιγραφεί η δομή επανάληψης Αρχή_επανάληψης Μέχρις_ότου 2.87 Να περιγραφεί η δομή επανάληψης Μέχρις_ότου Ημορφή της δομής επανάληψης Μέχρις_ότου είναι: Μέχρις_ότου Συνθήκη Η ομάδα εντολών στο εσωτερικό της επανάληψης, εκτελείται μέχρις ότου ισχύει η συνθήκη

Διαβάστε περισσότερα

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η 53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η ΠΑΓΚΡΑΤΙ: Φιλολάου & Εκφαντίδου 26 : 210/76.01.470 210/76.00.179 ΘΕΜΑ Α [Α.1.1]. Από ποιους παράγοντες εξαρτάται η επιλογή της

Διαβάστε περισσότερα

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Επεξήγηση web site με λογικό διάγραμμα «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Twitter : @ebasegr Πολλοί άνθρωποι

Διαβάστε περισσότερα

1. Ποιους μαθησιακούς στόχους θα προσδιορίζατε στα πλαίσια της διδακτικής δραστηριότητας;

1. Ποιους μαθησιακούς στόχους θα προσδιορίζατε στα πλαίσια της διδακτικής δραστηριότητας; Σας έχει ανατεθεί η διδασκαλία της μετα-ελεγχόμενης επανάληψης (εντολή «όσο») στα πλαίσια μιας διδακτικής ώρας της Γ λυκείου. Οι μαθητές έχουν πραγματοποιήσει ένα εισαγωγικό μάθημα για τους προκαθορισμένους

Διαβάστε περισσότερα

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε Ναι Τέλος Α2 Διδακτική πρόταση ΕΝΟΤΗΤΑ 2η, Θέματα Θεωρητικής Επιστήμης των Υπολογιστών Κεφάλαιο 2.2. Παράγραφος 2.2.7.4 Εντολές Όσο επανάλαβε και Μέχρις_ότου Η διαπραγμάτευση των εντολών επανάληψης είναι σημαντικό

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

Διαβάστε περισσότερα

EasyBeeScale ΙΙ (V07.00) Οδηγίες χρήσης

EasyBeeScale ΙΙ (V07.00) Οδηγίες χρήσης EasyBeeScale ΙΙ (V07.00) Οδηγίες χρήσης Μελισσοκομική ζυγαριά με αισθητήρες θερμοκρασίας και υγρασίας 1. Χρήση για πρώτη φορά (Ενεργοποίηση) Όταν το σύστημα EasyBeeScale θα χρησιμοποιηθεί για πρώτη φορά,

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

Διαβάστε περισσότερα

-Δεν υπάρχουν.java αρχεία στο φάκελο.μόνο.class και το text file -Δεν γίνεται έλεγχος για Ν<0

-Δεν υπάρχουν.java αρχεία στο φάκελο.μόνο.class και το text file -Δεν γίνεται έλεγχος για Ν<0 Τελευταία 4 ψηφία αρ. ταυτότητος ΕΡΓΑΣΙΑ 0 ΕΡΓΑΣΙΑ 1 ΕΡΓΑΣΙΑ 2 ΕΡΓΑΣΙΑ 3 ΕΡΓΑΣΙΑ 4 Σχόλια (εργ. 4) Σχόλια (εργ. 3) 8380 95 100 28 97 0 Δεν παρέδωσε 2410 90 95 97 98 0 -Δεν υπάρχουν.java αρχεία στο φάκελο.μόνο.class

Διαβάστε περισσότερα

Βασικές λειτουργίες διαδανεισμού μέσα από το σύστημα SmILLe

Βασικές λειτουργίες διαδανεισμού μέσα από το σύστημα SmILLe Βασικές λειτουργίες διαδανεισμού μέσα από το σύστημα SmILLe Κεντρικό σύστημα διαδανεισμού smille περιβάλλον διαχειριστή. Για την είσοδό σας στο σύστημα επισκέπτεστε την σελίδα http://ill.lib.ntua.gr/smille/admin/login.php

Διαβάστε περισσότερα

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

Διαβάστε περισσότερα

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Αρχιτεκτονική Πλατφόρμας Μπορεί να μοντελοποιηθεί σαν ένα σύνολο από διασυνδεδεμένα κομμάτια: 1. Στοιχεία επεξεργασίας (processing

Διαβάστε περισσότερα

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C Επαναληπτικός βρόχος καλείται το τμήμα του κώδικα μέσα σε ένα πρόγραμμα, το οποίο εκτελείται από την αρχή και επαναλαμβάνεται

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 5 : Αμοιβαίος Αποκλεισμός Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών

Διαβάστε περισσότερα

Επαναληπτικό Διαγώνισμα

Επαναληπτικό Διαγώνισμα Επαναληπτικό Διαγώνισμα Ανάπτυξη Εφαρμογών Σε Προγραμματιστικό Περιβάλλον Γ Λυκείου Κυριακή 13 Απριλίου 2014 ΘΕΜΑ Α Δίνεται το παρακάτω τμήμα προγράμματος που το ακολουθεί μία συνάρτηση που χρησιμοποιεί....

Διαβάστε περισσότερα

Θέμα Α Α3.1 ΤΕΛΟΣ 1ΗΣ ΑΠΟ 9 ΣΕΛΙΔΕΣ

Θέμα Α Α3.1 ΤΕΛΟΣ 1ΗΣ ΑΠΟ 9 ΣΕΛΙΔΕΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΛΥΣΕΙΣ ΕΠΑΝΑΛΗΠΤΙΚΟΥ ΔΙΑΓΩΝΙΣΜΑΤΟΣ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2012-2013 Επιμέλεια: Ομάδα Διαγωνισμάτων από το Στέκι των Πληροφορικών Θέμα Α Α1 Α2 1. Μέχρι το 1976

Διαβάστε περισσότερα

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2 Παιχνίδι Κρεμάλα Στη δραστηριότητα αυτή θα δημιουργήσεις το γνωστό παιχνίδι της κρεμάλας στο οποίο ο παίκτης προσπαθεί να μαντέψει τα γράμματα από τα οποία αποτελείται μια άγνωστη λέξη. Το πρόγραμμα που

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 5ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 Η ΕΝΤΟΛΗ for Με την εντολή for δημιουργούμε βρόχους επανάληψης σε

Διαβάστε περισσότερα

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων Ενότητα 4 Επεξεργασία πινάκων 36 37 4.1 Προσθήκη πεδίων Για να εισάγετε ένα πεδίο σε ένα πίνακα που υπάρχει ήδη στη βάση δεδομένων σας, βάζετε τον κέρσορα του ποντικιού στο πεδίο πάνω από το οποίο θέλετε

Διαβάστε περισσότερα

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling) Μάθημα 6 ο Χρονοδρομολόγηση (Scheduling) Σκοπός του μαθήματος Στην ενότητα αυτή θα εξηγήσουμε το ρόλο και τη λειτουργία της χρονοδρομολόγησης σε ένα Λειτουργικό Σύστημα. Θα μάθουμε: Να ορίζουμε τι είναι

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Κατανεμημένα Συστήματα με Java Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Δομή Επανάληψης Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Δομή Επανάληψης Επανάληψη με αρίθμηση DO = ,

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΚΥΡΙΑΚΗ 24/04/2016 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6) ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιο σας τον αριθμό για καθεμία από τις παρακάτω

Διαβάστε περισσότερα

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης Μάθημα 7 ο Αλγόριθμοι Χρονοδρομολόγησης Σκοπός του μαθήματος Στην ενότητα αυτή θα εξηγήσουμε το ρόλο και την αξιολόγηση των αλγορίθμων χρονοδρομολόγησης, και θα παρουσιάσουμε τους κυριότερους. Θα μάθουμε:

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης ΠΕΡΙΕΧΟΜΕΝΑ Εντολές επιλογής Εντολές επανάληψης Εισαγωγή Στο προηγούμενο κεφάλαιο αναπτύξαμε προγράμματα, τα οποία ήταν πολύ απλά και οι εντολές των οποίων εκτελούνται η μία μετά την άλλη. Αυτή η σειριακή

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Βάλβης Δημήτριος Μηχανικός Πληροφορικής ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα

Διαβάστε περισσότερα

first block of queries p-th block of queries p

first block of queries p-th block of queries p Εργασία 1η Παράλληλα & Διανεμημένα Συστήματα Μόσχογλου Στυλιανός 6978 Αριστοτέλης Μικρόπουλος 6977 28 Νοεμβρίου 2011 Περιεχόμενα 1 Πρόλογος 2 2 Ο σειριακός k nearest neighbor algorithm 2 2.1 Η λειτουργία

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

Διαβάστε περισσότερα

ΘΕΜΑ Α. Μονάδες 10 Α2.

ΘΕΜΑ Α. Μονάδες 10 Α2. ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΥΡΙΑΚΗ 21 ΜΑΙΟΥ 2017 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΘΕΜΑ

Διαβάστε περισσότερα

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Εισαγωγή H κεντρική μονάδα επεξεργασίας (ΚΜΕ) και η κύρια μνήμη αποτελούν τα βασικά δομικά στοιχεία ενός υπολογιστικού συστήματος. Η πρώτη εκτελεί εντολές χειρισμού δεδομένων

Διαβάστε περισσότερα

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

Διαβάστε περισσότερα

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014. Σωτήρης Γυφτόπουλος

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014. Σωτήρης Γυφτόπουλος Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014 Σωτήρης Γυφτόπουλος Κανόνες του Facility Game (1/4) Στο Facility Game υπάρχει ένα σύνολο κόμβων που συνδέονται «σειριακά» και κάθε κόμβος

Διαβάστε περισσότερα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες Σκοπός της 3ης άσκησης είναι να μάθουμε να φτιάχνουμε και να προσπελαύνουμε λίστες, να δούμε τι διαφορά έχουν από τα tuples και επίσης πώς μπορούμε

Διαβάστε περισσότερα

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα ΕΝΤΟΛΕΣ χρησιμοποιηθούν παρακάτω στα παραδείγματα Βάζοντας την εντολή αυτή σε οποιοδήποτε αντικείμενο μπορούμε να αλλάζουμε

Διαβάστε περισσότερα

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής: Αυτό που πρέπει να θυμόμαστε, για να μη στεναχωριόμαστε, είναι πως τόσο στις εξισώσεις, όσο και στις ανισώσεις 1ου βαθμού, που θέλουμε να λύσουμε, ακολουθούμε ακριβώς τα ίδια βήματα! Εκεί που πρεπει να

Διαβάστε περισσότερα

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Δέυτερη Προγραμματιστική Εργασία Προθεσμία παράδοσης: 19/6/2017 1. Γενική Περιγραφή Στην δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε

Διαβάστε περισσότερα

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΚΥΡΙΑΚΗ 23/04/2017 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΠΤΑ ( 7) ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν γράφοντας στο

Διαβάστε περισσότερα

a. b. c. d ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

a. b. c. d ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7.7 Πρωτόκολλο Μέχρι τώρα έχουμε αναφέρει, ότι, για να μεταδοθούν τα αυτοδύναμα πακέτα στο φυσικό μέσο, πρέπει αυτά να μετατραπούν σε πακέτα φυσικού δικτύου (π.χ. Ethernet). Όμως, δεν έχει ειπωθεί τίποτε

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ουρές προτεραιότητας - Προσοµοίωση της λειτουργίας ενός print server Σκοπός

Διαβάστε περισσότερα

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

Διαβάστε περισσότερα

Το Παιχνίδι της Αφαίρεσης

Το Παιχνίδι της Αφαίρεσης Το Παιχνίδι της Αφαίρεσης Φύλλο Εργασίας Σε αυτό το φύλλο εργασίας θα φτιάξουμε ένα παιχνίδι για δύο παίκτες που ονομάζεται NIM. Είναι πολύ παλιό και πιθανότατα προέρχεται από την Κίνα. Εδώ θ ασχοληθούμε

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Διπλωματική Εργασία με θέμα: Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού Καραγιάννης Ιωάννης Α.Μ.

Διαβάστε περισσότερα

Σε μια στοίβα 10 θέσεων έχουν τοποθετηθεί διαδοχικά τα στοιχεία: Σ, Γ, Μ, Α, Δ στην 1η, 2η, 3η, 4η και 5η θέση αντίστοιχα. Να προσδιορίσετε την τιμή

Σε μια στοίβα 10 θέσεων έχουν τοποθετηθεί διαδοχικά τα στοιχεία: Σ, Γ, Μ, Α, Δ στην 1η, 2η, 3η, 4η και 5η θέση αντίστοιχα. Να προσδιορίσετε την τιμή Στοίβα και Ουρά Σε μια στοίβα 10 θέσεων έχουν τοποθετηθεί διαδοχικά τα στοιχεία: Σ, Γ, Μ, Α, Δ στην 1η, 2η, 3η, 4η και 5η θέση αντίστοιχα. Να προσδιορίσετε την τιμή του δείκτη top της παραπάνω στοίβας

Διαβάστε περισσότερα

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

Διαβάστε περισσότερα

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που 7.7 Πρωτόκολλο ARP 1 ύο είδη διευθύνσεων: MAC - IP Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που µπορεί

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 9 Ταυτόχρονος προγραμματισμός και νήματα Σύνοψη Σε αυτό το κεφάλαιο πραγματευόμαστε τον ταυτόχρονο προγραμματισμό με τη χρήση νημάτων. Η έμφαση είναι στην κατανόηση βασικών λειτουργιών των νημάτων

Διαβάστε περισσότερα

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ Εισαγωγή στην γλώσσα προγραμματισμού Ακαδημαϊκό έτος 2016-2017, Εαρινό εξάμηνο Οι σημειώσεις βασίζονται στα συγγράμματα: A byte of Python (ελληνική

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014 ΘΕΜΑ 1 Ο Α. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη Σωστό, αν είναι

Διαβάστε περισσότερα

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

Διαβάστε περισσότερα

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 6 η Βρόχοι Επανάληψης Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

FAIL PASS PASS οριακά

FAIL PASS PASS οριακά AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον

Διαβάστε περισσότερα

καθώς και το παρακάτω τμήμα αλγορίθμου γραμμένο σε «ΓΛΩΣΣΑ»:

καθώς και το παρακάτω τμήμα αλγορίθμου γραμμένο σε «ΓΛΩΣΣΑ»: ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΠΑΡΑΣΚΕΥΗ 25/04/2014 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ 2 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ:

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

Διαβάστε περισσότερα

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 Επιμέλεια: Ομάδα Διαγωνισμάτων από το Στέκι των Πληροφορικών Θέμα Α A1. Να γράψετε στο τετράδιό σας τους

Διαβάστε περισσότερα

Βάσεις δεδομένων (Access)

Βάσεις δεδομένων (Access) Βάσεις δεδομένων (Access) Όταν εκκινούμε την Access εμφανίζεται το παρακάτω παράθυρο: Για να φτιάξουμε μια νέα ΒΔ κάνουμε κλικ στην επιλογή «Κενή βάση δεδομένων» στο Παράθυρο Εργασιών. Θα εμφανιστεί το

Διαβάστε περισσότερα

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Υπολογιστικό Σύστημα Λειτουργικό Σύστημα Αποτελεί τη διασύνδεση μεταξύ του υλικού ενός υπολογιστή και του χρήστη (προγραμμάτων ή ανθρώπων). Είναι ένα πρόγραμμα (ή ένα σύνολο προγραμμάτων)

Διαβάστε περισσότερα

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Μάθημα Επιλογής Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου Δρ. Γεώργιος Κεραμίδας e-mail: gkeramidas@teimes.gr 1 Διεργασίες: Κατάσταση Εκτέλεσης (3-σταδίων) Κατάσταση

Διαβάστε περισσότερα

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Περιεχόμενα Εισαγωγή στην εφαρμογή... 2 Βασική Σελίδα (Activity)... 3 Ρυθμίσεις... 3 Πελάτες... 6 Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Αποθήκη... 11 Αναζήτηση προϊόντος...

Διαβάστε περισσότερα

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

Διαβάστε περισσότερα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

Διαβάστε περισσότερα

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

Διαβάστε περισσότερα

Παραδείγματα μεταβλητών

Παραδείγματα μεταβλητών Παραδείγματα μεταβλητών Παράδειγμα Bouncing Balls: Στη σκηνή υπάρχουν τρείς μπάλες και κάθε μία έχει διαφορετικό μέγεθος από τις άλλες. Όλες οι μπάλες χοροπηδούν ταυτόχρονα προς όλες τις κατευθύν-σεις.

Διαβάστε περισσότερα

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες» 1. Εισαγωγή Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 3 «Διεργασίες» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας Η έννοια της διεργασίας (process) είναι θεμελιώδης για την κατανόηση του τρόπου με τον οποίο

Διαβάστε περισσότερα

ΠΡΟΒΛΗΜΑ ΕΠΕΓΕΡΓΑΣΙΑ. (Είναι οι σκέψεις και οι πράξεις που κάνουμε για να λυθεί το πρόβλημα) ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ

ΠΡΟΒΛΗΜΑ ΕΠΕΓΕΡΓΑΣΙΑ. (Είναι οι σκέψεις και οι πράξεις που κάνουμε για να λυθεί το πρόβλημα) ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Μάθημα: Ενότητα: Πληροφορική Α' Γυμν. Το Υλικό του Υπολογιστή ΠΡΟΒΛΗΜΑ ΔΕΔΟΜΕΝΑ (Είναι τα στοιχεία που δίνουμε για λυθεί το πρόβλημα) ΕΠΕΓΕΡΓΑΣΙΑ (Είναι οι σκέψεις και οι πράξεις που

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100 ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ Όνομα:.. Βαθμός: /100 Θέμα Α 1. Να χαρακτηρίσετε τις προτάσεις με Σ, αν είναι σωστές και Λ, αν είναι λάθος. a. Οι πίνακες δεν μπορούν να έχουν περισσότερες από δύο

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Σκοπός της 10ης άσκησης είναι να μάθουμε να χρησιμοποιούμε sprites και να φτιάξουμε ένα παιχνίδι που χρησιμοποιεί συγκρούσεις. Θα δούμε επίσης μερικά

Διαβάστε περισσότερα

ΘΕΜΑ 1 ο. β) 1. δυαδική 2. κατανόηση 3. τυπικοί 4. τεχνητής νοημοσύνης 5. ακέραιου

ΘΕΜΑ 1 ο. β) 1. δυαδική 2. κατανόηση 3. τυπικοί 4. τεχνητής νοημοσύνης 5. ακέραιου ΘΕΜΑ 1 ο α) 1. Λ 2. Λ 3. Λ 4. Λ 5. Λ β) 1. δυαδική 2. κατανόηση 3. τυπικοί 4. τεχνητής νοημοσύνης 5. ακέραιου γ) 1. Σημαίνει ότι ο αλγόριθμος πρέπει να χρησιμοποιεί κάποια δεδομένα προς επεξεργασία. Αυτά

Διαβάστε περισσότερα

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ. 1ο ΓΕΛ ΠΕΥΚΗΣ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ B' ΤΕΤΡΑΜΗΝΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ. 1ο ΓΕΛ ΠΕΥΚΗΣ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ B' ΤΕΤΡΑΜΗΝΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ 1ο ΓΕΛ ΠΕΥΚΗΣ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ B' ΤΕΤΡΑΜΗΝΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ Α Α1. Δίνεται το παρακάτω πρόγραμμα σε ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Α2

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα