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

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

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

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

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

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

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

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

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

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

343 Ειςαγωγι ςτον Προγραμματιςμό

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

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

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. Διαφάνειεσ: Βαςικζσ Αρχζσ Προγραμματιςμοφ Α.Π.Θ. Δθμιτρθσ Βράκασ

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

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

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

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

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

343 Ειςαγωγι ςτον Προγραμματιςμό

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

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

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

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

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου

343 Ειςαγωγι ςτον Προγραμματιςμό

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

343 Ειςαγωγι ςτον Προγραμματιςμό

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

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

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Visual C Express - Οδηγός Χρήσης

ΟΝΟΜΑΣΟΛΟΓΙΑ ΠΑΡΑΜΕΣΡΩΝ ΓΙΑ ΠΡΟΑΡΜΟΜΕΝΕ ΑΝΑΦΟΡΕ. παραμζτρου> (Εμφανίηεται ςαν Caption ςτθν φόρμα των φίλτρων).

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

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

Ποσοτικές Μέθοδοι Δρ. Χάϊδω Δριτσάκη

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

ςυςτιματα γραμμικϊν εξιςϊςεων

22. Ασκήσεις Επανάληψης

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

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

343 Ειςαγωγι ςτον Προγραμματιςμό

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

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε:

343 Ειςαγωγι ςτον Προγραμματιςμό

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

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

Γενικά Μαθηματικά ΙΙ

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

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

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

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

ΟΔΗΓΙΕ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΡΤΘΜΙΗ ΔΩΡΕΑΝ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΧΤΔΡΟΜΕΙΟΤ ΣΟ GOOGLE (G-MAIL)

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

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

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

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

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

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

Οδθγίεσ εγκατάςταςθσ και ρυκμίςεισ του ηυγοφ DIGI SM100

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

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία

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

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

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

Εργαςτθριακζσ Αςκιςεισ Αρικμθτικισ Ανάλυςθσ

Ιδιότθτεσ πεδίων Γενικζσ.

ΦΥΕ 14 ΑΚΑΔ. ΕΤΟΣ Η ΕΡΓΑΣΙΑ. Ημερομηνία παράδοςησ: 12 Νοεμβρίου (Όλεσ οι αςκιςεισ βακμολογοφνται ιςοτίμωσ με 10 μονάδεσ θ κάκε μία)

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

Παράςταςη ςυμπλήρωμα ωσ προσ 1

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

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

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

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ

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

ΕΝΟΤΗΤΑ 3: Χριςθ εργαλείων ζκφραςθσ, επικοινωνίασ, ανακάλυψθσ και δθμιουργίασ. ΚΕΦΑΛΑΙΟ 8: Επεξεργαςία Δεδομζνων και Υπολογιςτικά Φφλλα

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

Modellus 4.01 Συ ντομοσ Οδηγο σ

Εργαςτιριο Βάςεων Δεδομζνων

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

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

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Οντοκεντρικόσ Προγραμματιςμόσ

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

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

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

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

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Γενικά Μαθηματικά ΙΙ

SingularLogic Application. Παραμετροποίηση Galaxy Application Server

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox

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

Ραραμετροποίθςθ ειςαγωγισ δεδομζνων περιόδων

Γενικά Μαθηματικά ΙΙ

Transcript:

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

Σιμερα o Κλιςθ με τιμι o Κλιςθ με αναφορά o Πίνακεσ και ςυναρτιςεισ o Παραδείγματα

Ειςαγωγι o Στισ προθγοφμενεσ διαλζξεισ μάκαμε πϊσ να δθλϊνουμε, αρχικοποιοφμε να επεξεργαηόμαςτε και να αξιοποιοφμε πίνακεσ o Σιμερα κα μελετιςουμε πωσ μποροφμε να χρθςιμοποιιςουμε ζνα πίνακα ωσ όριςμα ςυνάρτθςθσ o Μασ επιτρζπει να επωφελθκοφμε όλων των πλεονεκτθμάτων των ςυναρτιςεων και των πινάκων

Κλιςθ με τιμι Όταν χρθςιμοποιοφμε μια μεταβλθτι (int, char, float), ςε μια ςυνάρτθςθ τότε δθμιουργείται ζνα αντίγραφο τθσ μεταβλθτισ, το οποίο δεν ζχει καμία ςχζςθ με τθν αρχικι μεταβλθτι. Αυτόσ ο τρόποσ οριςμοφ παραμζτρων ονομάηεται: Κλιςθ με τιμι (call by value) int add(int x) return x+4; int main() int a = 5; printf( %d\n,add(a)); Εκτφπωςθ printf( %d\n,a); 9 system( pause ); 5 return 0; a 5 5 x 9

Κλιςθ με τιμι o Η ςυνάρτθςθ ζχει μία τοπικι μεταβλθτι για να αποκθκεφςει το δικό τθσ αντίγραφο τθσ τιμισ που τθσ δίνουμε o Όταν κάνουμε αλλαγζσ ςτο αντίγραφο, θ αρχικι τιμι παραμζνει θ ίδια o Αν κζλουμε να επιςτρζψουμε τιμζσ πρζπει να χρθςιμοποιιςουμε τθ return

Κλιςθ με Αναφορά o Τι γίνεται αν κζλουμε να περάςουμε ζνα πίνακα ςε μια ςυνάρτθςθ? o Αν ο πίνακασ περνοφςε ςτθν ςυνάρτθςθ με τον ίδιο τρόπο που περνά θ μεταβλθτι (δθλαδι με αντιγραφι), τότε κάκε κάλεςμα κα ςιμαινε τθν αντιγραφι ενόσ μεγάλου αρικμοφ ςτοιχείων => Αυτό κα είχε ιδιαίτερο υπολογιςτικό κόςτοσ o Αντί να δθμιουργείτε ζνα νζο αντίγραφο όταν περνάμε ζνα πίνακα ςε μια ςυνάρτθςθ, γίνεται απλά κάποια αναφορά ςτον πίνακα. Αυτό το κάλεςμα ονομάηεται : Κλιςθ με Αναφορά (call by reference) o Δθλαδι δε γίνεται αντιγραφι των ςτοιχείων ςτθ ςυνάρτθςθ o Αυτό ςθμαίνει ότι μποροφμε να αλλάηουμε τουσ πίνακεσ μζςα από τισ ςυναρτιςεισ

Πίνακεσ και Συναρτιςεισ Χρθςιμοποιοφμε τθν ακόλουκθ ςφνταξθ όταν περνοφμε πίνακεσ ςε ςυναρτιςεισ o Στο πρότυπο και τον οριςμό τθσ ςυνάρτθςθσ : void FillArray ( int array[ ], int size); o Ή (μόνο ςτο Πρότυπο) void FillArray ( int [ ], int); o Στθ κλιςθ τθσ ςυνάρτθςθσ: FillArray (pin, megethos); Κλιςθ με αναφορά τθσ ςυνάρτθςθσ FillArray ςτον πίνακα pin. Για τθν ακρίβεια, θ αναφορά είναι ςτο πρϊτο ςτοιχείο του πίνακα

Παράδειγμα #include <stdio.h> #define SIZE 4 // Πρότυπο void FillArray (int[ ], int) ; main ( ) int array [SIZE]=-1,-1,-1,-1; // Κλιςθ Συνάρτθςθσ FillArray ( array, SIZE ); int i; for(i=0; i<size; i++) printf( %d,array*i+); // Οριςμόσ Συνάρτθςθσ void FillArray(int array[ ], int L) int i; for ( i = 0; i < L; i++) array [i] = i; ηο SIZE μπορούζε να τρηζιμοποιηθεί καηεσθείαν εδώ (μιας και είναι καθολική μεηαβληηή) Aν εκησπώζοσμε ηο πίνακα θα δούμε όηι array[0] = 0 array[1] = 1 array[2] = 2 array[3] = 3 8

Παράδειγμα #include <stdio.h> void dummy(int k, int p[]) k=7; p[5]=7; main() int i,a[10]=; i=10; A[5]=10; dummy(i,a); printf("%d\n",i); printf("%d\n",a[5]); system("pause"); 10 7

Παράδειγμα 1 Γράψτε μια ςυνάρτθςθ θ οποία αρχικοποιεί όλεσ τισ κζςεισ ενόσ πίνακα ακεραίων ARRAY με μζγεκοσ SIZE ςτθν τιμι 0 10

Παράδειγμα 1 #include <stdio.h> void initarray (int array [ ], int size) int i; for ( i = 0; i < size; i++ ) array [ i ] = 0 ; main ( ) int array[]= 1,2,3,4,5,6; initarray (array, 6); 11

Παράδειγμα 2 Γράψτε μια ςυνάρτθςθ θ οποία λαμβάνει ωσ τιμι ειςόδου ζνα πίνακα ακεραίων, και το μζγεκοσ του πίνακα, και επιςτρζφει ςαν τιμι εξόδου τον μζςο όρο των ςτοιχείων του 12

Παράδειγμα 2 #include <stdio.h> float avg(int [ ], int ); main ( ) int array[]= 1,2,3,4,5,6; printf("average: %f", avg(array, 6)); float avg(int array[ ], int L) int i; int sum=0, count=0; for (i = 0; i < L; i++) sum += array[i]; count++; return (float)sum/count; 13

Παράδειγμα 3 Γράψτε μια ςυνάρτθςθ θ οποία επιςτρζφει το άκροιςμα των αρικμϊν μεταξφ των κζςεων *2..4+ ενόσ πίνακα κετικϊν ακεραίων. Αν ο πίνακασ περιζχει λιγότερα από 5 ςτοιχεία τότε εκτυπϊνεται μινυμα λάκουσ και επιςτρζφει -1 Σημείωςη Η πρϊτθ κζςθ του πίνακα είναι 0. Π.χ. int array[]= 1,2,3,4,5,6; επιςτρζφει 12 Π.χ. int array[]= 1,2,3; επιςτρζφει -1 14

Παράδειγμα 3 int selective_sum(int array[ ], int L) int i; int sum=0; if (L<5) printf( Error ); return -1; for (i = 2; i <5; i++) sum += array[i]; return sum; 15

Παράδειγμα 4 Γράψετε μια ςυνάρτθςθ θ οποία επιςτρζφει το άκροιςμα των περιττών θζςεων ενόσ πίνακα ακεραίων. Σημείωςη Η πρϊτθ κζςθ του πίνακα είναι 0. Επομζνωσ κζλουμε το άκροιςμα των ςτοιχείων ςτισ κζςεισ 1, 3, 5, 16

Παράδειγμα 4 Τρόπος Α Τρόπος Β int oddsum(int array[ ], int L) int i; int sum=0; for (i = 0; i < L; i++) if (i%2 == 1) sum += array[i]; return sum; int oddsum(int array[ ], int L) int i; int sum=0; for (i = 1; i < L; i+=2) sum += array[i]; return sum; Π.τ. int array[]= 1,2,3,4,5,6; επιζηρέθει 12 17

Παράδειγμα 5 Γράψτε μια ςυνάρτθςθ θ οποία παίρνει τισ εξισ παραμζτρουσ o Κάποιο πίνακα ακεραίων ARRAY o Το μζγεκοσ του πίνακα SIZE Και ςτθ ςυνζχεια ηθτά από τον χριςτθ να δϊςει SIZE κετικοφσ ακεραίουσ, οι οποίοι αποκθκεφονται ςτον πίνακα ARRAY. 18

Παράδειγμα 5 void getvalues (int array [ ], int SIZE) int i; for ( i = 0 ; i < SIZE ; i++) printf ("Enter next value : ") ; scanf ("%d", &array[i] ) ; while ( array [ i ] < 1) printf ("Values must be positive..."); printf ("Enter next value : ") ; scanf ("%d", &array[ i ]) ; 19

Παράδειγμα 6 Σκελετόσ Προγράμματοσ #include <stdio.h> #define SIZE 39 #define GRADES 6 // Πρότυπα Συναρτήςεων void PrintInstructions (void) ; void InitArray (int gradecount [ ], int size) ; void FillArray (int score [ ], int size) ; double ProcessGrades (int score [ ], int size, int gradecount [ ] ) ; double FindAverage (double sum, int num) ; void PrintResults (double average, int gradecount [ ] ) ; 20

Παράδειγμα 6 Σκελετόσ Προγράμματοσ int main ( ) int i, score [SIZE], gradecount [GRADES] ; double average; PrintInstructions ( ) ; // Εκτφπωςη Οδηγιών InitArray (gradecount, GRADES) ; // Αρχικοποίηςη πίνακα gradecount ςε 0 FillArray (score, SIZE) ; // Ειςαγωγή ςτοιχείων από χρήςτη // εφρεςη μζςου όρου, ενημζρωςη gradecount βάςη πίνακα score average = ProcessGrades (score, SIZE, gradecount ) ; // Εκτφπωςη αποτελεςμάτων gradecount PrintResults (average, gradecount) ; return 0; 21

Τζλοσ διάλεξθσ