Εισαγωγή στη γλώσσα προγραµµατισµού C. Τα γενικά σε ένα πρόγραµµα C Οι τύποι δεδοµένων Φορµαρισµένη έξοδος -printf() Οι µαθηµατικές συναρτήσεις στη C Οι βασικοί τελεστές στη C Προτεραιότητα και Σειρά Υπολογισµών Συµβολικές σταθερές Φορµαρισµένη είσοδος -scanf() Η τυπική Είσοδος/Έξοδος Οι συναρτήσεις getchar() και putchar() Εισαγωγή στη γλώσσα προγραµµατισµού C. Οι συναρτήσεις στη C. Πρωτότυπο συνάρτησης. Απλοί κανόνες για συναρτήσεις. Κλήση κατ αξία. Εξωτερικές µεταβλητές
Τα γενικά σε ένα πρόγραµµα C. Η µεταβλητή είναι µια οντότητα η οποία µπορεί να παίρνει διαφορετικές τιµές. Επίσης δύναται να αλλάζει τιµές στη ροή του προγράµµατος. Για παράδειγµα, σκεφτείτε τις παρακάτω τέσσερις γραµµές: a = 1.35; b = 32; a= 7.5; b= 10; Η σταθερά είναι µια οντότητα της οποίας η τιµή δεν αλλάζει ποτέ. Κάθε σταθερά ορίζεται µία φορά στο πρόγραµµα. Τα γενικά σε ένα πρόγραµµα C. Στη C έχουν οριστεί οι παρακάτω αριθµητικοί τελεστές οι οποίοι µας επιτρέπουν να κάνουµε πράξεις: Τελεστής Σηµασία + Πρόσθεση - Αφαίρεση * Πολλαπλασιασµός / ιαίρεση % Υπόλοιπο
Τα γενικά σε ένα πρόγραµµα C. Μία παράσταση είναι ένας συνδυασµός σταθερών, µεταβλητών, τελεστών ή και συναρτήσεων. Οι παραστάσεις χρησιµοποιούνται για να δηλώσουν υπολογισµούς. Για παράδειγµα, σκεφτείτε τις παρακάτω γραµµές: a = 10; b = 5; c = (a+5)*b; Οόρος(a+5)*b αποτελεί µια παράσταση. Η µεταβλητή c λαµβάνει την τιµή 75. Μία εντολή είναι µια οδηγία η οποία τελειώνει µε ένα ερωτηµατικό. Στο προηγούµενο παράδειγµα η γραµµή c = (a+5)*b; αποτελεί µια εντολή. Η τιµή 75 η οποία υπολογίζεται από την παράσταση (a+5)*b προσδίδεται στην µεταβλητή c. Οι τύποι δεδοµένων. Αριθµοί Χαρακτήρες Ακέραιοι int short int long int unsigned int signed int Πραγµατικοί ή Κινητής υποδιαστολής float double long double char
Οι τύποι δεδοµένων. Ο τύπος δεδοµένων int. Ο τύπος int αναφέρεται στους ακεραίους αριθµούς. Στους περισσότερους υπολογιστές ένας ακέραιος έχει µέγεθος 32 bit (4 byte). Αυτό σηµαίνει πως το εύρος των ακεραίων αριθµών είναι από 2147483647 (δηλαδή 2 31-1) έως 2147483648. Ο τύπος δεδοµένων float. Ο τύπος float αναφέρεται στους αριθµούς κινητής υποδιαστολής (πραγµατικούς αριθµούς) απλής ακρίβειας. Ο τύπος δεδοµένων double. Ο τύπος double αναφέρεται στους αριθµούς κινητής υποδιαστολής (πραγµατικούς αριθµούς) διπλής ακρίβειας. Η διαφορά των double από τους float έγκειται στο ότι οι πρώτοι έχουν µέγεθος σε bit διπλάσιο από τους δεύτερους. Τους αριθµούς τύπου double τους χρησιµοποιούµε όταν θέλουµε µεγάλη ακρίβεια στους υπολογισµούς µας. Οι τύποι δεδοµένων. Εδώ πρέπει να σηµειώσουµε πως εκτός των παραπάνω βασικών τύπων υπάρχουν και οι ακόλουθοι προσδιοριστές (qualifiers) οι οποίοι εφαρµόζονται: Οι προσδιοριστές short και long αναφέρονται στους τύπους δεδοµένων int. Έτσι µπορούµε να έχουµε: short int long int O short int συνήθως έχει µήκος 16 bit (2 byte) ενώ ο long int 32 bit (4 byte). Επίσης ο προσδιοριστής long εφαρµόζεται και στον τύπο double. Έτσι ο τύπος long double Έχει συνήθως µήκος 48 bit (12 byte) και χρησιµοποιείται όταν θέλουµε την µέγιστη ακρίβεια στους υπολογισµούς µας. Οι προσδιοριστές unsigned και signed αναφέρονται στους τύπους δεδοµένων int. Οι unsigned είναι πάντοτε θετικοί αριθµοί ή µηδέν ενώ οι signed µπορεί να είναι θετικοί µηδέν ή αρνητικοί αριθµοί.
Οι τύποι δεδοµένων. Ο τύπος δεδοµένων char. Ο τύπος char αντιπροσωπεύει ένα χαρακτήρα από τον σύνολο των χαρακτήρων οι οποίοι χρησιµοποιούνται στον υπολογιστή µας. Ένας υπολογιστής τύπου PC περιέχει ένα σύνολο από 256 χαρακτήρες. Στο σύνολο των χαρακτήρων για παράδειγµα περιέχονται όλα τα γράµµατα της αλφαβήτου (A έως Z και a έως z), όλα τα ψηφία (0 έως 9), όλοι οι χαρακτήρες τους οποίους βλέπουµε στο πληκτρολόγιό µας. Στον υπολογιστή µας ο κάθε χαρακτήρας καταλαµβάνει µέγεθος ίσο µε 8 bit (1 byte). Σε κάθε λοιπόν χαρακτήρα αντιστοιχείται ένας αριθµός των 8 bit, δηλαδή από το 0 (2 0-1) έως το 255 (2 8-1) ο οποίος ονοµάζεται ASCII (American Standard Code for Information Interchange) κωδικός. Αυτό που πρέπει να γίνει κατανοητό είναι πως όταν πληκτρολογούµε για παράδειγµα τον χαρακτήρα A, αυτός για τον υπολογιστή µας αντιστοιχεί στην αριθµητική τιµή 65 (ή σε δυαδική µορφή 0100 0001), ο χαρακτήρας a αντιστοιχεί στην αριθµητική τιµή 97 (ή σε δυαδική µορφή 0110 0001). Οι τύποι δεδοµένων. Οι πρώτοι 128 κωδικοί ASCII.
Παράδειγµα στους τύπους δεδοµένων. Γράψτε ένα γενικό πρόγραµµατοοποίοτυπώνειτοµέγεθος σε bytes κάθε ενός από τους βασικούς τύπους δεδοµένων που συναντάµεστηc. Υπόδειξη: Να χρησιµοποιήσετε τον τελεστή sizeof() ο οποίος επιστρέφει τον αριθµό τωνbytes για την κάθε µία µεταβλητή. Άσκηση 2.1.16 σηµειώσεων. Παράδειγµα στους τύπους δεδοµένων.
Παράδειγµα στους τύπους δεδοµένων. Να σηµειωθεί εδώ πως τα µεγέθη των διαφόρων τύπων ισχύουν για µηχανές του τύπου PC που χρησιµοποιούµε. Το αποτέλεσµα του συγκεκριµένου προγράµµατος σε άλλη µηχανή µπορεί να είναι διαφορετικό. Ακέραιοι - Πραγµατικοί Ο µετασχηµατισµός ενός ακεραίου σε πραγµατικό και αντίστροφα γίνεται χρησιµοποιώντας τα (float) και (int). int a1,a2; float b1,b2,b3; a1=3; a2=5; b1=7.; a3=(int)b1; Προσοχή!! όταν εκτελούµε διαιρέσεις µε ακεραίους. b2=a1/a2; /* το b2=0 */ b3=(float)a1/(float)a2; /* το b2=0.6 */
Φορµαρισµένη έξοδος -printf() Ησυνάρτησηprintf() χρησιµοποιείται για να τυπώνει µηνύµατα στην οθόνη του υπολογιστή µας, και εµπεριέχεται στο αρχείο επικεφαλίδας stdio.h Συµβολοσειρά Όρισµα printf( The number: %d is an integer.\n, 15 ); Χαρακτήρας Μετατροπής Γενικά η συµβολοσειρά περιέχει χαρακτήρες, καθώς και χαρακτήρες µετατροπής για τα ορίσµατα τα οποία αναγράφονται στο τέλος της εντολής. Παρατηρείστε πως οι χαρακτήρες µετατροπής ξεκινούν µετοσύµβολο %. Φορµαρισµένη έξοδος -printf() Οι βασικοί χαρακτήρες µετατροπής είναιοιακόλουθοι: Χαρακτήρας µετατροπής d, i O x,x u c s f e,e g,g Τύπος ορίσµατος Μορφή εκτύπωσης Τύπος int Τύπος int. Οκταδική µορφή. Τύπος int. εκαεξαδική µορφή. Τύπος unsigned int. Τύπος char. Εκτύπωση ενός χαρακτήρα.. Τύπος char. Εκτύπωση πολλών χαρακτήρων. Τύπος float, double. Τύπος float, double. Επιστηµονική εκτύπωση. Τύπος float, double. Επιστηµονική ή κοινή εκτύπωση ανάλογα µετηνακρίβεια.
Φορµαρισµένη έξοδος -printf() Ησυνάρτησηprintf() επιτρέπει στον χρήστη τον καθορισµό τουελάχιστου πλάτους πεδίου κατά την εκτύπωση ενός ορίσµατος. Αυτό γίνεται µε την παρεµβολή ενός αριθµού µεταξύ του συµβόλου % και του χαρακτήρα µετατροπής. Για παράδειγµα το%12f καθορίζει ότι το αποτέλεσµα ενόςπραγµατικού αριθµού θα τυπωθεί µε τουλάχιστον 12 χαρακτήρες. Ο αριθµός στοιχίζεται στα δεξιά. Εάν θέλουµε αριστερή στοίχιση του αριθµού τότε χρησιµοποιούµε το%- 12f. Επίσης η συνάρτηση printf() επιτρέπει τον καθορισµό του αριθµού δεκαδικών ψηφίων. Για παράδειγµα το%12.3f καθορίζει ότι το αποτέλεσµα ενόςπραγµατικού αριθµού θα τυπωθεί µε τουλάχιστον 12 χαρακτήρες εκ των οποίων τρία ψηφίαθαείναιδεκαδικά. Με αυτόν τον τρόπο καθορίζουµε τηνακρίβεια κατά την εκτύπωση σε ένα πραγµατικό αριθµό. Παράδειγµα µε την εντολή printf()
Παράδειγµα µε την εντολή printf() Η εκτέλεση του παραπάνω προγράµµατος εµφανίζει στην οθόνη τα ακόλουθα: The argument: A is a character. The number: 255 is an integer. The integer: 255 in octal form is: 377. The integer: 255 in hexadecimal form is: ff. The number: 3.141590 is a real number. The number: 3.141590 in scientific form is: 3.141590e+00 Οι µαθηµατικές συναρτήσεις στη C. Οι ορισµοί των βασικών µαθηµατικών συναρτήσεων στη C εµπεριέχονται στο αρχείο επικεφαλίδας math.h #include<math.h> Τετραγωνική ρίζα, εκθετικές-λογαριθµικές και άλλες βασικές συναρτήσεις. Συνάρτηση sqrt(x) exp(x) log(x) log10(x) pow(x,y) fabs(x) ldexp(x,n) Περιγραφή Τετραγωνική ρίζα του x, µε x>=0. Εκθετική συνάρτηση e x Φυσικός λογάριθµος ln(x), µε x>0 δεκαδικός λογάριθµος log10(x), µε x>0 ύψωση σε δύναµη x y Απόλυτη τιµή x x*2 n
Οι µαθηµατικές συναρτήσεις στη C. Τριγωνοµετρικές υπερβολικές συναρτήσεις. Συνάρτηση cos(x) sin(x) tan(x) acos(x) asin(x) atan(x) atan2(y,x) cosh(x) sinh(x) tanh(x) Περιγραφή συνηµίτονο του x ηµίτονο του x εφαπτοµένη του x τόξο συνηµιτόνου του x στο διάστηµα [0, π], x [-1,1] τόξο ηµιτόνου του x στο διάστηµα [-π/2, π/2], x [-1,1] τόξο εφαπτοµένης του x στο διάστηµα [-π/2, π/2] τόξο εφαπτοµένης του y/x στο διάστηµα [-π, π] υπερβολικό συνηµίτονο του x υπερβολικό ηµίτονο του x υπερβολική εφαπτοµένη του x Παράδειγµα µαθηµατικών συναρτήσεων
Παράδειγµα µαθηµατικών συναρτήσεων Προσοχή στην µεταγλώττιση!!! gcc example_math.c -lm Οι βασικοί τελεστές στη C. Οι συσχετιστικοί τελεστές είναι οι ακόλουθοι: Τελεστής > >= < <= Περιγραφή Μεγαλύτερο Μεγαλύτερο ή ίσο Μικρότερο Μικρότερο ή ίσο Οι τελεστές ισότητας είναι οι ακόλουθοι: Τελεστής ==!= Περιγραφή Ίσο µε Άνισο µε
Οι βασικοί τελεστές στη C. Οι λογικοί τελεστές είναι οι ακόλουθοι: Τελεστής &&! Περιγραφή Λογικός τελεστής AND Λογικός τελεστής OR Λογικός τελεστής NEGATION Τους συσχετιστικούς τελεστές, τους τελεστές ισότητας και τους λογικούς τελεστές τους συναντάµεκυρίωςστιςεντολέςif, for, while, do. Οι παραπάνω τελεστές χρησιµοποιούνται για συγκρίσεις µεταξύ αριθµών, µεταβλητών και παραστάσεων. Εάν η σύγκριση είναι αληθής τότε το αποτέλεσµαείναι1 διαφορετικά εάν είναι ψευδής τότε το αποτέλεσµα είναιµηδέν. Οι βασικοί τελεστές στη C. O τελεστής αύξησης και ο τελεστής µείωσης είναι οι ακόλουθοι: Τελεστής ++ -- Περιγραφή Τελεστής αύξησης κατά 1 Τελεστής µείωσης κατά 1 Οι τελεστές ++ και -- χρησιµοποιούνται όταν θέλουµε να προσθέσουµεήνα αφαιρέσουµετο1 από µία µεταβλητή. Έτσι το ++a; ισοδυναµεί µετο a=a+1; ενώ το --a; ισοδυναµεί στο a=a-1; οι τελεστές ++ και -- µπορούν να χρησιµοποιηθούν είτε ως προθεµατικοί τελεστές (δηλ. πριν την µεταβλητή, όπως ++a ή--a) είτε ως µεταθεµατικοί (δηλ. µετά την µεταβλητή, όπως a++ ή a--).
Οι βασικοί τελεστές στη C. Στην παράσταση ++a ητιµή τουa αυξάνει πριν χρησιµοποιηθεί η τιµή της. Στην παράσταση a++ ητιµή τουa αυξάνει αφού χρησιµοποιηθεί η τιµήτης. Παράδειγµα: Έτσι έστω ότι τo aισούται µε 5 τότε η a = 5; τότε η παράσταση b = a++; δίνει στο b την τιµή 5 ενώ η παράσταση b=++a; την τιµή 6. Το a και στις δύο περιπτώσεις γίνεται 6. Ο τελεστής αντιστοίχησης είναι ο: Τελεστής = Περιγραφή Τελεστής αντιστοίχησης Οι βασικοί τελεστές στη C. Οι τελεστές αντικατάστασης είναι οι ακόλουθοι Τελεστής += -= *= /= %= Περιγραφή Τελεστής πρόσθεσης και αντιστοίχησης Τελεστής αφαίρεσης και αντιστοίχησης Τελεστής πολ/µου και αντιστοίχησης Τελεστής διαίρεσης και αντιστοίχησης Τελεστής υπολοίπου και αντιστοίχησης Το a += b; ισοδυναµεί µετο a = a+b; Το a-= b; ισοδυναµεί µετο a= a-b; Το a*= b; ισοδυναµεί µετο a= a*b; Το a/= b; ισοδυναµεί µετο a= a/b; Το a%= b; ισοδυναµεί µετο a= a%b;
Οι βασικοί τελεστές στη C. Οι τελεστές πράξεων µε bits είναι οι ακόλουθοι : Τελεστής & ^ ~ >> << Περιγραφή AND για bit OR για bit XOR για bit NOTγια bit Ολίσθηση αριστερά Ολίσθηση δεξιά Οι παραπάνω τελεστές αφορούν πράξεις σε επίπεδο bits. Οι τελεστές &,, ^ και ~ αντιστοιχούν στις απλές πράξεις της άλγεβρας Boole. Οι τελεστές >> και << προκαλούν ολίσθηση στα δεξιά και στα αριστερά αντίστοιχα. Έτσι για παράδειγµα εάν η µεταβλητή a είναι ο δυαδικός αριθµός 01101000 τότε η παράσταση b= a>> 2; δίνει στη µεταβλητή b την τιµή 00011010. Προτεραιότητα - Σειρά Υπολογισµών Προσοχή!!! Όταν δεν είµαστε σίγουροι για την προτεραιότητα τελεστών να χρησιµοποιούµε πάντοτε παρενθέσεις.
Συµβολικές σταθερές. Ηεντολή #define ορίζει ένα συµβολικό όνοµα ή συµβολική σταθερά ίση µε µια συγκεκριµένη ακολουθία χαρακτήρων. #define όνοµα κείµενο αντικατάστασης Παράδειγµα: #include<stdio.h>. #define pi 3.14159 #define deg_to_rad pi/180.. int main(void){ float angle; angle = 60; printf( Angle in deg : %f\n,angle); printf( Angle in rad : %f\n,angle*deg_to_rad); } Φορµαρισµένη είσοδος -scanf() Ησυνάρτησηscanf() χρησιµοποιείται για να διαβάζουµε διάφορουςτύπους δεδοµένων ή συµβολοσειρές από την τυπική είσοδο (πληκτρολόγιο). Η εκτέλεση της συνάρτησης scanf() σταµατά την ροή του προγράµµατος έως ότου ο χρήστης πληκτρολογήσει τα απαραίτητα δεδοµένα.. Στη συνέχεια το πρόγραµµα συνεχίζει λαµβάνοντας υπ όψη και τα δεδοµένα που έχουν πληκτρολογηθεί. Ησυνάρτησηscanf() όπως και η printf() εµπεριέχεται στο αρχείο επικεφαλίδας stdio.h. Ο χαρακτήρας & Μεταβλητή a scanf( %d, &a ); Χαρακτήρας Μετατροπής
Φορµαρισµένη είσοδος -scanf() Οι χαρακτήρες µετατροπής είναιοιίδιοιπουχρησιµοποιούµεκαιστην εντολή printf(). Εδώ πρέπει να τονίσουµε την χρήση του τελεστή διεύθυνσης &, ο οποίος είναι απαραίτητος και αναγράφεται πριν το όνοµατηςµεταβλητής. Ο τελεστής & υπολογίζει την διεύθυνση στην µνήµη του υπολογιστή που καταλαµβάνει µια µεταβλητή. Περισσότερα για τον τελεστή & θα µάθουµε όταν αναφερθούµε στους δείκτες. Παράδειγµα µε την εντολή scanf()
Παράδειγµα µε την εντολή scanf() Η εκτέλεση του παραπάνω προγράµµατος µπορεί να είναι η ακόλουθη: Please insert two integers: 12345 98765 Please insert one real number: 987.654321 The integers you have typed are: 12345 98765 The real number you have typed is: 987.654321 Ητυπική Είσοδος/Έξοδος Ένα αρχείο περιέχει σχετιζόµενους χαρακτήρες και αριθµούς. Επειδή όλοι οι χαρακτήρες και αριθµοί αντιπροσωπεύονται από bit σε υπολογιστές και ένα byte είναι µια σειρά από bit, η γλώσσα C χειρίζεται ένα αρχείο σαν µια σειρά από byte. Η γλώσσα C διαχειρίζεται όλα τα αρχεία µε τον ίδιο τρόπο, είτε αυτά προέρχονται από δίσκο-cd είτε από το τερµατικό. Στη C υπάρχουν τρία είδη αρχείων, τα οποία είναι πάντα διαθέσιµα στα προγράµµατα: Stdin Η τυπική είσοδος για διάβασµα. Stdout Η τυπική έξοδος για γράψιµο. Stderr Η τυπική συσκευή για το γράψιµο µηνυµάτων λαθών. Έχουµε ήδη χρησιµοποιήσει την stdout στην συνάρτηση printf() και την stdin στην συνάρτηση scanf().
Οι συναρτήσεις getchar() και putchar() Ηπρότυπη βιβλιοθήκη διαθέτει δύο απλές συναρτήσεις για την ανάγνωση ή το γράψιµο ενός µόνο χαρακτήρα τη φορά.οι συναρτήσεις αυτές είναι η getchar() και η putchar(). Κάθε φορά που καλείται η getchar(), διαβάζει τον επόµενο χαρακτήρα της εισόδου και τον επιστρέφει ως τιµή. Γιά παράδειγµα: int c; c=getchar(); η µεταβλητή c περιέχει τον επόµενο χαρακτήρα της εισόδου (πχ. πληκτρολόγιο). Αντίθετα η putchar() εµφανίζει ένα χαρακτήρα κάθε φορά που καλείται. Γιά παράδειγµα: putchar(c); εµφανίζει στην οθόνη το περιεχόµενο της ακέραιης µεταβλητής c ως χαρακτήρα. Παράδειγµα µε τις getchar() και putchar() Γράψτε ένα πρόγραµµα µε το οποίο να εισάγετε την λέξη Hi να την αναλύσετε στους δύο χαρακτήρες της, να τους τυπώσετε και να τους ανασυνθέσετε ώστε να τυπώσετε ξανά την λέξη Hi.
Παράδειγµα µε τις getchar() και putchar() Οι συναρτήσεις στη C. Οι συναρτήσεις στη γλώσσα προγραµµατισµού C αποτελούν τα βασικά τµήµατα από τα οποία αποτελούνται τα διάφορα προγράµµατα. Παράδειγµα συνάρτησης η οποία υπολογίζει το υπόλοιπο δύο ακεραίων αριθµών: Τύπος συνάρτησης Όνοµα συνάρτησης Ορίσµατα συνάρτησης int integer_mod ( int x, int y ) { Αρχή συνάρτησης int result; result = x%y; return result; Σώµα συνάρτησης } Τέλος συνάρτησης
Οι συναρτήσεις στη C. Ο τύπος της συνάρτησης δείχνει τι είδους τιµή επιστρέφει η συνάρτηση µετά την εκτέλεσή της. Καλό είναι το όνοµα της συνάρτησης να δίνεται µε τέτοιο τρόπο ώστε να δείχνει τι µπορεί να κάνει η συνάρτηση. Στο όνοµα της συνάρτησης µπορούν να χρησιµοποιηθούν όλοι οι χαρακτήρες (A έως Z και a έως z), όλα τα ψηφία (0 έως 9) και ο χαρακτήρας υπογράµµισης (_). Σηµειώνουµε πως το όνοµα της συνάρτησης δεν µπορεί να ξεκινά µε ψηφίο ενώ απαγορεύεται η χρήση των αριθµητικών συµβόλων (+, -, *, /), τα εισαγωγικά ( ), η απλή απόστροφος ( ), η τελεία (.), και µερικοί άλλοι χαρακτήρες όπως τα #,?, &, @ κτλ. Τα ορίσµατα της συνάρτησης αποτελούν οι µεταβλητές οι οποίες εισάγονται και χρησιµοποιούνται από αυτή. Με αυτόν τον τρόπο η συνάρτηση µπορεί να χρησιµοποιηθεί όσες φορές θέλουµε κάθε φορά µε διαφορετικές τιµές στα ορίσµατα.. Μία συνάρτηση αρχίζει πάντοτε µε αριστερή αγκύλη ({) και τελειώνει µε δεξιά αγκύλη (}). Το σώµα µιας συνάρτησης περιέχει όλες τις δηλώσεις, παραστάσεις και εντολές οι οποίες απαιτούνται. Πρωτότυπο συνάρτησης Κάθε συνάρτηση πρέπει να δηλώνεται στην αρχή (πριν την main). Η δήλωση αυτή ονοµάζεται πρωτότυπο συνάρτησης και πρέπει να συµφωνεί µε τον ορισµό της.
Πρωτότυπο συνάρτησης Απλοί κανόνες για συναρτήσεις. Μια συνάρτηση την καλούµε απλά µε το όνοµά της. Ιδιαίτερη προσοχή πρέπει να δοθούν στους τύπους της συνάρτησης και τον ορισµάτων. Πρέπει να συµφωνούν µε τους τύπους των δεδοµένων µε τα οποία την χρησιµοποιούµε. Όταν µία παράσταση χρησιµοποιείται πολλές φορές την αναπτύσσουµεσε συνάρτηση. Η χρήση συναρτήσεων δίνει καλύτερη δοµή στο πρόγραµµά µας, το οποίο γίνεται περισσότερο ευκολοδιάβαστο. εν ξεχνούµε ποτέ τις δηλώσεις µε τα πρωτότυπα των συναρτήσεων που χρησιµοποιούµε. Τα ονόµατα των συναρτήσεων τα οποία αναπτύσσουµε καλό θα είναι να περιγράφουν λίγο πολύ αυτό πού κάνει η συνάρτηση. Οι ορισµοί των συναρτήσεων µπορεί να εµφανίζονται µε οποιαδήποτε σειρά σε ένα η περισσότερα αρχεία πηγαίου κώδικα. Ιδιαίτερη προσοχή πρέπει να δειχθεί όταν η συνάρτηση ορίζεται και αναπτύσσεται σε διαφορετικό φάκελο από αυτόν της main(). Πρέπει πάντοτε να δηλώνουµε τις συναρτήσεις πριν τις χρησιµοποιήσουµε.
Κλήση κατ αξία. Στη C όλα τα ορίσµατα των συναρτήσεων µεταβιβάζονται κατ αξία (by value). Αυτό σηµαίνει πως η συνάρτηση παίρνει τις τιµές των ορισµάτων της σε προσωρινές µεταβλητές και όχι στις πρωτότυπες. Με απλά λόγια στη C η καλούµενη συνάρτηση δεν µπορεί να αλλάξει άµεσα µια µεταβλητή της καλούσας συνάρτησης. Μπορεί να αλλάξει µόνο το δικό της προσωρινό αντίγραφο. Με αυτόν τον τρόπο οι παράµετροι µέσα σε µια συνάρτηση αντιµετωπίζονται ως τοπικές µεταβλητές. Οι τοπικές µεταβλητές σε µια συνάρτηση αποκτούν υπόσταση όταν καλείται η συνάρτηση, και εξαφανίζονται µε την έξοδο από την συνάρτηση. Ονοµάζονται και αυτόµατες µεταβλητές. Η τροποποίηση της τιµής µιας µεταβλητής µέσα σε µια συνάρτηση γίνετε µε χρήση δεικτών όπως θα δούµε αργότερα. Παράδειγµα-κλίση κατ αξία
Παράδειγµα-κλίση κατ αξία Η εκτέλεση του προγράµµατος δίνει: Εξωτερικές µεταβλητές Εκτός από τις αυτόµατες µεταβλητές υπάρχουν και οι εξωτερικές µεταβλητές οι οποίες µπορούν να προσπελαστούν µε το όνοµά τους από όλες τις συναρτήσεις. Με αυτόν τον τρόπο µπορεί να γίνει εύκολα διακίνηση δεδοµένων ανάµεσα στις συναρτήσεις. Μια εξωτερική µεταβλητή πρέπει να ορίζεται µια µόνο φορά, έξω από οποιαδήποτε συνάρτηση. Η εξωτερική µεταβλητή πρέπει να δηλώνεται σε κάθε συνάρτηση που θέλει να την προσπελάσει. Αυτό γίνεται µε το πρόθεµα extern. Κοινή πρακτική είναι οι εξωτερικές µεταβλητές να δηλώνονται στην κορυφή πριν από οποιαδήποτε συνάρτηση, οπότε µπορεί να παραληφθεί το πρόθεµα extern. Κάθε εξωτερική µεταβλητή δεσµεύει ένα µόνιµο χώρο στη µνήµη του υπολογιστή. Με αυτόν τον τρόπο διατηρούν την υπόστασή τους µόνιµα. Προσοχή!!! Οι εξωτερικές µεταβλητές διατηρούν την τιµή τους ακόµη και µετά την επιστροφή της συνάρτησης η οποία όρισε την αρχική τους τιµή.
Παράδειγµα εξωτερική µεταβλητή Παράδειγµα εξωτερική µεταβλητή Η εκτέλεση του προγράµµατος δίνει: