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

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

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

Transcript

1 Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 11 η Συναρτήσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου Συναρτήσεις - Εισαγωγή Μία συνάρτηση ή υποπρόγραμμα είναι μία ανεξάρτητη και αυτόνομη ενότητα κώδικα, που γράφεται για να εκτελεί μία ορισμένη εργασία και προαιρετικά επιστρέφει μία τιμή στο πρόγραμμα που την κάλεσε Η συγγραφή προγραμμάτων με χρήση συναρτήσεων που εκτελούν ανεξάρτητες εργασίες ονομάζεται δομημένος προγραμματισμός Το πακέτο εγκατάστασης ενός C μεταγλωττιστή περιλαμβάνει έτοιμες συναρτήσεις που εκτελούν διάφορες εργασίες Παραδείγματα τέτοιων συναρτήσεων είναι οι συναρτήσεις scanf() και printf(), τις οποίες έχουμε ήδη χρησιμοποιήσει για την εισαγωγή και εμφάνιση δεδομένων, αντίστοιχα Οι συναρτήσεις που έχουν συμπεριληφθεί στον μεταγλωττιστή ονομάζονται συναρτήσεις βιβλιοθήκης και ο προγραμματιστής μπορεί να τις χρησιμοποιεί για τους σκοπούς τους προγράμματός του 2 1

2 Ορισμός Συνάρτησης (Πρωτότυπο Συνάρτησης) Πρωτότυπο μίας συνάρτησης ή αλλιώς δήλωση μίας συνάρτησης ονομάζεται η δήλωση των σημαντικών της στοιχείων, δηλαδή του ονόματός της, των παραμέτρων της (ορισμάτων της) και του τύπου της πιθανής επιστρεφόμενης τιμής της συνάρτησης Η γενική περίπτωση δήλωσης μίας συνάρτησης έχει την παρακάτω μορφή: Το όνομα_συνάρτησης πρέπει να είναι μοναδικό μέσα στο πρόγραμμα, δηλαδή να μην υπάρχει άλλη μεταβλητή ή συνάρτηση με το ίδιο όνομα Η δήλωση της συνάρτησης πρέπει να τελειώνει πάντοτε με το ελληνικό ερωτηματικό ; 3 Πού γράφουμε της Δήλωση (Πρωτότυπο) μίας Συνάρτησης??? Η δήλωση μίας συνάρτησης μπορεί να περιέχεται σε ξεχωριστό αρχείο, το οποίο πρέπει να συμπεριληφθεί στο πρόγραμμα με την οδηγία #include Π.χ. οι δηλώσεις των συναρτήσεων printf() και scanf() βρίσκονται στο αρχείο stdio.h το οποίο συμπεριλαμβάνεται στο πρόγραμμα με την οδηγία #include <stdio.h>. Εναλλακτικά, αν η δήλωση μίας συνάρτησης δεν περιέχεται σε ξεχωριστό αρχείο (κάτι που κατά 99% θα συμβεί στα δικά σας προγράμματα), τότε προτείνεται η δήλωση των συναρτήσεων να γίνεται πριν από τη συνάρτηση main() 4 2

3 Επιστροφή Συνάρτησης Ο τύπος_επιστροφής μίας συνάρτησης καθορίζει τον τύπο δεδομένων που επιστρέφει η συνάρτηση στο πρόγραμμα που την κάλεσε Ο τύπος_επιστροφής μπορεί να είναι οποιοσδήποτε τύπος δεδομένων της C, όπως char, int, double, δείκτης, Ο τύπος επιστροφής void χρησιμοποιείται όταν η συνάρτηση δεν επιστρέφει κάποια τιμή 5 Παράμετροι (Ορίσματα) Συνάρτησης Μία συνάρτηση μπορεί προαιρετικά να δέχεται μία λίστα παραμέτρων (ορισμάτων), που χωρίζονται μεταξύ τους με κόμμα (,) Ο τύπος κάθε παραμέτρου (τύπος_παραμ_1, τύπος_παραμ_2,...) μπορεί να είναι μία οποιαδήποτε έγκυρη έκφραση της C, όπως π.χ. μία σταθερά, μία μεταβλητή, μία μαθηματική ή λογική έκφραση ή ακόμη και μία άλλη συνάρτηση με τιμή επιστροφής Το όνομα κάθε παραμέτρου (όνομα_1, όνομα_2,...) μπορεί να είναι οποιοδήποτε έγκυρο όνομα επιλέξει ο προγραμματιστής Εάν η συνάρτηση δεν δέχεται παραμέτρους, τότε η λίστα παραμέτρων δηλώνεται ως void ή με κενές παρενθέσεις () Προτείνεται η χρήση της λέξης void για την πλήρη συμφωνία με το ANSI-C πρότυπο 6 3

4 Παραδείγματα πρωτοτύπων συνάρτησης 7 Παρατηρήσεις Η κύρια συνάρτηση main() ενός προγράμματος στη C είναι και αυτή μία συνάρτηση Η main() καλείται από το λειτουργικό σύστημα όταν αρχίζει η εκτέλεση του προγράμματος και τερματίζεται όταν τελειώνει η εκτέλεση του προγράμματος Η δήλωση int main(), σημαίνει ότι η συνάρτηση main() δεν δέχεται παραμέτρους και επιστρέφει μία ακέραια τιμή (int) Το όνομα μίας συνάρτησης πρέπει να επιλέγεται με τέτοιο τρόπο, ώστε να περιγράφει όσο το δυνατόν καλύτερα τον σκοπό της Π.χ. αν θέλετε να δηλώσετε μία συνάρτηση που να υπολογίζει το άθροισμα κάποιων αριθμών, τότε ένα επιτυχημένο περιγραφικό όνομα θα μπορούσε να είναι το sum ή το athroisma και όχι ένα όνομα όπως function, func, test, foufoutos ή lala 8 4

5 Σώμα Συνάρτησης Το σώμα της συνάρτησης έπεται της επικεφαλίδας της και περιέχει τις εντολές της συνάρτησης ανάμεσα σε άγκιστρα {} Η επικεφαλίδα της συνάρτησης πρέπει να είναι ίδια με τη δήλωση της συνάρτησης, με τη διαφορά ότι δεν μπαίνει το ελληνικό ερωτηματικό στο τέλος της Ο κώδικας μίας συνάρτησης εκτελείται μόνο όταν αυτή κληθεί από κάποιο σημείο του προγράμματός μας Όταν καλείται μία συνάρτηση, η εκτέλεση του κώδικα της συνάρτησης αρχίζει με την πρώτη εντολή του σώματός της και τερματίζεται όταν βρεθεί μία εντολή return ή όταν η εκτέλεση φτάσει στο άγκιστρο κλεισίματος Το σώμα μίας συνάρτησης προτείνεται να εισάγεται μετά το τέλος της συνάρτησης main() 9 Η εντολή return (Ι) Η εντολή return χρησιμοποιείται για τον άμεσο τερματισμό μίας συνάρτησης Αν η εκτέλεση του κώδικα της συνάρτησης φτάσει σε μία εντολή return, τότε η συνάρτηση τερματίζεται αυτομάτως Άρα, αν εκτελεστεί η εντολή return μέσα στη συνάρτηση main(), τότε το πρόγραμμα τερματίζεται άμεσα 10 5

6 Η εντολή return (ΙΙ) Αν η συνάρτηση δεν έχει οριστεί να επιστρέφει κάποια τιμή (δηλ. αν ο επιστρεφόμενος τύπος της είναι void), τότε για να τερματίσουμε άμεσα σε κάποιο σημείο τη συνάρτηση - γράφουμε απλά return; Αν, όμως, η συνάρτηση έχει οριστεί να επιστρέφει κάποια τιμή, τότε η εντολή return πρέπει να ακολουθείται από κάποια τιμή Αυτή η τιμή επιστρέφεται στο πρόγραμμα που την κάλεσε Ο τύπος της τιμής που επιστρέφεται πρέπει να είναι ίδιος με τον τύπο που ορίστηκε να επιστρέφει η συνάρτηση στη δήλωσή της, δηλαδή στο πρωτότυπό της 11 Παραδείγματα Συναρτήσεων (Ι) Πού τερματίζεται αυτή η συνάρτηση, δεδομένου ότι δεν έχει κάπου (μέσα στο σώμα της) την εντολή return???? 12 6

7 Παραδείγματα Συναρτήσεων (IΙ) Πού τερματίζεται αυτή η συνάρτηση???? 13 Παραδείγματα Συναρτήσεων (IΙΙ) Όταν μία συνάρτηση επιστρέφει κάποια τιμή, θα πρέπει όλα τα δυνατά «μονοπάτια» της, να επιστρέφουν κάποια τιμή Επιστρέφονται ακέραιες τιμές ΠΡΟΣΟΧΗ: δεν επιτρέπεται η επιστροφή άλλου τύπου (π.χ. δεκαδικού) 14 7

8 Κλήση Συνάρτησης Όταν καλείται μία συνάρτηση, η εκτέλεση του προγράμματος συνεχίζει με την εκτέλεση του κώδικα της συνάρτησης Όταν τερματίζεται η συνάρτηση, η εκτέλεση του προγράμματος επιστρέφει στο σημείο κλήσης της συνάρτησης και συνεχίζει με την εκτέλεση της επόμενης εντολής Μία συνάρτηση μπορεί να κληθεί όσες φορές είναι απαραίτητο για τους σκοπούς του προγράμματος Όταν γίνεται η κλήση μίας συνάρτησης, ο μεταγλωττιστής δεσμεύει μνήμη για να αποθηκεύσει τις μεταβλητές που δηλώνονται στη λίστα παραμέτρων της συνάρτησης, καθώς και αυτές που δηλώνονται μέσα στο σώμα της Αυτή η μνήμη δεσμεύεται από ένα συγκεκριμένο τμήμα μνήμης που παρέχει το λειτουργικό σύστημα στο πρόγραμμα και ονομάζεται στοίβα (stack) Η αποδέσμευση αυτής της μνήμης γίνεται αυτόματα όταν τερματιστεί η εκτέλεση της συνάρτησης 15 Κλήση Συνάρτησης χωρίς Παραμέτρους Η κλήση μία συνάρτησης που δεν δέχεται παραμέτρους σημαίνει ότι δεν της μεταβιβάζεται κάποια πληροφορία Η κλήση μίας τέτοιας συνάρτησης γίνεται γράφοντας (μέσα στο πρόγραμμα, στο σημείο που επιθυμούμε να την καλέσουμε) το όνομά της, ακολουθούμενη από κενές παρενθέσεις 16 8

9 Παράδειγμα κλήσης συνάρτησης χωρίς παραμέτρους που δεν επιστρέφει τιμή Έξοδος: Call_1 In In Call_2 In In 17 Παράδειγμα κλήσης συνάρτησης χωρίς παραμέτρους που επιστρέφει τιμή Έξοδος: Sum =

10 Κλήση Συνάρτησης με Παραμέτρους (Ι) Η κλήση μίας συνάρτησης που δέχεται παραμέτρους σημαίνει ότι στη συνάρτηση μεταβιβάζεται πληροφορία μέσω των παραμέτρων της Η κλήση μίας τέτοιας συνάρτησης γίνεται γράφοντας το όνομά της και μέσα σε παρενθέσεις μία λίστα παραμέτρων Το πλήθος των παραμέτρων και ο τύπος της κάθε παραμέτρου πρέπει να είναι σε απόλυτη συμφωνία με τη δήλωση της συνάρτησης (δηλ. με το πρωτότυπό της) 19 Κλήση Συνάρτησης με Παραμέτρους (ΙΙ) Π.χ. αν μία συνάρτηση έχει δηλωθεί να έχει δύο ακέραιες παραμέτρους, τότε στην κλήση της συνάρτησης πρέπει να της διοχετεύονται υποχρεωτικά δύο ακέραιες τιμές, και όχι κάτι διαφορετικό Ο μεταγλωττιστής ελέγχει αν το πλήθος και ο τύπος των παραμέτρων συμφωνούν με τη δήλωση της συνάρτησης Αν δεν υπάρχει συμφωνία είτε στο πλήθος είτε στον τύπο των παραμέτρων, τότε ενημερώνει τον προγραμματιστή με ένα λάθος μεταγλώττισης Όταν καλείται μία συνάρτηση οι τιμές της λίστας των παραμέτρων εκχωρούνται μία-προς-μία στις παραμέτρους της συνάρτησης 20 10

11 Παράδειγμα 21 Επεξήγηση Παραδείγματος Όταν εκτελείται το προηγούμενο πρόγραμμα, ο μεταγλωττιστής δεσμεύει 8 θέσεις μνήμης (π.χ ) για την αποθήκευση των τιμών (10 και 20) των ακέραιων μεταβλητών a και b αντίστοιχα Όταν καλείται η συνάρτηση function() ο μεταγλωττιστής δεσμεύει άλλες 8 θέσεις μνήμης (π.χ ) για την αποθήκευση των τιμών των ακέραιων μεταβλητών x και y Στη συνέχεια, αντιγράφει τις τιμές των παραμέτρων a και b (δηλ. 10 και 20) στις αντίστοιχες θέσεις μνήμης των μεταβλητών x και y Όπως φαίνεται λοιπόν οι διευθύνσεις μνήμης των μεταβλητών x και y είναι διαφορετικές από τις διευθύνσεις μνήμης των ακέραιων μεταβλητών a και b Ωστόσο, τα περιεχόμενα των διευθύνσεων μετά την αντιγραφή είναι τα ίδια. Η αποδέσμευση αυτής της μνήμης (π.χ ) γίνεται αυτόματα, όταν τερματιστεί η εκτέλεση της συνάρτησης function() 22 11

12 Μεταβίβαση Παραμέτρων σε μία Συνάρτηση Δύο είναι οι διαφορετικοί τρόποι μεταβίβασης παραμέτρων σε μία συνάρτηση Κλήση μέσω τιμής (call by value) Κλήση μέσω αναφοράς (call by reference) 23 Κλήση Συνάρτησης μέσω τιμής (call by value) Όταν γίνεται κλήση συνάρτησης μέσω τιμής, τότε στη συνάρτηση διοχετεύονται οι τιμές των παραμέτρων του προγράμματος που την καλεί Οποιαδήποτε αλλαγή γίνει στις τιμές των παραμέτρων μέσα στο σώμα της συνάρτησης δεν επηρεάζει τις τιμές των παραμέτρων που διοχετεύθηκαν στη συνάρτηση, γιατί οι τυχόν αλλαγές γίνονται σε διαφορετικές διευθύνσεις μνήμης (όπως είδαμε στο προηγούμενο παράδειγμα) 24 12

13 Κλήση Συνάρτησης μέσω αναφοράς (call by reference) Όταν επιθυμούμε μία συνάρτηση να μπορεί να αλλάξει τις τιμές των παραμέτρων, τότε πρέπει να γίνει κλήση της συνάρτησης μέσω αναφοράς Σε αυτή την περίπτωση, στη συνάρτηση διοχετεύονται οι διευθύνσεις μνήμης των παραμέτρων του προγράμματος που την καλεί και όχι οι τιμές τους (γεγονός που πραγματοποιείται κατά την κλήση μέσω τιμής) Επομένως, αφού η συνάρτηση έχει πρόσβαση στις διευθύνσεις των παραμέτρων του προγράμματος που την κάλεσε, τότε μπορεί να μεταβάλλει τις τιμές αυτών 25 Παρατηρήσεις Αν και η κλήση μέσω τιμής και η κλήση μέσω αναφοράς αναφέρονται σαν διαφορετικοί τρόποι μεταβίβασης παραμέτρων σε μία συνάρτηση, στην πραγματικότητα είναι ίδιοι Δηλαδή, υπάρχει μόνο ένας τρόπος μεταβίβασης και αυτός είναι η κλήση μέσω τιμής Θα μπορούσαμε δηλαδή να θεωρήσουμε ότι υπάρχει μόνο αυτός ο τρόπος και ότι στην προσωρινή μνήμη μπορούν να αποθηκευτούν είτε οι τιμές των μεταβλητών είτε οι διευθύνσεις των μεταβλητών Σημειώστε επίσης ότι, όταν γίνεται κλήση μίας συνάρτησης, επιτρέπεται να γίνει συνδυασμός των δύο μεθόδων, δηλαδή κάποιες παράμετροι να διοχετευθούν μέσω τιμής και κάποιες άλλες μέσω αναφοράς 26 13

14 Παράδειγμα κλήσης συνάρτησης μέσω τιμής Έξοδος: Val = Παράδειγμα κλήσης συνάρτησης μέσω αναφοράς Έξοδος: Val =

15 Παράδειγμα κλήσης συνάρτησης μέσω τιμής και μέσω αναφοράς Έξοδος: Διεύθυνση Μνήμης RAM Περιεχόμενο Μνήμης Παραδείγματα (Ι) Οι κλήσεις των συναρτήσεων scanf() και printf() με ποιον από τους δύο τρόπους κλήσης μίας συνάρτησης γίνονται στο παρακάτω παράδειγμα??? Απάντηση: scanf(): κλήση μέσω αναφοράς (αφού διαβιβάζεται η διεύθυνση μίας μεταβλητής) printf(): κλήση μέσω τιμής (αφού διαβιβάζεται η τιμή μίας μεταβλητής) 30 15

16 Παραδείγματα (ΙΙ) Δημιουργήστε μία συνάρτηση που να δέχεται σαν παράμετρο έναν πραγματικό αριθμό και να επιστρέφει το εμβαδό του αντίστοιχου κύκλου. Στη συνέχεια γράψτε ένα πρόγραμμα το οποίο να διαβάζει το μήκος της ακτίνας και να εμφανίζει το εμβαδό του κύκλου με χρήση της προηγούμενης συνάρτησης 31 Παραδείγματα (ΙΙΙ) Δημιουργήστε μία συνάρτηση που να δέχεται σαν παράμετρο έναν ακέραιο αριθμό και έναν χαρακτήρα και να εμφανίζει τον χαρακτήρα τόσες φορές όσες και η τιμή του ακεραίου Στη συνέχεια γράψτε ένα πρόγραμμα το οποίο να διαβάζει έναν ακέραιο αριθμό και έναν χαρακτήρα και να εμφανίζει τον χαρακτήρα τόσες φορές όσο και ο ακέραιος (με χρήση της συνάρτησης) 32 16

17 Παραδείγματα (ΙV) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Παραδείγματα (V) Δημιουργήστε μία συνάρτηση που να δέχεται σαν παράμετρο έναν ακέραιο αριθμό (n) και να επιστρέφει την τιμή της παράστασης: n 3 Στη συνέχεια γράψτε ένα πρόγραμμα το οποίο να διαβάζει έναν θετικό ακέραιο αριθμό μέχρι 1000 και να εμφανίζει την τιμή της παραπάνω παράστασης με χρήση της συνάρτησης 34 17

18 Εμβέλεια Μεταβλητών Κάθε μεταβλητή που δηλώνεται σε ένα πρόγραμμα (π.χ. απλή μεταβλητή, πίνακας, δείκτης, δομή,...) αποκτά μία εμβέλεια μέσα σε αυτό Ο όρος εμβέλεια αναφέρεται στο κατά πόσο τα διαφορετικά τμήματα του προγράμματος έχουν πρόσβαση σε αυτή τη μεταβλητή Τα διαφορετικά είδη μεταβλητών βάσει της εμβέλειάς των είναι: Οι καθολικές μεταβλητές (global variables) Οι τοπικές μεταβλητές (local variables) 35 Καθολικές Μεταβλητές (global) Μία μεταβλητή που δηλώνεται έξω από οποιαδήποτε συνάρτηση ονομάζεται καθολική (global) μεταβλητή Η εμβέλεια μίας καθολικής μεταβλητής εκτείνεται σε όλο το πρόγραμμα Αυτό σημαίνει ότι όλες οι συναρτήσεις του προγράμματος έχουν πρόσβαση σε αυτή τη μεταβλητή, άρα μπορούν να τροποποιήσουν την τιμή της 36 18

19 Παρατηρήσεις Να δηλώνετε μία μεταβλητή σαν καθολική, μόνο όταν οι περισσότερες συναρτήσεις του προγράμματός σας πρέπει να τη χρησιμοποιούν Το όνομα μίας καθολικής μεταβλητής πρέπει να επιλέγεται, έτσι ώστε να περιγράφει όσο το δυνατόν καλύτερα τον σκοπό της Π.χ. αν θέλετε να δηλώσετε μία καθολική μεταβλητή που να δηλώνει τον αριθμό των φοιτητών, τότε ένα περιγραφικό όνομα θα μπορούσε να είναι το num_students και όχι ένα όνομα όπως i, k, foufoutos ή lala Να δίνετε αρχική τιμή (να κάνετε δηλ. ρητή αρχικοποίηση) σε μία καθολική μεταβλητή, αμέσως όταν τη δηλώνετε 37 Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Value = 1 Value = 10 Value =

20 Εξωτερικές Καθολικές Μεταβλητές (extern global) Ο κώδικας ενός προγράμματος μπορεί να περιέχεται σε περισσότερα από ένα αρχεία, γεγονός πιθανό, ιδίως σε περίπτωση μεγάλων προγραμμάτων Σε ένα τέτοιο πρόγραμμα υπάρχει το ενδεχόμενο μία μεταβλητή που χρησιμοποιείται σε ένα αρχείο να πρέπει να χρησιμοποιηθεί και σε κάποιο άλλο αρχείο Σε μία τέτοια περίπτωση η μεταβλητή που πρέπει να είναι «ορατή» και σε άλλα αρχεία δηλώνεται σαν καθολική στο αρχείο που χρησιμοποιείται περισσότερο (συνήθως) ενώ σε όποιο άλλο αρχείο χρησιμοποιείται αυτή η μεταβλητή πρέπει να δηλώνεται σαν καθολική με χρήση της λέξης extern Π.χ. η εντολή: extern int size; ενημερώνει τον μεταγλωττιστή ότι η ακέραια μεταβλητή με όνομα size δεν δηλώνεται σε αυτό το αρχείο, αλλά σε κάποιο άλλο αρχείο του προγράμματος Σημειώνεται, ότι αυτή η μεταβλητή μπορεί να χρησιμοποιηθεί και, αν χρειαστεί, να τροποποιηθεί η τιμή της σε οποιοδήποτε από τα αρχεία στα οποία περιέχεται και όχι μόνο στο αρχείο δήλωσής της 39 Τοπικές Μεταβλητές (local) Μία μεταβλητή που δηλώνεται μέσα σε μία συνάρτηση ονομάζεται τοπική μεταβλητή (local) Η εμβέλεια μίας τοπικής μεταβλητής περιορίζεται στη συνάρτηση όπου δηλώνεται, γεγονός που σημαίνει ότι οι υπόλοιπες συναρτήσεις του προγράμματος δεν έχουν πρόσβαση σε αυτή τη μεταβλητή, άρα δεν μπορούν να τροποποιήσουν την τιμή της Οι τοπικές μεταβλητές είναι εντελώς διαφορετικές και ανεξάρτητες από τις καθολικές μεταβλητές ή τις μεταβλητές που δηλώνονται σε άλλες συναρτήσεις, ακόμα και αν έχουν το ίδιο όνομα Σε πολλά από τα επόμενα προγράμματα θα δηλώνονται επίτηδες - τοπικές μεταβλητές σε συναρτήσεις που θα έχουν το ίδιο όνομα με τοπικές μεταβλητές δηλωμένες στη συνάρτηση main()κυρίως για να σας γίνει ακόμα πιο ξεκάθαρο ότι αυτές οι μεταβλητές δεν έχουν καμία σχέση μεταξύ τους, παρόλο που έχουν το ίδιο όνομα 40 20

21 Παρατηρήσεις Υπενθυμίζεται ότι μία τοπική μεταβλητή πρέπει να αρχικοποιηθεί πριν χρησιμοποιηθεί μέσα στη συνάρτηση, γιατί ο μεταγλωττιστής της αναθέτει μία τυχαία αρχική τιμή (αυτή η τιμή συνήθως ονομάζεται «σκουπίδια») και δεν αναθέτει την τιμή 0 Οι παράμετροι που δηλώνονται στην επικεφαλίδα μίας συνάρτησης θεωρούνται και αυτές τοπικές μεταβλητές της συνάρτησης (εννοείται ότι αυτές δεν χρειάζεται να αρχικοποιηθούν, αφού αρχικοποιούνται κατά την κλήση της συνάρτησης) 41 Παραδείγματα (Ι) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Ι_test = 200 I_main =

22 Παραδείγματα (ΙΙ) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Values: Στατικές Τοπικές Μεταβλητές (static local) Κάθε φορά που καλείται μία συνάρτηση ο μεταγλωττιστής δεσμεύει μνήμη για τη δημιουργία των τοπικών μεταβλητών της συνάρτησης Η μνήμη αυτή αποδεσμεύεται, όταν τελειώνει η εκτέλεση της συνάρτησης Δηλαδή, κάθε τοπική μεταβλητή: δημιουργείται (όταν καλείται η συνάρτηση) καταστρέφεται (όταν τερματίζεται η συνάρτηση) και δημιουργείται εκ νέου (όταν κληθεί ξανά η συνάρτηση) Αυτό σημαίνει ότι μία τοπική μεταβλητή δεν διατηρεί την τιμή της ανάμεσα στις κλήσεις της συνάρτησης Αν θέλουμε μία τοπική μεταβλητή να διατηρεί την τιμή της ανάμεσα στις κλήσεις της συνάρτησης, πρέπει να ορίζεται σαν στατική με τη λέξη static Μία στατική (static) μεταβλητή αποκτάει αρχική τιμή μόνο την πρώτη φορά που καλείται η συνάρτηση ενώ στις επόμενες κλήσεις της συνάρτησης η μεταβλητή διατηρεί την τελευταία τιμή της και δεν αρχικοποιείται πάλι 44 22

23 Παραδείγματα (Ι) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Παραδείγματα (ΙΙ) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: (δηλ. δεν έχει νόημα που δηλώσαμε την i ως static) ΠΑΡΑΤΗΡΗΣΕΙΣ Μία στατική μεταβλητή πρέπει να αρχικοποιείται όταν δηλώνεται, έτσι ώστε στις επόμενες κλήσεις της συνάρτησης να διατηρεί την τελευταία τιμή της και να μην χρειάζεται να αρχικοποιηθεί ξανά 46 23

24 Δήλωση (πρωτότυπο) Συνάρτησης με παράμετρο Πίνακα Όταν θέλουμε να δηλώσουμε μία συνάρτηση που έχει σαν παράμετρο έναν πίνακα, τότε (στο πρωτότυπο της συνάρτησης) στα ορίσματά της γράφουμε το όνομα του πίνακα ακολουθούμενο από κενές αγκύλες Π.χ. με την ακόλουθη δήλωση πρωτοτύπου, η συνάρτηση με όνομα function δέχεται σαν παράμετρο έναν πίνακα ακεραίων και δεν επιστρέφει κάποια τιμή void function(int arr[]); /* Δήλωση συνάρτησης που έχει σαν παράμετρο έναν πίνακα ακεραίων και δεν επιστρέφει τίποτα. */ 47 Κλήση Συνάρτησης με παράμετρο Πίνακα (Ι) Κατά την κλήση μίας συνάρτησης που έχει σαν παράμετρο έναν πίνακα, γράφουμε μόνο το όνομα του πίνακα, χωρίς τις αγκύλες, όπως φαίνεται στο παρακάτω παράδειγμα 48 24

25 Κλήση Συνάρτησης με παράμετρο Πίνακα (ΙΙ) Όπως είδαμε στο κεφάλαιο των δεικτών, το όνομα ενός πίνακα χωρίς τις αγκύλες είναι δείκτης στο πρώτο στοιχείο του, δηλαδή είναι ίσο με τη διεύθυνση του πρώτου στοιχείου του πίνακα Π.χ. αν έχουμε δηλώσει τον πίνακα arr, ισχύει ότι και γενικά: arr == &arr[0] arr + n == &arr[n] Επομένως, όταν μία συνάρτηση δέχεται σαν παράμετρο το όνομα ενός πίνακα, τότε στη συνάρτηση μεταβιβάζεται η διεύθυνση του πρώτου του στοιχείου και όχι ένα αντίγραφο του πίνακα (δηλαδή, η κλήση αυτή είναι κλήση μέσω αναφοράς) Άρα, αφού η συνάρτηση έχει πρόσβαση στη διεύθυνση του πρώτου στοιχείου του πίνακα μπορεί να τροποποιήσει τις τιμές όλων των στοιχείων του πίνακα 49 Κλήση Συνάρτησης με παράμετρο Πίνακα (ΙΙΙ) Συνήθως, οι συναρτήσεις που δέχονται σαν παράμετρο έναν πίνακα δέχονται και άλλη μία παράμετρο, η οποία δηλώνει το μέγεθος του πίνακα Έτσι, το προηγούμενο παράδειγμα θα μπορούσε π.χ. να γίνει: 50 25

26 Παρατηρήσεις (Ι) Αφού το όνομα ενός πίνακα είναι δείκτης στο πρώτο του στοιχείο, τότε η δήλωση της συνάρτησης function() στο προηγούμενο παράδειγμα, καθώς και η επικεφαλίδα της, θα μπορούσε να γραφεί ισοδύναμα ως: void function(int* arr); Ωστόσο, προτείνουμε τη σύνταξη: void function(int arr[]); έτσι ώστε να φαίνεται ξεκάθαρα ότι η συνάρτηση δέχεται σαν παράμετρο έναν πίνακα 51 Παρατηρήσεις (ΙΙ) Τα στοιχεία του πίνακα στο σώμα της συνάρτησης μπορούν να προσπελαστούν είτε με τον δείκτη θέσης του στοιχείου στον πίνακα είτε με σημειογραφία δείκτη Π.χ. void function(int arr[],int size) { arr[0] = 10; /* Ισοδύναμο με *arr = 10; */ arr[1] = 20; /* Ισοδύναμο με *(arr+1) = 20; */ } 52 26

27 Παρατηρήσεις (ΙΙΙ) Αν θέλουμε μία συνάρτηση να ΜΗΝ μπορεί να αλλάζει τις τιμές των στοιχείων του πίνακα, τότε στη δήλωση της συνάρτησης χρησιμοποιούμε τη λέξη const πριν από το όνομα του πίνακα Π.χ. με την παρακάτω δήλωση η συνάρτηση function() δεν μπορεί να μεταβάλλει τις τιμές των στοιχείων του πίνακα arr void function(const int arr[]); 53 Παραδείγματα (Ι) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος:

28 Δημιουργήστε μία συνάρτηση που να δέχεται σαν παραμέτρους έναν πίνακα ακεραίων και το μέγεθός του, να εμφανίζει τα στοιχεία του πίνακα και να επιστρέφει τον μέσο όρο τους. Στη συνέχεια γράψτε ένα πρόγραμμα το οποίο να διαβάζει 5 ακεραίους, να τους αποθηκεύει σε έναν πίνακα ακεραίων και να εμφανίζει τον μέσο όρο των στοιχείων του πίνακα με χρήση της συνάρτησης Παραδείγματα (ΙΙ) 55 Παραδείγματα (ΙΙΙ) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: i = 10, j =

29 Δημιουργήστε μία συνάρτηση που να δέχεται σαν παραμέτρους δύο δείκτες σε ακεραίους και να επιστρέφει έναν δείκτη στον ακέραιο που έχει τη μεγαλύτερη τιμή Στη συνέχεια γράψτε ένα πρόγραμμα το οποίο να διαβάζει δύο ακεραίους και να εμφανίζει τον μεγαλύτερο από αυτούς με χρήση της συνάρτησης Παραδείγματα (ΙV) 57 Δήλωση Συνάρτησης με παράμετρο Διδιάστατο Πίνακα Για τη δήλωση μίας συνάρτησης που να έχει σαν παράμετρο έναν διδιάστατο πίνακα, απαιτείται να γράψουμε το όνομα του πίνακα ακολουθούμενο από τις μέγιστες τιμές των διαστάσεών του Π.χ. η δήλωση μίας συνάρτησης με όνομα function η οποία θα δέχεται σαν παράμετρο έναν διδιάστατο πίνακα ακεραίων διαστάσεων 5 10 θα μπορούσε να ήταν: void function(int arr[5][10]); Εναλλακτικά, κατά τη δήλωση είναι δυνατόν να παραλειφθεί η τιμή της πρώτης διάστασης Δηλαδή, και η παρακάτω δήλωση είναι ισοδύναμη με την προηγούμενη: void function(int arr[][10]); 58 29

30 Κλήση Συνάρτησης με παράμετρο Διδιάστατο Πίνακα Όπως και στην περίπτωση κλήσης συνάρτησης που έχει ως παράμετρο μονοδιάστατο πίνακα, έτσι και κατά την κλήση μίας συνάρτησης που έχει σαν παράμετρο έναν διδιάστατο πίνακα, γράφουμε μόνο το όνομα του πίνακα, χωρίς τις αγκύλες, όπως φαίνεται στο παρακάτω παράδειγμα: 59 Διοχέτευση Παραμέτρων στη Συνάρτηση main() (Ι) Για τη διοχέτευση παραμέτρων σε ένα πρόγραμμα τη στιγμή της εκκίνησής του γράφουμε στη γραμμή εντολών (command line) το όνομα του εκτελέσιμου αρχείου και τις επιθυμητές τιμές Π.χ. αν ο μεταγλωττιστής έχει δημιουργήσει το εκτελέσιμο αρχείο hello.exe στον φάκελο C:\programs, τότε, γράφοντας στη γραμμή εντολών: θα εκτελεστεί το πρόγραμμα hello και στη συνάρτηση main() του προγράμματος θα διοχετευθούν οι τιμές 100 και

31 Διοχέτευση Παραμέτρων στη Συνάρτηση main() Όμως, για να είναι σε θέση η συνάρτηση main() ενός προγράμματος να διαβάσει τις τιμές των παραμέτρων από τη γραμμή εντολών θα πρέπει να έχει δηλωθεί ως: int main(int argc,char* argv[]) α) Η παράμετρος argc είναι ένας ακέραιος αριθμός που δηλώνει το πλήθος των παραμέτρων στη γραμμή εντολών Η τιμή του argc είναι τουλάχιστον 1, γιατί το όνομα του προγράμματος θεωρείται κι αυτό μία παράμετρος Π.χ. στη γραμμή εντολών: (ΙΙ) η τιμή της παραμέτρου argc είναι ίση με 3 61 Διοχέτευση Παραμέτρων στη Συνάρτηση main() (ΙΙΙ) β) Η παράμετρος argv είναι ένας πίνακας δεικτών προς τις παραμέτρους της γραμμής εντολών Η κάθε παράμετρος στη γραμμή εντολών θεωρείται ως ακολουθία χαρακτήρων, γι αυτό και η παράμετρος argv δηλώνεται σαν ένας πίνακας δεικτών προς χαρακτήρα Οι δείκτες είναι αποθηκευμένοι στον πίνακα argv από τη θέση 0 έως και τη θέση argc-1 Συγκεκριμένα, ο δείκτης argv[0] δείχνει στην πρώτη παράμετρο της γραμμής εντολών που είναι το όνομα του προγράμματος, ενώ οι υπόλοιποι δείκτες δείχνουν στις επόμενες παραμέτρους (δηλ. ο argv[1] δείχνει στη δεύτερη παράμετρο, ο argv[2] δείχνει στην τρίτη παράμετρο,... και ο argv[argc-1] δείχνει στην τελευταία παράμετρο της γραμμής εντολών) 62 31

32 Διοχέτευση Παραμέτρων στη Συνάρτηση main() (ΙV) Π.χ. για την προηγούμενη γραμμή εντολών: όπως εξηγήθηκε προηγουμένως το argc είναι ίσο με 3 ενώ οι παράμετροι της γραμμής εντολών hello, 100 και 200 θεωρούνται όλες αλφαριθμητικά, και έτσι: ο δείκτης argv[0] δείχνει στο αλφαριθμητικό hello ο δείκτης argv[1] δείχνει στο αλφαριθμητικό 100 και τέλος ο δείκτης argv[2] δείχνει στο αλφαριθμητικό Παρατηρήσεις Η διοχέτευση παραμέτρων σε ένα πρόγραμμα, μέσω της γραμμής εντολών, είναι ένας εναλλακτικός τρόπος εισαγωγής δεδομένων στο πρόγραμμα Προφανώς, αυτή η πληροφορία μπορεί να διαβαστεί με τη χρήση εντολών ανάγνωσης δεδομένων, όπως η scanf() και η gets() Οι παράμετροι στη γραμμή εντολών πρέπει να διαχωρίζονται μεταξύ τους με κενό διάστημα (space) Αντί των ονομάτων argc και argv στη συνάρτηση main() μπορείτε να χρησιμοποιήσετε όποια ονόματα επιθυμείτε Ωστόσο, συνηθίζεται από τους προγραμματιστές να χρησιμοποιούν αυτά τα ονόματα και όχι κάποια άλλα (όχι μόνο στη C αλλά και σε άλλες γλώσσες προγραμματισμού, για τη διοχέτευση παραμέτρων στη συνάρτηση main()) 64 32

33 Παράδειγμα Τι κάνει το παρακάτω πρόγραμμα??? Αν δεν είναι συνολικά τρεις, τότε τυπώνει στην οθόνη κατάλληλο μήνυμα Ελέγχει τις παραμέτρους της γραμμής εντολών και... Αν είναι τρεις, τότε ελέγχει αν οι τιμές της 2 ης και της 3 ης παραμέτρου είναι ίσες με κάποιες συγκεκριμένες τιμές και τυπώνει στην οθόνη αντίστοιχο μήνυμα 65 Δήλωση Συνάρτησης με μεταβλητό αριθμό παραμέτρων Μία συνάρτηση είναι δυνατόν να δέχεται μεταβλητό αριθμό παραμέτρων Για να δηλώσουμε μία τέτοια συνάρτηση γράφουμε αρχικά τις σταθερές της παραμέτρους, δηλαδή αυτές που θα υπάρχουν πάντα και μετά προσθέτουμε αποσιωπητικά (...). Π.χ. η συνάρτηση: void test(int num,char* str,...); είναι μία συνάρτηση που δέχεται δύο σταθερές παραμέτρους (μία ακέραια μεταβλητή και έναν δείκτη σε χαρακτήρα) και στη συνέχεια έναν μεταβλητό αριθμό παραμέτρων 66 33

34 Κλήση Συνάρτησης με μεταβλητό αριθμό παραμέτρων Η κλήση μίας τέτοιας συνάρτησης γίνεται γράφοντας το όνομα της συνάρτησης, τις τιμές των σταθερών παραμέτρων και τις τιμές των μη-σταθερών παραμέτρων Παράδειγμα κλήσης της προηγούμενης συνάρτησης που είχε τη δήλωση: void test(int num,char* str,...); θα μπορούσε να ήταν: test(3,"keimeno",5,8.9,"sample"); Οι σταθερές παράμετροι αυτής έχουν τιμές 3 και "keimeno" αντίστοιχα Οι τύποι δεδομένων των μη-σταθερών παραμέτρων αυτής της συνάρτησης είναι int, float και char* με τιμές 5, 8.9 και "sample", αντίστοιχα 67 Παρατηρήσεις Για λόγους ευκολίας στο χειρισμό των μη-σταθερών παραμέτρων μίας συνάρτησης, προτείνεται η χρήση μίας σταθερής παραμέτρου για τη δήλωση του ακριβούς αριθμού των μη-σταθερών παραμέτρων αυτής Οι περιπτώσεις που θα χρειαστείτε να δηλώσετε συναρτήσεις με μεταβλητό αριθμό παραμέτρων θα είναι από ελάχιστες έως μηδενικές... Ωστόσο, αν ανοίξετε το αρχείο stdio.h και δείτε τα πρωτότυπα των δύο πιο συνηθισμένων συναρτήσεων, της printf() και της scanf(), θα δείτε ότι δηλώνονται σαν συναρτήσεις που δέχονται μεταβλητό αριθμό παραμέτρων 68 34

35 Αναδρομικές Συναρτήσεις (Ι) Μία συνάρτηση μπορεί να καλεί μέσα στο σώμα της οποιαδήποτε άλλη συνάρτηση, ακόμα και τον εαυτό της Μία συνάρτηση που μέσα στο σώμα της καλεί τον εαυτό της ονομάζεται αναδρομική συνάρτηση Για να εξηγήσουμε πως λειτουργεί μία αναδρομική συνάρτηση θα εξετάσουμε τη συνάρτηση show() του επόμενου παραδείγματος Η συνάρτηση show() βλέπουμε ότι είναι αναδρομική, αφού μέσα στο σώμα της καλεί τον εαυτό της 69 Αναδρομικές Συναρτήσεις (ΙΙ) Αν ο χρήστης πληκτρολογήσει 3: Έξοδος: val = 1 val = 2 val = 3 Διότι, όταν μία συνάρτηση καλεί τον εαυτό της, οι επόμενες εντολές του σώματός της καθώς και οι τιμές των εμπλεκόμενων μεταβλητών (οι οποίες αποθηκεύονται) παραμένουν στη μνήμη. Όταν η συνάρτηση σταματήσει να καλεί τον εαυτό της, οι αποθηκευμένες εντολές εκτελούνται με αντίστροφη σειρά (δηλ. από την τελευταία προς την πρώτη) 70 35

36 Παρατηρήσεις (Ι) Οι εντολές και οι μεταβλητές που υπάρχουν μετά την κλήση μίας αναδρομικής συνάρτησης αποθηκεύονται σε ένα ειδικό τμήμα της μνήμης (στοίβα - stack) και θα εκτελεστούν μόνο όταν η συνάρτηση δεν καλέσει πάλι τον εαυτό της Λάβετε όμως υπ όψιν ότι το μέγεθος της στοίβας δεν είναι ιδιαίτερα μεγάλο, το οποίο σημαίνει ότι δεν μπορεί να αποθηκευτεί μεγάλος όγκος εντολών και μεταβλητών Π.χ. αν στο προηγούμενο πρόγραμμα ο χρήστης εισάγει την τιμή ή μία μεγαλύτερη τιμή είναι πολύ πιθανό το πρόγραμμα να μην εκτελεστεί και ο μεταγλωττιστής να εμφανίσει το μήνυμα: stack overflow Αυτό το μήνυμα σημαίνει ότι δεν υπάρχει διαθέσιμος χώρος στη στοίβα για να αποθηκευτεί η κάθε εντολή printf() και η αντίστοιχη μεταβλητή num του προηγούμενου παραδείγματος Άρα, η πιθανότητα δέσμευσης όλης της διαθέσιμης μνήμης είναι ο πρώτος λόγος για τον οποίον δεν προτείνεται η χρήση αναδρομικών συναρτήσεων (αν μπορεί το πρόβλημα να επιλυθεί με εναλλακτικό τρόπο) 71 Παρατηρήσεις (ΙΙ) Όταν μία αναδρομική συνάρτηση καλεί πολλές φορές τον εαυτό της, τότε ο χρόνος εκτέλεσης της συνάρτησης μπορεί να γίνει υπερβολικά μεγάλος Αυτός είναι ο δεύτερος λόγος για τον οποίο δεν προτείνεται η χρήση αναδρομικών συναρτήσεων - αν φυσικά μπορεί να αποφευχθεί 72 36

37 Παράδειγμα Γράψτε ένα πρόγραμμα το οποίο να διαβάζει έναν ακέραιο αριθμό (n) και να εμφανίζει το παραγοντικό του (n!) με χρήση αντίστοιχης αναδρομικής συνάρτησης 73 Συναρτήσεις Βιβλιοθήκης Η C παρέχει έτοιμες υλοποιημένες συναρτήσεις, μέσω των header files που ανήκουν στις αντίστοιχες βιβλιοθήκες της, οι οποίες εκτελούν συγκεκριμένες εργασίες Τα πλέον χρησιμοποιούμενα header files της C παρουσιάζονται στον παρακάτω πίνακα (τις συναρτήσεις όλων των header files της C μπορείτε να τις βρείτε στο Παράρτημα Γ του βιβλίου) Header file <ctype.h> <math.h> <stdio.h> <stdlib.h> <string.h> <time.h> Επεξήγηση Περιέχει πρωτότυπα συναρτήσεων που ελέγχουν ορισμένες ιδιότητες χαρακτήρων, καθώς και πρωτότυπα συναρτήσεων για συναρτήσεις που μπορούν να χρησιμοποιηθούν για την μετατροπή πεζών (μικρών) γραμμάτων σε κεφαλαία γράμματα και αντίστροφα. Περιέχει πρωτότυπα συναρτήσεων για μαθηματικές συναρτήσεις βιβλιοθήκης. Περιέχει πρωτότυπα συναρτήσεων για standard συναρτήσεις εισόδου / εξόδου καθώς και πληροφορίες που χρησιμοποιούνται από αυτές. Περιέχει πρωτότυπα συναρτήσεων για μετατροπή αριθμών σε κείμενο και κειμένου σε αριθμούς, κατανομή μνήμης (memory allocation), τυχαίους αριθμούς και άλλες γενικής χρήσης συναρτήσεις. Περιέχει πρωτότυπα συναρτήσεων για την επεξεργασία αλφαριθμητικών. Περιέχει πρωτότυπα συναρτήσεων και τύπους για το χειρισμό ώρας και ημερομηνίας

38 ctype.h (Ι) Περιλαμβάνει συναρτήσεις για την εκτέλεση χρήσιμων ελέγχων και χειρισμών δεδομένων τύπου χαρακτήρα (char) Πρωτότυπο συνάρτησης Περιγραφή int isdigit( int ch ); int isalpha( int ch ); int isalnum( int ch ); int isxdigit( int ch ); int islower( int ch ); Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν από τους χαρακτήρες 0-9, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν από τους χαρακτήρες a-z ή A-Z, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν από τους χαρακτήρες a-z, A-Z ή 0-9, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν από τους χαρακτήρες που χρησιμοποιούνται στο δεκαεξαδικό σύστημα, δηλαδή a-f, A-F ή 0-9, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν από τους πεζούς χαρακτήρες a-z, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch int isupper( int ch ); αντιστοιχεί σε έναν από τους κεφαλαίους χαρακτήρες A-Z, αλλιώς επιστρέφει 0 75 ctype.h (ΙΙ) Πρωτότυπο συνάρτησης int isspace( int ch ); int iscntrl( int ch ); int ispunct( int ch ); int isprint( int ch ); int isgraph( int ch ); int tolower( int ch ); int toupper( int ch ); Περιγραφή Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν χαρακτήρα διαστήματος, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν χαρακτήρα ελέγχου, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν χαρακτήρα που να είναι σημείο στίξης, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν εκτυπώσιμο χαρακτήρα, αλλιώς επιστρέφει 0 Επιστρέφει μία μη μηδενική τιμή, αν η τιμή της μεταβλητής ch αντιστοιχεί σε έναν εκτυπώσιμο χαρακτήρα εκτός του «κενού διαστήματος», αλλιώς επιστρέφει 0 Επιστρέφει τον πεζό χαρακτήρα που αντιστοιχεί στην τιμή της μεταβλητής ch Επιστρέφει τον κεφαλαίο χαρακτήρα που αντιστοιχεί στην τιμή της μεταβλητής ch 76 38

39 math.h (Ι) Συνάρτηση Περιγραφή Παράδειγμα sqrt( x ) Τετραγωνική ρίζα του x sqrt( ) "επιστρέφει" 30.0 sqrt( 9.0 ) "επιστρέφει" 3.0 exp( x ) Εκθετική συνάρτηση e x exp( 1.0 ) "επιστρέφει" exp( 2.0 ) "επιστρέφει" log( x ) Λογάριθμος του x με βάση το e (lnx) log( ) "επιστρέφει" 1.0 log( ) "επιστρέφει" 2.0 log10( x ) Λογάριθμος του x (με βάση το 10) log10( 1.0 ) "επιστρέφει" 0.0 log10( 10.0 ) "επιστρέφει" 1.0 log10( ) "επιστρέφει" 2.0 fabs( x ) Απόλυτη τιμή του x fabs( 5.0 ) "επιστρέφει" 5.0 fabs( 0.0 ) "επιστρέφει" 0.0 fabs( -5.0 ) "επιστρέφει" 5.0 floor( x ) ceil( x ) Στρογγυλοποιεί το x στον μεγαλύτερο ακέραιο (μικρότερο ή ίσο του x) Στρογγυλοποιεί το x στον μικρότερο ακέραιο (μεγαλύτερο ή ίσο του x) floor( 9.2 ) "επιστρέφει" 9.0 floor( -9.8 ) "επιστρέφει" ceil( 9.2 ) "επιστρέφει" 10.0 ceil( -9.8 ) "επιστρέφει" -9.0 pow( x, y ) x εις την y (x y ) pow( 2, 7 ) "επιστρέφει" pow( 9,.5 ) "επιστρέφει" 3.0 fmod( x, y ) υπόλοιπο της διαίρεσης x/y σαν αριθμό κινητής υποδιαστολής sin( x ) cos( x ) tan( x ) ημίτονο του x (x σε ακτίνια) συνημίτονο του x (x σε ακτίνια) εφαπτομένη του x (x σε ακτίνια) fmod( , ) "επιστρέφει" sin( 0.0 ) "επιστρέφει" 0.0 cos( 0.0 ) "επιστρέφει" 1.0 tan( 0.0 ) "επιστρέφει" Παρατηρήσεις Οι σημαντικότερες συναρτήσεις βιβλιοθήκης από τα header files stdlib.h και string.h θα παρουσιαστούν στην ενότητα των αλφαριθμητικών Περισσότερες λεπτομέρειες για όλες τις συναρτήσεις βιβλιοθήκης της C μπορείτε να βρείτε στο Παράρτημα Γ του βιβλίου 78 39

40 Δημιουργία Τυχαίων Αριθμών (Ι) Μία χρήσιμη συνάρτηση του stdlib.h είναι η συνάρτηση rand(), η οποία χρησιμοποιείται για τη δημιουργία τυχαίων αριθμών int rand() : Επιστρέφει έναν τυχαίο θετικό ακέραιο αριθμό από 0 έως RAND_MAX (η τιμή της RAND_MAX δηλώνεται στο αρχείο stdlib.h και είναι ίση με 32767) Για τη δημιουργία ενός τυχαίου ακέραιου μεταξύ 0 και n-1? rand()%n Για τη δημιουργία ενός τυχαίου ακέραιου μεταξύ 1 και n? 1 + rand()%n Π.χ. εξομοίωση ρίψης ζαριού (αποτέλεσμα από 1 έως και 6)??? 1 + rand()%6 79 Δημιουργία Τυχαίων Αριθμών (ΙΙ) Μία επίσης χρήσιμη συνάρτηση του stdlib.h είναι η συνάρτηση srand(), η οποία χρησιμοποιείται για την «αρχικοποίηση» της γεννήτριας παραγωγής τυχαίων αριθμών void srand(unsigned int seed) Αφού χρησιμοποιήσουμε μία φορά στο πρόγραμμά μας τη συνάρτηση srand(), στη συνέχεια χρησιμοποιούμε τη συνάρτηση rand() (όπως δείξαμε προηγουμένως) για τη δημιουργία των τυχαίων αριθμών Το όρισμα seed της συνάρτησης srand() χρησιμοποιείται για να ορίσει την «τυχαιότητα» των επιστρεφόμενων τιμών της rand() Συνήθως, η τιμή που χρησιμοποιείται σαν seed είναι η επιστροφή της συνάρτησης time()(η οποία περιέχεται στο time.h), ώστε κάθε φορά που εκτελείται το πρόγραμμα η rand() να επιστρέφει διαφορετικούς αριθμούς Η συνάρτηση time() με όρισμα NULL επιστρέφει τον αριθμό των δευτερολέπτων που έχουν περάσει τη στιγμή που καλείται η συνάρτηση από τη χρονική στιγμή (00:00:00),January 1,

41 Παράδειγμα Γράψτε ένα πρόγραμμα το οποίο να εξομοιώνει 10 συνεχόμενες τυχαίες ρίψεις ενός ζαριού και να εκτυπωνει το αποτέλεσμα της κάθε ρίψης στην οθόνη Θα λειτουργήσει το πρόγραμμα αν παραλείψετε αυτή τη γραμμή??? 81 41

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

Προγραμματισμός Ι. Συναρτήσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Συναρτήσεις Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Συναρτήσεις - Εισαγωγή Μία συνάρτηση είναι ένα ανεξάρτητο τμήμα κώδικα, που εκτελεί μία

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

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

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

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

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

Κεφάλαιο 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 (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 8 η Δείκτες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 9 η Χαρακτήρες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

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

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

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

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

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

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

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

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

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

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

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

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

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

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

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

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

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

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

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

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

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

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Δομές & Ενώσεις Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι 1 Δομές (Structures) Δομή (structure) στη C είναι μία συλλογή από μεταβλητές οποιουδήποτε

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 6 η Βρόχοι Επανάληψης Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

int abs( int x ), επιστρέφει την απόλυτη τιμή του ακεραίου x Πχ abs( 11) ισούται με 11, abs(34) ισούται με 34 double fb( fabs( double x ), επιστρέφει

int abs( int x ), επιστρέφει την απόλυτη τιμή του ακεραίου x Πχ abs( 11) ισούται με 11, abs(34) ισούται με 34 double fb( fabs( double x ), επιστρέφει Συναρτήσεις της βιβλιοθήκης math.h h (1/5) int abs( int x ), επιστρέφει την απόλυτη τιμή του ακεραίου x Πχ abs( 11) ισούται με 11, abs(34) ισούται με 34 double fb( fabs( double x ), επιστρέφει την απόλυτη

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

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

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

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

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

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

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

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σύντομες εισαγωγικές σημειώσεις για την. Matlab Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και

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

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 10 η Αλφαριθμητικά Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

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

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

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

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

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

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

Ε. Νισταζάκης Αναπλ. Καθηγητής

Ε. Νισταζάκης Αναπλ. Καθηγητής Υπολογιστές Ι Ε. Νισταζάκης Αναπλ. Καθηγητής Πραγματικές και Φανταστικές Ρίζες Δευτεροβάθμιας Εξίσωσης 2 Έστω η δευτεροβάθμια εξίσωση: ax + bx+ c = 0 Ηδιακρίνουσαείναι: Δ = b 2 4ac Όταν η Δ>0, προκύπτουν

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2) Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2) Κατηγορίες μνήμης εκτελέσιμου προγράμματος Στις καθολικές και στατικές μεταβλητές οι χώροι μνήμης δεσμεύονται κατά την διάρκεια της μεταγλώττισης. Οι

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

Εισαγωγή στον Προγραµµατισµό «C»

Εισαγωγή στον Προγραµµατισµό «C» Εισαγωγή Στον Προγραµµατισµό «C» Δείκτες Πανεπιστήµιο Πελοποννήσου Τµήµα Επιστήµης & Τεχνολογίας Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Μνήµη Υπολογιστή Η µνήµη RAM (Random Access Memory) ενός υπολογιστή

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 5 η Έλεγχος Προγράμματος Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

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

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

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 1 η Εισαγωγή στη Γλώσσα C Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

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

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

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

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

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

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Εισαγωγικές Έννοιες σε Strings - Πίνακες από Strings - Συναρτήσεις

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

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Συναρτήσεις - Εξωτερικές μεταβλητές - Κανόνες εμβέλειας - Διάρκεια

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

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

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

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

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 8: Πίνακες, Αλφαριθμητικά Πίνακες Ο πίνακας είναι μια ειδική δομή για την αποθήκευση μιας σειράς από δεδομένα του ίδιου τύπου. Η δήλωση ενός πίνακα γίνεται όπως για μια

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

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

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

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

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

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

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

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

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

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

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

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

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

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 5: Εντολές Αντικατάστασης, Συναρτήσεις και Σχόλια στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 1 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω

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

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

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

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

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

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

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

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

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Στόχοι Αναδροµή Σηµείωση: Απαγορεύονται static και global µεταβλητές. Πριν ξεκινήσετε Πηγαίνετε στο φάκελο ce120 και κατασκευάστε µέσα

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

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

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014 Πίνακες 0 Μαρτίου 014 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα του συγκεκριμένου τύπου. Στην περίπτωση που θέλουμε

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

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα; Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο Τι θα τυπωθεί στον παρακάτω κώδικα; Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο Τι θα τυπωθεί στον παρακάτω κώδικα; Χωρίς να αλλάξουμε τον τύπο των a,b,

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 1 Εισαγωγή Ο προγραμματισμός είναι μια διαδικασία επίλυσης προβλημάτων με χρήση Η/Υ. Ένα πρόγραμμα είναι ένα σύνολο εντολών κάποιας γλώσσας προγραμματισμού,

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