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

Σχετικά έγγραφα
Μεθόδων Επίλυσης Προβλημάτων

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

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

Διάλεξη 6: Δείκτες και Πίνακες

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 9η: Πίνακες (arrays)

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

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

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

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

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

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

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

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

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

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

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

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία).

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

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

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

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ. p: i: 3 p: i: 5

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

Εισαγωγή στην πληροφορική

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

Διδάσκων: Παναγιώτης Ανδρέου

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

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

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

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

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

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

Πίνακες. Χρησιμοποιούνται για αποθήκευση συνόλου δεδομένων του ίδιου τύπου. Γραμμική Διάταξη Δήλωση Τύπος Δεδομένων ΌνομαΠίνακα[ length ]

17. Πολυδιάςτατοι πίνακεσ

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

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

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

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

οµές (structures) και Eνώσεις (unions)

Κεφάλαιο 8.6. Πίνακες ΙI ( ιάλεξη 16) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

5 &6. Τύποι δεδομένων, τελεστές και

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

γνωστό) ΘΕΩΡΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ Ασκήσεις C 1. Να γραφεί πρόγραµµα που να εµφανίζει τους 5 πρώτους µεγαλύτερους

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

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

ΠαράδειγµαΠρογραµµατισµού

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

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

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

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

Διάλεξη 10η: Πολυδιάστατοι Πίνακες

είκτες και Πίνακες (2)

Transcript:

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

Κεφάλαιο 9 Πολυδιάστατοι Πίνακες

Θέματα Διάλεξης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Σύνταξη και Σημασιολογία Επεξεργασία Στοιχείων Πολυδιάστατοι Πίνακες και Συναρτήσεις

Παραδείγματα με Μονοδιάστατους Πίνακες Συνάρτηση που να διαβάζει και να βάζει σε πίνακα βαθμούς φοιτητών μέχρι να διαβαστεί η τιμή -1 Πρόσθεσε ακόμα μια τιμή Πρόσθεσε ακόμα μια τιμή σε ταξινομημένο πίνακα

Πολυδιάστατοι Πίνακες (Multidimensional arrays) πίνακας με δύο ή περισσότερες διαστάσεις π.χ. float student_grades[num_students][num_courses];

Σύνταξη και Σημασιολογία Σύνταξη δήλωσης: τύπος ονομα[dim1][dim2]..[dimn]; Σημασία: πίνακας με n διαστάσεις και (dim1*dim2*..*dimn) στοιχεία Όνομα περιέχει την διεύθυνση του 1ου στοιχείου π.χ. student_grades περιέχει ΝUM_STUDENTS*NUM_COURSES στοιχεία 1ο στοιχείο: student_grades[0][0] τελευταίο: student_grades[num_students-1] [NUM_COURSES-1]

Επεξεργασία Πολυδιάστατων Πινάκων Επεξεργασία πολυδιάστατου πίνακα απαιτεί φωλιασμένους βρόχους (το επίπεδο φωλιάσματος είναι ίσο με τον αριθμό διαστάσεων του πίνακα). Στον ορισμό int count[4][3]={ {4,5,6}, {3,56,87}, {456,412,846}, {0,0,0} }; πίνακας 4 (γραμμές) x 3(στήλες) Με φωλιασμένο βρόχο for(i=0;i<num_students;++i) for(j=0;j<num_courses;++j) student_grades[i][j]=0; ομαδοποίηση σε γραμμές

Κλασσικά Παραδείγματα Πρόσθεση πινάκων n x m Πρόσθεση αντίστοιχων στοιχείων Πολλαπλασιασμός πινάκων n x k, k x m Πράξεις μεταξύ γραμμών του πρώτου και στήλες του δεύτερου

Αποθήκευση Πολυδιάστατων Πινάκων Τα δεδομένα πολυδιάστατου πίνακα αποθηκεύονται στη μνήμη με προτεραιότητα σειράς:1η γραμμή, 2 η γραμμή, 3η γραμμή, κτλ. int count[4][3]= { {4,5,6}, {3,56,87}, {456,412,846}, {0,0,0} };....

Πολυδιάστατοι Πίνακες και Συναρτήσεις Oρισμός Συνάρτησης με multi-dim παράμετρο: void display(int table[][num_courses],...); μόνο το μέγεθος της 1ης διάστασης δε χρειάζεται (γιατί;) Κλήση συνάρτησης με multi-dim παράμετρο display(student_grades,...); &student_grades[0][0]

Παράδειγμα Γράψετε ένα πρόγραμμα: Να διαβάζει από την είσοδο βαθμούς 80 φοιτητών. Για κάθε φοιτητή διαβάζονται 5 βαθμοί. Τα δεδομένα είναι καταχωρημένα ως ακολούθως: 90 60 70 89 45 (βαθμοί 1ου φοιτητή) 40 56 78 99 100 (βαθμοί 2ου φοιτητή) κτλ. Να υπολογίζει και να τυπώνει (α) βαθμούς κάθε φοιτητή, (β) τον μέσο όρο για κάθε φοιτητή, και (γ) τον μέσο όρο για κάθε μάθημα

Τι πρέπει να γίνει; Διαβαστούν τα δεδομένα (αποθηκευτούν) void read_data(float grades_table[80][5]); Υπολογισμός μέσων όρων void compute_averages(float grades_table[80][5], float average_per_student[80], float average_per_course[5] ); Τύπωση αποτελεσμάτων void display_results( float grades_table[80][5], float average_per_student[80], float average_per_course[5] );

Τι πρέπει να γίνει; (συν.) σταθερές #define NUM_STUDENTS 80 #define NUM_COURSES 5 πίνακες στη main(): float grade_table[num_students][num_courses]; float average_per_student[num_students]; float average_per_course[num_courses];

Τι πρέπει να γίνει; (συν.) void read_data(float grade_table[][num_courses]){ int i,j; for(i=0;i<num_students;++i) for(j=0;j<num_courses;++j) scanf( %f,&grade_table[i][j]); }

Τι πρέπει να γίνει; (συν.) void compute_averages(const float grade_table[][num_courses], float average_per_student[], float average_per_course[]) { int i, j; for(i=0; i<num_students; ++i) average_per_student[i]=0; for(i=0; i<num_courses; ++i) average_per_course[i]=0; for(i=0; i<num_students; ++i) for(j=0; j<num_courses; ++j){ average_per_student[i]+=grade_table[i][j]; average_per_course[j]+= grade_table[i][j]; } for(i=0; i<num_students; ++i) average_per_student[i]/=num_courses; for(i=0; i<num_courses; ++i) average_per_course[i]/=num_students; }

Τι πρέπει να γίνει; (συν.) void display_results(float grade_table[][num_courses], float average_per_student[], float average_per_course[]){ int i,j; for(i=0;i<num_students;++i){ for(j=0;j<num_courses;++j) printf( %5.2f, grade_table[i][j]); printf( %5.2f\n,average_per_student[i]; } for(j=0;j<num_courses;++j) printf( %5.2f,average_per_course[j]); printf( \n ); }

Πιο Γενικό Πρόβλημα Τα δυο πρώτα δεδομένα ορίζουν τον αριθμό φοιτητών και αριθμό μαθημάτων (που δεν πρέπει να ξεπερνά το 80 και το 5 αντίστοιχα). Τι αλλαγές συνεπάγονται από το πιο πάνω;

Τι πρέπει να γίνει; void read_data(float grade_table[][num_courses], int students, int courses){ int i,j; scanf( %d %d,students, courses); if (students>num_students courses>num_courses){ printf( error: students or courses > than allowed maximum ); exit(0); } for(i=0;i<students;++i) for(j=0;j<courses;++j) scanf( %f,&grade_table[i][j]); }

Τι πρέπει να γίνει; (συν.) void compute_averages(float grade_table[][num_courses], float average_per_student[], float average_per_course[], int students, int courses) { inti,j; for(i=0;i<students;++i) average_per_student[i]=0; for(i=0;i<courses;++i) average_per_course[i]=0; for(i=0;i<students;++i) for(j=0;j<courses;++j){ average_per_student[i]+=grade_table[i][j]; average_per_course[j]+= grade_table[i][j]; } for(i=0;i<students;++i) average_per_student[i]/=courses; for(i=0;i<courses;++i) average_per_course[i]/=student; }

Τι πρέπει να γίνει; (συν.) void display_results(float grade_table[][num_courses], float average_per_student[], float average_per_course[], int students, int courses){ int i,j; for(i=0;i<students;++i){ for(j=0;j<courses;++j) printf( %5.2f,grade_table[i][j]); printf( %5.2f\n,average_per_student[i]; } for(j=0;j<courses;++j) printf( %5.2f,average_per_course[j]); printf( \n ); }

Περίληψη Πολυδιάστατοι Πίνακες Σύνταξη και Σημασιολογία Επεξεργασία Δεδομένων Αποθήκευση Πολυδιάστατων Πινάκων Πολυδιάστατοι Πίνακες και Συναρτήσεις Παραδείγματα

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