Δομές Δεδομένων και Αρχεία Ενότητα 4: Ευρετηριασμένα Αρχεία Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Διδακτική Πληροφορικής
Advertisements

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 4: Συμβολοσειρές και Δομές Ελέγχου. Διδάσκων: Νικόλαος Θ Λιόλιος,
Δομές Δεδομένων και Αρχεία Ενότητα 2: Αρχεία Δομών I (Binary Files) Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Δομές Δεδομένων και Αρχεία Ενότητα 7: Η δομή Στοίβα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Δομές Δεδομένων και Αρχεία Ενότητα 10: Κυκλικά και Διπλά Συνδεδεμένη Λίστα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I.
Δομές Δεδομένων και Αρχεία
Διδακτική Πληροφορικής Ενότητα 2: Η εξέλιξη των εργαλείων της Εκπαίδευσης. Διδάσκων: Γεώργιος Σούλτης, Επίκουρος Καθηγητής. Τμήμα Μηχανικών Πληροφορικής,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
Δομές Δεδομένων και Αρχεία
Δομές Δεδομένων και Αρχεία Ενότητα 8: Η δομή Ουρά Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Δομές Δεδομένων και Αρχεία Ενότητα 3: Αρχεία Δομών ΙΙ Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Υδραυλικά & Πνευματικά ΣΑΕ
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Ανθρωπολογία του Θεάτρου Ενότητα 4 η : Βασικές αρχές της Τέχνης του Ηθοποιού Γιώργος Σαμπατακάκης, M.Phil. (Καίμπρητζ) – Ph.D. (Λονδίνο) Τμήμα Θεατρικών.
Τεχνολογία Ξύλου 1 Ενότητα 13: Ποιότητα και Πιστοποίηση Ξυλείας Διδάσκων: Δρ. Μιχάλης Σκαρβέλης, Αναπληρωτής Καθηγητής. Τμήμα Σχεδιασμού και Τεχνολογίας.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Εκπαιδευτικά Προγράμματα με Χρήση Η/Υ ΙΙ Θέμα «παιγνίδια» (website address) Διδάσκουσα: Καθηγήτρια Τζένη.
Στοιχεία Μηχανών ΙΙ Ενότητα 3: Μετωπικοί τροχοί με κεκλιμένη οδόντωση – Κωνικοί οδοντωτοί τροχοί Δρ Α. Δ. Τσολάκης Τμήμα Μηχανολόγων Μηχανικών Τ.Ε. ΕΛΛΗΝΙΚΗ.
Τμήμα Τεχνολόγων Γεωπόνων Τίτλος Μαθήματος: ΚΑΛΛΩΠΙΣΤΙΚΑ ΔΕΝΤΡΑ ΚΑΙ ΘΑΜΝΟΙ Ενότητα 12: Οδηγίες δημιουργίας φυτολογίου Γρηγόριος Βάρρας Αν. Καθηγητής Άρτα,
Τεχνολογία και Προγραμματισμός Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός Ι
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι
Χρονικός Προγραμματισμός Έργων (Εργαστήριο)
Προγραμματισμός ΗΥ Ενότητα 11: Header Files. Διδάσκων: Ηλίας Κ Σάββας,
Χρονικός Προγραμματισμός Έργων (Εργαστήριο)
Ενότητα # 8: ΡΕΑΛΙΣΜΟΣ Αιλιάνα Μαρτίνη Τμήμα Ιστορίας
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 9: Δείκτες και Δυναμική Διαχείριση Μνήμης.
Τμήμα Μηχανολόγων Μηχανικών Τ.Ε.
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΦΡΟΝΤΙΣΤΗΡΙΟ: ΘΕΡΜΙΚΕΣ ΤΑΣΕΙΣ
Στοιχεία Μηχανών ΙΙ Ενότητα 4: Πλανητικοί Μηχανισμοί Δρ Α. Δ. Τσολάκης
ΕνΟτητα # 9: Ms Word VI CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
ΜΗΧΑΝΙΚΗ ΤΩΝ ΥΛΙΚΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ ΛΕΠΤΟΤΟΙΧΑ
Διαχείριση Κινδύνου Ενότητα 7: Παρακολούθηση Κινδύνων.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(3)
Ενότητα 10 : Κατασκευή ΝΠΑ Αλέξανδρος Τζάλλας
Ενότητα 2 : Το σύστημα βάσεων δεδομένων MySQL (II) Ιωάννης Τσούλος
ΜΗΧΑΝΙΚΗ ΤΩΝ ΥΛΙΚΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ: ΔΙΚΤΥΩΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Προγραμματισμός κινητών συσκευών
Ηλεκτρικές Μηχανές ΙΙ Ενότητα 5: Κανονικοποιημένες Καμπύλες
Προγραμματισμός κινητών συσκευών
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(4)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΕνΟτητα # 8: Ms Word V CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(5)
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(10)
ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Προγραμματισμός κινητών συσκευών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Μεταγράφημα παρουσίασης:

Δομές Δεδομένων και Αρχεία Ενότητα 4: Ευρετηριασμένα Αρχεία Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας Ο Αναγνώστης να μπορεί να:  Διαχειρίζεται πλήρως αρχεία με ευρετήρια. Ευρετηριασμένα Αρχεία 4

Περιεχόμενα ενότητας  Ευρετηριασμένα Αρχεία (Indexed Files): Ευρετηριασμένα Αρχεία (Indexed Files):  Δημιουργία / Επέκταση, Δημιουργία / Επέκταση,  Προβολή, Προβολή,  Αναζήτηση, Αναζήτηση,  Ταξινόμηση. Ταξινόμηση. Ευρετηριασμένα Αρχεία 5

Παράδειγμα struct Pelatis { int kodikos; char epi[[20]; char ono[15]; float xreosi; }; struct Pelatis r; FILE *P; /*Αρχείο πελατών */ Ευρετηριασμένα Αρχεία 6

Ευρετήρια (1 από 2)  Ευρετήρια υπάρχουν σε όλα τα βιβλία,  Βοηθητική δομή αρχείου η οποία επιταχύνει την αναζήτηση στο κύριο αρχείο,  Ευρετήριο σε σχέση με κάποιο πεδίο  πεδίο ευρετηριοποίησης.  Το αρχείο ευρετηρίου καταλαμβάνει πολύ λιγότερο χώρο από το βασικό αρχείο (2 πεδία ανά εγγραφή). Ευρετηριασμένα Αρχεία 7

Ευρετήρια (2 από 2)  Η δομή του αρχείου ευρετηρίου αποτελείται από το πεδίο ευρετηρίασης και την φυσική θέση της αντίστοιχης εγγραφής στο βασικό αρχείο:  Πεδίο 1 – Θέση 1  Πεδίο 2 – Θέση 2   Πεδίο Ν-1 - Θέση Ν-1 Ευρετηριασμένα Αρχεία 8

Ευρετηριασμένο Αρχείο Κ Φ Β Α Α Β Κ Φ Ν Βασικό Αρχείο Ευρετήριο Αρχείο Ν Ευρετηριασμένα Αρχεία 9

Header File struct Pelatis { char Kod[10]; char Epi[20]; char Ono[10]; float Ypo; }; struct Index { char Kod[10]; int Thesi; }; FILE *pel; FILE *ipel; #define Diagrafi "*****" struct Pelatis P; struct Index I; char Pelates[] = "IPelatologio.dat"; char IndexF[] = "Index.dat”; Ευρετηριασμένα Αρχεία 10

Διαδικασίες Α. Ε.  Δημιουργία – Επέκταση,  Προβολή,  Αναζήτηση,  Διόρθωση,  Διαγραφή,  Ταξινόμηση,  Ευρετηριασμένα Αρχεία 11

Δημιουργία – Επέκταση (1 από 4)  Εισαγωγή εγγραφής στο τέλος του βασικού αρχείου,  Υπολογισμού θέσης εισαγόμενης εγγραφής,  Εισαγωγή στο αρχείο ευρετηρίου του πεδίου – ευρετηρίασης και της φυσικής θέσης της εισαγόμενης εγγραφής Ευρετηριασμένα Αρχεία 12

Δημιουργία – Επέκταση (2 από 4) void dim_epekt(void) { int synexeia, N=0; pel = fopen(Pelates, "rb+"); ipel = fopen(IndexF, "rb+"); if (pel == NULL) { pel = fopen(Pelates, "wb"); /* Δημιουργία */ ipel = fopen(IndexF, "wb"); } else { fseek(pel, 0, SEEK_END); /* Επέκταση */ fseek(ipel, 0, SEEK_END); N = ftell(ipel) / sizeof(struct Index); } Ευρετηριασμένα Αρχεία 13

Δημιουργία – Επέκταση (3 από 4) do { printf("\n\n Κωδικός πελάτη : "); scanf("%s", &P.Kod); printf("\n\n Επίθετο: "); scanf("%s", &P.Epi); printf("\n\n Όνομα: "); scanf("%s", &P.Ono); printf("\n\n Υπόλοιπο: "); scanf("%f", &P.Ypo); fwrite(&P, sizeof(struct Pelatis), 1, pel); Ευρετηριασμένα Αρχεία 14

Δημιουργία – Επέκταση (4 από 4) strcpy(I.Kod, P.Kod); I.Thesi= N; fwrite(&I, sizeof(struct Index), 1, ipel); N++; printf("\n\n Θέλετα νέα καταχώρηση (0=Όχι, 1=ΝΑΙ) : "); scanf("&d", &synexeia); } while (synexeia == 1); fclose(pel); fclose(ipel); } Ευρετηριασμένα Αρχεία 15

Προβολή (1 από 3)  Εφόσον δεν τελειώνει το αρχείο ευρετηρίου:  Διάβασε μία εγγραφή,  Εάν δεν διάβασες τέλος αρχείου: Μετάβαση στο βασικό αρχείο του δείκτη στην θέση που υπέδειξε η εγγραφή του ευρετηρίου, Διάβασε την εγγραφή από το βασικό αρχείο, Εμφάνισε την εγγραφή,  Τέλος Εάν  Τέλος Εφόσον Ευρετηριασμένα Αρχεία 16

Προβολή (2 από 3) pel = fopen(Pelates, "rb"); if (pel == NULL) { printf("\n\nΤο Πελατολόγιο Δεν έχει δημιουργηθεί ακόμη! "); printf("\nΣυνεχίστε με δημιουργία του!!! \n\n "); return; } ipel = fopen(IndexF, "rb"); Ευρετηριασμένα Αρχεία 17

Προβολή (3 από 3) while (! feof(ipel) ) { fread(&I, sizeof(struct Index), 1, ipel); if ( ! feof(ipel) && strcmp(I.Kod, Diagrafi) != 0) { fseek(pel, I.Thesi*sizeof(struct Pelatis), SEEK_SET); fread(&P, sizeof(struct Pelatis), 1, pel); aa++; synolo += P.Ypo; printf("\n%5d %10s %20s %10s %10.2f", aa, P.Kod, P.Epi, P.Ono, P.Ypo); } Ευρετηριασμένα Αρχεία 18

Αναζήτηση (1 από 2)  Η αναζήτηση γίνεται στο αρχείο ευρετήριο:  Ταχύτερη,  Δυαδική αναζήτηση.  Εντοπισμός εγγραφής και φυσικής της θέσης στο βασικό αρχείο,  Μετάβαση στην θέση στο βασικό αρχείο,  Διάβασμα της προς αναζήτηση εγγραφής. Ευρετηριασμένα Αρχεία 19

Αναζήτηση (2 από 2) printf("\n\nΕισαγωγή του κωδικού πελάτη : "); scanf("%s", kodikos); while (! feof(ipel) && (vrethike == 0)) { fread(&I, sizeof(struct Index), 1, ipel); if ( strcmp(kodikos, I.Kod) == 0 ) { fseek(pel, I.Thesi*sizeof(struct Pelatis), SEEK_SET); fread(&P, sizeof(struct Pelatis), 1, pel); vrethike = 1; printf("\n%10s %20s %10s %10.2f", P.Kod, P.Epi, P.Ono, P.Ypo); } Ευρετηριασμένα Αρχεία 20

Ταξινόμηση (1 από 3)  Η ταξινόμηση αφορά μόνο το αρχείο ευρετήριο.  Ταχύτερη:  Πολύ μικρότερος όγκος δεδομένων.  Δεν αλλάζει η φυσική θέση των εγγραφών στο βασικό αρχείο:  Χρήσιμο σε πάρα πολλές περιπτώσεις (όταν η διάταξη δίνει κάποιες πληροφορίες, π.χ. παλαιότητα). Ευρετηριασμένα Αρχεία 21

Ταξινόμηση (2 από 3) fseek(ipel, 0, SEEK_END); N = ftell(ipel) / sizeof(struct Index); for (i=0; i<N-1; i++) { thesi = i; fseek(ipel, thesi*sizeof(struct Index), SEEK_SET); fread(&elaxisto, sizeof(struct Index), 1, ipel); for (j=i+1; j<N; j++) { fseek(ipel, j*sizeof(struct Index), SEEK_SET); fread(&x, sizeof(struct Index), 1, ipel); if (strcmp(x.Kod, elaxisto.Kod) < 0) { elaxisto = x; thesi = j; } Ευρετηριασμένα Αρχεία 22

Ταξινόμηση (3 από 3) fseek(ipel, i*sizeof(struct Index), SEEK_SET); fread(&temp, sizeof(struct Index), 1, ipel); fseek(ipel, thesi*sizeof(struct Index), SEEK_SET); fread(&elaxisto, sizeof(struct Index), 1, ipel); fseek(ipel, i*sizeof(struct Index), SEEK_SET); fwrite(&elaxisto, sizeof(struct Index), 1, ipel); fseek(ipel, thesi*sizeof(struct Index), SEEK_SET); fwrite(&temp, sizeof(struct Index), 1, ipel); } Ευρετηριασμένα Αρχεία 23

Τέλος Ενότητας