11.5 Ολοκληρωμένο παράδειγμα Μισθοδοσία

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

Download "11.5 Ολοκληρωμένο παράδειγμα Μισθοδοσία"

Transcript

1 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 273 που μας ανταμοίβουν υποπολλαπλασιάζοντας την απαιτούμενη υπολογιστική ισχύ. Αυτό πάντα δεν ισχύει, για παράδειγμα οι αλγόριθμοι διαγραφής εγγραφών και ενημέρωσης εγγραφών της ενότητας 2 του παρόντος κεφαλαίου είναι ευφυείς και δυσκολότεροι στη σύλληψη και υλοποίηση σε σχέση με τους απλοϊκότερους αλγορίθμους της ενότητας 4 του κεφαλαίου 10 αλλά μειώνουν ελάχιστα την υπολογιστική πολυπλοκότητα Ολοκληρωμένο παράδειγμα Μισθοδοσία Στη συνέχεια θα παρουσιάσουμε ένα πακέτο (σύνολο) προγραμμάτων που θα μπορούσαν να χρησιμοποιηθούν από το τμήμα διαχείρισης ανθρώπινου δυναμικού (Human Resources Management HRM) και το λογιστήριο μιας επιχείρησης, για την έκδοση καταστάσεων μισθοδοσίας. Το πακέτο προγραμμάτων (ή σύστημα λογισμικού ή σύστημα) βασίζεται σε ταξινομημένα σειριακά αρχεία και αξιοποιεί τους αλγορίθμους που αναπτύξαμε, κυρίως, στις προηγούμενες ενότητες. Για την έκδοση καταστάσεων μισθοδοσίας ένα σύστημα λογισμικού θα πρέπει να γνωρίζει τα στοιχεία του προσωπικού, δηλαδή τα σχετικά σταθερά στοιχεία των υπαλλήλων της επιχείρησης (σε αυτά περιλαμβάνεται και ο βασικός μισθός), και τα μεταβλητά στοιχεία που αφορούν κυρίως τις ώρες υπερωριακής απασχόλησης κατά τη διάρκεια της μισθολογικής περιόδου. Αυτά τα στοιχεία, στο σύστημα λογισμικού που παρουσιάζουμε, βρίσκονται αποθηκευμένα σε δύο ταξινομημένα σειριακά αρχεία. Η δομές εγγραφών των αρχείων αυτών ορίζονται στο επόμενο πηγαίο (έστω types.h) αρχείο: /* ******************************************************* * Author: Nikitas N. Karanikolas, Assistant Professor * * Creation Date: February 21, 2009 * ******************************************************* */ #define keysize 7 #define fnamesize 20 #define snamesize 25 #define specialitysize 30 typedef struct { char key[keysize]; char fname[fnamesize];

2 274 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C char sname[snamesize]; char speciality[specialitysize]; int year_of_birth; int year_of_employment; float salary; personnel_rec; typedef struct { char key[keysize]; int overtime_hours; int saturday_hours; int sunday_hours; overtime_rec; Στα στοιχεία του ανθρώπινου δυναμικού, για κάθε υπάλληλο (personnel_rec), έχουμε το κλειδί (key το οποίο θα εξηγήσουμε παρακάτω), το όνομα (fname), το επώνυμο (sname), την ειδικότητα (speciality), το έτος γέννησης (year_of_birth), το έτος πρόσληψης (year_of_employment) και το βασικό μισθό (salary). Σαφέστατα θα μπορούσαμε να έχουμε ενσωματώσει πολύ περισσότερα στοιχεία στο personnel_rec, όπως για παράδειγμα σπουδές, αριθμός τέκνων, κλπ, αλλά αυτά δεν θα προσέθεταν τίποτα περισσότερο στην κατανόηση του προβλήματος και στην προσέγγιση της λύσης. Ο επόμενος πίνακας αποτελεί παράδειγμα οπτικοποίησης του αρχείου προσωπικού: key fname sname speciality year_of year_of salary _birth _employment ΓΒ7501 Γεώργιος Βασιλείου Χειριστής ΔΠ6699 Δημήτρης Παππάς Προγραμματιστής Στα στοιχεία της απασχόλησης, για κάθε υπάλληλο πέραν της βασικής, κατά τη διάρκεια της μισθολογικής περιόδου (overtime_rec), έχουμε το κλειδί (key), τις συνολικές ώρες που απασχολήθηκε υπερωριακά σε εργάσιμες ημέρες (overtime_hours), τις συνολικές ώρες που απασχολήθηκε τις ημέρες του Σαββάτου (saturday_hours) και τις συνολικές ώρες που απασχολήθηκε τις ημέρες της Κυριακής (sunday_hours). Ο επόμενος πίνακας αποτελεί παράδειγμα οπτικοποίησης του αρχείου υπερωριακής απασχόλησης:

3 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 275 key overtime_hours saturday_hours sunday_hours ΓΒ ΔΠ Το κλειδί (key), που έχουμε χρησιμοποιήσει σε αμφότερες τις εγγραφές, είναι ένα τεχνητό κατασκεύασμα που χρησιμοποιούμε τόσο για την ταξινόμηση (διάταξη) των εγγραφών των αρχείων όσο και σαν ταυτότητα που α- ντιπροσωπεύει μοναδικά κάθε υπάλληλο. Το κλειδί δημιουργείται από τον πρώτο χαρακτήρα του επωνύμου, τον πρώτο χαρακτήρα του ονόματος, τα δύο τελευταία ψηφία του έτους γέννησης και τα δύο τελευταία ψηφία του έτους πρόσληψης. Οπως αναφέραμε και πριν, σκοπός του κλειδιού είναι να ταυτοποιεί μοναδικά κάθε υπάλληλο. Θεωρούμε ότι ο τρόπος δημιουργίας του εξασφαλίζει ότι δεν θα υπάρχουν δύο υπάλληλοι με το ίδιο κλειδί, τουλάχιστο στο εύρος των υπαλλήλων μιας εταιρείας. Η κύρια ιδέα στην οποία στηρίζεται το σύστημα λογισμικού που παρουσιάζουμε είναι ο συνδυασμός έξι προγραμμάτων τόσο για τη συντήρηση του αρχείου ανθρώπινου δυναμικού (προσωπικού), όσο και για την περιοδική (ανά μισθολογική περίοδο) έκδοση των καταστάσεων μισθοδοσίας. Τα προγράμματα αυτά και ο σκοπός τους ακολουθούν: Σκοπός προγράμματος CREATE: για τη δημιουργία του βασικού αρχείου προσωπικού (τα σχετικά σταθερά στοιχεία των υπαλλήλων), και για τη δημιουργία του αρχείου των επιπλέων (νέων) υπαλλήλων (τα σχετικά σταθερά στοιχεία των νέων υπαλλήλων). Σκοπός προγράμματος SORT: για τη διάταξη (ταξινόμηση) του βασικού αρχείου προσωπικού με βάση την τιμή του πεδίου key, και για τη διάταξη (ταξινόμηση) του αρχείου νέων υπαλλήλων με βάση την τιμή του πεδίου key.

4 276 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C Σκοπός προγράμματος MERGE: για τη συγχώνευση του βασικού αρχείου προσωπικού και του αρχείου νέων υπαλλήλων σε ένα νέο βασικό αρχείο προσωπικού, που διατηρεί τη διάταξη (ταξινόμηση) με βάση την τιμή του πεδίου key. Σκοπός προγράμματος TRNCREAT: για τη δημιουργία των εγγραφών συναλλαγών (transactions) που περιέχουν τα μεταβλητά στοιχεία (ώρες υπερωριακής απασχόλησης κατά τη διάρκεια της μισθολογικής περιόδου), για όσους υπάλληλους εργάσθηκαν επιπλέον της βασικής (υποχρεωτικής) τους απασχόλησης. Σκοπός προγράμματος TRNSORT: για τη διάταξη (ταξινόμηση) του αρχείου συναλλαγών (transactions). Σκοπός προγράμματος PAYROLL: για την έκδοση μισθολογικών καταστάσεων με βάση το (ενημερωμένο) βασικό αρχείο προσωπικού και το αρχείο συναλλαγών. Επίσης, στο σχεδιασμό των προγραμμάτων, ελήφθηκε η απόφαση τα ονόματα των αρχείων, στα οποία επενεργούν ή παραγάγουν, να προσδιορίζονται ως παράμετροι των εκτελέσιμων προγραμμάτων (command line parameters) και να μην είναι κωδικοποιημένα στα πηγαία προγράμματα. Το θέμα αυτό (παράμετροι των εκτελέσιμων προγραμμάτων) αναπτύσεται ξεχωριστά στο κεφάλαιο 15 (Επικοινωνία με το λειτουργικό σύστημα). Με βάση το σκοπό των προγραμμάτων και την τελευταία παρατήρηση μπορούμε να παρουσιάσουμε το σενάριο εκτέλεσης των προγραμμάτων για τη δημιουργία και συντήρηση του αρχείου προσωπικού: 1. CREATE MASTER.DAT 2. SORT MASTER.DAT 3. CREATE NEWEMPL.DAT 4. SORT NEWEMPL.DAT 5. MERGE MASTER.DAT NEWEMPL.DAT MASTER2.DAT

5 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 277 και την έκδοση της μισθολογικής κατάστασης μιας περιόδου: 6. TRNCREAT TRANSACT.DAT 7. TRNSORT TRANSACT.DAT 8. PAYROLL MASTER2.DAT TRANSACT.DAT >PAYROLL.LST Τα προγράμματα CREATE, SORT, TRNCREAT και TRNSORT δέχονται μία παράμμετρο (command line parameter) και δεν απαιτείται άλλη ερμηνεία. Για τα άλλα δύο προγράμματα διευκρινίζουμε ότι: το πρόγραμμα MERGE δέχεται τρεις παραμέτρους, με την πρώτη προσδιορίζεται το όνομα του αρχείου που περιέχει τα προϋπάρχοντα ταξινομημένα δεδομένα, με τη δεύτερη προσδιορίζεται το όνομα του αρχείου που περιέχει τα νέα (επίσης ταξινομημένα) δεδομένα και με την τρίτη παράμετρο προσδιορίζεται ποιο θα είναι το όνομα του νέου αρχείου στο οποίο θα αποθηκευτούν τα συγχωνευμένα δεδομένα. Το πρόγραμμα PAYROLL δέχεται δύο παραμέτρους, με την πρώτη προσδιορίζεται το όνομα του αρχείου με τα στοιχεία προσωπικού και με την δεύτερη παράμετρο προσδιορίζεται το όνομα του αρχείου που περιέχει τις συναλλαγές (υπερωρίες υπαλλήλων). Η έξοδος του PAYROLL είναι το τερματικό και απαιτείται ανακατεύθυνση εξόδου αν θέλουμε να αποθηκεύσουμε την έξοδο σε αρχείο αποτελεσμάτων (όπως το PAYROLL.LST στην εντολή 8). Η λογική που διέπει τα προγράμματα CREATE, SORT, TRNCREAT και TRNSORT έχει αναπτυχθεί στα προηγούμενα κεφάλαια και δεν θα μας α- πασχολήσει ιδιαίτερα. Η λογική του προγράμματος MERGE αναπτύχθηκε στη προηγούμενη ενότητα και παρουσιάσθηκαν δύο εκδόσεις του σχετικού αλγορίθμου (όταν η γλώσσα υλοποίησης υποστηρίζει την πρόβλεψη του τέλους αρχείου και όταν δεν την υποστηρίζει). Η λογική του PAYROLL, όπως θα δούμε, είναι παρόμοια με τη λογική του MERGE. Στη συνέχεια θα παραθέσουμε τα έξι πηγαία προγράμματα και θα σχολιάσουμε ότι επιπλέον απαιτείται για καθένα από τα πηγαία. Επίσης θα εντοπίσουμε κάποιες αδυναμίες που έχει η παρούσα υλοποίηση. Πηγαίο πρόγραμμα CREATE.C: /* ******************************************************* * Author: Nikitas N. Karanikolas, Assistant Professor * * Creation Date: February 21, 2009 * ******************************************************* */

6 278 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C #include <stdio.h> #include "types.h" #include "commonf.c" main (int argc, char *argv[]) { personnel_rec e1; char tmp_str[snamesize]; int i, k, howmany; FILE *fp; if (argc<2) { printf("you should provide the name of the file " "to be created."); exit(1); fp=fopen(argv[1],"wb"); if (fp==null) { printf("can not open [%s] for writing data.", argv[1]); exit(2); do { blank(&e1,sizeof(personnel_rec)); printf("\ngive surname: "); gets(e1.sname); printf("[%s]\n",e1.sname); strcpy(tmp_str,e1.sname); upper(tmp_str); if (strcmp(tmp_str,"quit")==0) break; printf("\ngive first name: "); gets(e1.fname); printf("[%s]\n",e1.fname); printf("\ngive the speciality: "); gets(e1.speciality); printf("[%s]\n",e1.speciality); printf("\ngive \"year of birth\", \"year of " "employment\", \"salary\": "); scanf("%d %d %f", &e1.year_of_birth, &e1.year_of_employment, &e1.salary); gets(tmp_str); /* garbage collection */ /* create a unique key for the employee */ sprintf(e1.key, "%c%c%2d%2d", e1.sname[0], e1.fname[0], e1.year_of_birth % 100, e1.year_of_employment %100); /* convert "xy 5 9" to "xy05 9" */

7 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 279 if (e1.key[2]==' ') e1.key[2]='0'; /* convert "xy05 9" to "xy0509" */ if (e1.key[4]==' ') e1.key[4]='0'; /* convert "xy0509" to "XY0509" */ upper(e1.key); printf("the new employee is assigned the key " "[%s]\n",e1.key); howmany=fwrite(&e1,sizeof(personnel_rec),1,fp); /* printf("\nhowmany=%d\n", howmany); */ while (1); fclose(fp); Το πρόγραμμα αυτό ακολουθεί τη δομή του προγράμματος create.c του κεφαλαίου 10, τη δομή του προγράμματος cr_cat2.c του κεφαλαίου 9 και τη δομή του προγράμματος cr_cat.c του κεφαλαίου 8. Η πρώτη (ουσιαστική) διαφορά που παρουσιάζει βασίζεται στην επόμενη εντολή: fp=fopen(argv[1],"wb"); Η εντολή αυτή δεν ανοίγει ένα αρχείο του οποίου το όνομα είναι κωδικοποιημένο στο πηγαίο πρόγραμμα αλλά ένα αρχείο που δίδεται ως πρώτη παράμετρος (μετά το όνομα του εκτελέσιμου προγράμματος) στην εντολή που υποβάλει ο χρήστης από το λειτουργικό σύστημα (αναλυτικές πληροφορίες για τις παραμέτρους προγραμμάτων υπάρχουν στο κεφάλαιο 15). Η δεύτερη (ουσιαστική) διαφορά που παρουσιάζει, το προηγούμενο πηγαίο πρόγραμμα, βασίζεται στην επόμενη ακολουθία εντολών που κατασκευάζουν ένα πεδίο με βάση τις τιμές άλλων πεδίων: sprintf(e1.key, "%c%c%2d%2d", e1.sname[0], e1.fname[0], e1.year_of_birth % 100, e1.year_of_employment %100); /* convert "xy 5 9" to "xy05 9" */ if (e1.key[2]==' ') e1.key[2]='0'; /* convert "xy05 9" to "xy0509" */ if (e1.key[4]==' ') e1.key[4]='0'; Η εντολή sprintf έχει παρόμοια σύνταξη με την fprintf, διαφοροποιείται μόνο ως προς το πρώτο της όρισμα, και η επικεφαλίδα της είναι: int sprintf (char *buffer, char *format, argument1, argument2, );

8 280 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C Λειτουργεί με τον ίδιο ακριβώς τρόπο που λειτουργεί και η printf με τη διαφορά ότι, αντί να γράφει στο standard output, η έξοδός της καταγράφεται στο πρώτο όρισμα της (στο αλφαριθμητικό buffer). Πηγαίο πρόγραμμα SORT.C: /* ******************************************************* * Author: Nikitas N. Karanikolas, Assistant Professor * * Creation Date: February 21, 2009 * ******************************************************* */ #include <stdio.h> #include "types.h" int partial_sort(file *fp1, FILE *fp2) { personnel_rec e1, e2; int howmany; int sorted=1; /* sorted <- true */ howmany=fread(&e1,sizeof(personnel_rec),1,fp1); if (howmany<1) return sorted; do { howmany=fread(&e2,sizeof(personnel_rec),1,fp1); if (howmany<1) { fwrite(&e1,sizeof(personnel_rec),1,fp2); break; if (strcmp(e1.key,e2.key)<=0) { fwrite(&e1,sizeof(personnel_rec),1,fp2); memcpy(&e1,&e2,sizeof(personnel_rec)); else { fwrite(&e2,sizeof(personnel_rec),1,fp2); sorted=0; /* sorted <- false */ while (1); return sorted; main (int argc, char *argv[]) { int i=0; int sorted; FILE *fp1, *fp2;

9 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 281 if (argc<2) { printf("you should provide the name of the file " "to be created."); exit(1); do { if (i % 2 == 0) { fp1=fopen(argv[1],"rb"); fp2=fopen("tmp$$.tmp","wb"); else { fp1=fopen("tmp$$.tmp","rb"); fp2=fopen(argv[1],"wb"); sorted=partial_sort(fp1,fp2); fclose(fp1); fclose(fp2); i++; while (!sorted); printf("\nnumber of file traverses: %d\n", i); if (i % 2 == 1) { /* delete the original file */ unlink(argv[1]); /* rename the temporary file to the original */ rename("tmp$$.tmp",argv[1]); else { /* delete temporary file */ unlink("tmp$$.tmp"); Το πρόγραμμα αυτό ακολουθεί τη δομή του προγράμματος sort.c του κεφαλαίου 10. Η πρώτη (ουσιαστική) διαφορά που παρουσιάζει βασίζεται στις επόμενες δύο εντολές: fp1=fopen(argv[1],"rb"); fp2=fopen(argv[1],"wb");

10 282 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C Οι εντολές αυτες δεν ανοίγουν ένα αρχείο του οποίου το όνομα είναι κωδικοποιημένο στο πηγαίο πρόγραμμα αλλά ένα αρχείο που δίδεται ως πρώτη παράμετρος (μετά το όνομα του εκτελέσιμου προγράμματος) στην εντολή που υποβάλει ο χρήστης από το λειτουργικό σύστημα. Η δεύτερη διαφορά είναι στις επόμενες δύο εντολές του προγράμματός μας. Αυτές διαγράφουν και μετονομάζουν, αντίστοιχα, ένα αρχείο το όνομα του οποίου (όνομα διαγραφόμενου και νέο όνομα μετονομαζόμενου αρχείου) δεν είναι κωδικοποιημένο στο πηγαίο πρόγραμμα, αλλά δίδεται ως πρώτη παράμετρος (μετά το όνομα του εκτελέσιμου προγράμματος) στην εντολή που υποβάλει ο χρήστης από το λειτουργικό σύστημα: unlink(argv[1]); rename("tmp$$.tmp",argv[1]); Πηγαίο πρόγραμμα TRNCREAT.C: /* ******************************************************* * Author: Nikitas N. Karanikolas, Assistant Professor * * Creation Date: February 21, 2009 * ******************************************************* */ #include <stdio.h> #include "types.h" #include "commonf.c" main (int argc, char *argv[]) { overtime_rec ot1; char tmp_str[keysize]; int i, k, howmany; FILE *fp; if (argc<2) { printf("you should provide the name of the file " "to be created."); exit(1); fp=fopen(argv[1],"wb"); if (fp==null) { printf("can not open [%s] for writing data.", argv[1]); exit(2);

11 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 283 do { blank(&ot1,sizeof(overtime_rec)); printf("\ngive key: "); gets(ot1.key); printf("[%s]\n",ot1.key); strcpy(tmp_str,ot1.key); upper(tmp_str); if (strcmp(tmp_str,"quit")==0) break; printf("\ngive \"overtime hours\", \"saturday " "hours\", \"sunday hours\": "); scanf("%d %d %d", &ot1.overtime_hours, &ot1.saturday_hours, &ot1.sunday_hours); gets(tmp_str); /* garbage collection */ howmany=fwrite(&ot1,sizeof(overtime_rec),1,fp); /* printf("\nhowmany=%d\n", howmany); */ while (1); fclose(fp); Το πρόγραμμα αυτό ακολουθεί τη δομή του προγράμματος create.c του κεφαλαίου 10, τη δομή του προγράμματος cr_cat2.c του κεφαλαίου 9 και τη δομή του προγράμματος cr_cat.c του κεφαλαίου 8. Η μοναδική (ουσιαστική) διαφορά που παρουσιάζει, σε σχέση με τα προγράμματα των προηγούμενων κεφαλαίων, είναι ότι βασίζεται στην παραμετρική υποβολή του ονόματος του αρχείου που θα δημιουργηθεί (από την εντολή που υποβάλλει ο χρήστης από το λειτουργικό σύστημα). Πηγαίο πρόγραμμα TRNSORT.C: /* ******************************************************* * Author: Nikitas N. Karanikolas, Assistant Professor * * Creation Date: February 21, 2009 * ******************************************************* */ #include <stdio.h> #include "types.h" int partial_sort(file *fp1, FILE *fp2) { overtime_rec ot1, ot2; int howmany; int sorted=1; /* sorted <- true */ howmany=fread(&ot1,sizeof(overtime_rec),1,fp1);

12 284 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C if (howmany<1) return sorted; do { howmany=fread(&ot2,sizeof(overtime_rec),1,fp1); if (howmany<1) { fwrite(&ot1,sizeof(overtime_rec),1,fp2); break; if (strcmp(ot1.key,ot2.key)<=0) { fwrite(&ot1,sizeof(overtime_rec),1,fp2); memcpy(&ot1,&ot2,sizeof(overtime_rec)); else { fwrite(&ot2,sizeof(overtime_rec),1,fp2); sorted=0; /* sorted <- false */ while (1); return sorted; main (int argc, char *argv[]) { int i=0; int sorted; FILE *fp1, *fp2; if (argc<2) { printf("you should provide the name of the file " "to be created."); exit(1); do { if (i % 2 == 0) { fp1=fopen(argv[1],"rb"); fp2=fopen("tmp$$$.tmp","wb"); else { fp1=fopen("tmp$$$.tmp","rb"); fp2=fopen(argv[1],"wb"); sorted=partial_sort(fp1,fp2); fclose(fp1); fclose(fp2); i++; while (!sorted); printf("\nnumber of file traverses: %d\n", i);

13 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 285 if (i % 2 == 1) { /* delete the original file */ unlink(argv[1]); /* rename the temporary file to the original */ rename("tmp$$$.tmp",argv[1]); else { /* delete temporary file */ unlink("tmp$$$.tmp"); Το πρόγραμμα αυτό λειτουργεί με τον ίδιο ακριβώς τρόπο που λειτουργεί και το sort.c που παρουσιάσαμε λίγο παραπάνω. Στο μόνο που διαφέρουν τα δύο προγράμματα είναι ότι το παρόν πρόγραμμα ταξινομεί δεδομένα τύπου overtime_rec αντί για δεδομένα personnel_rec που ταξινομούσε το sort.c πρόγραμμα. Πηγαίο πρόγραμμα MERGE.C: /* ******************************************************* * Author: Nikitas N. Karanikolas, Assistant Professor * * Creation Date: February 21, 2009 * ******************************************************* */ #include <stdio.h> #include "types.h" main (int argc, char *argv[]) { personnel_rec e1, e2; int eof1, eof2; FILE *fp1, *fp2, *fp3; if (argc<4) { printf("you should provide:\n1. the name of " "the existing master file"); printf("\n2. the name of the file with the " "new records\n3. the new master file."); exit(1); fp1=fopen(argv[1],"rb"); if (fp1==null) { printf("can not open [%s] for reading.\n",argv[1]); exit(2);

14 286 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C fp2=fopen(argv[2],"rb"); if (fp2==null) { printf("can not open [%s] for reading.\n",argv[2]); fclose(fp1); exit(3); fp3=fopen(argv[3],"wb"); if (fp3==null) { printf("can not open [%s] for writing.\n",argv[3]); fclose(fp1); fclose(fp2); exit(4); eof1=fread(&e1,sizeof(personnel_rec),1,fp1)<1; eof2=fread(&e2,sizeof(personnel_rec),1,fp2)<1; while ((!eof1) && (!eof2)) if (strcmp(e1.key, e2.key)<0) { fwrite(&e1,sizeof(personnel_rec),1,fp3); eof1=fread(&e1,sizeof(personnel_rec),1,fp1)<1; else if (strcmp(e1.key, e2.key)>0) { fwrite(&e2,sizeof(personnel_rec),1,fp3); eof2=fread(&e2,sizeof(personnel_rec),1,fp2)<1; else /* strcmp(e1.key, e2.key)==0 */ { /* abnormal case, in case that the new master file should have unique keys */ printf("already exist a record with key [%s] in " "the existing master file [%s]. ", e2.key, argv[1]); printf("the record of the file with the new " "records [%s] is discarded.\n", argv[2]); eof2=fread(&e2,sizeof(personnel_rec),1,fp2)<1; while (!eof1) { fwrite(&e1,sizeof(personnel_rec),1,fp3); eof1=fread(&e1,sizeof(personnel_rec),1,fp1)<1; while (!eof2) { fwrite(&e2,sizeof(personnel_rec),1,fp3); eof2=fread(&e2,sizeof(personnel_rec),1,fp2)<1; fclose(fp1);

15 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 287 fclose(fp2); fclose(fp3); Το πρόγραμμα merge.c ακολουθεί σχεδόν πιστά τον αλγόριθμο που παρουσιάσαμε στο τέλος της προηγούμενης ενότητας. Δεν χρησιμοποιεί τη συνάρτηση feof αλλά επιτυγχάνει το ίδιο αποτέλεσμα εξετάζοντας την τιμή που επιστρέφει η συνάρτηση fread (και σε αυτή την περίπτωση έχουμε καθυστερημένη διαπίστωση του τέλους αρχείου). Η σημαντικότερη όμως διαφορά σε σχέση με τον αλγόριθμο, κατά την παράλληλη σάρωση των δύο αρχείων, εμφανίζεται όταν οι δύο εγγραφές έχουν το ίδιο κλειδί. Στην περίπτωση αυτή αγνοούμε την εγγραφή του δεύτερου αρχείου (νέες εγγραφές) καθώς δεν επιτρέπουμε να υπάρχουν δύο υπάλληλοι με το ίδιο κλειδί. Πηγαίο πρόγραμμα PAYROLL.C: /* ******************************************************* * Author: Nikitas N. Karanikolas, Assistant Professor * * Creation Date: February 21, 2009 * ******************************************************* */ #include <stdio.h> #include "types.h" #define overtime_multiplyer 1.50 #define saturday_multiplyer 1.75 #define sunday_multiplyer 2.00 void employee_payroll(personnel_rec emp, int overtime_hours, int saturday_hours, int sunday_hours) { int i; char tmp_str[snamesize+1]; float total = emp.salary + emp.salary/175*overtime_hours*overtime_multiplyer + emp.salary/175*saturday_hours*saturday_multiplyer + emp.salary/175*sunday_hours*sunday_multiplyer; printf("%s ",emp.key); strcpy(tmp_str, emp.sname); for (i=strlen(emp.sname); i<snamesize; i++) tmp_str[i]=' '; tmp_str[snamesize]='\0'; printf("%s ",tmp_str); strcpy(tmp_str, emp.fname);

16 288 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C for (i=strlen(emp.fname); i<fnamesize; i++) tmp_str[i]=' '; tmp_str[fnamesize]='\0'; printf("%s ",tmp_str); printf("%8.2f\n", emp.salary); printf("%32c Overtime hours: %2d\n", ' ', overtime_hours); printf("%32c Saturday hours: %2d\n", ' ', saturday_hours); printf("%32c Sunday hours : %2d\n", ' ', sunday_hours); printf("%53c %8.2f\n\n", ' ', total); main (int argc, char *argv[]) { personnel_rec emp; overtime_rec ot; int eof1, eof2; FILE *fp1, *fp2; if (argc<3) { fprintf(stderr,"you should provide:\n1. the name of " "the existing master file"); fprintf(stderr,"\n2. the name of the overtime " "transactions file.\n"); exit(1); fp1=fopen(argv[1],"rb"); if (fp1==null) { fprintf(stderr,"can not open [%s] for reading.\n", argv[1]); exit(2); fp2=fopen(argv[2],"rb"); if (fp2==null) { fprintf(stderr,"can not open [%s] for reading.\n", argv[2]); fclose(fp1); exit(3); eof1=fread(&emp,sizeof(personnel_rec),1,fp1)<1; eof2=fread(&ot,sizeof(overtime_rec),1,fp2)<1; while ((!eof1) && (!eof2)) if (strcmp(emp.key, ot.key)<0) { employee_payroll(emp,0,0,0); eof1=fread(&emp,sizeof(personnel_rec),1,fp1)<1; else if (strcmp(emp.key, ot.key)==0) {

17 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 289 employee_payroll(emp,ot.overtime_hours, ot.saturday_hours,ot.sunday_hours); eof1=fread(&emp,sizeof(personnel_rec),1,fp1)<1; eof2=fread(&ot,sizeof(overtime_rec),1,fp2)<1; else /* strcmp(emp.key, ot.key)>0 */ { /* abnormal case */ fprintf(stderr,"there is an overtime transaction " "with key [%s] that does not corresponds to an " "employee. ", ot.key); fprintf(stderr,"this overtime transaction will be " "ignored.\n"); eof2=fread(&ot,sizeof(overtime_rec),1,fp2)<1; while (!eof1) { employee_payroll(emp,0,0,0); eof1=fread(&emp,sizeof(personnel_rec),1,fp1)<1; fclose(fp1); fclose(fp2); Το πρόγραμμα αυτό θυμίζει επίσης τον τελευταίο αλγόριθμο της προηγούμενης ενότητας. Αποτελείται από δύο επαναληπτικά σχήματα (σε αντίθεση με τον αλγόριθμο της προηγούμενης ενότητας που είχε τρία επαναλληπτικά σχήματα). Το πρώτο επαναληπτικό σχήμα κάνει μία παράλληλη σάρωση του κύριου αρχείου και του αρχείου μεταβολών. Σε κάθε βήμα της επανάληψης, αν το κλειδί της εγγραφής του υπαλλήλου είναι μικρότερο από το κλειδί της συναλλαγής (ώρες επιπλέον από τη βασική απασχόληση) τότε διαβιβάζει την εγγραφή του υπαλλήλου στη ρουτίνα employee_payroll για να εκτυπώσει την μισθοδοσία του υπαλλήλου, χωρίς επιπλέον ώρες από τη βασική του απασχόληση. Αντίθετα, αν οι δύο συγκρινόμενες εγγραφές (υπαλλήλων και συναλλαγών) έχουν την ίδια τιμή στο κλειδί τότε διαβιβάζει την εγγραφή του υπαλλήλου καθώς και τα στοιχεία της εγγραφής συναλλαγής (ώρες κάθε κατηγορίας υπερωρίας) στη ρουτίνα employee_payroll για να υπολογίσει και να εκτυπώσει την μισθοδοσία του υπαλλήλου. Η περίπτωση που το κλειδί της εγγραφής του υπαλλήλου είναι μεγαλύτερο από το κλειδί της συναλλαγής μπορεί να οφείλεται μόνο σε λάθος (καταχώρηση ανύπαρκτου κωδικού υπαλλήλου κατά την εισαγωγή μίας συναλλαγής ή διπλοεισαγωγή μιας συναλλαγής) και παραλείπεται (εκτυπώ-

18 290 Εμβάθυνση στον προγραμματισμό με τη γλώσσα C νεται μήνυμα λάθους). Το δεύτερο επαναληπτικό σχήμα σαρώνει τους υπόλοιπους υπαλλήλους (που δεν σαρώθηκαν κατά το πρώτο επαναλληπτικό σχήμα) και για καθένα από αυτούς καλεί τη ρουτίνα employee_payroll για να εκτυπώσει την μισθοδοσία τους, χωρίς επιπλέον ώρες υπερωριακής απασχόλησης. Σε αντίθεση με τον τελευταίο αλγόριθμο της προηγούμενης ενότητας, το πρόγραμμα payroll.c αγνοεί τις υπόλοιπες συναλλαγές (που δεν σαρώθηκαν κατά το πρώτο επαναληπτικό σχήμα) καθώς αυτές δεν πρέπει να υπάρχουν και αν τελικά υπάρχουν είναι αποτέλεσμα λανθασμένων καταχωρήσεων συναλλαγών. Μία άλλη χρήσιμη τεχνική είναι να διαχωρίζουμε τη «σωστή» έξοδο από τα μηνύματα λάθους. Αυτό γίνεται στις εντολές εκτύπωσης που έχουν τη μορφή: fprintf(stderr,...); Στις εντολές αυτές στέλνουμε την έξοδο στο προκαθορισμένο αρχείο λαθών (standard error, stderr). Αυτή η τακτική είναι πολύ χρήσιμη γιατί μας επιτρέπει να διαχωρίσουμε τα μηνύματα λάθους από την αναμενόμενη έξοδο (στο παράδειγμά μας από την κατάσταση μισθοδοσίας). Ακολουθεί ένα τέτοιο παράδειγμα: Το βοηθητικό πηγαίο αρχείο COMMONF.C: /* ******************************************************* * Author: Nikitas N. Karanikolas, Assistant Professor * * Creation Date: February 21, 2009 * ******************************************************* */ void upper(char *str) { int i;

19 Κεφάλαιο 11: Ταξινομημένη σειριακή επεξεργασία αρχείων 291 for (i=0; i<strlen(str); i++) if ((str[i] >= 97) && (str[i] <= 122)) str[i] = str[i] - 32; void blank(char buffer[], int size) { int i; for (i=0; i<size; i++) buffer[i]=0; Το τελευταίο αρχείο (commonf.c) χρησιμοποιείται από άλλα προγράμματα της μισθοδοσίας (από το create.c και trncreat.c). Αδυναμίες υλοποίησης: Το πακέτο προγραμμάτων μισθοδοσίας, στην παρούσα μορφή του, παρουσιάζει ορισμένες αδυναμίες της οποίες πρέπει να αναδείξουμε. Όπως έχουμε αναφέρει, στα δεδομένα χρησιμοποιούμε ένα κλειδί (το πεδίο key στις εγγραφές personnel_rec και overtime_rec) προκειμένου να βασιζόμαστε σε αυτό και να διατάσουμε τα αντίστοιχα αρχεία. Επιπλέον τα δεδομένα του αρχείου προσωπικού πρέπει να περιέχουν μόνο μία φορά το κάθε κλειδί. Αυτό εξασφαλίζεται μερικώς καθώς το πρόγραμμα merge δεν επιτρέπει την ενσωμάτωση (στο νέο κύριο αρχείο προσωπικού) ενός νέου υπαλλήλου (από το αρχείο νέων υπαλλήλων), αν το κλειδί του νέου υπαλλήλου υπάρχει στο παλαιό κύριο αρχείο προσωπικού. Όμως μόνο αυτό δεν αρκεί. Θα πρέπει η δημιουργία αρχείου προσωπικού (είτε κατά την αρχική δημιουργία, είτε κατά τη δημιουργία του αρχείου νέων επιπλέον υπαλλήλων) να μην επιτρέπει τη διπλή καταχώρηση του ιδίου κλειδιού. Για να είναι πλήρως σωστή η λύση μας θα πρέπει μετά την ταξινόμηση ενός αρχείου προσωπικού (είτε κατά την αρχική δημιουργία, είτε κατά τη δημιουργία του αρχείου νέων επιπλέον υπαλλήλων) να γίνεται έλεγχος ώστε να μην υπάρχουν δύο διαδοχικές εγγραφές με το ίδιο κλειδί. Δηλαδή το ζεύγος προγραμμάτων create και sort πρέπει να συνοδεύεται από ένα πρόγραμμα ελέγχου μοναδικών κλειδιών. Ανάλογη προσέγγιση πρέπει να ακολουθείται και για το αρχείο των συναλλαγών. Δηλαδή, θα πρέπει το ζεύγος προγραμμάτων trncreat και trnsort να συνοδεύεται από ένα πρόγραμμα ελέγχου μοναδικών κλειδιών.

10.2 Καταχώρηση δεδομένων σε σειριακά αρχεία

10.2 Καταχώρηση δεδομένων σε σειριακά αρχεία 240 χνητά επιβαλόμενη κατάσταση καθώς όλα τα αποθηκευτικά μέσα επιτρέπουν την τυχαία προσπέλαση. 10.2 Καταχώρηση δεδομένων σε σειριακά αρχεία Για τη μελέτη της σειριακής επεξεργασίας αρχείων θα δημιουργήσουμε

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ (Κεφάλαιο 2.7 και 12) Αρχεία στην C ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουµε δεδοµένα από ένα πρόγραµµα, πρέπει να χρησιµοποιήσουµε την ευτερεύουσα

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

Α. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct) Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct) Αρχεία Το γενικό πλαίσιο: data stream (ρεύμα δεδομένων). stdin, stdout, stderr data stream ως προς τα δεδομένα βάσει προσπέλασης

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

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

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

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

5.6 Μελέτη περίπτωσης. Η έξοδος θα είναι:

5.6 Μελέτη περίπτωσης. Η έξοδος θα είναι: Κεφάλαιο 5: Πολυδιάστατοι πίνακες Πίνακες αλφαριθμητικών 127 strcpy (name, Nikitas N. Karanikolas ); το μέγεθος του πίνακα name είναι: %d\n, sizeof(name)); το μήκος του String που φυλάγεται στον name είναι:

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

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 1

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

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

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

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

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

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

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

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

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

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

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

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II (Κεφάλαια 25.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132

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

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

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

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

Α Β Γ 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 19η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Βασικές διαφορές της C από τη C++. Απλά παραδείγματα προγραμμάτων C.

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

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

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

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

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

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

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

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

Σημειώσεις όγδοης εβδομάδας

Σημειώσεις όγδοης εβδομάδας Σημειώσεις όγδοης εβδομάδας Για να την δημιουργία σειριακών αρχείων, χρησιμοποιείται η fopen(filename, w ). Το αρχείο δημιουργείται στον ίδιο φάκελο που τρέχει το εκτελέσιμο πρόγραμμα. Το παρακάτω πρόγραμμα,

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

i M-1 1. ij f(i, j) N-1. (pixel) 2. M N (x, y) (x, y ) = 256. R(x, y), G(x, y), B(x, y)

i M-1 1. ij f(i, j) N-1. (pixel) 2. M N (x, y) (x, y ) = 256. R(x, y), G(x, y), B(x, y) D4 2 2. (pixel) 2 ( ) M N (x, y) (x, y ) ( )f(x, y) j N- i j i f(i, j) M-. ij f(i, j) 8 2 8 = 256, 2 2 f(x, y) 3,, R(x, y), G(x, y), B(x, y) 256 2 2.2 ( ) JPEG (Joint Photographic Experts Group), GIF (Graphics

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13) Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1 Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και

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

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

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

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

ιαφάνειες παρουσίασης #6 (β)

ιαφάνειες παρουσίασης #6 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση #include #include #define TRUE 0 #define FALSE -1 #define SIZE 4 /* Το μέγεθος του πίνακα */ typedef struct

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 8: Πίνακες, Αλφαριθμητικά Πίνακες Ο πίνακας είναι μια ειδική δομή για την αποθήκευση μιας σειράς από δεδομένα του ίδιου τύπου. Η δήλωση ενός πίνακα γίνεται όπως για μια

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

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

Προγραμματισμός Δομές Δεδομένων

Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που

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

Σε μία άλλη από τις εκτελέσεις του προγράμματος η αλληλεπίδραση με το χειριστή ήταν η επόμενη:

Σε μία άλλη από τις εκτελέσεις του προγράμματος η αλληλεπίδραση με το χειριστή ήταν η επόμενη: Κεφάλαιο 5: Πολυδιάστατοι πίνακες Πίνακες αλφαριθμητικών 119 Σε μία άλλη από τις εκτελέσεις του προγράμματος η αλληλεπίδραση με το χειριστή ήταν η επόμενη: 5.5 Συναρτήσεις χειρισμού αλφαριθμητικών Στις

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Φροντιςτήριο. Linked-List

Φροντιςτήριο. Linked-List Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ

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

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

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

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 13-1 Περιεχόμενο

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

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

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

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

Κεφάλαιο 8.6. Πίνακες ΙI (Διάλεξη 17)

Κεφάλαιο 8.6. Πίνακες ΙI (Διάλεξη 17) Κεφάλαιο 8.6 Πίνακες ΙI (Διάλεξη 17) 16-1 Πίνακες - Επανάληψη Στην προηγούμενη διάλεξη κάναμε μια εισαγωγή στην δομή δεδομένων Πίνακας Σε ένα πίνακα ένα σύνολο αντικειμένων του ιδίου τύπου αποθηκεύονται

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

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

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

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

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

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

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

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές: Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

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

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

Αρχές Προγραμματισμού Αρχές Προγραμματισμού https://eclass.upatras.gr/courses/ee806/index.php Βασίλης Παλιουράς paliuras@ece.upatras.gr Μέχρι τώρα... Οργάνωση Προγράμματος C Ενέργειες -> ρήματα (συντακτικό) -> συναρτήσεις Δεδομένα

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

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

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

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

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές. οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Παράδειγµα Πρόβληµα: Να γράψετε

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

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

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

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

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

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

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

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο (File) τη συστηµατική συγκέντρωση δεδοµένων. Τα περισσότερα προγράµµατα στη γλώσσα C, τα οποία διαπραγµατεύονται είσοδο, αποθήκευση και επεξεργασία δεδοµένων χρησιµοποιούν

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

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

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

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

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

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

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

Κεφάλαιο : Επαναλήψεις (for, do-while) Κεφάλαιο 5.4-5.11: Επαναλήψεις (for, do-while) 10-1 Εντολές Επανάληψης που θα καλυφθούν σήµερα while(){ τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές Παραδείγµατα Σήµερα for(){ Η εντολές break/continue;

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

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

Εργαστήριο 2: Πίνακες

Εργαστήριο 2: Πίνακες Εργαστήριο 2: Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Επεξεργασία Πινάκων - Υλοποίηση της Δυαδικής Αναζήτησης σε πίνακες - Υλοποίηση της Ταξινόμησης με Επιλογής σε πίνακες ΕΠΛ035

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

ΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ ΣΤΗΝ C

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (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*%

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση

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

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011 Τελεστής σύντοµης ανάθεσης Τελεστής σύντοµης ανάθεσης (shorthand assignment operator) µεταβλητή = µεταβλητή τελεστής

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

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Ασκήσεις Επανάληψης Ενδιάµεσης

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2011 Θέµα 1 (α') 1 - i 2 - ii 3 - iii 4 - iv 5 - v 6 - vi 7 - vii 8 - viii 9 - ix 10 - x Το αποτέλεσµα είναι η αντιστοιχία των

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8) Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις (Διάλεξη 8) 8-1 Τι θα δούμε σήμερα Η εντολή if else Η εντολή if else ιf - -else H εντολή switch Λογικές παραστάσεις Σχεσιακοί

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 6: Δομές Ελέγχου Δομές ελέγχου 2 Με τις εντολές εισόδου, εξόδου και επεξεργασίας των τιμών των μεταβλητών μπορεί να γραφτούν απλά προγράμματα. Οι δυνατότητες είναι περιορισμένες.

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

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

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

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #5 εκτέλεση υπό συνθήκη 1 Σπύρος Λάλης Ροή εκτέλεσης Μέχρι στιγμής η ροή εκτέλεσης του κώδικα είναι αυστηρά γραμμική Οι εντολές που γράφουμε στον κώδικα μας εκτελούνται μια προς

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) Αρχείο είναι μια συλλογή δεδομένων του ίδιου τύπου. Ενα αρχείο αποθηκεύεται στην περιφερειακή μνήμη (σκληρό δίσκο, δισκέττα). Τα αρχεία είναι μόνιμα. Τα δεδομένα

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

Υπολογισμός - Εντολές Ελέγχου

Υπολογισμός - Εντολές Ελέγχου Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Ελέγχου ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

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

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

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

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

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++ ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση του περιβάλλοντος Dev C++ το οποίο θα χρησιμοποιηθεί για την υλοποίηση

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

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

Γλώσσα Προγραμματισμού C

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I Θεσσαλίας Email: savvas@teilar.gr Γλώσσα Προγραμματισμού C Εισήγηση #10

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