Προγραμματισμός II Τα κανάλια stdin, stdout, stderr κανάλι καθιερωμένης εισόδου stdin κανάλι καθιερωμένης εξόδου stdout κανάλι σφαλμάτων stderr

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

Download "Προγραμματισμός II Τα κανάλια stdin, stdout, stderr κανάλι καθιερωμένης εισόδου stdin κανάλι καθιερωμένης εξόδου stdout κανάλι σφαλμάτων stderr"

Transcript

1

2 Τα κανάλια stdin, stdout, stderr Kάθε φορά που ξεκινά η εκτέλεση ενός προγράμματος, ο υπολογιστής ανοίγει αυτόματα το κανάλι καθιερωμένης εισόδου stdin (standard input), το κανάλι καθιερωμένης εξόδου stdout (standard output) και το κανάλι σφαλμάτων stderr (standard errors). Γενικά αυτά τα κανάλια αναφέρονται στην κονσόλα αλλά το λειτουργικό σύστημα μπορεί να τα ανακατευθύνει σε κάποια άλλη συσκευή. Επειδή πρόκειται για δείκτες αρχείου το σύστημα Ι/Ο με ενδιάμεση αποθήκευση (buffering) μπορεί να χρησιμοποιεί αυτά τα κανάλια για να εκτελεί λειτουργίες Ι/Ο στην κονσόλα. To stdin χρησιμοποιείται για ανάγνωση από την κονσόλα και τα stdout, stderr για εγγραφή στην κονσόλα. Μπορούν να χρησιμοποιηθούν τα stdin, stdout, stderr ως δείκτες αρχείου σε οποιαδήποτε συνάρτηση χρησιμοποιεί μία μεταβλητή τύπου FILE *.*

3 Τα κανάλια stdin, stdout, stderr Μπορούν να ανακατευθυνθούν τα κανάλια και να γράφονται τα μηνύματα λάθους σε αρχείο αντί να εμφανίζονται στην οθόνη. Με την εντολή program_name < filename ορίζεται ως κύρια είσοδος αντί του πληκτρολογίου το αρχείο filename. Με την εντολή program_name > filename ορίζεται ως κύρια έξοδος αντί για την οθόνη το αρχείο filename. Οι παραπάνω εντολές δίνονται από τη γραμμή διαταγής (command line). Η printf γράφει στο stdout και η scanf στο stdin. Τα stdin, stdout, stderr δεν είναι μεταβλητές αλλά σταθερές και δεν μπορούν να αλλαχθούν. Όπως ο υπολογιστής δημιουργεί αυτόματα αυτούς τους δείκτες αρχείου στην αρχή του προγράμματος, έτσι και τους αποσύρει αυτόματα στο τέλος του προγράμματος. Δε θα πρέπει να κλείσουν αυτά τα κανάλια με παρέμβαση του χρήστη.

4 Ενδιάμεση μνήμη (buffer) Για ανάγνωση κι εγγραφή σε συσκευές εισόδου/εξόδου (input/output, Ι/Ο), όπως ο σκληρός δίσκος, τα λειτουργικά συστήματα χρησιμοποιούν ενδιάμεση μνήμη (buffers), η οποία είναι περιοχή της μνήμης όπου τα δεδομένα αποθηκεύονται προσωρινά πριν σταλούν στον τελικό τους στόχο. Έτσι επιταχύνονται τα προγράμματα γιατί ελαχιστοποιείται ο αριθμός των προσβάσεων στις Ι/Ο συσκευές. Οι μονάδες Ι/Ο επιτρέπουν στο λειτουργικό σύστημα να έχει πρόσβαση μόνο σε καθορισμένου μεγέθους τμήματα, τα ονομαζόμενα blocks, μεγέθους 512 ή 1024 bytes. Επομένως, ακόμη κι αν θέλουμε να διαβάσουμε μόνο ένα χαρακτήρα από ένα αρχείο, το λειτουργικό σύστημα διαβάζει όλο το μπλοκ στο οποίο βρίσκεται αποθηκευμένος ο χαρακτήρας. Έτσι, με τη χρήση του buffer, εάν χρειασθούμε άλλους χαρακτήρες από το ίδιο μπλοκ δεν επιστρέφουμε στη συσκευή αλλά τους διαβάζουμε από το buffer.

5 Δύο ευρείες τάξεις αρχείων Δυαδικά αρχεία (binary files): Αποθηκεύουν κάθε τύπο δεδομένου: οριζόμενο από το χρήστη, char, int, float, double, string, data struct, κ.λ.π. Συνήθως ΔΕΝ είναι αναγνώσιμα από τους συντάκτες (editors) Συνήθως ΔΕΝ είναι φορητά (δεν ανοίγουν σε όλα τα μηχανήματα) Αρχεία κειμένου (text files) Αποθηκεύουν μία ακολουθία (ένα ρεύμα - stream ) από bytes χαρακτήρων. Είναι αναγνώσιμα από τους συντάκτες (π.χ. αρχεία.h,.c) Είναιφορητάσεκάθευπολογιστή(σχεδόν)

6 Στα αρχεία κειμένου τα πάντα αποθηκεύονται ως ακολουθίες χαρακτήρων (τα stdin, stdout είναι ανοικτά ως κανάλια κειμένου). Στα δυαδικά αρχεία ο μεταγλωττιστής δεν κάνει μεταγλώττιση των bytes, απλά διαβάζει και γράφει bits, ακριβώς όπως αυτά εμφανίζονται. Παράδειγμα: Ο αριθμός εγγράφεται ως αλφαριθμητικό σε αρχείο κειμένου, απαιτώντας 6 bytes (1 για κάθε χαρακτήρα κι ένα για το χαρακτήρα τερματισμού \0 ). Αντίθετα, σε ένα δυαδικό αρχείο εγγράφεται ως ακέραιος, απαιτώντας 4 bytes.

7 Άνοιγμα κλείσιμο αρχείου ΠΑΝΤΟΤΕ να ανοίγετε ένα αρχείο πριν τη χρήση, ΠΑΝΤΟΤΕ να το κλείνετε όταν περατώνεται η χρήση του. FILE *pf* pf; /* δήλωση ενός pointer σε μεταβλητή FILE */ pf = fopen( myfile.txt myfile.txt, r ); /* άνοιγμα αρχείου */ fclose(pf); /*... Διάφορες λειτουργίες...*/ Το όνομα αρχείου εισέρχεται ως string (ο δείκτης δείχνει στον πρώτο χαρακτήρα του) Προσδιοριστής string που ελέγχει το είδος της πρόσβασης

8 Άνοιγμα κλείσιμο αρχείου FILE *pf* pf; /* δήλωση ενός pointer σε μεταβλητή FILE */ pf = fopen( myfile.txt myfile.txt, r ); /* άνοιγμα αρχείου */ fclose(pf); /*... Διάφορες λειτουργίες...*/ Επιστρεφόμενη τιμή: pointer-to-file (ή NULL σε περίπτωση σφάλματος)

9 Άνοιγμα κλείσιμο αρχείου FILE *pf* pf;/* δήλωση ενός pointer σε μεταβλητή FILE */ pf = fopen( myfile.txt myfile.txt, r ); /* άνοιγμα αρχείου */ fclose(pf); /*... Διάφορες λειτουργίες...*/ Κλείσιμο αρχείου: Επιστρέφει 0 όταν κλείνει σωστά ή EOF όταν υπάρχει σφάλμα

10 Άνοιγμα κλείσιμο αρχείου FILE *pf* pf; /* δήλωση ενός pointer σε μεταβλητή FILE */ pf = fopen( myfile.txt myfile.txt, r ); /* άνοιγμα αρχείου */ fclose(pf); /*... Διάφορες λειτουργίες...*/ Εάν θέλουμε ολόκληρη τη διαδρομή μέσα στο μέσο αποθήκευσης: Π.χ. pf = fopen("c:\\teicm teicm\\progrii\\myfile.txt","r"); ");

11 Άνοιγμα κλείσιμο αρχείου Η fopen δεσμεύει τους απαραίτητους πόρους από το λειτουργικό σύστημα, δημιουργεί το κανάλι επικοινωνίας κι επιστρέφει στο πρόγραμμα που την κάλεσε ένα δείκτη, που δείχνει σε δομή τύπου FILE. Ο δείκτης, που δείχνει σε δομή τύπου FILE, είναι γνωστός ως διαχειριστής ή δείκτης αρχείου (file handler ή file descriptor). Χρησιμοποιείται για να κρατήσει την ταυτότητα του καναλιού που επιστρέφεται από την fopen. Η FILE ορίζεται στο <stdio.h>. Ένα από τα πεδία της δομής FILE είναι ο δείκτης θέσης αρχείου (file position indicator), ο οποίος δείχνει στο byte από όπου ο επόμενος χαρακτήρας πρόκειται να διαβασθεί ή όπου ο επόμενος χαρακτήρας πρόκειται να εγγραφεί.

12 Άνοιγμα κλείσιμο αρχείου Παράμετροι προσδιορισμού του τρόπου πρόσβασης σε αρχεία κειμένου: r : άνοιγμα αρχείου για ανάγνωση. Ο δείκτης θέσης αρχείου βρίσκεται στην αρχή του κειμένου. w : δημιουργία νέου αρχείου για εγγραφή. Εάν το αρχείο υπάρχει ήδη, το μέγεθός του θα μηδενισθεί και τα περιεχόμενα θα διαγραφούν. Ο δείκτης θέσης αρχείου τίθεται στην αρχή του αρχείου. a : άνοιγμα υπάρχοντος αρχείου κειμένου, στο οποίο όμως μπορούμε να γράψουμε μόνο στο τέλος του αρχείου. r+ r+ : άνοιγμα υπάρχοντος αρχείου κειμένου για ανάγνωση και εγγραφή. Ο δείκτης θέσης αρχείου τίθεται στην αρχή του αρχείου. w+ w+ : δημιουργία νέου αρχείου για ανάγνωση και εγγραφή. Εάν το αρχείο υπάρχει ήδη, το μέγεθός του θα μηδενισθεί και τα περιεχόμενα θα διαγραφούν.

13 Παράμετροι προσδιορισμού του τρόπου πρόσβασης σε αρχεία κειμένου (συνέχεια): a+ a+ : άνοιγμα υπάρχοντος αρχείου ή δημιουργία νέου σε append μορφή. Μπορούμε να διαβάσουμε δεδομένα από οποιοδήποτε σημείο του αρχείου, αλλά μπορούμε να γράψουμε δεδομένα μόνο στη θέση του δείκτη end-of-file. Οι προσδιοριστές για τα δυαδικά αρχεία μορφή είναι ίδιοι, με τη διαφορά ότι έχουν ένα b που τους ακολουθεί. Έτσι, για να ανοίξουμε ένα δυαδικό αρχείο και να διαβάσουμε, θα πρέπει να χρησιμοποιήσουμε τον προσδιοριστή rb.

14 Παρατηρήσεις: Προγραμματισμός II Άνοιγμα κλείσιμο αρχείου 1) Ο δείκτης FILE χειρίζεται κατά τρόπο αποκλειστικό το αρχείο 2) Στους δείκτες FILE δεν επιτρέπεται «αριθμητική δεικτών»!!! Π.χ. fclose(pf); /* σωστό */ fclose(pf+1); /* ΛΑΘΟΣ */ 3) fopen():δεσμεύει μνήμη. Εάν ξεχάσουμε να την απελευθερώσουμε με fclose() θα έχουμε μεγάλη διαρροή μνήμης!!

15 fprintf(): «Τύπωσε στο αρχείο» formatted print output, to file Ακριβώς οι ίδιοι μορφολογικοί κανόνες με εκείνους της printf() float flot; int cnt,, k; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]= This is my song!\n ; /* string */ pf = fopen( testfile.txt testfile.txt, w ); cnt = fprintf(pf, %s,yep!%d,%f, %s,yep!%d,%f,\n,msg,21,34.5);,msg,21,34.5); fclose(pf); Άνοιγμα αρχείου για εγγραφή

16 fprintf(): «Τύπωσε στο αρχείο» int cnt; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]= This is my song!\n ; /* string */ pf = fopen( testfile.txt testfile.txt, w ); cnt = fprintf(pf, (pf, %s,yep!%d,%f,\n,msg,21,34.5); fclose(pf); Εγγραφή string, όπως ακριβώς στην printf

17 fprintf(): «Τύπωσε στο αρχείο» int cnt; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]= This is my song!\n ; /* string */ pf = fopen( testfile.txt testfile.txt, w ); cnt = fprintf(pf, (pf, %s,yep!%d,%f,\n,msg,21,34.5); fclose(pf); Λίστα από pointers-to to-items προς εγγραφή: : string, int, float,

18 fprintf(): «Τύπωσε στο αρχείο» int cnt; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]= This is my song!\n ; /* string */ pf = fopen( testfile.txt testfile.txt, w ); cnt = fprintf(pf, (pf, %s,yep!%d,%f,\n,msg,21,34.5);,msg,21,34.5); fclose(pf); Επιστρεφόμενη τιμή: Ο αριθμός των bytes που ενεγράφησαν στο αρχείο

19 fprintf(): «Τύπωσε στο αρχείο» int cnt; FILE *pf* pf; /* declare a pointer-to to-file */ char msg[40]= This is my song!\n ; /* string */ pf = fopen( testfile.txt testfile.txt, w ); cnt = fprintf(pf, %s,yep!%d,%f, %s,yep!%d,%f,\n,msg,21,34.5);,msg,21,34.5); fclose(pf); Τέλος εργασιών, κλείσιμο του αρχείου

20 fscanf(): Προγραμματισμός II (): «Διάβασε κείμενο από αρχείο» formatted scanned input, from file Ακριβώς οι ίδιοι μορφολογικοί κανόνες με εκείνους της scanf() float flot; int cnt,, k; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]; pf = fopen( testfile.txt testfile.txt, r ); );assert(pf cnt = fscanf(pf, %s %d %f,msg,&k,&flot%,msg,&k,&flot); fclose(pf); assert(pf!=null); Άνοιγμα αρχείου για ανάγνωση

21 fscanf(): Προγραμματισμός II (): «Διάβασε κείμενο από αρχείο» float flot; int cnt,, k; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]; pf = fopen( testfile.txt testfile.txt, r ); assert(pf!=null); cnt = fscanf(pf, %s %d %f,msg,&k,&flot%,msg,&k,&flot); fclose(pf); pointer-to to-file

22 fscanf(): Προγραμματισμός II (): «Διάβασε κείμενο από αρχείο» float flot; int cnt,, k; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]; pf = fopen( testfile.txt testfile.txt, r );assert(pf!=null); cnt = fscanf(pf, (pf, %s %d %f,msg% msg,&k,&flot); fclose(pf); Ανάγνωση string, όπως ακριβώς στην scanf, χωρίς &

23 fscanf(): Προγραμματισμός II (): «Διάβασε κείμενο από αρχείο» float flot; int cnt,, k; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]; pf = fopen( testfile.txt testfile.txt, r );assert(pf!=null); cnt = fscanf(pf, (pf, %s %d %f,msg%,msg,&k,&flot); fclose(pf); Λίστα από pointers-to to-items προς ανάγνωση: int, float,

24 fscanf(): Προγραμματισμός II (): «Διάβασε κείμενο από αρχείο» float flot; int cnt,, k; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]; pf = fopen( testfile.txt testfile.txt, r );assert(pf!=null); cnt = fscanf(pf, (pf, %s %d %f,msg,&k,&flot%,msg,&k,&flot); fclose(pf); Επιστρεφόμενη τιμή: Ο αριθμός των στοιχείων που ανεγνώσθησαν. Σε περίπτωση σφάλματος θα επιστραφεί το μηδέν ή το EOF

25 fscanf(): Προγραμματισμός II (): «Διάβασε κείμενο από αρχείο» float flot; int cnt,, k; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]; pf = fopen( testfile.txt testfile.txt, r ); cnt = fscanf(pf, %s %d %f,msg,&k,&flot%,msg,&k,&flot); fclose(pf); Τέλος εργασιών, κλείσιμο του αρχείου

26 Προσοχή: Παρόλο που η χρήση των fprintf() (), fscanf() είναι συχνά ο πιο εύκολος τρόπος για να γράφουμε ή να διαβάζουμε μία συλλογή δεδομένων σε ένα αρχείο δίσκου, δεν είναι πάντοτε και ο πιο αποτελεσματικός. Επειδή γράφουμε φορμαρισμένα δεδομένα ASCII, όπως θα εμφανίζονταν στην οθόνη κι όχι δυαδικά, κάνουμε περισσότερα πράγματα σε κάθε κλήση και καταλαμβάνουμε περισσότερο χώρο. Έτσι, εάν μας ενδιαφέρει η ταχύτητα ή το μέγεθος του αρχείου, θα πρέπει πιθανώς να χρησιμοποιήσουμε τις συναρτήσεις fread() και fwrite() ().

27 Ανάγνωση αρχείου: : fread() αρχείο στη Αντιγράφει bytes από το αρχείο στη μνήμη Θα πρέπει να έχετε εξασφαλίσει επαρκή μνήμη! FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; // προσωρινή αποθήκευση int n,cnt; /* άνοιγμα αρχείου για ανάγνωση */ pf = fopen( myfile.qzk myfile.qzk, r ); if (pf( == NULL) exit(-1); /*(σφάλμα σφάλμα!) */ n = 32; cnt = fread(buf, sizeof(int), n, pf); Άνοιγμα αρχείου για ανάγνωση (σε περίπτωση σφάλματος: έξοδος) Εναλλακτικά: assert(pf!=null)

28 Ανάγνωση αρχείου: : fread() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για ανάγνωση */ pf = fopen( myfile.qzk myfile.qzk, r ); if (pf( pf==null) exit(-1); /*(σφάλμα σφάλμα!) */ n = 32; cnt = fread(buf, sizeof(int), n, pf); Δείκτης που δείχνει στον buffer. Διατηρεί τουλάχιστον n στοιχεία οιουδήποτε είδους. (στην παρούσα περίπτωση ακέραιοι)

29 Ανάγνωση αρχείου: : fread() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για ανάγνωση */ pf = fopen( myfile.qzk myfile.qzk, r ); if (pf( pf==null) exit(-1); /*(σφάλμα σφάλμα!) */ n = 32; cnt = fread(buf buf, sizeof(int),, n, pf); το μέγεθος των προς ανάγνωση στοιχείων (σε bytes) (στην παρούσα περίπτωση ακέραιοι)

30 Ανάγνωση αρχείου: : fread() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου προς ανάγνωση */ pf = fopen( myfile.qzk myfile.qzk, r ); if (pf( pf==null) exit(-1); /*(σφάλμα σφάλμα!) */ n = 32; cnt = fread(buf buf, sizeof(int), n, pf); Ο αριθμός των προς ανάγνωση στοιχείων

31 Ανάγνωση αρχείου: : fread() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για ανάγνωση */ pf = fopen( myfile.qzk myfile.qzk, r ); if (pf( pf==null) exit(-1); /*(σφάλμα σφάλμα!) */ n = 32; cnt = fread(buf buf, sizeof(int), n, pf); pointer-to to-file που δείχνει στο προς ανάγνωση αρχείο

32 Ανάγνωση αρχείου: : fread() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για ανάγνωση */ pf = fopen( myfile.qzk myfile.qzk, r ); if (pf( pf==null) exit(-1); /*(σφάλμα σφάλμα!) */ n = 32; cnt = fread(buf, sizeof(int), n, pf); if (cnt( cnt!=n) return(-1); /*(σφάλμα σφάλμα!) */ Επιστρεφόμενη τιμή: Αριθμός στοιχείων που ανεγνώσθησαν επιτυχώς

33 Eγγραφή σε αρχείο: fwrite() αρχείο Aντιγράφει bytes από τη μνήμη στο αρχείο Η σύνταξη και η χρήση είναι αντίστοιχες με την fread()! FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για εγγραφή */ pf = fopen( myfile.qzk myfile.qzk, w ); n = 32; cnt = fwrite(buf, sizeof(int), n, pf); if(cnt!=n) exit(-1); /*(σφάλμα σφάλμα!) */ Άνοιγμα αρχείου για εγγραφή (σε περίπτωση σφάλματος, έξοδος)

34 Εγγραφή σε αρχείο: fwrite() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για εγγραφή */ pf = fopen( myfile.qzk myfile.qzk, w ); n = 32; cnt = fwrite(buf buf, sizeof(int), n, pf); if (cnt( cnt!=n) exit(-1); /*(σφάλμα σφάλμα!) */ Δείκτης που δείχνει στον buffer. Διατηρεί τουλάχιστον n στοιχεία οιουδήποτε είδους. (στην παρούσα περίπτωση ακέραιοι)

35 Εγγραφή σε αρχείο: fwrite() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για εγγραφή */ pf = fopen( myfile.qzk myfile.qzk, w ); n = 32; cnt = fwrite(buf (buf, sizeof(int),, n, pf); if (cnt( cnt!=n) exit(-1); /*(σφάλμα σφάλμα!) */ το μέγεθος των προς εγγραφή στοιχείων (σε bytes) (στην παρούσα περίπτωση ακέραιοι)

36 Εγγραφή σε αρχείο: fwrite() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για εγγραφή */ pf = fopen( myfile.qzk myfile.qzk, w ); n = 32; cnt = fwrite(buf (buf, sizeof(int), n, pf); if (cnt( cnt!=n) exit(-1); /*(σφάλμα σφάλμα!) */ Ο αριθμός των προς εγγραφή στοιχείων

37 Εγγραφή σε αρχείο: fwrite() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για εγγραφή */ pf = fopen( myfile.qzk myfile.qzk, w ); n = 32; cnt = fwrite(buf (buf, sizeof(int), n, pf); if (cnt( cnt!=n) exit(-1); /*(σφάλμα σφάλμα!) */ pointer-to to-file που δείχνει στο προς εγγραφή αρχείο

38 Εγγραφή σε αρχείο: fwrite() FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ int buf[40]; int n,cnt; /* άνοιγμα αρχείου για εγγραφή */ pf = fopen( myfile.qzk myfile.qzk, w ); n = 32; cnt = fwrite(buf (buf, sizeof(int), n, pf); if (cnt( cnt!=n) exit(-1); /*(σφάλμα σφάλμα!) */ Επιστρεφόμενη τιμή: Αριθμός στοιχείων που ενεγράφησαν επιτυχώς

39 Aλφαριθμητικά και fwrite() Σφάλμα: αμελούμε να γράψουμε τον τερματιστή του string Θυμηθείτε ότι η strlen(msg) ΔΕ μετρά το μηδενικό χαρακτήρα \0, ο οποίος τελειώνει το αλφαριθμητικό!! int cnt; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]= This is my song!\n ; /* string */ pf = fopen( music.mdi music.mdi, w ); cnt= fwrite(msg, sizeof(char), strlen(msg),pf,pf); ΣΦΑΛΜΑ! - ατελής εγγραφή string - Δε γράφει στο αρχείο το χαρακτήρα τερματισμού

40 Aλφαριθμητικά και fwrite() int cnt; FILE *pf* pf; /* δήλωση ενός pointer-to to-file */ char msg[40]= This is my song!\n ; /* string */ pf = fopen( music.mdi music.mdi, w ); cnt= fwrite(msg,, sizeof(char),1+strlen(msg) 1+strlen(msg),pF); Το σφάλμα διορθώνεται με την προσθήκη μίας μονάδας στη strlen() (), ώστε να περιληφθεί ο χαρακτήρας τερματισμού του αλφαριθμητικού

41 Αλφαριθμητικά και fread() Αρχείο κειμένου (text file) == Αρχείο αποτελούμενο αποκλειστικά από αλφαριθμητικά Tα αρχεία κειμένου είναι πιο επίφοβα από τα αριθμητικά αρχεία Ποιο είναι το μέγιστο μήκος αλφαριθμητικού μέσα στο αρχείο; Δεν το γνωρίζουμε έως ότου διαβάσουμε το αρχείο Οι τροποποιήσεις των scanf, printf επιτελούν όλο το έργο!

42 putc(): «Τύπωσε χαρακτήρα στο αρχείο» Πρωτότυπο της συνάρτησης: int putc(int ch,, FILE *pf* pf); όπου pf ο δείκτης αρχείου που επιστρέφεται από την fopen και ch είναι ο προς εγγραφή χαρακτήρας. Για ιστορικούς λόγους ο ch ονομάζεται int αλλά χρησιμοποιεί μόνο ένα byte, το byte χαμηλής τάξης (ανοίξτε το stdio.h για να το επιβεβαιώσετε). Εάν η λειτουργία της συνάρτησης επιτύχει, επιστρέφεται ο χαρακτήρας που γράφτηκε. Αν αποτύχει, θα επιστρέψει το EOF (Εnd Of File, τέλος αρχείου, ακέραιος με τιμή -1).

43 getc(): «Διάβασε χαρακτήρα από αρχείο» Είναι συμπληρωματική της putc() (). Πρωτότυπο της συνάρτησης: int getc(file *pf); όπου pf ο δείκτης αρχείου που επιστρέφεται από την fopen. Για ιστορικούς λόγους η getc() επιστρέφει έναν ακέραιο αλλά τα bytes υψηλής τάξης είναι μηδέν, άρα μόνο το byte χαμηλής τάξης περιέχει πληροφορία. Η συνάρτηση επιστρέφει ένα EOF όταν ο υπολογιστής φθάσει στο τέλος του αρχείου. Έτσι, για να διαβάσουμε ένα αρχείο κειμένου έως το σημάδι τέλους αρχείου, μπορούμε να χρησιμοποιήσουμε τον ακόλουθο κώδικα: ch = getc(pf); while (ch( ch!=eof){ ch=getc(pf getc(pf);}

44 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char k; Ανοίγει ένα αρχείο για ανάγνωση (read) κι ένα για εγγραφή (write) pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( == NULL) return(-1); k = getc(pfin); /* διάβασε τον πρώτο χαρακτήρα ως int */ while(k!=eof) { putc(k,, pfout); k = getc(pfin); } fclose(pfin); fclose(pfout);

45 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char k; pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( == NULL) return(-1); k = getc(pfin); /* διάβασε τον πρώτο χαρακτήρα ως int */ while(k!=eof) { putc(k,, pfout); Διαβάζει τον πρώτο χαρακτήρα. k = getc(pfin); Η getc() επιστρέφει int ώστε να } μπορεί να γίνουν έλεγχος για fclose(pfin); fclose(pfout); EOF (EOF=-1)

46 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char k; pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( == NULL) return(-1); k = getc(pfin); /* διάβασε τον πρώτο χαρακτήρα ως int */ while(k!=eof) { Εάν ο pfin έχει ένα char, putc(k,, pfout); οοποίοςδεν ΕΙΝΑΙ k = getc(pfin); EOF, τότε } fclose(pfin); fclose(pfout);

47 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char k; pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( == pfin) ) return(-1); k = getc(pfin); /* διάβασε τον πρώτο χαρακτήρα ως int */ while(k!=eof) { putc(k,, pfout); Τότε να αντιγραφεί στο pfout k = getc(pfin); και να ληφθεί ο επόμενος char,... } fclose(pfin); fclose(pfout);

48 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char k; pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( == NULL) return(-1); k = getc(pfin); /* διάβασε τον πρώτο χαρακτήρα ως int */ while(k!=eof) { Όταν τελικά βρεθεί EOF, putc(k,, pfout); περατώνεται η διαδικασία: k = getc(pfin); κλείνουν τα αρχεία. } fclose(pfin); fclose(pfout);

49 Τα προηγούμενα μπορούν να επιτευχθούν με τις fread/fwrite, όχι μόνο με ένα χαρακτήρα αλλά με οιονδήποτε αριθμό χαρακτήρων! FILE *pfin,*pfout; char buf[100]; int cnt; Ανάγνωση/εγγραφή ενός χαρακτήρα /* buffer χαρακτήρων */ pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( pfin==null) return(-1); /*ERR!*/ cnt = fread(buf,sizeof(char),100,pfin); while (cnt( == 100) { fwrite(buf,sizeof(char),100,pfout); cnt=fread (buf,sizeof(char),100,pfin ); } if(cnt!=0) fwrite(buf,sizeof(char),cnt,pfout); fclose(pfin); fclose(pfout); Ανοίγει ένα αρχείο για ανάγνωση (read) κι ένα για εγγραφή (write) //fread_fwrite_chars

50 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char buf[100]; int cnt; /* buffer χαρακτήρων */ pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( pfin==null) return(-1); cnt = fread(buf,sizeof(char),100,pfin); while (cnt( == 100) { fwrite(buf,sizeof(char),100,pfout); cnt=fread (buf,sizeof(char),100,pfin ); } if(cnt!=0) fwrite(buf,sizeof(char),cnt,pfout); fclose(pfin); fclose(pfout); Η fread() επιστρέφει τον αριθμό των χαρακτήρων που ανεγνώσθησαν.

51 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char buf[100]; int cnt; /* buffer χαρακτήρων */ pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( pfin==null) return(-1); cnt = fread(buf,sizeof(char),100,pfin); while (cnt( == 100) { fwrite(buf,sizeof(char),100,pfout); cnt=fread (buf,sizeof(char),100,pfin ); } if(cnt!=0) fwrite(buf,sizeof(char),cnt,pfout); fclose(pfin); fclose(pfout); Εάν γεμίσει ο buffer, τότε,

52 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char buf[100]; /* buffer χαρακτήρων */ int cnt; pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( pfin==null) return(-1); cnt = fread(buf,sizeof(char),100,pfin); while (cnt( == 100) { fwrite(buf,sizeof(char),100,pfout); cnt=fread (buf,sizeof(char),100,pfin ); } if(cnt!=0) fwrite(buf,sizeof(char),cnt,pfout); fclose(pfin); fclose(pfout);, Τότε γράφουμε ολόκληρο το buffer στο αρχείο εγγραφής και ακολούθως επαναλαμβάνουμε τηνανάγνωση

53 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char buf[100]; int cnt; /* buffer χαρακτήρων */ pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( pfin==null) return(-1); cnt = fread(buf,sizeof(char),100,pfin); while (cnt( == 100) { fwrite(buf,sizeof(char),100,pfout); cnt=fread (buf,sizeof(char),100,pfin ); } if(cnt!=0) fwrite(buf,sizeof(char),cnt,pfout); fclose(pfin); fclose(pfout); Γράφει τα περιεχόμε- να του buffer που μπορεί να παρέμειναν

54 Ανάγνωση/εγγραφή ενός χαρακτήρα FILE *pfin,*pfout; char buf[100]; int cnt; /* char buffer */ pfin = fopen( src.txt src.txt, r ); pfout = fopen( dest.txt dest.txt, w ); if (pfin( pfin==null) return(-1); cnt = fread(buf,sizeof(char),100,pfin); while (cnt( == 100) { fwrite(buf,sizeof(char),100,pfout); cnt=fread (buf,sizeof(char),100,pfin ); } if(cnt!=0) fwrite(buf,sizeof(char),cnt,pfout); fclose(pfin); fclose(pfout); Τέλος εργασιών, κλείσιμο των αρχείων

55 Παράδειγμα: Να καταστρωθεί πρόγραμμα, το οποίο διαβάζει χαρακτήρες από το πληκτρολόγιο και τους γράφει σε αρχείο, έως ότου πληκτρολογήσουμε το σύμβολο του δολαρίου ($). #include<stdio.h stdio.h> main() { FILE *pf* pf; ; char ch; pf=fopen fopen( ( "putc.res","w" putc.res","w" " ); do { ch=getchar getchar(); putc(ch,pf); } //end of do while (ch( ch!='$'); fclose( pf ); } //end of main //example_of_putc

56 Aποτέλεσμα: Προγραμματισμός II

57 Συμπληρωματικό παράδειγμα: Να καταστρωθεί πρόγραμμα, το οποίο διαβάζει οποιοδήποτε αρχείο ASCII και εμφανίζει το περιεχόμενό του στην οθόνη. #include<stdio.h stdio.h> main() { FILE *pf* pf; char ch; pf=fopen fopen( ( "putc.res","r" putc.res","r" " ); //Produced in the example of putc if (pf( pf==null) printf( ( "\t\tfile" tfile ERROR: Exit program\n" ); else { printf( ( "\t\t\tpress" tpress ANY KEY TO START\n" ); ch=getc(pf getc(pf); while (ch( ch!=eof) { putchar(ch); ch=getc(pf getc(pf); } //end of while } //end of else fclose( pf ); } //end of main //example_of_getc

58 Aποτέλεσμα: Προγραμματισμός II

59 Παράδειγμα: Να καταστρωθεί πρόγραμμα, το οποίο να δίνει τον αριθμό των λέξεων που περιέχονται σε ένα αρχείο ASCII. Το πρόγραμμα θα πρέπει να χειρίζεται τους λευκούς χαρακτήρες (κενά, νέες γραμμές, στηλοθέτες) ως πραγματικούς χαρακτήρες. Δηλαδή, εάν υπάρχει μία συμβολοσειρά από κενά ή χαρακτήρες επιστροφής, το πρόγραμμα τους διαβάζει και αναμένει για τον πρώτο πραγματικό (μη λευκό) χαρακτήρα. Ολο αυτό το μετρά ως λέξη. Κατόπιν διαβάζει τους πραγματικούς χαρακτήρες έως την εμφάνισητουεπόμενουλευκούχαρακτήρα. Μία μεταβλητή (σημαία) θα πρέπει να ελέγχει κατά πόσον το πρόγραμμα βρίσκεται στο μέσον μίας λέξης ή στο μέσον κάποιου κενού.

60 #include <stdio.h< stdio.h> #include <conio.h< conio.h> #include <stdlib.h< stdlib.h> //για την exit() main() { FILE *fptr* fptr; char ch,string[81]; int white=1; //σημαία λευκού χαρακτήρα int count=0; //μετρητής λέξεων if ((fptr fptr=fopen("file.txt","r")) ")) == NULL) { printf( ( "ERROR: can't open file" ); exit(1); } //end of if //word_counter

61 while ((ch ch=getc(fptr))!=eof) //ανάγνωση χαρακτήρων έως EOF { switch(ch) { case ' ': //έλεγχος για λευκούς χαρακτήρες case '\t':' case '\n':' Κοινή έξοδος για τις τρεις case white++; break; default: //μη λευκοί χαρακτήρες, μέτρηση λέξεων if (white) { white=0; count++; } //end of if break; } //end of switch } //end of while fclose( fptr ); printf( ( "The file contains %d words\n",count ); } //end of main

62 Aποτέλεσμα: Προγραμματισμός II

63 Ανάγνωση/εγγραφή γραμμή ανά γραμμή char buf[100]; FILE *pfin,*pfout;... while(fgets(buf,100,pfin)!= NULL) { fputs(buf,pfout); } Ηκλήσηrtn = fgets(pbuf,max,pfile): θα διαβάσει ένα αλφαριθμητικό από το pfile και θα το αποδώσει στo buf, θα σταματήσει μετά τη νέα-γραμμή \n ή τον 99 ο char θα τοποθετήσει ακολούθως στο buf το null \0 θα επιστρέψει pbuf σε περίπτωση επιτυχίας ή NULL εάν ο pfile άδειος

64 Ανάγνωση/εγγραφή γραμμή ανά γραμμή Η ίδια εργασία γίνεται με τις fscanf fscanf() (), fprintf() (): char buf[100]; FILE *pfin,*pfout; int cnt;... cnt = fscanf(pfin, %99[^\n] n],buf); while ((cnt cnt!=eof) && (cnt( cnt!=0)) { fprintf(pfout, %s %s\n,buf); cnt = fscanf(pfin, %99[^\n] n],buf); } Ηκλήσηrtn=fscanf(pFile, =fscanf(pfile, %99[^\n] n],buf),buf): θα διαβάσει ένα αλφαριθμητικό από το pfile και θα το αποδώσει στo buf, θα σταματήσει μετά τη νέα-γραμμή \n ή τον 99 ο char θα τοποθετήσει ακολούθως στο buf το null \0 θα επιστρέψει τον αριθμό των μετατροπών ή το EOF όταν φθάσει στο τέλος του pfile.

65 Ανάγνωση/εγγραφή γραμμή ανά γραμμή Ηίδιαεργασίαγίνεταιμετιςfscanf() char buf[100]; FILE *pfin,*pfout; int cnt;... cnt = fscanf(pfin, %99[^\n\0Q],buf); while ((cnt cnt!=eof) && (cnt( cnt!=0)) { fprintf(pfout, %s %s\n,buf); cnt = fscanf(pfin, %99[^\n] n],buf); } (), fprintf() (): Τα περιεχόμενα γραμμής ορίζονται από τον προγραμματιστή: Η γραμμή τελειώνει είτε μετά την πρώτη εμφάνιση των χαρακτήρων \n, \0, Q ήόταν φθάσουμε στον 99 ο χαρακτήρα.

66 Ανάγνωση/εγγραφή γραμμή ανά γραμμή char buf[100]; FILE *pfin,*pfout; int cnt;... cnt = fscanf(pfin, %99[^\n\0Q],buf); while ((cnt cnt!=eof) && (cnt( cnt!=0)) { fprintf(pfout, %s %s\n,buf); cnt = fscanf(pfin, %99[^\n] n],buf); } Η μορφή του αρχείου εξόδου ορίζεται από τον προγραμματιστή: Θέσε ένα \n στο τέλος κάθε γραμμής.

67 #include<conio.h conio.h> #include<stdio.h stdio.h> #include<math.h math.h> #define name "tape.txt" tape.txt" main() { FILE *f1; char pchar[16]; int i; float x[5]; f1=fopen(name,"w fopen(name,"w"); "); for (i=0;i<5;i++) fprintf(f1,"nm%d.dat\n",i+1); n",i+1); fclose(f1); f1=fopen(name,"r fopen(name,"r"); "); //fgets fgets(): ανάγνωση γραμμή προς γραμμή for (i=0;i<5;i++) printf("line %d:%s\n",i+1,fgets(pchar,15,f1)); fclose(f1); f1=fopen("data.dat","w fopen("data.dat","w"); "); for (i=0;i<5;i++) x[i]= ]=sqrt(i); fwrite(x,sizeof(x),1,f1); fclose(f1); //Το f1 γίνεται δυαδικό αν και δεν μπήκε το wb

68 f1=fopen("data.dat","rb fopen("data.dat","rb"); "); for (i=0;i<5;i++) { fread(&x[i],sizeof(float),1,f1); printf("x[%d]=% ]=%f\n",i,x[i]); } fclose(f1); } Επιπλέον νέα γραμμή binary

69 Κατασκευή αλφαριθμητικών Εάν θέλουμε το πρόγραμμα να κατασκευάζει αλφαριθμητικά με μεικτή χρήση λέξεων κι αριθμών και να είναι περισσότερο ευέλικτο σε ό,τι αφορά τις λειτουργίες εισόδου/εξόδου, τότε χρησιμοποιούμε τις sscanf() και sprintf() (). Αποτελούν τις αντίστοιχες των scanf() και sprintf() για την περίπτωση των strings.

70 Τυχαία προσπέλαση δυαδικού αρχείου Σειριακή προσπέλαση: για να βρεθεί ένα δεδομένο σε ένα αρχείο πρέπει να προσπελασθούν πρώτα όλα τα προηγούμενά του. Επιπρόσθετα, για να ενημερωθεί μία εγγραφή του αρχείου (π.χ. ένα όνομα), πρέπει να διαβασθεί όλο το αρχείο, να γίνει η αλλαγή και κατόπιν να ξαναγραφεί. Η σειριακή προσπέλαση δεν ενδείκνυται σε μεγάλα αρχεία ή σε αρχεία που προσπελαύνονται και τροποποιούνται συχνά. Για αυτές τις περιπτώσεις η C παρέχει τη δυνατότητα τυχαίας προσπέλασης (random access), με την οποία υπάρχει πρόσβαση σε οιοδήποτε σημείο ενός αρχείου.

71 Τυχαία προσπέλαση δυαδικού αρχείου Η τυχαία προσπέλαση στηρίζεται στο γεγονός ότι κάθε ανοικτό αρχείο έχει έναν δείκτη θέσης αρχείου, ο οποίος καθορίζει σε ποιο σημείο του αρχείου θα γίνει ανάγνωση ή εγγραφή. Η θέση αυτή δίνεται ως αριθμός bytes από την αρχή του αρχείου και είναι μία μεταβλητή της δομής FILE. Όταν το αρχείο ανοίγει για ανάγνωση η θέση αυτή είναι 0. Όταν ανοίγει για προσάρτηση είναι το τέλος του αρχείου. Καθορίζοντας το δείκτη θέσης αρχείου μπορούμε να έχουμε προσπέλαση σε οιοδήποτε σημείο του αρχείου. Αυτή είναι η έννοια της τυχαίας προσπέλασης.

72 Η συνάρτηση fseek() Ησυνάρτησηfseek() αποτελεί το εργαλείο για την εκτέλεση λειτουργιών τυχαίας ανάγνωσης και εγγραφής. Ορίζεται στο stdio.h και έχει το ακόλουθο πρωτότυπο: int fseek(file *fptr, long offset, int origin) όπου 1) fptr είναι ένας δείκτης αρχείου που επιστρέφεται από την fopen(). 2) offset είναι ο αριθμός των bytes που δηλώνουν την απόσταση της νέας θέσης από το origin. 3) origin είναι το σημείο αφετηρίας και μπορεί να έχει μία από τις τρεις ακόλουθες τιμές: Αφετηρία Όνομα αρχή του αρχείου SEEK_SET (0) τρέχουσα θέση SEEK_CUR (1) τέλος αρχείου SEEK_END (2)

73 Η συνάρτηση fseek() Γιαναβρεθείπ.χ. τοoffset από την τρέχουσα θέση του, το origin θα πρέπει να λάβει την τιμή SEEK_CUR. Σε περίπτωση επιτυχίας η fseek() επιστρέφει 0, ενώ εάν αποτύχει επιστρέφει μη μηδενική τιμή. Θα πρέπει να σημειωθεί ότι ο δείκτης θέσης αρχείου επανατοποθετείται στην αρχή με τη συνάρτηση rewind(fptr);

74 Παράδειγμα: Για τη διαχείριση των στοιχείων των φοιτητών ορίζεται ο πίνακας student_list[size] με στοιχεία τύπου δομής Student: typedef struct { int AM; int year; char firstname[15]; char lastname[30]; } Student; Για τη διαχείριση μεμονωμένων φοιτητών ορίζεται η μεταβλητή svar, επίσης τύπου δομής Student.

75 Ζητείται να γραφούν συναρτήσεις που να επιτελούν τα ακόλουθα: save_data(): Aποθήκευση των δεδομένων του πίνακα student_list στο αρχείο students.dat. read_data():aνάγνωση των δεδομένων από το αρχείο και αποθήκευσή τους στον πίνακα student_list. read_student(): Προσπέλαση ενός συγκεκριμένου φοιτητή στο αρχείο και αποθήκευση των στοιχείων του σε μία μεταβλητή τύπου Student. save_student(): Aποθήκευση των στοιχείων ενός συγκεκριμένου φοιτητή στο αρχείο.

76 save_data() Η συνάρτηση καλείται στη main() ως εξής: save_data(fptr, student_list); και έχει το ακόλουθο σώμα: void save_data( FILE *fp, Student list[ ] ) //ή Student *list { int i; rewind(fp); for ( i=0; i<size; i++ ) fwrite(&list[i],sizeof(student),1,fp); } Αντί του βρόχου for θα μπορούσε να γραφεί: fwrite(list,sizeof(student),size,fp);

77 read_data() Η συνάρτηση καλείται στη main() ως εξής: read_data(fptr, student_list); και έχει το ακόλουθο σώμα: void read_data( FILE *fp, Student *list ) { rewind(fp); fread(list,sizeof(student),size,fp); }

78 read_student() Η συνάρτηση καλείται στη main() ως εξής: read_student(fptr, &svar, i); όπου svar είναι μία μεταβλητή τύπου Student (στη θέση της θα μπορούσε να είναι η &Student_list[i]), i είναι η θέση του στον πίνακα student_list. Το σώμα της είναι το ακόλουθο: void read_student( FILE *fp, Student *s, int k ) { fseek(fp,k*sizeof(student),seek_set); fread(s,sizeof(student),1,fp); }

79 save_student() Η συνάρτηση καλείται στη main() ως εξής: save_student(fptr, &student_list[i], i); όπου i είναι ο αύξων αριθμός του στον πίνακα student_list. Το σώμα της είναι το ακόλουθο: void save_student( FILE *fp, Student *s, int k ) { fseek(fp,k*sizeof(student),seek_set); fwrite(s,sizeof(student),1,fp); } H συνάρτηση save_student() χρησιμοποιείται όταν έχουμε κάνει αλλαγές στα στοιχεία ενός φοιτητή και θέλουμε να ενημερώσουμε την εγγραφή του στο αρχείο. H συνάρτηση read_student() χρησιμοποιείται για να φέρουμε τα στοιχεία του i-στού φοιτητή από το αρχείο και πιθανώς να τα αλλάξουμε αργότερα.

80 Παράδειγμα: Στο πρόγραμμα που ακολουθεί διαβάζονται χαρακτήρες από το πληκτρολόγιο και εγγράφονται σε δυαδικό αρχείο, το οποίο λόγω της φύσης των περιεχομένων του είναι αναγνώσιμο με τους συντάκτες κειμένου. Ως συνθήκη τερματισμού θεωρείται η ανάγνωση του δολαρίου ($). Ακολούθωςμεχρήσητηςσυνάρτησης void read_character(file *fp,, char *s, int k) διαβάζεται ο 14ος χαρακτήρας, χρησιμοποιώντας τυχαία προσπέλαση του αρχείου. Η συνάρτηση void save_character(file *fp,, char *s, int k) τοποθετεί στη 14η θέση του αρχείου το χαρακτήρα!.

81 #include <stdlib.h> #include <stdio.h> #define name "tape.txt" void read_character(file *fp, char *s, int k ) { fseek(fp,k*sizeof(char),seek_set); fread(s,sizeof(char),1,fp); } void save_character(file *fp, char *s, int k ) { fseek(fp,k*sizeof(char),seek_set); fwrite(s,sizeof(char),1,fp); }

82 main() { FILE *f1; char ch; f1=fopen(name,"wb"); do { ch=getche(); fwrite(&ch,sizeof(char),1,f1); } while (ch!='$'); fclose(f1);

83 f1=fopen(name,"rb+"); read_character(f1,&ch,13); printf("\n\nthe nthe 14th character is: %c\n",ch); ch='!'; save_character(f1,&ch,13); fclose(f1); }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ασκήσεις - Μελέτες περίπτωσης για το μάθημα Προγραμματισμός II

Ασκήσεις - Μελέτες περίπτωσης για το μάθημα Προγραμματισμός II Ασκήσεις - Μελέτες περίπτωσης για το μάθημα Προγραμματισμός II (1) Να καταστρωθεί πρόγραμμα, το οποίο θα διαβάζει δύο αλφαριθμητικά από το πληκτρολόγιο και θα τα μεταβιβάζει στη συνάρτηση str_index(char

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

#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 πίνακας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τύποι αρχείων Ρεύματα Άνοιγμα ρευμάτων Εγγραφή και ανάγνωση δεδομένων προς/από ένα ρεύμα Διαχείριση και κλείσιμο ρευμάτων Παραδείγματα

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

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

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

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

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

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

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

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

4ο σετ σημειώσεων - Χειρισμός αρχείων και structs 4ο σετ σημειώσεων - Χειρισμός αρχείων και structs 5 Ιουνίου 2012 1 Αρχεία Η στάνταρ βιβλιοθήκη stdio.h της γλώσσας μας δίνει τη δυνατότητα να χειριστούμε αρχεία του λειτουργικού συστήματος. Οι συναρτήσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record) Διαχείριση Αρχείων Αρχεία Για να είναι δυνατή η επεξεργασία μεγάλου αριθμού δεδομένων τα δεδομένα είναι αποθηκευμένα σε ψηφιακά μέσα κατάλληλα οργανωμένα. Η αποθήκευση γίνεται σε αρχεία. Πολλά προγράμματα

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

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

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

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

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

Η γλώσσα προγραμματισμού C Χειρισμός αρχείων Η γλώσσα προγραμματισμού C Χειρισμός αρχείων Γιατί αρχεία; Τα δεδομένα που χρησιμοποιούνται σε ένα πρόγραμμα βρίσκονται στην κύρια μνήμη του υπολογιστή όσο εκτελείται το πρόγραμμα. Μετά τη εκτέλεση του

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

Προγραμματισμός συστημάτων UNIX/POSIX. Ανακατευθύνσεις (redirections)

Προγραμματισμός συστημάτων UNIX/POSIX. Ανακατευθύνσεις (redirections) Προγραμματισμός συστημάτων UNIX/POSIX Ανακατευθύνσεις (redirections) Shell & ανακατεύθυνση εισόδου Κατά την εκτέλεση ενός προγράμματος, η είσοδος και η έξοδος ενός προγράμματος μπορούν να ανακατευθυνθούν

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

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

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

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

S, (5, -3, 34, -23, 7) ( /, @, *, _

S, (5, -3, 34, -23, 7) ( /, @, *, _ 1 Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ

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

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός Θέμα 1ο (25%) Για το τμήμα κώδικα που ακολουθεί να περιγραφεί αναλυτικά η λειτουργία του, να αιτιολογηθεί η ενσωμάτωση των συγκεκριμένων αρχείων κεφαλίδας και ι να απεικονισθεί το περιεχόμενο των θέσεων

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Εισαγωγή στον προγραμματισμό Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Δομή Προγράμματος Όλα τα προγράμματα που γράψαμε έχουν λίγο πολύ την ακόλουθη μορφή: Κάποιος κώδικας εδώ main( ) {

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

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

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

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

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

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

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

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

Ι Ανασκόπηση και εμβάθυνση Μερικά πιο προχωρημένα θέματα. ΙΙ Τα αρχεία δεδομένων στη C

Ι Ανασκόπηση και εμβάθυνση Μερικά πιο προχωρημένα θέματα. ΙΙ Τα αρχεία δεδομένων στη C Ι Ανασκόπηση και εμβάθυνση Μερικά πιο προχωρημένα θέματα ΙΙ Τα αρχεία δεδομένων στη C Τελεστές αύξησης/μείωσης (++, --) Λειτουργία βάσει θέσης: ++x διάφορο του x++!!! Παράδειγμα 1 (postfix): Ισοδυναμεί

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

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

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

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

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

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

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

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

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

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

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

Διαδικαστικός Προγραμματισμός ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Διαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 11 ο : Αρχεία κειμένου Στόχοι μαθήματος Να κατανοήσετε την έννοια του αρχείου κειμένου και τον τρόπο με τον οποίο αυτά τα

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

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

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

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

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Προγραμματισμός Η/Υ Χειρισμός Αρχείων ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Αρχεία Συλλογές δεδομένων. Αποθηκεύονται στην περιφερειακή μνήμη: π.χ.

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

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

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

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

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

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

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

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

FILE *fopen(const char *fname, const char *mode) void fclose(file *f) void fflush(file *f) Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 19: Αρχεία Μόνιµη αποθήκευση δεδοµένων Η µνήµη (RAM) του Η/Υ κρατά δεδοµένα µόνο όσο της δίνεται µια ικανοποιητική παροχή ρεύµατος. Τα περιεχόµενα της µνήµης χάνονται (αµέσως)

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

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Τα δεδομένα που επεξεργαζόμαστε, καθώς και ο κώδικας που τρέχουμε, βρίσκονται αποθηκευμένα στη μνήμη RAM (Random Access Memory) του υπολογιστή. Τα δεδομένα

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

Προγραμματισμός II. stdio.h> #include <conio.h< conio.h> #include <stdlib.h< stdlib.h> static int j=0; j=j*n; ("j=%d\t",j); return ((*py.

Προγραμματισμός II. stdio.h> #include <conio.h< conio.h> #include <stdlib.h< stdlib.h> static int j=0; j=j*n; (j=%d\t,j); return ((*py. Θέμα 1ο (25%) Για το πρόγραμμα που ακολουθεί να περιγραφεί αναλυτικά η λειτουργία του, να δοθούν τα αποτελέσματα και να απεικονισθεί το περιεχόμενο των θέσεων μνήμης που καταλαμβάνουν οι μεταβλητές σε

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραµµατισµός. Αρχεία

Προγραµµατισµός. Αρχεία Προγραµµατισµός Αρχεία Προγραµµατισµός Η Βιβλιοθήκη Εισόδου/Εξόδου Στο stdio.h ηλώνεται ο τύπος δεδοµένων FILE (µε typedef) µε όλες τις πληροφορίες που χρειάζονται για προσπέλαση του αρχείου από τις αντίστοιχες

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

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

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

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

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

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

4 C Θεωρία και Πράξη. 6.8 Συναρτήσεις και στατικές μεταβλητές Αναδρομικές συναρτήσεις 119

4 C Θεωρία και Πράξη. 6.8 Συναρτήσεις και στατικές μεταβλητές Αναδρομικές συναρτήσεις 119 Προλεγόμενα 9 1 Εισαγωγή 15 1.1 Χαρακτηριστικά της γλώσσας 15 1.2 Διαδικασία προγραμματισμού υπό το Unix 17 1.3 Προγραμματίζοντας στην C 19 2 Υπολογιστική 23 2.1 Μεταβλητές και σταθερές 23 2.2 Τύποι δεδομένων

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

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τον ορισμό, τη δήλωση και τη χρήση των χαρακτήρων, συνεπώς και των αλφαριθμητικών, της Γλώσσας

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

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

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

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Αρχεία Δεδομένων Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD ΑΡΧΕΙΑ Αρχείο είναι μία οργανωμένη συλλογή δεδομένων αποθηκευμένα στο

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

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

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

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

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

Προγραμματιστικές τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ανασκόπηση

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

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

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

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