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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8. Συνθήκες ελέγχου, λογικοί τελεστές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9. Εντολές επανάληψηςκαι η εντολή

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον δομημένο προγραμματισμό

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

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

Πίνακες (Arrays) Εισαγωγή στη C++

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

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

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

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

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

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

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

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

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

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

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

Transcript:

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

Πίνακες o Εισαγωγή o Δήλωση o Αρχικοποίηση o Πρόσβαση o Παραδείγματα 2

Πίνακες -Εισαγωγή o Μία δομή δεδομένων είναι ένα σύνολο σχετιζομένων τύπων δεδομένων (π.χ. int, char, float, ). o Ένας πίνακας είναι μια απλή δομή δεδομένων στην οποία τα δεδομένα έχουν τον ίδιο τύπο. o Οι πίνακες που θα μελετήσουμε σε αυτό το μάθημα είναι στατικοί,δηλαδή το μέγεθος τους ορίζεται εκ των προτέρων (πριν την μεταγλώττιση). Πίνακας Ακεραίων 5 2 6 9 3 0 1 2 3 4 Πίνακας Χαρακτήρων H E L L O 0 1 2 3 4 3

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

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

Δήλωση πίνακα <τύπος> όνομα[<μέγεθος>]; <τύπος> όνομα[<μέγεθος>]={αρχικοποίηση}; o Το μέγεθος χρειάζεται, εκτός και εάν γίνεται αρχικοποίηση. char a[3]; (Σωστό) char a[ ]; (Λάθος) o Ορισμός χωρίς μέγεθος το μέγεθος του πίνακα είναι ίσο με τα στοιχεία της αρχικοποίησης π.χ. charpinakas[]={ a, b, c }; (Σωστό) 6

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

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

Δήλωση μεγέθους με define o Συχνά χρησιμοποιούμε#define για να δηλώσουμε το μέγεθος των arrays #define SIZE 39 #define GRADES 5 main ( ) { intscore [SIZE] ; int gradecount[grades] ; } 9

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

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

Αρχικοποίηση Πίνακα o Πριν είχαμε πει ότι ένας πίνακας αρχικοποιείτε με την εντολή της μορφής int table[5]={}; o Δηλαδή αυτό είναι ισοδύναμο με το πιο κάτω σύνολο εντολών #define MAX 50 int x[max], i; for(i=0;i<max; i++) x[i]=0; 12

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

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

Πρόσβαση Πίνακα #include <stdio.h> Τυπώνει: Hello a b \n Hello input1 input2 intmain() { 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]); } 15

Πρόσβαση Πίνακα 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}; 16

Πρόσβαση Πίνακα Τι μπορώ να κάνω με τους αριθμοδείκτες; 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++; 17

Παράδειγμα Γράψετε ένα πρόγραμμα το οποίο θα δέχεται από το χρήστη τις βαθμολογίες 39 φοιτητών από το πληκτρολόγιο θα τις αποθηκεύει σε πίνακα και στην συνέχεια θα εκτυπώνει τον μέσο όρο, και πόσα Α,Β,C,D,E,F υπάρχουν. #include <stdio.h> #define SIZE 39 #define GRADES 6 main ( ) { inti, 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 ] ); } 90 <= A <= 100 80 <= B < 90 70 <= C < 80 60 <= D < 70 50 <= E < 60 0 <= F < 50 18

Παράδειγμα /* 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] ) ; 19

Τέλος διάλεξης 20