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

Σχετικά έγγραφα
Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

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

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

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

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

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

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

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

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

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

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

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

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

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

Αρχές Προγραμματισμού

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

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

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

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

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

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις

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

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

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

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

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Transcript:

Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Γεννήτρια ψευδοτυχαίων αριθμών από 0 έως 32767 x = rand(); 41 18467 6334 26500 19169 15724 11478... Αν θέλαμε ψυδοτυχαίους αριθμούς από 0 έως 100 θα γράφαμε: x = rand()%101; και θα λαμβάναμε: 41 85 72 38 80 69 65... Αν θέλαμε ψυδοτυχαίους αριθμούς από 40 έως 60 θα γράφαμε: x = 40 + rand()%21; και βέβαια δεν πρέπει να παραλείψουμε την: srand((unsigned)time(null)); 2

Παράδειγμα γεμίσματος πίνακα #include <stdio.h> #include <stdlib.h> #include <greek.h> #define N 15 #define K 50 #define L 80 int main(int argc, char *argv[]) { int p[n],i; SetGreek(); srand((unsigned)time(null)); for (i=0; i<n; i++) p[i]= K + rand()%(l-k+1); printf("\nο πίνακας είναι:\n"); for (i=0; i<n; i++) printf("%3d", p[i]); printf("\n"); system("pause"); return 0; Να γίνει ένα πρόγραμμα που να γεμίζει έναν πίνακα 15 ακεραίων με (ψευδο)τυχαίες τιμές από το 50 έως και το 80 η καθεμία. Κατόπιν να τον εμφανίζει στην οθόνη σε μία γραμμή. 3

Αποτελέσματα εκτέλεσης προηγούμενου προγράμματος O πίνακας είναι: 60 72 60 76 61 57 58 51 73 55 51 78 50 75 60 Πιέστε ένα πλήκτρο για συνέχεια... O πίνακας είναι: 76 74 54 64 59 50 50 73 63 71 50 77 53 51 58 Πιέστε ένα πλήκτρο για συνέχεια... O πίνακας είναι: Χωρίς την χρήση της srand() Με την χρήση της srand() 55 56 57 61 68 52 75 76 76 58 64 53 53 54 71 Πιέστε ένα πλήκτρο για συνέχεια... 4

Παράδειγμα δημιουργίας μενού επιλογής... do{ printf("\n ΜΕΝΟΥ ΕΠΙΛΟΓΗΣ"); printf("\n 1. ααα... "); printf("\n 2. βββ... "); printf("\n 3. γγγ... ");... printf("\n 0. ΕΞΟΔΟΣ "); printf("\n\n ΔΩΣΤΕ ΕΠΙΛΟΓΗ : "); scanf ("%d", &choice); while(choice<0 choice>3); switch (choice) { case 1:... break; case 2:... break; case 3:... break; case 0: exit(1); break;... 5

Οι εντολές break και continue Κάποιες φορές εξυπηρετεί να μπορούμε να βγούμε από ένα βρόχο χωρίς να εκτελέσουμε τον έλεγχο της αρχής ή του τέλους. Η εντολή break προσφέρει πρόωρη έξοδο από τις for, while και do-while ακριβώς όπως και στην switch. Προκαλεί δηλαδή άμεση έξοδο από τον πιο εσωτερικό βρόχο εντολής επανάληψης ή πολλαπλής διακλάδωσης switch. Η εντολή continue προκαλεί την έναρξη του επόμενου βρόχου for, while, ή do-while που την περιέχει. Στους while και do-while αυτό σημαίνει ότι εκτελείται αμέσως το τμήμα ελέγχου, ενώ στην for ο έλεγχος περνάει στο βήμα αύξησης. Η εντολή continue εφαρμόζεται μόνο σε βρόχους, και όχι στην switch. Η continue χρησιμοποιείται συχνά όταν το τμήμα του βρόχου που ακολουθεί είναι περίπλοκο, με αποτέλεσμα η αντιστροφή ενός ελέγχου και η δημιουργία ακόμα μιας εσοχής να βάζει το πρόγραμμα σε επαλληλίες με πολύ μεγάλο βάθος. Οι εντολές break και continue χρησιμοποιούνται σπάνια. 6

Η εντολή goto Η εντολή goto προκαλεί άμεση μετάβαση (άλμα) στην ετικέτα Χρησιμοποιείται για να προκαλέσει την έξοδο από μια βαθιά φωλιασμένη δομή, όπως από δυο ή περισσότερους βρόχους. Η εντολή break, που είδαμε λίγο πριν, δεν μπορεί να χρησιμοποιηθεί άμεσα, διότι προκαλεί την έξοδο μόνο από τον πιο εσωτερικό βρόχο. Η χρήση της goto δεν συστήνεται, παρά μόνο σε πολύ ειδικές περιπτώσεις. for (... ) for (... ) for (... ) {... if (disaster) goto error;... error: /* ονομασία ετικέτας */... 7

O τελεστής κόμμα «,» Σε ορισμένες περιπτώσεις το κόμμα ενεργεί ως τελεστής παρά ως απλό διαχωριστικό. Το αποτέλεσμα είναι το εξής: Υπολογίζονται και οι δύο εκφράσεις με πρώτη την αριστερή έκφραση. Ολόκληρη η έκφραση εκτιμάται στην τιμή της δεξιάς έκφρασης. x = (a++, b++) H πρόταση αυτή εκχωρεί την τιμή της b στην x, κατόπιν αυξάνει την a κατά ένα και μετά αυξάνει την b κατά ένα. Τελεστής χαμηλής προτεραιότητας. Π.χ. Αντιστροφή στοιχείων πίνακα: int p[15], i, j, t; for(i=0,j=14; i<j ; i++, j--) { t=p[i]; p[i]=p[j]; p[j]=t; 8

Εισαγωγή στις συναρτήσεις Στη C ο όρος «συνάρτηση» ορίζει μία ακολουθία εντολών που έχουν ομαδοποιηθεί και καταχωρηθεί μ ένα συμβολικό όνομα. Στη C κάθε συνάρτηση είναι ουσιαστικά ένα μικρό πρόγραμμα, με τις δικές του δηλώσεις μεταβλητών, και τις δικές του εντολές. Δηλαδή μια συνάρτηση είναι κατονομασμένη, ανεξάρτητη, εκτελεί συγκεκριμένη εργασία, μπορεί να λάβει παραμέτρους (ορίσματα) και μπορεί να επιστρέψει κάποιο αποτέλεσμα Η ιδέα είναι ότι ένας σύνθετος αλγόριθμος μπορεί να διασπασθεί σε μικρότερα κομμάτια τα οποία είναι ευκολότερο να κατανοηθούν, να υλοποιηθούν, και να συντηρηθούν (αναλυτική σχεδίαση αλγορίθμων top down). Κάθε τέτοιο κομμάτι μπορεί να υλοποιηθεί σαν μία συνάρτηση. 9

Αναλυτική (Κάθετη top down) μεθοδολογία επίλυσης προβλημάτων Σύνθετο Πρόβλημα Υπο- Πρόβλημα 1 Υπο- Πρόβλημα 2 Υπο- Πρόβλημα 3 Υπο- Πρόβλημα 1-1 Υπο- Πρόβλημα 1-2 Υπο- Πρόβλημα 2-1 Υπο- Πρόβλημα 3-1 Υπο- Πρόβλημα 3-2 10

Οργάνωση προγράμματος main Συνάρτηση-1 Συνάρτηση-2 Συνάρτηση-3 Συνάρτηση-1.1 Συνάρτηση-1.2 Συνάρτηση-2.1 Συνάρτηση-3.1 Συνάρτηση-3.2 11

Δομημένος Προγραμματισμός Δομημένος Προγραμματισμός είναι όταν εκτελούμε μεμονωμένες εργασίες προγράμματος από αυτόνομα τμήματα κώδικα. Είναι ευκολότερο να γράψουμε ένα πρόγραμμα με συναρτήσεις, πιο εύκολο να εντοπίσουμε τα λάθη, αλλά και πιο βολικό στο να το εξελίξουμε περισσότερο. Επαναχρησιμοποιούμε συναρτήσεις. Χρησιμοποιώντας δομημένο προγραμματισμό, ο προγραμματιστής χρησιμοποιεί την «κάθετη προσέγγιση» (δενδρική μορφή υπο-προβλημάτων). Για αυτό πολλά προγράμματα της C, έχουν λίγες γραμμές κώδικα στη main(). 12

Συναρτήσεις και δομημένος προγραμματισμός Για να γράψουμε ένα δομημένο πρόγραμμα, χρειάζεται να κάνουμε πρώτα λίστα συγκεκριμένων εργασιών που πρέπει να εκτελεστούν. Ιεραρχική δομή προγράμματος, κάθετη προσέγγιση. Ως αποτέλεσμα, πολλά προγράμματα της C έχουν λίγο κώδικα στη main() που απλά οδηγεί την εκτέλεση του προγράμματος στις συναρτήσεις. Η C δεν βάζει περιορισμούς σε σχέση με το μήκος μίας συνάρτησης, αλλά συνήθως οι συναρτήσεις δεν υπερβαίνουν τις 25 γραμμές κώδικα. Και αυτό διότι στο δομημένο προγραμματισμό κάθε συνάρτηση εκτελεί μία σχετικά απλή εργασία. 13

Δομή Προγράμματος #include <stdio.h>. #define.. Δηλώσεις πρωτοτύπων Δηλώσεις μεταβλητών-α void main() { Δηλώσεις τοπικών μεταβλητών-β...... κλήση συνάρτηση-1(... );... κλήση συνάρτηση-2(... );... κλήση συνάρτηση-3(... );... Τύπος_επιστροφής όνομα (τύπος όνομα_ορίσματος1,...) { Δηλώσεις τοπικών μεταβλητών-γ κλήση συνάρτηση-1.1(..). κλήση συνάρτηση-1.2(...) Τύπος συνάρτηση-1.1(τύπος παράμετρος,...) { Δηλώσεις τοπικών μεταβλητών-δ...... Τύπος συνάρτηση-2(τύπος παράμετρος,...) { Δηλώσεις τοπικών μεταβλητών-ε 14

Ροή Προγράμματος void main() { κλήση συνάρτηση-1 (...); κλήση συνάρτηση-2(...); κλήση συνάρτηση-3(...); τύπος συνάρτηση-1(...) { κλήση συνάρτηση-1.1(..);... κλήση συνάρτηση-1.2(..);... τύπος συνάρτηση-1.1(...) { Μέσα σε μία συνάρτηση μπορούμε να καλέσουμε άλλη συνάρτηση Το μόνο πράγμα που δεν μπορούμε να κάνουμε μέσα σε μία συνάρτηση είναι να δηλώσουμε μία άλλη συνάρτηση. 15

Ορολογία σχετική με συναρτήσεις Δήλωση ή Πρωτότυπο συνάρτησης (function declaration) Ορισμός συνάρτησης (function definition) Επικεφαλίδα συνάρτησης (function header) Τυπικές παράμετροι συνάρτησης (formal parameters) Πραγματικά ορίσματα συνάρτησης (actual arguments) Σώμα συνάρτησης (function body) Κλήση συνάρτησης (function call) Διοχέτευση ορισμάτων (parameter passing) κατά αξία (by value) κατά αναφορά (by reference) Επιστροφή τιμών (return values) 16

Πρωτότυπο συνάρτησης Οι συναρτήσεις είναι και αυτές στοιχεία και κατασκευές της γλώσσας και σαν τέτοια πρέπει να δηλωθούν. Το πρόβλημα όμως είναι ότι σ ένα μεγάλο πρόγραμμα το οποίο αποτελείται από πολλά αρχεία μια συνάρτηση μπορεί να δηλωθεί ή ορισθεί σε οποιοδήποτε από αυτά. Το πρωτότυπο μίας συνάρτησης είναι μια δήλωση που παρέχει στον μεταγλωττιστή την πληροφορία ότι κάπου αργότερα στο πρόγραμμα η συνάρτηση θα ορισθεί. Το πρωτότυπο περιλαμβάνει το όνομα της συνάρτησης, τον τύπο του αποτελέσματος που επιστρέφει (αν επιστρέφει κάποιο αποτέλεσμα), τον τύπο και (προαιρετικά) το όνομα κάθε ορίσματος. Η σύνταξη του πρωτότυπου μιας συνάρτησης είναι: <τύπος> <όνομα_συνάρτησης>(τύπος 1 παράμ 1, τύπος κ παράμ κ ); Το πρωτότυπο τελειώνει πάντα με ένα ελληνικό ερωτηματικό. 17

Πρωτότυπο συνάρτησης Το χρησιμοποιεί ο μεταγλωττιστής για να ελέγξει ότι διοχετεύεται ο σωστός αριθμός και τύπος ορισμάτων και ότι χρησιμοποιείται σωστά η τιμή επιστροφής. Ένα πρωτότυπο συνάρτησης δε χρειάζεται να αντιστοιχεί ακριβώς στην κεφαλίδα της συνάρτησης. Τα ονόματα παραμέτρων μπορούν να είναι διαφορετικά εφόσον είναι του ίδιου τύπου, στον ίδιο αριθμό και με την ίδια σειρά. Με το να είναι ίδια ο πηγαίος σας κώδικας γίνεται κατανοητός. 18

Πρωτότυπο - σχηματικά #include <stdio.h>. #define.. Δηλώσεις πρωτοτύπων Δηλώσεις μεταβλητών-α void main() { Δηλώσεις τοπικών μεταβλητών-β...... κλήση συνάρτηση-1(..);... κλήση συνάρτηση-2(..);... κλήση συνάρτηση-3(..);... Τύπος συνάρτηση-1(τύπος παράμετρος,...) { Δηλώσεις τοπικών μεταβλητών-γ κλήση συνάρτηση-1.1(..). κλήση συνάρτηση-1.2(...) Τύπος συνάρτηση-1.1(τύπος παράμετρος,...) { Δηλώσεις τοπικών μεταβλητών-δ...... Τύπος συνάρτηση-2(τύπος παράμετρος,...) { Δηλώσεις τοπικών μεταβλητών-ε 19

Ορισμός συνάρτησης Η κάθε συνάρτηση έχει ως σκοπό να υλοποιήσει και να εκτελέσει ένα συγκεκριμένο κομμάτι ενός αλγόριθμου. Συνεπώς ο προγραμματιστής θα πρέπει να γράψει τον κώδικα που αντιστοιχεί στην υλοποίηση αυτού του κομματιού. Η πρώτη γραμμή (κεφαλίδα) ενός ορισμού συνάρτησης θα πρέπει να είναι ίδια με του πρωτοτύπου της συνάρτησης χωρίς το ελληνικό ερωτηματικό στο τέλος. Αν και τα ονόματα των μεταβλητών είναι προαιρετικά στο πρωτότυπο, πρέπει να περιλαμβάνονται στην κεφαλίδα συνάρτησης. Αυτό γίνεται με τον ορισμό της συνάρτησης που έχει τη μορφή <τύπος επιστροφής> <όνομα_συνάρτησης> (τύπος 1 παράμετρος 1,... τύπος κ παράμετρος κ ) {... κώδικας συνάρτησης... Εάν ο τύπος επιστροφής της συνάρτησης είναι διαφορετικός του void, θα πρέπει να συμπεριλαμβάνεται μέσα στο σώμα της συνάρτησης μία πρόταση return η οποία επιστρέφει μία τιμή με τον προκαθορισμένο τύπο επιστροφής. 20

Κεφαλίδα συνάρτησης H πρώτη γραμμή του ορισμού κάθε συνάρτησης είναι η κεφαλίδα της. Αποτελείται από τον τύπο επιστροφής της συνάρτησης ο οποίος καθορίζει τον τύπο δεδομένων που επιστρέφει η συνάρτηση στο πρόγραμμα που την καλεί. Από το όνομα της συνάρτησης το οποίο πρέπει να ακολουθεί τους κανόνες ονομάτων των μεταβλητών της C. Πολλές συναρτήσεις χρησιμοποιούν ορίσματα που είναι τιμές οι οποίες διοχετεύονται στη συνάρτηση όταν καλείται. double function1 (int x, float y, char z) Ο τύπος επιστροφής μπορεί να είναι οποιοσδήποτε από τους τύπους δεδομένων της C: char, int, long, float, double. Kάποιες συναρτήσεις δεν δέχονται ορίσματα, ή δεν επιστρέφουν κάποια τιμή, πχ: void funct2 (int x, float y) ή void funct3 (void) 21

Τυπικές και πραγματικές παράμετροι (ορίσματα) Οι τυπικές παράμετροι της συνάρτησης είναι όλες οι παράμετροι που βρίσκονται στη κεφαλίδα της συνάρτησης (στο πρωτότυπο της συνάρτησης και στον ορισμό της συνάρτησης). Το πλήθος των παραμέτρων και ο τύπος κάθε παραμέτρου πρέπει να είναι ο ίδιος με το πρωτότυπο της συνάρτησης. Το ίδιο ισχύει για τον τύπο επιστροφής της συνάρτησης. Οι πραγματικές παράμετροι της συνάρτησης είναι οι τιμές των παραμέτρων για μια συγκεκριμένη κλήση της συνάρτησης, σε κάποιο σημείο του προγράμματος. Το πλήθος και ο τύπος των παραμέτρων/ορισμάτων πρέπει να είναι ο ίδιος με το πρωτότυπο και τον ορισμό της συνάρτησης. Το ίδιο ισχύει για τον τύπο επιστροφής της συνάρτησης στο σημείο κλήσης. 22

Παράδειγμα #include <stdio.h> int sum(int, int); void main() { int i, j, k; printf( Enter two numbers: ); scanf( %d%d, &i, &j); k = sum( i, j ); Τυπικά Ορίσματα (number1, number2) Πραγματικά Ορίσματα (i, j) printf( The sum of %d, %d is: %d, i, j, k); int sum(int number1, int number2) { int m; m = number1 + number2; return m; 23