ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

Σχετικά έγγραφα
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο. Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

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

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

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

Προγραμματισμός Συστημάτων

Εισαγωγή στον Προγραμματισμό (με. τη C)

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

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

Αναδρομή Ανάλυση Αλγορίθμων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

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

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

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

Δομές Ανακυκλώσεων. Εντολές ελέγχου - 1

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

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

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

ΣΥΝΑΡΤΗΣΕΙΣ Εισαγωγή αρθρωτό ιεραρχική Προσοχή!

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

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

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

Γλώσσες Προγραμματισμού

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

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

10. Εντολές επανάληψηςκαι οι εντολές

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

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

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

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

scanf() scanf() stdin scanf() printf() int float double %lf float

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

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

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

Εισαγωγή στον δομημένο προγραμματισμό

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

Προγραμματισμός Αναδρομή

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ.

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

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

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

Διάλεξη 11η: Δείκτες, μέρος 1

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

Προγραμματισμός Υπολογιστών με C++

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

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

Προγραμματισμός Αναδρομή

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Transcript:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1

Συναρτήσεις Ο δομημένος προγραμματισμός, όπως η C, βασίζεται στη συνεργασία απλών τμημάτων του προγράμματος, Τα τμήματα αυτά στην C λέγονται συναρτήσεις. Το κυρίως πρόγραμμα καλεί τις κατάλληλες συναρτήσεις. Αλλά και οι συναρτήσεις, με τη σειρά τους μπορούν και καλούν άλλες συναρτήσεις ακόμα και τον εαυτό τους. Οι συναρτήσεις δηλώνονται όπως και οι μεταβλητές. Δηλαδή προσδιορίζεται το είδος του στοιχείου που επιστρέφουν. Επίσης δηλώνονται τα ορίσματά τους και το είδος των ορισμάτων τους. π.χ. float area(float x, float y) ή int min_mult(int n1, int n2) Οι συναρτήσεις μπορούν να θεωρηθούν ως μεταβλητές για τις οποίες το περιεχόμενό τους ερμηνεύεται από την περιγραφή που τους δίνει ο προγραμματιστής. Οτύποςvoid χρησιμοποιείται για συναρτήσεις που δεν επιστρέφουν κάποια τιμή, όπως για παράδειγμα η printf, puts κλπ! ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 2

Εμβέλεια μεταβλητών και συνάρτησης Η εμβέλεια των μεταβλητών, οι περιοχές του προγράμματος δηλαδή στις οποίες είναι ενεργές, εξαρτάται από το είδος τους. Διακρίνονται αρχικά σε καθολικές, τοπικές και στατικές μεταβλητές. Οι καθολικές μεταβλητές, όπως είναι φυσικό ισχύουν και είναι ενεργές σε όλη την έκταση και τα σημεία του προγράμματος. Πράγμα που σημαίνει ότι το περιεχόμενό τους μπορεί να τροποποιηθεί παντού. Αντίθετα οι τοπικές μεταβλητές, όπως είναι φυσικό, περιορίζονται στα όρια μιας συνάρτησης ή ακόμα και ενός μπλοκ εντολών, δηλαδή μεταξύ { }. Οι στατικές μεταβλητές με τη σειρά τους είναι τοπικές μεταβλητές με ένα ιδιαίτερο χαρακτηριστικό, ότι δηλαδή διατηρούν και θυμούνται την προηγούμενή τους τιμή. Στις συναρτήσεις δεν υπάρχει περιορισμός εμβέλειας καθόσον ορίζονται έξω από κάθε μπλοκ. Αυτό όμως σημαίνει ότι είναι αδύνατο να υπάρχουν συναρτήσεις με το ίδιο όνομα. Επίσης σημαίνει ότι μπορεί ή ίδια η συνάρτηση να καλεί τον εαυτό της, αναδρομή. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 3

Παράδειγμα Ενδιαφέρον παράδειγμα συνάρτησης που θα μελετήσουμε και στη συνέχεια αποτελεί το παραγοντικό. Ησυνάρτησηείναιπολύχρήσιμη στα μαθηματικά αλλά παρουσιάζει και προγραμματιστικό ενδιαφέρον. Το παραγοντικό συμβολίζεται με n! και σημαίνει να πολλαπλασιαστούν οι ακέραιοι από το 1 μέχρι τον ακέραιο n. Δηλαδή 5! σημαίνει 1 2 3 4 5=120 #include <stdio.h> int n, factorial(int number); int main() { printf("δωσε ΤΟΝ ΑΚΕΡΑΙΟ ΑΡΙΘΜΟ :"); scanf("%10d", &n); printf("\το ΠΑΡΑΓΟΝΤΙΚΟ ΤΟΥ %d ΕΊΝΑΙ %d", n, factorial(n)); return (0);} int factorial(int number) {int i, product; product=1; for(i=1; i<=number; i++){ product *=i;} ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 4 return (product);} Στο διπλανό πρόγραμμα βλέπουμε το πρωτότυπο της συνάρτησης την ανάπτυξή της και την επιστροφή της τιμής της. Επίσης μπορείτε να παρακολουθήσετε τα σημεία στα οποία ορίζονται μεταβλητές. Μπορείτε να δείτε μεταβλητές που ορίζονται έξω από αγκύλες όπως n (καθολικές) και μέσα από τις αγκύλες όπως product (τοπικές)

Αναδρομή Πολύ σπουδαίο χαρακτηριστικό της γλώσσας προγραμματισμού C είναι η δυνατότητα της αναδρομής, δηλαδή μια συνάρτηση να μπορεί να καλεί τον εαυτό της. Για παράδειγμα μπορούμε να δούμε το προηγούμενο πρόγραμμα τροποποιώντας τον υπολογισμό του παραγοντικού με αναδρομικό τρόπο. #include <stdio.h> int n, factorial(int number); int main() { printf("δωσε ΤΟΝ ΑΚΕΡΑΙΟ ΑΡΙΘΜΟ :"); scanf("%10d", &n); printf("\το ΠΑΡΑΓΟΝΤΙΚΟ ΤΟΥ %d ΕΙΝΑΙ %d", n, factorial(n)); return (0); } int factorial(int number) { int product; if(number==1) return 1; product=number*factorial(number-1); return (product);} Η διαφορά σε σχέση με το προηγούμενο είναι η λειτουργία της συνάρτησης factorial. Εδώ λειτουργεί με αναδρομικό τρόπο και μάλιστα πολλαπλασιάζει από τον ζητούμενο αριθμό κατεβαίνοντας μέχρι την 1. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 5

Στατική extern - register Εκτός από τις καθολικές και τοπικές μεταβλητές έχουμε και τις τύπου register και extern. Ως μεταβλητή τύπου register δηλώνεται μια μεταβλητή που καλείται και χρησιμοποιείται πολύ συχνά. Βέβαια η χρήση της είναι περιορισμένη γιατί οι διαθέσιμοι καταχωρητές είναι περιορισμένοι. Μια μεταβλητή δεν μπορεί να χρησιμοποιηθεί ως register αυτόματα μεταφέρεται στον κλασικό της τύπο. register int i; Ως extern ορίζεται μια μεταβλητή ή συνάρτηση που υπάρχει συνήθως σε άλλο αρχείο, όχι στον συγκεκριμένο κώδικα, και ο συνδέτης του προγράμματος αναλαμβάνει να κάνει τη σωστή συσχέτιση κάθε φορά. #include <stdio.h> int n, funct(int number); int main() { for (n=1; n<5; n++) { printf ("ΤΟ ΑΠΟΤΕΛΕΣΜΑ %d ΕΙΝΑΙ %d\n", n, funct(n)); } return (0); } int funct(int number) { static int product=1; product=product*number; return (product); } ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 6