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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Το αλφαριθμητικό (string)
Advertisements

Κεφάλαιο Τμηματικός προγραμματισμός
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΥΠΟΡΟΥΤΙΝΕΣ
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Πολυδιάστατοι Πίνακες, Δομές, Ενώσεις
Δείκτες, Πίνακες και Δείκτες, Δείκτες σε Συναρτήσεις
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Τύποι πραγματικών αριθμών
Εντολες Επιλογης (Selection)
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Ολυμπιάδα Πληροφορικής
Δείκτες, Πίνακες σε Δείκτες, Δείκτες σε Συναρτήσεις
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Recursion - Αναδρομή.
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
Ολυμπιάδα Πληροφορικής
ΣΥΝΑΡΤΗΣΕΙΣ.
1 Ολυμπιάδα Πληροφορικής Μάθημα 5. 2 Στόχοι μαθήματος Πίνακες 2 διαστάσεων.
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Templates Standard Template Library (STL) Exceptions Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμήμα Εφαρμοσμένης Πληροφορικής.
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Επανάληψη.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1!
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Οι εντολές επανάληψης Σε πολλά προβλήματα απαιτείται η επανάληψη ενός συνόλου ενεργειών προκειμένου να λυθεί το πρόβλημα. Θα αναφέρουμε δύο χαρακτηριστικά.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αλφαριθμητικά (Strings)
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 getchar() /* char_count.c A program to count characters of input. */ main() { int c ; int count = 0; while.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Αναδρομικές Συναρτήσεις Σύνταξη: RECURSIVE type FUNCTION name1 (variables) RESULT (name2) IMPLICIT NONE Τμήμα δηλώσεων Εκτελέσιμες εντολές END FUNCTION.
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 4: Επαναληπτικές δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών.
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
ΔΟΜΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΕ C 1.Σχόλια 2.Οδηγίες προεπεξεργαστή 3.Ορισμοί τύπων 4.Δηλώσεις συναρτήσεων (πρωτότυπα) 5.Ορισμός της main 6.Ορισμοί συναρτήσεων.
Πολυδιάστατοι Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
Προτάσεις, εκφράσεις, τελεστές Βασικά στοιχεία ελέγχου προγράμματος
Επανάληψη.
Χαρακτήρες και συμβολοσειρές
Συναρτήσεις.
Π Ι Ν Α Κ Ε Σ (arrays) ΤΑΞΙΝΟΜΗΣΗ
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Προγραμματισμός ΗΥ Ενότητα 11: Header Files. Διδάσκων: Ηλίας Κ Σάββας,
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ενισχυτική διδασκαλία
ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ Η εντολή if if ( παράσταση) εντολή επόμενη εντολή.
for (παράσταση_1; παράσταση_2; παράσταση_3)
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Τύποι Μεταβλητών.
Τεχνολογία και Προγραμματισμός Υπολογιστών
Τεχνολογία και Προγραμματισμός Υπολογιστών
Ενότητα 9: Δείκτες και Δυναμική Διαχείριση Μνήμης.
Η Γλώσσα Pascal Υποπρογράμματα
Εισαγωγή στον Προγ/μό Υπολογιστών
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
ΑΣΚΗΣΕΙΣ C.
ΑΣΚΗΣΕΙΣ.
Μεταγράφημα παρουσίασης:

ΣΥΝΑΡΤΗΣΕΙΣ (Functions) Δομή Συνάρτησης τύπος όνομα ( λίστα τυπικών παραμέτρων ) { Δηλώσεις μεταβλητών εντολή_1 εντολή_2 : εντολή_ν } Σώμα της συνάρτησης

Δομή της Λίστας Τυπικών Παραμέτρων τύπος_1 παράμετρος_1, τύπος_2 παράμετρος_2, τύπος_3 παράμετρος_3, : τύπος_ν παράμετρος_ν Παράδειγμα λίστας τυπικών παραμέτρων int a, double x, float y, char xar

Παράδειγμα void ektyposi_epilogon(void) { printf(“ Εισάγετε 1 για τη μέθοδο 1\n”); printf(“ Εισάγετε 2 για τη μέθοδο 2\n”); printf(“ Εισάγετε 3 για τη μέθοδο 3\n”); }

Κλήση Συνάρτησης όνομα-συνάρτησης (λίστα πραγματικών παραμέτρων); Παράδειγμα κλήσης ektyposi_epilogon (); Δήλωση Συνάρτησης (Πρωτότυπο) τύπος όνομα-συνάρτησης (λίστα τυπικών παραμέτρων) ; Παράδειγμα δήλωσης void ektyposi_epilogon( void ) ; ή void ektyposi_epilogon(); /*δεν συνιστάται*/

Παράδειγμα Να γραφεί πρόγραμμα που να καλεί την συνάρτηση ektyposi_epilogon. Πρόγραμμα #include <stdio.h> void ektyposi_epilogon (void); /*Πρωτότυπο Συνάρτησης*/ int main(void) { ektyposi_epilogon(); /*κλήση*/ return 0; }

/. ορισμός της συνάρτησης /*ορισμός της συνάρτησης*/ void ektyposi_epilogon(void) { printf(“Εισάγετε 1 για τη μέθοδο 1 \n”); printf(“Εισάγετε 2 για τη μέθοδο 2 \n”); printf(“Εισάγετε 3 για τη μέθοδο 3 \n”); }

Συναρτήσεις που επιστρέφουν μία τιμή Η εντολή return return ( παράσταση ) ; Αν δεν επιστρέφει μία τιμή (τύπος=void) τότε η return μπορεί να παραλειφθεί(συνιστάται) ή return;

Παράδειγμα Να γραφεί πρόγραμμα που να καλεί την συνάρτηση ektyposi_epilogon. Στη συνέχεια να ελέγχεται η ορθότητα της απάντησης του χρήστη.

#include <stdio.h> /*Πρωτότυπα συναρτήσεων*/ Πρόγραμμα #include <stdio.h> /*Πρωτότυπα συναρτήσεων*/ void ektyposi_epilogon (void); int epilogi_xristi(void); int main(void) { /*Δηλώσεις μεταβλητών*/ int epilogi; char synexisete = ‘n’; /* n(ai) */ /*Σώμα συνάρτησης*/

while (synexisete == ‘n’) { epilogi = epilogi_xristi(); printf(“Επιθυμείτε να συνεχίσετε; (n/o):”); scanf(“%c”, &synexisete); getchar(); /* διαβάζει το CR */ } return 0; /*Σκοπός: Έλεγχος δεδομένων από το χρήστη. Δέχεται: Κανένα δεδομένο. Επιστρέφει: epilogi*/

int epilogi_xristi(void) { /. δηλώσεις μεταβλητών int epilogi_xristi(void) { /* δηλώσεις μεταβλητών*/ char sosti_epilogi = ‘ο’;/* oxi */ int epilogi; /*Σώμα συνάρτησης*/ while (sosti_epilogi == ‘ο’) ektyposi_epilogon(); scanf(“%d”, &epilogi);

if (epilogi ==1 || epilogi == 2 || epilogi ==3) sosti_epilogi = ‘n’; } /*Επιστροφή της τρέχουσας τιμής της epilogi κάτω από το όνομα της συνάρτησης*/ return epilogi;

/. ορισμός της συνάρτησης /*ορισμός της συνάρτησης*/ void ektyposi_epilogon(void) { printf(“Εισάγετε 1 για τη μέθοδο 1 \n”); printf(“Εισάγετε 2 για τη μέθοδο 2 \n”); printf(“Εισάγετε 3 για τη μέθοδο 3 \n”); }

ΣΥΝΑΡΤΗΣΕΙΣ ΜΕ ΠΑΡΑΜΕΤΡΟΥΣ ΣΥΝΑΡΤΗΣΕΙΣ ΜΕ ΠΑΡΑΜΕΤΡΟΥΣ Τυπικές Παράμετροι Παράμετροι τιμών Παράμετροι δεικτών (value) (pointers) Μεταβλητές εισόδου Μεταβλητές εξόδου

Παράδειγμα Το πρωτότυπο συνάρτησης που δέχεται τρεις ακέραιους αριθμούς και επιστρέφει το μεγαλύτερο, μπορεί να είναι το εξής: int megistos (int x, int y, int z); /*συνιστάται*/ ή int megistos( int, int, int ); /*δεν συνιστάται*/ int megistos(x, y, z); int x, int y, int z; Γράψτε μία συνάρτηση που να προσδιορίζει το πρόσημο ενός αριθμού.

/*Σκοπός : Προσδιορίζει το πρόσημο ενός αριθμού. Δέχεται : Έναν πραγματικό αριθμό. Επιστρέφει: Το πρόσημο ενός αριθμού κάτω από το όνομα της συνάρτησης*/ char prosimo (float arithmos) { if (arithmos < 0) return ‘-’; else return ‘+’; } /*Σώμα συνάρτησης*/

Παράδειγμα Γράψτε μία συνάρτηση που να βρίσκει το μεγαλύτερο από τρεις ακέραιους αριθμούς Συνάρτηση /*Σκοπός: Προσδιορίζει το μεγαλύτερο από τρεις ακέραιους αριθμούς. Δέχεται: Τρεις ακέραιους αριθμούς. Επιστρέφει: Το μεγαλύτερο ακέραιο κάτω από το όνομα της συνάρτησης*/

int megistos (int ar1, int ar2, int ar3) { τυπικές μεταβλητές int meg; /* Τοπική μεταβλητή */ if (ar1 > ar2) meg = ar1; else meg = ar2; /*meg = max ( meg1, meg2) */ if (ar3 > meg) meg = ar3; return (meg); }

pros1=megistos(num1, num2, num3); pros2=megistos(num4, num5, pros1); Παράδειγμα Γράψετε ένα πρόγραμμα που να βρίσκει το μεγαλύτερο από πέντε ακέραιους αριθμούς χρησιμοποιώντας τη συνάρτηση megistos Ανάλυση pros1=megistos(num1, num2, num3); pros2=megistos(num4, num5, pros1); Πραγματικές Παράμετροι

#include <stdio.h> /*Πρωτότυπα συναρτήσεων*/ Πρόγραμμα #include <stdio.h> /*Πρωτότυπα συναρτήσεων*/ int megistos (int ar1, int ar2, int ar3); int main(void) { int num1, num2, num3, num4, num5; int pros1, pros2; printf(“Εισάγετε 5 ακέραιους αριθμούς:”); scanf(“%d %d %d %d %d ”, &num1, &num2, &num3, &num4, &num5);

pros1 = megistos (num1, num2, num3); pros2 = megistos (num4, num5, pros1); πραγματικές παράμετροι printf(“Ο μεγαλύτερος είναι ο: %d”, pros2); return 0; } /*Σκοπός: Προσδιορίζει το μεγαλύτερο από τρεις ακέραιους αριθμούς. Δέχεται: Τρεις ακέραιους αριθμούς. Επιστρέφει: Το μεγαλύτερο ακέραιο κάτω από το όνομα της συνάρτησης*/

{ int meg; if (ar1 > ar2) meg = ar1; else meg = ar2; int megistos (int ar1, int ar2, int ar3) { int meg; if (ar1 > ar2) meg = ar1; else meg = ar2; if (ar3 > meg) meg = ar3; return (meg); }

Παράδειγμα Γράψτε ένα πρόγραμμα που να υπολογίζει και τυπώνει τον n-ιοστό αριθμό της ακολουθίας Fibonacci. Η ακολουθία Fibonacci 0 1 1 2 3 5 8 13 . . .

Πρόγραμμα #include <stdio. h> /. Πρωτότυπα συναρτήσεων Πρόγραμμα #include <stdio.h> /*Πρωτότυπα συναρτήσεων*/ int fibonacci (int n); int main(void) { int n, fib; printf(“Εισάγετε ένα θετικό ακέραιο:”); scanf(“%d”, &n); fib = fibonacci(n); printf(“Ο %d -οστός αριθμός είναι: %d”, n, fib);

/*Σκοπός: Υπολογίζει τον n-ιοστό αριθμό fibonacci. return 0; } /*Σκοπός: Υπολογίζει τον n-ιοστό αριθμό fibonacci. Δέχεται: Ένα θετικό ακέραιο αριθμό. Επιστρέφει: Τον αριθμό fibonacci.*/ int fibonacci (int n) { int protos = 0, deyteros = 1, metritis = 3, arithmos; if (n == 1) arithmos = protos; else

if (n == 2) arithmos = deyteros; while (metritis <= n) { arithmos = protos + deyteros; protos = deyteros; deyteros = arithmos; metritis++; } return (arithmos);

Παράδειγμα Γράψτε μια συνάρτηση που να υπολογίζει και τυπώνει την τιμή της σειράς: για μια δεδομένη τιμή του x. Οι όροι της σειράς αθροίζονται μέχρις ότου κάποιος από αυτούς γίνει μικρότερος από ε κατά απόλυτο τιμή, όπου ε=0.5×10-6.

float series (float x, float epsilon) { float oros = 1 float series (float x, float epsilon) { float oros = 1.0, athroisma = 1.0; int n = 1; while (abs(oros) > epsilon) oros *= -x/n; athroisma += oros; ++n; } return (athroisma);

Παράδειγμα Γράψτε ένα πρόγραμμα που να χρησιμοποιεί την συνάρτηση series, προκειμένου να υπολογίζει με γνωστή ακρίβεια ε την τιμή της σειράς: για άγνωστο πλήθος δεδομένων (x, ε). Κάθε ζεύγος τιμών για τις x και ε δίνεται από το πληκτρολόγιο.

#include <stdio.h> #include <math.h> Πρόγραμμα #include <stdio.h> #include <math.h> float series(float x, float epsilon); int main(void) { float x1, eps, timi; char apantisi = ‘n’, nea_grammi; while (apantisi == ‘n’) printf(“Εισάγετε τα x και ε:”);

printf(“\n %7.3f %e %7.3f ”, x1, eps, timi); scanf(“%f %f”, &x1, &eps); timi = series (x1, eps); printf(“\n %7.3f %e %7.3f ”, x1, eps, timi); printf(“Επιθυμείτε να συνεχίσετε; (n/o):”); scanf(“%c”, &apantisi); getchar(); /* διαβάζει το CR */ } return 0;

Να γραφεί μία συνάρτηση, η οποία να επιστρέφει την τιμή του για δεδομένο n. Συνάρτηση int athroisma_tetr (int n) { int i, athroisma= 0; for (i=1; i <= n; ++i) athroisma += i*i; return (athroisma); }

/. Η χρήση της ανωτέρω συνάρτησης σε ένα πρόγραμμα γίνεται ως εξής: /*Η χρήση της ανωτέρω συνάρτησης σε ένα πρόγραμμα γίνεται ως εξής: */ #include <stdio.h> #define N 5 int main(void) { int n; for (n=1; n <= N; ++n) printf(“\n%5d”, athroisma_tetr(n)); printf(“\n\n”); return 0; }

Παράδειγμα Να γραφεί συνάρτηση, η οποία να επιστρέφει την τιμή του για δεδομένα n και k.

Καταρχήν θα γράψουμε μία συνάρτηση, η οποία επιστρέφει τις τιμές της δύναμης mn για δεδομένα m και n. Συνάρτηση int dynami (int m, int n) { int i, ginomeno = 1; for (i=1; i <= n; ++i) ginomeno *= m; return (ginomeno); }

Συνάρτηση int athroisma_dyn (int k, int n) { int i, athroisma = 0; for (i=1; i <= n; ++i) athroisma += dynami (i, k); return (athroisma); }

Αναδρομή Αναγωγή του αρχικού προβλήματος σε μικρότερα προβλήματα του ίδιου τύπου Αν μια συνάρτηση περιέχει μια κλήση του εαυτού της στο εσωτερικό του τμήματος των εντολών της, τότε λέγεται ότι είναι μία αναδρομική συνάρτηση (recursive function) Δομή αναδρομικής συνάρτησης Κατάσταση διακοπής Αναδρομικό βήμα Πρόβλημα Να γραφεί μια αναδρομική συνάρτηση που να υπολογίζει το παραγοντικό ενός μη αρνητικού ακεραίου αριθμού.

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

Εκτέλεση της factorial(3); Αναδρομικό επίπεδο 0 factorial(3) 6 1 3 * factorial(2) 2 2 2 * factorial(1) 1 3 1 * factorial(0)

Πρόβλημα Γράψτε ένα πρόγραμμα που να διαβάζει ένα ακέραιο αριθμό και στη συνέχεια να τον τυπώνει με την αντίστροφη φορά (πρώτο ψηφίο να είναι το τελευταίο του αριθμού που διαβάστηκε, δεύτερο ψηφίο να είναι το προτελευταίο, κ.ο.κ.).

Μη αναδρομικό πρόγραμμα /*Αντιστρέφει τα ψηφία ενός ακέραιου*/ #include <stdio.h> void antistrofi (long *akeraios); int main (void) { long arithmos; printf (”\nΔώστε ένα ακέραιο αριθμό”); scanf (”%d”, &arithmos); printf(“\nΟ αριθμός που προκύπτει είναι :”); antistrofi (&arithmos); return 0; }

void antistrofi (long *akeraios) { do printf (”%d”, *akeraios % 10); *akeraios = *akeraios / 10; } while (*akeraios != 0);

Με τη χρήση αναδρομής #include <stdio.h> void antistrofi (long akeraios); int main (void) { long arithmos; printf (”Δώστε ένα ακέραιο αριθμό”); scanf (”%d”, &arithmos); printf(“\nΟ αριθμός που προκύπτει είναι :”); antistrofi (arithmos); return 0; }

void antistrofi (long akeraios) { printf (”%d”, akeraios % 10); /*εκτύπωση του ακραίου δεξιού ψηφίου*/ akeraios = akeraios / 10; if (akeraios != 0) antistrofi (akeraios); }

Εντολές μετά την αναδρομική κλήση Πρόβλημα Να γραφεί ένα πρόγραμμα που να διαβάζει μια γραμμή χαρακτήρων και να την τυπώνει με την αντίστροφη φορά. #include <stdio.h> void stoivaxeharaktires (void ); int main (void ) { printf (”\nΔώστε μία σειρά χαρακτήρων : ”); stoivaxeharaktires ( ); printf (”\n\n”); return 0; }

void stoivaxeharaktires (void ) { char xar; scanf (”%c”, &xar); if (xar != ‘\n’) stoivaxeharaktires ( ); printf (”%c”, xar); }

Αναδρομικό Προς τα πίσω Ενέργεια επίπεδο διαδικασία 1 scanf (”%c”, &xar); Διαβάζεται ο ‘Τ’ 2 scanf (”%c”, &xar); Διαβάζεται ο ‘h’ 3 scanf (”%c”, &xar); Διαβάζεται ο ‘e’ Αναδρομικό Προς τα εμπρός Ενέργεια επίπεδο διαδικασία 3 printf (”%c”, &xar); Τυπώνεται o ‘e’ 2 printf (”%c”, &xar); Τυπώνεται o ‘h’ 1 printf (”%c”, &xar); Τυπώνεται o ‘T’

athroisma (m,n) = m + (m + 1) + … + n Πρόβλημα Να γραφεί μία συνάρτηση που να υπολογίζει το άθροισμα όλων των ακεραίων αριθμών από τον m μέχρι τον n. Ανάλυση Δεδομένων δύο ακεραίων αριθμών m και n (m  n) θέλουμε να υπολογίσουμε το άθροισμα athroisma (m,n) = m + (m + 1) + … + n

int athroisma (int m, n) { if (n == m) return n; else return (n + athroisma (m, n-1)); }

Αναδρομικό επίπεδο Προς τα πίσω/εμπρός διαδικασία 0 athroisma (1,5) 1+2+3+4+5 1 5+athroisma (1,4) 1+2+3+4 2 4+athroisma (1,3) 1+2+3 3 3+athroisma (1,2) 1+2 4 2+athroisma (1,1) 1 5 athroisma (1,1)