ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
GB ( ) 5 1 ( ) ( ) ( /cm 2 ) 0.2 /30min·φ90 (5 /m 3 ) 0.4 /30min·φ90 (10 /m 3 ) /30min·φ90 (25 /m 3 )
Advertisements

Δομές στην C (επανάληψη)
Το αλφαριθμητικό (string)
(READ – WRITE) ΚΑΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (INTEGER,REAL,CHAR)
ΠΙΝΑΚΕΣ ΜΑΘΗΜΑ 6.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
Εισαγωγή στους Η/Υ Πίνακες.
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Αντικειμενοστραφής Προγραμματισμός
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
Τύποι πραγματικών αριθμών
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Εντολες Επιλογης (Selection)
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
-17 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Σεπτέμβριος 2013 Δείκτης > +20 Δείκτης 0 a +20 Δείκτης 0 a -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
Αρχές Προγραμματισμού (C). ...γράφοντας σωστά προγράμματα! (IIΙ)
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
Βάσεις Δεδομένων II Διαχείριση Δοσοληψιών Πάνος Βασιλειάδης Σεπτέμβρης 2002
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Ολυμπιάδα Πληροφορικής
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Ολυμπιάδα Πληροφορικής
Ολυμπιάδα Πληροφορικής
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Stacks - Στοίβες.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
1 Ολυμπιάδα Πληροφορικής Μάθημα 5. 2 Στόχοι μαθήματος Πίνακες 2 διαστάσεων.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Δυναμική Διαχείριση Μνήμης (1/2)
Δείκτες (Pointers) – Δομές (Structs)
Ενότητα Α.4. Δομημένος Προγραμματισμός
1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;
Ταξινόμηση και Αναζήτηση
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Διαχείριση Συναλλαγών Πάνος Βασιλειάδης Μάρτιος 2014
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
+19 Δεκέμβριος 2014 Δείκτης > +20 Δείκτης 0 έως +20 Δείκτης 0 έως -20 Δείκτης < -20 Συνολικά της ΕΕ: +5 Δείκτης > +20 Δείκτης 0 έως +20 Δείκτης 0 έως -20.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων:
2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1!
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
7-1 ΜΑΘΗΜΑ 7 ο Περισσότερα για Κυκλικές και Διπλά Διασυνδεόμενες Λίστες, Συναρτήσεις Βιβλιοθήκης, Διαχείριση Αρχείων.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αλφαριθμητικά (Strings)
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C Αρχεία (files)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ Η εντολή if if ( παράσταση) εντολή επόμενη εντολή.
for (παράσταση_1; παράσταση_2; παράσταση_3)
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Μεταγράφημα παρουσίασης:

ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 2 Η Βιβλιοθήκη Εισόδου/Εξόδου Στο stdio.h – Δηλώνεται ο τύπος δεδομένων FILE (με typedef) με όλες τις πληροφορίες που χρειάζονται για προσπέλαση του αρχείου από τις αντίστοιχες συναρτήσεις – Ορίζονται 3 αρχεία stdin, stdout, stderr (θα δούμε ποια είναι αυτά σε λίγο) – Ορίζονται οι τιμές των σταθερών NULL EOF (End Of File) – Δηλώνονται συναρτήσεις προσπέλασης αρχείων

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 3 Αρχεία Η C βλέπει κάθε αρχείο σαν μια σειρά από bytes – Κάθε αρχείο «κλείνει» με end-of-file marker Μπορούμε να ανοίξουμε ένα αρχείο για διάβασμα, είτε για γράψιμο Το άνοιγμα του αρχείου συνεπάγεται την επιστροφή ενός δείκτη σε FILE structure

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 4 Άνοιγμα Αρχείων FILE *fp; – Δημιουργεί έναν FILE pointer με όνομα fp FILE *fopen(const char *filename, const char *mode); – Δύο ορίσματα: filename: το όνομα του αρχείου που θα ανοίξει mode: Καθορίζει αν το αρχείο ανοιχτεί για διάβασμα ή γράψιμο – Η fopen επιστρέφει έναν FILE pointer στο αρχείο Σε περίπτωση αποτυχίας επιστρέφει NULL

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 5 Table of file open modes ModeΠεριγραφή r(read) Άνοιγμα μόνο για διάβασμα w(write) Άνοιγμα για γράψιμο. Αν δεν υπάρχει το αρχείο το δημιουργεί, αν υπάρχει καθαρίζει τα περιεχόμενά του a(append) Άνοιγμα του αρχείου για προσάρτηση δεδομένων. Οι επόμενες εγγραφές προσαρτώνται στο τέλος του αρχείου. r+Άνοιγμα για διάβασμα και εγγραφή w+Δημιουργία (αν δεν υπάρχει) και άνοιγμα για διάβασμα και εγγραφή a+Άνοιγμα για διάβασμα και εγγραφή. Οι επόμενες εγγραφές προσαρτώνται στο τέλος του αρχείου.

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 6 Παράδειγμα #include... void somefunction(char *file) { FILE *fp; char s[1000]; if ((fp = fopen(file, "r")) == NULL) { printf(“Can not open the file %s\n”,file); return; } while (fscanf(fp,”%s”,s) != EOF) { printf(“%s”,s); } fclose(fp); }

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 7 Κλείσιμο Αρχείων Ότι ανοίγει, πρέπει να κλείνει – Ειδάλλως ενδέχεται να μην έχετε πρόσβαση σε κάποιο αρχείο για κάποιο διάστημα fclose( FILE pointer ) – «κλείνει» το συγκεκριμένο αρχείο – Επιστρέφει 0 αν είναι επιτυχής και EOF διαφορετικά – Γίνεται αυτόματα με το τέλος του προγράμματος – Είναι καλή πρακτική να γίνεται από τον προγραμματιστή

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 8 Συναρτήσεις για Ανάγνωση και Εγγραφή Κειμένου fgetc – Διαβάζει έναν χαρακτήρα από αρχείο – Όρισμα: FILE pointer – fgetc( stdin ) ισοδύναμο με getchar() fputc – Γράφει έναν χαρακτήρα σε αρχείο – Όρισμα: FILE pointer και ένας χαρακτήρας για να γραφεί – fputc( 'a', stdout ) ισοδύναμο με putchar( 'a' ) fgets – Διαβάζει μια γραμμή από ένα αρχείο fputs – Γράφει μια γραμμή σε ένα αρχείο fscanf / fprintf – Ισοδύναμες των scanf και printf για αρχεία feof( FILE pointer ) – επιστρέφει true αν end-of-file διαβαστεί

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 9 Τρία Ειδικής Χρήσης Αρχεία Το λειτουργικό σύστημα, με το που αρχίζει να τρέχει το πρόγραμμά, ανοίγει τρία αρχεία και ορίζει τους δείκτες stdin, stdout, stderr να δείχνουν στις αντίστοιχες δομές FILE. Κανονικά : – stdin: αντιστοιχεί στο πληκτρολόγιο! Ότι κουμπί πατιέται θεωρείται ότι διαβάζεται από ένα αρχείο – stdout: αντιστοιχεί στην οθόνη μας. Ότι εγγράφετε σε αυτό το αρχείο εκτυπώνεται στην οθόνη – stderr: αντιστοιχεί επίσης στην οθόνη μας. Χρησιμοποιείτε για μηνύματα λάθους. Αναδιεύθυνση του Unix – Μπορούμε να δηλώσουμε στο λειτουργικό να συνδέσει τα παραπάνω «αρχεία» με πραγματικά (αντί για το πληκτρολόγιο και την οθόνη) – myprogram < someinputfile Το stdin δεν είναι πλέον το πληκτρολόγιο, αλλά το αρχείο somefile – myprogram > someoutputfile Το stdout δεν είναι πλέον η οθόνη αλλά το αρχείο someoutputfile – Οι printf, scanf θα αλλάξουν λειτουργία αντίστοιχα

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 10 Παράδειγμα #include int main() { int i; FILE *fp; if ((fp = fopen("myfirstfile.txt", "w")) == NULL) { printf("Could not open file.\n"); return 0; } fprintf(fp, "Lets write something here.\n"); for (i = 0; i < 10; ++i) fprintf(fp, “%5d, %5d, %5d\n“,i,i*i,i*i*i); fclose(fp); // Check out the contents of the file myfirstfile.txt } Lets write something here. 0, 0, 0 1, 1, 1 2, 4, 8 3, 9, 27 4, 16, 64 5, 25, 125 6, 36, 216 7, 49, 343 8, 64, 512 9, 81, 729

ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης 1 2 3#include 4 5int main() 6{6{ 7 int account = 1; 8 char name[ 30 ]; 9 double balance; 10 FILE *cfPtr; /* cfPtr = clients.dat file pointer */ if ( ( cfPtr = fopen( "clients.dat", "w" ) ) == NULL ) 13 printf( "File could not be opened\n" ); 14 else { 15 printf( "Enter the account, name, and balance.\n" ); 16 printf( "Enter EOF to end input.\n" ); 17 printf( "? " ); 18 scanf( "%d%s%lf", &account, name, &balance ); while (account > 0) { 21 fprintf( cfPtr, "%d %s %.2f\n", 22 account, name, balance ); 23 printf( "? " ); 24 scanf( "%d%s%lf", &account, name, &balance ); 25 } fclose( cfPtr ); 28 } return 0; 31} Enter the account, name, and balance. Enter EOF to end input. ? 100 Jones ? 200 Doe ? 300 White 0.00 ? 400 Stone ? 500 Rich ?

ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Δυαδικά αρχεία

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 13 Τρέχουσα Θέση Μία από τις πληροφορίες που διατηρούνται στις δομές τύπου FILE για κάθε αρχείο είναι η τρέχουσα θέση εγγραφής/ανάγνωσης Όταν κάνουμε εγγραφή κειμένου σε ένα αρχείο με τις συναρτήσεις fputc, fputs, fprintf η εγγραφή γίνεται στην τρέχουσα θέση μέσα στο αρχείο. Όταν κάνουμε ανάγνωση κειμένου με τις συναρτήσεις fgetc, fgets, fscanf η ανάγνωση γίνεται από την τρέχουσα θέση στο αρχείο. Η τρέχουσα θέση αυξάνει ανάλογα με τους χαρακτήρες που έχουμε γράψει ή διαβάσει Η τρέχουσα θέση όταν πρωτοανοίξουμε ένα αρχείο εξαρτάται από το mode στην fopen Μπορούμε να αλλάξουμε την τρέχουσα θέση με την συνάρτηση fseek (αναλυτικά μετά)

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 14 Δυαδικά αρχεία fwrite – «γράφει» δεδομένα από μια περιοχή μνήμης σε ένα αρχείο Παράδειγμα: fwrite( &number, sizeof( int ), 1, myPtr ); – &number – περιοχή μνήμης (δείκτης) – sizeof( int ) – μέγεθος αντικειμένων – 1 – αριθμός αντικειμένων (1 για απλές μεταβλητές) – myPtr – αρχείο για μεταφορά fread – «διαβάζει» δεδομένα από ένα αρχείο σε μια περιοχή μνήμης fread( &client, sizeof (int), 1, myPtr ); – Μπορεί να «διαβάσει» ολόκληρο τον πίνακα

ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης 1 2 3#include 4 5struct clientData { 6 int acctNum; 7 char lastName[ 15 ]; 8 char firstName[ 10 ]; 9 double balance; 10}; 11 12int main() 13{ 14 int i; 15 struct clientData blankClient = { 0, "", "", 0.0 }; 16 FILE *cfPtr; if ( ( cfPtr = fopen( "credit.dat", "w" ) ) == NULL ) 19 printf( "File could not be opened.\n" ); 20 else { for ( i = 1; i <= 100; i++ ) 23 fwrite( &blankClient, 24 sizeof( struct clientData ), 1, cfPtr ); fclose( cfPtr ); 27 } return 0; 30}

ΗΥ150 – Προγραμματισμός Κώστας Παναγιωτάκης 16 Μετακίνηση του δείκτη αρχείου fseek – Πάει το δείκτη σε μια συγκεκριμένη θέση – fseek( pointer, offset, symbolic_constant ); pointer – file pointer offset – θέση file pointer (0 η αρχή του αρχείου) symbolic_constant – καθορίζει από πού αρχίζουμε να μετράμε – SEEK_SET – αρχή αρχείου – SEEK_CUR – τρέχουσα θέση – SEEK_END – τέλος αρχείου

ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης 1 //Εγγραφή στο αρχείο «credit.dat» στοιχειών ταξινομημένα με βάση το acctNum 2 3#include 4 5struct clientData { 6 int acctNum; 7 char lastName[ 15 ]; 8 char firstName[ 10 ]; 9 double balance; 10}; 11 12int main() 13{ 14 FILE *cfPtr; 15 struct clientData client = { 0, "", "", 0.0 }; if ( ( cfPtr = fopen( "credit.dat", "r+" ) ) == NULL ) 18 printf( "File could not be opened.\n" ); 19 else { 20 printf( "Enter account number 21 ( 1 to 100, 0 to end input )\n? " ); 22 scanf( "%d", &client.acctNum ); while ( client.acctNum != 0 ) { 25 printf( "Enter lastname, firstname, balance\n? " ); 26 fscanf( stdin, "%s%s%lf", client.lastName, 27 client.firstName, &client.balance ); 28 fseek( cfPtr, ( client.acctNum - 1 ) * 29 sizeof( struct clientData ), SEEK_SET ); 30 fwrite( &client, sizeof( struct clientData ), 1, 31 cfPtr ); 32 printf( "Enter account number\n? " ); 33 scanf( "%d", &client.acctNum ); 34 } fclose( cfPtr ); 37 return 0; } 40}

ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης Enter account number ? 88 Enter lastname, firstname, balance ? Smith Dave Enter account number ? 33 Enter lastname, firstname, balance ? Dunn Stacey Enter account number ? 0 Enter account number (1 to 100, 0 to end input) ? 37 Enter lastname, firstname, balance ? Barker Doug 0.00 Enter account number ? 29 Enter lastname, firstname, balance ? Brown Nancy Enter account number ? 96 Enter lastname, firstname, balance ? Stone Sam 34.98