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

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

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

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

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

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

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

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

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

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

Διάλεξη 4: Οργάνωση Προγράμματος & Ανατομία Προγράμματος

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

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

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

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

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

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

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

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

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

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

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

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

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

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

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

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

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

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

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

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 1. Εισαγωγή. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

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

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

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

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

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

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

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

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

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

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

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

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

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

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

Η βασική συνάρτηση προγράμματος main()

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

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

Ηβασικήσυνάρτηση προγράμματος main()

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

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

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

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

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

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

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

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

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

Transcript:

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

Κεφάλαιο 10 Αρχεία στην C

Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την ευτερεύουσα Μνήμη

Επανάληψη στην Αποθήκευση (Storage) Η πιο συνηθισμένη μορφή δευτερεύουσας μνήμη η οποία αξιοποιείτε από ένα πρόγραμμα είναι ο Μαγνητικός ίσκος. Μαγνητικός ίσκος: Αποτελείτε από ένα ή περισσότερους δίσκους με μαγνητική επικάλυψη Τα δεδομένα αποθηκεύονται σε τομείς (sectors). Οι δίσκοι διαθέτουν την δυνατότητα σειριακής αλλά και άμεσης πρόσβασης στα δεδομένα.

Επανάληψη στα Λειτουργικά Συστήματα (Operating Systems) Ποιος ιαχειρίζεται τους Πόρους (Μνήμη, ίσκο, Επεξεργαστή, κτλ) σε ένα Υπολογιστικό Σύστημα? ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (Operating System)

Λειτουργικά Συστήματα και Συστήματα ιαχείρισης Αρχείων Κάθε γλώσσα προγραμματισμού έχει κάποια βιβλιοθήκη η οποία προσφέρει λειτουργίες πρόσβασης σε αρχεία αποθηκευμένα σε μονάδες ευτερεύουσας Μνήμης. Στην C, oι λειτουργίες αυτές προσφέρονται από την βιβλιοθήκη <stdio.h>. Η Βιβλιοθήκη επικοινωνεί με το υποσύστημα διαχείρισης αρχείων (File System) του λειτουργικού συστήματος το οποίο στην συνέχεια διεκπεραιώνει τις λειτουργίες που ζητά ο προγραμματιστής. (το filesystem στα Windows είναι το FAT32, NTFS). Ας δούμε τι περιέχουν εσωτερικά τα αρχεία (δηλαδή πως αποθηκεύουν τις πληροφορίες)

Αρχεία Κειμένου Θυμηθείτε ότι το αρχείο είναι μία ακολουθία bytes.π.χ. 01100011 01100001 01110010 ascii:99 ascii:97 ascii:114 c a r Οι χαρακτήρες αυτοί είναι αποθηκευμένοι σειριακά στο αρχείο και διαχωρίζονται με διάφορους ειδικούς χαρακτήρες Αρχείο όπως το βλέπει ο χρήστης Car Test hello Αρχείο στην Πραγματικότητα Car\nTest\thelloEOF Τέλος αρχείου ascii: -1

Αρχεία Κειμένου Ο Πίνακας ASCII Αρκετοί χαρακτήρες είναι κρυμμένοι, δηλαδή δεν φαίνονται στην οθόνη και στα αρχεία.

υαδικά Αρχεία Καλά, όλα τα αρχεία περιέχουν Χαρακτήρες ASCII? OXI Ας δούμε πως είναι κωδικοποιημένο ένα αρχείο εικόνας GIF (Graphics Interchange Format), συγκεκριμένα την γνωστή εικόνα του folder στα Windows Αρχή Το σχήμα δείχνει ότι οι εικόνες (όπως και ΌΛΑ τα αρχεία) είναι ουσιαστικά μια σειρά από bytes (στο σχήμα κωδικοποιημένα στο δεκαεξαδικό σύστημα για να κερδίσουμε χώρο) 47 16 =1000111 2 14-9

Εισαγωγή στα Αρχεία Τώρα θα επικεντρωθούμε στις λειτουργίες εγγραφής και ανάγνωσης σε αρχεία, με τη χρήση συναρτήσεων της βιβλιοθήκης <stdio.h>. Η επεξεργασία αρχείων γίνεται κατά τον ακόλουθο τρόπο: Α) Συσχετίζουμε μία οντότητα της C με το αρχείο (άνοιγμα του αρχείου). Β) Πραγματοποιούμε τις λειτουργίες ανάγνωσης και εγγραφής δεδομένων. C) Κλείνουμε το αρχείο.

A) Άνοιγμα Αρχείων 1. Συνάρτηση fopen (stdio.h) FILE *fopen(char *filename, char *mode); Η παράμετρος filename υποδεικνύει το όνομα του αρχείου που επιθυμούμε να ανοίξουμε. Το mode υποδεικνύει το είδος της πράξης (π.χ. Read, write, read-write, etc) main() { FILE *fp; (εδώ READ) fp = fopen("myfile.txt", "r");. Οντότητα ιαχείρισης Αρχείου. Όνομα Αρχείου Τύπος Ανοίγματος

A) Άνοιγμα Αρχείων (συν.) H παράμετρος mode υποδεικνύει τον τρόπο με τον οποίο θέλουμε να προσπελάσουμε το αρχείο. Mode r w a Σημασία Μόνο Aνάγνωση. Αν το αρχείο δεν υπάρχει, επιστρέφεται NULL Μόνο Eγγραφή. Αν το αρχείο δεν υπάρχει δημιουργείται, αν υπάρχει τα περιεχόμενά του καταστρέφονται. Προσθήκη. Αν το αρχείο δεν υπάρχει, δημιουργείται. r+ Ανάγνωση και εγγραφή. Αν το αρχείο δεν υπάρχει, επιστρέφεται NULL. w+ Ανάγνωση και εγγραφή. Αν το αρχείο δεν υπάρχει δημιουργείται, αν υπάρχει τα περιεχόμενά του καταστρέφονται. a+ Προσθήκη και ανάγνωση. Αν το αρχείο δεν υπάρχει, δημιουργείται.

Β) Κλείσιμο Αρχείων 1. Συνάρτηση fclose (stdio.h) int fclose(file *fp); Η παράμετρος fp υποδεικνύει την Οντότητα ιαχείρισης Αρχείου. main() {. FILE *fp; fp = fopen("myfile.txt", "r"); fclose(fp); 14-13

Γ) Άνοιγμα/ Εγγραφή/ Κλείσιμο Αρχείων Γράψετε ένα απλό πρόγραμμα που προσθέτει την λέξη Hello σε ένα αρχείο. #include <stdio.h> Append mode Προσθέτει int main() { (append) επιπλέον δεδομένα FILE *fp; σε ένα αρχείο. fp = fopen("myfile.txt", "a"); // άνοιγμα αρχείου fprintf(fp, "Hello"); // εκτύπωση/εγγραφή σε αρχείο fclose(fp); // κλείσιμο αρχείου return 0; Ας δούμε τώρα τις εντολές fprintf, fclose πιο αναλυτικά.

Γ) Άνοιγμα/ Εγγραφή/Κλείσιμο Αρχείων (συν.) To ίδιο πρόγραμμα με συνθήκη #include <stdio.h> έλεγχου που ελέγχει αν άνοιξε το αρχείο. main() { FILE *fp; // Try to open the file if ((fp = fopen("myfile.txt", a")) == NULL) { printf("error opening file\n"); exit(1); // Write to the file Hello 5 6 Π.χ., Αν γέμισε ο δίσκος τότε το fprintf(fp, "Hello%d %d, 5,6); fopen θα αποτύχει, και ο fclose(fp); (p); χρήστης του προγράμματος μπορεί να ειδοποιηθεί με μήνυμα λάθους.

Άνοιγμα / Ανάγνωση Ακέραιου / Κλείσιμο Αρχείων #include <stdio.h> Mode Αά Ανάγνωσης main() { FILE *fp; int a; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); // ιάβασε ένα αριθμό από το αρχείο fscanf(fp, %d, &a); // Close the file fclose(fp); Ανάγνωση ενός ακεραίου από το αρχείο.

Άνοιγμα / Ανάγνωση Ακέραιου / Εκτύπωση / Κλείσιμο Αρχείων #include <stdio.h> main() { FILE *fp; int a; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); // ιάβασε ένα αριθμό από το αρχείο fscanf(fp, %d, &a); // Εκτύπωσε τον αριθμό Ανάγνωση ενός printf( %d, a); ακεραίου από αρχείο και // Close the file εκτύπωση του στην fclose(fp); οθόνη.

Άνοιγμα / Ανάγνωση Ακέραιου + Εκτύπωση x 2 / Κλείσιμο #include <stdio.h> main() { FILE *fp; int a; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); fscanf(fp, %d, &a); printf( %d, a); fscanf(fp, %d, &a); printf( %d, a); Ανάγνωση δυο ακέραιων από αρχείο και εκτύπωση τους στην οθόνη. fclose(fp);

Πρόγραμμα Ανάγνωσης Πολλών Αριθμών Κάποιος σας δίδει ένα μεγάλο αρχείο αριθμών. Σας ζητά να βρείτε τον μέγιστο αριθμό στο αρχείο. Myfile.txt 5 6 64 5 5 53 34 4 4 100 54 54 543 6

Πρόγραμμα Ανάγνωσης Πολλών Αριθμών (Κώδικας) #include <stdio.h> main() { FILE *fp; int a; int max=-1; if ((fp = fopen("myfile.txt", r")) == NULL) { printf("error opening file\n"); exit(1); while (fscanf(fp, "%d", &a)!= EOF) { //printf("%d\n", a); if (a>max) { max = a; printf( max:%d, max); // Print the MAX fclose(fp); // Close the file

Άσκηση Τι ακριβώς κάνει το πιο κάτω πρόγραμμα? #include <stdio.h> #include <stdlib.h> main() { FILE *fp; int i; int max=-1; srand(time(null)); if ((fp = fopen("myfile.txt", "w")) == NULL) { printf("error opening file\n"); exit(1); for (i=0;i<10;i++) { fprintf(fp, "%d\n", rand() % 1000); // Close the file fclose(fp);

Τέλος 10 ου Κεφαλαίου