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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Transcript:

ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy

Κεφάλαιο 9 Συναρτήσεις Μέρος II

Θέματα ιάλεξης Μη- ομημένος Προγραμματισμός ομημένος Προγραμματισμός Σχεδιασμός Top-down Συναρτήσεις Συνάρτηση main() Συναρτήσεις Βιβλιοθήκης Συναρτήσεις ρή Χρήστη ομημένος Προγραμματισμός με Συναρτήσεις Χρήστη Παραδείγματα ομημένου Προγραμματισμού

Ανασκόπηση ομής Προγράμματος με Συναρτήσεις #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 );

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

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

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

Β) Συναρτήσεις με Μία Παράμετρο χωρίς τιμή εξόδου void printnumber(int t 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-9 float compute_area(float a, float b){ float area; Επιστρέφει την τιμή της area area = a * b; που είναι τύπου float return area; // Μπορούσε απλούστερα να γράφει σαν: float compute_area(float a, float b) { return a * b;

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

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

Παράδειγμα Υπολογισμού Μέσης Τιμής υο Ακεραίων #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;

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

Είδη Μεταβλητών και Εμβέλεια #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

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

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

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

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

Βιβλιοθήκη 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

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

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

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

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

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

9 ου Κεφάλαιο Τέλος Μέρους ΙI