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

Σχετικά έγγραφα
Προγραμματισμός Υπολογιστών

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

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

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

Συναρτήσεις και διαδικασίες

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

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

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

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

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

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

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

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

Υπολογισμός - Εντολές Επανάληψης

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

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

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

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

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

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

Προγραμματισμός Ι. Θεματική ενότητα 8: Δημιουργία προγραμμάτων

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

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

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

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

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

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

ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ-ΓΛΩΣΣΑ C ΑΤΕΙ (ΝΑ ΕΚΤΕΛΕΣΤΟΥΝ ΤΑ ΠΑΡΑΚΑΤΩ ΜΕ ΧΡΗΣΗ ΤΟΥ LCC COMPILER)

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

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

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

Πανεπιστήμιο Πελοποννήσου. Σχολή Θετικών Επιστημών & Τεχνολογίας. Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών. Προγραμματισμός Ι Εργαστήριο

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

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

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

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

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

Η βασική συνάρτηση προγράμματος main()

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

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

Ενότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C»

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

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

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

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

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

Ηβασικήσυνάρτηση προγράμματος main()

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

είκτες και Πίνακες (2)

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

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

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

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

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

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

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

Transcript:

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

Συναρτήσεις (functions) Συνάρτηση (function) σύνολο εντολών που έχει οµαδοποιηθεί και τους έχει αποδοθεί ένα όνοµα Κλήση (calling) η εκτέλεση των εντολών της συνάρτησης που έχει κληθεί Ορίσµατα (arguments) οι παραστάσεις που επιτρέπουν στο καλούν πρόγραµµα να µεταβιβάζει πληροφορία στη συνάρτηση π.χ. printf( Hello, World ); Επιστροφή (returning) η επάνοδος στο καλούν πρόγραµµα µετά το τέλος εκτέλεσης των εντολών της συνάρτησης Επιστροφή τιµής (returning a value) H επιστροφή κάποιας τιµής στο καλούν πρόγραµµα µετά το τέλος εκτέλεσης εντολών µιας συνάρτησης π.χ. x=sqrt(y);

Συναρτήσεις (functions) Ήδη έχουµε δει αρκετές συναρτήσεις: main(): Πρέπει να υπάρχει σε κάθε πρόγραµµα Συναρτήσεις βιβλιοθήκης: printf(), scanf(), sqrt(), pow(), κ.λ.π.

Δήλωση συναρτήσεων Πρωτότυπο Συνάρτησης (function prototype) επιστρεφόµενος_τύπος όνοµα(όρισµα 1, όρισµα 2,...) επιστρεφόµενος_τύπος: ο τύπος δεδοµένων της τιµής που επιστρέφει η συνάρτηση όνοµα: το όνοµα της συνάρτησης όρισµα: τύπος δεδοµένων και όνοµα µεταβλητής που µεταβιβάζεται ως όρισµα από το καλούν πρόγραµµα στη συνάρτηση void ορίζει ότι µια συνάρτηση δεν επιστρέφει κάποια τιµή ή δεν δέχεται κάποιο όρισµα π.χ. void function1(int a); π.χ. int function2(void);

Συγγραφή συνάρτησης επιστρεφόµενος_τύπος όνοµα(όρισµα1, όρισµα2,...)... εντολές;... return(παράσταση); return(παράσταση); παράσταση: η τιµή που επιστρέφει η συνάρτηση στο καλούν πρόγραµµα return; αν η συνάρτηση δεν επιστρέφει κάποια τιµή ο επιστρεφόµενος τύπος είναι void

Celsius σε Fahrenheit #include <stdio.h> #define LowerLimit 0 // Starting value for temperature table #define UpperLimit 100 // Final value for temperature table #define StepSize 5 // Step size between table entries double CelsiusToFahrenheit(double c); //Function prototype main() int c; printf("celsius to Fahrenheit table.\n"); printf(" C F\n"); for (c = LowerLimit; c <= UpperLimit; c += StepSize) printf("%3d %3g\n", c, CelsiusToFahrenheit(c)); double CelsiusToFahrenheit(double c) return (9.0 / 5.0 * c + 32);

Πίνακας 2 k #include <stdio.h> #define LowerLimit 0 // Starting value for k #define UpperLimit 10 // Final value for k #define StepSize 5 // Step size for k int intpower(int x, int y); //Function prototype main() int k; printf( 2^k table.\n"); printf(" k 2^k\n"); for (k = LowerLimit; k <= UpperLimit; k += StepSize) printf("%3d %3d\n", k, power(2, k)); int intpower(int x, int y) int i, total; total = 1; for (i = 0; i < y; i++) total *= x; return (total);

Μεταβίβαση ορισµάτων Έστω η συνάρτηση int fun(int x) x++; return (x); Έστω int a=2, b; b=fun(a); Προσοχή: Η συνάρτηση δεν µπορεί να αλλάξει την τιµή του a. (Κλήση κατά τιµή).

Μεταβίβαση ορισµάτων Άρα, γενικά µια συνάρτηση δεν µπορεί να αλλάξει τις τιµές των µεταβλητών που χρησιµοποιούνται ως ορίσµατά της. H scanf() πώς µπορεί; Η scanf() δέχεται ως όρισµα τη διεύθυνση της µνήµης που βρίσκεται η µεταβλητή (δείκτης). Αυτό σηµαίνει το &. Για τους δείκτες θα µάθετε στο επόµενο εξάµηνο. Μια συνάρτηση όµως µπορεί να αλλάξει τις τιµές των στοιχείων ενός πίνακα. Το όνοµα του πίνακα δείχνει τη διεύθυνση της µνήµης όπου αρχίζει ο πίνακας.

Συναρτήσεις 1/2 #include <stdio.h> #include <math.h> double cube(double x) return(x*x*x); int factorial(int x) int i,f=1; for (i=1;i<=x;i++) f=f*i; return(f); int abs(int x) if (x>0) return(x); else return(-x);

Συναρτήσεις 2/2 double absreal(double x) if (x>0) return(x); else return(-x); int max(int x, int y) if (x>y) return(x); else return(y); int max4(int a, int b, int c, int d) return(max(max(a,b),max(c,d))); double root4(double x) return(sqrt(sqrt(x)));

Άσκηση Γράψτε συνάρτηση int megisto(int array[], int n) η οποία επιστρέφει το µέγιστο στοιχείο ενός πίνακα µεγέθους n. Χρησιµοποιήστε την παραπάνω συνάρτηση σε ένα πρόγραµµα που διαβάζει 5 ακέραιους από το πληκτρολόγιο, τους αποθηκεύει σε έναν πίνακα και εκτυπώνει την τιµή του µεγαλύτερου από αυτούς.

Αντιµετάθεση στοιχείων πίνακα (1/4) /* * File: reverse.c * --------------- * This program reads in an array of integers, reverses the * elements of the array, and then displays the elements in * their reversed order. */ #include <stdio.h> /* * Constants * --------- * MaxElements -- Maximum number of elements */ #define MaxElements 5 /* Private function prototypes */ void GetIntegerArray(int array[], int max); void PrintIntegerArray(int array[], int n); void ReverseIntegerArray(int array[], int n); void SwapIntegerElements(int array[], int p1, int p2); void GiveInstructions(void);

Αντιµετάθεση στοιχείων πίνακα (2/4) /* Main program */ main() int list[maxelements]; GiveInstructions(); GetIntegerArray(list, MaxElements); ReverseIntegerArray(list, MaxElements); PrintIntegerArray(list, MaxElements); /* * Function: GiveInstructions * Usage: GiveInstructions(); * -------------------------- * This function gives instructions for the array reversal program. */ void GiveInstructions(void) printf("enter numbers, one per line.\n"); printf("the program will then display those values in reverse order.\n");

Αντιµετάθεση στοιχείων πίνακα (3/4) void GetIntegerArray(int array[], int max) int n; for (n = 0; n < max; n++) printf(" Element %d?, n); scanf("%d", &array[n]); return; /* * Function: PrintIntegerArray * Usage: PrintIntegerArray(array, n); * ----------------------------------- * This function displays the first n values in array, * one per line, on the console. */ void PrintIntegerArray(int array[], int n) int i; for (i = 0; i < n; i++) printf( Array[%d] = %d\n", i, array[i]);

Αντιµετάθεση στοιχείων πίνακα (4/4) /* Function: ReverseIntegerArray * Usage: ReverseIntegerArray(array, n); * ------------------------------------- * This function reverses the elements of array, which has n size. */ void ReverseIntegerArray(int array[], int n) int i; for (i = 0; i < n / 2; i++) SwapIntegerElements(array, i, n - i - 1); /* Function: SwapIntegerElements * Usage: SwapIntegerElements(array, p1, p2); * ------------------------------------------ * This function swaps the elements in array at index positions p1 and p2. */ void SwapIntegerElements(int array[], int p1, int p2) int tmp; tmp = array[p1]; array[p1] = array[p2]; array[p2] = tmp;

Άσκηση Γράψτε συνάρτηση float myfun(float x, int n) η οποία χρησιµοποιεί την εντολή switch και επιστρέφει: Το τετράγωνο του x αν το n είναι 1 Την τετραγωνική ρίζα του x αν το n είναι 2 Εκτυπώνει µήνυµα λάθους και επιστρέφει τιµή -99999 αν το n παίρνει οποιαδήποτε άλλη τιµή.