Παράδειγµα (2) Πίνακες (Arrays) (2) Πίνακες (Arrays) (1) int num[5];

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

Download "Παράδειγµα (2) Πίνακες (Arrays) (2) Πίνακες (Arrays) (1) int num[5];"

Transcript

1 Πίνακες (Arrays) (1) Πίνακας: Σειρά διαδοχικών θέσεων µνήµης µε περιεχόµενα ίδιου τύπου και κοινό όνοµα. Ορισµός µεταβλητής πίνακα: τύπος όνοµα_πίνακα[ακέραια σταθ. έκφρ.]; Π.χ. #define MAX_N 100 int num[5]; float x[max_n + 1]; Πίνακες (Arrays) (2) Κάθε στοιχείο του πίνακα παίζει το ρόλο µεταβλητής, µε όνοµα όνοµα_πίνακα[δείκτης] Τα στοιχεία του πίνακα αριθµούνται ξεκινώντας πάντα από το µηδέν. Π.χ. Το 3ο στοιχείοτουπίνακαnum είναι num[2] Παράδειγµα (1) int num[5]; num αρχή του πίνακα Παράδειγµα (2) register int i; for (i = 0; i < 5; i++) num[i]=0; num[0] num[1] num[2] num[3] num[4] num[0] num[1] num[2] num[3] num[4] Περιοχή εκτός πίνακα. Περιοχή εκτός πίνακα

2 Παράδειγµα (3) num[2]=12; num[4]=num[2]/5+3; num[0]++; printf( %d\n, num[5]); /* ΛΑΘΟΣ! */ Μετατροπή σε υαδική Αναπαράσταση void toabinary(unsigned m) unsigned q; char r[sizeof(unsigned int) * 8]; /* π.χ. char r[16]; */ register int i = 0; /* αρχικοποίηση */ Περιοχή εκτός πίνακα num[0] num[1] num[2] num[3] num[4] 310 do q = m >> 1; r[i] = m - 2 * q; m= q; i++; while (q!= 0); while (i) printf("%d", r[--i]); /* όχι r[i--] */ 311

3 ιδιάστατοι Πίνακες (1) ιδιάστατος πίνακας: Μονοδιάστατος πίνακας µε στοιχεία πίνακες Ορισµός: τύπος όνοµα_πίνακα[αριθµός γραµµών][αριθµών στηλών]; int num[5][4]; /* πίνακας 5 στοιχείων καθένα από τα οποία είναι πίνακας 4 ακεραίων */ ιδιάστατοι Πίνακες (2) num αρχή πίνακα num[0][0] num[0][1] num[0][2] num[0][3] num[1][0] num[1][1] num[1][2] num[1][3] num[2][0] num[2][1] num[2][2] num[2][3] num[3][0] num[3][1] num[3][2] num[3][3] num[4][0] num[4][1] num[4][2] num[4][3] ιδιάστατοι Πίνακες (3): Εσωτερική Αναπαράσταση num αρχή πίνακα num[0][0] num[0][1] num[0][2] num[0][3] num[1][0] num[1][1] 1η γραµµή 2η γραµµή Πολυδιάστατοι Πίνακες (1) n-διάστατος πίνακας: πίνακας n-1 διαστάσεων µε στοιχεία µονοδιάστατους πίνακες Ορισµός: τύπος όνοµα[1η διάστ.][2η διάστ.]...[n-στή διάστ.]; int num[5][4][2]; /* 5x4 πίνακας µε στοιχεία πίνακες 2 ακεραίων */

4 Πολυδιάστατοι Πίνακες (2) Πολυδιάστατοι Πίνακες (3): Εσωτερική Αναπαράσταση num αρχή πίνακα num[0][0][0]num[0][1][0] num[0][2][0] num[0][3][0] num[0][3][1] num num[1][0][0] num[1][1][0] num[1][2][0] num[1][3][0] num[1][3][1] αρχή πίνακα num[2][0][0]num[2][1][0] num[2][2][0] num[2][3][0] num[2][3][1] num[3][0][0] num[3][1][0] num[3][2][0] num[3][3][0] num[3][3][1] num[0][0][0] num[0][0][1] num[0][1][0] num[0][1][1] num[0][2][0] num[0][2][1] num[4][2][0] num[4][2][1] num[4][3][0] num[4][3][1] num[4][0][0]num[4][1][0] num[4][2][0] num[4][3][0] num[4][3][1] Αρχικοποίηση Πίνακα (1) Με χρήση εντολής επανάληψης: register int i, j, k = 0; for (i = 0; i < 5; i++) for (j = 0; j < 4; j++) num[i][j] = ++k; Κατά τον ορισµό: int num[5][4]=1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15,16,17,18,19,20; ή int num[5][4]=1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15,16,17,18,19,20; Αρχικοποίηση Πίνακα (2) Ελλιπής αρχικοποίηση συµπληρώνεται µε µηδενικά: int num[5][4]=1,2,3; /* */ Ένας εύκολος τρόπος αρχικοποίησης στο µηδενικό πίνακα: int num[5][4] = 0;

5 Παράδειγµα: Άθροιση διανυσµάτων #include <stdio.h> #define MAX_N 100 main() int N; float a[max_n], b[max_n], c[max_n]; register int i; void addvec(float [], float [], float [], int); /* δήλωση συνάρτησης */ /* ορισµός συνάρτησης */ void addvec(float x[ ], float y[ ], float z[ ], int M) register int i; for (i = 0; i < M; i++) /* ΛΑΘΟΣ: z = x + y */ z[i] = x[i] + y[i]; printf( ώστε το µέγεθος των διανυσµάτων (το πολύ %d):, MAX_N); scanf( %d, &N); printf( ώστε το πρώτο διάνυσµα: ); for (i = 0; i < N; i++) scanf( %f, &a[i]); printf( ώστε το δεύτερο διάνυσµα: ); for (i = 0; i < N; i++) scanf( %f, &b[i]); addvec(a, b, c, N); printf( Το άθροισµα είναι:\n ); for (i = 0; i < N; i++) printf( %f, c[i]); printf( \n ); return(0); Πέρασµα Ορισµάτων σε Συναρτήσεις (1) Με τιµή (call by value): Καταχώρηση της τιµής του ορίσµατος στην αντίστοιχη παράµετρο. Οποιαδήποτε περαιτέρω αλλαγή στην παράµετρο δεν επηρεάζει το όρισµα. Παράδειγµα (1) float addsub(float, float, float); float x = 1.0, y = 2.3, s = 0, d = 0; s = addsub(x, y, d); printf( sum=%f difference=%f\n, s, d); /* */... float addsub(float a, float b, float diff) float sum; 322 sum = a + b; diff = a b; return(sum); 323

6 Παράδειγµα (2) Πριν την κλήση της addsub Κατά την κλήση x: 1.0 y: 2.3 a: 1.0 b: 2.3 Μέσα στο σώµα τηςaddsub a: 1.0 b: 2.3 sum: 3.3 s: 0 d: 0 diff: diff: Πέρασµα Ορισµάτων σε Συναρτήσεις (2) Εκτός αν η παράµετρος παριστάνει διεύθυνση θέσης στη µνήµη, π.χ. όνοµα πίνακα! float c[max_n]; c: διεύθυνση του πρώτου στοιχείου του πίνακα Επιστροφή από την addsub x: 1.0 y: 2.3 s: 3.3 d: 0 c[0] c[1] c[2] c[99] Παράδειγµα: Άθροιση ιανυσµάτων Πριν την κλήση της addvec N: 3 a: b: c: ? ????? a[0] a[1] a[2] a[99] b[0] b[1] b[2] b[99] c[0] c[1] c[2] c[99] Κλήση: addvec(a,b,c,n); N: 3 a: b: c: x: y: z: M: ? ????? x[0] x[1] x[2] x[99] y[0] y[1] y[2] y[99] z[0] z[1] z[2] z[99] Επιστροφή a: b: c: N: 3 είκτες (Pointers): Ένα ισχυρό ατού της C είκτης: Μεταβλητή που περιέχει τη διεύθυνση (του πρώτου byte) στη µνήµη µιας άλλης µεταβλητής Παράδειγµα: float a[max_n]; Το όνοµα τουπίνακα, a, είναι δείκτης, µε περιεχόµενο τη διεύθυνση στη µνήµη τηςµεταβλητής a[0] ? ? ? a[0] a[1] a[2] a[99] b[0] b[1] b[2] b[99] c[0] c[1] c[2] c[99]

7 Ορισµός (και ήλωση) είκτη τύπος *όνοµα_δείκτη; Τύπος της µεταβλητής στην οποία δείχνει. ηλαδή, το *όνοµα_δείκτη είναι αυτού του τύπου. int *ip; /* δείκτης σε int */ float *q; /* δείκτης σε float */ char *cp; /* δείκτης σε char */ Οι Τελεστές & και * &όνοµα_µεταβλητής είναι η διεύθυνση του πρώτου byte της µεταβλητής *όνοµα_δείκτη είναι το περιεχόµενο της µεταβλητής στην οποία δείχνει Παράδειγµα int x = 1, *p; p = &x; /* p = 1128 */ printf( %d, *p); /* 1 */ *p = *p + 2; /* το *p χρησιµοποιείται όπως και η x*/ printf( %d, *p); /* 3 */ ιευθύνσεις: p: x: Προτεραιότητα (10) Unary + -! ~ (τύπος) * & * / % + - << >> < <= > >= ==!= & ^ &&?: = += -= *= /= %= &= = ^= <<= >>= Υψηλή Χαµηλή 331

8 Παράδειγµα float addsub(float, float, float *); float x = 1.0, y = 2.3, s = 0, d = 0; s = addsub(x, y, &d); /* o diff «δείχνει» στην d */ printf( sum=%f difference=%f\n, s, d); /* */... float addsub(float a, float b, float *diff) float sum; sum = a + b; *diff = a b; /* ισοδυναµεί µε d = a b */ return(sum); Κλήση µε Αναφορά(Call by Reference) Η χρήση δεικτών σε παραµέτρους συνάρτησης επιτρέπει την αλλαγή της τιµής των αντίστοιχων ορισµάτων. Χρήσιµη για αποτελέσµατα που δεν µπορούν να επιστραφούν µε return (π.χ. για περισσότερα του ενός αποτελέσµατα). Εναλλακτικός τρόπος: Χρήση εξωτερικών µεταβλητών (λιγότερο κοµψός και εύχρηστος) Ένα γνώριµο παράδειγµα scanf( %d, &N); /* ανάγνωση τιµής για τη µεταβλητή N */ Η scanf απαιτεί τη διεύθυνση της µεταβλητής ώστε να είναι σε θέση ν αλλάξει την τιµή της. 334

9 Αριθµητική ιευθύνσεων (1) Το όνοµα ενόςπίνακαείναιδείκτηςστο πρώτο στοιχείο του. int num[5]; num == &num[0] /* αληθής */ Αριθµητική ιευθύνσεων (2) Ηαύξηση(µείωση) ενός δείκτη που δείχνει σε θέση ενός πίνακα τον κάνει να δείχνει σε επόµενη (προηγούµενη) θέση. int *p; p = num; /* p = &num[0] */ p += 2; /* p = &num[2] */ p--; /* p = &num[1] */ num++; /* εν επιτρέπεται. Ηδιεύθυνσηαρχήςτου πίνακα είναι σταθερή. */ Αριθµητική ιευθύνσεων (3) Οσυµβολισµός όνοµα_δείκτη[αριθµός] ισοδυναµεί µε *(όνοµα_δείκτη + αριθµός). p = num + 1; /* p = &num[1] */ p[2] = 10; /* num[1 + 2] = 10 */ p--; /* p = &num[0] */ *p = *(num + 3) + 1; /* num[0] = num[3] + 1 */ Αριθµητική ιευθύνσεων (4) p + 1 p + 2 p = num *p *(p + 1) *(p + 2) num[0] num[1] num[2] num[3] num[4]

10 Αριθµητική ιευθύνσεων (5) Αν οι δείκτες p, q δείχνουν σε στοιχεία του ίδιου πίνακα, µπορούν να συγκριθούν και ν αφαιρεθούν: p = num; q = &num[3]; if (p < q) /* αληθής */ d = q p + 1; /* = 4 */ Αριθµητική ιευθύνσεων (6) p = num q = &num[4] = p + 4 num[0] num[1] num[2] num[3] num[4] Πλήθος στοιχείων µεταξύ p και q: q p Αριθµητική ιευθύνσεων (7) Μη επιτρεπτές πράξεις µε δείκτες: int *p, *q, x = 1, y = 2; register float z = 3.2; float *r; p = &x; *q = 5; /* πού δείχνει ο q; */ q = &y; p = p + q; /* όχι πρόσθεση δεικτών */ if (p == q) /* όχι σύγκριση δεικτών που δεν δείχνουν σε θέσεις του ίδιου πίνακα */ r = &z; /* δεν υπάρχει διεύθυνση (&) register µεταβλητής */ p += z; /* όχι πρόσθεση ή αφαίρεση µη-ακέραιου σε δείκτη */ q *= 2; /* ούτε πράξεις µεταξύ δεικτών πλην της αφαίρεσης */ y = q p; /* όχι αφαίρεση δεικτών που δεν δείχνουν σε θέσεις του ίδιου πίνακα */ p = r; /* δεν είναι δείκτες σε θέσεις ίδιου τύπου */ 341 Αριθµητική ιευθύνσεων (8) Προσοχή στην προτεραιότητα των τελεστών! int x = 2, *p; p = &x; /* ο p δείχνει στη x */ ++*p; /* αύξησε τη x κατά 1 */ *p++; /* Πάρε το περιεχόµενο της θέσης στην οποία δείχνει ο p και κατόπιν αύξησέ τον */ (*p)++; /* Αύξησε κατά 1 το περιεχόµενο της θέσης στην οποία δείχνει ο p */ 342

11 είκτες σε είκτες (1) Αν p είναι δείκτης, τότε &p είναι η διεύθυνσή του. int x = 2, *p, **q; p = &x; q = &p; **q = 3; /* x = 3 */ είκτες σε είκτες (2) ιδιάστατος πίνακας: Πίνακας µε στοιχεία πίνακες: είκτης σε δείκτες void addvec(float **x, float **y, float **z, int M) ιαφορά πίνακα και δείκτη: float a[max_n]; /* δεσµεύονται MAX_N θέσεις float στη µνήµη */ a[2] = 3.45; float *a; /* δεσµεύεται µόνο µια θέση δείκτη a[2] = 3.45; σε float */ /* δεν επιτρέπεται. Ο a + 2 δεν δείχνει σε δεσµευµένη θέση */ Αλφαριθµητικά (Strings) Πίνακας χαρακτήρων: Πίνακας µε στοιχεία χαρακτήρες char message[ ] = H, e, l, l, o ; H e l l o? Αλφαριθµητικό (ή συµβολοσειρά): Πίνακας χαρακτήρων που τελειώνει σε \0 char message[ ] = Hello ; H e l l o \0 Παράδειγµα: Αντιγραφή αλφαριθµητικών (1) void strcpy(char s[ ], char t[ ]) register int i = 0; while ((s[i] = t[i])!= \0 ) i++;

12 Παράδειγµα: Αντιγραφή αλφαριθµητικών (2) void strcpy(char *s, char *t) while ((*s = *t)!= \0 ) s++; t++; Παράδειγµα: Αντιγραφή αλφαριθµητικών (3) void strcpy(char *s, char *t) while ((*s++ = *t++)!= \0 ) ; Παράδειγµα: Αντιγραφή αλφαριθµητικών (4) Παράδειγµα: Ανάγνωση και Εκτύπωση Αλφαριθµητικών void strcpy(char *s, char *t) while (*s++ = *t++) ; lines[0] lines[1] lines[2] F i r s t S char lines[10][80]; \0 e c o n d

13 #include <stdio.h> /* NULL, printf, gets, puts */ #include <string.h> /* πρωτότυπο της strcpy */ #define MAXLINES 10 #define MAXLENGTH 80 main() int nlines; register int i = 0; char lines[maxlines][maxlength], s[maxlength]; /* #define NULL 0 */ while (gets(s)!= NULL) /* διάβασε την επόµενη γραµµή */ strcpy(lines[i++], s); /* και αντέγραψέ την στη γραµµή i */ nlines = i; printf( ώσατε %d γραµµές:\n, nlines); for (i = 0; i < nlines; i++) puts(lines[i]); /* εµφάνισε τη γραµµή i */ return(0); Πώς θα µπορούσαµε να εξοικονοµήσουµε χώρο; char *lines[10]; lines[0] F i r s t \0 lines[1] S e c o n d L i n e \0 lines[2] lines[3] lines[9] T h i r d \ υναµική έσµευση και Απελευθέρωση Μνήµης (1) υναµική δέσµευση µνήµης: void *malloc(size_t no_bytes); Π.χ. αντί του ορισµού int num[5]; int *num; num = (int *)malloc(5 * sizeof(int)); υναµική απελευθέρωση µνήµης: void free(void *); Π.χ. free(num); /* ο num τώρα δεν δείχνει πουθενά */ 353 υναµική έσµευση και Απελευθέρωση Μνήµης (2) int *p;? *p p = (int *)malloc(sizeof(int));? *p = 3; 3 free(p);? p = NULL; NULL p 354

14 #include <stdio.h> /* NULL, printf, gets, puts */ #include <string.h> /* πρωτότυπα των strcpy, strlen */ #include <stdlib.h> /* malloc, free */ #define MAXLINES 10 #define MAXLENGTH 80 main() int nlines; register int i = 0; char *lines[maxlines], s[maxlength]; while (gets(s)!= NULL) if ((lines[i] = (char *)malloc(strlen(s))) == NULL) fprintf(stderr, Ανεπάρκεια µνήµης!\n ); return(1); strcpy(lines[i++], s); 355 nlines = i; printf( ώσατε %d γραµµές:\n, nlines); for (i = 0; i < nlines; i++) puts(lines[i]); /* εµφάνισε τη γραµµή i */ free(lines[i]); /* απελευθέρωσε τον αντίστοιχο χώρο */ return(0); 356

15 Ορίσµατα Γραµµής ιαταγών (Command Line Arguments) main(int argc, char *argv[ ]) argc: πλήθος ορισµάτων στην κλήση του προγράµµατος (συµπεριλαµβανοµένου του ονόµατος της διαταγής) argv: πίνακας των argc αλφαριθµητικών που παριστάνουν τα ορίσµατα της διαταγής argv[0]: το όνοµα του προγράµµατος Παράδειγµα: Αθροιστής Εκτελέσιµο πρόγραµµα: add.exe Π.χ. add argv a d d \ \ \0 8 \0 argc = #include <stdio.h> #include <stdlib.h> /* πρωτότυπο της atof */ main(int argc, char *argv[]) float sum = 0.0; register int i; if (argc <= 2) fprintf(stderr, "%s: Απαιτούνται τουλάχιστον δύο αριθµοί!\n", argv[0]); return(1); for (i = 1; i <= argc - 1; i++) sum += atof(argv[i]); /* atof: string σε float αριθµό */ printf("%.3f\n", sum); return(0); 359

16 οµές (Structures) (1) οµή: Συλλογή µιας ή περισσοτέρων µεταβλητών οµαδοποιηµένων µ ένα όνοµα για εύκολο χειρισµό. Τα µέλη της δοµής µπορούν να είναι διαφορετικού τύπου (σε αντίθεση µε τα στοιχεία ενός πίνακα). οµές (Structures) (2) Παραδείγµατα: Σηµείο στην οθόνη: Ζεύγος ακέραιων συντεταγµένων x, y Σηµείο στον τρισδιάστατο χώρο: Τριάδα πραγµατικών αριθµών Εγγραφή (record) φοιτητή: Επώνυµο Όνοµα Εξάµηνο Έτος εισαγωγής ιεύθυνση Τηλέφωνο οµές (Structures) (3) Ορισµός δοµής: struct ετικέτα τύπος1 µέλος1; τύπος2 µέλος2;... ; οµές (Structures) (4) Ορισµός µεταβλητής τύπου δοµής: struct ετικέτα όνοµα_µεταβλητής; ή struct ετικέτα τύπος1 µέλος1; τύπος2 µέλος2;... όνοµα_µεταβλητής;

17 Παραδείγµατα (1) Σηµείο στην οθόνη struct point int x; int y; ; struct point pt1, pt2; Παραδείγµατα (2) Σηµείο στον τριδιάστατο χώρο struct point3d float x, y, z; ; struct point3d p1, p2, p3, p4; Παραδείγµατα (3) Εγγραφή φοιτητή struct student char fname[10]; char lname[20]; short semester; short entry_yr; char address[40]; char phone[10]; stdt1, stdt2; Τελεστής Μέλους οµής (.) Αναφορά σε µέλος µιας µεταβλητής δοµής: όνοµα_δοµής.όνοµα_µέλους struct point pt1, pt2; pt1.x = 50; pt1.y = 100; pt2.x = pt1.x; pt2.y = pt2.y + 30; printf( Point1=(%d,%d), Point2=(%d,%d)\n, pt1.x, pt1.y, pt2.x, pt2.y);

18 οµή: Συλλογή Μεταβλητών pt1 pt2 pt1.x pt1.y pt2.x pt2.y Παράδειγµα: Ορθογώνιο ( οµή µε µέλη δοµές) (1) Ορθογώνιο: Καθορίζονται η κάτω αριστερά και η πάνω δεξιά γωνία του struct rect struct point left; struct point right; ; struct rect r; right left Παράδειγµα: Ορθογώνιο ( οµή µε µέλη δοµές) (2) Παράδειγµα: Ορθογώνιο ( οµή µε µέλη δοµές) (3) r r.left.x r.left.y r.right.x r.left /* εµβαδόν ορθογωνίου */ int area(struct rect r) int width, height; r.right.y r.right width = r.right.x r.left.x; /* πλάτος */ height = r.left.y r.right.y; /* ύψος */ return(width * height);

19 Λειτουργίες µε οµές (1) Αντιγραφή struct point pt1, pt2; pt1 = pt2; /* pt1.x = pt2.x; pt1.y = pt2.y */ Αρχικοποίηση struct point pt1 = 50, 100; /* pt1.x = 50; pt1.y = 100 */ Λειτουργίες µε οµές (2) Εξαγωγή διεύθυνσης struct point pt, *pt_pointer; pt_pointer = &pt; (*pt_pointer).x = 50; Εξαγωγή και χειρισµός µελών width = r.right.x r.left.x; Υπολογισµός µεγέθους (σε bytes) sizeof(struct point) sizeof(pt1) Λειτουργίες µε οµές (3) Πέρασµα ορίσµατος σε συνάρτηση printf( Εµβαδό = %d\n, area( r )); Επιστροφή από συνάρτηση struct point makepoint(int x, int y) struct point pt; pt.x = x; pt.y = y; return(pt); 374

20 είκτες σε οµές Κλήση µε αναφοράµε όρισµα δοµή: Πέρασµα της διεύθυνσης της δοµής (αντί της αντιγραφής της τιµής της) Χρήσιµη γιαδοµές µεγάλου µεγέθους Ο τελεστής -> struct point pt, *pt_pointer; pt_pointer = &pt; pt_pointer->x = 50; /* (*pt_pointer).x = 50; */ pt_pointer->y = 100; /* (*pt_pointer).y = 100; */ Παράδειγµα area (struct rect *pr) int width, height; width = pr->right.x pr->left.x; height = pr->left.y pr->right.y; return(width * height); Προτεραιότητα (11) ( ) [ ] ->. Unary + -! ~ (τύπος) * & sizeof * / % + - << >> < <= > >= ==!= & ^ &&?: = += -= *= /= %= &= = ^= <<= >>=, Υψηλή Χαµηλή 377

21 Πίνακες οµών (1) Παράδειγµα: Πίνακας φοιτητών Πίνακες οµών (2) struct stud *p; struct stud char name[30]; /* ονοµατεπώνυµο */ short id; /* ΑΜ */ ; struct stud students[220]; p = students; /* p = &students[0]; */ strcpy(p->name, ΓΕΩΡΓΙΟΥ Ν. ); /* strcpy(students[0].name, ΓΕΩΡΓΙΟΥ Ν. ); */ p->id = 5; /* students[0].id = 5; */ p++; /* p = &students[1]; */ Παράδειγµα #include <stdio.h> #define MAX_N 10 struct stud char name[30]; short mark; ; main() float average(struct stud [ ], int); struct stud students[max_n], *p; int N; register int i; printf("how many students? (at most %d)", MAX_N); scanf("%d", &N); 380 for (p = students, i = 0; i < N; p++, i++) τελεστής κόµµα printf("student no. %d:\n", i + 1); (, ) printf("name: "); scanf("%s", p->name); printf("mark: "); scanf("%d", p->mark); printf("average mark: %f\n", average(students, N)); return(0); float average(struct stud list[], int M) 381

22 typedef Παράδειγµα ηµιουργία νέων ονοµάτων τύπων typedef τύπος όνοµα_τύπου; typedef struct point Point; typedef struct Point left; Point right; Rectangle; typedef float Real; typedef struct point Point; typedef struct point *PointPtr; area(rectangle r) int width, height; Είσοδος και Έξοδος (Input/Output (I/O)) Πρότυπη Είσοδος/Έξοδος (Standard Input/Output) Πληκτρολόγιο Εκτυπωτής Οθόνη Πρόγραµµα Αρχεία δίσκου Πρότυπη είσοδος: (Σχεδόν πάντα) το πληκτρολόγιο Πρότυπη έξοδος: (Σχεδόν πάντα) η οθόνη Γιατί «σχεδόν πάντα»; υνατότητα επανακατεύθυνσης (redirection) της πρότυπης εισόδου ή/και εξόδου

23 Πρότυπη Βιβλιοθήκη Συναρτήσεων Εισόδου/Εξόδου Η C δεν έχει εντολές για είσοδο/έξοδο. I/O επιτελείται µε συναρτήσεις. Πρότυπη βιβλιοθήκη εισόδου/εξόδου: Συλλογή έτοιµων συναρτήσεων (ή και µακροεντολών) για λειτουργίες εισόδου/εξόδου Πρωτότυπα συναρτήσεων I/O στο αρχείο επικεφαλίδα <stdio.h> 386 Είσοδος και Έξοδος Χαρακτήρων (1) getchar( ) Επιστρέφει τον ακέραιο κωδικό του επόµενου χαρακτήρα από την πρότυπη είσοδο, και EOF για τέλος αρχείου (τέλος εισόδου, συνήθως Ctrl+Z). int ch; /* int, όχι char */ while ((ch = getchar())!= EOF) /* ιαβάζει τον επόµενο χαρακτήρα, έως ότου τελειώσει η είσοδος */ Είσοδος και Έξοδος Χαρακτήρων (2) putchar(ch) Γράφει το χαρακτήρα ch στην πρότυπη έξοδο. Επιστρέφει το χαρακτήρα ή EOF αν κάτι δεν πήγε καλά. int ch; /* int, όχι char */ while ((ch = getchar())!= EOF) /* Αντιγράφει την είσοδο στην έξοδο, αλλάζοντας τα κεφαλαία γράµµατα σε πεζά */ ch = tolower(ch); putchar(ch); 388 Μορφοποιηµένη Πρότυπη Έξοδος: printf (1) printf(char *format, ορ1, ορ2, ); Αλφαριθµητικό φόρµας (format string) Μεταβλητό πλήθος ορισµάτων Το format string καθορίζει πώς θα γραφτούν τα ορίσµατα. Προδιαγραφές µετατροπής: Καθορίζουν τον τύπο του ορίσµατος, το πλάτος του στην οθόνη, και την ακρίβεια αναπαράστασης. printf( Variance = %.2f\n, sigma2); 389

24 Μορφοποιηµένη Πρότυπη Έξοδος: printf (2) Μορφοποιηµένη Πρότυπη Έξοδος: printf (3) Οι συνηθέστερες προδιαγραφές µετατροπής: d δεκαδικός ακέραιος u απρόσηµος δεκαδικός ακέραιος f πραγµατικός αριθµός e πραγµατικός σε επιστηµονική γραφή g πραγµατικός σε απλή ή επιστηµονική γραφή c χαρακτήρας s αλφαριθµητικό hd short δεκαδικός ακέραιος ld long δεκαδικός ακέραιος lf double 390 Παράδειγµα: float x = -3.45; int y = 2; printf( %s: x is %.3f and y is %d, Answer1, x, y); printf( \n%.4s: x is %6.0f and y is %3d\n, Answer2,x,y); Answer1: x is and y is 2 Answ: x is -3 and y is Μορφοποιηµένη Πρότυπη Είσοδος: scanf (1) scanf(char *format, ορ1, ορ2, ); Αλφαριθµητικό φόρµας (format string) Μεταβλητό πλήθος ορισµάτων Για το format string ισχύουν ανάλογα µ αυτά της printf. Τα ορίσµατα είναι διευθύνσεις στη µνήµη (δείκτες). scanf( %d, &N); Μορφοποιηµένη Πρότυπη Είσοδος: scanf (2) Παράδειγµα: int semester; float mark; char *name; scanf( %s %d %f, name, &semester, &mark); printf( Name: %s, Semester: %d, Mark: %.1f\n, name, semester, mark); ΓΕΩΡΓΙΟΥ Name: ΓΕΩΡΓΙΟΥ, Semester: 3, Mark:

25 Μορφοποιηµένη Πρότυπη Είσοδος: scanf (3) Η scanf επιστρέφει το πλήθος των ορισµάτων που ανέγνωσε σωστά. Έλεγχος για αποδεκτή είσοδο: Με χρήση και της fflush( ) int x, y; printf( ώστε δύο ακέραιους: ); while (scanf( %d %d, &x, &y)!= 2) fflush(stdin); printf( ώστε δύο ακέραιους: \n ); 394 Είσοδος/Έξοδος από/σε Αρχεία Βήµατα διαχείρισης αρχείου: Άνοιγµα αρχείου για ανάγνωση ή εγγραφή Ανάγνωση ή εγγραφή αρχείου Κλείσιµο αρχείου Σύνδεση ονόµατος αρχείου µε το αρχείο: Μέσω δείκτη σε δοµή τύπου FILE 395 Άνοιγµα Αρχείου: fopen (1) FILE *fopen(char *filename, char *mode); Ανοίγει αρχείο µε όνοµα filename γιαναχρησιµοποιηθεί µε τον τρόπο mode: r ανάγνωση (read) w εγγραφή (write) a προσθήκη (append) Επιστρέφει δείκτη στη δοµή FILE που περιέχει τις απαραίτητες πληροφορίες για την προσπέλαση του αρχείου. Επιστρέφει NULL αν κάτι δεν πήγε καλά. Άνοιγµα Αρχείου: fopen (2) Παράδειγµα: Έλεγχος ανοίγµατος αρχείου FILE *fp; /* δείκτης αρχείου (file pointer) */ char filename[10]; scanf( %s, filename); if ((fp = fopen(filename, r )) == NULL) printf( εν ανοίγει το αρχείο %s\n, filename);

26 Είσοδος/Έξοδος Χαρακτήρων από/σε Αρχείο getc(fp) Επιστρέφει τον ακέραιο κωδικό του επόµενου χαρακτήρα στο αρχείο που δείχνει ο fp. putc(ch, fp) Γράφει το χαρακτήρα ch στοαρχείοπου δείχνει ο fp. Πρότυπη Είσοδος/Έξοδος (1) Η πρότυπη είσοδος και έξοδος θεωρούνται επίσης αρχεία!! Πρότυπη είσοδος: Αρχείο µε δείκτη stdin Πρότυπη έξοδος: Αρχείο µε δείκτη stdout Πρότυπη Είσοδος/Έξοδος (2) #define getchar() getc(stdin) #define putchar(c) putc((c), stdout) Μορφοποιηµένη Έξοδος σε Αρχείο: fprintf fprintf(file *fp, char *format, ορ1, ορ2,...) Παρόµοια µε την printf, αλλά γράφει στο αρχείο fp αντί της πρότυπης εξόδου fprintf(stdout, ) printf( )

27 Μορφοποιηµένη Είσοδος από Αρχείο: fscanf fscanf(file *fp, char *format, ορ1, ορ2,...) Παρόµοια µε την scanf, αλλά διαβάζει από το αρχείο fp αντί της πρότυπης εισόδου fscanf(stdin, ) scanf( ) Κλείσιµο Αρχείου fclose(file *fp) Κλείνει το αρχείο που δείχνει ο fp (πλέον ο fp δεν δείχνει πουθενά). fcloseall() Κλείνει όλα τα ανοιχτά αρχεία. Με τον τερµατισµό του προγράµµατος κλείνουν αυτόµατα όλα τα αρχεία που αυτό έχει ανοίξει stderr και Χειρισµός Λαθών Πρότυπη έξοδος για µηνύµατα λάθους: stderr Εµφάνιση µηνυµάτων στην οθόνη ανεξάρτητα από τυχόν επανακατεύθυνση του stdout if (N < 0 N > MAX_N) fprintf(stderr, Μη αποδεκτή τιµή!\n ); return(1); Τερµατισµός του Προγράµµατος: exit exit (ακέραιος κωδικός) Τερµατίζει το πρόγραµµα, επιστρέφοντας κωδικό σφάλµατος στο λειτουργικό σύστηµα. if (N < 0 N > MAX_N) fprintf(stderr, Μη αποδεκτή τιµή!\n ); exit(1); Ισχυρότερη της return (γιατί;)

28 Είσοδος/Έξοδος Γραµµών (1) char *fgets(char *line, int maxline, FILE *fp); ιαβάζει το πολύ maxline χαρακτήρες από την επόµενη γραµµή του αρχείου fp, τους αποθηκεύει στο line και επιστρέφει δείκτη σ αυτό. int fputs(char *line, FILE *fp); Γράφει το αλφαριθµητικό line στο αρχείο fp κι επιστρέφει µηδέν αν όλα πήγαν καλά. Είσοδος/Έξοδος Γραµµών (2) Για πρότυπη είσοδο: gets(file *fp) Για πρότυπη έξοδο: puts(char *string, FILE *fp) Παράδειγµα: Συχνότητα εµφάνισης γραµµάτων #include <stdio.h> #include <ctype.h> main() char filename[20]; FILE *fp; int ch, freqs[26] = 0; printf( Αυτό το πρόγραµµα µετράει τις συχνότητες εµφάνισης \ των γραµµάτων σ ένα αρχείο.\n"); printf( ώστε το όνοµα τουαρχείου: "); scanf("%s", filename); if ((fp = fopen(filename, "r")) == NULL) fprintf(stderr, εν ανοίγει το αρχείο!\n"); return(1); while ((ch = getc(fp))!= EOF) if (!isalpha(ch)) continue; ch = tolower(ch); freqs[ch - 'a']++; printf( Οι συχνότητες των γραµµάτων είναι:\n"); for (ch = 0; ch < 26; ch++) printf("%c\t%3d\n", ch + 'a', freqs[ch]); return(0);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση της C είκτες Πίνακες

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

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

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

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

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

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

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

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

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

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

Περιεχόµενα. Πρόλογος... 15

Περιεχόµενα. Πρόλογος... 15 Πρόλογος... 15 Κεφάλαιο 1: Εισαγωγή... 17 Πώς να διαβάσετε αυτό το βιβλίο...18 Η γλώσσα C Ιστορική αναδροµή...19 Τα χαρακτηριστικά της C...20 C Μια δοµηµένη γλώσσα...20 C Μια γλώσσα για προγραµµατιστές...21

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

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

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

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

(Κεφάλαιο 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) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

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

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

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

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

Τύποι Δεδομένων Είσοδος/Έξοδος

Τύποι Δεδομένων Είσοδος/Έξοδος Εργαστήριο 2 ο Τύποι Δεδομένων Είσοδος/Έξοδος Εισαγωγή Σκοπός του εργαστηρίου αυτού είναι η εισαγωγή μας στους τύπους δεδομένων της C και η εξοικείωση μας με συναρτήσεις του ρεπερτορίου της ANSI C σχετικές

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

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

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης

Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης Κατηγορίες μνήμης εκτελέσιμου προγράμματος Στις καθολικές και στατικές μεταβλητές οι χώροι μνήμης δεσμεύονται κατά την διάρκεια της μεταγλώττισης.

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

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

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Αλφαριθμητικά και Αρχεία Αλφαριθμητικά (strings) Αρχεία (files) τα βασικά στοιχεία Αλφαριθμητικά της C Συμβολοσειρές (= ακολουθίες

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

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

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

Προγραμματισμός σε C. Αρχεία κειμένου (Text files)

Προγραμματισμός σε C. Αρχεία κειμένου (Text files) Προγραμματισμός σε C Αρχεία κειμένου (Text files) Εισαγωγή Στη C έχουμε ειδικές συναρτήσεις για να επεξεργαζόμαστε αρχεία κειμένου που αποθηκεύονται στο δίσκο Τα αρχεία είναι σημαντικά για μόνιμη αποθήκευση

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του

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

Προγραμματισμός σε C. Αρχεία κειμένου (Text files)

Προγραμματισμός σε C. Αρχεία κειμένου (Text files) Προγραμματισμός σε C Αρχεία κειμένου (Text files) Εισαγωγή Στη C έχουμε ειδικές συναρτήσεις για να επεξεργαζόμαστε αρχεία κειμένου που αποθηκεύονται στο δίσκο Τα αρχεία είναι σημαντικά για μόνιμη αποθήκευση

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

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος A. Συναρτήσεις ροής εξόδου stdout 1. Γενικά 2. Η συνάρτηση putchar() 3. Οι συναρτήσεις putc() και fputc()

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

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

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

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

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

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

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

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp)

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp) Συναρτήσεις πρότυπης βιβλιοθήκης Στο πρώτο μέρος δίνονται, με αλφαβητική σειρά, μερικές από τις πιο συνηθισμένες συναρτήσεις βιβλιοθήκης που συνοδεύουν τους σύγχρονους μεταγλωττιστές της C. Κάτω από το

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

Η Γλώσσα C Μία Σφαιρική Ανασκόπηση

Η Γλώσσα C Μία Σφαιρική Ανασκόπηση Η Γλώσσα C Μία Σφαιρική Ανασκόπηση Η γλώσσα C αναπτύχθηκε το 1972 από τον Dennis Ritchie στα ΑΤ & Τ Laboratories. Οδηγίες προς τον προεπεξεργαστή Εισδοχή Βιβλιοθηκών #include #include

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

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

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

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

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

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

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

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009 Προγραµµατισµός Ι (ΗΥ10) ιάλεξη : Πίνακες, Αλφαριθµητικά Πίνακες Ο πίνακας είναι µια ειδική δοµή για την αποθήκευση µιας σειράς από δεδοµένα του ίδιου τύπου. Η δήλωσηενός πίνακα γίνεται όπως για µια κανονική

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι δείκτες στη C Η έννοια του δείκτη Την έννοια του δείκτη τη συναντήσαμε σε προηγούμενα μαθήματα. Η συνάρτηση scanf(), καταχωρίζει τιμές σε μεταβλητές χρησιμοποιώντας τον τελεστή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Βιβλιοθήκη stdio. Προγραμματισμός II 1 Βιβλιοθήκη 1 lalis@inf.uth.gr Δεδομένα και ερμηνεία (ξανά) Τα δεδομένα στον Η/Υ έχουν δυαδική μορφή (bytes) Η ερμηνεία των bytes εξαρτάται από το πρόγραμμα που παράγει/καταναλώνει τα δεδομένα Μια δημοφιλής

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

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

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

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

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

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

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

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

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

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

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

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

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 Ευρετήριο Η γλώσσα C σε βάθος # #define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 A abs(), 625 AND, 64 ASCII πίνακας

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

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

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

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ FILE SYSTEM >_ ΔΙΚΑΙΩΜΑΤΑ >_ ΔΙΚΑΙΩΜΑΤΑ? >_ ΜΕΤΑΒΟΛΗ ΔΙΚΑΙΩΜΑΤΩΝ +- chmod

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

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

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

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

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

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

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Βιβλιοθήκη stdio. Προγραμματισμός II 1 Βιβλιοθήκη 1 lalis@inf.uth.gr Σύνοψη Ορίστηκε από τον Dennis Ritchie το 1975 Μέρος του προτύπου ANSI C Λειτουργίες εισόδου/εξόδου υψηλού επίπεδου και ανεξάρτητες λειτουργικού συστήματος Υποστήριξη για

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

Εισαγωγή στον Προγραμματισμό (με. τη C) Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr

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

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

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

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

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

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

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

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

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) Κεφάλαιο 9.1-9.2 Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) ( ιάλεξη 19) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1) Strings στη C Ένα string είναι µία ακολουθία αλφαριθµητικών χαρακτήρων, σηµείων στίξης κτλ. Π.χ.

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

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1 Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

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

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

Προγραμματισμό για ΗΜΥ ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 4 Είσοδος/Έξοδος εδομένων Θέματα ιάλεξης Συνάρτηση εξόδου

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

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

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

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

Διάλεξη 9: Δυναμική Δέσμευση Μνήμης

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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