Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης

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

Download "Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης"

Transcript

1 Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης Μέρος 3ο: Επίπεδο Λειτουργικότητας Χρήστη (Ημερομηνία Παράδοσης: Τρίτη 17/6/2008, 11:59μμ) Εισαγωγή Για την ολοκλήρωση της όλης εργασίας απαιτείται η κατασκευή των παρακάτω τριών προγραμμάτων: 1 dbcreate 2 dbdestroy 3 minirel 1 - dbcreate Το πρόγραμμα dbcreate είναι ένα (μικρό) βοήθημα που χρησιμοποιείται για την δημιουργία νέων βάσεων δεδομένων Σύνταξη: Η λειτουργία του προγράμματος είναι εξαιρετικά απλή Αρκεί στην γραμμή εντολών ο χρήστης να πληκτρολογήσει dbcreate dbname και το πρόγραμμα δημιουργεί μία νέα βάση δεδομένων με όνομα dbname Η βάση αυτή μπορεί στην συνέχεια να χρησιμοποιηθεί από το πρόγραμμα minirel ή μπορεί να διαγραφεί με την βοήθεια του dbdestroy Πληροφορίες υλοποίησης: Κάθε βάση αποτελείται από ένα σύνολο από σχέσεις και ευρετήρια Τα αρχεία αυτά τοποθετούνται μέσα σε ένα φάκελο που έχει το ίδιο όνομα με την βάση Επομένως, η δημιουργία μία νέας βάσης με όνομα dbname, ισοδυναμεί με την δημιουργία ενός νέου φακέλου με όνομα dbname και την κατασκευή (μέσα σε αυτόν) των πινάκων που αφορούν τα μεταδεδομένα (σχέσεις relcat, attrcat, κλπ) της βάσης Οι σχέσεις θα δημιουργηθούν χρησιμοποιώντας κατάλληλα τις συναρτήσεις του επιπέδου HF Φυσικά, αν το επιθυμείτε, μπορείτε να δημιουργήσετε και ευρετήρια με σκοπό την επιτάχυνση της χρήσης των σχέσεων αυτών Για τη δημιουργία φακέλων, δεν έχει γίνει καμία πρόβλεψη από το πρότυπο της C Για αυτό τον λόγο θα πρέπει να χρησιμοποιήσετε την mkdir του κελύφους Για παράδειγμα, για να φτιάξετε τον φάκελο foo, θα πρέπει να χρησιμοποιήσετε την εντολή system("mkdir foo")

2 Σε γενικές γραμμές, η συνάρτηση main() του dbcreate θα έχει την ακόλουθη μορφή: int main(int argc, char* argv[]){ char command[80]; char* dbname; if(argc!=2){ printf("χρήση: %s dbname \n",argv[0]); return(1); dbname=argv[1]; sprintf(command,"mkdir %s",dbname); system(command); if(!chdir(dbname)){ printf("δεν είναι δυνατή η δημιουργία της βάσης"); return(2); /* Δημιουργία των πινάκων relcat και attrcat με χρήση των συναρτήσεων ΗF_CreateFile */ return 0; 2 - dbdestroy Το πρόγραμμα dbdestroy είναι ένα (μικρό) βοήθημα που χρησιμοποιείται για την διαγραφή βάσεων δεδομένων Σύνταξη: Η λειτουργία του προγράμματος είναι εξαιρετικά απλή Αρκεί στη γραμμή εντολών ο χρήστης να πληκτρολογήσει dbdestroy dbname και το πρόγραμμα διαγράφει τη βάση δεδομένων με όνομα dbname Πληροφορίες υλοποίησης: Κάθε βάση αποτελείται από ένα σύνολο από σχέσεις και ευρετήρια Τα αρχεία αυτά τοποθετούνται μέσα σε ένα φάκελο που έχει το ίδιο όνομα με την βάση Επομένως, η διαγραφή μιας βάσης με όνομα dbname, ισοδυναμεί με την διαγραφή του φακέλου αυτού Για την διαγραφή φακέλων, δεν έχει γίνει καμία πρόβλεψη από το πρότυπο της C Για αυτό τον λόγο θα πρέπει να χρησιμοποιήσετε την εντολή rm του κελύφους Για παράδειγμα, για να διαγράψετε τον φάκελο foo, θα πρέπει να χρησιμοποιήσετε την εντολή system("rm -r foo") Προσοχή: Αν προγραμματίζετε σε περιβάλλον Ms-Windows, θα πρέπει να χρησιμοποιήσετε τις αντίστοιχες εντολές system("del /q foo") και system("rmdir foo") Σε γενικές γραμμές, η συνάρτηση main() του dbdestroy θα έχει την ακόλουθη μορφή: int main(int argc, char* argv[]){ char command[80]; char* dbname; if(argc!=2){ printf("χρήση: %s dbdestroy \n",argv[0]); return(1); dbname=argv[1];

3 sprintf(command,"rm -r %s",dbname); system(command); return 0; 3 - minirel Το πρόγραμμα minirel χρησιμοποιείται για την διαχείριση των δεδομένων (πχ δημιουργία σχέσεων) που υπάρχουν σε μία βάση Σύνταξη: Η λειτουργία του προγράμματος είναι εξαιρετικά απλή Το πρόγραμμα αρχίζει την εκτέλεσή του όταν ο χρήστης πληκτρολογήσει minirel dbname στο κέλυφος του λειτουργικού συστήματος dbname είναι το όνομα της βάσης που θέλει ο χρήστης να χρησιμοποιήσει Στην συνέχεια το πρόγραμμα εκτελεί τις εντολές που ο χρήστης δίνει από το πληκτρολόγιο Η εκτέλεση του προγράμματος τερματίζεται όταν ο χρήστης πληκτρολογήσει quit Οι εντολές που μπορεί να δώσει ο χρήστης είναι οι εξής (τα τμήματα που είναι μέσα σε [] είναι προαιρετικά): Α) Βοηθητικές εντολές: 1) CREATE relname (attr1=format1,, attrn=formatn); Η εντολή αυτή δημιουργεί μία νέα σχέση με όνομα relname Η σχέση αυτή έχει N γνωρίσματα με ονόματα attr1, attr2, attrn Ο τύπος (format) του κάθε γνωρίσματος μπορεί να είναι 'i', 'f' ή 'cxxx' όπου ΧΧΧ είναι ένας αριθμός Εάν το format είναι 'i' ή 'f', τότε το αντίστοιχο γνώρισμα είναι ακέραιος ή πραγματικός αριθμός Αν το format είναι 'cxxx' τότε το αντίστοιχο γνώρισμα είναι κείμενο μήκους XXX χαρακτήρων 2) BUILDINDEX relname(attrname); Η εντολή αυτή δημιουργεί ένα ευρετήριο για τη σχέση relname, με βάση το γνώρισμα attrname 3) DESTROY relname; 4) QUIT; Η εντολή αυτή διαγράφει τη σχέση με όνομα relname Επιπλέον, διαγράφει και τα τυχόν ευρετήρια που σχετίζονται με αυτή τη σχέση Η εντολή αυτή προκαλεί τον τερματισμό του προγράμματος minirel Β) Εντολές χειρισμού δεδομένων: 1) SELECT [INTO relname] <TARGET_LIST> [WHERE <CONDITION>] Η εντολή αυτή τυπώνει το αποτέλεσμα ενός ερωτήματος, ή προαιρετικά εισάγει το αποτέλεσμα αυτό σε μία καινούργια σχέση με όνομα relname Εάν λείπει το τμήμα [WHERE <CONDITION>] της εντολής, τότε ανασύρονται όλες οι εγγραφές της σχέσης που δηλώνει το TARGET_LIST Το TARGET_LIST έχει τη μορφή (relname1attr1, relname2attr2,,relnamenattrn) To TARGET_LIST καθορίζει ποια γνωρίσματα πρέπει να περιληφθούν στην απάντηση της εντολής SELECT Όλα τα γνωρίσματα πρέπει να προέρχονται από την ίδια σχέση, εκτός και αν το

4 CONDITION υποδηλώνει ζεύξη σχέσεων, στην οποία περίπτωση, τα γνωρίσματα μπορούν να ανήκουν σε οποιαδήποτε από τις δύο σχέσεις της ζεύξης Επομένως, αν το ερώτημα δεν περιέχει ζεύξη, τότε όλα τα relnamex είναι ίδια, ενώ στην αντίθετη περίπτωση, καθένα από τα relnamex αντιστοιχεί σε ένα από τα δύο ονόματα των σχέσεων που συμμετέχουν στη ζεύξη Σε ό,τι αφορά το CONDITION, αυτό έχει τη γενική μορφή relnameattr <OP> value, αν το ερώτημα είναι επιλογής, ή τη μορφή relname1attr1 <OP> relname2attr2, αν το ερώτημα είναι ζεύξης, ή τη μορφή relname1attr <OP1> value AND relname1attr1 <OP2> relname2attr2, αν το ερώτημα είναι επιλεκτικής ζεύξης Σε όλες τις περιπτώσεις, οι τελεστές OP,OP1,OP2 μπορούν να είναι '=', '<', '<=', '>', '>=' ή '!=' Στην περίπτωση που το ερώτημα είναι ερώτημα επιλογής, τότε το value είναι μία σταθερή τιμή όπως για παράδειγμα -5, 67, "foo" κλπ Σε αυτήν την περίπτωση, η έννοια της ερώτησης είναι να επιλεχθούν όλες οι εγγραφές που ικανοποιούν τη συνθήκη Αντίστοιχα, αν το ερώτημα είναι τύπου ζεύξης, τότε πρέπει να ανασυρθούν όλες οι εγγραφές και από τις δύο σχέσεις που πληρούν τη συνθήκη της ζεύξης Τέλος, αν το ερώτημα είναι τύπου επιλεκτικής ζεύξης, οι εγγραφές στο αποτέλεσμα πρέπει να ικανοποιούν και τις δύο συνθήκες 2) DELETE relname [WHERE attr <OP> value] Η εντολή αυτή διαγράφει όλες τις εγγραφές της σχέσης με όνομα relname οι οποίες ικανοποιούν το δοθέν κριτήριο Αν η εντολή δεν έχει τμήμα WHERE, τότε όλες οι εγγραφές της σχέσης πρέπει να διαγραφούν 3) INSERT relname (attr1=value1, attr2=value2,, attrn=valuen) Η εντολή αυτή εισάγει μία εγγραφή στη σχέση με όνομα relname Η σειρά με την οποία δίνονται τα γνωρίσματα είναι τυχαία, όμως σε όλα τα γνωρίσματα της σχέσης πρέπει να ανατίθεται τιμή Πληροφορίες υλοποίησης: Μέσα στην παρεχόμενη βιβλιοθήκη, υπάρχει μια συνάρτηση με όνομα yyparse Η ρουτίνα αυτή αναλαμβάνει να χειριστεί την εισαγωγή των εντολών και την κλήση των κατάλληλων συναρτήσεων (τις οποίες θα υλοποιήσετε εσείς) που υλοποιούν τις εντολές αυτές Για παράδειγμα, αν ο χρήστης πληκτρολογήσει την εντολή DESTROY foo τότε η συνάρτηση yyparse αυτόματα θα καλέσει την συνάρτηση UT_destroy() η οποία θα πρέπει να διαγράψει τη σχέση foo Επομένως, η εργασία σας για την υλοποίηση του προγράμματος minirel περιορίζεται στην υλοποίηση αυτών των συναρτήσεων που καλούνται αυτόματα από την yyparse Σε γενικές γραμμές, η συνάρτηση main του minirel θα έχει την εξής μορφή: int main(int argc, char* argv[]){ char command[80]; char* dbname; if(argc!=2){ printf("χρήση: %s minirel \n",argv[0]); return(1); dbname=argv[1]; /* Αρχικοποίηση προγράμματος */ /* και άνοιγμα σχέσεων καταλόγου */

5 /* Κλήση της συνάρτησης yyparse ή οποία */ /* θα καλεί αυτόματα τις συναρτήσεις σας */ yyparse(); /* Κλείσιμο προγράμματος και */ /* κλείσιμο των σχέσεων καταλόγου αν */ /* ο χρήστης δεν πληκτρολόγησε την */ /* εντολή QUIT */ return(0); Συμβολομεταφραστής Μέσα στην παρεχόμενη βιβλιοθήκη, υπάρχει μια συνάρτηση με το όνομα yyparse η οποία δεν δέχεται και δεν επιστρέφει κανένα όρισμα (ορίζεται στο parsertabh): void yyparse(void) Η ρουτίνα αυτή αναλαμβάνει να χειριστεί την εισαγωγή των εντολών στο πρόγραμμα minirel και την κλήση των κατάλληλων συναρτήσεων (τις οποίες θα υλοποιήσετε εσείς) που υλοποιούν της εντολές αυτές Για παράδειγμα, αν ο χρήστης πληκτρολογήσει στο minirel την εντολή DESTROY foo τότε η συνάρτηση yyparse αυτόματα θα καλέσει την συνάρτηση UT_destroy η οποία θα πρέπει να διαγράψει τη σχέση foo Επομένως, η εργασία σας για την υλοποίηση του προγράμματος minirel περιορίζεται στην υλοποίηση αυτών των συναρτήσεων που καλούνται αυτόματα από την yyparse Οι περισσότερες συναρτήσεις που καλεί η yyparse (ορίζονται στην επόμενη ενότητα) δέχονται δύο ορίσματα, το argc και το argv To argv είναι ένας πίνακας με argc+1 στοιχεία Τα στοιχεία αυτά είναι δείκτες σε κείμενο (δηλ char*) Κατά σύμβαση, το πρώτο στοιχείο του argv είναι το όνομα της εντολής που πρέπει να εκτελεσθεί, ενώ το τελευταίο στοιχείο είναι NULL Ο πίνακας argv έχει όλα τα απαιτούμενα στοιχεία που χρειάζεται κάποιος για να καταλάβει τι πρέπει να κάνει η εντολή Η χρήση του πίνακα είναι υποχρεωτική καθώς ο αριθμός των παραμέτρων δεν είναι σταθερός Περιγραφή συναρτήσεων Για την υλοποίηση αυτών των προγραμμάτων θα πρέπει να χρησιμοποιήσετε ένα σύνολο από συναρτήσεις, οι οποίες και θα καλούν τις συναρτήσεις που έχετε ήδη φτιάξει στα κατώτερα επίπεδα για το χειρισμό εγγραφών ενός πίνακα και δευτερευόντων ευρετηρίων πίνακα Οι συναρτήσεις που απαιτούνται σε αυτό το επίπεδο υλοποιούν την ΕΚΤΕΛΕΣΗ των εντολών που υποστηρίζει το minirel Οι βοηθητικές συναρτήσεις δεδομένων υλοποιούν τις εντολές CREATE, BUILDINDEX, DESTROY, και QUIT Οι συναρτήσεις χειρισμού δεδομένων υλοποιούν τις εντολές SELECT, INSERT, και DELETE Οι συναρτήσεις του ενδιάμεσου αυτού επιπέδου δουλεύουν σε επίπεδο εγγραφών και

6 ευρετηρίων, παρέχοντας στον συμβολομεταφραστή ολοκληρωμένες λειτουργίες (πχ, δημιουργία μίας σχέσης) Μία σημαντική λειτουργία που υλοποιείται στο ενδιάμεσο επίπεδο είναι οι υπηρεσίες καταλόγου της βάσης Δεν εμφανίζονται στο παραπάνω σχήμα γιατί δεν παρέχεται αντίστοιχη διεπαφή προγραμματισμού προς το ανώτερο επίπεδο Αντίθετα, οι υπηρεσίες καταλόγου χρησιμοποιούνται εσωτερικά από τις δύο κατηγορίες συναρτήσεων δεδομένων Σε υψηλό επίπεδο, ο συμβολομεταφραστής αναλαμβάνει την μετατροπή των εντολών από απλό κείμενο σε μία εσωτερική δομημένη μορφή και την κλήση των κατάλληλων συναρτήσεων (του ενδιάμεσου επιπέδου) ώστε τελικά να εκτελεστούν οι εντολές που ο χρήστης δίνει στο σύστημα Ο συμβολομεταφραστής έχει και αυτός υλοποιηθεί και θα σας δοθεί Βοηθητικές συναρτήσεις δεδομένων Οι βοηθητικές συναρτήσεις δεδομένων υλοποιούν εντολές όπως η δημιουργία και καταστροφή σχέσεων, η παροχή πληροφοριών για τους καταλόγους της βάσης, κλπ Πρόκειται για συναρτήσεις οι οποίες καλούνται απευθείας από τον συμβολομεταφραστή, ανάλογα με τις εντολές που εισάγει ο χρήστης Ειδικότερα οι βοηθητικές συναρτήσεις δεδομένων είναι οι εξής: UT_create() int UT_create(int argc, char* argv[]) argv[0]="create" argv[1]=όνομα-σχέσης argv[2]=όνομα-πεδίου-1 argv[3]=φορμάτ-πεδίου-1 argv[argc-2]=όνομα-πεδίου-ν argv[argc-1]=φορμάτ-πεδίου-ν Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει μια εντολή CREATE Για τη δημιουργία της νέας σχέσης, η υλοποίησή σας θα πρέπει να χρησιμοποιεί την συνάρτηση HF_CreateFile Επιπλέον θα πρέπει να ενημερώνει τους καταλόγους (σχέσεις relcat και attrcat, κλπ) της βάσης Δηλαδή, θα πρέπει να εισάγει μία εγγραφή στη σχέση relcat, η οποία να περιγράφει τα χαρακτηριστικά της νέας σχέσης Επιπρόσθετα, θα πρέπει να εισάγει στη σχέση attrcat τις αντίστοιχες εγγραφές που θα περιγράφουν ένα-ένα τα γνωρίσματα της νέας σχέσης UT_buildindex() int UT_buildindex(int argc, char* argv[]) argv[0]="buildindex" argv[1]=όνομα-σχέσης argv[2]=όνομα-πεδίου argv[3]=null Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει μια εντολή BUILDINDEX Η υλοποίηση της εντολής αυτής θα πρέπει να δημιουργεί το ευρετήριο χρησιμοποιώντας την συνάρτηση AM_CreateIndex και να ενημερώνει κατάλληλα τους καταλόγους της βάσης

7 UT_destroy() int UT_destroy(int argc, char* argv[]) argv[0]="destroy" argv[1]=όνομα-σχέσης argv[2]=null Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει μια εντολή DESTROY Για την υλοποίηση αυτής της εντολής θα πρέπει να χρησιμοποιήσετε τις συναρτήσεις AM_DestroyIndex και HF_DestroyFile και να ενημερώσετε κατάλληλα τους καταλόγους της βάσης UT_quit() int UT_quit(void) Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει την εντολή QUIT Η συνάρτηση αυτή θα πρέπει να κλείνει όλες τις τυχόν ανοικτές σχέσεις και ευρετήρια (συμπεριλαμβανομένων και αυτών που αποτελούν τους καταλόγους της βάσης) και στην συνέχεια να καλεί την exit(1) Συναρτήσεις χειρισμού δεδομένων Οι Συναρτήσεις χειρισμού δεδομένων υλοποιούν τις εντολές του minirel που κάνουν εισαγωγή, διαγραφή και επιλογή εγγραφών από σχέσεις Πρόκειται για συναρτήσεις οι οποίες καλούνται απευθείας από τον συμβολομεταφραστή, ανάλογα με τις εντολές που εισάγει ο χρήστης Ειδικότερα οι συναρτήσεις χειρισμού δεδομένων είναι οι εξής: DM_select() int DM_select(int argc, char* argv[]) argv[0]="select" argv[1]=όνομα-σχέσης-αποτελέσματος /* Προαιρετικό στοιχείο */ argv[2]=πλήθος-γνωρισμάτων-τα-οποία-προβάλλονται /* ακέραιος */ argv[3]=όνομα-προβαλλόμενης-σχέσης-1 argv[4]=όνομα-προβαλλόμενου-πεδίου-1 argv[argc-6]=όνομα-προβαλλόμενης-σχέσης-ν argv[argc-5]=όνομα-προβαλλόμενου-πεδίου-ν argv[argc-4]=όνομα-σχέσης-επιλογής /* Τα στοιχεία */ argv[argc-3]=όνομα-πεδίου-επιλογής /* αυτά */ argv[argc-2]=τελεστής /* είναι */ argv[argc-1]=τιμή /* προαιρετικά */ Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει μια εντολή SELECT η οποία να μην είναι τύπου ζεύξης Σε ό,τι αφορά την υλοποίηση της εντολής αυτής, παρατηρήστε ότι όταν ζητείται να τυπωθούν τα αποτελέσματα στην οθόνη, μπορείτε να εισάγετε τα αποτελέσματα σε μία προσωρινή σχέση, στην συνέχεια να τυπώσετε τα περιεχόμενα της σχέσης αυτής και τέλος να την καταστρέψετε Επομένως, μπορείτε να χειρισθείτε την περίπτωση που τα αποτελέσματα πρέπει να εισαχθούν σε μία σχέση ως μια ειδίκευση της περίπτωσης που τα αποτελέσματα πρέπει απλά να τυπωθούν Καθώς θα σαρώνετε τις εγγραφές για να επιλέξετε αυτές που ικανοποιούν το κριτήριο της επιλογής (αν

8 βέβαια υπάρχει), θα πρέπει ταυτόχρονα να κάνετε και τον περιορισμό πάνω στα γνωρίσματα που τελικά θα υπάρχουν στην απάντηση της ερώτησης Δεν πρέπει να κάνετε πρώτα την επιλογή των εγγραφών και στην συνέχεια να κάνετε τον περιορισμό πάνω στα γνωρίσματα που υπάρχουν στην εντολή Αν υπάρχει ευρετήριο πάνω στο όνομα-πεδίου-επιλογής τότε θα πρέπει υποχρεωτικά να το χρησιμοποιήσετε εφόσον ο τελεστής υποστηρίζεται από τον τύπο του ευρετηρίου Τέλος, προσοχή θέλει το γεγονός ότι το στοιχείο τιμή (όπως επίσης και το στοιχείο τελεστής) είναι δείκτης σε κείμενο, δηλαδή θα πρέπει εσείς να κάνετε την μετατροπή στον σωστό τύπο DM_join() int DM_join(int argc, char* argv[]) argv[0]="join" argv[1]=όνομα-σχέσης-αποτελέσματος /* Προαιρετικό στοιχείο */ argv[2]=πλήθος-γνωρισμάτων-τα-οποία-προβάλλονται /* ακέραιος */ argv[3]=όνομα-προβαλλόμενης-σχέσης-1 argv[4]=όνομα-προβαλλόμενου-πεδίου-1 argv[argc-7]=όνομα-προβαλλόμενης-σχέσης-ν argv[argc-6]=όνομα-προβαλλόμενου-πεδίου-ν argv[argc-5]=όνομα-σχέσης-ζεύξης-1 argv[argc-4]=όνομα-πεδίου-ζεύξης-1 argv[argc-3]=τελεστής argv[argc-2]=όνομα-σχέσης-ζεύξης-2 argv[argc-1]=όνομα-πεδίου-ζεύξης-2 Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει μια εντολή SELECT η οποία είναι τύπου ζεύξης Για την υλοποίηση της συνάρτησης αυτής ισχύουν οι ίδιες παρατηρήσεις που δίνονται και για την συνάρτηση DM_select Επιπλέον, για τη ζεύξη θα πρέπει να χρησιμοποιηθεί ο αλγόριθμος εμφωλιασμένων βρόχων Αν υπάρχει ευρετήριο σε κάποιο από τα γνωρίσματα ζεύξης θα πρέπει επίσης υποχρεωτικά να χρησιμοποιηθεί εφόσον ο τελεστής υποστηρίζεται από τον τύπο του ευρετηρίου DM_selectivejoin() int DM_selectivejoin(int argc, char* argv[]) argv[0]="selectivejoin" argv[1]=όνομα-σχέσης-αποτελέσματος /* Προαιρετικό στοιχείο */ argv[2]=πλήθος-γνωρισμάτων-τα-οποία-προβάλλονται /* ακέραιος */ argv[3]=όνομα-προβαλλόμενης-σχέσης-1 argv[4]=όνομα-προβαλλόμενου-πεδίου-1 argv[argc-11]=όνομα-προβαλλόμενης-σχέσης-ν argv[argc-10]=όνομα-προβαλλόμενου-πεδίου-ν argv[argc-9]=όνομα-σχέσης-επιλογής argv[argc-8]=όνομα-πεδίου-επιλογής argv[argc-7]=τελεστής επιλογής argv[argc-6]=τιμή argv[argc-5]=όνομα-σχέσης-ζεύξης-1 /* ίδιο με argv[argc-9] */ argv[argc-4]=όνομα-πεδίου-ζεύξης-1 argv[argc-3]=τελεστής ζεύξης

9 argv[argc-2]=όνομα-σχέσης-ζεύξης-2 argv[argc-1]=όνομα-πεδίου-ζεύξης-2 Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει μια εντολή SELECT η οποία είναι τύπου επιλεκτικής ζεύξης Για την υλοποίηση της συνάρτησης αυτής ισχύουν όλες οι παρατηρήσεις που δίνονται και για τις συναρτήσεις DM_select και DM_join (πχ, εμφωλιασμένοι βρόχοι, υποχρεωτική χρήση ευρετηρίων αν υπάρχουν και είναι χρήσιμα, κτλ) Επιπλέον, με βάση μια εκτίμηση κόστους, θα πρέπει να επιλέξει το ποιά σχέση θα είναι εσωτερική και ποιά εξωτερική Αν επιλεγεί η σχέση επιλογής ως εξωτερική, τότε η συνάρτηση θα πρέπει να καλέσει την DM_pipeline για την εκτέλεση της επιλεκτικής ζεύξης Αντίθετα, αν επιλεγεί η άλλη σχέση ως εξωτερική, τότε η συνάρτηση θα πρέπει να καλέσει την DM_select για να δημιουργήσει μια προσωρινή σχέση με το αποτέλεσμα της επιλογής και μετά θα καλέσει την DM_join για την ζεύξη της εξωτερικής σχέσης με την προσωρινή αυτή σχέση DM_pipeline() int DM_pipeline(int argc, char* argv[]) argv[0]="pipeline" argv[1]=όνομα-σχέσης-αποτελέσματος /* Προαιρετικό στοιχείο */ argv[2]=πλήθος-γνωρισμάτων-τα-οποία-προβάλλονται /* ακέραιος */ argv[3]=όνομα-προβαλλόμενης-σχέσης-1 argv[4]=όνομα-προβαλλόμενου-πεδίου-1 argv[argc-11]=όνομα-προβαλλόμενης-σχέσης-ν argv[argc-10]=όνομα-προβαλλόμενου-πεδίου-ν argv[argc-9]=όνομα-σχέσης-επιλογής argv[argc-8]=όνομα-πεδίου-επιλογής argv[argc-7]=τελεστής επιλογής argv[argc-6]=τιμή argv[argc-5]=όνομα-σχέσης-ζεύξης-1 /* ίδιο με argv[argc-9] */ argv[argc-4]=όνομα-πεδίου-ζεύξης-1 argv[argc-3]=τελεστής ζεύξης argv[argc-2]=όνομα-σχέσης-ζεύξης-2 argv[argc-1]=όνομα-πεδίου-ζεύξης-2 Η συνάρτηση αυτή καλείται από την DM_selectivejoin όταν αποφασίζει ότι η σχέση της επιλογής θα χρησιμοποιηθεί ως εξωτερική για τους εμφωλιασμένους βρόχους που θα υλοποιήσουν τη ζεύξη Στην περίπτωση αυτή, η συνάρτηση θα σαρώνει την εξωτερική σχέση, θα εφαρμόζει την επιλογή, και μόνο για τις εγγραφές που την ικανοποιούν θα προχωρά στην σάρωση της εσωτερικής σχέσης και τον έλεγχο της συνθήκης της ζεύξης Επιπλέον, αν δε χρησιμοποιείται ευρετήριο για την εσωτερική σχέση, η εσωτερική σάρωση θα πραγματοποιείται μια φορά για κάθε ομάδα από εγγραφές της εξωτερικής σχέσης που ικανοποιούν την επιλογή και γεμίζουν ένα μπλοκ DM_delete() int DM_delete(int argc, char* argv[]) argv[0]="delete" argv[1]=όνομα-σχέσης argv[argc-3]=όνομα-πεδίου /* Τα στοιχεία */ argv[argc-2]=τελεστής /* αυτά είναι */ argv[argc-1]=τιμή /* προαιρετικά */

10 Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει μια εντολή DELETE Για την υλοποίησή της θα πρέπει να χρησιμοποιήσετε τις συναρτήσεις AM_DeleteEntry και ΗF_DeleteRec Αν υπάρχει ευρετήριο στο γνώρισμα που χρησιμοποιείται για την επιλογή των εγγραφών θα πρέπει υποχρεωτικά να χρησιμοποιηθεί εφόσον ο τελεστής υποστηρίζεται από τον τύπο του ευρετηρίου DM_insert() int DM_insert(int argc, char* argv[]) argv[0]="insert" argv[1]=όνομα-σχέσης argv[2]=όνομα-πεδίου-1 argv[3]=τιμή-1 argv[4]=όνομα-πεδίου-2 argv[5]=τιμή-2 Η συνάρτηση αυτή καλείται από την yyparse όταν ο χρήστης πληκτρολογήσει μια εντολή INSERT Για την υλοποίησή της θα πρέπει να χρησιμοποιήσετε τις συναρτήσεις AM_InsertEntry και ΗF_InsertRec Κατάλογοι Ένα από τα ωραία πράγματα των σχεσιακών συστημάτων βάσεων δεδομένων είναι ότι η εσωτερική πληροφορία που κρατούν για το σχήμα κάθε βάσης (τους πίνακες, τα πεδία τους, τα ευρετήριά τους, κτλ) διατηρείται και αυτή σε πίνακες Οι πίνακες αυτοί ανήκουν στο ίδιο το σύστημα και λέγονται κατάλογοι Υπάρχουν πάντα δύο βασικοί κατάλογοι: relcat και attrcat Και οι δύο αυτοί πίνακες δημιουργούνται όταν η εντολή dbcreate dbname εκτελείται Μπαίνουν στο φάκελο dbname που δημιουργείται, καθότι κάθε βάση έχει το δικό της σχήμα Πρέπει να χρησιμοποιήσετε την HF_CreateFile για να δημιουργήσετε τους δύο πίνακες ώστε να μπορείτε μετά να τους διαχειριστείτε με τις κανονικές ρουτίνες που έχετε φτιάξει για τους υπόλοιπους πίνακες Για παράδειγμα, μπορείτε αν θέλετε να ορίσετε και ευρετήρια πάνω σε κάποια πεδία των καταλόγων ώστε οι πρόσβαση σ' αυτούς να είναι γρήγορη Αυτό σημαίνει ότι το πρόγραμμα C που θα φτιάξετε για την dbcreate πρέπει να μεταφραστεί μαζί με τα επίπεδα HF και AM Ο πίνακας relcat θα χρησιμοποιηθεί για να κρατά στοιχεία για κάθε πίνακα μιας βάσης, συμπεριλαμβανομένων και όποιων στατιστικών κρίνετε ότι χρειάζεστε για την επιλογή πλάνου εκτέλεσης κάποιων τελεστών Κάθε εγγραφή του πίνακα relcat θα πρέπει να έχει περίπου την εξής δομή αν την εκφράζαμε σε μορφή C: typedef struct { char relname[maxname]; /* όνομα πίνακα */ int relwidth; /* εύρος εγγραφής πίνακα σε bytes */ int attrcnt; /* αριθμός πεδίων εγγραφής */ int indexcnt; /* αριθμός ευρετηρίων πίνακα */ int blockcnt; /* αριθμός μπλοκ πίνακα */ reldesc; Ο πίνακας attrcat θα χρησιμοποιηθεί για να κρατά στοιχεία για κάθε πεδίο κάθε πίνακα μιας βάσης, συμπεριλαμβανομένων και πάλι των απαραίτητων απλών στατιστικών Κάθε εγγραφή του πίνακα attrcat θα

11 πρέπει να έχει περίπου την εξής δομή αν την εκφράζαμε σε μορφή C: typedef struct { char relname[maxname]; /* όνομα πίνακα */ char attrname[maxname]; /* όνομα πεδίου του πίνακα */ int offset; /* απόσταση αρχής πεδίου από την αρχή της εγγραφής σε bytes */ int attrlength; /* μήκος πεδίου σε bytes */ char attrtype; /* τύπος πεδίου ('i', 'f', ή 'c' */ int valuecnt; /* αριθμός διαφορετικών τιμών πεδίου */ int indexed; /* TRUE αν το πεδίο έχει ευρετήριο */ int indexno; /* αύξων αριθμός του ευρετηρίου αν indexed=true */ attrdesc; Παρατήρηση: Όταν δημιουργείτε τους καταλόγους, να χρησιμοιήσετε την συνάρτηση sizeof στις παραπάνω δομές για να βρείτε το σωστό μήκος εγγραφής των καταλόγων Ο συμβολομετραφραστής της C προσθέτει μερικές φορές χώρο σε δομές όπως οι παραπάνω για να εγγυηθεί ότι τα δεδομένα θα ξεκινούν από όρια λέξεων στη μνήμη του, οπότε αν δεν χρησιμοποιήσετε την sizeof ίσως προκύψουν προβλήματα Τα παρακάτω παραδείγματα δείχνουν πώς πρέπει να χρησιμοποιούνται οι κατάλογοι Όταν καλείται το minirel για πρώτη φορά, η παρακάτω ακολουθία κλήσεων πρέπει να εκτελείται: #define RELCAT "relcat" #define ATTRCAT "attrcat" relcatfiledesc = HF_OpenFile(RELCAT); if (relcatfiledesc < 0) {printf ("Error in opening relcat Error = %d\n", relcatfiledesc); exit(); attrcatfiledesc = HF_OpenFile(ATTRCAT); if (attrcatfiledesc < 0) {printf ("Error in opening attrcat Error = %d\n", attrcatfiledesc); exit(); Αν όλα πάνε καλά, θα πρέπει να μείνουν αυτά τα αρχεία συνεχώς ανοιχτά όσο το σύστημα είναι ενεργό Βεβαιωθείτε βέβαια ότι όταν υλοιποιείτε την quit, ανάλογα καλείται και η HF_CloseFile σε κάθε ένα από τα δύο παραπάνω αναγνωριστικά πριν κλείσει το σύστημα Η προσπέλαση στους καταλόγους είναι αναπόσπαστο κομμάτι σχεδόν όλων των εντολών Κάθε φορά, θα πρέπει να επιλέγονται οι εγγραφές τους που αντιστοιχούν στα ζητούμενα πεδία και στους ζητούμενους πίνακες και να χρησιμοποιούντα τα στοιχεία τους στις κλήσεις των ρουτινών των διαφόρων επιπέδων του κώδικα Μάλλον θα σας βοηθήσει να γράψετε μια συνάρτηση που να δέχεται ένα όνομα πίνακα και ένα όνομα πεδίου του και επιστρέφει κάποια περιγραφή του πεδίου - κάτι τέτοιο θα χρειαστείτε να το κάνετε πολλές φορές Διαδικαστικές Λεπτομέρειες Όλα τα διαδικαστικά θέματα καθώς και θέματα ελέγχου σφαλμάτων παραμένουν όπως και στα προηγούμενα μέρη της εργασίας Το τί ακριβώς θα παραδόσετε, πού θα βρείτε τα αρχεία με τα οποία θα ελέγξετε τελικά το πρόγραμμά σας, κτλ, θα ανακοινωθεί πολύ σύντομα Τα προγράμματά σας θα πρέπει να δουλεύουν στα μηχανήματα του τμήματος (είτε στα sun (Unix) είτε στα pc (Windows)) ώστε να μπορούν να ελεγχθούν Ακόμη και αν δουλέψετε σε δικούς σας υπολογιστές θα πρέπει να βεβαιωθείτε ότι το τελικό αποτέλεσμα δουλεύει και εδώ τοπικά Η έκδοση της C που θα

12 χρησιμοποιήσετε πρέπει να έχει ακέραιους των 4 bytes και να επιτρέπει αλλαγή ερμηνείας τύπου δεδομένων (type casting) Όλα τα μέρη της εργασίας αυτής θα υλοποιηθούν από ομάδες των δύο ή τριών φοιτητών, οι οποίες εκτός σοβαρών περιπτώσεων πρέπει να είναι οι ίδιες που παρέδωσαν και τα δύο πρώτα μέρη της εργασίας Αν έχει υπάρξει η αλλαγή, ενημερώστε τον κo Πανταζάρα

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων (Ημερομηνία Παράδοσης: Δευτέρα 5/5/2008, 11:59μμ Εισαγωγή Στο

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

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init() Πληροφορική & Τηλεπικοινωνίες K18 Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2008 Αν. Καθηγητής Δημήτρης Γουνόπουλος Καθηγητής Γιάννης Ιωαννίδης 'Ασκηση 1: Στατικός Κατακερματισμός (Ημερομηνία

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

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2010 2011 Δ. Γουνόπουλος Ι. Ιωαννίδης Άσκηση 2: Υλοποίηση Ευρετηρίου Β+ Δένδρου Προθεσμία: 6 Ιουνίου 2011, 11:59μμ

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

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Επίπεδο Αρχείου Εγγραφών

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Επίπεδο Αρχείου Εγγραφών Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης Επίπεδο Αρχείου Εγγραφών Εισαγωγή Το επίπεδο Αρχείου Εγγραφών δίνει ρουτίνες για τη διαχείριση αδόμητων

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

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

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

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

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 1 - Προθεσμία: 9 Δεκ. 2016 Σκοπός της εργασίας αυτής είναι η κατανόηση

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

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

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2018 2019 Καθηγητής Δ. Γουνόπουλος Άσκηση 1/2 - Προθεσμία: 18 Ιαν. 2019 Σκοπός της εργασίας αυτής είναι η κατανόηση

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

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2010 2011 Δ. Γουνόπουλος Ι. Ιωαννίδης Άσκηση 1: Συγχώνευση Εγγραφών Δυαδικών Αρχείων Προθεσμία: 2 Μαΐου 2011, 5:00μμ

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2015 2016 Ι. Ιωαννίδης Άσκηση 3: Αποθήκευση κατά στήλες Προθεσμία: 25 Ιανουαρίου 2016, 11:59μμ Ο σκοπός της εργασίας

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

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

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 - Εξωτερική Ταξινόμηση Παράδοση: 20/01/2017 Σκοπός της εργασίας αυτής

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

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2011 2012 Καθηγητές Μ. Χατζόπουλος, Δ. Γουνόπουλος Άσκηση 1 Παράδοση 4 Μαϊου Σκοπός της εργασίας αυτής είναι η κατανόηση

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Επίπεδο Αρχείου Μπλοκ

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Επίπεδο Αρχείου Μπλοκ Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης Μέρος 1 ο: Επίπεδο Αρχείου Μπλοκ ( Ημερομηνία Παράδοσης: Δευτέρα 31/3/2008, 11:59 μμ Εισαγωγή Το επίπεδο

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2013 2014 M. Χατζόπουλος Προθεσμία: 19/01/2015 Σκοπός της εργασίας είναι η κατανόηση της εσωτερικής λειτουργίας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 18η: Διαχείρηση Αρχείων

Διάλεξη 18η: Διαχείρηση Αρχείων Διάλεξη 18η: Διαχείρηση Αρχείων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Αρχεία CS100, 2015-2016 1 / 24 Η βιβλιοθήκη Εισόδου/Εξόδου Στο stdioh

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Επεξεργασία Ερωτήσεων Αρχεία ευρετηρίου Κατάλογος συστήματος Αρχεία δεδομένων ΒΑΣΗ Ε ΟΜΕΝΩΝ Σύστημα Βάσεων εδομένων (ΣΒ ) Βάσεις Δεδομένων 2007-2008

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων Σ Β Βάση εδομένων Η ομή ενός ΣΒ Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 1 Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 2 Εισαγωγή Εισαγωγή ΜΕΡΟΣ 1 (Χρήση Σ Β ) Γενική

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμό για ΗΜΥ

Προγραμματισμό για ΗΜΥ ΕΠΛ 34: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 12 Πίνακες εικτών (Pointers Arrays) Θέματα ιάλεξης Στην ενότητα

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

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15) (Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την Δευτερεύουσα Μνήμη 14-2 Επανάληψη

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

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

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

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

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

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

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

είκτες και Πίνακες (2)

είκτες και Πίνακες (2) είκτες και Πίνακες (2) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πολυδιάστατοι πίνακες Πέρασµα παραµέτρων σε προγράµµατα C ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1-1 Πίνακες εικτών Πίνακας δεικτών είναι

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήματος 1. Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασμός) 2. Προγραμματισμός (Σχεσιακή Άλγεβρα, SQL) ημιουργία/κατασκευή Εισαγωγή εδομένων

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

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

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

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

Εργαστήριο 9: Αρχεία

Εργαστήριο 9: Αρχεία Εργαστήριο 9: Αρχεία Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αρχεία, Είσοδος/Έξοδος από/προς αρχεία - Δυαδικά αρχεία - Παραδείγματα ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη

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

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

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

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

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Αρχεία ευρετηρίου Κατάλογος ΒΑΣΗ Ε ΟΜΕΝΩΝ Αρχεία δεδομένων συστήματος Σύστημα Βάσεων εδομένων (ΣΒ ) 2 :

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

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

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

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

Επεξεργασία Αρχείων Κειµένου

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

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

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

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1 Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών

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

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

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

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

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

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

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα 2 Βήματα Επεξεργασίας Τα βασικά βήματα στην επεξεργασία

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

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

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

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

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

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

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

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

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

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

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

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

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

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

Μεταβλητές τύπου χαρακτήρα

Μεταβλητές τύπου χαρακτήρα Μεταβλητές τύπου χαρακτήρα 31 Μαρτίου 014 1 Μεταβλητές τύπου char Για χειρισμό χαρακτήρων η C διαθέτει τον τύπο char. Ο τύπος είναι βαθμωτός δηλαδή ακέραιης αναπαράστασης. Τυπικά έχει μέγεθος ενός byte

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες

Πληροφορική & Τηλεπικοινωνίες Πληροφορική & Τηλεπικοινωνίες K18 Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2012 2013 Καθηγητές. Γουνόπουλος, I. Iωαννίδης Άσκηση 2 Παράδοση: 31/5 Ο σκοπός της εργασίας αυτής είναι η κατανόηση

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

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

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

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα Βάσεις

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

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

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Δείκτες Δείκτες Υπάρχουν περιπτώσεις που δεν ενδιαφέρει το περιεχόμενο αλλά η μιας μεταβλητής. Χρειάζεται κατάλληλος μηχανισμός αναφοράς και επεξεργασίας τιμών που

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

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

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

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

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

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

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

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

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

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

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Η C, όπως έχουμε αναφέρει, είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε για πρώτη φορά το 1972 από τον Dennis Ritchie στα AT&T Bell

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

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

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δομές Δεδομένων και Κυρίως Πρόγραμμα Δομές δεδομένων εκτός από πίνακες: Structs Unions Enums Κυρίως πρόγραμμα Παράμετροι που

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

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 Οριακό

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

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