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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Συναρτήσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

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

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

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

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

Διαδικασιακός Προγραμματισμός

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

ΗΥ-150. Προγραμματισμός

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Οντοκεντρικός Προγραμματισμός

Συναρτήσεις διαχείρισης αλφαριθμητικών

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

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

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ 8/9/2008

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

Περιεχόμενα. Πρόλογος... 21

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

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

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

Οι συναρτήσεις στη γλώσσα C

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

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

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις

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

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

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

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

7. Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου

Προγραμματισμός II. Τυχαίοι αριθμοί Διεπαφές

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

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

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

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 17

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Επανάληψη για τις Τελικές εξετάσεις

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

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

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

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

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

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

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

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

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

Transcript:

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 12. Συναρτήσεις (Μέρος ΙI) Ιωάννης Κατάκης

Σήμερα o Συναρτήσεις χωρίς παραμέτρους o Συναρτήσεις με παραμέτρους Χωρίς επιστροφή τιμής Με επιστροφή τιμής o Εμβέλεια Μεταβλητών o Συναρτήσεις βιβλιοθηκών

A) Συνάρτηση χωρίς παραμέτρους #include <stdio.h> void display_six_stars(void) printf("******\n"); return; Προσοχή Είτε void με return Ή int με return 0 int main(void) display_six_stars(); return 0; 12-3

Β)Συναρτήσεις με μία παράμετρο χωρίς τιμή εξόδου Άσκηση. Γράψετε μια συνάρτηση η οποία παίρνει ως τιμή εισόδου την ακτίνα ενός κύκλου (R), και στην συνέχεια εκτυπώνει το εμβαδόν του κύκλου με τον τύπο εμβαδό=3.14*r 2 Λύση: void display_area(float R) float result; result = 3.14 * R * R; printf( The area is %f square meters\n, result); 12-4

Β) Συναρτήσεις με μία παράμετρο χωρίς τιμή εξόδου void printnumber(int number) printf( %dmod3 is %d\n,number, number%3); 12-5

Β) Συναρτήσεις με τιμή εξόδου float compute_area(float a, float b) float area; area = a * b; return area; Συνάρτηση παίρνει δυο παραµέτρους Επιστρέφει την τιµή της area που είναι τυπου float // Μπορούσε απλούστερα να γράφει: float compute_area(float a, float b) return a * b; 12-6

Β) Σημασία Επιστροφής τιμής εξόδου Τι γίνεται ακριβώς όταν μια συνάρτηση επιστρέψει κάποια τιμή? 1)H τιμή ανατίθεται σε κάποια μεταβλητή 2) Το πρόγραμμα συνεχίζει να εκτελείτε από εκεί και πέρα 3) Αποδεσμεύετε η μνήμη που δεσμεύθηκε όταν έγινε η κλήση της συνάρτησης. Οι μεταβλητές (της συνάρτησης) δεν υφίστανται πλέον Ας δούμε όλη την εικόνα της εκτέλεσης 12-7

τυπικοί παράµετροι 2 #include <stdio.h> float compute_area(float x, float y); float compute_area(float a, float b) return (a * b); int main() float length, width; float area; πρωτότυπο συνάρτησης ορισµός συνάρτησης πραγµατικοί παράµετροι 1 3 printf( Enter length and width: ); scanf( %f%f,&length, &width); area = compute_area(length, width); κλήση συνάρτησης printf( The area of a rectangle with dim %f by %f m is %f sq. m\n, length, width, area); return(0); 12-8

Β) Παράδειγμα #include <stdio.h> float AverageTwo(int num1, int num2); main ( ) float average; intnum1 = 5, num2 = 8; average = AverageTwo(num1, num2); printf( The average of %d and %d is %f\n, num1, num2, average); float AverageTwo(int num1, int num2) float average; average = (num1 + num2) / 2.0; return average; 12-9

C) Εμβέλεια Μεταβλητής (scope) o Το τμήμα του προγράμματος που μπορεί μια μεταβλητή να χρησιμοποιηθεί local (τοπικές) δηλώνονται στην αρχή ενός προγραμματιστικού block.. Χρησιμοποιούνται οπουδήποτε μετά τον ορισμό μέσα στο block global(σφαιρικές) Δε προτείνεται η χρήση τους στο πλαίσιο Δηλώνονται έξω από συναρτήσεις του μαθήματος Χρησιμοποιούνται οπουδήποτε μέσα στο πρόγραμμα 12-10

C) Είδη μεταβλητών και εμβέλεια #include <stdio.h> #define d 5;//ΚΑΘΟΛΙΚΗ ΣΤΑΘΕΡΑ int c=5; // ΚΑΘΟΛΙΚΗ ΜΕΤΑΒΛΗΤΗ(όλες οι συναρτήσεις τη βλέπουν) intsum(intx, inty)// x,yείναι τυπικές παράμετροι intc = 1; // ΤΟΠΙΚΗ ΜΕΤΑΒΛΗΤΗ(μόνο η sum τη βλέπει) return x + y+c; intmain() inta = 5, b=6, c=11; // ΤΟΠΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ (μόνο η main τις βλέπει) printf("%d + %d = %d", a, b, sum(a,b)); return 0; Το πρόγραµµα τυπώνει: 5+6=12 12-11

C) Τοπικές Μεταβλητές: Αλλαγή τιμής μεταβλητής #include <stdio.h> void AddOne(int); main () void AddOne(int num) num++; printf( In AddOne: ); ΛΑΘΟΣ τρόπος προσπάθειας αύξησης του num κατά 1 intnum= 5; AddOne(num); printf( In main: ); printf( num= %d\n, num); printf( num= %d\n, num); To πρόγραμμα εκτυπώνει: In AddOne: num=6 In main: num= 5 12-12

C) Τοπικές Μεταβλητές: Αλλαγή τιμής μεταβλητής #include <stdio.h> int AddOne(int); main () int AddOne(int num) num++; printf( In AddOne: ); ΣΩΣΤΟΣ τρόπος να αυξήσουµε το num κατά 1 intnum= 5; num=addone(num); printf( In main: ); printf( num= %d\n, num); printf( num= %d\n, num); return num; To πρόγραμμα εκτυπώνει: In AddOne: num=6 In main: num= 6 12-13

D) Βιβλιοθήκες -Header Files oπολλές από τις λειτουργίες ενός προγράμματος είναι ήδη ορισμένες σε βιβλιοθήκες oέτσι δεν χρειάζεται να γράφουμε όλη την λειτουργία ενός προγράμματος από την αρχή κάθε φορά oτα header files, περιέχουν πρότυπα συναρτήσεων και δηλώσεις σταθερών και τύπων δεδομένων για τη συγκεκριμένη βιβλιοθήκη 12-14

D) ΚοινάHeader Files header file <stdio.h> <math.h> <stdlib.h> <time.h> <ctype.h> <string.h> Περιέχει πρότυπα συναρτήσεων για: είσοδο/ έξοδο μαθηματικά μετατροπές αριθμών σε κείμενο (και αντίστροφα, ανάθεση μνήμης (memory allocation), τυχαίους αριθμούς, και άλλα. χειρισμός ώρας και ημερομηνίας συναρτήσεις που ελέγχουν χαρακτήρες για κάποιες ιδιότητες και μπορούν να μετατρέψουν μικρά σε κεφαλαία χειρισμός strings 12-15

D1) Βιβλιοθήκηmath.h o double sqrt(double x); Επιστρέφει την τετραγωνική ρίζα του x o double pow(double x, double y) Το x υψώνεται στην δύναμηy pow(3.0, 2.0) is 9.0 pow(8.0, 1.0 / 3) is 2.0 o double sin (double x) Ημίτονο του x (το x είναι σε ακτίνια) o Όλες οι μαθηματικές συναρτήσεις έχουν double ως ορίσματα, και επιστρέφουν double 12-16

D2) Βιβλιοθήκηstdlib.h o void exit (intx); Προκαλεί τερματισμό του προγράμματος o void srand(unsigned intx); Αρχικοποιεί την γεννήτρια τυχαίων αριθμών με ένα ακέραιο π.χ. srand(200); o intrand (void); Επιστρέφει ένα ψευδοτυχαίο ακέραιο μεταξύ 0 και 4294967295 num= rand( ); 12-17

D2) Βιβλιοθήκη stdlib.h: Συνάρτηση rand() o Καθώς η rand( ) επιστρέφειintegers σε ένα συγκεκριμένο εύρος τιμών, πρέπει να επεξεργαστούμε την τιμή που επιστρέφεται για να ταιριάξει στις ανάγκες μας o Αν θέλουμε τυχαίους αριθμούς από0 μέχρι το5 num= rand ( ) % 6 o Αν θέλουμε από το 1 μέχρι το 6 num= 1 + (rand( ) % 6); o Από το 5 μέχρι το 20 num= 5 + (rand ( ) % 16); 12-18

D2) Βιβλιοθήκη stdlib.h: Συνάρτηση rand()& srand() o Η γεννήτρια ψευδοτυχαίων αριθμών, χρειάζεται ένα unsigned int ως είσοδο (seed) o Παρόλο που αυτά που παράγει φαίνονται τυχαίοι αριθμοί, αν ξαναχρησιμοποιήσουμε το ίδιο seed, θα πάρουμε την ίδια ακολουθία τυχαίων αριθμών o Για να πάρουμε διαφορετική ακολουθία τυχαίων αριθμών, πρέπει να δίνουμε διαφορετικό seed 12-19

D2) Βιβλιοθήκη stdlib.h: rand() & srand() #include <stdio.h> #include <stdlib.h> #define SEED 67 main ( ) inti, num; srand(seed); for (i = 0; i < 5; i++) num= rand ( )% 6 ; printf( %d\n, num); Χρησιμοποιώ το 67 ως seed(σπόρο) συνεπώς οι ίδιοι αριθμοί θα παράγονται κάθε φορά που τρέχω το πρόγραμμα Αρχικοποίηση Το πρόγραμμα μας παράγει 5 τυχαίους αριθμούς από το μηδέν έως το πέντε 12-20

D3) Βιβλιοθήκηtime.h oμια χρήσιμη συνάρτηση στη βιβλιοθήκηtime είναι η time( ) o Επιστέφει την ώρα της ημέρας ως δευτερόλεπτα oεφόσον ο αριθμός είναι διαφορετικός κάθε φορά που καλείται, μπορεί να χρησιμοποιηθεί ως seed σε μία γεννήτρια τυχαίων αριθμών oπ.χ. srand(time ( NULL) ); 12-21

Τέλος διάλεξης