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

Σχετικά έγγραφα
Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

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

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

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

ΗΥ-150. Πίνακες (Arrays)

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

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

ΗΥ-150. Προγραµµατισµός. Πίνακες (Arrays)

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

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

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

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

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

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

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

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

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

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

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

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

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

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

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

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

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

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

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Υπολογισμός - Εντολές Ελέγχου

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

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

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

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

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

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

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

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις (Διάλεξη 18)

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 12: υναµική έσµευση Μνήµης. ηµήτρης Ψούνης

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

7. Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου

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

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

16. Πίνακεσ και Συναρτήςεισ

H ΓΛΩΣΣΑ C. Μάθηµα 8: είκτες. ηµήτρης Ψούνης

12. Συναρτήσεις (Μέρος ΙI)

Υπολογισμός - Εντολές Επανάληψης

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

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

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

Transcript:

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

Πίνακες (Arrays) Σε αυτή την ενότητα θα µιλήσουµε για την δοµή δεδοµένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. ήλωση Πίνακα 3. Αρχικοποίηση Πίνακα 4. Πρόσβαση 5. Παραδείγµατα 15-2

1) Πίνακας - Εισαγωγή & Σύνταξη Μία δοµή δεδοµένων είναι ένα σύνολο σχετιζοµένων τύπων δεδοµένων (π.χ. int, char, float, ). Ένας πίνακας είναι µια απλη δοµη δεδοµενων στην οποια τα δεδοµένα έχουν το ίδιο όνοµα και τον ίδιο τύπο. π.χ. αντί int a,b,c; int pinakas[3]; Οι πίνακες που θα µελετήσουµε σε αυτό το µάθηµα είναι στατικοί, δηλαδή το µέγεθος τους ορίζεται εκ των προτέρων (πριν την µεταγλώττιση). Πίνακας Ακεραίων 5 2 6 9 3 0 1 2 3 4 Πίνακας Χαρακτήρων H E L L O 0 1 2 3 4 15-3

1) Πίνακας - Εισαγωγή & Σύνταξη Ένας πίνακας είναι µία δοµή δεδοµένων, όπου ένα σύνολο αντικειµένων του ιδίου τύπου αποθηκεύονται σε σειρά, π.χ. τύπος int md[12]= {31,28,31,30,31,30,31}; όνοµα Μέγεθος (πλήθος στοιχείων md[0] md[1] md[2] md[11] 31 28 31 31 τιµές 15-4

2) ηλώσεις πινάκων int array [5] ; Η παραπάνω δήλωση δεσµεύει αρκετή µνήµη ώστε να χωρέσουν 5 ακέραιοι. εν βάζει αρχικές τιµές σε αυτές τις θέσεις µνήµης Θα δούµε στην συνέχεια τρόπους ανάθεσης τιµών σε αυτές τις θέσεις του πίνακα π.χ. int array [5] = { 5, 2, 6, 9, 3 } ;) Τα στοιχεία σε ένα πίνακα µε n στοιχεία αριθµούνται από το 0 εώς το (n-1). H πρώτη θέση του πίνακα είναι η θέση 0 array 5 2 6 9 3 0 1 2 3 4 n=5 15-5

2) ηλώσεις πινάκων <τύπος> όνοµα[<µέγεθος>]; <τύπος> όνοµα[<µέγεθος>]={αρχικοποίηση}; Το µέγεθος χρειάζεται, εκτός και εάν γίνεται αρχικοποίηση. π.χ. char a[3]; // ΣΩΣΤΟ π.χ. char a[ ]; // ΛΑΘΟΣ Ορισµός χωρίς µέγεθος το µέγεθος του πίνακα είναι ίσο µε τα στοιχεία της αρχικοποίησης Π.χ. char pinakas[ ]={ a, b, c }; ΣΩΣΤΟ 15-6

2) ηλώσεις πινάκων #include <stdio.h> int main() { char a; // ήλωση Μεταβλητής } char table[5]; // ήλωση Πίνακα 5 ακεραίων. 15-7

2) ηλώσεις πινάκων (Αποθήκευση) Τα στοιχεία ενός πίνακα αποθηκεύονται σε συνεχόµενα κελιά στη µνήµη του υπολογιστή (memory cells). Πίνακας Ακεραίων 9 int a[2]={9,5}; Τα δεδοµένα είναι συνεχόµενα στην µνήµη 5 ήλωση µεταβλητών 5 9 int a=9,b=5; Τα δεδοµένα είναι οπουδήποτε στην µνήµη 15-8

2) ηλώσεις πινάκων και χρήση #define Συχνά χρησιµοποιούµε #define για να δηλώσουµε το µέγεθος των arrays #define SIZE 39 #define GRADES 5 main ( ) { int score [SIZE] ; int gradecount [GRADES] ; } 15-9

2) ηλώσεις πινάκων int score [39], gradecount [6]; ηλώνει δύο πίνακες τύπου int Κανένας πίνακας δεν έχει αρχικοποιηθεί Στο score έχει χώρο για 39 στοιχεία (ένα για κάθε µαθητή της τάξης) gradecount έχει χώρο για 6 στοιχεία (ένα για κάθε βαθµό, A-F) 15-10

3) Αρχικοποίηση Πίνακα Πάντοτε πρέπει να δίνουµε κάποιες αρχικές τιµές στις διάφορες θέσεις του πίνακα. Αυτό δεν είναι κάτι νέο. Αυτό κάναµε και µε τις µεταβλητές, π.χ. int a; a = 0; Μπορούµε να κάνουµε όλες τις θέσεις του πίνακα ίσο µε «0», µε την πιο κάτω εντολή: int a[10]={}; ή int a[10]; a[0]=0; a[1]=0;. Όχι πρακτικό Επίσης, τι γίνεται αν θέλουµε κάποια άλλη τιµή αρχικοποίησης εκτός του 0, θα δούµε στην συνέχεια τον τρόπο 15-11

3) Αρχικοποίηση Πίνακα #include <stdio.h> int main() { // ήλωση & Αρχικοποίηση Πίνακα char table[5]={};. } 15-12

5) Αρχικοποίηση Πίνακα II Πριν είχαµε πει ότι ένας πίνακας αρχικοποιείτε µε την εντολή της µορφής char table[5]={}; ηλαδή αυτό είναι ισοδύναµο µε το πιο κάτω σύνολο εντολών #define MAX 5 int x[max], i; for(i=0;i<max; i++) x[i]=0; Βλέπουµε ότι το for loop µας επιτρέπει να αρχικοποιήσουµε ένα πίνακα σε ότι τιµή θέλουµε 15-13

5) Αρχικοποίηση Πίνακα II Μπορούµε να αρχικοποιήσουµε τον πίνακα σε ότι θέλουµε, π.χ. 0 #define SIZE 5 int square[size], i; /*αρχικοποίηση: στοιχείο i se i^2*/ for (i = 0; i < SIZE; ++i) square[i] = i * i; 1 2 3 4 0 1 4 9 16 15-14

4) Πρόσβαση Πίνακα Σύνταξη: όνοµα[αριθµοδείκτης] Ο αριθµοδείκτης πίνακα (subscript ή index) πρέπει να είναι int x[0] τιµή πρώτου στοιχείου του πίνακα x x[i] τιµή i-οστού στοιχείου του πίνακα x Το i-οστό στοιχείο βρίσκεται στη θέση i+1 Ευθύνη προγραµµατιστή να επαληθεύσει ότι η τιµή αριθµοδείκτη πίνακα είναι στο πεδίο [0, στοιχεία 1] Π.χ. int a[5]={}; a[5]=3; ΛΑΘΟΣ a[5] δεν υπάρχει Προσοχή µόνο το a[0] µέχρι a[4] υπάρχει 15-15

4) Πρόσβαση Πίνακα #include <stdio.h> int main() { char table[5]={}; // ήλωση & Αρχικοποίηση Πίνακα table[0] = 'a'; // Αλλαγή θέσης 0 του πίνακα table[1] = 'b'; // Αλλαγή θέσης 1 του πίνακα // Εκτύπωση δυο θέσεων του πίνακα printf("hello %c %c\n", table[0], table[1]); } // Αλλαγή τιµων του πίνακα µε τιµές εισόδου από το πληκτρολόγιο scanf("%c %c", &table[0], &table[1]); printf("hello %c %c\n", table[0], table[1]); Τυπώνει: Hello a b \n Hello input1 input2 15-16

4) Πρόσβαση Πίνακα int x[]={1,2,3,5,7,11,13,17,19,23,29,31}; Πως µοιάζει ο πίνακας µετά την εκτέλεση των πιο κάτω εντολών? x[3] = 8258; sum = x[0] + x[1]; x[3] += 1; x[2] = x[0] + x[1]; O πίνακας τώρα είναι ως εξής : int x[]={1,2,3,8259,7,11,13,17,19,23,29,31}; 15-17

4) Πρόσβαση Πίνακα Όλες οι πιο κάτω εντολές είναι ορθές float f = 5.0; x[i] = 0; x[i] = x[j]; x[j+k*4]= x[u] + 3; x[x[1]]= 11; diff = x[y]-x[foo()]; total =total + x[i++]; (x[i]== x[(int)f]) x: Πίνακας Ακεραίων 5 2 6 9 3 0 1 2 3 4 int foo() δηλαδή: total=total+x[i]; i++; 15-18

5) Παράδειγµα βαθµών Γράψετε ένα πρόγραµµα το οποίο θα δέχεται από τον χρήστη τις βαθµολογίες 39 φοιτητών από το πληκτρολόγιο θα τις αποθηκεύει σε πίνακα και στην συνέχεια θα εκτυπώνει τον µέσο όρο, και πόσα Α,Β,C,D,E,F υπάρχουν. 90 <= A <= 100 80 <= B < 90 #include <stdio.h> #define SIZE 39 #define GRADES 6 main ( ) { int i, total, score [SIZE] ; int gradecount [GRADES]={} ; float average; Συνέχεια /* Fill score array with scores */ for ( i = 0 ; i < SIZE ; i++) { printf ( Enter next score : ) ; scanf ( %d, &score [ i ] ); } 70 <= C < 80 60 <= D < 70 50 <= E < 60 0 <= F < 50 15-19

5) Παράδειγµα βαθµών (συνέχεια) /* Calculate total & count grades */ for ( i = 0 ; i < SIZE ; i++) { total += score [ i ] ; switch ( score [ i ] / 10 ) { case 10 : case 9 : gradecount [5]++ ; break ; case 8 : gradecount [4]++ ; break ; case 7 : gradecount [3]++ ; break ; case 6 : gradecount [2]++ ; break ; case 5 : gradecount [1]++ ; break ; default : gradecount [0]++ ; } } } Συνέχεια average = (float) total / SIZE ; /* Print results */ printf ( The class average is %.2f\n, average ) ; printf ( %2d As\n, gradecount [5] ) ; printf ( %2d Βs\n, gradecount [4] ) ; printf ( %2d Cs\n, gradecount [3] ) ; printf ( %2d Ds\n, gradecount [2] ) ; printf ( %2d Es\n, gradecount [1] ) ; printf ( %2d Fs\n, gradecount [0] ) ; 15-20