1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κεφάλαιο Τμηματικός προγραμματισμός
Advertisements

Βασικές Αρχές Ψηφιακής Τεχνολογίας
Στατική Συμβολική Παραγώγιση Λάμδα Εκφράσεων στην C++
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Τμ.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
DATA MINING LECTURE 6 Mixture of Gaussians and the EM algorithm
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Αντικειμενοστραφής Προγραμματισμός
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΜΑΘ-3122/106 Προγραμματισμός
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δομημένος Προγραμματισμός και Δομές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
1 Ολυμπιάδα Πληροφορικής Μάθημα 3. 2 Στόχοι μαθήματος Δομή Επανάληψης Εντολή while Εντολή for.
Ολυμπιάδα Πληροφορικής
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Recursion - Αναδρομή.
Ολυμπιάδα Πληροφορικής
Ολυμπιάδα Πληροφορικής
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Is-like-a inheritance. Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private -
ΣΥΝΑΡΤΗΣΕΙΣ.
1 Ολυμπιάδα Πληροφορικής Μάθημα 5. 2 Στόχοι μαθήματος Πίνακες 2 διαστάσεων.
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
ΗΥ302 Διδακτική της Πληροφορικής Η γλώσσα προγραμματισμού LOGO Writer Ομάδα Εργασία: Αλεβίζου Βασιλική (Α.Μ.:1029) Κοφφινά Ιωάννα (Α.Μ.:1035) Τριανταφυλλίδου.
Είσοδος & Έξοδος στη C++ Ι
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ.
Templates Standard Template Library (STL) Exceptions Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμήμα Εφαρμοσμένης Πληροφορικής.
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΜΑΘ3122/106 – Γλώσσα προγραμματισμούΞενοφών Ζαμπούλης ΜΑΘ3122/106 Γλώσσα προγραμματισμού Συναρτήσεις.
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Υπερφόρτωση Τελεστών (Συνέχεια) Αντικειμενοστραφής Προγραμματισμός.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 getchar() /* char_count.c A program to count characters of input. */ main() { int c ; int count = 0; while.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Ξεχωριστή Μεταγλώττιση & Χώροι Ονομάτων Αντικειμενοστραφής Προγραμματισμός.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Εργαστηριακό σεμινάριο Χειμερινό εξάμηνο
Ενότητα 3 : Γλώσσες προγραμματισμού Δρ. Γκόγκος Χρήστος
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα Εισαγωγή Είναι εύκολη στη χρήση και στην εκμάθηση.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Χώροι ονομάτων (namespaces) 1/4
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Τεχνολογία και Προγραμματισμός Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
Η Γλώσσα Pascal Υποπρογράμματα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
UNIT 1 Τα Πρώτα Προγράμματα.
Μεταγράφημα παρουσίασης:

1 Ολυμπιάδα Πληροφορικής Μάθημα 7

2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι Κλήση συνάρτησης με αναφορά

Εισαγωγή Σε όλες τις γλώσσες προγραμματισμού υπάρχουν έτοιμες συναρτήσεις που μπορεί να χρησιμοποιήσει ο χρήστης. Στη C και C++ απαιτείται να ορίσουμε τις βιβλιοθήκες μέσα στις οποίες βρίσκονται αυτές οι συναρτήσεις (π.χ. math.h αν θέλουμε να χρησιμοποιήσουμε την sqrt) Η υλοποίηση ενός προβλήματος μπορεί να γίνει απλούστερη αν το χωρίσουμε σε μικρότερα προβλήματα. Η υλοποίηση των μικρότερων προβλημάτων μπορεί να γίνει με τη χρήση συναρτήσεων που θα δημιουργηθούν από το χρήστη. 3

Δημιουργία συναρτήσεων Για κάθε συνάρτηση που θα δημιουργούμε θα πρέπει να ορίζουμε τα εξής: Τύπος επιστρεφόμενης τιμής Όνομα συνάρτησης Παράμετροι εισόδου int athrisma(int a, int b) 4

Δομή Προγράμματος με χρήση συναρτήσεων 5 Πρότυπο συνάρτησης. Δηλώνουμε τις συναρτήσεις που θα χρησιμοποιήσουμε Κλήση συνάρτησης Ορισμός συνάρτησης

Το πρότυπο της συνάρτησης Πληροφορεί τον compiler ότι υπάρχει μια συνάρτηση που θα οριστεί αργότερα Μπορεί να παραληφθεί … Όμως μας επιτρέπει την χρήση μιας συνάρτησης πριν ακόμα αυτή οριστεί 6

Κλήση συνάρτησης Μόλις το κυρίως πρόγραμμα εντοπίσει μια συνάρτηση σταματά και περνά τον έλεγχο του προγράμματος στη συνάρτηση Η συνάρτηση μέσα στο κυρίως πρόγραμμα πρέπει να έχει το ίδιο όνομα, αριθμό και τύπο παραμέτρων 7

Ορισμός Συνάρτησης Γράφουμε τις εντολές που θέλουμε να εκτελούνται όταν καλέσουμε τη συνάρτηση Με την εντολή return καθορίζει την τιμή που θα επιστρέφει η συνάρτηση. Σε περίπτωση που η συνάρτηση δεν επιστρέφει κάτι (τύπος επιστρεφόμενης τιμής void) τότε η εντολή return παραλείπεται 8

Παράδειγμα 1 Να δημιουργήσετε το πρόγραμμα που λύνει την εξίσωση x=y!+z! Σημείωση: Παραγοντικό (!) ενός αριθμού Ν ορίζεται το γινόμενο 1*2*3*…(Ν-1)*Ν π.χ. 5!=1*2*3*4*5=120 9

Παράδειγμα 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; }

Παράδειγμα 2 Να δημιουργήσετε το πρόγραμμα που δέχεται έναν ακέραιο αριθμό και χρησιμοποιώντας τη συνάρτηση prwtos ελέγχει αν ο αριθμός είναι πρώτος ή όχι. Πρότυπο συνάρτησης prwtos bool prwtos(int n); 11

Παράδειγμα 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

Παράδειγμα 3 Να δημιουργήσετε το πρόγραμμα που δέχεται έναν ακέραιο αριθμό Ν και ένα χαρακτήρα C και χρησιμοποιεί τη συνάρτηση triangle για να τυπώσει ένα ορθογώνιο τρίγωνο που θα έχει N γραμμές και θα σχηματίζεται από το χαρακτήρα C 13

Παράδειγμα 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

Κλήση συνάρτησης με αναφορά Οι συναρτήσεις με τη χρήση της εντολής return μπορούν να επιστρέψουν μόνο μία τιμή Σε περίπτωση που θέλουμε η συνάρτηση μας να «επηρεάσει» περισσότερες από μία μεταβλητές χρησιμοποιούμε την κλήση με αναφορά Περνάμε στη συνάρτηση τη διεύθυνση της μεταβλητής και όχι τη τιμή της 15

Παράδειγμα 4 Να δημιουργήσετε το πρόγραμμα που χρησιμοποιεί τη συνάρτηση Calculate για να υπολογίσει το εμβαδόν και την περίμετρο ενός ορθογωνίου τριγώνου 16

Παράδειγμα 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

Πίνακες και Συναρτήσεις Ένας πίνακας αποτελείται από περισσότερες από μία τιμές οπότε για να περάσουμε έναν πίνακα σε μια συνάρτηση πρέπει να γίνει κλήση της συνάρτησης με αναφορά (δηλαδή να περάσουμε τη διεύθυνση του πίνακα στη μνήμη) Παράδειγμα Ορισμός στο πρότυπο void FillArray ( int array[ ], int size); Στην κλήση FillArray ( array, size); 18

Παράδειγμα 5 Να δημιουργήσετε το πρόγραμμα που διαβάζει από το αρχείο par5.in 10 ακέραιους αριθμούς και τους αποθηκεύει στον πίνακα Α και χρησιμοποιεί : τη συνάρτηση average για να υπολογίσει το μέσο όρο τη συνάρτηση maxmin για να βρει το μικρότερο και μεγαλύτερο αριθμό στον πίνακα Τα αποτελέσματα τυπώνονται στην οθόνη 19

Παράδειγμα 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