Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Σχετικά έγγραφα
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Αντικειµενοστρεφής Προγραµµατισµός

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

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

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

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

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

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Προγραµµατισµός. Αναδροµή (1/2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

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

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

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

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

Συναρτήσεις. Εισαγωγή

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

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

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

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

Διάλεξη 5η: Εντολές Επανάληψης

Βασικά της γλώσσας JAVA

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

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

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

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

Οι συναρτήσεις στη γλώσσα C

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Προγραµµατιστικές Τεχνικές

Επανάληψη για τις Τελικές εξετάσεις

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

Επεξεργασία Αρχείων Κειµένου

Εισαγωγή στην γλώσσα προγραμματισμού C

Προγραμματισμός Ι (HY120)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Β' Περιόδου Θέµα 1. (α')

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

Διάλεξη 15η: Αναδρομή, μέρος 1ο

Προσέξτε πως η παράσταση μπορεί να περιλαμβάνει όχι μόνο μία τιμή ή μια άλλη μεταβλητή αλλά μια ολόκληρη μαθηματική παράσταση, όπως η εξής:

Ενδεικτική περιγραφή μαθήματος

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Προγραμματισμός Ι (HY120)

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Περιεχόμενα. Πρόλογος...11

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

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

Χαρακτηριστικά αναδροµής

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

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

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

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

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

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Ενδεικτικές λύσεις και στατιστικά

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

Παραδείγματα. Γράψτε ένα πρόγραμμα που να τυπώνει τη μέση τιμή ενός συνόλου μη αρνητικών αριθμών

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

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

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

Εργαστήριο 3 Εντολή for while, do while

Αναδροµή (Recursion) ύο παρεξηγήσεις. Σκέψου Αναδροµικά. Τρίγωνο Sierpinski Μη αναδροµικός ορισµός;

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

Transcript:

Έβδοµη ιάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Μαθηµατικοί Τελεστές Είδη τελεστών & προτεραιότητα Έννοια της συνάρτησης Ορισµός, σύνταξη & λειτουργία 2 1

Σήµερα Συνέχεια µελέτη Συναρτήσεων Μεταβίβαση παραµέτρων Κλήση συναρτήσεων µε εσωτερικές δοµές ελέγχου που δεν επιστρέφουν τιµές που επιστρέφουν τιµές που επιστρέφουν µη αριθµητικές τιµές Ορίσµατα Τιµές επιστροφής µε απλή κλήση του ονόµατος µε πρόταση εκχώρησης Θέση Συναρτήσεων Στο κυρίως πρόγραµµα που καλείται σε ξεχωριστό αρχείο 3 Χαρακτηριστικά Συνάρτησης type name (type var1, type var2, type varn); 1. ήλωση αρχέτυπης/πρότυπου συνάρτησης 2. Ορισµός συνάρτησης type name (type var1, type varn). return; 3. Κλήση συνάρτησης name (value 1, value 2, value n ); ή Κ= name (value 1, value 2, value n ); 4 2

Με εσωτερικές δοµές ελέγχου Πρόγραµµα που εισάγει ένα αριθµό και υπολογίζει την απόλυτη τιµή του Η δοµή ελέγχου µπορεί να είναι: if switch - case 5 #include <stdio.h> #include <stdlib.h> int abs(int n); int main(int argc, char *argv[]) int n, result; printf("press an Integer Number,Please\n"); scanf("%d",&n); Εκχώρηση result=abs(n); τιµής printf("\nthe absolute value of %d is the %d\n",n,result); system("pause"); return 0; int abs(int n) if (n<0) return(-n); else return (n); ήλωση συνάρτησης Ορισµός συνάρτησης Επιστρέφει 2 διαφορετικές τιµές 6 3

Συναρτήσεις που δεν επιστρέφουν τιµές Πρέπει να συντάσσονται ως εξής: void name (type var 1, type var 2, type var n ); Η λέξη void υποδεικνύει στον µεταγλωττιστή ότι η συνάρτηση δεν επιστρέφει τιµή display(x,y) int x, y,sum; void display(x,y) Προστασία If (x==y) return; sum=x+y; εν επιτρέπει Προτάσεις εκχώρησης printf( the sum is %d, sum); k=display(5, 12); 7 void Selec_Type_Lab(int x) int choice; choice=x; switch(choice) case 1: labloadlabyrinth("labyrinth5.lab"); break; case 2: labloadlabyrinth("labyrinth6.lab"); break; case 3: labloadlabyrinth("labyrinth10.lab"); break; case 4: labloadlabyrinth("labyrinth12.lab"); break; case 5: return; break; default: printf("you are selected wrong type Labyrinth"); return; δήλωση void Selec_Type_Lab(int x); Κλήση k=a+b; Selec_Type_Lab(k); 8 4

Συναρτήσεις που επιστρέφουν τιµές Πρέπει να συντάσσονται ως εξής: type name (type var 1, type var 2, type var n ); Ο τύπος επιστροφής συνάρτησης µπορεί να είναι: char, int, long, float ή double Π.χ. char function 1 (..), int function 2 (.), long function 3 (..), float function 4 (..), double function 5 ( ) 9 έχεται ένα αριθµό τον εµφανίζει αντίστροφα, επιστρέφει το πλήθος των ψηφίων #include <stdio.h> #include <stdlib.h> int reverse(int num1); int main(int argc, char *argv[]) int number, plhthos; printf("press an Integer Number, Please\n\n\n"); scanf("%d",&number); plhthos=reverse(number); printf("\nto ΠΛΗΘΟΣ ΤΩΝ ΨΗΦΙΩΝ ΤΟΥ ΑΡΙΘΜΟΥ %d EINAI %d\n\n\n",number,plhthos); system("pause"); return 0; int reverse(int num1) int y,p,cnt=0; do y=num1%10; p=num1/10; printf("%d",y); cnt++; num1=p; while (p!=0); return cnt; 10 5

Συναρτήσεις που επιστρέφουν µη αριθµητικές τιµές #include <stdio.h> #include <stdlib.h> typedef char* string; string MonthName(int month); int n; char *str; int main(int argc, char *argv[]) printf("press an Integer Number,Please\n"); scanf("%d",&n); str=monthname(n); printf("\nthe month is %s\nn",str); system("pause"); return 0; string MonthName(int month) switch (month) case 1:return("January"); case 2:return("February"); case 3:return("March"); case 4:return("April"); case 5:return("May"); case 6:return("June"); case 7:return("July"); case 8:return("August"); case 9:return("September"); case 10:return("October"); case 11:return("November"); case 12:return("Decemmber"); default:return("illegal month"); 11 Συναρτήσεις που επιστρέφουν τιµές τύπου bool Κατηγορηµατικές συναρτήσεις #include <stdio.h> #include <stdlib.h> #include "genlib.h" bool IsEven(int n); int main(int argc, char *argv[]) int i; for(i=1;i<=10;i++) if (IsEven(i)) printf("%2d\n",i); system("pause"); return 0; bool IsEven(int n) return(n%2==0); 2 4 6 8 10 12 6

Μεταβίβαση Παραµέτρων Το Σώµα της Συνάρτησης αποτελείται την επικεφαλίδα τον τύπο της τιµής επιστροφής, το όνοµα & τα ορίσµατα. π.χ. ιnt larger_of(int a, int b) και το κυρίως σώµα περιβάλλεται σε άγκιστρα περιέχει τοπικές µεταβλητές περιέχει προτάσεις, δοµές ελέγχου, δοµές επανάληψης και την πρόταση return (;) 13 Μεταβίβαση Παραµέτρων Οι τοπικές µεταβλητές ακολουθούν τους ίδιους κανόνες µε τις µεταβλητές του κυρίως προγράµµατος. ονοµατολογία µεταβλητών τύποι µεταβλητών Μία συνάρτηση µπορεί να περιέχει πολλά return Πολλές προτάσεις return αποτελούν έναν αποτελεσµατικό τρόπο επιστροφής διαφορετικών τιµών από µια συνάρτηση. 14 7

Μεταβίβαση Παραµέτρων int larger_of (int a,int b) if(a>b) return a; else return b; Τοπικές µεταβλητές Επιστρεφόµενη τιµή int reverse(int num1) int y,p,cnt=0; do y=num1%10; p=num1/10; printf("%d",y); cnt++; num1=p; while (p!=0); return cnt; Όρισµα 15 Κλήση συναρτήσεων ύο τρόποι κλήσης µιας συνάρτησης Καλείται απλά µε το όνοµά της & την λίστα των ορισµάτων της π.χ. labconnect(server_addr, server_port); Εκχωρείται η επιστρεφόµενη τιµή της συνάρτησης σε µια µεταβλητή. π.χ. k=robotexitfound(); 16 8

Θέση συναρτήσεων ύο τρόποι τοποθέτησης µιας συνάρτησης στο κυρίως πρόγραµµα ήλωση, Ορισµός, Κλήση Ορίζεται συνήθως στο τέλος του κυρίως προγράµµατος Η δήλωση και ο ορισµός της συνάρτησης µεταφέρεται σε ξεχωριστό αρχείο πηγαίου κώδικα. Τα λεγόµενα αρχεία κεφαλίδας (header files) π.χ. Robot.h int RobotStop(void) int labloadlabyrint(char *name) 17 : είναι η αναγωγή του αρχικού προβλήµατος σε µικρότερα προβλήµατα του ίδιου τύπου. Αν µια συνάρτηση περιέχει µια κλήση του εαυτού της στο εσωτερικό του τµήµατος των εντολών της, τότε λέγεται ότι είναι: µία αναδροµική συνάρτηση (recursive function) 18 9

Ο όρος (recursion) αναφέρεται σε µία κατάσταση στην οποία µία συνάρτηση καλεί τον εαυτό της άµεσα ή έµµεσα. Έµµεση λαµβάνει χώρα όταν µία συνάρτηση καλεί µία άλλη συνάρτηση η οποία στην συνέχεια καλεί την πρώτη συνάρτηση. 19 οµή αναδροµικής συνάρτησης Κατάσταση διακοπής Αναδροµικό βήµα Πρόβληµα Να γραφεί µια αναδροµική συνάρτηση που να υπολογίζει το παραγοντικό ενός µη αρνητικού ακεραίου αριθµού 20 10

Ανάλυση του προβλήµατος n! = n(n-1)!, 0! = 1 Αν n = = 0 τότε να επιστραφεί η τιµή 1 (κατάσταση διακοπής) Αν n 1, τότε να επιστραφεί η : n * factorial (n-1) (αναδροµικό βήµα) 21 Υλοποίηση int factorial (int n) if (n = = 0) /* Κατάσταση διακοπής */ return 1; else return (n * factorial (n-1)); /* Αναδροµικό βήµα */ 22 11

Εκτέλεση της factorial(3); Αναδροµικό επίπεδο 0 factorial(3) 6 1 3 * factorial(2) 2 2 2 * factorial(1) 1 3 1 * factorial(0) 1 23 Πρόβληµα Να γραφεί µία συνάρτηση που να υπολογίζει το άθροισµα όλων των ακεραίων αριθµών από τον m µέχρι τον n. Ανάλυση εδοµένων δύο ακεραίων αριθµών m και n (m n) θέλουµε να υπολογίσουµε το άθροισµα athroisma (m,n) = m + (m + 1) + + n 24 12

Υλοποίηση int athroisma (int m, n) (κατάσταση διακοπής) if (n == m) return n; else return (n + athroisma (m, n-1)); (αναδροµικό βήµα) 25 Παράδειγµα Να γραφεί συνάρτηση, η οποία να επιστρέφει την τιµή του n i i=1 k για δεδοµένα n και k Καταρχήν θα γράψουµε µία συνάρτηση, η οποία επιστρέφει τις τιµές της δύναµης 1 k, 2 k, 3 k,. n k για δεδοµένα k και n. 26 13

Συνάρτηση δύναµης int power (int k, int n) int i, product=1; for (i=1; i <= n; ++i) product*= k; return (product); product = product *k; 27 Συνάρτηση αθροίσµατος & δύναµης int sum_power (int k, int n) int i,sum = 0; for (i=1; i <= n; ++i) sum+=power (k, i); return (sum); sum= sum +power (k, i); 28 14