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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

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

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

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

Επεξεργασία Αρχείων Κειµένου

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

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

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

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

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

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

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

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

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

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

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

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

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

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

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

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

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

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

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

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

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

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

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

Προγραµµατιστικές Τεχνικές

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

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

Transcript:

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

Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include <stdio.h> 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης ( ηλώνουν τι επιπλέον συναρτήσεις θα χρησιµοποιήσουµε χωρίς να ορίζουµε πως) 2 main ( ) PrintMessage ( ); (Ζητάµε να εκτελεστεί η συνάρτηση) Κλήση Συνάρτησης 3 void PrintMessage (void) Ορισµός Συνάρτησης (Ορίζουµε ποιες εντολές θέλουµε να εκτελεστούν µε την κλήση) printf ( A message for you:\n\n ); printf ( Have a Nice Day!\n ); 12-2

Συναρτήσεις Σήµερα θα δούµε σε περισσότερο βάθος τις συναρτήσεις. Α) Συναρτήσεις χωρίς Παραµέτρους Β) Συναρτήσεις µε Παραµέτρους Χωρίς Επιστροφή τιµής Με Επιστροφή Τιµής C) Εµβέλεια Μεταβλητών D) Συναρτήσεις Βιβλιοθηκών 12-3

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

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

Β) Συναρτήσεις µε Μία Παράµετρο χωρίς τιµή εξόδου void printnumber(int number) printf( %d mod 3 is %d\n,number, number%3); Τι πρόβληµα υπάρχει µε την πιο κάτω συνάρτηση? void printnumber(int number) int result; result = 5/number; printf( 5/%d = %d\n, number, result ); 12-6

Β) Συναρτήσεις µε τιµή εξόδου Συνάρτηση παίρνει δυο παραµέτρους 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-7

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

τυπικοί παράµετροι #include <stdio.h> float compute_area(float x, float y); float compute_area(float a, float b) 2 return (a * b); πρωτότυπο συνάρτησης ορισµός συνάρτησης πραγµατικοί παράµετροι 3 int main() float length, width; float area; 1 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-9

#include <stdio.h> Β) Παράδειγµα Υπολογισµού Μέσου δυο ακεραίων float AverageTwo (int num1, int num2); main ( ) float average; int num1 = 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-10

C) Εµβέλεια Μεταβλητής (scope) Το τµήµα του προγράµµατος που µπορεί µια µεταβλητή να χρησιµοποιηθεί local (τοπικές): δηλώνονται στην αρχή ενός programming block.. Χρησιµοποιούνται οπουδήποτε µετά τον ορισµό µέσα στο block global (σφαιρικές): AΠΑΓΟΡΕΥΟΝΤΑΙ στο µάθηµα ηλώνονται έξω από συναρτήσεις Χρησιµοποιούνται οπουδήποτε µέσα στο πρόγραµµα 12-11

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

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

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

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

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

D1) Βιβλιοθήκη math.h double sqrt (double x); Επιστρέφει την τετραγωνική ρίζα του x 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 double sin (double x) Ηµίτονο του x (το x είναι σε ακτίνια) Όλες οι µαθηµατικές συναρτήσεις έχουν double ως ορίσµατα, και επιστρέφουν double 12-17

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

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

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

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

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