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

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

Προγραμματισμός II. Τυχαίοι αριθμοί Διεπαφές

stdio.h> #include <string.h< string.h> void main() { char *px*

ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ

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

Προγραμματισμός 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.

ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ

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

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

Προγραμματισμός II. Δυναμική διαχείριση μνήμης

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

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

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο8

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

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

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

ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ

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

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

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

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

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

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

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

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

Εισαγωγή στις Συναρτήσεις

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

ΠΣ-ΕΡ+ΤΑΠΕ, όπου: ΠΧ είναι η πάγια χρέωση, ύψους Є. ΠΣ είναι το ποσό στρογγυλοποίησης (ΠΣ) του προηγούμενου λογαριασμού.

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

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

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

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Προγραμματισμός Υπολογιστών με C++

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

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

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

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

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

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

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

Γλώσσα Προγραμματισμού C

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

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

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

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

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

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Διάλεξη 11η: Δείκτες, μέρος 1

Προγραμματισμός I. Θεματική ενότητα 7: Δομές απαριθμητικοί τύποι δεδομένων

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

Διάλεξη 22η: Επιπλέον στοιχεία της C

Βασικές Αρχές Προγραμματισμού

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

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

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

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

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

Τμήμα Πληροφορικής & Επικοινωνιών

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

Transcript:

Θέμα 1ο (25%) Για το τμήμα κώδικα που ακολουθεί να περιγραφεί αναλυτικά η λειτουργία του, να αιτιολογηθεί η ενσωμάτωση των συγκεκριμένων αρχείων κεφαλίδας και ι να απεικονισθεί το περιεχόμενο των θέσεων μνήμης που καταλαμβάνουν οι μεταβλητές σε κάθε γραμμή κώδικα. Χάριν απλότητας να θεωρηθεί ότι οι μεταβλητές καταλαμβάνουν διαδοχικές θέσεις μνήμης. #include <stdio.h< stdio.h> #include <stdlib.h< stdlib.h> #include <assert.h< assert.h> float **allocate_2(int size1, int size2) { int i; float **deikt deikt; deikt=(float **)malloc(size1*sizeof(float sizeof(float *)); assert(deikt!=null); printf("addr(deikt)=%d deikt=% =%d\n",&deikt,deikt); for (i=0;i<size1;i++) { deikt[i]=(float *)malloc(size2*sizeof(float sizeof(float)); assert(deikt[i]!=null); printf("addr(deikt[%d])=%d deikt[%d]=%d\n",i,&deikt[i],i,deikt[i]); return(deikt); main() { float **s; s=allocate_2(4,2000);...........

// 2005_3_1 _1 Δομημένος Προγραμματισμός

Θέμα 2ο (55%) Για τη διαχείριση των στοιχείων των συνδρομητών μίας εταιρείας που π παρέχει υπηρεσίες τηλεφωνίας ορίζεται στη main() ο πίνακας customer_list list[size] με στοιχεία τύπου δομής CustomerT,, η οποία θα περιλαμβάνει το ονοματεπώνυμο του συνδρομητή, τη διεύθυνσή του (σε μεταβλητή τύπου δομής), το επάγγελμά του και τον τηλεφωνικό αριθμό του. Για τη διαχείριση μεμονωμένων συνδρομητών, μέσα στη main() ορίζεται η μεταβλητή svar, επίσης τύπου δομής CustomerT.. Ο αριθμός των συνδρομητών SIZE καθορίζεται με εντολή προεπεξεργαστή #define. Ζητείται: α) Nα α ορισθεί ο τύπος δομής CustomerT. β) Να γραφούν συναρτήσεις που να επιτελούν τα ακόλουθα: void save_data data( FILE *fp, CustomerT *list ): Aποθήκευση των δεδομένων του πίνακα customer_list στο δυαδικό αρχείο customers.dat dat. void read_data data( FILE *fp, CustomerT *list ): Aνάγνωση των δεδομένων από το αρχείο και αποθήκευσή τους στον πίνακα customer_list list. void read_customer customer( FILE *fp, CustomerT *s, int k ): Προσπέλαση ενός συνδρομητή που βρίσκεται στην k θέση του αρχείου και αποθήκευση των στοιχείων του σε μία μεταβλητή s τύπου CustomerT,, η οποία αντιστοιχίζεται σε μεταβλητή svar της main() (). void save_customer( ( FILE *fp* fp, CustomerT *s, int k ):) Aποθήκευση στο αρχείο των στοιχείων ενός συνδρομητή που βρίσκεται στην k θέση του πίνακα customer_list.

H συνάρτηση read_customer customer() χρησιμοποιείται για να φέρουμε τα στοιχεία του k-στού συνδρομητή από το αρχείο και πιθανώς να τα αλλάξουμε αργότερα. H συνάρτηση save_customer customer() χρησιμοποιείται όταν έχουμε κάνει αλλαγές στα στοιχεία ενός συνδρομητή και θέλουμε να ενημερώσουμε την εγγραφή του στο αρχείο. γ) Να γραφεί τμήμα της main() που θα περιλαμβάνει μόνο δήλωση των κατάλληλων μεταβλητών και από μία κλήση στις ανωτέρω συναρτήσεις. Παρατήρηση: : Απαιτείται η χρήση εργαλείων για τυχαία προσπέλαση δυαδικού αρχείου. //MONO μεταγλώττιση, δεν έχουν φορτωθεί στοιχεία για τους συνδρομητές #include <conio.h< conio.h> #include <stdio.h< stdio.h> #define SIZE 300 struct addresst { char street_name[30]; int street_number; char city[30]; int zip_code; ;

struct CustomerT { char name[20]; char surname[40]; addresst address; char tele[15]; char job[50]; ; void save_data(file *fp,customert *list); void read_data(file *fp,customert *list); void read_customer(file *fp,customert k); void save_customer(file *fp,customert k); main() { CustomerT customer_list[size]; // Έστω ότι φορτώθηκαν όλα τα στοιχεία των συνδρομητών στον πίνακα FILE *f1; f1=fopen("customers.dat","wb fopen("customers.dat","wb+"); save_data(f1,customer_list); read_data(f1,customer_list); read_customer(f1,&customer_list[15],15); //16oς συνδρομητής // Μεταβολή των στοιχείων του 16ου συνδρομητή save_customer(f1,&customer_list[15],15);

void save_data(file *fp,customert *list) { int i; rewind(fp); for (i=0;i<size;i SIZE;i++) fwrite(&list[i],sizeof(customert),1,fp); // Ισοδύναμα: fwrite(list,sizeof(customert),size,fp); void read_data(file *fp,customert *list) { rewind(fp); fread(list,sizeof(customert),size,fp); ); void read_customer(file *fp,customert k ) { fseek(fp,k*sizeof(customert),seek_set sizeof(customert),seek_set); ); fread(s,sizeof(customert),1,fp); void save_customer(file *fp,customert k) { fseek(fp,k*sizeof(customert),seek_set sizeof(customert),seek_set); ); fwrite(s,sizeof(customert),1,fp);