Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)"

Transcript

1 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 2η

2 2 Ιστοσελίδα του µαθήµατος Θα τοποθετούνται οι διαφάνειες του επόµενου µαθήµατος Επικοινωνία:

3 3 Περιεχόµενα Τα Βασικά των Συναρτήσεων Παράµετροι και Υπερφόρτωση

4 4 Στόχοι εκµάθησης Προκαθορισµένες συναρτήσεις Κάποιες επιστρέφουν τιµές και άλλες όχι Συναρτήσεις ορισµένες από τον προγραµµατιστή Ορισµός, ήλωση, Κλήση Αναδροµικές συναρτήσεις Κανόνες εµβέλειας Τοπικές µεταβλητές Καθολικές σταθερές και καθολικές µεταβλητές Blocks, φωλιασµένες εµβέλειες

5 5 Εισαγωγή στις συναρτήσεις Τα δοµικά blocks των προγραµµάτων Συναφής ορολογία σε άλλες γλώσσες: Procedures, subprograms, methods Στη C++: functions I-P-O Input Process Output Βασικά υπο-κοµµάτια σε κάθε πρόγραµµα Χρήση των συναρτήσεων για τα κοµµάτια αυτά

6 6 Προκαθορισµένες συναρτήσεις Οι βιβλιοθήκες περιέχουν πληθώρα συναρτήσεων για χρήση! ύο τύποι: Εκείνες που επιστρέφουν τιµή Εκείνες που δεν επιστρέφουν τιµή (void) Πρέπει να κάνουµε "#include" την κατάλληλη βιβλιοθήκη π.χ., <cmath>, <cstdlib> (Αρχικές "C" βιβλιοθήκες) <iostream> (για την cout, cin)

7 7 Προκαθορισµένες συναρτήσεις Οι µαθηµατικές συναρτήσεις Βρίσκονται στην βιβλιοθήκη <cmath.h> Οι περισσότερες επιστρέφουν κάποια τιµή (την απάντηση ) Π.χ., : theroot = sqrt(9.0); Συνιστώσες: sqrt = όνοµα της συνάρτησης βιβλιοθήκης theroot = µεταβλητή για ανάθεση της απάντησης 9.0 = όρισµα ή αρχική είσοδος της συνάρτησης Σε I-P-O: I = 9.0 P = υπολόγισε την τετραγωνική ρίζα O = 3, επιστρέφεται και ανατίθεται στη µεταβλητή theroot

8 8 Η Κλήση Συνάρτησης Ξανά στην ανάθεση: theroot = sqrt(9.0); Η έκφραση "sqrt(9.0)" είναι γνωστή ως κλήση συνάρτησης (function call), ή ενεργοποίηση συνάρτησης (function invocation) Το όρισµα σε µια κλήση συνάρτησης (9.0) µπορεί να είναι literal, µια µεταβλητή (variable), ή µια έκφραση (expression) Η κλήση από µόνη της µπορεί να είναι µέρος µιας έκφρασης: bonus = sqrt(sales)/10; Μια κλήση συνάρτησης επιτρέπεται οπουδήποτε είναι έγκυρο να χρησιµοποιούµε µια έκφραση του τύπου που επιστρέφεται από τη συνάρτηση

9 9 Ένα µεγάλο παράδειγµα (1/2)

10 10 Ένα µεγάλο παράδειγµα (2/2)

11 11 Άλλες προκαθορισµένες συναρτήσεις #include <cstdlib> Η βιβλιοθήκη περιέχει συναρτήσεις όπως: abs() labs() *fabs() // Επιστέφει την απόλυτη τιµή ενός int // Επιστέφει την απόλυτη τιµή ενός long int // Επιστέφει την απόλυτη τιµή ενός float Στην πραγµατικότητα η *fabs() είναι στη βιβλιοθήκη <cmath>! Μπορεί να προκαλέσει σύγχυση Θυµηθείτε: οι βιβλιοθήκες προστέθηκαν µετά τη γέννηση της C++, σε διαδοχικά στάδια Αναφερόµαστε πάντα σε appendices/manuals για λεπτοµέρειες

12 12 Μια ακόµη µαθηµατική συνάρτηση pow(x, y) Επιστρέφει το x υψωµένο στη δύναµη y: double result, x = 3.0, y = 2.0; result = pow(x, y); cout << result; Το αποτέλεσµα είναι 9.0 αφού = 9.0 Να σηµειωθεί ότι αυτή η συνάρτηση δέχεται δυο ορίσµατα Μια συνάρτηση µπορεί να δέχεται οποιοδήποτε αριθµό ορισµάτων οποιουδήποτε τύπου

13 13 Άλλες µαθηµατικές συναρτήσεις (1/2)

14 14 Άλλες µαθηµατικές συναρτήσεις (2/2)

15 15 Προκαθορισµένες Void Συναρτήσεις εν επιστρέφουν τιµή Εκτελούν µια λειτουργία, δεν στέλνουν απάντηση Όταν καλούνται, αποτελούν µια δήλωση από µόνες τους exit(1); // εν επιστρέφει τιµή, άρα δεν κάνουµε ανάθεση Αυτή η κλήση τερµατίζει το πρόγραµµα Οι void functions µπορεί να δέχονται ορίσµατα Οι υπόλοιπες πτυχές όπως και για τις συναρτήσεις που επιστρέφουν µια τιµή

16 16 Γεννήτρια Ψευδο-Τυχαίων Αριθµών Επιστρέφει τυχαία επιλεγµένο αριθµό Χρησιµοποιείται για προσοµοιώσεις, παίγνια rand() εν δέχεται ορίσµατα Επιστρέφει τιµή µεταξύ 0 & RAND_MAX Κλιµάκωση Συµπίεση τυχαίων αριθµών σε µικρότερη ακτίνα rand() % 6 Επιστρέφει τυχαία τιµή µεταξύ 0 & 5 Μετατόπιση rand() % Μετατοπίζει την ακτίνα µεταξύ 1 & 6 (π.χ., ρίψη ζαριών)

17 17 Σπόρος Ψευδο-Τυχαίων Αριθµών Ψευδο-τυχαίοι αριθµοί Κλήσεις στη rand() παράγουν δεδοµένη ακολουθία τυχαίων αριθµών Χρήση του seed για να αλλάξουµε την ακολουθία srand(seed_value); void function έχεται ένα όρισµα, το "seed" Μπορούµε να χρησιµοποιήσουµε οποιοδήποτε seed, περιλαµβανοµένου και του system time: srand(time(0)); Η time() επιστρέφει το system time ως αριθµητική τιµή Η βιβλιοθήκη <time> περιέχει τις συναρτήσεις time()

18 18 Παραδείγµατα τυχαίων αριθµών Τυχαίος double µεταξύ 0.0 & 1.0: (RAND_MAX rand())/static_cast<double>(rand_max) Type cast χρησιµοποιείται για να εξαναγκάσει διαίρεση double-precision Τυχαίος int µεταξύ 1 & 6: rand() % % είναι τελεστής υπολοίπου (remainder) Τυχαίος int µεταξύ 10 & 20: rand() %

19 19 Συναρτήσεις ορισµένες από χρήστη Χρειάζεται να γράφουµε τις δικές µας συναρτήσεις! οµικά blocks των προγραµµάτων ιαίρει & Βασίλευε (Divide & Conquer) Αναγνωσιµότητα Επαναχρησιµοποίηση (Re-use) Ο ορισµός µπορεί να είναι είτε: Στο ίδιο αρχείο µε τη main() Σε διαφορετικό αρχείο, ώστε να µπορούν και άλλοι να τη χρησιµοποιήσουν

20 20 Συνιστώσες της χρήσης συναρτήσεων 3 Βήµατα για τη χρήση συναρτήσεων: ήλωση/πρωτότυπο (Declaration/prototype) Συνάρτησης Πληροφορία για τον µεταγλωττιστή (compiler) Έγκυρη ερµηνεία κλήσεων Ορισµός (Definition) Συνάρτησης Actual implementation/code for what function does Κλήση (Call) Συνάρτησης Transfer control to function

21 21 ήλωση συνάρτησης Ονοµάζεται επίσης πρωτότυπο συνάρτησης Μια πληροφοριακή δήλωση για τον compiler Τον ενηµερώνει πώς να ερµηνεύσει τις κλήσεις Σύνταξη: <return_type> FnName(<formal-parameter-list>); Παράδειγµα: double totalcost(int numberparameter, double priceparameter); Τοποθετείται πριν από οποιαδήποτε κλήση Πριν από τη main() στον καθολικό χώρο

22 22 Ορισµός συνάρτησης Υλοποίηση της συνάρτησης Όπως ακριβώς και η υλοποίηση της συνάρτησης main() Παράδειγµα: double totalcost(int numberparameter, double priceparameter) { const double TAXRATE = 0.05; double subtotal; subtotal = priceparameter * numberparameter; return (subtotal + subtotal * TAXRATE); } Παρατηρείστε το περιθώριο

23 Τοποθέτηση του ορισµού συνάρτησης 23 Μετά τη συνάρτηση main() ΟΧΙ µέσα στη συνάρτηση main()! Οι συναρτήσεις είναι ισότιµες ; καµία συνάρτηση δεν είναι ποτέ µέρος κάποιας άλλης Τυπικές παράµετροι στον ορισµό "Placeholders" για τα δεδοµένα που αποστέλλονται Variable name χρησιµοποιείται για να αναφέρεται στα δεδοµένα του ορισµού ήλωση return Στέλνει δεδοµένα πίσω στη συνάρτηση που την κάλεσε

24 24 Κλήση συνάρτησης Όπως και η κλήση των προκαθορισµένων συναρτήσεων bill = totalcost(number, price); Θυµηθείτε: η totalcost επιστρέφει τιµή double Ανατίθεται στη µεταβλητή µε όνοµα "bill" Τα ορίσµατα: number, price Θυµηθείτε: Τα ορίσµατα µπορεί να είναι literals, µεταβλητές, εκφράσεις, ή συνδυασµός τους Στην κλήση συνάρτησης, τα ορίσµατα συχνά αποκαλούνται πραγµατικά ορίσµατα ( actual arguments ) Επειδή περιέχουν τα πραγµατικά δεδοµένα που στέλνονται

25 25 Παράδειγµασυνάρτησης (1/2)

26 26 Παράδειγµασυνάρτησης (1/2)

27 27 Εναλλακτική δήλωση συνάρτησης Θυµηθείτε: Η δήλωση συνάρτησης είναι απλώς πληροφοριακή για τον compiler Ο compiler χρειάζεται απλώς να γνωρίζει: Τύπος Επιστροφής Όνοµα Συνάρτησης Λίστα Παραµέτρων Οι τυπικοί παράµετροι δεν χρειάζονται: double totalcost(int, double); Still "should" put in formal parameter names Improves readability

28 28 Παράµετρος vs. Όρισµα Οι όροι συχνά χρησιµοποιούνται εναλλάξιµα Τυπικοί παράµετροι/ορίσµατα Στη δήλωση συνάρτησης Στον header της δήλωσης συνάρτησης Πραγµατικοί παράµετροι/ορίσµατα Στην κλήση συνάρτησης Τεχνικά, η παράµετρος είναι το τυπικό κοµµάτι ενώ το όρισµα είναι το πραγµατικό κοµµάτι

29 29 Κλήση συνάρτησης από συνάρτηση Ήδη το έχουµε κάνει αυτό! Η main() ΕΊΝΑΙ µια συνάρτηση! Μόνη απαίτηση: Η δήλωση της συνάρτησης να προηγείται Ο ορισµός της συνάρτησης να υπάρχει κάπου αλλού Μετά τον ορισµό της main() Ή σε διαφορετικό αρχείο Κοινό για συναρτήσεις να καλούν άλλες συναρτήσεις Μια συνάρτηση µπορεί να καλεί τον εαυτό της Αναδροµή

30 30 Αναδροµική κλήση: Παραγοντικό

31 31 Αναδροµική κλήση: Παραγοντικό

32 32 Συναρτήσεις µε τύπο Boolean Ο τύπος επιστροφής µπορεί να είναι οποιοσδήποτε ήλωση συνάρτησης: bool appropriate(int rate); Ορισµός συνάρτησης: bool appropriate (int rate) { return (((rate>=10)&&(rate<20)) (rate==0); } Επιστρέφει "true" ή "false" Κλήση συνάρτησης, για κάποια άλλη συνάρτηση: if( appropriate(entered_rate) ) cout << "Rate is valid\n";

33 33 ήλωση συναρτήσεων void Παρόµοια µε τις συναρτήσεις που επιστρέφουν τιµή Ο τύπος επιστροφής καθορίζεται ως "void" Παράδειγµα: ήλωση συνάρτησης: void showresults(double fdegrees, double cdegrees); Ο τύπος επιστροφής είναι "void" εν επιστρέφεται κάτι

34 34 Ορισµός συναρτήσεων void Ορισµός συνάρτησης: void showresults(double fdegrees, double cdegrees) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(1); cout << fdegrees << " degrees fahrenheit equals \n" << cdegrees << " degrees celsius.\n"; } Σηµείωση: δεν υπάρχει δήλωση return Είναι προαιρετική για τις συναρτήσεις void

35 35 Κλήση συναρτήσεων void Όµοια όπως και η κλήση προκαθορισµένων void συναρτήσεων Κλήση από κάποια άλλη συνάρτηση, π.χ., main(): showresults(degreesf, degreesc); showresults(32.5, 0.3); εν υπάρχει ανάθεση, αφού δεν επιστρέφεται τιµή Πραγµατικά ορίσµατα (degreesf, degreesc) Περνώνται στη συνάρτηση Η συνάρτηση καλείται να εκτελέσει τη λειτουργία της µε τα δεδοµένα που δέχεται ως ορίσµατα

36 36 Σχόλια για τη δήλωση return Μεταφέρει τον έλεγχο πίσω στην καλούσα συνάρτηση Για τύπο επιστροφής διαφορετικό από void, ΠΡΕΠΕΙ να υπάρχει η δήλωση return Τυπικά, η τελευταία δήλωση σε έναν ορισµό συνάρτησης είναι η return Η δήλωση return είναι προαιρετική για συναρτήσεις void Το τελευταίο } που κλείνει, ουσιαστικά επιστρέφει τον έλεγχο από µια void συνάρτηση στην καλούσα συνάρτηση

37 37 Προσυνθήκες & Μετασυνθήκες Όµοια µε τη συζήτηση για "I-P-O" Σχόλια στη δήλωση συνάρτησης: void showinterest(double balance, double rate); //Precondition: balance is nonnegative account balance // rate is interest rate as percentage //Postcondition: amount of interest on given balance, // at given rate Συχνά αποκαλούνται Inputs & Outputs

38 Η συνάρτηση main() είναι ξεχωριστή 38 Θυµηθείτε: η main() ΕΙΝΑΙ µια συνάρτηση Είναι ξεχωριστή στο ότι: Μια και µόνο µια συνάρτηση µε αυτό το όνοµα, δηλ., main() θα υπάρχει στο πρόγραµµα Ποιος καλεί τη main()? Το λειτουργικό σύστηµα Η παράδοση απαιτεί η main() να έχει µια return δήλωση Η τιµή επιστρέφεται στον καλούντα Εδώ: στο λειτουργικό σύστηµα Θα πρέπει να επιστρέφει "int" ή "void"

39 39 Κανόνες εµβέλειας Τοπικές µεταβλητές ηλώνονται µέσα σε σώµατα συναρτήσεων ιαθέσιµες µόνο µέσα στη συνάρτηση Επιτρέπεται να υπάρχουν µεταβλητές µε το ίδιο όνοµα µέσα σε διαφορετικές συναρτήσεις Η εµβέλεια είναι τοπική Οι τοπικές µεταβλητές είναι προτιµότερες ιατηρούν καλύτερα τον έλεγχο πάνω στα δεδοµένα Οι συναρτήσεις µπορούν/πρέπει να δηλώνουν οποιαδήποτε τοπικά δεδοµένα χρειάζονται για να εκτελέσουν τη λειτουργία τους

40 40 ιαδικαστική αφαίρεση Απαιτείται να γνωρίζουµε τι κάνει η συνάρτηση και όχι πώς το κάνει! Όπως ένα µαύρο κουτί Συσκευή που γνωρίζουµε πώς να τη χρησιµοποιούµε, αλλά όχι τον τρόπο λειτουργίας της Υλοποίηση συναρτήσεων όπως ένα µαύρο κουτί Ο χρήστης της συνάρτησης χρειάζεται µόνο: δήλωση ΕΝ χρειάζεται τον ορισµό της συνάρτησης Αποκαλείται Information Hiding Κρύβει τις λεπτοµέρειες του πώς η συνάρτηση εκτελεί τη λειτουργία της

41 41 Καθολ. σταθερές & Καθολ. µεταβλητές Όταν δηλώνονται έξω από σώµατα συναρτήσεων Γνωστές σε όλες τις συναρτήσεις στο συγκεκριµένο αρχείο Όταν δηλώνονται µέσα σε σώµατα συναρτήσεων Τοπικές στη συγκεκριµένη συνάρτηση Καθολικές δηλώσεις τυπικές για σταθερές (constants): const double TAXRATE = 0.05; ηλωµένη καθολικά, ώστε όλες οι συναρτήσεις να τη γνωρίζουν Καθολικές µεταβλητές? Πιθανό, αλλά ΣΠΑΝΙΑ ΧΡΗΣΙΜΟΠΟΙΟΜΕΝΟ Επικίνδυνο: δεν υπάρχει έλεγχος στη χρήση τους!

42 42 Blocks ήλωση δεδοµένων µέσα σε σύνθετη δήλωση Αποκαλείται "block" Έχει "block-scope" Σηµείωση: όλοι οι ορισµοί συναρτήσεων είναι blocks! Αυτό παρέχει τοπική εµβέλεια συνάρτησης Loop blocks: for (int ctr=0;ctr<10;ctr++) { sum+=ctr; } Η µεταβλητή ctr έχει εµβέλεια µόνο µέσα στο block του βρόχου

43 43 Φωλιασµένη εµβέλεια Κάποια ονόµατα µεταβλητών δηλωµένα σε πολλά blocks Καθ όλα νόµιµο; Η εµβέλεια είναι "blockscope" εν υπάρχει αµφισηµία Κάθε όνοµα είναι διακριτό µέσα στην εµβέλειά του

44 44 Περίληψη 1 υο είδη συναρτήσεων: Επιστρέφουν-µια-τιµή και συναρτήσεις void Οι συναρτήσεις πρέπει να είναι µαύρα κουτιά Κρύβουν τις λεπτοµέρειες ηλώνουν τα δικά τους τοπικά δεδοµένα Οι δηλώσεις συναρτήσεων πρέπει να είναι αυτόπεριγραφόµενες Παρέχουν προ-& µετα- συνθήκες σε σχόλια Παρέχουν τα πάντα που πρέπει να γνωρίζει αυτός που θα την καλέσει

45 45 Περίληψη 2 Τοπικά δεδοµένα ηλώνονται στον ορισµό συναρτήσεων Καθολικά δεδοµένα ηλώνονται πάνω από τους ορισµούς συναρτήσεων OK για σταθερές, όχι για µεταβλητές Παράµετροι/Ορίσµατα Τυπικά: Στη δήλωση και ορισµό συνάρτησης Placeholder για τα εισερχόµενα δεδοµένα Πραγµατικά: Στην κλήση συνάρτησης Πραγµατικά δεδοµένα περνάνε στη συνάρτηση

46 46 Περιεχόµενα Τα βασικά των συναρτήσεων Παράµετροι και Υπερφόρτωση

47 47 Στόχοι εκµάθησης Παράµετροι Κλήση-µε-τιµή (Call-by-value) Κλήση-µε-αναφορά (Call-by-reference) Μικτή λίστα παραµέτρων Υπερφόρτωση και Εξ Ορισµού ορίσµατα (Overloading και Default Arguments) Παράδειγµα, Κανόνες Ελέγχοντας και Αποσφαλµατώνοντας συναρτήσεις Μακροεντολή assert Stubs και Drivers

48 48 Παράµετροι υο µέθοδοι περάσµατος ορισµάτων ως παράµετροι Κλήση-µε-τιµή (Call-by-value) Περνάει αντίγραφο της τιµής Κλήση-µε-αναφορά (Call-by-reference) Περνάει η διεύθυνση του πραγµατικού ορίσµατος

49 49 Παράµετροι Call-by-Value Περνάει αντίγραφο του πραγµατικού ορίσµατος Θεωρείται τοπική µεταβλητή µέσα στη συνάρτηση Εάν τροποποιηθεί, µόνο το τοπικό αντίγραφο αλλάζει Η συνάρτηση δεν έχει πρόσβαση στο πραγµατικό όρισµα της καλούσας συνάρτησης Αυτή είναι η εξ ορισµού µέθοδος Χρησιµοποιήθηκε σε όλα τα παραδείγµατα µέχρι στιγµής

50 50 Παράδειγµα Call-by-Value (1/3)

51 51 Παράδειγµα Call-by-Value (2/3)

52 52 Παράδειγµα Call-by-Value (3/3)

53 53 Παγίδα Call-by-Value Σύνηθες λάθος: ήλωση της/των παραµέτρων ξανά µέσα στη συνάρτηση: double fee(int hoursworked, int minutesworked) { int quarterhours; int minutesworked // local variable // NO! } Προκαλεί Compiler error "Redefinition error " Τα ορίσµατα-µε-τιµή είναι όπως οι τοπικές µεταβλητές Αλλά δηλώνονται στη συνάρτηση αυτόµατα

54 54 Παράµετροι Call-By-Reference Χρησιµοποιούνται για να παρέχουν πρόσβαση στο πραγµατικό όρισµα της καλούσας συνάρτησης Τα δεδοµένα της καλούσας συνάρτησης µπορεί να τροποποιηθούν από την καλούµενη συνάρτηση! Τυπικά, χρησιµοποιούνται για είσοδο/έξοδο Ανάκτηση δεδοµένων από την καλούσα συνάρτηση Επιστροφή δεδοµένων στην καλούσα συνάρτηση Καθορίζονται µε ampersand, &, µετά τον τύπο τους, στη λίστα των τυπικών παραµέτρων

55 Παράδειγµα Call-By-Reference (1/3) 55

56 Παράδειγµα Call-By-Reference (1/3) 56

57 Παράδειγµα Call-By-Reference (1/3) 57

58 58 Λεπτοµέρειες Call-By-Reference Τι είναι αυτό που περνάει µέσα στη συνάρτηση? Μια αναφορά πίσω στο πραγµατικό όρισµα του καλούντα! Αναφέρεται στη θέση µνήµης του πραγµατικού ορίσµατος Αποκαλείται διεύθυνση, που είναι ένας µοναδικός αριθµός ο οποίος αναφέρεται σε µια διακριτή θέση στη µνήµη

59 59 Παράµετροι Constant Reference Τα ορίσµατα µε αναφορά είναι γενικών επικίνδυνα Τα δεδοµένα του καλούντα µπορεί να τροποποιηθούν Μερικές φορές είναι επιθυµητό, άλλες όχι Για να προστατέψουµε τα δεδοµένα, & να περάσουµε ορίσµατα µε αναφορά: Χρησιµοποιούµε τη δεσµευµένη λέξη const void sendconstref(const int &par1, const int &par2); Κάνει το ορίσµατα "read-only" µέσα στη συνάρτηση εν επιτρέπονται αλλαγές πάνω τους µέσα στη συνάρτηση

60 60 Παράµετροι και Ορίσµατα Πραγµατική έννοια: Τυπικοί παράµετροι Στη δήλωση και ορισµό συνάρτησης Ορίσµατα Γεµίζουν µια τυπική παράµετρο Στην κλήση συνάρτησης (λίστα ορισµάτων) Call-by-value & Call-by-reference Απλά ο µηχανισµός που χρησιµοποιείται στη διαδικασία

61 61 Μικτή λίστα παραµέτρων Συνδυασµός µηχανισµών περάσµατος παραµέτρων Μπορεί να περιέχει παραµέτρους pass-by-value και pass-by-reference Η σειρά των ορισµάτων στη λίστα είναι σηµαντική: void mixedcall(int & par1, int par2, double & par3); Κλήση συνάρτησης: mixedcall(arg1, arg2, arg3); Το arg1 πρέπει να είναι int, περνάει µε αναφορά Το arg2 πρέπει να είναι int, περνάει µε τιµή Το arg3 πρέπει να είναι double, περνάει µε αναφορά

62 62 Επιλογή ονοµάτων τυπικών παραµέτρων Ίδιος κανόνας που ισχύει για το όνοµα κάθε identifier: Ονόµατα µε νόηµα! Συναρτήσεις ως αυτό-περιεχόµενες δοµές Σχεδιάζονται χωριστά από το υπόλοιπο πρόγραµµα Ανατίθονται σε οµάδες προγραµµατιστών Όλοι πρέπει να καταλαβαίνουν την ορθή χρήση της συνάρτησης OK, εάν τα ονόµατα των τυπικών παραµέτρων είναι τα ίδια µε τα ονόµατα των ορισµάτων Επιλέξτε τα ονόµατα των συναρτήσεων µε βάση τους ίδιους κανόνες

63 63 Υπερφόρτωση (Overloading) Ίδιο όνοµα συνάρτησης ιαφορετικές λίστες παραµέτρων υο διαφορετικοί ορισµοί των συναρτήσεων Υπογραφή της συνάρτησης Όνοµα της συνάρτησης & λίστα παραµέτρων Πρέπει να είναι µοναδικά για κάθε ορισµό συνάρτησης Επιτρέπει την ίδια λειτουργία πάνω σε διαφορετικά δεδοµένα

64 64 Παράδειγµα Overloading: Average Η συνάρτηση υπολογίζει το µέσο όρο 2 αριθµών: double average(double n1, double n2) { return ((n1 + n2) / 2.0); } Τώρα υπολογίζει το µέσο όρο 3 αριθµών : double average(double n1, double n2, double n3) { return ((n1 + n2 + n3) / 3.0); } Ίδιο όνοµα, δυο συναρτήσεις

65 65 Overloaded Average() (συνέχεια) Ποια συνάρτηση καλείται? Εξαρτάται από την κλήση: avg = average(5.2, 6.7); Καλεί την "two-parameter average()" avg = average(6.5, 8.5, 4.2); Καλεί την "three-parameter average()" Ο compiler ξεδιαλύνει την κλήση µε βάση την υπογραφή της κλήσης συνάρτησης Ταιριάζει την κλήση µε την κατάλληλη συνάρτηση Κάθε µια θεωρείται διαφορετική συνάρτηση

66 66 Παγίδα Overloading Να κάνετε overload µόνο συναρτήσεις µε την ίδια λειτουργία Μια mpg() συνάρτηση πρέπει πάντα να εκτελεί την ίδια λειτουργία, σε όλες τις overloads ιαφορετικά, απρόβλεπτα αποτελέσµατα C++ function call ανάλυση: 1 st : ψάχνει για την ίδια υπογραφή 2 nd : ψάχνει για συµβατή υπογραφή

67 67 Ανάλυση Overloading 1 st : Ακριβές ταίριασµα Ψάχνει για την ίδια υπογραφή Όπου δεν απαιτείται µετατροπή ορίσµατος 2 nd : Συµβατό ταίριασµα Ψάχνει για συµβατή υπογραφή, όπου αυτόµατη µετατροπή τύπου είναι εφικτή: 1 st µε promotion (π.χ., int double) Καµία απώλεια δεδοµένων 2 nd µε demotion (π.χ., double int) Πιθανή απώλεια δεδοµένων

68 68 Παράδειγµα ανάλυσης Overloading Έστωσαν οι παρακάτω συναρτήσεις: 1. void f(int n, double m); 2. void f(double n, int m); 3. void f(int n, int m); Οι κλήσεις: f(98, 99); Calls #3 f(5.3, 4); Calls #2 f(4.3, 5.2); Calls??? Αποφύγετε overloading που προκαλεί σύγχυση

69 69 Αυτόµ. Μετατρ. Τύπου & Overloading Οι αριθµητικές τυπικές παράµετροι συνήθως γίνονται τύπου "double" Επιτρέπει για οποιοδήποτε αριθµητικό τύπο Οποιοδήποτε κατώτερο δεδοµένο αυτόµατα προάγεται int double float double char double *περισσότερα σε λίγο! Αποφεύγει overloading για διαφορετικούς αριθµητικούς τύπους

70 Παράδειγµα Αυτόµ. Μετατρ. Τύπου & 70 Overloading double mpg(double miles, double gallons) { return (miles/gallons); } Παράδειγµα κλήσεως συναρτήσεων: mpgcomputed = mpg(5, 20); Μετατρέπει τα 5 & 20 σε doubles, και κατόπιν τα περνάει στη συνάρτηση mpgcomputed = mpg(5.8, 20.2); εν χρειάζεται µετατροπή mpgcomputed = mpg(5, 2.4); Μετατρέπει το 5 σε 5.0, και κατόπιν περνάει τις τιµές στη συνάρτηση

71 71 Εξ Ορισµού Ορίσµατα Επιτρέπει παράλειψη κάποιων ορισµάτων Καθορίζονται στη δήλωση/πρωτότυπο της συνάρτησης void showvolume(int length, int width=1, int height=1); Τα τελευταία 2 ορίσµατα είναι εξ ορισµού Πιθανές κλήσεις: showvolume(2, 4, 6); //All arguments supplied showvolume(3, 5); //height defaulted to 1 showvolume(7); //width & height defaulted to 1

72 72 Παρ. Εξ Ορισµού Ορισµάτων (1/2)

73 73 Παρ. Εξ Ορισµού Ορισµάτων (2/2)

74 74 Έλεγχος & Αποσφαλµάτωση Συναρ. Πολλές µέθοδοι: Πολλές δηλώσεις cout Σε κλήσεις και ορισµούς Χρησιµοποιούνται για να ιχνηλατήσουν την εκτέλεση Ο Αποσφαλµατωτής (Debugger) του compiler Environment-dependent assert Macro Πρώιµος τερµατισµός όπου χρειάζεται Stubs και drivers Αυξητική ανάπτυξη

75 75 Η µακροεντολή assert Assertion: µια δήλωση true ή false Χρησιµοποιείται για να καταγράφει και να ελέγχει την ορθότητα Preconditions & Postconditions Συνήθης χρήση της assert: επιβεβαίωση της εγκυρότητάς τους Σύνταξη: assert(<assert_condition>); εν επιστρέφει τιµή Υπολογίζει την assert_condition Τερµατίζει εάν false, συνεχίζει εάν true Προκαθορισµένη στη βιβλιοθήκη <cassert> Οι µακροεντολές χρησιµοποιούνται παρόµοια µε τις συναρτήσεις

76 76 Παράδειγµα µακροεντολής assert Έστω η δήλωση συνάρτησης: void computecoin(int coinvalue, int& number, int& amountleft); //Precondition: 0<coinValue<100, 0<=amountLeft<100 //Postcondition: number set to max. number of coins Έλεγχος precondition: assert ((0 < currentcoin) && (currentcoin < 100) && (0 <= currentamountleft) && (currentamountleft < 100)); Εάν η If precondition δεν ικανοποιείται η condition είναι false τερµατίζεται η εκτέλεση του προγράµµατος!

77 77 Παράδειγµα µακροεντολής assert Χρήσιµη στο debugging Σταµατά την εκτέλεση ώστε να εξερευνηθεί το πρόβληµα

78 78 assert On/Off Ο Προεπεξεργαστής (Preprocessor) παρέχει τρόπους #define NDEBUG #include <cassert> Προσθέστε τη γραµµή "#define" πριν τη γραµµή #include Απενεργοποιεί τις assertions για όλη την έκταση του προγράµµατος Αφαιρέστε τη γραµµή "#define" (ή σχολιάστε τη) Ενεργοποιεί τις assertions

79 79 Stubs και Drivers Μεταγλώττιση σε χωριστές µονάδες Κάθε συνάρτηση σχεδιάζεται, γράφεται, ελέγχεται χωριστά Εγγυάται εγκυρότητα της κάθε µονάδας ιαίρει & Βασίλευε Μετατρέπει µια µεγάλη εργασία σε µικρότερες, εύκολα διαχερίσιµες εργασίες Πώς όµως θα κάνουµε έλεγχο ανεξάρτητα? Προγράµµατα Οδηγοί (Driver)

80 80 Παράδειγµα προγράµ. Driver (1/3)

81 81 Παράδειγµα προγράµ. Driver (2/3)

82 82 Παράδειγµα προγράµ. Driver (3/3)

83 83 Stubs Αυξητική ανάπτυξη Γράφουµε πρώτα τις συναρτήσεις που δίνουν τη µεγάλη εικόνα ( big-picture ) Τελευταίες γράφουµε τις χαµηλού επιπέδου συναρτήσεις "Stub-out" τις συναρτήσεις µέχρι την υλοποίηση Παράδειγµα: double unitprice(int diameter, double price) { return (9.99); // not valid, but noticeably // a "temporary" value } Η κλήση στη συνάρτηση εκτελείται κανονικά

84 84 Θεµελιώδης κανόνας ελέγχου Γράφουµε σωστά προγράµµατα Ελαχιστοποιούµε τα λάθη, "bugs" Επιβεβαιώνουµε την εγκυρότητα των δεδοµένων Ελέγχουµε κάθε συνάρτηση σε ένα πρόγραµµα, όπου κάθε άλλη συνάρτηση έχει ήδη ελεγχθεί και αποσφαλµατωθεί Αποφεύγουµε τη µετάδοση των λαθών ( errorcascading ) & αντικρουόµενα αποτελέσµατα

85 85 Περίληψη 1 Οι τυπικές παράµετροι είναι placeholders, γεµίζουν µε τα πραγµατικά ορίσµατα στην κλήση της συνάρτησης Οι παράµετροι Call-by-value είναι τοπικά αντίγραφα στο σώµα της καλούµενης συνάρτησης Το πραγµατικό τους όρισµα δεν µπορεί να τροποποιηθεί Η τεχνική Call-by-reference περνάει τη διεύθυνση µνήµης ως πραγµατικό όρισµα Τα πραγµατικά ορίσµατα µπορούν να τροποποιηθούν Τα ορίσµατά τους ΠΡΕΠΕΙ να είναι µεταβλητές και όχι σταθερές

86 86 Περίληψη 2 Πολλαπλοί ορισµοί για το ίδιο όνοµα συνάρτησης είναι δυνατό: η τεχνική αυτή ονοµάζεται υπερφόρτωση (overloading) Τα εξ ορισµού ορίσµατα επιτρέπουν σε κλήσεις συναρτήσεων να παραλείπουν µερικά ή όλα τα ορίσµατα στη λίστα ορισµάτων Εάν δεν καθορίζουµε ορίσµατα ανατίθενται οι εξ ορισµού τιµές Η µακροεντολή assert εκκινεί τον τερµατισµό του προγράµµατος εάν αποτύχουν οι assertions Οι συναρτήσεις πρέπει να ελέγχονται ανεξάρτητα Ως ξεχωριστές µονάδες µεταγλώττισης, µε προγράµµατα οδηγούς (drivers)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 2η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα τοποθετούνται

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

Διαβάστε περισσότερα

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

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29. 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29. 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29 5. ΣΥΝΑΡΤΗΣΕΙΣ 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή Η συνάρτηση είναι void, δεν επιστρέφει κάποια τιµή. //Oρισµός συνάρτησης χωρίς παραµέτρους // 12.

Διαβάστε περισσότερα

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

Προγραμματισμό για ΗΜΥ ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 5 Συναρτήσεις Θέματα ιάλεξης Χρησιμότητα Συναρτήσεων Σύνταξη

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

Διαβάστε περισσότερα

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D.

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. 1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 4η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall06.htm

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού C++

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Συναρτήσεις - Μεταβλητές ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Συναρτήσεις / Μεταβλητές

Διαβάστε περισσότερα

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language)

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) 1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall06.htm

Διαβάστε περισσότερα

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;.. Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 6η: Ερωτήσεις 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

Διαβάστε περισσότερα

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++ Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις Προγραμματισμός Η/Y Διάλεξη 6 η : Συναρτήσεις Η C είναι συναρτησιακή γλώσσα προγραμματισμού Ως τώρα όλα τα προγράμματα που είδαμε ήταν γραμμένα μέσα στην main Τι θα κάνουμε όμως αν Το πρόγραμμα είναι τεράστιο

Διαβάστε περισσότερα

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

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

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων Συναρτήσεις Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων ιεπαφή Συναρτήσεων (Πρωτότυπα Συναρτήσεων function prototypes): εδοµένα εισόδου (παράµετροι parameters): πέρασµα δια τιµής ή µέσω

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Συναρτήσεις και Πίνακες Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

Διαβάστε περισσότερα

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

Διαβάστε περισσότερα

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

Διαβάστε περισσότερα

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 6: Συναρτήσεις Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

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

Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ. είκτες ως Τιµές Εξόδου Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ. int *select (int f (int, int), int *add1, int *add2) { if (f (*add1, *add2)) return add1; else return add2; Η συνάρτηση

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

ΗΥ-150. Πίνακες (Arrays)

ΗΥ-150. Πίνακες (Arrays) ΗΥ-150 Προγραµµατισµός Πίνακες (Arrays) Προγραµµατισµός Εισαγωγικά Έστω ότι θέλουµε να αποθηκεύσουµε 100 ονόµατα φοιτητών και τους βαθµούς τους. Πως θα το κάναµε αυτό µε µεταβλητές; Πως θα µπορούσαµε να

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 9η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 17-1 Εισαγωγή Στις προηγούµενες διαλέξεις µάθαµε πώς να δηλώνουµε, αρχικοποιούµε και να επεξεργαζόµαστε πίνακες. Σήµερα θα µελετήσουµε

Διαβάστε περισσότερα

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch; ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι είναι ; Συναρτήσεις Αυτόνομα τμήματα κώδικα (υποπρογράμματα) που πραγματοποιούν μια καθορισμένη εργασία. Χρήσιμες για περιπτώσεις που ο ίδιος υπολογισμός επαναλαμβάνεται πολλές φορές

Διαβάστε περισσότερα

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

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις Προγραμματισμός Η/Υ Ενότητα 7: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση του ορισμού και της κλήση

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal Δοµή προγράµµατος 1. Δοµή προγράµµατος program όνοµα_προγράµµατος(αρχείο_1, αρχείο_2,...αρχείο_ν); ΕΠΙΚΕΦΑΛΙΔΑ ΒΙΒΛΙΟΘΗΚΕΣ uses όνοµα_βιβλιοθήκης,όνοµα_βιβλιοθήκης;

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα 9: Συναρτήσεις Εμβέλεια Κουκουλέτσος Κώστας Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστικών Συστημάτων

Διαβάστε περισσότερα

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

Διαβάστε περισσότερα

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή Αντίρριο, 05/04/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» To δεύτερο μέρος της εργασίας έχει ως στόχο την ανάπτυξη του συντακτικού αναλυτή με χρήση του bison / byacc. Στο

Διαβάστε περισσότερα

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){

Διαβάστε περισσότερα

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

Διαβάστε περισσότερα

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

Ηβασικήσυνάρτηση προγράμματος main() Ηβασικήσυνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Ησυνάρτησηείναι ένα υποπρόγραμμα που

Διαβάστε περισσότερα

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 10: Συναρτήσεις Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός Συστημάτων MYY502 Προγραμματισμός Συστημάτων Β. Δημακόπουλος dimako@cse.uoi.gr http://www.cse.uoi.gr/~dimako Εργαστήρια Μάλλον (!) ξεκινούν την επόμενη εβδομάδα Εγγραφές στο εργαστήριο 2 βάρδιες, 15:00 17:00 και

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 2: Εντολές/προτάσεις ελέγχου και συναρτήσεις Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

Διαβάστε περισσότερα

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13) Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1 Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα

Βασικά της γλώσσας JAVA

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

Συναρτήσεις. Εισαγωγή Συναρτήσεις Εισαγωγή Η χρήση συναρτήσεων στα προγράμματα της γλώσσας C είναι πολύ σημαντική καθώς μας επιτρέπει τη διάσπαση ενός προβλήματος σε μικρότερα υποπροβλήματα τα οποία μπορούμε να επιλύσουμε πιο

Διαβάστε περισσότερα

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

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

Διαβάστε περισσότερα

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

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

Διαβάστε περισσότερα

Επανάληψη. Εντολές while, for, do-while

Επανάληψη. Εντολές while, for, do-while Επανάληψη Εντολές while, for, do-while Απροσδιόριστη Επανάληψη ή Επανάληψη υπό συνθήκη (while, do-while) Απαριθµητή Επανάληψη (for) Εντολή while while (συνθήκη) εντολή C? ναι όχι S Σηµασιολογία Εάν από

Διαβάστε περισσότερα

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

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2008 ΔΙΔΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙΔΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Παράδοση: Πέμπτη 10 Απριλίου 2008, 24:00 (μεσάνυχτα)

Διαβάστε περισσότερα

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

Διαβάστε περισσότερα

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and alpha Language (1/5) ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language Στην alpha δεν υπάρχει main() συνάρτηση, ο κώδικας ξεκινάει την εκτέλεση από την αρχή του

Διαβάστε περισσότερα

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα