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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 8η: Αλφαριθμητικά (strings)

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

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

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

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

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

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

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

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

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

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

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

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

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

Συναρτήσεις διαχείρισης αλφαριθμητικών

Προγραµµατισµός Ι Αλφαριθµητικά Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι 1 Νικόλαος Δ.

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

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

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

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

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

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

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

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

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

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

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

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

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

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

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Προγραμματιστικές τεχνικές

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

FILE *fopen(const char *fname, const char *mode) void fclose(file *f) void fflush(file *f)

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

Η γλώσσα προγραμματισμού C Χειρισμός αρχείων

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

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

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

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

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

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

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

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

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

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

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

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

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

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

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

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

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

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

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

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

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

4ο σετ σημειώσεων - Χειρισμός αρχείων και structs

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

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

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

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

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

ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ. Mε την εντολή αυτή μπορούμε να δημιουργήσουμε έναν καινούριον υποκατάλογο.

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

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

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

Χpήσιµες Βιβλιοθήκες της γλώσσας C

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

Η γλώσσα C. Διαχείριση Συμβολοσειρών

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

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

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

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

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

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

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

Transcript:

Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου

Αλφαριθμητικά και Αρχεία Αλφαριθμητικά (strings) Αρχεία (files) τα βασικά στοιχεία

Αλφαριθμητικά της C Συμβολοσειρές (= ακολουθίες χαρακτήρων) Όχι ξεχωριστός τύπος Πίνακες τύπου char προσοχή στο χαρακτήρα τερματισμού! Ιδιαίτερη μεταχείριση Υποστήριξη βιβλιοθήκης

Δήλωση Αλφαριθμητικών Όπως οι απλοί πίνακες Διαφοροποίηση στην αρχικοποίηση char message[20]; char x[] = this is a string! ; char y[10] = { s, t, r, i, n, g }; char z[][10] = { number1, number2 };

Αποθήκευση Κάθε χαρακτήρας ένα byte εφόσον έχουμε ASCII χαρακτήρες Ειδικός χαρακτήρας τερματισμού: \0 Υπονοείται σε έκφραση διπλών εισαγωγικών this is a string! 18 χαρακτήρες Δεν υπονοείται σε έκφραση απλών χαρακτήρων { s, t, r, i, n, g } 6 χαρακτήρες { s, t, r, i, n, g, \0 } 7 χαρακτήρες

Συνηθισμένο Λάθος Όχι χώρος για το χαρακτήρα τερματισμού! Μπορεί να οδηγήσει σε απρόβλεπτα λάθη char x[6] = string ; printf( %s,x); stringh-a ( char y[] = { e, r, r, o, r }; printf( %s,y); errorstringh-a (

Απρόβλεπτο Λάθος int x = -10; char y[] = { s, o, m, e, t, h, i, n, g }; printf ( y=\"%s\"\nx=%d\n,y,x); y[9] = \0 ; printf ( y=\"%s\"\nx=%d\n,y,x); Τι θα τυπωθεί; y="something h-a (" x=-10 y="something" x=-256

Πίνακες και Δείκτες Αλφαριθμητικό ως πίνακας char x[] = string ; Αλφαριθμητικό ως δείκτης char *y = string ; Ίδιος τρόπος αναφοράς, αλλά διαφορετική αποθήκευση x[2], *(x+1), y[0], *(y+3) y = other string ; x = you cannot do this ;

Είσοδος / Έξοδος Μορφότυπος %s για τις scanf() και printf() Συναρτήσεις gets() και puts() char * gets(char*); int puts(const char*); Συναρτήσεις sscanf() και sprintf() ανάγνωση από πληκτρολόγιο εκτύπωση στην οθόνη Όμοιες με τις scanf() και printf() με επιπλέον πρώτο όρισμα ένα αλφαριθμητικό από όπου διαβάζουμε ή στο οποίο γράφουμε

Παράδειγμα char x[30]; printf( what is your name?\n ); gets(x); Τι γίνεται αν ο χρήστης είναι Ινδός και έχει μακρύ όνομα; Κίνδυνος υπερχείλισης και σφάλματος! Γενικά η gets() θεωρείται επικίνδυνη συνάρτηση και αποφεύγεται

Παράδειγμα char *record[2] = { Costas 2314 30 m, Eleni 2718 26 f }; char name[10], all[100], gen; int i, AM, age; for (i = 0; i < 2; i++) { sscanf(record[i], %s %d %d %c, name, &AM, &age, &gen); if (gen == m ) sprintf(all, His name is %s, AM is %d, age is %d., name, AM, age); else sprintf(all, Her name is %s, AM is %d, age is %d., name, AM, age); printf( %s\n,all); }

Βιβλιοθήκη string size_t strlen(const char *); char *strcpy(char *, const char *); char *strncpy(char *, const char *, size_t); char *strcat(char *, const char *); char *strncat(char *, const char *, size_t); int strcmp(const char *, const char *); int strncmp(const char *, const char *, size_t);

Άλλες Συναρτήσεις Από βιβλιοθήκη stdlib int atoi(const char *); double atof(const char *); Από βιβλιοθήκη ctype int isalnum(int); int isalpha(int); int isdigit(int);

Αρχεία της C Δομές με τις οποίες μπορούμε να ανοίξουμε, να κλείσουμε, να διαβάσουμε και να γράψουμε ένα αρχείο του δίσκου Ο τύπος των δομών αυτών ονομάζεται FILE και ορίζεται στη βιβλιοθήκη stdio Προς το παρόν δε μας απασχολεί η μορφή μιας δομής FILE Διαχωρισμός σε αρχεία κειμένου και δυαδικά αρχεία Προς το παρόν θα δούμε μόνο αρχεία κειμένου

Άνοιγμα Αρχείου Θέλουμε το όνομα του αρχείου Καλούμε τη συνάρτηση fopen(): FILE * fopen(const char *, const char *); Η δεύτερη παράμετρος είναι ο τύπος προσπέλασης του αρχείου r για ανάγνωση, w για εγγραφή Αν το αποτέλεσμα είναι NULL, τότε συνέβη κάποιο σφάλμα στο άνοιγμα του αρχείου Διαφορετικά κρατάμε το δείκτη στη δομή FILE και ξεχνάμε το όνομα του αρχείου

Είσοδος / Έξοδος Συναρτήσεις fscanf() και fprintf() Όμοιες με τις scanf() και printf() με επιπλέον πρώτο όρισμα ένα δείκτη σε τύπο FILE από όπου διαβάζουμε ή όπου γράφουμε Η πρώτη επιστρέφει το πλήθος στοιχείων που διαβάστηκαν επιτυχώς ή τη σταθερά EOF σε περίπτωση σφάλματος Η δεύτερη επιστρέφει το πλήθος χαρακτήρων που εκτυπώθηκαν ή κάποιο αρνητικό αριθμό σε περίπτωση σφάλματος

Είσοδος / Έξοδος Συναρτήσεις fgetc() και fputc() για ανάγνωση και εγγραφή χαρακτήρα int fgetc(file *); int fputc(int, FILE *); Συναρτήσεις fgets() και fputs() για ανάγνωση και εγγραφή αλφαριθμητικού Ανάγνωση με μέγιστο πλήθος χαρακτήρων char * fgets(char *, int, FILE *); int fputs(char *, FILE *);

Άλλες Συναρτήσεις Ε/Ε Κλείσιμο αρχείου int fclose(file *); Άδειασμα δομής εγγράψιμου αρχείου int fflush(file *); Έλεγχος τέλους αρχείου int feof(file *); Έλεγχος σφάλματος στην τελευταία προσπέλαση του αρχείου int ferror(file *);

Σειρά Προσπέλασης Σειριακή Η δομή αρχείου διατηρεί έναν δείκτη που προχωράει σειριακά από την αρχή προς το τέλος του αρχείου Με τη συνάρτηση rewind() επαναφέρουμε το δείκτη στην αρχή του αρχείου void rewind(file *); Τυχαία προσπέλαση

Τι Μάθαμε Σήμερα Αλφαριθμητικά της C Δήλωση και αρχικοποίηση Αποθήκευση Αναφορά ως πίνακας και ως δείκτης Σφάλματα με αλφαριθμητικά Συναρτήσεις χειρισμού αλφαριθμητικών Βασικά στοιχεία αρχείων της C Κύριες λειτουργίες και βασικές συναρτήσεις προσπέλασης αρχείων κειμένου