SlideShare a Scribd company logo
1 of 34
Download to read offline
H ΓΛΩΣΣΑ C
Μάθηµα 6:
Συναρτήσεις και Αναδροµή
∆ηµήτρης Ψούνης
Περιεχόµενα Μαθήµατος
Α. Συναρτήσεις
1. Πότε Γράφουµε Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
1. Γενικό Σχήµα
2. Το Πρωτότυπο Συνάρτησης
3. Το Σώµα Συνάρτησης
1. Ορισµός
2. Καθολικές και Τοπικές Μεταβλητές
4. Κλήση Συνάρτησης
3. Πως Λειτουργούν οι Συναρτήσεις
1. Συναρτήσεις και Χώρος στη Μνήµη
2. Περίπλοκα Ορίσµατα
3. Παραπάνω του ενός Ορίσµατα
B. Αναδροµή
1. Κλήση Συνάρτησης από
Συνάρτηση
2. Αναδροµικές Συναρτήσεις
1. Υπολογισµός Παραγοντικού
2. Τρόπος Εκτέλεσης
3. Καταγραφή Εκτέλεσης Αναδροµικής
Συνάρτησης
2∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Γ. Ασκήσεις
1. Συναρτήσεις Ελέγχου Εισόδου
2. Μία Βιβλιοθήκη Μελέτης Αριθµών
3. Πρώτοι Αριθµοί
4. Αναδροµή: Η ακολουθία Fibonacci
5. Αναδροµή: ΜΚ∆ µε τον Αλγόριθµο του
Ευκλείδη
A. Συναρτήσεις
1. Πότε Γράφουµε Συναρτήσεις
3∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Η γλώσσα C είναι πιο γνωστή και ευρέως χρησιµοποιούµενη «διαδικαστική» γλωσσα.
∆ιαδικαστική σηµαίνει ότι λειτουργεί µε συναρτήσεις (διαδικασίες)!
Άρα το κύριο χαρακτηριστικό της γλώσσας είναι οι συναρτήσεις!
A. Συναρτήσεις
1. Πότε Γράφουµε Συναρτήσεις
4∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Μία συνάρτηση της C είναι το αντίστοιχο της µαθηµατικής συνάρτησης.
Θεωρήστε για παράδειγµα την µαθηµατική συνάρτηση 5 1
Το είναι το όνοµα της συνάρτησης
Το ειναι το όρισµα της συνάρτησης
Το 5 1 είναι το σώµα της συνάρτησης
Τώρα πως χρησιµοποιούµε µια συνάρτηση.
Π.χ. µε όρισµα το 2, δηλαδή 2 (Στην C θα λέµε «καλώντας την µε όρισµα »)
Η συνάρτηση υπολογίζεται: 5 ∙ 2 1
5 ∙ 2 1 11 (Στην C θα λέµε «επιστρέφει »)
Π.χ. µε όρισµα το 15, δηλαδή το 15 (Στην C λέµε «καλώντας την µε όρισµα 15»)
Η συνάρτηση υπολογίζεται στο 5 ∙ 15 1
5 ∙ 15 1 76 (Στην C θα λέµε «επιστρέφει 76»)
A. Συναρτήσεις
1. Πότε Γράφουµε Συναρτήσεις
5∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Πότε γράφουµε συναρτήσεις;
Συχνά όταν γράφουµε ένα µεγάλο πρόγραµµα, υπάρχουν κάποιες ενέργειες που
επαναλαµβάνονται.
Π.χ. Σε προγράµµατα της µετεωρολογίας, απαιτείται συχνά να υπολογιστούν οι
λύσεις διαφορικών εξισώσεων
Άρα στα προγράµµατα τους, έχουν κατασκευάσει γενικές συναρτήσεις που
λύνουν διαφορικές εξισώσεις!
Σε προγράµµατα που χρησιµοποιούνται στις υπηρεσίες π.χ. γραµµατειών, γίνονται
πολλές φορές οι ίδιες ενέργειες.
Έτσι χρησιµοποιούνται συναρτήσεις, για τις επαναλαµβανόµενες ενέργειες
εισαγωγής – π.χ. διαγραφής εγγραφών στα δεδοµένα που διατηρεί η υπηρεσία.
A. Συναρτήσεις
1. Πότε Γράφουµε Συναρτήσεις
6∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Οι γενικοί κανόνες που µας καθοδηγούν στο να δηµιουργήσουµε µια συνάρτηση στο
πρόγραµµά µας είναι:
Γράφουµε συναρτήσεις όταν πολλές φορές στο πρόγραµµα µας κάνουµε τις ίδιες
ενέργειες µε τον ίδιο κώδικα.
Π.χ. Αν το πρόγραµµα µας κάνει µία εκτύπωση πολλές φορές, τότε θα ορίσουµε µια
συνάρτηση µε όνοµα π.χ. print() και καλούµε την συνάρτηση αυτή κάθε φορά
που θέλουµε να εκτυπώσουµε τον πίνακα.
Και όταν θέλουµε να απλοποιήσουµε την µορφή του προγράµµατος µας. Είναι κακό να
έχουµε έναν κώδικα-«µακαρόνι», δηλαδή µια τεράστια main που να κάνει πάρα πολλά
πράγµατα! Προτιµούµε να διασπάµε τον κώδικα σε µέρη και να καλούµε τις αντίστοιχες
συναρτήσεις που θα υλοποιούν κάθε αυτόνοµη ενέργεια.
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
7∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Το γενικό σχήµα για την σύνταξη µιας συνάρτησης, το είδαµε στο µάθηµα 2 «Βασικά Στοιχεία
ενός προγράµµατος C»
Είδαµε ότι η συνάρτηση θα οριστεί σε 2 σηµεία:
Στην αρχή του προγράµµατος (πριν την main) θα γράψουµε το πρωτότυπο της
συνάρτησης, που αποτελεί µία απλή περιγραφή των τύπων των δεδοµένων των
ορισµάτων της και του τύπου του δεδοµένου της επιστρεφόµενης τιµής.
Αµέσως µετά τη main, ορίζουµε το σώµα της συνάρτησης, όπου περιγράφονται οι
ενέργειες που εκτελεί η συνάρτηση
Από την στιγµή που έχουµε ορίσει την συνάρτηση έχουµε το δικαίωµα να την υπολογίσουµε, µε
συγκεκριµένα ορίσµατα, οπουδήποτε µέσα στον κώδικά µας.
Η κλήση της συνάρτησης είναι να βάλουµε συγκεκριµένα ορίσµατα στην συνάρτηση και
να την καλέσουµε.
Η συνάρτηση θα κάνει τον υπολογισµό της, και θα επιστρέψει το αποτέλεσµά της!
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
1. Γενικό Σχήµα
8∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Ας επαναλάβουµε την γενική εικόνα που θα πρέπει να έχει το πρόγραµµα µας
Χρησιµοποιούµε στο παράδειγµα αυτό µια πολύ απλή συνάρτηση που δέχεται ως ορίσµατα
δύο ακεραίους και επιστρέφει το γινόµενο τους.
.....
int ginomeno(int x, int y); <- Αυτό είναι το πρωτότυπο της συνάρτησης
main()
{
....
c=ginomeno(a,b); <- Εδώ καλούµε την συνάρτηση στην main,
.... σαν µία ακόµη εντολή του προγράµµατος
}
int ginomeno(int x, int y) <-Αυτό είναι το σώµα της συνάρτησης
{
return (x*y);
}
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
2. Το Πρωτότυπο Συνάρτησης
9∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
ΠΑΝΤΑ πριν από την main καταγράφουµε τα πρωτότυπα των συναρτήσεων που θα ορίσουµε.
Το πρωτότυπο είναι µια περιγραφή µόνο των ορισµάτων της συνάρτησης και της
επιστρεφόµενης τιµής (και όχι του υπολογισµού). Το συντακτικό είναι:
Όπως στην συνάρτηση µάς:
όπου περιγράφουµε ότι πρόκειται να ορίσουµε µια συνάρτηση µε όνοµα ginomeno: που
παίρνει δύο ακέραιες µεταβλητές ως ορίσµατα και επιστρέφει µια ακέραια µεταβλητή.
Τύπος_Επιστρεφόµενης_Τιµής ΟΝΟΜΑ_ΣΥΝΑΡΤΗΣΗΣ(Ορισµα1,Ορισµα2,...);
int ginomeno (int x, int y);
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
2. Το Πρωτότυπο Συνάρτησης
10∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Λίγο πιο αναλυτικά για το πρωτότυπο της συνάρτησης
έχουµε:
Μπορεί να είναι οποιοσδήποτε τύπος δεδοµένων από όσους µάθαµε στο Μάθηµα 3
(π.χ. int, float, double κ.λπ.)
Μπορούµε να δώσουµε οποιοδήποτε όνοµα στην συνάρτηση µας, που σέβεται την
ονοµατολογία που ορίσαµε στο Μάθηµα 3 (π.χ. το όνοµα δεν µπορεί να ξεκινά µε
αριθµό)
Τα ορίσµατα της συνάρτησης χωρίζονται µε κόµµατα. Κάθε όρισµα έχει την µορφή
Όπου Τ∆ είναι ο τύπος δεδοµένων του ορίσµατος.
Τύπος_Επιστρεφόµενης_Τιµής ΟΝΟΜΑ_ΣΥΝΑΡΤΗΣΗΣ(Ορισµα1,Ορισµα2,...);
Τύπος_Επιστρεφόµενης_Τιµής
ΟΝΟΜΑ_ΣΥΝΑΡΤΗΣΗΣ
(Ορισµα1,Ορισµα2,...)
Τ∆ όνοµα_µεταβλητής
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
2. Το Πρωτότυπο Συνάρτησης
11∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Μερικά Παραδείγµατα:
Είναι µια συνάρτηση µε όνοµα square που παίρνει σαν όρισµα έναν ακέραιο και θα
επιστρέφει έναν ακέραιο αριθµό
Είναι µια συνάρτηση µε όνοµα mesos_oros που παίρνει ως ορίσµατα δύο δεκαδικούς
διπλής ακρίβειας και θα επιστρέφει έναν δεκαδικό διπλής ακρίβειας.
Είναι µια συνάρτηση που παίρνει σαν όρισµα έναν ακέραιο και δεν επιστρέφει τίποτα. Η
λέξη στην επιστροφή δηλώνει ότι η συνάρτηση δεν επιστρέφει τίποτα
Είναι µια συνάρτηση που δεν παίρνει ορίσµατα και δεν επιστρέφει τίποτα! Θα εκτελεί ότι
ενέργειες οριστούν στο σώµα της!
int square(int x);
double mesos_oros(double x,double y);
void typose_minima(int elegxos);
void
void ektyposi_plaisiou();
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
2. Το Πρωτότυπο Συνάρτησης
12∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Συµβουλές:
• Χρησιµοποιούµε κατατοπιστικά ονόµατα στις συναρτήσεις, ώστε να θυµόµαστε τι ενέργειες
εκτελεί!
• Επίσης χρησιµοποιούµε όσο το δυνατόν πιο κατατοπιστικά ονόµατα και στα ονόµατα των
ορισµάτων που δέχεται η συνάρτηση!
• Όταν δηλώνουµε το πρωτότυπο της συνάρτησης δεν ξεχνάµε να βάλουµε ερωτηµατικό στο
τέλος της δήλωσης!
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
3. Το Σώµα Συνάρτησης (Ορισµός)
13∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Το σώµα της συνάρτησης αποτελεί την περιγραφή των εντολών που εκτελεί η συνάρτηση.
Πάντα θα είναι ΜΕΤΑ την main και οι εντολές της θα βρίσκονται ανάµεσα σε άγκιστρα
Η 1η γραµµή είναι ακριβώς ίδια µε το πρωτότυπο (αλλά δεν έχει ερωτηµατικό)
Έπειτα µέσα στα υποχρεωτικά άγκιστρα:
Γράφουµε τις τοπικές µεταβλητές που θα χρησιµοποιήσει η συνάρτηση.
Και ακολουθούν οι εντολές που θα εκτελέσει η συνάρτηση
Οι εντολές θα τρέξουν σειριακά (όπως στην main) εωσότου:
Είτε φτάσουµε στο τελευταίο άγκιστρο,
Είτε φτάσουµε σε µια εντολή return!
Τύπος_Επιστρεφόµενης_Τιµής ΟΝΟΜΑ_ΣΥΝΑΡΤΗΣΗΣ(Ορισµα1,Ορισµα2,...)
{
//Εδώ θα δηλώσουµε τις τοπικές µεταβλητές της συνάρτησης
//Εδώ θα γράψουµε τις εντολές της συνάρτησης
}
Σηµείωση:
• Εναλλακτικά η C δίνει τη δυνατότητα να γράψουµε απευθείας το σώµα της συνάρτησης πριν την
main και µόνον εκεί. ∆εν θα ακολουθήσουµε αυτήν τη προσέγγιση σε αυτές τις σηµειώσεις.
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
3. Το Σώµα Συνάρτησης (Τοπικές και Καθολικές Μεταβλητές)
14∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Τοπικές Μεταβλητές: Είναι µεταβλητές που δηλώνονται στην αρχή µιας συνάρτησης και τις
οποίες τις «βλέπει» (έχει πρόσβαση) η συνάρτηση και ΜΟΝΟΝ αυτή (όχι δηλαδή οι άλλες
συναρτήσεις ή η main()
Προσοχή! Κάθε συνάρτηση έχει τις δικές της µεταβλητές, έτσι π.χ. µπορούν δύο
συναρτήσεις να έχουν µεταβλητές µε το ίδιο όνοµα. Κάθε συνάρτηση θα «βλέπει» µόνο τις
δικές της µεταβλητές.
Καθολικές Μεταβλητές: Είναι µεταβλητές που δηλώνονται πριν από την main και τις οποίες
βλέπουν ΟΛΕΣ οι συναρτήσεις (και η main).
∆είτε το γενικό σχήµα ενός προγράµµατος που χρησιµοποιεί τέτοιες µεταβλητές και έπειτα
µεταγλωττίστε και εκτελέστε το πρόγραµµα της επόµενης διαφάνειας.
Συµβουλή:
• Θεωρείται κακή προγραµµατιστική τακτική να χρησιµοποιούµε καθολικές µεταβλητές. Θα
πρέπει να γνωρίζουµε πως δουλεύουν, αλλά να µην τις χρησιµοποιούµε στα προγράµµατά µας!
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
3. Το Σώµα Συνάρτησης (Τοπικές και Καθολικές Μεταβλητές)
15∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
/* variables.c: Deixnei ton diaxorismo
katholikwn-topikwn metablitwn*/
#include <stdio.h>
void f1();
void f2();
int x; /* Katholiki metavliti: Tin vlepoun
oloi */
main()
{
int a=0; /*Topiki metabliti stin main */
x=5;
printf("nmain: a=%d,x=%d",a,x);
f1();
printf("nmain: a=%d,x=%d",a,x);
f2();
printf("nmain: a=%d,x=%d",a,x);
}
void f1()
{
int a=2, x=0; /*Topikes metavlites
tis f1 */
/* Exoyme diplo onoma stin x.
Epikratei to topiko onoma */
printf("nf1: a=%d,x=%d",a,x);
}
void f2()
{
int a=8; /*Topikes metavlites tis
f2 */
x=7; /* Anaferetai stin katholiki
x */
printf("nf2: a=%d,x=%d",a,x);
}
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
4. Κλήση Συνάρτησης
16∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Αφού γράψουµε την συνάρτησή µας, έχουµε δικαίωµα να την καλέσουµε οπουδήποτε µέσα στο
πρόγραµµα µας. Για να την καλέσουµε:
Γράφουµε το όνοµα της και διοχετεύουµε κατάλληλα ορίσµατα που θα είναι:
Είτε απευθείας συγκεκριµένες αριθµητικές τιµές.
Είτε ονόµατα µεταβλητών που χρησιµοποιούµε ήδη στο πρόγραµµα µας. Προσοχή!
Απλά γράφουµε τα ονόµατα των µεταβλητών ως ορίσµατα και όχι τον τύπο
δεδοµένων
Είτε γενικότερα υπολογιζόµενες παραστάσεις (όπως τις ορίσαµε στο µάθηµα 2 που
µελετήσαµε τον τελεστή εκχώρησης)
∆είτε το παράδειγµα της επόµενης διαφάνειας και εντοπίστε στις κλήσεις των συναρτήσεων, να
«διοχετεύονται» ορίσµατα είτε αριθµητικά, είτε µε µεταβλητές που χρησιµοποιεί η «καλούσα
συνάρτηση»
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
4. Κλήση Συνάρτησης
17∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
/* orismata.c: Anadeikniei pos pairname orismata se sinartiseis */
#include <stdio.h>
int square(int x);
main()
{
int a=5;
int b=10;
int teta,tetb,sum;
teta=square(a);
tetb=square(b);
sum=teta+tetb;
printf("%d^2 + %d^2 = %d",a,b,sum);
}
int square(int x)
{
int y;
y=x*x;
return y;
}
A. Συναρτήσεις
2. Πως Γράφουµε Συναρτήσεις
4. Κλήση Συνάρτησης
18∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Όπως φαίνεται και από το παράδειγµα, η επιστρεφόµενη τιµή της συνάρτησης γίνεται µε την
εντολή return:
H δεσµευµένη λέξη return ακολουθείται από την τιµή, η οποία µπορεί να είναι οποιαδήποτε
υπολογιζόµενη παράσταση (σταθερά, µεταβλητή, υπολογισµός, ή ακόµη και συνάρτηση)
Σηµαντικό: Η εκτέλεση της εντολής return σταµατά επιτόπου την εκτέλεση της
συνάρτησης, υπολογίζει την τιµή και επιστρέφει στην καλούσα συνάρτηση.
Ισχύει επίσης ότι σε µια συνάρτηση που επιστρέφει void, µπορούµε να σταµατήσουµε την
εκτέλεση της µε την εντολή:
return τιµή;
return;
A. Συναρτήσεις
3. Πως Λειτουργούν οι Συναρτήσεις
1. Συναρτήσεις και Χώρος στη Μνήµη
19∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Είναι σηµαντικό να καταλάβουµε ότι κάθε συνάρτηση έχει το
δικό της «χώρο» στη µνήµη, στον οποίο αποθηκεύει τις
µεταβλητές της.
Για παράδειγµα έστω το τµήµα κώδικα που φαίνεται στα δεξιά
Όταν ξεκινάει να εκτελείται ο κώδικας υπάρχει ο χώρος
αποθήκευσης µόνο για την main!
Έπειτα όταν εκτελείται η εντολή αρχικοποίησης a=5, η
κατάσταση της µνήµης είναι:
int f(int x);
main()
{
int a=5,b;
b=f(a);
}
int f(int x)
{
int y;
y=x*x;
return y;
}
a b
…
Χώρος της main
a b
…
Χώρος της main
5
A. Συναρτήσεις
3. Πως Λειτουργούν οι Συναρτήσεις
1. Συναρτήσεις και Χώρος στη Μνήµη
20∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Έπειτα καλείται η f µε όρισµα a.
Προσοχή! Αυτό σηµαίνει, ότι δηµιουργείται χώρος αποθήκευσης
για την f.
Και στον χώρο αποθήκευσης της f, η µεταβλητή x θα πάρει την
τιµή του ορίσµατος που βάλαµε, άρα η x θα πάρει την τιµή 5.
Είναι σηµαντικό να καταλάβουµε ότι από εδώ και πέρα η x δεν
έχει καµία σχέση µε την a. Έχει τον δικό της χώρο µνήµης και την
διαχειρίζεται η f.
Πλέον στο σώµα της f, καλείται η εντολή y=x*x άρα η y παίρνει την 25
int f(int x);
main()
{
int a=5,b;
b=f(a);
}
int f(int x)
{
int y;
y=x*x;
return y;
}
a b
…
Χώρος της main
5
Χώρος της f
x y
5
a b
…
Χώρος της main
5
Χώρος της f
x y
5 25
A. Συναρτήσεις
3. Πως Λειτουργούν οι Συναρτήσεις
1. Συναρτήσεις και Χώρος στη Μνήµη
21∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Καλείται η εντολή return y. Αυτό σηµαίνει ότι επιστρέφουµε στην main!
Πλέον η επιστρεφόµενη τιµή (25) αποθηκεύεται στην µεταβλητή
b.
Είναι σηµαντικό ότι µετά την επιστροφή τιµής ο χώρος της f,
απελευθερώνεται για να µπορεί να χρησιµοποιηθεί από άλλες
συναρτήσεις:
int f(int x);
main()
{
int a=5,b;
b=f(a);
}
int f(int x)
{
int y;
y=x*x;
return y;
}
a b
…
Χώρος της main
5 25
• Το παράδειγµα αυτό αναδεικνύει δύο σηµαντικά θέµατα!
• Κάθε κλήση συνάρτησης δηµιουργεί τον δικό της χώρο στην µνήµη!
• Ο µόνος δίαυλος επικοινωνίας µε την καλούσα συνάρτηση είναι τα ορίσµατα (στην αρχή)
και η επιστρεφόµενη τιµή (στο τέλος)
A. Συναρτήσεις
3. Πως Λειτουργούν οι Συναρτήσεις
2. Περίπλοκα Ορίσµατα
22∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Στην πραγµατικότητα η διοχέτευση ορίσµατος:
είναι απλά, να αρχικοποιηθεί η τιµή του ορίσµατος µε την τιµή που δίνουµε από την
καλούσα συνάρτηση!
Έτσι έχουµε το δικαίωµα να θέσουµε ως ορίσµατα οποιαδήποτε παράσταση της C
Τότε απλά θα έχουµε ότι θα υπολογιστεί η τιµή του ορίσµατος, και έπειτα η µεταβλητή του
ορίσµατος θα πάρει την κατάλληλη τιµή.
Για παράδειγµα στο τµήµα κώδικα:
Υπολογίζεται πρώτα το όρισµα (είναι η τιµή 10)
Έπειτα καλείται η f µε όρισµα την τιµή 10
Ενώ αν η f είναι η συνάρτηση που είδαµε προηγουµένως
τότε έχουµε δικαίωµα να γράψουµε ακόµη και το εξής:
Όπου υπολογίζεται πρώτα το εσωτερικό f(a) (υπολογίζεται σε 25) και µετά υπολογίζεται το
f(25) άρα αποθηκεύεται στο b η τιµή 625.
int a=5;
int b;
b=f(2*a);
int a=5;
int b;
b=f(f(a));
A. Συναρτήσεις
3. Πως Λειτουργούν οι Συναρτήσεις
3. Παραπάνω του ενός ορίσµατα
23∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Αντίστοιχοι είναι οι κανόνες όταν έχουµε µια συνάρτηση που δέχεται πολλά ορίσµατα. Πχ. Αν
έχουµε ορίσει την συνάρτηση:
Και την καλέσουµε ως εξής:
Τότε η τιµή που θέσαµε πρώτη αποθηκεύεται στην µεταβλητή του 1ου ορίσµατος (δηλαδή
το x παίρνει την τιµή 1)
Η τιµή που θέσαµε δεύτερη αποθηκεύεται στην µεταβλητή του 2ου ορίσµατος (δηλαδή το y
παίρνει την τιµή 5)
Η τιµή που θέσαµε τρίτη αποθηκεύεται στην µεταβλητή του 3ου ορίσµατος (δηλαδή το z
παίρνει την τιµή 10)
void func(int x, int y, int z)
func(1,5,10)
Β. Αναδροµή
1. Κλήση Συνάρτησης µέσα σε Συνάρτηση
24∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Όπως είδαµε αφού ορίσουµε µια συνάρτηση µπορούµε να την καλέσουµε οπουδήποτε στον
κώδικα.
Άρα µπορούµε να καλέσουµε µια συνάρτηση που έχουµε ορίσει µέσα σε µια άλλη συνάρτηση!
Π.χ. ας ορίσουµε µια συνάρτηση που υπολογίζει την f(x)=2x2
Μπορούµε να ορίσουµε την συνάρτηση g(x)=2x2+x+1 ως εξής:
int f(int x)
{
int y;
y=2*x*x;
return y;
}
int g(int x)
{
int y;
y=f(x)+x+1;
return y;
}
Β. Αναδροµή
2. Αναδροµικές Συναρτήσεις
25∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Ο όρος αναδροµή αναφέρεται σε µια συνάρτηση που καλεί τον εαυτό της!
Αυτό είναι απόλυτα νόµιµο και στην C, αφού απλά καλούµε µια συνάρτηση µέσα σε µια
συνάρτηση!
Άρα µια συνάρτηση που στο σώµα της καλεί τον εαυτό της, θα ονοµάζεται αναδροµική
συνάρτηση.
Η δηµιουργία µιας αναδροµικής συνάρτησης είναι πολύ χρήσιµη, ιδίως όταν κατασκευάζουµε
πράγµατα που ορίζονται αναδροµικά!
Ας δούµε ένα παράδειγµα:
Το παραγοντικό του φυσικού αριθµού n ορίζεται ως:
! ∙ 1 ∙ 2 ∙ ⋯ 2 ∙ 1
π.χ. έχουµε 1! 1, 	2! 2 ∙ 1, 	3! 3 ∙ 2 ∙ 1 6, 	4! 4 ∙ 3 ∙ 2 ∙ 1 24 κ.ο.κ.
Το παραγοντικό ορίζεται ωστόσο και αναδροµικά ως εξής:
! ∙ 1 ! αν 1
! 1, αν 1
Β. Αναδροµή
2. Αναδροµικές Συναρτήσεις
1. Υπολογισµός Παραγοντικού
26∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
/* factorial.c: Ypologizei to paragontiko
enos fysikoy */
#include <stdio.h>
int factorial(int n);
main()
{
int x;
int res;
printf("Dwste ton fysiko: ");
scanf("%d",&x);
res=factorial(x);
printf("%d!=%d",x,res);
}
int factorial(int n)
{
int y;
if (n==1)
return 1;
else
{
y=factorial(n-1);
return n*y;
}
}
Β. Αναδροµή
2. Αναδροµικές Συναρτήσεις
1. Υπολογισµός Παραγοντικού
27∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Στον υπολογισµό µίας αναδροµικής συνάρτησης, κάθε αναδροµική κλήση έχει και το δικό της
χώρο στη µνήµη.
Ας δούµε πως τρέχει η κλήση factorial(3):
Καλεί την factorial(2):
Καλεί την factorial(1):
int fact (int n)
{
int y;
if (n==1) return 1;
else{
y=factorial(n-1);
return n*y;
}
}
n
…
Χώρος
της fact(3)
3
y
n
Χώρος
της fact(3)
3
y
Χώρος
της fact(2)
n y
2
n
Χώρος
της fact(3)
3
y
Χώρος
της fact(2)
n y
2
Χώρος
της fact(1)
n y
1
Β. Αναδροµή
2. Αναδροµικές Συναρτήσεις
1. Υπολογισµός Παραγοντικού
28∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
H factorial(1) επιστρέφει 1:
Η factorial(2) αποθηκεύει το 1 στο y
έπειτα επιστρέφει 2*1.
Η factorial(2) αποθηκεύει το 1 στο y
έπειτα επιστρέφει 3*2
int fact (int n)
{
int y;
if (n==1) return 1;
else{
y=factorial(n-1);
return n*y;
}
}
n
Χώρος
της fact(3)
3
y
Χώρος
της fact(2)
n y
2
Χώρος
της fact(1)
n y
1 1
1
n
Χώρος
της fact(3)
3
y
Χώρος
της fact(2)
n y
2
2
1
n
Χώρος
της fact(3)
3
y
6
2
main
Β. Αναδροµή
2. Αναδροµικές Συναρτήσεις
1. Υπολογισµός Παραγοντικού
29∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Για να απεικονίσουµε τις αναδροµικές κλήσεις που γίνονται προτιµάται µία παράσταση όπου
κάθε αναδροµική κλήση στοιχίζεται λίγο δεξιότερα.
Με τον τρόπο αυτό µπορούµε να παρακολουθήσουµε αρκετά ικανοποιητικά την εκτέλεση ενός
αναδροµικού κώδικα:
int fact (int n)
{
int y;
if (n==1) return 1;
else{
y=factorial(n-1);
return n*y;
}
}
ΚΛΗΣΗ fact(3)
(3==1) ΟΧΙ
y=fact(2)
ΚΛΗΣΗ fact(2)
(2==1) ΟΧΙ
y=fact(1)
ΚΛΗΣΗ fact(1)
(1==1) ΝΑΙ
return 1
y=1
return 2*1=2
y=2
return 3*2=6
Γ. Ασκήσεις
Εφαρµογή 1 (Συναρτήσεις Ελέγχου Εισόδου)
30∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Ορίστε την συνάρτηση:
int get_integer(int start, int finish): Θα λαµβάνει ως είσοδο ένα εύρος
τιµών ακεραίων [start…finish] και θα διαβάζει έναν ακέραιο σε αυτό το εύρος. Θα
επιστρέφει τον αριθµό που διαβάστηκε.
Ορίστε τη συνάρτηση main να διαβάζει δύο ακέραιους a,b στο διάστηµα 1..10 και έναν
ακέραιο n στο διάστηµα 2..5 και θα υπολογίζει την ποσότητα n*(a-b) και θα χρησιµοποιεί τη
συνάρτηση που ορίσαµε.
Γ. Ασκήσεις
Εφαρµογή 2 (Μια Βιβλιοθήκη Μελέτης Αριθµών)
31∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Ορίζουµε τις συναρτήσεις:
int is_even(int n): Θα επιστρέφει 0 ή 1 ανάλογα µε το αν ο αριθµός είναι άρτιος
int is_odd(int n): Θα επιστρέφει 0 ή 1 ανάλογα µε το αν ο αριθµός είναι περιττός
int is_square(int n): Θα επιστρέφει 0 ή 1 ανάλογα µε το αν ο αριθµός είναι
τετράγωνο ενός φυσικού
int is_cube(int n): Θα επιστρέφει 0 ή 1 ανάλογα µε το αν ο αριθµός είναι κύβος
ενός φυσικού
Ορίζουµε την main που θα ζητάει από το χρήστη είτε να εισάγει έναν αριθµό και θα εξετάζει αν
ο αριθµός έχει κάποιες από αυτές τις ιδιότητες.
Παράδειγµα Εκτέλεσης:
Eisagete ton arithmo: 8
Einai Artios
Einai Kivos Arithmou
Eisagete ton arithmo: 9
Einai Perittos
Einai Tetragono Arithmou
Γ. Ασκήσεις
Εφαρµογή 3 (Πρώτοι Αριθµοί)
32∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Ένας φυσικός αριθµός λέµε ότι είναι πρώτος αν διαιρείται (ακριβώς) µόνο µε τον εαυτό του και
τη µονάδα. Το 1 θεωρείται ότι δεν είναι πρώτος.
Κατασκευάστε ένα πρόγραµµα το οποίο:
Θα ορίζει µία συνάρτηση µε όνοµα isprime() η οποία θα δέχεται ως όρισµα έναν ακέραιο
αριθµό, θα εξετάζει αν είναι πρώτος και θα επιστρέφει 1 αν είναι πρώτος και 0 αν δεν είναι.
Η main θα διαβάζει δύο φυσικούς (ελέγχοντας στην είσοδο να είναι >0) που θα ορίζουν την
αρχή και το τέλος ενός κλειστού διαστήµατος (π.χ. a=5, b=8) και θα τυπώνει τους
φυσικούς σε αυτό το διάστηµα που είναι πρώτοι.
Παράδειγµα εκτέλεσης του ζητούµενου προγράµµατος:
Eisagete tin arxi tou diastimatos: 5
Eisagete to peras tou diastimatos: 15
To 5 einai prwtos
To 7 einai prwtos
To 11 einai prwtos
To 13 einai prwtos
Γ. Ασκήσεις
Εφαρµογή 4 (Αναδροµή: Η ακολουθία FIbonacci)
33∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
Η ακολουθία fibonacci ορίζεται ως:
Fn=Fn-1+Fn-2, για n>2
F2=1
F1=1
Για παράδειγµα έχουµε F1=1,F2=1,F3=2,F4=3,F5=5,F6=8 κ.ο.κ.
Ορίστε την συνάρτηση int fibonacci(int n) που δέχεται ως όρισµα έναν φυσικό και επιστρέφει το
n-οστό fibonacci.
Έπειτα κατασκευάστε µία main που διαβάζει από τον χρήστη έναν ακέραιο και υπολογίζει και
επιστρέφει τον αριθµό fibonacci του αριθµού που εισήγαγε ο χρήστης.
Γ. Ασκήσεις
Εφαρµογή 5 (Αναδροµή: ΜΚ∆ µε τον αλγόριθµο του Ευκλείδη)
34∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή
O αλγόριθµος του Ευκλείδη για την εύρεση του Μέγιστου Κοινού ∆ιαιρέτη δύο (φυσικών)
αριθµών:
Ξεκινά µε ένα ζεύγος φυσικών και σχηµατίζει ένα νέο ζευγάρι µε τον µικρότερο αριθµό και
την διαφορά του µικρότερου από τον µεγαλύτερο αριθµό.
Η διαδικασία επαναλαµβάνεται εωσότου οι αριθµοί γίνουν ίσοι. Ο αριθµός αυτός είναι ο
ΜΚ∆ των αρχικών αριθµών.
Μαθηµατικά ο ΜΚ∆(a,b) όπου a,b είναι φυσικοί:
Είναι ίσο µε a, αν a=b
Είναι ίσο µε ΜΚ∆(a,b-a), αν a<b
Είναι ίσο µε ΜΚ∆(a-b,b), αλλιώς
Κατασκευάστε ένα πρόγραµµα σε γλώσσα C που θα υλοποιεί µε µία αναδροµική συνάρτηση
τον υπολογισµό του ΜΚ∆ και µία συνάρτηση main που θα ζητάει από το χρήστη να εισάγει τους
δύο φυσικούς, θα κάνει κατάλληλη κλήση της συνάρτησης και θα τυπώνει τον ΜΚ∆ των
αριθµών.

More Related Content

What's hot

ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Dimitris Psounis
 

What's hot (20)

Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
 
Η Γλώσσα C - Μάθημα 2 (Εκτύπωση)
Η Γλώσσα C - Μάθημα 2 (Εκτύπωση)Η Γλώσσα C - Μάθημα 2 (Εκτύπωση)
Η Γλώσσα C - Μάθημα 2 (Εκτύπωση)
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1 ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7 ΠΛΗ10 ΜΑΘΗΜΑ 2.7
ΠΛΗ10 ΜΑΘΗΜΑ 2.7
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
 

Similar to ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)

ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό ΤεστΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
Nikos Michailidis
 
ΓΕΝΙΚΑ ΒΗΜΑΤΑ ΣΤΙΣ ΔΟΜΕ ΕΠΑΝΑΛΗΨΗΣ.pdf
ΓΕΝΙΚΑ ΒΗΜΑΤΑ ΣΤΙΣ ΔΟΜΕ ΕΠΑΝΑΛΗΨΗΣ.pdfΓΕΝΙΚΑ ΒΗΜΑΤΑ ΣΤΙΣ ΔΟΜΕ ΕΠΑΝΑΛΗΨΗΣ.pdf
ΓΕΝΙΚΑ ΒΗΜΑΤΑ ΣΤΙΣ ΔΟΜΕ ΕΠΑΝΑΛΗΨΗΣ.pdf
petroskorobos
 
ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 1o.pdf
ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 1o.pdfΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 1o.pdf
ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 1o.pdf
Anthimos Misailidis
 
Διαγώνισμα 2o Υποπρογράμματα
Διαγώνισμα 2o ΥποπρογράμματαΔιαγώνισμα 2o Υποπρογράμματα
Διαγώνισμα 2o Υποπρογράμματα
educast
 
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΚεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Ιωάννου Γιαννάκης
 

Similar to ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ) (20)

ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό ΤεστΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
 
Απλά Στατιστικά Εργαλεία Η/Υ
Απλά Στατιστικά Εργαλεία Η/ΥΑπλά Στατιστικά Εργαλεία Η/Υ
Απλά Στατιστικά Εργαλεία Η/Υ
 
Πρόχειρες Σημειώσεις Μαθηματικών Προσανατολισμού Γ' λυκείου (με κάποια λυμένα...
Πρόχειρες Σημειώσεις Μαθηματικών Προσανατολισμού Γ' λυκείου (με κάποια λυμένα...Πρόχειρες Σημειώσεις Μαθηματικών Προσανατολισμού Γ' λυκείου (με κάποια λυμένα...
Πρόχειρες Σημειώσεις Μαθηματικών Προσανατολισμού Γ' λυκείου (με κάποια λυμένα...
 
Κρασανάκης Εμμανουήλ
Κρασανάκης ΕμμανουήλΚρασανάκης Εμμανουήλ
Κρασανάκης Εμμανουήλ
 
Algorithms
AlgorithmsAlgorithms
Algorithms
 
Αλγόριθμοι
ΑλγόριθμοιΑλγόριθμοι
Αλγόριθμοι
 
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 7_4
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 7_4Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 7_4
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 7_4
 
ΓΕΝΙΚΑ ΒΗΜΑΤΑ ΣΤΙΣ ΔΟΜΕ ΕΠΑΝΑΛΗΨΗΣ.pdf
ΓΕΝΙΚΑ ΒΗΜΑΤΑ ΣΤΙΣ ΔΟΜΕ ΕΠΑΝΑΛΗΨΗΣ.pdfΓΕΝΙΚΑ ΒΗΜΑΤΑ ΣΤΙΣ ΔΟΜΕ ΕΠΑΝΑΛΗΨΗΣ.pdf
ΓΕΝΙΚΑ ΒΗΜΑΤΑ ΣΤΙΣ ΔΟΜΕ ΕΠΑΝΑΛΗΨΗΣ.pdf
 
ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 1o.pdf
ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 1o.pdfΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 1o.pdf
ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 1o.pdf
 
Διαγώνισμα 2o Υποπρογράμματα
Διαγώνισμα 2o ΥποπρογράμματαΔιαγώνισμα 2o Υποπρογράμματα
Διαγώνισμα 2o Υποπρογράμματα
 
ΑΕΠΠ ΚΕΦ 2
ΑΕΠΠ ΚΕΦ 2ΑΕΠΠ ΚΕΦ 2
ΑΕΠΠ ΚΕΦ 2
 
Kef2o θεωρία Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Kef2o θεωρία Ανάπτυξη Εφαρμογών σε Προγραμματιστικό ΠεριβάλλονKef2o θεωρία Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Kef2o θεωρία Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
 
Β' ΛΥΚΕΙΟΥ - ΕΠΙΣΤΗΜΗ Η/Υ
Β' ΛΥΚΕΙΟΥ - ΕΠΙΣΤΗΜΗ Η/ΥΒ' ΛΥΚΕΙΟΥ - ΕΠΙΣΤΗΜΗ Η/Υ
Β' ΛΥΚΕΙΟΥ - ΕΠΙΣΤΗΜΗ Η/Υ
 
Python Κεφ. 1.4 Δομή Επανάληψης
Python Κεφ. 1.4 Δομή ΕπανάληψηςPython Κεφ. 1.4 Δομή Επανάληψης
Python Κεφ. 1.4 Δομή Επανάληψης
 
ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1
 
Βασικές έννοιες προγραμματισμού
Βασικές έννοιες προγραμματισμούΒασικές έννοιες προγραμματισμού
Βασικές έννοιες προγραμματισμού
 
Python Κεφ. 1.5 συναρτήσεις
Python Κεφ. 1.5 συναρτήσειςPython Κεφ. 1.5 συναρτήσεις
Python Κεφ. 1.5 συναρτήσεις
 
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΚεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
 
ΠΛΗ31 ΜΑΘΗΜΑ 4.3
ΠΛΗ31 ΜΑΘΗΜΑ 4.3ΠΛΗ31 ΜΑΘΗΜΑ 4.3
ΠΛΗ31 ΜΑΘΗΜΑ 4.3
 
Θέματα Πανελλαδικών Εξετάσεων 2015: Μαθηματικά Ι - Ημερήσιων ΕΠΑΛ 21-5-2015
Θέματα Πανελλαδικών Εξετάσεων 2015: Μαθηματικά Ι - Ημερήσιων ΕΠΑΛ 21-5-2015Θέματα Πανελλαδικών Εξετάσεων 2015: Μαθηματικά Ι - Ημερήσιων ΕΠΑΛ 21-5-2015
Θέματα Πανελλαδικών Εξετάσεων 2015: Μαθηματικά Ι - Ημερήσιων ΕΠΑΛ 21-5-2015
 

More from Dimitris Psounis

ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
Dimitris Psounis
 

More from Dimitris Psounis (20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
 

Recently uploaded

Recently uploaded (20)

YlhGermanB-2324.pdf. School year: 2023-2024
YlhGermanB-2324.pdf. School year: 2023-2024YlhGermanB-2324.pdf. School year: 2023-2024
YlhGermanB-2324.pdf. School year: 2023-2024
 
ΣΕΝΙΑ ΗΛΙΑΝΑ, Σορζ Σαλαντόν, ΜΙΑ ΑΓΡΙΑ ΧΑΡΑ (ΒΙΒΛΙΟΠΑΡΟΥΣΙΑΣΗ).pptx
ΣΕΝΙΑ ΗΛΙΑΝΑ, Σορζ Σαλαντόν, ΜΙΑ ΑΓΡΙΑ ΧΑΡΑ (ΒΙΒΛΙΟΠΑΡΟΥΣΙΑΣΗ).pptxΣΕΝΙΑ ΗΛΙΑΝΑ, Σορζ Σαλαντόν, ΜΙΑ ΑΓΡΙΑ ΧΑΡΑ (ΒΙΒΛΙΟΠΑΡΟΥΣΙΑΣΗ).pptx
ΣΕΝΙΑ ΗΛΙΑΝΑ, Σορζ Σαλαντόν, ΜΙΑ ΑΓΡΙΑ ΧΑΡΑ (ΒΙΒΛΙΟΠΑΡΟΥΣΙΑΣΗ).pptx
 
Εξυπερύ, Ο ΜΙΚΡΟΣ ΠΡΙΓΚΙΠΑΣ_ Σεραφειμίδου Αφροδίτη.pptx
Εξυπερύ, Ο ΜΙΚΡΟΣ ΠΡΙΓΚΙΠΑΣ_ Σεραφειμίδου Αφροδίτη.pptxΕξυπερύ, Ο ΜΙΚΡΟΣ ΠΡΙΓΚΙΠΑΣ_ Σεραφειμίδου Αφροδίτη.pptx
Εξυπερύ, Ο ΜΙΚΡΟΣ ΠΡΙΓΚΙΠΑΣ_ Σεραφειμίδου Αφροδίτη.pptx
 
Ελένη Καλία & Κατερίνα Πολύζου , ΤΟ ΧΟΡΟΣΤΑΣΙ ΤΗΣ ΓΗΣ.pptx
Ελένη Καλία & Κατερίνα Πολύζου , ΤΟ ΧΟΡΟΣΤΑΣΙ ΤΗΣ ΓΗΣ.pptxΕλένη Καλία & Κατερίνα Πολύζου , ΤΟ ΧΟΡΟΣΤΑΣΙ ΤΗΣ ΓΗΣ.pptx
Ελένη Καλία & Κατερίνα Πολύζου , ΤΟ ΧΟΡΟΣΤΑΣΙ ΤΗΣ ΓΗΣ.pptx
 
Θεοχαροπούλου Ανδρομάχη, Αλ. Παπαδιαμάντη, Η ΦΟΝΙΣΣΑ.pptx
Θεοχαροπούλου Ανδρομάχη, Αλ. Παπαδιαμάντη, Η ΦΟΝΙΣΣΑ.pptxΘεοχαροπούλου Ανδρομάχη, Αλ. Παπαδιαμάντη, Η ΦΟΝΙΣΣΑ.pptx
Θεοχαροπούλου Ανδρομάχη, Αλ. Παπαδιαμάντη, Η ΦΟΝΙΣΣΑ.pptx
 
Επανάληψη Γλώσσας Α' Λυκείου για τις τελικές εξετάσεις Ιουνίου.pptx
Επανάληψη Γλώσσας Α' Λυκείου για τις τελικές εξετάσεις Ιουνίου.pptxΕπανάληψη Γλώσσας Α' Λυκείου για τις τελικές εξετάσεις Ιουνίου.pptx
Επανάληψη Γλώσσας Α' Λυκείου για τις τελικές εξετάσεις Ιουνίου.pptx
 
Νιωθω ένα συναίσθημα/ΔΟΜΗ ΔΙΔΑΚΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ 2023.docxΤΣΕ.docx
Νιωθω  ένα συναίσθημα/ΔΟΜΗ ΔΙΔΑΚΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ 2023.docxΤΣΕ.docxΝιωθω  ένα συναίσθημα/ΔΟΜΗ ΔΙΔΑΚΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ 2023.docxΤΣΕ.docx
Νιωθω ένα συναίσθημα/ΔΟΜΗ ΔΙΔΑΚΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ 2023.docxΤΣΕ.docx
 
Μενέλαος Λουντέμης, Ένα παιδί μετράει τ' άστρα _Εργασία της μαθήτριας Κωνσταν...
Μενέλαος Λουντέμης, Ένα παιδί μετράει τ' άστρα _Εργασία της μαθήτριας Κωνσταν...Μενέλαος Λουντέμης, Ένα παιδί μετράει τ' άστρα _Εργασία της μαθήτριας Κωνσταν...
Μενέλαος Λουντέμης, Ένα παιδί μετράει τ' άστρα _Εργασία της μαθήτριας Κωνσταν...
 
Μπουσμαλή Ξ.,Το καπλάνι της βιτρίνας.pptx
Μπουσμαλή Ξ.,Το καπλάνι της βιτρίνας.pptxΜπουσμαλή Ξ.,Το καπλάνι της βιτρίνας.pptx
Μπουσμαλή Ξ.,Το καπλάνι της βιτρίνας.pptx
 
YlhPhysicsC-2324.pdf. School year: 2023-2024
YlhPhysicsC-2324.pdf. School year: 2023-2024YlhPhysicsC-2324.pdf. School year: 2023-2024
YlhPhysicsC-2324.pdf. School year: 2023-2024
 
Συμμετοχή στην Ευρωπαική ημέρα Θάλασσας- 7ο Γυμνάσιο Καβάλας
Συμμετοχή στην Ευρωπαική ημέρα Θάλασσας- 7ο Γυμνάσιο ΚαβάλαςΣυμμετοχή στην Ευρωπαική ημέρα Θάλασσας- 7ο Γυμνάσιο Καβάλας
Συμμετοχή στην Ευρωπαική ημέρα Θάλασσας- 7ο Γυμνάσιο Καβάλας
 
Τσιάμη Παναγιώτα, Κλαιρ Πούλεϋ, ΤΟ ΠΡΑΣΙΝΟ ΣΗΜΕΙΩΜΑΤΑΡΙΟ.pptx
Τσιάμη Παναγιώτα, Κλαιρ Πούλεϋ, ΤΟ ΠΡΑΣΙΝΟ ΣΗΜΕΙΩΜΑΤΑΡΙΟ.pptxΤσιάμη Παναγιώτα, Κλαιρ Πούλεϋ, ΤΟ ΠΡΑΣΙΝΟ ΣΗΜΕΙΩΜΑΤΑΡΙΟ.pptx
Τσιάμη Παναγιώτα, Κλαιρ Πούλεϋ, ΤΟ ΠΡΑΣΙΝΟ ΣΗΜΕΙΩΜΑΤΑΡΙΟ.pptx
 
Καρλ Λιούις, Η Αλίκη στη χώρα των θαυμάτων_ ΓΡΗΓΟΡΙΑΔΟΥ ΑΝΘΗ_Παρουσίαση.pptx
Καρλ Λιούις, Η Αλίκη στη χώρα των θαυμάτων_ ΓΡΗΓΟΡΙΑΔΟΥ ΑΝΘΗ_Παρουσίαση.pptxΚαρλ Λιούις, Η Αλίκη στη χώρα των θαυμάτων_ ΓΡΗΓΟΡΙΑΔΟΥ ΑΝΘΗ_Παρουσίαση.pptx
Καρλ Λιούις, Η Αλίκη στη χώρα των θαυμάτων_ ΓΡΗΓΟΡΙΑΔΟΥ ΑΝΘΗ_Παρουσίαση.pptx
 
Μάνος Κοντολέων, ΤΑ ΦΑΝΤΑΣΜΑΤΑ ΤΗΣ ΣΟΦΙΤΑΣ_ Μπουσμαλή Ευπραξία.pptx
Μάνος Κοντολέων, ΤΑ ΦΑΝΤΑΣΜΑΤΑ ΤΗΣ ΣΟΦΙΤΑΣ_ Μπουσμαλή Ευπραξία.pptxΜάνος Κοντολέων, ΤΑ ΦΑΝΤΑΣΜΑΤΑ ΤΗΣ ΣΟΦΙΤΑΣ_ Μπουσμαλή Ευπραξία.pptx
Μάνος Κοντολέων, ΤΑ ΦΑΝΤΑΣΜΑΤΑ ΤΗΣ ΣΟΦΙΤΑΣ_ Μπουσμαλή Ευπραξία.pptx
 
Μωραΐτου Ευαγγελία_Λίβινγκστον, Ο Γλάρος Ιωνάθαν.pptx
Μωραΐτου Ευαγγελία_Λίβινγκστον, Ο Γλάρος Ιωνάθαν.pptxΜωραΐτου Ευαγγελία_Λίβινγκστον, Ο Γλάρος Ιωνάθαν.pptx
Μωραΐτου Ευαγγελία_Λίβινγκστον, Ο Γλάρος Ιωνάθαν.pptx
 
Καρόλου Ντίκενς, ΟΛΙΒΕΡ ΤΟΥΙΣΤ_ Παρουσίαση της Γερμανίδου Δήμητρας.pptx
Καρόλου Ντίκενς, ΟΛΙΒΕΡ ΤΟΥΙΣΤ_ Παρουσίαση της Γερμανίδου Δήμητρας.pptxΚαρόλου Ντίκενς, ΟΛΙΒΕΡ ΤΟΥΙΣΤ_ Παρουσίαση της Γερμανίδου Δήμητρας.pptx
Καρόλου Ντίκενς, ΟΛΙΒΕΡ ΤΟΥΙΣΤ_ Παρουσίαση της Γερμανίδου Δήμητρας.pptx
 
Μαστοροτάσιος Γιώργος, Το Χοροστάσι της Γης,.pptx
Μαστοροτάσιος Γιώργος, Το Χοροστάσι της Γης,.pptxΜαστοροτάσιος Γιώργος, Το Χοροστάσι της Γης,.pptx
Μαστοροτάσιος Γιώργος, Το Χοροστάσι της Γης,.pptx
 
GAMER (για το μάθημα της Γλώσσας Ε' τάξης.pptx
GAMER (για το μάθημα της Γλώσσας  Ε' τάξης.pptxGAMER (για το μάθημα της Γλώσσας  Ε' τάξης.pptx
GAMER (για το μάθημα της Γλώσσας Ε' τάξης.pptx
 
ΣΤΕΡΓΙΟΥΔΗ ΧΡΙΣΤΙΝΑ-ΒΑΣΙΛΙΚΗ, Ο Άγιος Παΐσιος_Βιβλ-ση.pptx
ΣΤΕΡΓΙΟΥΔΗ ΧΡΙΣΤΙΝΑ-ΒΑΣΙΛΙΚΗ, Ο Άγιος Παΐσιος_Βιβλ-ση.pptxΣΤΕΡΓΙΟΥΔΗ ΧΡΙΣΤΙΝΑ-ΒΑΣΙΛΙΚΗ, Ο Άγιος Παΐσιος_Βιβλ-ση.pptx
ΣΤΕΡΓΙΟΥΔΗ ΧΡΙΣΤΙΝΑ-ΒΑΣΙΛΙΚΗ, Ο Άγιος Παΐσιος_Βιβλ-ση.pptx
 
Η ΣΥΜΜΕΤΟΧΗ ΤΟΥ ΣΥΛΛΟΓΟΥ ΔΙΔΑΣΚΟΝΤΩΝ ΣΤΗΝ ΔΙΑΔΙΚΑΣΙΑ ΛΗΨΗΣ ΑΠΟΦΑΣΗΣ ΣΤΗ ΣΧΟΛ...
Η ΣΥΜΜΕΤΟΧΗ ΤΟΥ ΣΥΛΛΟΓΟΥ ΔΙΔΑΣΚΟΝΤΩΝ ΣΤΗΝ ΔΙΑΔΙΚΑΣΙΑ  ΛΗΨΗΣ ΑΠΟΦΑΣΗΣ ΣΤΗ ΣΧΟΛ...Η ΣΥΜΜΕΤΟΧΗ ΤΟΥ ΣΥΛΛΟΓΟΥ ΔΙΔΑΣΚΟΝΤΩΝ ΣΤΗΝ ΔΙΑΔΙΚΑΣΙΑ  ΛΗΨΗΣ ΑΠΟΦΑΣΗΣ ΣΤΗ ΣΧΟΛ...
Η ΣΥΜΜΕΤΟΧΗ ΤΟΥ ΣΥΛΛΟΓΟΥ ΔΙΔΑΣΚΟΝΤΩΝ ΣΤΗΝ ΔΙΑΔΙΚΑΣΙΑ ΛΗΨΗΣ ΑΠΟΦΑΣΗΣ ΣΤΗ ΣΧΟΛ...
 

ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)

  • 1. H ΓΛΩΣΣΑ C Μάθηµα 6: Συναρτήσεις και Αναδροµή ∆ηµήτρης Ψούνης
  • 2. Περιεχόµενα Μαθήµατος Α. Συναρτήσεις 1. Πότε Γράφουµε Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 1. Γενικό Σχήµα 2. Το Πρωτότυπο Συνάρτησης 3. Το Σώµα Συνάρτησης 1. Ορισµός 2. Καθολικές και Τοπικές Μεταβλητές 4. Κλήση Συνάρτησης 3. Πως Λειτουργούν οι Συναρτήσεις 1. Συναρτήσεις και Χώρος στη Μνήµη 2. Περίπλοκα Ορίσµατα 3. Παραπάνω του ενός Ορίσµατα B. Αναδροµή 1. Κλήση Συνάρτησης από Συνάρτηση 2. Αναδροµικές Συναρτήσεις 1. Υπολογισµός Παραγοντικού 2. Τρόπος Εκτέλεσης 3. Καταγραφή Εκτέλεσης Αναδροµικής Συνάρτησης 2∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Γ. Ασκήσεις 1. Συναρτήσεις Ελέγχου Εισόδου 2. Μία Βιβλιοθήκη Μελέτης Αριθµών 3. Πρώτοι Αριθµοί 4. Αναδροµή: Η ακολουθία Fibonacci 5. Αναδροµή: ΜΚ∆ µε τον Αλγόριθµο του Ευκλείδη
  • 3. A. Συναρτήσεις 1. Πότε Γράφουµε Συναρτήσεις 3∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Η γλώσσα C είναι πιο γνωστή και ευρέως χρησιµοποιούµενη «διαδικαστική» γλωσσα. ∆ιαδικαστική σηµαίνει ότι λειτουργεί µε συναρτήσεις (διαδικασίες)! Άρα το κύριο χαρακτηριστικό της γλώσσας είναι οι συναρτήσεις!
  • 4. A. Συναρτήσεις 1. Πότε Γράφουµε Συναρτήσεις 4∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Μία συνάρτηση της C είναι το αντίστοιχο της µαθηµατικής συνάρτησης. Θεωρήστε για παράδειγµα την µαθηµατική συνάρτηση 5 1 Το είναι το όνοµα της συνάρτησης Το ειναι το όρισµα της συνάρτησης Το 5 1 είναι το σώµα της συνάρτησης Τώρα πως χρησιµοποιούµε µια συνάρτηση. Π.χ. µε όρισµα το 2, δηλαδή 2 (Στην C θα λέµε «καλώντας την µε όρισµα ») Η συνάρτηση υπολογίζεται: 5 ∙ 2 1 5 ∙ 2 1 11 (Στην C θα λέµε «επιστρέφει ») Π.χ. µε όρισµα το 15, δηλαδή το 15 (Στην C λέµε «καλώντας την µε όρισµα 15») Η συνάρτηση υπολογίζεται στο 5 ∙ 15 1 5 ∙ 15 1 76 (Στην C θα λέµε «επιστρέφει 76»)
  • 5. A. Συναρτήσεις 1. Πότε Γράφουµε Συναρτήσεις 5∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Πότε γράφουµε συναρτήσεις; Συχνά όταν γράφουµε ένα µεγάλο πρόγραµµα, υπάρχουν κάποιες ενέργειες που επαναλαµβάνονται. Π.χ. Σε προγράµµατα της µετεωρολογίας, απαιτείται συχνά να υπολογιστούν οι λύσεις διαφορικών εξισώσεων Άρα στα προγράµµατα τους, έχουν κατασκευάσει γενικές συναρτήσεις που λύνουν διαφορικές εξισώσεις! Σε προγράµµατα που χρησιµοποιούνται στις υπηρεσίες π.χ. γραµµατειών, γίνονται πολλές φορές οι ίδιες ενέργειες. Έτσι χρησιµοποιούνται συναρτήσεις, για τις επαναλαµβανόµενες ενέργειες εισαγωγής – π.χ. διαγραφής εγγραφών στα δεδοµένα που διατηρεί η υπηρεσία.
  • 6. A. Συναρτήσεις 1. Πότε Γράφουµε Συναρτήσεις 6∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Οι γενικοί κανόνες που µας καθοδηγούν στο να δηµιουργήσουµε µια συνάρτηση στο πρόγραµµά µας είναι: Γράφουµε συναρτήσεις όταν πολλές φορές στο πρόγραµµα µας κάνουµε τις ίδιες ενέργειες µε τον ίδιο κώδικα. Π.χ. Αν το πρόγραµµα µας κάνει µία εκτύπωση πολλές φορές, τότε θα ορίσουµε µια συνάρτηση µε όνοµα π.χ. print() και καλούµε την συνάρτηση αυτή κάθε φορά που θέλουµε να εκτυπώσουµε τον πίνακα. Και όταν θέλουµε να απλοποιήσουµε την µορφή του προγράµµατος µας. Είναι κακό να έχουµε έναν κώδικα-«µακαρόνι», δηλαδή µια τεράστια main που να κάνει πάρα πολλά πράγµατα! Προτιµούµε να διασπάµε τον κώδικα σε µέρη και να καλούµε τις αντίστοιχες συναρτήσεις που θα υλοποιούν κάθε αυτόνοµη ενέργεια.
  • 7. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 7∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Το γενικό σχήµα για την σύνταξη µιας συνάρτησης, το είδαµε στο µάθηµα 2 «Βασικά Στοιχεία ενός προγράµµατος C» Είδαµε ότι η συνάρτηση θα οριστεί σε 2 σηµεία: Στην αρχή του προγράµµατος (πριν την main) θα γράψουµε το πρωτότυπο της συνάρτησης, που αποτελεί µία απλή περιγραφή των τύπων των δεδοµένων των ορισµάτων της και του τύπου του δεδοµένου της επιστρεφόµενης τιµής. Αµέσως µετά τη main, ορίζουµε το σώµα της συνάρτησης, όπου περιγράφονται οι ενέργειες που εκτελεί η συνάρτηση Από την στιγµή που έχουµε ορίσει την συνάρτηση έχουµε το δικαίωµα να την υπολογίσουµε, µε συγκεκριµένα ορίσµατα, οπουδήποτε µέσα στον κώδικά µας. Η κλήση της συνάρτησης είναι να βάλουµε συγκεκριµένα ορίσµατα στην συνάρτηση και να την καλέσουµε. Η συνάρτηση θα κάνει τον υπολογισµό της, και θα επιστρέψει το αποτέλεσµά της!
  • 8. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 1. Γενικό Σχήµα 8∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Ας επαναλάβουµε την γενική εικόνα που θα πρέπει να έχει το πρόγραµµα µας Χρησιµοποιούµε στο παράδειγµα αυτό µια πολύ απλή συνάρτηση που δέχεται ως ορίσµατα δύο ακεραίους και επιστρέφει το γινόµενο τους. ..... int ginomeno(int x, int y); <- Αυτό είναι το πρωτότυπο της συνάρτησης main() { .... c=ginomeno(a,b); <- Εδώ καλούµε την συνάρτηση στην main, .... σαν µία ακόµη εντολή του προγράµµατος } int ginomeno(int x, int y) <-Αυτό είναι το σώµα της συνάρτησης { return (x*y); }
  • 9. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 2. Το Πρωτότυπο Συνάρτησης 9∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή ΠΑΝΤΑ πριν από την main καταγράφουµε τα πρωτότυπα των συναρτήσεων που θα ορίσουµε. Το πρωτότυπο είναι µια περιγραφή µόνο των ορισµάτων της συνάρτησης και της επιστρεφόµενης τιµής (και όχι του υπολογισµού). Το συντακτικό είναι: Όπως στην συνάρτηση µάς: όπου περιγράφουµε ότι πρόκειται να ορίσουµε µια συνάρτηση µε όνοµα ginomeno: που παίρνει δύο ακέραιες µεταβλητές ως ορίσµατα και επιστρέφει µια ακέραια µεταβλητή. Τύπος_Επιστρεφόµενης_Τιµής ΟΝΟΜΑ_ΣΥΝΑΡΤΗΣΗΣ(Ορισµα1,Ορισµα2,...); int ginomeno (int x, int y);
  • 10. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 2. Το Πρωτότυπο Συνάρτησης 10∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Λίγο πιο αναλυτικά για το πρωτότυπο της συνάρτησης έχουµε: Μπορεί να είναι οποιοσδήποτε τύπος δεδοµένων από όσους µάθαµε στο Μάθηµα 3 (π.χ. int, float, double κ.λπ.) Μπορούµε να δώσουµε οποιοδήποτε όνοµα στην συνάρτηση µας, που σέβεται την ονοµατολογία που ορίσαµε στο Μάθηµα 3 (π.χ. το όνοµα δεν µπορεί να ξεκινά µε αριθµό) Τα ορίσµατα της συνάρτησης χωρίζονται µε κόµµατα. Κάθε όρισµα έχει την µορφή Όπου Τ∆ είναι ο τύπος δεδοµένων του ορίσµατος. Τύπος_Επιστρεφόµενης_Τιµής ΟΝΟΜΑ_ΣΥΝΑΡΤΗΣΗΣ(Ορισµα1,Ορισµα2,...); Τύπος_Επιστρεφόµενης_Τιµής ΟΝΟΜΑ_ΣΥΝΑΡΤΗΣΗΣ (Ορισµα1,Ορισµα2,...) Τ∆ όνοµα_µεταβλητής
  • 11. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 2. Το Πρωτότυπο Συνάρτησης 11∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Μερικά Παραδείγµατα: Είναι µια συνάρτηση µε όνοµα square που παίρνει σαν όρισµα έναν ακέραιο και θα επιστρέφει έναν ακέραιο αριθµό Είναι µια συνάρτηση µε όνοµα mesos_oros που παίρνει ως ορίσµατα δύο δεκαδικούς διπλής ακρίβειας και θα επιστρέφει έναν δεκαδικό διπλής ακρίβειας. Είναι µια συνάρτηση που παίρνει σαν όρισµα έναν ακέραιο και δεν επιστρέφει τίποτα. Η λέξη στην επιστροφή δηλώνει ότι η συνάρτηση δεν επιστρέφει τίποτα Είναι µια συνάρτηση που δεν παίρνει ορίσµατα και δεν επιστρέφει τίποτα! Θα εκτελεί ότι ενέργειες οριστούν στο σώµα της! int square(int x); double mesos_oros(double x,double y); void typose_minima(int elegxos); void void ektyposi_plaisiou();
  • 12. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 2. Το Πρωτότυπο Συνάρτησης 12∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Συµβουλές: • Χρησιµοποιούµε κατατοπιστικά ονόµατα στις συναρτήσεις, ώστε να θυµόµαστε τι ενέργειες εκτελεί! • Επίσης χρησιµοποιούµε όσο το δυνατόν πιο κατατοπιστικά ονόµατα και στα ονόµατα των ορισµάτων που δέχεται η συνάρτηση! • Όταν δηλώνουµε το πρωτότυπο της συνάρτησης δεν ξεχνάµε να βάλουµε ερωτηµατικό στο τέλος της δήλωσης!
  • 13. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 3. Το Σώµα Συνάρτησης (Ορισµός) 13∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Το σώµα της συνάρτησης αποτελεί την περιγραφή των εντολών που εκτελεί η συνάρτηση. Πάντα θα είναι ΜΕΤΑ την main και οι εντολές της θα βρίσκονται ανάµεσα σε άγκιστρα Η 1η γραµµή είναι ακριβώς ίδια µε το πρωτότυπο (αλλά δεν έχει ερωτηµατικό) Έπειτα µέσα στα υποχρεωτικά άγκιστρα: Γράφουµε τις τοπικές µεταβλητές που θα χρησιµοποιήσει η συνάρτηση. Και ακολουθούν οι εντολές που θα εκτελέσει η συνάρτηση Οι εντολές θα τρέξουν σειριακά (όπως στην main) εωσότου: Είτε φτάσουµε στο τελευταίο άγκιστρο, Είτε φτάσουµε σε µια εντολή return! Τύπος_Επιστρεφόµενης_Τιµής ΟΝΟΜΑ_ΣΥΝΑΡΤΗΣΗΣ(Ορισµα1,Ορισµα2,...) { //Εδώ θα δηλώσουµε τις τοπικές µεταβλητές της συνάρτησης //Εδώ θα γράψουµε τις εντολές της συνάρτησης } Σηµείωση: • Εναλλακτικά η C δίνει τη δυνατότητα να γράψουµε απευθείας το σώµα της συνάρτησης πριν την main και µόνον εκεί. ∆εν θα ακολουθήσουµε αυτήν τη προσέγγιση σε αυτές τις σηµειώσεις.
  • 14. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 3. Το Σώµα Συνάρτησης (Τοπικές και Καθολικές Μεταβλητές) 14∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Τοπικές Μεταβλητές: Είναι µεταβλητές που δηλώνονται στην αρχή µιας συνάρτησης και τις οποίες τις «βλέπει» (έχει πρόσβαση) η συνάρτηση και ΜΟΝΟΝ αυτή (όχι δηλαδή οι άλλες συναρτήσεις ή η main() Προσοχή! Κάθε συνάρτηση έχει τις δικές της µεταβλητές, έτσι π.χ. µπορούν δύο συναρτήσεις να έχουν µεταβλητές µε το ίδιο όνοµα. Κάθε συνάρτηση θα «βλέπει» µόνο τις δικές της µεταβλητές. Καθολικές Μεταβλητές: Είναι µεταβλητές που δηλώνονται πριν από την main και τις οποίες βλέπουν ΟΛΕΣ οι συναρτήσεις (και η main). ∆είτε το γενικό σχήµα ενός προγράµµατος που χρησιµοποιεί τέτοιες µεταβλητές και έπειτα µεταγλωττίστε και εκτελέστε το πρόγραµµα της επόµενης διαφάνειας. Συµβουλή: • Θεωρείται κακή προγραµµατιστική τακτική να χρησιµοποιούµε καθολικές µεταβλητές. Θα πρέπει να γνωρίζουµε πως δουλεύουν, αλλά να µην τις χρησιµοποιούµε στα προγράµµατά µας!
  • 15. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 3. Το Σώµα Συνάρτησης (Τοπικές και Καθολικές Μεταβλητές) 15∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή /* variables.c: Deixnei ton diaxorismo katholikwn-topikwn metablitwn*/ #include <stdio.h> void f1(); void f2(); int x; /* Katholiki metavliti: Tin vlepoun oloi */ main() { int a=0; /*Topiki metabliti stin main */ x=5; printf("nmain: a=%d,x=%d",a,x); f1(); printf("nmain: a=%d,x=%d",a,x); f2(); printf("nmain: a=%d,x=%d",a,x); } void f1() { int a=2, x=0; /*Topikes metavlites tis f1 */ /* Exoyme diplo onoma stin x. Epikratei to topiko onoma */ printf("nf1: a=%d,x=%d",a,x); } void f2() { int a=8; /*Topikes metavlites tis f2 */ x=7; /* Anaferetai stin katholiki x */ printf("nf2: a=%d,x=%d",a,x); }
  • 16. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 4. Κλήση Συνάρτησης 16∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Αφού γράψουµε την συνάρτησή µας, έχουµε δικαίωµα να την καλέσουµε οπουδήποτε µέσα στο πρόγραµµα µας. Για να την καλέσουµε: Γράφουµε το όνοµα της και διοχετεύουµε κατάλληλα ορίσµατα που θα είναι: Είτε απευθείας συγκεκριµένες αριθµητικές τιµές. Είτε ονόµατα µεταβλητών που χρησιµοποιούµε ήδη στο πρόγραµµα µας. Προσοχή! Απλά γράφουµε τα ονόµατα των µεταβλητών ως ορίσµατα και όχι τον τύπο δεδοµένων Είτε γενικότερα υπολογιζόµενες παραστάσεις (όπως τις ορίσαµε στο µάθηµα 2 που µελετήσαµε τον τελεστή εκχώρησης) ∆είτε το παράδειγµα της επόµενης διαφάνειας και εντοπίστε στις κλήσεις των συναρτήσεων, να «διοχετεύονται» ορίσµατα είτε αριθµητικά, είτε µε µεταβλητές που χρησιµοποιεί η «καλούσα συνάρτηση»
  • 17. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 4. Κλήση Συνάρτησης 17∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή /* orismata.c: Anadeikniei pos pairname orismata se sinartiseis */ #include <stdio.h> int square(int x); main() { int a=5; int b=10; int teta,tetb,sum; teta=square(a); tetb=square(b); sum=teta+tetb; printf("%d^2 + %d^2 = %d",a,b,sum); } int square(int x) { int y; y=x*x; return y; }
  • 18. A. Συναρτήσεις 2. Πως Γράφουµε Συναρτήσεις 4. Κλήση Συνάρτησης 18∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Όπως φαίνεται και από το παράδειγµα, η επιστρεφόµενη τιµή της συνάρτησης γίνεται µε την εντολή return: H δεσµευµένη λέξη return ακολουθείται από την τιµή, η οποία µπορεί να είναι οποιαδήποτε υπολογιζόµενη παράσταση (σταθερά, µεταβλητή, υπολογισµός, ή ακόµη και συνάρτηση) Σηµαντικό: Η εκτέλεση της εντολής return σταµατά επιτόπου την εκτέλεση της συνάρτησης, υπολογίζει την τιµή και επιστρέφει στην καλούσα συνάρτηση. Ισχύει επίσης ότι σε µια συνάρτηση που επιστρέφει void, µπορούµε να σταµατήσουµε την εκτέλεση της µε την εντολή: return τιµή; return;
  • 19. A. Συναρτήσεις 3. Πως Λειτουργούν οι Συναρτήσεις 1. Συναρτήσεις και Χώρος στη Μνήµη 19∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Είναι σηµαντικό να καταλάβουµε ότι κάθε συνάρτηση έχει το δικό της «χώρο» στη µνήµη, στον οποίο αποθηκεύει τις µεταβλητές της. Για παράδειγµα έστω το τµήµα κώδικα που φαίνεται στα δεξιά Όταν ξεκινάει να εκτελείται ο κώδικας υπάρχει ο χώρος αποθήκευσης µόνο για την main! Έπειτα όταν εκτελείται η εντολή αρχικοποίησης a=5, η κατάσταση της µνήµης είναι: int f(int x); main() { int a=5,b; b=f(a); } int f(int x) { int y; y=x*x; return y; } a b … Χώρος της main a b … Χώρος της main 5
  • 20. A. Συναρτήσεις 3. Πως Λειτουργούν οι Συναρτήσεις 1. Συναρτήσεις και Χώρος στη Μνήµη 20∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Έπειτα καλείται η f µε όρισµα a. Προσοχή! Αυτό σηµαίνει, ότι δηµιουργείται χώρος αποθήκευσης για την f. Και στον χώρο αποθήκευσης της f, η µεταβλητή x θα πάρει την τιµή του ορίσµατος που βάλαµε, άρα η x θα πάρει την τιµή 5. Είναι σηµαντικό να καταλάβουµε ότι από εδώ και πέρα η x δεν έχει καµία σχέση µε την a. Έχει τον δικό της χώρο µνήµης και την διαχειρίζεται η f. Πλέον στο σώµα της f, καλείται η εντολή y=x*x άρα η y παίρνει την 25 int f(int x); main() { int a=5,b; b=f(a); } int f(int x) { int y; y=x*x; return y; } a b … Χώρος της main 5 Χώρος της f x y 5 a b … Χώρος της main 5 Χώρος της f x y 5 25
  • 21. A. Συναρτήσεις 3. Πως Λειτουργούν οι Συναρτήσεις 1. Συναρτήσεις και Χώρος στη Μνήµη 21∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Καλείται η εντολή return y. Αυτό σηµαίνει ότι επιστρέφουµε στην main! Πλέον η επιστρεφόµενη τιµή (25) αποθηκεύεται στην µεταβλητή b. Είναι σηµαντικό ότι µετά την επιστροφή τιµής ο χώρος της f, απελευθερώνεται για να µπορεί να χρησιµοποιηθεί από άλλες συναρτήσεις: int f(int x); main() { int a=5,b; b=f(a); } int f(int x) { int y; y=x*x; return y; } a b … Χώρος της main 5 25 • Το παράδειγµα αυτό αναδεικνύει δύο σηµαντικά θέµατα! • Κάθε κλήση συνάρτησης δηµιουργεί τον δικό της χώρο στην µνήµη! • Ο µόνος δίαυλος επικοινωνίας µε την καλούσα συνάρτηση είναι τα ορίσµατα (στην αρχή) και η επιστρεφόµενη τιµή (στο τέλος)
  • 22. A. Συναρτήσεις 3. Πως Λειτουργούν οι Συναρτήσεις 2. Περίπλοκα Ορίσµατα 22∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Στην πραγµατικότητα η διοχέτευση ορίσµατος: είναι απλά, να αρχικοποιηθεί η τιµή του ορίσµατος µε την τιµή που δίνουµε από την καλούσα συνάρτηση! Έτσι έχουµε το δικαίωµα να θέσουµε ως ορίσµατα οποιαδήποτε παράσταση της C Τότε απλά θα έχουµε ότι θα υπολογιστεί η τιµή του ορίσµατος, και έπειτα η µεταβλητή του ορίσµατος θα πάρει την κατάλληλη τιµή. Για παράδειγµα στο τµήµα κώδικα: Υπολογίζεται πρώτα το όρισµα (είναι η τιµή 10) Έπειτα καλείται η f µε όρισµα την τιµή 10 Ενώ αν η f είναι η συνάρτηση που είδαµε προηγουµένως τότε έχουµε δικαίωµα να γράψουµε ακόµη και το εξής: Όπου υπολογίζεται πρώτα το εσωτερικό f(a) (υπολογίζεται σε 25) και µετά υπολογίζεται το f(25) άρα αποθηκεύεται στο b η τιµή 625. int a=5; int b; b=f(2*a); int a=5; int b; b=f(f(a));
  • 23. A. Συναρτήσεις 3. Πως Λειτουργούν οι Συναρτήσεις 3. Παραπάνω του ενός ορίσµατα 23∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Αντίστοιχοι είναι οι κανόνες όταν έχουµε µια συνάρτηση που δέχεται πολλά ορίσµατα. Πχ. Αν έχουµε ορίσει την συνάρτηση: Και την καλέσουµε ως εξής: Τότε η τιµή που θέσαµε πρώτη αποθηκεύεται στην µεταβλητή του 1ου ορίσµατος (δηλαδή το x παίρνει την τιµή 1) Η τιµή που θέσαµε δεύτερη αποθηκεύεται στην µεταβλητή του 2ου ορίσµατος (δηλαδή το y παίρνει την τιµή 5) Η τιµή που θέσαµε τρίτη αποθηκεύεται στην µεταβλητή του 3ου ορίσµατος (δηλαδή το z παίρνει την τιµή 10) void func(int x, int y, int z) func(1,5,10)
  • 24. Β. Αναδροµή 1. Κλήση Συνάρτησης µέσα σε Συνάρτηση 24∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Όπως είδαµε αφού ορίσουµε µια συνάρτηση µπορούµε να την καλέσουµε οπουδήποτε στον κώδικα. Άρα µπορούµε να καλέσουµε µια συνάρτηση που έχουµε ορίσει µέσα σε µια άλλη συνάρτηση! Π.χ. ας ορίσουµε µια συνάρτηση που υπολογίζει την f(x)=2x2 Μπορούµε να ορίσουµε την συνάρτηση g(x)=2x2+x+1 ως εξής: int f(int x) { int y; y=2*x*x; return y; } int g(int x) { int y; y=f(x)+x+1; return y; }
  • 25. Β. Αναδροµή 2. Αναδροµικές Συναρτήσεις 25∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Ο όρος αναδροµή αναφέρεται σε µια συνάρτηση που καλεί τον εαυτό της! Αυτό είναι απόλυτα νόµιµο και στην C, αφού απλά καλούµε µια συνάρτηση µέσα σε µια συνάρτηση! Άρα µια συνάρτηση που στο σώµα της καλεί τον εαυτό της, θα ονοµάζεται αναδροµική συνάρτηση. Η δηµιουργία µιας αναδροµικής συνάρτησης είναι πολύ χρήσιµη, ιδίως όταν κατασκευάζουµε πράγµατα που ορίζονται αναδροµικά! Ας δούµε ένα παράδειγµα: Το παραγοντικό του φυσικού αριθµού n ορίζεται ως: ! ∙ 1 ∙ 2 ∙ ⋯ 2 ∙ 1 π.χ. έχουµε 1! 1, 2! 2 ∙ 1, 3! 3 ∙ 2 ∙ 1 6, 4! 4 ∙ 3 ∙ 2 ∙ 1 24 κ.ο.κ. Το παραγοντικό ορίζεται ωστόσο και αναδροµικά ως εξής: ! ∙ 1 ! αν 1 ! 1, αν 1
  • 26. Β. Αναδροµή 2. Αναδροµικές Συναρτήσεις 1. Υπολογισµός Παραγοντικού 26∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή /* factorial.c: Ypologizei to paragontiko enos fysikoy */ #include <stdio.h> int factorial(int n); main() { int x; int res; printf("Dwste ton fysiko: "); scanf("%d",&x); res=factorial(x); printf("%d!=%d",x,res); } int factorial(int n) { int y; if (n==1) return 1; else { y=factorial(n-1); return n*y; } }
  • 27. Β. Αναδροµή 2. Αναδροµικές Συναρτήσεις 1. Υπολογισµός Παραγοντικού 27∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Στον υπολογισµό µίας αναδροµικής συνάρτησης, κάθε αναδροµική κλήση έχει και το δικό της χώρο στη µνήµη. Ας δούµε πως τρέχει η κλήση factorial(3): Καλεί την factorial(2): Καλεί την factorial(1): int fact (int n) { int y; if (n==1) return 1; else{ y=factorial(n-1); return n*y; } } n … Χώρος της fact(3) 3 y n Χώρος της fact(3) 3 y Χώρος της fact(2) n y 2 n Χώρος της fact(3) 3 y Χώρος της fact(2) n y 2 Χώρος της fact(1) n y 1
  • 28. Β. Αναδροµή 2. Αναδροµικές Συναρτήσεις 1. Υπολογισµός Παραγοντικού 28∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή H factorial(1) επιστρέφει 1: Η factorial(2) αποθηκεύει το 1 στο y έπειτα επιστρέφει 2*1. Η factorial(2) αποθηκεύει το 1 στο y έπειτα επιστρέφει 3*2 int fact (int n) { int y; if (n==1) return 1; else{ y=factorial(n-1); return n*y; } } n Χώρος της fact(3) 3 y Χώρος της fact(2) n y 2 Χώρος της fact(1) n y 1 1 1 n Χώρος της fact(3) 3 y Χώρος της fact(2) n y 2 2 1 n Χώρος της fact(3) 3 y 6 2 main
  • 29. Β. Αναδροµή 2. Αναδροµικές Συναρτήσεις 1. Υπολογισµός Παραγοντικού 29∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Για να απεικονίσουµε τις αναδροµικές κλήσεις που γίνονται προτιµάται µία παράσταση όπου κάθε αναδροµική κλήση στοιχίζεται λίγο δεξιότερα. Με τον τρόπο αυτό µπορούµε να παρακολουθήσουµε αρκετά ικανοποιητικά την εκτέλεση ενός αναδροµικού κώδικα: int fact (int n) { int y; if (n==1) return 1; else{ y=factorial(n-1); return n*y; } } ΚΛΗΣΗ fact(3) (3==1) ΟΧΙ y=fact(2) ΚΛΗΣΗ fact(2) (2==1) ΟΧΙ y=fact(1) ΚΛΗΣΗ fact(1) (1==1) ΝΑΙ return 1 y=1 return 2*1=2 y=2 return 3*2=6
  • 30. Γ. Ασκήσεις Εφαρµογή 1 (Συναρτήσεις Ελέγχου Εισόδου) 30∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Ορίστε την συνάρτηση: int get_integer(int start, int finish): Θα λαµβάνει ως είσοδο ένα εύρος τιµών ακεραίων [start…finish] και θα διαβάζει έναν ακέραιο σε αυτό το εύρος. Θα επιστρέφει τον αριθµό που διαβάστηκε. Ορίστε τη συνάρτηση main να διαβάζει δύο ακέραιους a,b στο διάστηµα 1..10 και έναν ακέραιο n στο διάστηµα 2..5 και θα υπολογίζει την ποσότητα n*(a-b) και θα χρησιµοποιεί τη συνάρτηση που ορίσαµε.
  • 31. Γ. Ασκήσεις Εφαρµογή 2 (Μια Βιβλιοθήκη Μελέτης Αριθµών) 31∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Ορίζουµε τις συναρτήσεις: int is_even(int n): Θα επιστρέφει 0 ή 1 ανάλογα µε το αν ο αριθµός είναι άρτιος int is_odd(int n): Θα επιστρέφει 0 ή 1 ανάλογα µε το αν ο αριθµός είναι περιττός int is_square(int n): Θα επιστρέφει 0 ή 1 ανάλογα µε το αν ο αριθµός είναι τετράγωνο ενός φυσικού int is_cube(int n): Θα επιστρέφει 0 ή 1 ανάλογα µε το αν ο αριθµός είναι κύβος ενός φυσικού Ορίζουµε την main που θα ζητάει από το χρήστη είτε να εισάγει έναν αριθµό και θα εξετάζει αν ο αριθµός έχει κάποιες από αυτές τις ιδιότητες. Παράδειγµα Εκτέλεσης: Eisagete ton arithmo: 8 Einai Artios Einai Kivos Arithmou Eisagete ton arithmo: 9 Einai Perittos Einai Tetragono Arithmou
  • 32. Γ. Ασκήσεις Εφαρµογή 3 (Πρώτοι Αριθµοί) 32∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Ένας φυσικός αριθµός λέµε ότι είναι πρώτος αν διαιρείται (ακριβώς) µόνο µε τον εαυτό του και τη µονάδα. Το 1 θεωρείται ότι δεν είναι πρώτος. Κατασκευάστε ένα πρόγραµµα το οποίο: Θα ορίζει µία συνάρτηση µε όνοµα isprime() η οποία θα δέχεται ως όρισµα έναν ακέραιο αριθµό, θα εξετάζει αν είναι πρώτος και θα επιστρέφει 1 αν είναι πρώτος και 0 αν δεν είναι. Η main θα διαβάζει δύο φυσικούς (ελέγχοντας στην είσοδο να είναι >0) που θα ορίζουν την αρχή και το τέλος ενός κλειστού διαστήµατος (π.χ. a=5, b=8) και θα τυπώνει τους φυσικούς σε αυτό το διάστηµα που είναι πρώτοι. Παράδειγµα εκτέλεσης του ζητούµενου προγράµµατος: Eisagete tin arxi tou diastimatos: 5 Eisagete to peras tou diastimatos: 15 To 5 einai prwtos To 7 einai prwtos To 11 einai prwtos To 13 einai prwtos
  • 33. Γ. Ασκήσεις Εφαρµογή 4 (Αναδροµή: Η ακολουθία FIbonacci) 33∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή Η ακολουθία fibonacci ορίζεται ως: Fn=Fn-1+Fn-2, για n>2 F2=1 F1=1 Για παράδειγµα έχουµε F1=1,F2=1,F3=2,F4=3,F5=5,F6=8 κ.ο.κ. Ορίστε την συνάρτηση int fibonacci(int n) που δέχεται ως όρισµα έναν φυσικό και επιστρέφει το n-οστό fibonacci. Έπειτα κατασκευάστε µία main που διαβάζει από τον χρήστη έναν ακέραιο και υπολογίζει και επιστρέφει τον αριθµό fibonacci του αριθµού που εισήγαγε ο χρήστης.
  • 34. Γ. Ασκήσεις Εφαρµογή 5 (Αναδροµή: ΜΚ∆ µε τον αλγόριθµο του Ευκλείδη) 34∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 6: Συναρτήσεις και Αναδροµή O αλγόριθµος του Ευκλείδη για την εύρεση του Μέγιστου Κοινού ∆ιαιρέτη δύο (φυσικών) αριθµών: Ξεκινά µε ένα ζεύγος φυσικών και σχηµατίζει ένα νέο ζευγάρι µε τον µικρότερο αριθµό και την διαφορά του µικρότερου από τον µεγαλύτερο αριθµό. Η διαδικασία επαναλαµβάνεται εωσότου οι αριθµοί γίνουν ίσοι. Ο αριθµός αυτός είναι ο ΜΚ∆ των αρχικών αριθµών. Μαθηµατικά ο ΜΚ∆(a,b) όπου a,b είναι φυσικοί: Είναι ίσο µε a, αν a=b Είναι ίσο µε ΜΚ∆(a,b-a), αν a<b Είναι ίσο µε ΜΚ∆(a-b,b), αλλιώς Κατασκευάστε ένα πρόγραµµα σε γλώσσα C που θα υλοποιεί µε µία αναδροµική συνάρτηση τον υπολογισµό του ΜΚ∆ και µία συνάρτηση main που θα ζητάει από το χρήστη να εισάγει τους δύο φυσικούς, θα κάνει κατάλληλη κλήση της συνάρτησης και θα τυπώνει τον ΜΚ∆ των αριθµών.