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

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

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

Transcript

1 Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ N:08 Δρ. Μηνάς Δασυγένης Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών arch.icte.uwm.gr/mdasyg

2 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Cmmns. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ψηφιακά Μαθήματα του Πανεπιστημίου Δυτικής Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2

3 Περιεχόμενα 1. Σκοπός της άσκησης Παραδοτέα Περιγραφή εργαστηριακής άσκησης Η συνάρτηση vfrk() Δημιουργία του πρώτου προγράμματος με threads Δημιουργία & Καταστροφή νημάτων Δημιουργία νημάτων χωρίς παραμέτρους Δημιουργία νημάτων με πέρασμα μιας παραμέτρου Πέρασμα παραμέτρων σε νήματα Ένα ακόμη παράδειγμα με κοινά δεδομένα Πολλαπλές τιμές Συγχρονισμός διεργασιών με pthread_jin() Καταστρέφοντας τα νήματα

4 1. Σκοπός της άσκησης Διεργασίες. Νήματα (δημιουργία, καταστροφή, συγχρονισμός). Συναρτήσεις: time(), frk(), vfrk(), pthread_create(), pthread_exit(), pthread_jin(), fflush(), pthread_attr_init(), pthread_self(), pthread_attr_destry(), pthread_kill(), pthread_cancel(). 2. Παραδοτέα (A) 19 ερωτήσεις (C) 10 ασκήσεις 3. Περιγραφή εργαστηριακής άσκησης Μια τεχνική για να αυξηθεί η παραλληλία σε ένα σύστημα είναι η χρήση των νημάτων. Σε αντίθεση με τις διεργασίες, όταν θέλουμε να δημιουργήσουμε ένα νήμα θα πρέπει να προσδιορίσουμε κάθε φορά τη συνάρτηση που θα εκτελεσθεί στη συνάρτηση δημιουργίας νήματος. Ένα νήμα είναι μια ανεξάρτητη ροή εντολών η οποία μπορεί να χρονοπρογραμματιστεί για εκτέλεση από τον πυρήνα. Οπτικά αν θέλουμε να δούμε τα νήματα και τις διεργασίες θα έχουμε την παρακάτω εικόνα: 4

5 Δηλαδή, τα νήματα μπορούμε να τα δούμε ως συναρτήσεις τις οποίες μέσα στο κυρίως πρόγραμμα τις ορίζουμε ότι θα εκτελεστούν ως ξεχωριστά νήματα. Οι μεταβλητές που έχουν οριστεί στο main θα είναι προσβάσιμες και κοινές και στα νήματα. Το κάθε νήμα όμως μπορεί να έχει δικές του τοπικές μεταβλητές. Υπάρχουν διάφοροι τρόποι να υλοποιήσουμε τα νήματα. Εμείς θα χρησιμοποιήσουμε το αρκετά δημοφιλές και προτυποποιημένο τρόπο με τη βιβλιοθήκη Pthreads όπως έχουν οριστεί από το IEEE POSIX c standard. Αυτή η υλοποίηση ονομάζεται Psix Threads ή απλά Pthreads και υποστηρίζεται από πλήθος λειτουργικών συστημάτων (ακόμη και των windws αν εγκατασταθούν οι κατάλληλες βιβλιοθήκες). Τα threads όταν δημιουργούνται επιβαρύνουν το σύστημα πολύ λιγότερο από ότι οι διεργασίες. Είναι λοιπόν αποδοτικότερο να δημιουργούμε threads παρά διεργασίες στην εφαρμογή μας. Αυτό θα το διαπιστώσετε παρακάτω. Η συνάρτηση time() της C {προσοχή man sectin 3} τι παραμέτρους δέχεται και τι επιστρέφει; (Α1) (C1) Να δημιουργήσετε το πρόγραμμα c1.c το οποίο: Θα ορίσετε μια συνάρτηση nthing() η οποία θα ορίζει μια μεταβλητή int x=0 και θα κάνει την πράξη x=x+1. Αυτή η συνάρτηση δεν κάνει τίποτα χρήσιμο, αλλά απλώς υπάρχει για να μας βοηθήσει στη μέτρηση. Μέσα στο main() θα εκτελεί μια φορά τη συνάρτηση time() με τις κατάλληλες παραμέτρους, θα αποθηκεύεται ο αριθμός των δευτερολέπτων στη μεταβλητή start και αμέσως μετά θα εκτυπώνεται το μήνυμα Αρχική τιμή δευτερολέπτων ακολουθούμενο από τη start. Στη συνέχεια θα υπάρχει ένας βρόχος while() ο οποίος θα δημιουργεί 100 διεργασίες (δοκιμάστε και για 5000, 10000) με τη frk() οι οποίες όλες θα εκτελούν τη nthing(). Προσοχή, ο πατέρας θα δημιουργήσει όλες τις διεργασίες και όχι η κάθε διεργασία θα δημιουργεί άλλη διεργασία. Μόλις δημιουργηθούν οι 100 διεργασίες και μόνο τότε θα εκτελεί ο πατέρας 100 φορές τη waitpid() ώστε να περιμένει την επιτυχή ολοκλήρωση όλων των θυγατρικών. Στη συνέχεια θα καλείται η time(), θα αποθηκεύεται ο αριθμός των δευτερολέπτων στη μεταβλητή end και αμέσως μετά θα εκτυπώνεται το μήνυμα Τελική τιμή δευτερολέπτων ακολουθούμενη από την end. Θα γίνεται η πράξη end-start, θα εκτυπώνεται το αποτέλεσμα ενώ θα εκτυπώνεται και το αποτέλεσμα (end-start)/100 για να εμφανιστεί ο μέσος χρόνος δημιουργίας, εκτέλεσης και τερματισμού των 100 διεργασιών. Πόσος είναι ο συνολικός χρόνος και ο μέσος χρόνος δημιουργίας εκτέλεσης και τερματισμού των 100 διεργασιών στο σύστημα σας (μη ξεχάσετε τη μονάδα μέτρησης); (A2) 5

6 Το πρόγραμμα συστήματος time που χρησιμοποιείται και τι στοιχεία μας εκτυπώνει στην έξοδο όταν χρησιμοποιηθεί για μια διεργασία; (A3) Απομακρύνετε από τον κώδικα c1.c τις εντολές που κάνουν printf() όπως και τις κλήσεις στην time και δημιουργήστε το αρχείο c2b.c το οποίο απλώς δημιουργεί 1000 διεργασίες. Κάντε το cmpile, και εκτελέστε το με τη χρήση του προγράμματος time. Ποιοι είναι οι χρόνοι που αναφέρονται από το πρόγραμμα time για την εκτέλεση της προηγούμενης διεργασίας; Συγκρίνετε τους χρόνους με το ερώτημα Α2. Είναι ίδιοι, έχουν μικρή ή μεγάλη απόκλιση κατά τη γνώμη σας; (A4) 4. Η συνάρτηση vfrk() Μέσα στο πρότυπο POSIX ορίζονται πολλαπλές συναρτήσεις δημιουργίας διεργασιών. Ως τώρα χρησιμοποιήσαμε τη frk(). Εκτός από τη frk() υπάρχει και η vfrk() η οποία όμως έχει μια διαφορετική λειτουργία. Τοποθετήστε τον παρακάτω κώδικα στο πρόγραμμα vfrk1.c και εκτελέστε τον. Το πρόγραμμα σας θα σταματήσει απότομα εμφανίζοντας το μήνυμα Segmentatin Fault (ή αντίστοιχο). #include <sys/types.h> #include <unistd.h> #include <stdi.h> main () {pid_t p; if (p=vfrk()==0) { puts("i am the child");} else { puts( I am the parent );} puts("end"); } Χρησιμοποιώντας τη σελίδα βοήθειας της vfrk(), τα σχετικά βοηθήματα και το Internet βρείτε γιατί το συγκεκριμένο πρόγραμμα έχει αυτό το πρόβλημα. (A5) Πως μπορεί να τροποποιηθεί το πρόγραμμα ώστε να μην κάνει Segmentatin Fault; (A6) (C2) Τροποποιήστε το πρόγραμμα δημιουργώντας το c2.c, ώστε να καλεί με επιτυχία τη vfrk() να εκτυπώνονται από τη θυγατρική διεργασία τα I am the child και End και ομοίως να εκτυπώνει η γονική τα αντίστοιχα, χωρίς να δημιουργεί το Segmentatin Fault. 6

7 5. Δημιουργία του πρώτου προγράμματος με threads. 5.1 Δημιουργία & Καταστροφή νημάτων. Προκειμένου να χρησιμοποιήσουμε τα νήματα Pthreads θα πρέπει να τοποθετήσουμε στα include το <pthread.h> το οποίο μας παρέχει τις δηλώσεις των συναρτήσεων που θα χρησιμοποιήσουμε. Επίσης, κατά τη διαδικασία του cmpilatin θα πρέπει αμέσως μετά το gcc να τοποθετήσουμε το -lpthread ώστε να γίνει σύνδεση με την αντίστοιχη βιβλιοθήκη (pthread) των νημάτων. Προκειμένου να δημιουργήσουμε ένα νήμα θα πρέπει: να ορίσουμε μια συνάρτηση το όνομα της οποίας θα είναι pinter στη συνάρτηση, ενώ και οι παράμετροι θα είναι pinters. Δηλαδή η δήλωση θα είναι με * (αστέρι), όπως π.χ. vid *PrintHell (vid *) μέσα στο σημείο που θέλουμε να δημιουργήσουμε το νήμα να εκτελέσουμε τη συνάρτηση pthread_create() στην οποία θα δώσουμε ως δείκτες όλα τα στοιχεία που απαιτούνται: (α) το pinter της συνάρτησης που θα εκτελεστεί, (β) τ pinter των παραμέτρων καθώς και (γ) άλλες παραμέτρους που αφορούν τα νήματα. Αφού διαβάσετε τη σελίδα βοήθειας της pthread_create(), τα βοηθητικά κείμενα που συνοδεύουν το εργαστήριο και πληροφορίες από το Internet, καταγράψτε πόσες παραμέτρους απαιτεί η συνάρτηση pthread_create() και τι σημαίνει η κάθε παράμετρος (A7) Προκειμένου να τερματίσουμε το νήμα θα πρέπει: είτε να εκτελέσουμε την εντολή pthread_exit( ) είτε να τοποθετήσουμε μια εντολή return, η οποία προκαλεί έμμεση εκτέλεση της pthread_exit() 5.2 Δημιουργία νημάτων χωρίς παραμέτρους (C3) Κατασκευάστε ένα αρχείο με όνομα c3.c στο οποίο θα δημιουργήστε μια συνάρτηση *hellwrld (vid *arg) η οποία θα εκτυπώνει το μήνυμα Hell Wrld frm Thread. Η συνάρτηση των νημάτων δηλώνεται ως pinter, όπως και οι παράμετροι της. Μέσα στο κυρίως πρόγραμμα θα ερωτάται ο χρήστης πόσα νήματα θέλει να δημιουργήσει και στη συνέχεια θα υπάρχει μια δομή βρόχου fr() για τον αριθμό των επαναλήψεων που έχει δηλώσει ο χρήστης. Μέσα στο fr θα εκτυπώνεται το μήνυμα Δημιουργείται το thread XXX, όπου XXX η τρέχουσα τιμή του μετρητή fr και αμέσως μετά θα δημιουργούνται τα νήματα με τη pthread_create() και παράμετρο τη συνάρτηση hellwrld. 7

8 Σημειώστε ότι δε θα ρυθμίσουμε χαρακτηριστικά νημάτων, ούτε θα δώσουμε παραμέτρους, οπότε αντιστοίχως η 2η και η 4η παράμετροι της pthread_create() θα είναι NULL. Προκειμένου να αποθηκεύουμε το κάθε id θα δηλώσουμε έναν πίνακα από id νημάτων ως: pthread_t threads[number_f_threads]; και αυτό σημαίνει ότι η 1 η παράμετρος της pthread_create() θα είναι η &threads[i]. Να κάνετε cmpile το πρόγραμμα και να επιβεβαιώσετε την ορθή λειτουργία. Που χρησιμοποιείται η εντολή pthread_jin(); (A8) Ποιοι είναι οι παράμετροι της pthread_jin(); (A9) (C4) Να δημιουργήσετε το πρόγραμμα c4.c το οποίο: θα ορίσετε μια συνάρτηση nthing() η οποία θα ορίζει μια μεταβλητή int x=0 και θα κάνει την πράξη x=x+1. Αυτή η συνάρτηση δεν κάνει τίποτα χρήσιμο, αλλά απλώς υπάρχει για να μας βοηθήσει στη μέτρηση. Μέσα στο main() θα εκτελεί μια φορά τη συνάρτηση time() με τις κατάλληλες παραμέτρους, θα αποθηκεύεται ο αριθμός των δευτερολέπτων στη μεταβλητή start και αμέσως μετά θα εκτυπώνεται το μήνυμα Αρχική τιμή δευτερολέπτων ακολουθούμενο από τη start. Στη συνέχεια θα υπάρχει ένας βρόχος while() ο οποίος θα δημιουργεί 100 νήματα με τη pthread_create(), τα οποία όλα θα εκτελούν τη nthing(). Προσοχή, ο πατέρας θα δημιουργήσει 100 νήματα. Το thread id θα αποθηκεύεται σε έναν πίνακα: pthread_t threads [number_f_threads]; Μόλις δημιουργηθούν οι 100 νήματα και μόνο τότε θα εκτελεί ο πατέρας ένα νέο βρόχο fr για 100 φορές τη pthread_jin(threads[i],(vid *) NULL) ώστε να περιμένει την επιτυχή ολοκλήρωση όλων των νημάτων. Παρατηρήστε ότι η 2η παράμετρος είναι NULL γιατί δε μας ενδιαφέρει η τιμή επιστροφής του κάθε νήματος. Στη συνέχεια θα καλείται η time(), θα αποθηκεύεται ο αριθμός των δευτερολέπτων στη μεταβλητή end και αμέσως μετά θα εκτυπώνεται το μήνυμα Τελική τιμή δευτερολέπτων ακολουθούμενη από την end. Θα γίνεται η πράξη end-start, θα εκτυπώνεται το αποτέλεσμα ενώ θα εκτυπώνεται και το αποτέλεσμα (end-start)/100 για να εμφανιστεί ο μέσος χρόνος δημιουργίας, εκτέλεσης και τερματισμού των 100 διεργασιών. 8

9 Πόσος είναι ο συνολικός χρόνος και ο μέσος χρόνος δημιουργίας εκτέλεσης και τερματισμού των 100 νημάτων στο σύστημα σας (μη ξεχάσετε τη μονάδα μέτρησης); (A10) Απομακρύνετε από τον κώδικα c4.c τις εντολές που κάνουν printf() όπως και τις κλήσεις στην time και δημιουργήστε το αρχείο c4.c το οποίο απλώς δημιουργεί 1000 νήματα. Κάντε το cmpile, και εκτελέστε το με τη χρήση του προγράμματος time. Ποιοι είναι οι χρόνοι που αναφέρονται από το πρόγραμμα time για την εκτέλεση της προηγούμενης διεργασίας; Συγκρίνετε τους χρόνους με το ερώτημα Α2. Είναι ίδιοι, έχουν μικρή ή μεγάλη απόκλιση κατά τη γνώμη σας; (A11) Συγκρίνετε τους χρόνους δημιουργίας διεργασιών και τους χρόνους δημιουργίας νημάτων και σχολιάστε ποια τεχνική είναι πιο γρήγορη και πόσες φορές: (A12) Που χρησιμοποιείται και γιατί η συνάρτηση fflush(); (A13) Τι θα επιτευχθεί αν γίνει η κλήση fflush(null) (δηλαδή κλήση με καμία παράμετρο); (A14) 5.3 Δημιουργία νημάτων με πέρασμα μιας παραμέτρου (C5) Να δημιουργήσετε το πρόγραμμα c5.c το οποίο: Θα ορίζει μια συνάρτηση vid *PrintHell(vid *threadid) η οποία θα εκτυπώνει με printf() το string hell wrld και θα ακολουθεί ο αριθμός του threadid. Θα εκτελείται η συνάρτηση fflush(null) και θα καλείται η συνάρτηση τερματισμού thread. Στο κυρίως πρόγραμμα ορίστε #define NUM_THREADS 15 Δημιουργήστε ένα βρόχο επαναλήψεων, το οποίο δημιουργεί τόσα threads όσα το προηγούμενο define (fr(i=0;i<num_threads). Όλα τα thread θα εκτελούν τη συνάρτηση PrintHell. Η παράμετρος που θα στέλνουμε κάθε φορά θα είναι ο αριθμός του thread, δηλαδή η τιμή της μεταβλητής i του βρόχου fr. Αυτό μπορείτε να το περάσετε ως (vid *)i. Μπορείτε να χρησιμοποιήσετε τη δήλωση: pthread_t threads[num_threads]; ώστε να μην απαιτείται κάθε φορά να δηλώνετε ένα ένα όλα τα pthread_t που χρειάζεστε. Ελέγξτε την τιμή που επιστρέφεται (από τη pthread_create() ) κάθε φορά που δημιουργείται ένα νέο νήμα. Αν η τιμή δεν είναι σωστή (δείτε το man page) τότε θα εμφανίζεται ένα μήνυμα αποτυχίας σχετικά με το ποιο thread δε μπόρεσε να δημιουργηθεί. 9

10 Κάντε cmpile & επιβεβαιώστε την ορθή λειτουργία. (C6) Να δημιουργήσετε το πρόγραμμα c6.c το οποίο θα μας βοηθήσει να βρούμε ποιο είναι το μέγιστο όριο νημάτων που επιτρέπεται να δημιουργήσουμε στο σύστημα μας. Συγκεκριμένα: Θα χρησιμοποιεί το C5 κώδικα. Να απομακρύνετε ή να τοποθετήσετε σε σχόλιο όλες τις εντολές εκτύπωσης μηνύματος. Το NUM_THREADS θα έχει μια πολύ μεγάλη τιμή (π.χ ή και μεγαλύτερη). Μόλις εκτελείται η pthread_create() θα ελέγχεται η τιμή επιστροφής. Αν δεν έχει δημιουργηθεί με επιτυχία το νήμα τότε θα εκτυπώνεται το μήνυμα N mre threads. Thread Cunt: XXX, όπου XXX θα είναι η τρέχουσα τιμή του βρόχου fr. Πόσος είναι ο μέγιστος αριθμός νημάτων ανά διεργασία στο σύστημα σας σύμφωνα με το C6; (A15) Ψάξτε στο internet και βρείτε που ορίζεται αυτός ο μέγιστος αριθμός και πως μπορεί να τροποποιηθεί: (A16) 5.4 Πέρασμα παραμέτρων σε νήματα Ένα ακόμη παράδειγμα με κοινά δεδομένα Στο επόμενο παράδειγμα θα δημιουργήσουμε ένα πρόγραμμα το οποίο δημιουργεί έναν αριθμό από νημάτων. Το κάθε νήμα εκτυπώνει μια διαφορετική γραμμή ενός πίνακα κοινού. (C7) Να δημιουργήσετε το πρόγραμμα c7.c το οποίο: Χρησιμοποιεί τον κώδικα του C5. Μέσα στη συνάρτηση των thread το printf θα τροποποιηθεί στο printf("thread %d: %s\n", taskid, messages[taskid]); όπου taskid είναι ο αριθμός του thread και messages ένας πίνακας που έχει οριστεί στο κυρίως πρόγραμμα. Έξω από κάθε συνάρτηση ορίστε τη glbal μεταβλητή, προκειμένου να είναι προσβάσιμη τόσο από το κυρίως πρόγραμμα όσο και από τα νήματα: char *messages[num_threads]; 10

11 Στο κυρίως πρόγραμμα τοποθετήστε στη glbal μεταβλητή messages τα παρακάτω μηνύματα: messages[0] = "English: Hell Wrld!"; messages[1] = "French: Bnjur, le mnde!"; messages[2] = "Spanish: Hla al mund"; messages[3] = "Klingn: NuqneH Hch!"; messages[4] = "German: Guten Tag, Welt!"; messages[5] = "Russian: Zdravstvytye, mir!"; messages[6] = "Japan: Sekai e knnichiwa!"; messages[7] = "Latin: Orbis, te salut!"; Μέσα στο βρόχο του κυρίως προγράμματος που δημιουργούνται τα threads (από t=0 έως t<num_threads) θα έχουμε: taskids[t] = (int *) mallc(sizef(int)); *taskids[t] = t; *** Γιατί το κάνουμε αυτό; Αν στέλναμε κατευθείαν τη μεταβλητή t σε κάθε thread τότε θα στέλναμε τη διεύθυνση μνήμης της μεταβλητής t, η οποία έχει δεδομένα που τροποποιούνται συνέχεια στο βρόχο (αρχικά τα δεδομένα είναι 0 μετά είναι 1, κ.ο.κ.). Κατασκευάζουμε μια μεταβλητή για κάθε νήμα λοιπόν, η οποία δεν αλλάζει καθώς αλλάζει ο δείκτης του βρόχου. *** Η παράμετρος που θα στέλνουμε σε κάθε thread μέσα στη συνάρτηση pthread_create() είναι η (vid *) taskids[t] Ορίστε το NUM_THREADS σε 8. Προσοχή στη συνάρτηση νήματος: η συνάρτηση στον ορισμό της δέχεται τα ορίσματα ως διευθύνσεις, οπότε θα έχει ως παράμετρο ορισμού: vid * parameter προκειμένου να διαβάσουμε την ακέραια τιμή που βρίσκεται στη διεύθυνση μνήμης που δείχνει ο pinter * parameter θα πρέπει να ορίσουμε ότι θα χρησιμοποιήσουμε ένα νέο pinter ακεραίων *ptr ως εξής: int *ptr; Μετά θα τοποθετήσουμε στον pinter *ptr που έχουμε δηλώσει πριν, τον αρχικό pinter *parameter που έχουμε δεχθεί ως παράμετρο της συνάρτησης: ptr=(int *) parameter; Θα δηλώσουμε μια ακέραια τιμή int index για να τοποθετήσουμε σε αυτό την τιμή που δέχθηκε το νήμα μας. Για να διαβάσουμε λοιπόν την ακέραια τιμή που δείχνει ο pinter *ptr αρκεί να δώσουμε index=*ptr; Την τιμή index που είναι μια ακέραια τιμή θα χρησιμοποιήσουμε στο printf. 11

12 Κάντε cmpile και επιβεβαιώστε την ορθή λειτουργία. Θα πρέπει να εκτυπώνονται όλα τα μηνύματα του πίνακα Πολλαπλές τιμές Υπάρχουν περιπτώσεις που θέλουμε να στείλουμε πολλαπλά δεδομένα στα νήματα και όχι μόνο μια ακέραια τιμή. Για να γίνει αυτό δημιουργούμε ένα struct στο οποίο τοποθετούμε όλα τα δεδομένα μας και εμείς στέλνουμε τη διεύθυνση του struct στο νήμα. Αυτό θα το δούμε με το παρακάτω παράδειγμα: (C8) Να δημιουργήσετε το πρόγραμμα c8.c το οποίο: Χρησιμοποιεί τον κώδικα του C7. Ορίζει ως glbal μια δομή (struct) στην οποία θα τοποθετήσουμε 3 παραμέτρους: τον αριθμό του νήματος, μια ακέραια τιμή, και ένα μήνυμα. Αυτό θα γίνει με τη δήλωση: struct thread_data{ int thread_id; int sum; char *message; }; Συσχετίστε αυτή τη δομή με μια μεταβλητή (ή με άλλα λόγια ορίστε μια μεταβλητή τύπου thread_data), η οποία θα είναι ξεχωριστή για κάθε νήμα. Ο καλύτερος τρόπος να το κάνουμε αυτό είναι να ορίσουμε έναν πίνακα όπου κάθε καταχώρηση θα είναι τύπου struct thread_data. Αυτό γίνεται με τη δήλωση: struct thread_data thread_data_array[num_threads]; Το επόμενο βήμα είναι να τροποποιηθεί η δήλωση της συνάρτησης printhell, ώστε να δέχεται ως όρισμα το (vid *threadarg) και ότι θα χρησιμοποιήσει το struct. Θα πρέπει να δηλωθεί λοιπόν μέσα στη συνάρτηση αυτή μια μεταβλητή pinter *my_data (είναι pinter γιατί οι παράμετροι στα νήματα είναι πάντα pinter) που θα δείχνει σε μια δομή struct, όπως παραπάνω: struct thread_data *my_data; Μέσα στη συνάρτηση ορίστε ως ακέραια τιμή μια μεταβλητή taskid, η οποία θα φέρει κάθε φορά τον ακέραιο αριθμό αριθμού thread που βρίσκεται μέσα στο struct thread_data. Στη συνέχεια μέσα στη συνάρτηση printhell, διαβάστε όλες τις τιμές που έχουν έρθει ως pinter κατά την κλήση και αντιστοιχούν στο struct που έχουμε δηλώσει, με τον παρακάτω τρόπο. Παρατηρήστε ότι αρχικά ο pinter *threadarg που μας έρχεται από την κλήση αρχικά τοποθετείται στο τοπικό pinter και στη συνέχεια μπορούμε να διαβάσουμε συγκεκριμένα στοιχεία με τη χρήση του βέλους - > 12

13 my_data = (struct thread_data *) threadarg; taskid = my_data->thread_id; Μέσα στη συνάρτηση printhell, εκτυπώστε με printf το κάθε στοιχείο (δηλαδή, τον αριθμό του thread, τον αριθμό sum και το μήνυμα), ώστε στο τέλος να εμφανίζονται τα μηνύματα ως εξής:... Thread 4: German: Guten Tag, Welt! Sum=10 Thread 5: Russian: Zdravstvytye, mir! Sum=15 Thread 6: Japan: Sekai e knnichiwa! Sum=21 Thread 7: Latin: Orbis, te salut! Sum=28... Στο κυρίως πρόγραμμα πριν από το κάθε pthread_create() θα πρέπει να τοποθετήσετε τις γραμμές που γράφουν δεδομένα στο struct, όπως παρακάτω και τα οποία τα στέλνουμε με το pinter που τους αντιστοιχούν στο κάθε νήμα. thread_data_array[t].thread_id = t; thread_data_array[t].sum = sum; thread_data_array[t].message = messages[t]; Το sum (που το έχετε ορίσει ως ακέραιο μέσα στο main() για να συμφωνεί με το struct) να το υπολογίζετε κάθε φορά ως: sum = sum + t + 1; Η κλήση της δημιουργίας νημάτων θα έχει για 4η παράμετρο το δείκτη που αντιστοιχεί στο struct που θέλουμε να στείλουμε και ο οποίος είναι το thread_data_array[t]. Αυτό θα γίνει ως: (vid *) &thread_data_array[t] Παρατηρήστε ότι επιβάλετε να χρησιμοποιούμε το pthread_create() στο πέρασμα των παραμέτρων. (vid *) στη Κάντε cmpile και επιβεβαιώστε την ορθή λειτουργία. Π Ρ Ο Σ Ο Χ Η : Η παρακάτω δομή είναι λάθος, επειδή στέλνει τη διεύθυνση της μεταβλητής οποία βρίσκεται σε κοινή μνήμη και προσβάσιμη από κάθε νήμα. Καθώς το lp προχωράει η τιμή του t αλλάζει (αρχικά t=0, μετά t=1,..) οπότε μέχρι να διαβάσει το νήμα την τιμή έχει ήδη αλλάξει αυτή και μας είναι άχρηστη. Για αυτό το λόγο προσέχουμε αν θα στείλουμε τη διεύθυνση της μεταβλητής με το & μπροστά ή την τιμή της μεταβλητής χωρίς το & από μπροστά. Λάθος: int rc;lng t; fr(t=0; t<num_threads; t++) t η 13

14 { printf("creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHell, (vid *) &t);...} Σωστό: int rc;lng t; fr(t=0; t<num_threads; t++) { printf("creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHell, (vid *) t);...} 5.5 Συγχρονισμός διεργασιών με pthread_jin() Υπάρχουν περιπτώσεις που πρέπει το κυρίως πρόγραμμα να περιμένει να ολοκληρωθούν κάποια νήματα πριν συνεχίσει την εκτέλεση. Σε αυτές τις περιπτώσεις χρησιμοποιούμε τη συνάρτηση pthread_jin(). Για παράδειγμα θα κατασκευάσουμε μια διαδικασία που θα εκτελείται από κάθε νήμα προκειμένου να κάνει κάποιους υπολογισμούς. Το κυρίως πρόγραμμα θα περιμένει να ολοκληρωθούν όλοι οι υπολογισμοί (να τερματίσουν δηλαδή όλα τα νήματα). Όταν κάνουν jin όλα τα νήματα, τότε θα ολοκληρώνεται και το κυρίως πρόγραμμα. Η 2η παράμετρος της pthread_create() που χρησιμοποιείται; Δώστε ένα παράδειγμα: (A17) Η συνάρτηση pthread_attr_init που χρησιμοποιείται, πόσες παραμέτρους και τι σημαίνει η κάθε παράμετρος; (A18) (C9) Να δημιουργηθεί το πρόγραμμα c9.c Κάντε include το header file των μαθηματικών σχέσεων math.h γιατί θα χρησιμοποιήσουμε τριγωνομετρικές συναρτήσεις. *** Όταν χρησιμοποιούμε μαθηματικές συναρτήσεις στη C (gcc) θα πρέπει κατά το cmpile να κάνουμε link με τη μαθηματική βιβλιοθήκη. Αυτό γίνεται με το να προσθέσουμε το διακόπτη -lm στην εντολή gcc. *** Κάντε include όλα τα υπόλοιπα header file που θα χρησιμοποιήσετε. Ορίστε στο define τον αριθμό των threads σε 4. 14

15 Ορίστε μια διαδικασία που θα εκτελούν τα threads ως cmputethread με: vid *cmputethread(vid *t) Η διαδικασία θα εκτυπώνει ένα μήνυμα ότι ξεκινάει το νήμα με αριθμό ΧΧΧ (ο αριθμός που δίνεται στην παράμετρο *t). Στη συνέχεια θα εκτελεί ένα βρόχο από i=0 έως i=107 με την πράξη: result = result + sin(i) * tan(i); (μέσα στη συνάρτηση να έχει οριστεί 0.0) duble result= Όταν υπολογιστεί ο αριθμός result το νήμα εκτυπώνει ότι Το νήμα με αριθμό ΧΧΧΧ, τελείωσε. Το result είναι ΥΥΥΥΥ Στην κυρίως συνάρτηση (main). Ορίστε για κάθε thread τον τύπο pthread_t (σε μορφή πίνακα όπως το είχατε κανει πριν). Ορίστε μια παράμετρο attr τύπου pthread_attr_t : pthread_attr_t attr; Αρχικοποιήστε το attr με τη χρήση της συνάρτησης pthread_attr_init Ορίστε ότι το attr θα είναι JOINABLE με τη χρήση της συνάρτησης pthread_attr_setdetachstate(), δηλαδή η κατάσταση να είναι PTHREAD_CREATE_JOINABLE. Δημιουργήστε ένα βρόχο fr-lp από t=0 έως t<num_threads, ο οποίος θα εκτυπώνει ένα μήνυμα ΜΑΙΝ: Creating thread Number... και θα δημιουργεί το νήμα με παράμετρο το (vid *)t και το χαρακτηριστικό &attr. Να υπάρχει έλεγχος ότι δημιουργείται το thread. Αν δε μπορεί να δημιουργηθεί το thread τότε να εμφανίζεται σχετικό μήνυμα. Όταν ολοκληρωθεί το παραπάνω lp, τότε δε θα χρειάζεται πια το attribute και μπορούμε να το απομακρύνουμε με την κλήση της συνάρτησης pthread_attr_destry() Δημιουργήστε ένα νέο βρόχο fr-lp από t=0 έως t<num_threads, ο οποίος θα κάνει κλήση της συνάρτησης pthread_jin με πρώτη παράμετρο το pthread_t του κάθε thread, και δεύτερη παράμετρο το &status. Στο status θα τοποθετείται η τιμή που επιστρέφει το κάθε νήμα όταν τερματίζει. Να ελέγξετε αν εκτελέστηκε κάθε φορά με επιτυχία η pthread_jin με μια δομή if. Αν δεν έχει εκτελεστεί σωστά να εκτυπώνεται το αντίστοιχο μήνυμα. 15

16 Το main να εκτυπώνει στο τέλος κάθε jin που γίνεται μαζί με την τιμή που επιστρέφει (Μain: cmpleted jin with thread number XXXX having a status f YYYYY). Χρησιμοποιήστε σε αυτήν την άσκηση τη συνάρτηση pthread_self() για να εκτυπώνεται το thread ID. 5.6 Καταστρέφοντας τα νήματα Η συνάρτηση pthread_cancel() που χρησιμοποιείται, πόσους παραμέτρους δέχεται και τι σημαίνει η κάθε παράμετρος; (A19) Πολλές φορές είναι επιθυμητό να καταστρέφεται ένα νήμα ιδιαίτερα αν για κάποιο λόγο καθυστερεί να ολοκληρώσει το έργο του, ενώ θα έπρεπε να το έχει ήδη ολοκληρώσει. Η συνάρτηση που χρησιμοποιείται για την ακύρωση είναι η pthread_cancel(). Η συνάρτηση που χρησιμοποιείται για να ελεγχθεί αν εκτελείται ακόμη ένα νήμα, είναι η συνάρτηση με παράμετρο 0 pthread_kill() (δείτε man page). (C10) Να δημιουργηθεί το πρόγραμμα c10.c, το οποίο δημιουργεί δύο νήματα. Το κάθε νήμα εκτελεί μια διαφορετική συνάρτηση. Το πρώτο νήμα με όνομα sleeper θα εκτυπώνει ένα μήνυμα ότι ενεργοποιήθηκε, θα ζητάει από το χρήστη μια τιμή και θα κάνει ένα sleep για όσα δευτερόλεπτα έχει δώσει πριν ο χρήστης. Στη συνέχεια θα κάνει pthread_exit(). T δεύτερο νήμα με όνομα watchdg θα εκτελείται με παράμετρο το thread_id του προηγούμενου νήματος θα εκτυπώνει ένα μήνυμα ότι ενεργοποιήθηκε και μετά από sleep(10) θα ελέγχει με τη συνάρτηση pthread_kill() αν το προηγούμενο νήμα έχει ολοκληρωθεί ή όχι. Αν έχει ολοκληρωθεί θα κάνει κλήση της pthread_exit() και θα ολοκληρώνεται και αυτό, διαφορετικά θα εκτυπώνει ένα κατάλληλο μήνυμα και θα κάνει pthread_cancel() καταστρέφοντας το προηγούμενο νήμα. Το κυρίως πρόγραμμα θα εκτελεί αμέσως μετά τη δημιουργία των νημάτων pthread_jin και για τα δυο, προκειμένου να μην ολοκληρωθεί η εκτέλεση (γιατί σε αυτήν την περίπτωση αμέσως όλα τα νήματα θα καταστραφούν). 16

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:08 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 07 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 06 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No 05 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 04 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ARDUINO Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:01 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 13 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 10: Πέρασμα Παραμέτρων σε Διαδικασίες. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

Αρχιτεκτονική Υπολογιστών Εργαστήριο

Αρχιτεκτονική Υπολογιστών Εργαστήριο Αρχιτεκτονική Υπολογιστών Εργαστήριο Ενότητα: ΠΑΡΑΔΕΙΓΜΑ ΑΠΟΣΦΑΛΜΑΤΩΣΗΣ Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

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

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

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 6: inc, dec, loop, jcxz, dup, displacement Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 1: Εισαγωγή- Χαρακτηριστικά Παραδείγματα Αλγορίθμων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 02 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 4: Visual Basic for Applications (VBA) Δομές Επανάληψης και Επιλογής Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:04 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

Νήµατα. Πολύ σηµαντικό

Νήµατα. Πολύ σηµαντικό Νήµατα Πολύ σηµαντικό 1 Νήµατα (συν.) Σηµαντικό 2 Νήµατα vs ιεργασίες Νήµατα ιεργασίες Χώρος εδοµένων Περιγραφητές Αρχείων fork exit exec Σήµατα Κοινός. Ότι αλλάζει το 1 νήµα το βλέπουν/ αλλάζουν και τα

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 6: Ασκήσεις στη Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 6 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ANDROID-DEVKIT No:01 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή

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

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας

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

C: Από τη Θεωρία στην Εφαρμογή

C: Από τη Θεωρία στην Εφαρμογή Δρ. Γ. Σ. Τσελίκης Δρ. Ν. Δ. Τσελίκας C: Από τη Θεωρία στην Εφαρμογή Ενδεικτικές Ασκήσεις από το Βιβλίο C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) Ενδεικτικές Ασκήσεις του Βιβλίου Ε.Α.1

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

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:03 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

Διάλεξη 5η: Εντολές Επανάληψης

Διάλεξη 5η: Εντολές Επανάληψης Διάλεξη 5η: Εντολές Επανάληψης Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Εντολές Επανάληψης CS100, 2015-2016

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888 ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ N:10 Δρ. Μηνάς Δασυγένης mdasyg@ieee.rg Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Βιοϊατρική τεχνολογία

Βιοϊατρική τεχνολογία Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Βιοϊατρική τεχνολογία Ενότητα 5: Οξύμετρο (OxyPro Project) Αν. καθηγητής Αγγελίδης Παντελής e-mail: paggelidis@uowm.gr ΕΕΔΙΠ Μπέλλου Σοφία e-mail: sbellou@uowm.gr

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 4: Πολλαπλασιασμός (MUL,IMUL). Διαίρεση (DIV,IDIV). Εμφάνιση αλφαριθμητικού. Εμφάνιση χαρακτήρα.

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

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

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

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

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

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

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

Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) 10-1 Εντολές Επανάληψης που θα καλυφθούν σήμερα Διάλεξη 9 - Δευτέρα while() τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Τετάρτη, 30 Οκτωβρίου 2013 Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Λύστε στο Visual Basic Express 2010 τις παρακάτω ασκήσεις: 1. Να δημιουργήσετε ένα νέο Project του είδους Console

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

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

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

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Ενότητα: Μηχανοργάνωση Νοσοκομείου

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Ενότητα: Μηχανοργάνωση Νοσοκομείου Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ηλεκτρονική Υγεία Ενότητα: Μηχανοργάνωση Νοσοκομείου Αν. καθηγητής Αγγελίδης Παντελής e-mail: paggelidis@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

Μαθηματική Ανάλυση ΙI

Μαθηματική Ανάλυση ΙI Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Μαθηματική Ανάλυση ΙI Ενότητα 3: Συναρτήσεις πολλών μεταβλητών Επίκουρος Καθηγητής Θ. Ζυγκιρίδης e-mail: tzygiridis@uowm.gr Τμήμα Μηχανικών Πληροφορικής και

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

Εισαγωγή στις Συναρτήσεις

Εισαγωγή στις Συναρτήσεις Εισαγωγή στις Συναρτήσεις Η φιλοσοφία σχεδίασης της C βασίζεται στη χρήση των συναρτήσεων. Έχουμε ήδη δει και χρησιμοποιήσει πολλές συναρτήσεις που έχει το σύστημα, όπως είναι οι printf(), scanf(),αλλά

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 10 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

ΜΑΘΗΜΑ: ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

ΜΑΘΗΜΑ: ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ ΜΑΘΗΜΑ: ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ ΔΙΔΑΣΚΩΝ: ΑΡΙΣΤΕΙΔΗΣ Νικ. ΠΑΥΛΙΔΗΣ ΤΜΗΜΑ: ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΒΙΟΜΗΧΑΝΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ Τ.Ε. 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 14 Δυναμική διαχείριση μνήμης Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στατική δέσμευση μνήμης Με τη δήλωση απλών μεταβλητών

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

Αρχιτεκτονική Υπολογιστών Ι

Αρχιτεκτονική Υπολογιστών Ι Αρχιτεκτονική Υπολογιστών Ι ΥΠΟΔΕΙΞΕΙΣ ΓΙΑ ΤΗ ΛΥΣΗ ΤΩΝ ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ Από το βιβλίο Αρχιτεκτονική Υπολογιστών & Προγραμματισμός Assembly (Συγγραφέας / Εκδότης : Παναγιώτης Παπάζογλου) Δρ. Παναγιώτης

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΩΤΗΣΕΙΣ 1. Τι καλείται ψευδοκώδικας; 2. Τι καλείται λογικό διάγραμμα; 3. Για ποιο λόγο είναι απαραίτητη η τυποποίηση του αλγόριθμου; 4. Ποιες είναι οι βασικές αλγοριθμικές δομές; 5. Να περιγράψετε τις

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

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

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

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

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

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

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

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

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

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

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

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) Ενότητα 9: ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΔΙΔΑΣΚΩΝ: ΚΩΝΣΤΑΝΤΙΝΟΣ ΧΕΙΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Σενάριο 16: Ο κόσμος του Robby

Σενάριο 16: Ο κόσμος του Robby Σενάριο 16: Ο κόσμος του Robby Φύλλο Εργασίας Τίτλος: Ο κόσμος του Robby Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω, Συνθετικές εργασίες.

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

Παράλληλη Επεξεργασία

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

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

Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ. Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ;

Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ. Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ; Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ Άσκηση 1 Πόσους αστερίσκους θα τυπώσει το πρόγραμμα ; li $t2,2 li $t1,1 Εμφάνισε div $t1,$t2 mfhi $t3 add $t3,$t3,1 add $t1,$t1,$t3 ble $t1,10,start

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Ενότητα 3: Άλγεβρα Βοole και Λογικές Πράξεις Δρ. Φραγκούλης Γεώργιος Τμήμα Ηλεκτρολογίας Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

ΑΤΜ PROJECT ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ 2011-2012. Άννα Τριανταφύλλου ΑΕΜ : 456. επιβλέπων καθηγητής: Μηνάς Δασυγένης

ΑΤΜ PROJECT ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ 2011-2012. Άννα Τριανταφύλλου ΑΕΜ : 456. επιβλέπων καθηγητής: Μηνάς Δασυγένης Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΑΤΜ PROJECT Άννα Τριανταφύλλου ΑΕΜ : 456 επιβλέπων καθηγητής: Μηνάς Δασυγένης Περιεχόμενα 1. 2. 3.

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

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

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

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Α ) Ενσωματωμένα Συστήματα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

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

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 3: Πολλαπλή Παλινδρόμηση. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 3: Πολλαπλή Παλινδρόμηση. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) ΟΙΚΟΝΟΜΕΤΡΙΑ Ενότητα 3: Πολλαπλή Παλινδρόμηση. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 13 Αρχεία Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αρχεία Συλλογές δεδομένων Αποθηκεύονται στην περιφερειακή μνήμη π.χ. σκληρός

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές

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

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Έως τώρα σε ένα πρόγραμμα έχουμε μάθει να εισάγουμε δεδομένα από το πληκτρολόγιο χρησιμοποιώντας την συνάρτηση scanf() και να εκτυπώνουμε δεδομένα

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ Ενότητα # 3: Αριθμητικά Περιγραφικά Μέτρα Εβελίνα Κοσσιέρη Τμήμα Λογιστικής και Χρηματοοικονομικής ΑΔΕΙΕΣ

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

Λογικός Προγραμματισμός Ασκήσεις

Λογικός Προγραμματισμός Ασκήσεις Λογικός Προγραμματισμός Ασκήσεις Παναγιώτης Σταματόπουλος Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιεχόμενα 1. Α Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους 2011-12... 3 1.1 Άσκηση 1...

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία Παιδαγωγικό Τμήμα Νηπιαγωγών Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία Ενότητα # 9: Ψηφιακός Ήχος - Audacity Θαρρενός Μπράτιτσης Παιδαγωγικό Τμήμα Νηπιαγωγών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ψευδοτυχαίοι Αριθμοί Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Ψευδοτυχαίοι Αριθμοί Μια γεννήτρια ψευδοτυχαίων αριθμών είναι

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

Εισαγωγή στις Τηλεπικοινωνίες / Εργαστήριο

Εισαγωγή στις Τηλεπικοινωνίες / Εργαστήριο ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στις Τηλεπικοινωνίες / Εργαστήριο Εργαστηριακή Άσκηση 3: Εισαγωγή στη διαμόρφωση συχνότητας (FΜ) Προσομοίωση σε Η/Υ Δρ.

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

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string 12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string Aλφαριθµητικά της C int main() const int max=80; char str[max); //κάθε char δεσµεύει

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

Μαθηματική Ανάλυση Ι

Μαθηματική Ανάλυση Ι Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Μαθηματική Ανάλυση Ι Ενότητα 5: Όρια και Συνέχεια Επίκ. Καθηγητής Θ. Ζυγκιρίδης e-mail: tzygiridis@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

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

ιαχείριση Πληροφοριών στο ιαδίκτυο

ιαχείριση Πληροφοριών στο ιαδίκτυο ιαχείριση Πληροφοριών στο ιαδίκτυο Εργαστήριο (Φυλλάδιο 8) ΤΕΙ Καβάλας - Σχολή ιοίκησης & Οικονοµίας Τµήµα ιαχείρισης Πληροφοριών ιδάσκων: Μαρδύρης Βασίλειος, ιπλ. Ηλ. Μηχανικός & Μηχ. Υπολογιστών, MSc

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Αλφαριθμητικά Αλφαριθμητικά (strings) Ένα αλφαριθμητικό είναι μια ακολουθία αλφαβητικών

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