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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Transcript:

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

Κεφάλαιο 11 Πίνακες Ι

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

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

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

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

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

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

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

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

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

3) Αρχικοποίηση Πίνακα Πάντοτε πρέπει να δίνουμε κάποιες αρχικές τιμές στις διάφορες θέσεις του πίνακα. Αυτό δεν είναι κάτι νέο. Αυτό κάναμε και με τις μεταβλητές, π.χ. int a; 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, θα δούμε στην συνέχεια τον τρόπο

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

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

4) Αρχικοποίηση Πίνακα II Μπορούμε να αρχικοποιήσουμε τον πίνακα σε ότι θέλουμε, π.χ. 0 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 1 4 9 4 16 15-15

5) Πρόσβαση Πίνακα Σύνταξη: όνομα[αριθμοδείκτης] Ο αριθμοδείκτης πίνακα (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] υπάρχει

5) Πρόσβαση Πίνακα #include <stdio.h> int main(){ char table[5]={}; table[0] = 'a'; table[1] = 'b'; // ήλωση & Αρχικοποίηση Πίνακα // Αλλαγή θέσης 0 του πίνακα // Αλλαγή θέσης 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

5) Πρόσβαση Πίνακα 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}; 11 13 17 19 23 29 31};

5) Πρόσβαση Πίνακα Όλες οι πιο κάτω εντολές είναι ορθές 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++;

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

6) Παράδειγμα βαθμών (συν.) /* 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,,g gradecount [2] ]); printf ( %2d Es\n, gradecount [1] ) ; printf ( %2d Fs\n, gradecount [0] ) ;

11 ο Κεφάλαιο Τέλος Μέρους 1