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

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

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

Transcript

1 Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 6η σειρά ασκήσεων. Κοζάνη, 16 Νοεμβρίου Ας υποθέσουμε ότι θέλουμε να αναπτύξουμε μία εφαρμογή για προβλήματα στα οποία υπεισέρχονται έννοιες του διανυσματικού λογισμού. Θέλουμε να ξεκινήσουμε από ένα είδος βιβλιοθήκης πάνω στην οποία θα βασιστούμε ώστε να αναπτύξουμε και μελλοντικά να αναβαθμίζουμε εύκολα την εφαρμογή μας. Για να είναι εύχρηστη αυτή η βιβλιοθήκη, θα πρέπει οι ευκολίες που μας παρέχει να μη μας απασχολούν και πολύ με τις τεχνικές εσωτερικές τους λεπτομέρειες ώστε να μπορούμε να εστιάσουμε την προσοχή μας στην ουσία των προβλημάτων που θα λύσουμε. Μια βασική έννοια του διανυσματικού λογισμού είναι προφανώς το ίδιο το διάνυσμα. Στη συνέχεια θα δούμε τι είδους βήματα θα μπορούσαμε να κάνουμε προς την υλοποίηση μιας τέτοιας βιβλιοθήκης παίρνοντας ως παράδειγμα το διάνυσμα στις δύο διαστάσεις. Άσκηση p6-1 (μεταγλώττιση και εκτέλεση) Δημιουργήστε ένα project, ονομάστε το p6 και δημιουργήστε τα παρακάτω αρχεία που θα ανήκουν σε αυτό: α) Ένα αρχείο με το όνομα p6main.c και τα ακόλουθα περιεχόμενα (με γαλάζιο οι γραμμές που δίνονται ήδη από το περιβάλλον ανάπτυξης και με κόκκινο αυτές που θα προσθέσουμε): #include <stdio.h> int main(char argc, char *argv[]) { point zero, *a; zero.x = 0.0; zero.y = 0.0; printf("δώσε συντεταγμένες ενός σημείου. \n"); scanf("%lf", &a->x); scanf("%lf", &a->y); printf("aπόσταση από την αρχή: %lf \n", distance(&zero,a)); system("pause"); return 0; Στο πρόγραμμα αυτό βλέπουμε ότι υπάρχει ένας καινούριος τύπος με το όνομα point για την αποθήκευση δεδομένων που αφορούν σημεία στο επίπεδο. Προφανώς αυτόν τον τύπο τον έχουμε δημιουργήσει εμείς και θα δούμε σε λίγο τον ορισμό του στο αρχείο επικεφαλίδας p6lib.h που έχουμε κάνει include. Επίσης, βλέπουμε μία συνάρτηση με το όνομα distance που παίρνει ως ορίσματα δείκτες σε μεταβλητές τύπου point 6 1 / 8

2 (ή ισοδύναμα, διευθύνσεις τέτοιων μεταβλητών). Από αυτή την άποψη και οι δύο μεταβλητές zero και point θα μπορούσαν από την αρχή να δηλωθούν ως δείκτες. Απλώς δηλώσαμε τη μία μόνο ως δείκτη ώστε να δείξουμε τη χρήση και των δύο τελεστών μέλους, της τελείας και του βέλους. Τι κάνει το πρόγραμμα; Ορίζει ένα σημείο με το όνομα zero και συντεταγμένες 0 (δηλαδή αυτό που λέμε αρχή των αξόνων ) και διαβάζει συντεταγμένες για ένα άλλο σημείο που του δίνουμε. Μετά, τυπώνει την απόσταση του άλλου σημείου από την αρχή των αξόνων. Προσέξτε στη scanf, ότι αν και το a είναι δείκτης, αυτό δε σημαίνει ότι πρέπει να παραλείψουμε το & διότι, όπως θα δούμε σε λίγο, το μέλος x ή y που παίρνουμε με το βέλος (->) δεν είναι δείκτης, άρα χρειάζεται το & (η προτεραιότητα του βέλους είναι πιο υψηλή από του & και έτσι είναι σα να γράψαμε &(a->x)). β) Ένα αρχείο με το όνομα p6lib.c και τα ακόλουθα περιεχόμενα: #include <math.h> double distance( point *a, point *b) { double dx, dy; dx = b->x - a->x; dy = b->y - a->y; return sqrt( dx*dx + dy*dy ); Σε αυτό το αρχείο ορίζεται η συνάρτηση distance που έχει παραμέτρους δύο δείκτες σε σημεία του επιπέδου (μεταβλητές τύπου point) και επιστρέφει την απόσταση των σημείων. Όπως ξέρουμε, η απόσταση μεταξύ δύο σημείων x 1, y 1 και x 2, y 2 είναι d= x 2 x 1 2 y 2 y 1 2 Προσέξτε την οδηγία για να συμπεριληφθεί το αρχείο math.h ώστε να μπορεί να κληθεί η συνάρτηση της τετραγωνικής ρίζας (sqrt). γ) Ένα αρχείο επικεφαλίδας με το όνομα p6lib.h και τα ακόλουθα περιεχόμενα: #ifndef P6LIB_H #define P6LIB_H struct simio { double x, y; ; typedef struct simio point; double distance(point *, point * ); #endif Να και ο ορισμός του τύπου point! Στην πραγματικότητα μάλιστα, έχει δηλωθεί μία δομή δεδομένων με το όνομα simio και μετά, για να μην επαναλαμβάνουμε συνέχεια το struct simio της δώσαμε το ψευδώνυμο point με την εντολή typedef. Η δομή αυτή έχει δύο μέλη που είναι οι συντεταγμένες του σημείου. Υπάρχουν δύο συντεταγμένες, άρα πρόκειται για σημείο στο επίπεδο. Εδώ δηλώνεται επίσης και η συνάρτηση distance που ορίζεται στο προηγούμενο αρχείο. Άσκηση p6-2 (μεταγλώττιση και εκτέλεση) Στο αρχείο επικεφαλίδας p6lib.h που δημιουργήσατε, εισάγετε άλλη μία δήλωση δομής δεδομένων 6 2 / 8

3 και ένα μνημονικό όνομα, όπως φαίνεται παρακάτω (με κόκκινο οι νέες γραμμές που θα προστεθούν): #ifndef P6LIB_H #define P6LIB_H struct simio { double x, y; ; typedef struct simio point; struct dianysma { point a, b; double length; double (*calclength)(); ; typedef struct dianysma vector; double distance(point *, point * ); #endif Εδώ βλέπουμε να ορίζεται άλλη μία δομή δεδομένων με όνομα dianysma και μνημονικό όνομα τύπου το vector, η οποία έχει ως μέλη δύο αντίτυπα της προηγούμενης δομής που ορίσαμε, δηλαδή δύο σημεία του επιπέδου και μία double μεταβλητή με το όνομα length. Προφανώς εδώ ορίζουμε έναν τύπο για να περιγράφουμε διανύσματα στο επίπεδο και τα μέλη του είναι τα σημεία που ορίζουν τα άκρα του, καθώς και το μήκος του. Αλλά υπάρχει και κάτι ακόμη ενδιαφέρον εδώ, και συγκεκριμένα το μέλος calclength που το όνομά του δείχνει ότι προορίζεται να έχει σχέση με τον υπολογισμό του μήκους και όπως φαίνεται από τη δήλωσή του είναι δείκτης σε συνάρτηση που επιστρέφει double. Δηλαδή η νέα δομή δεδομένων που δημιουργήσαμε (και μαζί και ο νέος τύπος vector) εξοπλίζεται μέσω της δυνατότητας να δείξει σε μια συνάρτηση, με μία μέθοδο υπολογισμού των δεδομένων της. Προσοχή! Είναι απαραίτητο ο ορισμός της δομής dianysma να μπει μετά από την typdef όπου ορίζεται ο τύπος point αλλιώς ο μεταγλωττιστής δε θα καταλάβει τι είναι αυτά τα μέλη τύπου point που υπάρχουν στη νέα μας δομή και θα βγάλει μήνυμα λάθους. Στο αρχείο με το κύριο πρόγραμμα πραγματοποιήστε τις παρακάτω αλλαγές (με γαλάζιο ο,τι έμεινε από πριν και με κόκκινο οι νέες γραμμές): #include <stdio.h> int main(char argc, char *argv[]) { vector v; v.calclength = distance; 6 3 / 8

4 printf("δώσε συντεταγμένες ενός σημείου. \n"); scanf("%lf", &v.a.x); scanf("%lf", &v.a.y); printf("δώσε συντεταγμένες ενός σημείου. \n"); scanf("%lf", &v.b.x); scanf("%lf", &v.b.y); printf("μήκος διανύσματος: %lf \n", v.calclength(&v.a, &v.b)); Εδώ ορίζουμε μία μεταβλητή τύπου vector, δίνουμε τις συντεταγμένες των σημείων που το αποτελούν και βάσει αυτών υπολογίζουμε και εμφανίζουμε το μήκος του. Αξίζει να προσέξουμε τα εξής: Μετά από τον ορισμό του διανύσματος v ορίζουμε ότι το μέλος του calclength θα δείχνει στη συνάρτηση distance. Έτσι, θα μπορεί να χρησιμεύσει στον υπολογισμό του μήκους του ανύσματος. Όταν διαβάζουμε τις συντεταγμένες, ουσιαστικά καλούμε το μέλος του μέλους: η παράσταση v.a.x σημαίνει η τιμή του x που είναι μέλος του σημείου a που είναι μέλος του διανύσματος v. Στο τέλος, κάνουμε χρήση του μέλους calclength που δείχνει στη distance και περνώντας του ως ορίσματα τις διευθύνσεις από τα σημεία-μέλη του διανύσματος παίρνουμε το μήκος του. Άσκηση p6-3 (μεταγλώττιση και εκτέλεση) Με τη βοήθεια του τύπου vector ορίσαμε μία κατηγορία μαθηματικών οντοτήτων (διανύσματα) που χαρακτηρίζεται από μια σειρά από δεδομένα (συντεταγμένες κλπ) τα οποία υπόκεινται σε συγκεκριμένους χειρισμούς. Θα θέλαμε να κάνουμε αυτή την κατηγορία οντοτήτων πιο συμπαγή. Δηλαδή θα θέλαμε να τυποποιήσουμε τους χειρισμούς των δεδομένων της και συγχρόνως να αποκρύψουμε τις λεπτομέρειες των σχετικών υπολογισμών από το κύριο πρόγραμμα και γενικά την καλούσα συνάρτηση, ώστε να μην απασχολούν τους μελλοντικούς χρήστες όταν χρησιμοποιούν αυτή την κατηγορία. Πρώτα τροποποιούμε το αρχείο επικεφαλίδας. Εδώ θα κάνουμε μόνο μία προσθήκη προς το τέλος, γι' αυτό και δεν το γράφουμε ολόκληρο (και πάλι, με κόκκινο τα νέα στοιχεία ή αλλαγές): #ifndef P6LIB_H #define P6LIB_H... double distance(point *, point * ); vector newvector( void ); #endif Δηλαδή προσθέσαμε μία ακόμη συνάρτηση που επιστρέφει μία μεταβλητή τύπου vector. Το τι κάνει αυτή θα δούμε στη συνέχεια. Μετά, τροποποιούμε και το αρχείο p6lib.c όπου ορίζουμε τη νέα μας συνάρτηση κάτω από τα 6 4 / 8

5 προηγούμενα περιεχόμενα. Και πάλι αφού πρόκειται απλώς για μια προσθήκη στο τέλος του αρχείου παραλείπουμε τις προηγούμενες γραμμές.... vector newvector( void ) { vector v; v.a.x = v.a.y = v.b.x = v.b.y = 0.0; v.calclength = distance; return v; Η νέα συνάρτηση είναι πολύ απλή: ορίζει μία τοπική μεταβλητή v τύπου vector, κάνει το μέλος-δείκτη-σεσυνάρτηση να δείχνει τη distance και επιστρέφει τη v. Επίσης, δίνεται μια καλή ευκαιρία να προσθέσουμε και άλλες λεπτομέρειες όπως το να αποδώσουμε μηδενικές αρχικές συντεταγμένες στα σημεία του διανύσματος. Στη συνέχεια θα δούμε γιατί το κάναμε αυτό. Τέλος, τροποποιούμε το κύριο πρόγραμμα. Και εδώ επίσης η αλλαγή είναι μία: αντικαθιστούμε την εντολή v.calclength = distance; με την vector v = newvector(); Το πλεονέκτημα μπορεί να φαίνεται αμελητέο αλλά έχουμε κερδίσει κάτι: κατά την ανάπτυξη του κύριου προγράμματος δεν ασχολούμαστε με τεχνικές λεπτομέρειες όπως ποια συνάρτηση αντιστοιχίζεται σε ποιον δείκτη για τον υπολογισμό του μήκους ή πότε και πώς θα αποδοθούν αρχικές τιμές στο διάνυσμα. Αυτό είναι κάτι που γίνεται εσωτερικά. Επιπλέον αργότερα μπορεί να εμπλουτίσουμε τη δομή struct dianysma με νέα στοιχεία και πιθανά να τροποποιήσουμε τη newvector αναλόγως χωρίς να χρειαστεί να πειράξουμε το ίδιο το πρόγραμμα που θα παραμείνει αναλλοίωτο. Άσκηση p6-4 (μεταγλώττιση και εκτέλεση) Στην ίδια λογική της μεταφοράς των τεχνικών λεπτομερειών μπορούμε να μεταφέρουμε και την ανάγνωση των συντεταγμένων σε μία συνάρτηση που να καλείται από το κύριο πρόγραμμα και να κάνει όλη τη σχετική δουλειά. Πρώτα θα δηλώσουμε αυτή τη συνάρτηση στο αρχείο επικεφαλίδας. Αφού ασχολείται με συντεταγμένες θα μπορούσαμε να της δώσουμε ένα ταιριαστό όνομα όπως setcoordinates. Ωστόσο, προτιμούμε να της δώσουμε ένα πιο γενικό όνομα όπως setvector. Η γενικότητα είναι μια καλή τακτική που παρέχει ευελιξία κατά την αναβάθμιση ενός προγράμματος εξ άλλου εδώ έχουμε λόγους για αυτή την επιλογή που θα γίνουν σύντομα φανεροί. Η δήλωση της setvector μπαίνει στο τέλος του p5lib.h (πριν το #endif βέβαια!) και είναι η εξής: void setvector(vector * ); Στη συνέχεια τροποποιούμε το αρχείο p6lib.c προσθέτοντας τον ορισμό της νέας συνάρτησης: #include <stdio.h> #include <math.h>... (προηγούμενες συναρτήσεις) void setvector(vector *v) { 6 5 / 8

6 printf("δώσε συντεταγμένες ενός σημείου. \n"); scanf("%lf", &v->a.x); scanf("%lf", &v->a.y); printf("δώσε συντεταγμένες ενός σημείου. \n"); scanf("%lf", &v->b.x); scanf("%lf", &v->b.y); Εδώ παρατηρούμε κατ' αρχήν ότι συμπεριλάβαμε και το αρχείο <stdio.h>. Αυτό είναι λογικό και απαραίτητο αφού σε αυτό το αρχείο μεταφέρουμε της λειτουργίες εκτύπωσης και ανάγνωσης (printf, scanf). Στη συνέχεια βλέπουμε ότι ο ορισμός της συνάρτησης δεν εξαντλείται σε ένα απλό copy-paste από το κύριο πρόγραμμα. Η παράμετρος της συνάρτησης θα είναι κάποιο διάνυσμα που έχουμε δηλώσει και αρχικοποιήσει με τη newvector. Αυτό θα πρέπει μετά την κλήση της συνάρτησης να έχει αλλαγμένες συντεταγμένες σύμφωνα με την είσοδο που το πρόγραμμα δέχτηκε από το χρήστη. Άρα, το διάνυσμα πρέπει να περνάει μέσω διεύθυνσης και όχι μέσω τιμής αλλιώς οι αλλαγές θα αφορούσαν ένα τοπικό αντίγραφο του διανύσματος και θα χάνονταν χωρίς να περάσουν σε αυτό με το τέλος της συνάρτησης. Γι αυτό η παράμετρος εισόδου δηλώνεται ως δείκτης με τη βοήθεια του τελεστή *. Το πέρασμα μέσω διεύθυνσης έχει συνέπειες και στην εσωτερική δομή της συνάρτησης. Η παράμετρος είναι δείκτης επομένως ο τελεστής μέλους τελεία πρέπει να αντικατασταθεί από τον τελεστή μέλους βέλος, όπως δείχνουμε με τα έντονα γράμματα, ώστε από το διάνυσμα να πάρουμε τα μέλη-σημεία. Δε χρειάζεται να το κάνουμε και για τα σημεία από τα οποία θα πάρουμε τις συντεταγμένες γιατί αυτά δεν έχουν οριστεί ως μέλη στη δομή struct simio (βλ. και άσκηση 1 στην παρούσα σειρά). Τέλος, αλλάζουμε το κύριο πρόγραμμα φέρνοντάς το στην παρακάτω μορφή: #include <stdio.h> int main(char argc, char *argv[]) { vector v = newvector( ); setvector( &v ); printf("μήκος διανύσματος: %lf \n", v.calclength(&v.a, &v.b)); Εξυπηρετώντας τον αρχικό σκοπό μας, της μεταφοράς των τεχνικών λεπτομερειών στο παρασκήνιο, πετύχαμε επιπλέον να φέρουμε το κύριο πρόγραμμα σε μια μορφή πολύ απλούστερη και πιο κατανοητή και ευανάγνωστη από την αρχική. Άσκηση p6-5 (μεταγλώττιση και εκτέλεση) Στη μορφή που έχει πάρει το πρόγραμμά μας, η εκτύπωση του μήκους απαιτεί την κλήση της distance (μέσω του calclength) η οποία υπολογίζει αυτή την ποσότητα. Αυτό δεν είναι καλή 6 6 / 8

7 τακτική γιατί αν θέλουμε να χρησιμοποιούμε συχνά το μήκος ενός διανύσματος που παραμένει αμετάβλητο, θα επιβαρύνουμε το πρόγραμμα με τη συχνή επανάληψη των ίδιων υπολογισμών. Θα ήταν καλό να υπολογίσουμε μία φορά το μήκος και να το εμφανίζουμε όποτε χρειαστεί. Για το σκοπό αυτό θα μεταφέρουμε τον υπολογισμό του μήκους μέσα στη setvector (τώρα δικαιώνεται η επιλογή μας να διαλέξουμε ένα γενικό όνομα). Για την εμφάνιση του μήκους θα μπορούσαμε να χρησιμοποιήσουμε το ίδιο το μέλος v.length του διανύσματος και αυτό θα κάνουμε προς το παρόν. Τροποποιήστε το αρχείο p6lib.c προσθέτοντας στο τέλος της setvector μία κλήση της calclength: v->length = v->calclength(&v->a, &v->b); Αυτή η προσθήκη δικαιώνει την αρχική μας επιλογή για το όνομα που δώσαμε στη συνάρτηση ανάγνωσης συντεταγμένων. Τώρα, πρόκειται για μια συνάρτηση που θέτει όλα τα μέλη του διανύσματος και έτσι της αξίζει ένας πιο γενικός προσδιορισμός. Και πάλι όπως πριν, το πέρασμα μέσω διεύθυνσης επιβάλλει τη χρήση του τελεστή μέλους βέλος. Άσκηση p6-6 (μεταγλώττιση και εκτέλεση) Το τελευταίο βήμα για την τελειοποίηση είναι να ξεφορτωθούμε και την εμφάνιση του μέλους length στην εκτύπωση του μήκους. Θέλουμε ο μελλοντικός χρήστης ή προγραμματιστής να μην ασχολείται καθόλου με την εσωτερική δομή του αντικειμένου μας (εν προκειμένω διανύσματος) και να επικοινωνεί με αυτό μέσω κατάλληλων συναρτήσεων διασύνδεσης. Αυτές επειδή θα επιτελούν τη γενική λειτουργία ανταλλαγής δεδομένων, θα μπορούν να τυποποιηθούν ώστε να έχουν λίγο πολύ πανομοιότυπη δομή και για όλες τις άλλες κατηγορίες δεδομένων στην εφαρμογή μας. Αυτό είναι καλό για το χρήστη και τον προγραμματιστή γιατί θα μπορεί να μάθει πολύ πιο εύκολα και γρήγορα τη χρήση της βιβλιοθήκης που αναπτύσσουμε χωρίς να ασχολείται με τις εσωτερικές λεπτομέρειες που μπορεί να αλλάζουν δραματικά σε κάθε κατηγορία δεδομένων. Εδώ θα υλοποιήσουμε μια πολύ απλή συνάρτηση που την ονομάζουμε getlength και μόνο σκοπό έχει να επιστρέφει το μήκος του διανύσματος. Για να το κάνει αυτό θα πρέπει να πάρει από κάπου το μήκος του. Υπάρχουν δύο τρόποι για να το πετύχουμε: Ορίζουμε την getlength ως αυτοτελή συνάρτηση τύπου double που παίρνει ως όρισμα ένα διάνυσμα ή δείκτη σε αυτό και επιστρέφει το μήκος του. Αυτή είναι η πιο απλή περίπτωση και θα την υλοποιήσουμε εδώ. Προσθέτουμε στο διάνυσμα (στη δήλωση της δομής struct dianysma, δηλαδή) ένα δείκτη σε συνάρτηση που τον ονομάζουμε getlength και με δεδομένο ένα διάνυσμα v μπορούμε να γράψουμε v.getlength( ) (ή v->getlength( ), αν πρόκειται για δείκτη σε διάνυσμα). Για να υλοποιήσουμε την πρώτη εκδοχή: Στο τέλος του αρχείου p6lib.h δηλώνουμε τη νέα συνάρτηση ως εξής: double getlength(vector * ); Στο τέλος του αρχείου p6lib.c ορίζουμε τη συνάρτηση ως εξής: double getlength(vector *v) { return(v->length); Στο κύριο πρόγραμμα τροποποιούμε την εντολή εκτύπωσης του μήκους ως εξής: printf("μήκος διανύσματος : %lf \n", getlength(&v)); Αυτή είναι μια απλή και αποτελεσματική λύση, αλλά κάπως υπολείπεται της τελειότητας γιατί μελλοντικά μπορεί να χρειαστεί να αλλάξουμε κάτι σε σχέση με αυτή (το όνομά της, τη λίστα ορισμάτων της) και αν έχουμε να συντηρήσουμε ένα μεγάλο πρόγραμμα θα πρέπει να ανατρέξουμε σε όλα τα σημεία όπου 6 7 / 8

8 εμφανίζεται αυτή για να τη διορθώσουμε. Η λύση με το μέλος-δείκτη σε συνάρτηση είναι πιο πολύπλοκη στην υλοποίησή της αλλά υπερτερεί στο θέμα της συντήρησης του λογισμικού επειδή σε περίπτωση τροποποιήσεων δεν έχουμε παρά να αλλάξουμε το πού δείχνει ο δείκτης, κάτι που λογικά θα γίνεται μια φορά στην αρχή του προγράμματος. Άσκηση p6-7 (ανάπτυξη κώδικα για το σπίτι!) Υλοποιήστε τη δεύτερη λύση στο πρόβλημα ανάκτησης του μήκους. Θα πρέπει να μπορούμε να γράψουμε στο κύριο πρόγραμμα μια εντολή της μορφής printf("μήκος διανύσματος : %lf \n", v.getlength()); Η getlength θα μπορούσε να υλοποιηθεί και ως αυτοτελής δείκτης σε συνάρτηση, χωρίς να είναι μέλος του διανύσματος. Είναι όμως προτιμώτερο να υλοποιηθεί ως μέλος του επειδή μπορεί αντικείμενα της εφαρμογής μας άλλης κατηγορίας να έχουν και αυτά την ιδιότητα μήκος που θα θέλαμε να ανακτήσουμε (π.χ. ένα ευθύγραμμο τμήμα ή ένα στερεό με ιδιότητες όπως μήκος, πλάτος και ύψος ). Τότε, θα έπρεπε να γράψουμε διαφορετικές συναρτήσεις με άλλο όνομα η κάθε μία, ανάλογα με το είδος των αντικειμένου που θα ήταν όρισμα. Αν όμως επιλέξουμε να υλοποιούμε συναρτήσεις-μέλη για το σκοπό αυτό, έχουμε και πάλι βέβαια να αναπτύξουμε μία συνάρτηση για κάθε είδος αντικειμένου, αλλά κερδίζουμε σε ομοιομορφία και άρα ταχύτητα εξοικείωσης τρίτων με το λογισμικό. Πράγματι, με τον τρόπο αυτό, σε κάθε αντικείμενο που έχει μήκος μπορούμε να αντιστοιχίσουμε και μία μέθοδο εμφάνισής του, δηλαδή μία συνάρτηση που θα έχει πάντα το ίδιο όνομα, π.χ. getlength, χωρίς να υπάρχει πρόβλημα εφόσον είναι μέλος άλλης δομής κάθε φορά. Άσκηση p6-8 (ανάπτυξη κώδικα για το σπίτι!) Γράψτε παρόμοιες συναρτήσεις και μέλη της δομής dianysma για να ορίζεται η τιμή των συνιστωσών του διανύματος και να μπορείτε να τις εμφανίζεται. Όπως ξέρουμε, για ένα διάνυσμα που ορίζεται από τα σημεία x 1, y 1 και x 2, y 2 οι συνιστώσες του είναι x=x 2 x 1 και y= y 2 y 1, αντίστοιχα. Προτεινόμενες απαντήσεις λύσεις. coming soon / 8

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

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

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 5η σειρά ασκήσεων. Κοζάνη, 7 Νοεμβρίου 2007. Άσκηση p5-1 (μεταγλώττιση και εκτέλεση) Δημιουργήστε ένα project, ονομάστε το p5 και δημιουργήστε

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

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

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

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ασκήσεις Επανάληψης Άσκηση 1 Το παρακάτω πρόγραμμα περιέχει μια δομή επανάληψης τύπου for. Να ξαναγραφεί ώστε να έχει ακριβώς την ίδια λειτουργία, χρησιμοποιώντας

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

Δομημένος Προγραμματισμός

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

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

Κεφάλαιο V: Δομές και ενώσεις. 5.1 Δομές.

Κεφάλαιο V: Δομές και ενώσεις. 5.1 Δομές. Κεφάλαιο V: Δομές και ενώσεις. 5.1 Δομές. Όπως αναφέραμε στο προηγούμενο κεφάλαιο η ομαδοποίηση της πληροφορίας στον προγραμματισμό είναι ιδιαίτερα σημαντική. Ένα παράδειγμα ομαδοποίησης της πληροφορίας

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

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

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

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

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

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

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

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δεύτερη Διάλεξη Βασικά στοιχεία της γλώσσας προγραμματισμού C Μία γλώσσα προγραμματισμού όπως και μια ανθρώπινη γλώσσα μπορεί να μελετηθεί ως προς το αλφάβητό της,

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

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

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

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

5ο σετ σημειώσεων - Δείκτες

5ο σετ σημειώσεων - Δείκτες 5ο σετ σημειώσεων - Δείκτες 11 Ιουνίου 01 1 Γενικά Σύμφωνα με το γενικό μοντέλο υπολογιστή, ένας υπολογιστής είναι μία μηχανή που διαθέτει μία κεντρική μονάδα επεξεργασίας η οποία μπορεί μεταξύ άλλων να

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 1η εβδομάδα. Κοζάνη, 5 Οκτωβρίου 2007. Βασικά στοιχεία γραφής προγραμμάτων με τη C: α) Case Sensitive!!! β) Δυνατότητα εισαγωγής σχολίων με /*

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

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

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

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

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

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

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

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Συναρτήσεις και διαδικασίες

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Δομές Δεδομένων

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 4η σειρά ασκήσεων. Κοζάνη, 1 Νοεμβρίου 2007. Πρόγραμμα p4-1 (μεταγλώττιση και εκτέλεση) Πολύ απλό το πρώτο, για προθέρμανση! Πριν πατήσετε enter

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

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

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Απλά Προγράμματα Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Βασικοί κανόνες Κατανόηση

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

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

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch; ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι είναι ; Συναρτήσεις Αυτόνομα τμήματα κώδικα (υποπρογράμματα) που πραγματοποιούν μια καθορισμένη εργασία. Χρήσιμες για περιπτώσεις που ο ίδιος υπολογισμός επαναλαμβάνεται πολλές φορές

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τέταρτη Διάλεξη ΠΙΝΑΚΕΣ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Έστω ότι έχουμε το εξής πρόβλημα: εισάγουμε μια σειρά αριθμών από το πληκτρολόγιο και θέλουμε να βρούμε τον μέγιστο και τον ελάχιστο. Γενικά,

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

Διανύσματα στις 3 Διαστάσεις

Διανύσματα στις 3 Διαστάσεις project 2 Διανύσματα στις 3 Διαστάσεις Περιεχόμενα: Prj02.1 Το Πρόβλημα... 485 Prj02.2 Ο Τύπος Vector3 και οι Δημιουργοί... 486 Prj02.3 Οι Τελεστές Σύγκρισης... 487 Prj02.4 Οι Τελεστές +, -, *, ^... 488

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β 1. (10 μον.) Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις (αʹ) _2togo είναι έγκυρο όνομα μεταβλητής (βʹ) Αν p είναι δείκτης στο πρώτο στοιχείο

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 2:Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)- Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγικές Έννοιες σε Strings(Αρχικοποίηση, Ανάγνωση & Εκτύπωση) Πίνακες από Strings

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1 ΑΕΜ ΒΑΘΜΟΣ 449 PASS 451 PASS 476-1733 PASS 1779-1899 FAIL 1900 FAIL Page 1 1901 PASS 1904 PASS 1908 PASS 1909 PASS 1910 - Page 2 1911 PASS 1914 Οριακό PASS 1915 PASS 1926 PASS Page 3 1927 PASS 1928 Οριακό

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 12: Συναρτήσεις & Δείκτες Αλλαγή του «εξωτερικού» περιβάλλοντος Αν σαν παράμετρος μιας συνάρτησης δοθεί μια μεταβλητή, σαν πραγματική παράμετρος θα περαστεί η τιμή της.

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

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

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

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

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ C Προγραμματιστικές Ασκήσεις, Φυλλάδιο Εκφώνηση: 9/3/0 Παράδοση: 5/4/0,.59 Άσκηση 0 η : Το πρόβλημα της βελόνας του Buffon Θέμα της εργασίας

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 4ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Συναρτήσεις (functions) 56 Τεμαχισμός του προγράμματος σε μικρότερα κομμάτια που είναι πιο κατανοητά, πιο εύκολα

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

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

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

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

ΠΕΡΙΛΗΨΗ ΘΕΩΡΙΑΣ ΣΤΗΝ ΕΥΘΥΓΡΑΜΜΗ ΚΙΝΗΣΗ

ΠΕΡΙΛΗΨΗ ΘΕΩΡΙΑΣ ΣΤΗΝ ΕΥΘΥΓΡΑΜΜΗ ΚΙΝΗΣΗ ΠΕΡΙΛΗΨΗ ΘΕΩΡΙΑΣ ΣΤΗΝ ΕΥΘΥΓΡΑΜΜΗ ΚΙΝΗΣΗ Αλγεβρική τιμή διανύσματος Όταν ένα διάνυσμα είναι παράλληλο σε έναν άξονα (δηλαδή μια ευθεία στην οποία έχουμε ορίσει θετική φορά), τότε αλγεβρική τιμή του διανύσματος

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης Στο εργαστήριο αυτό, θα εξοικειωθούμε με τους τύπους δεδομένων που μας παρέχει η γλώσσα C, θα χρησιμοποιήσουμε τις δομές επανάληψης (for, while, do...while),

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

Βασικές Αρχές Προγραμματισμού

Βασικές Αρχές Προγραμματισμού Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2017-2018 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων (union) τι και γιατί Συσκευές με μικρή μνήμη => ανάγκη εξοικονόμησης πόρων Παρατήρηση: αχρησιμοποίητη μνήμη. Έστω

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 10η εβδομάδα. Κοζάνη, 14 Ιανουαρίου 2009. Τα προγράμματα 1 έως 4 αφορούν την ταξινόμηση και αναζήτηση δεδομένων. Το πρόγραμμα 5 υλοποιεί μια στοίβα

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

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

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

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

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

Υπερφόρτωση τελεστών

Υπερφόρτωση τελεστών Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας

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

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

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

Κεφάλαιο 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 (); Πρότυπο ( ήλωση) Συνάρτησης (

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 4: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Πίνακες Δεικτών, Παραδείγματα, Πολυδιάστατοι πίνακες Πέρασμα παραμέτρων σε προγράμματα C Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες:

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

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη

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

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Απλά Προγράμματα Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Βασικοί κανόνες Κατανόηση

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Μερικές χρήσιμες οδηγίες

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

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

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

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

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

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

Εναλλακτικές εντολές για ανάγνωση/εγγραφή

Εναλλακτικές εντολές για ανάγνωση/εγγραφή Εναλλακτικές εντολές για ανάγνωση/εγγραφή Ανάγνωση από το πληκτρολόγιο και εγγραφή στην οθόνη γίνεται με τις εντολές Εναλλακτικές μορφές είναι οι Οι τελευταίες μπορούν να επεκταθούν για ανάγνωση και εγγραφή

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

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

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

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

Ενδεικτικές λύσεις και στατιστικά

Ενδεικτικές λύσεις και στατιστικά Προγραμματισμός 1 Σύντομο Quiz 25/9/9 Ενδεικτικές λύσεις και στατιστικά Ερώτηση 1: Γράψτε παρακάτω συνάρτηση η οποία δέχεται ως παραμέτρους ένα string και ένα χαρακτήρα και επιστρέφει τον αριθμό των εμφανίσεων

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