Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεKathleen Tantalo Τροποποιήθηκε πριν 9 χρόνια
1
1 Ολυμπιάδα Πληροφορικής Μάθημα 7
2
2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι Κλήση συνάρτησης με αναφορά
3
Εισαγωγή Σε όλες τις γλώσσες προγραμματισμού υπάρχουν έτοιμες συναρτήσεις που μπορεί να χρησιμοποιήσει ο χρήστης. Στη C και C++ απαιτείται να ορίσουμε τις βιβλιοθήκες μέσα στις οποίες βρίσκονται αυτές οι συναρτήσεις (π.χ. math.h αν θέλουμε να χρησιμοποιήσουμε την sqrt) Η υλοποίηση ενός προβλήματος μπορεί να γίνει απλούστερη αν το χωρίσουμε σε μικρότερα προβλήματα. Η υλοποίηση των μικρότερων προβλημάτων μπορεί να γίνει με τη χρήση συναρτήσεων που θα δημιουργηθούν από το χρήστη. 3
4
Δημιουργία συναρτήσεων Για κάθε συνάρτηση που θα δημιουργούμε θα πρέπει να ορίζουμε τα εξής: Τύπος επιστρεφόμενης τιμής Όνομα συνάρτησης Παράμετροι εισόδου int athrisma(int a, int b) 4
5
Δομή Προγράμματος με χρήση συναρτήσεων 5 Πρότυπο συνάρτησης. Δηλώνουμε τις συναρτήσεις που θα χρησιμοποιήσουμε Κλήση συνάρτησης Ορισμός συνάρτησης
6
Το πρότυπο της συνάρτησης Πληροφορεί τον compiler ότι υπάρχει μια συνάρτηση που θα οριστεί αργότερα Μπορεί να παραληφθεί … Όμως μας επιτρέπει την χρήση μιας συνάρτησης πριν ακόμα αυτή οριστεί 6
7
Κλήση συνάρτησης Μόλις το κυρίως πρόγραμμα εντοπίσει μια συνάρτηση σταματά και περνά τον έλεγχο του προγράμματος στη συνάρτηση Η συνάρτηση μέσα στο κυρίως πρόγραμμα πρέπει να έχει το ίδιο όνομα, αριθμό και τύπο παραμέτρων 7
8
Ορισμός Συνάρτησης Γράφουμε τις εντολές που θέλουμε να εκτελούνται όταν καλέσουμε τη συνάρτηση Με την εντολή return καθορίζει την τιμή που θα επιστρέφει η συνάρτηση. Σε περίπτωση που η συνάρτηση δεν επιστρέφει κάτι (τύπος επιστρεφόμενης τιμής void) τότε η εντολή return παραλείπεται 8
9
Παράδειγμα 1 Να δημιουργήσετε το πρόγραμμα που λύνει την εξίσωση x=y!+z! Σημείωση: Παραγοντικό (!) ενός αριθμού Ν ορίζεται το γινόμενο 1*2*3*…(Ν-1)*Ν π.χ. 5!=1*2*3*4*5=120 9
10
Παράδειγμα 1 10 #include using namespace std; int paragontiko(int n); int main(){ int x, y, z; cin>>y>>z; x = paragontiko(y) + paragontiko(z); cout<<x<<"\n"; return 0; } int paragontiko( int n ) { int result = 1, i; for( i=1; i<=n; i++) result = result * i; return result; }
11
Παράδειγμα 2 Να δημιουργήσετε το πρόγραμμα που δέχεται έναν ακέραιο αριθμό και χρησιμοποιώντας τη συνάρτηση prwtos ελέγχει αν ο αριθμός είναι πρώτος ή όχι. Πρότυπο συνάρτησης prwtos bool prwtos(int n); 11
12
Παράδειγμα 2 #include using namespace std; bool prwtos(int n); int main() { int num; cin>>num; if ( prwtos( num ) ) cout<<"O aritmos einai prwtos"<<"\n"; else cout<<"O aritmos den einai prwtos"<<"\n"; return 0; } bool prwtos(int n){ int i; bool result; result=true; for( i=2; i <= sqrt(n); i++ ) if ( n % i == 0 ) result = false; return result; } 12
13
Παράδειγμα 3 Να δημιουργήσετε το πρόγραμμα που δέχεται έναν ακέραιο αριθμό Ν και ένα χαρακτήρα C και χρησιμοποιεί τη συνάρτηση triangle για να τυπώσει ένα ορθογώνιο τρίγωνο που θα έχει N γραμμές και θα σχηματίζεται από το χαρακτήρα C π.χ. 3 @ @ @@ @@@ 13
14
Παράδειγμα 3 #include using namespace std; void triangle(int n, char c); int main() { int n; char c; scanf( "%c", &c ); scanf( "%d", &n ); triangle( n, c ); return 0; } void triangle( int n, char c ){ int i, j; for( i=1; i<=n; i++ ){ for( j=1; j<=i; j++ ) printf( "%c", c ); printf("\n"); return; } 14
15
Κλήση συνάρτησης με αναφορά Οι συναρτήσεις με τη χρήση της εντολής return μπορούν να επιστρέψουν μόνο μία τιμή Σε περίπτωση που θέλουμε η συνάρτηση μας να «επηρεάσει» περισσότερες από μία μεταβλητές χρησιμοποιούμε την κλήση με αναφορά Περνάμε στη συνάρτηση τη διεύθυνση της μεταβλητής και όχι τη τιμή της 15
16
Παράδειγμα 4 Να δημιουργήσετε το πρόγραμμα που χρησιμοποιεί τη συνάρτηση Calculate για να υπολογίσει το εμβαδόν και την περίμετρο ενός ορθογωνίου τριγώνου 16
17
Παράδειγμα 4 #include #include //for sqrt using namespace std; void calculate(float, float, float&, float& ); int main(){ float a, b, e, p; scanf( "%f%f", &a, &b ); calculate( a, b, e, p ); printf( "E=%f\n", e ); printf( "P=%f\n", p ); return 0; } void calculate(float a, float b, float& emb, float& per ) { float c; c = sqrt( a*a+b*b ); e = a*b/2; p = a+b+c; } 17
18
Πίνακες και Συναρτήσεις Ένας πίνακας αποτελείται από περισσότερες από μία τιμές οπότε για να περάσουμε έναν πίνακα σε μια συνάρτηση πρέπει να γίνει κλήση της συνάρτησης με αναφορά (δηλαδή να περάσουμε τη διεύθυνση του πίνακα στη μνήμη) Παράδειγμα Ορισμός στο πρότυπο void FillArray ( int array[ ], int size); Στην κλήση FillArray ( array, size); 18
19
Παράδειγμα 5 Να δημιουργήσετε το πρόγραμμα που διαβάζει από το αρχείο par5.in 10 ακέραιους αριθμούς και τους αποθηκεύει στον πίνακα Α και χρησιμοποιεί : τη συνάρτηση average για να υπολογίσει το μέσο όρο τη συνάρτηση maxmin για να βρει το μικρότερο και μεγαλύτερο αριθμό στον πίνακα Τα αποτελέσματα τυπώνονται στην οθόνη 19
20
Παράδειγμα 5 #include using namespace std; float average( int a[] ); void maxmin( int a[], int&, int& ); int main(){ int i, a[10], max, min; FILE *fin; fin = fopen( "par5.in", "r" ); for( i=0; i<10; i++ ) fscanf( fin, "%d", &a[i] ); printf( "%f\n", average(a) ); maxmin( a, max, min ); printf( "Max=%d\n", max ); printf( "Min=%d\n", min ); return 0; } float average( int a[] ){ int sum = 0, j; float result; for( j=0; j<10; j++ ) sum = sum + a[j]; result = float( sum ) / 10; return result; } void maxmin( int a[], int& max, int& min ){ int j; max = a[0]; min = a[0]; for( j=1; j<10; j++ ) if( a[j] > max ) max = a[j]; else if( a[j] < min ) min = a[j]; } 20
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.