Κεφάλαιο 7: Υπορουτίνες

Σχετικά έγγραφα
Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Pascal. 15 Νοεμβρίου 2011

Κεφάλαιο 6: Εµβέλεια και έσµευση Μνήµης. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήµιο Πατρών

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

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

Pascal. 26 Οκτωβρίου 2011

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

Συναρτήσεις. Υποπρόγραμμα

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

MySQL stored procedures

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

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

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

Προγραμματισμός PASCAL

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

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

Υποπρογράµµατα Συναρτήσεις. Στόχοι Μαθήµατος. Οι µαθητές να µπορούν:

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Fortran και Αντικειμενοστραφής προγραμματισμός.

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

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

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

Κεφάλαιο 4: Μεταβλητές, Εκφράσεις, Εντολές. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ:

Τεχνικός Εφαρμογών Πληροφορικής

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Δρ. Ιωάννης Λυχναρόπουλος Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

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

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

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

ιαφάνειες παρουσίασης #5 (β)

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

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

Pascal - Βασικές Έννοιες

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

Μεταγλωττιστές Βελτιστοποίηση

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

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

Outline. 4 Object-Oriented Programming

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Οδηγός Προετοιμασίας για τη Τελική Εξέταση

Αποτελέσματα προόδου

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

ΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης)

Διδάσκων: Παναγιώτης Ανδρέου

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών

Διαφάνειες παρουσιάσεων Αρχικές Διαφάνειες σε Pascal: Σ.Ζάχος, Ν.Παπασπύρου Προσαρμογή σε Fortran: Α.Παγουρτζής, Δ.Σούλιου

{ int a = 5; { int b = 7; a = b + 3;

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

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

Αναφορές, είκτες και Αλφαριθμητικά

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

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

Μεταβίβαση Παραµέτρων σε Υποπρογράµµατα

Παράμετροι 19/9/2007. Πέρασμα παραμέτρων. Περιεχόμενα. Θέσεις και ονόματα στο ταίριασμα παραμέτρων. Ταίριασμα παραμέτρων μέσω ονομάτων

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

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

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

Κεφάλαιο 7ο: Συναρτήσεις και Υπορουτίνες

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

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

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

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

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

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

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

Transcript:

Κεφάλαιο 7: Υπορουτίνες Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Ορισμός Αφαίρεση με χρήση υπορουτινών (subroutine abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων που μπορεί να περιγραφεί φορμαλιστικά. Η περιγραφή πρέπει να δείχνει πως σχετίζονται οι έξοδοι με τις εισόδους, αλλά δεν χρειάζεται να δείχνει τον τρόπο με τον οποίο υπολογίζονται οι έξοδοι. Ο προγραμματιστής εστιάζει την προσοχή του στο τι γίνεται στο σημείο της κλήσης, και όχι στον τρόπο με τον οποίο γίνεται.

Είδη Υπορουτινών ιαδικασία (procedure) Εκπληρώνει το έργο της, είτε εκχωρώντας τα αποτελέσματά της σε μία ή περισσότερες από τις παραμέτρους της, είτε αλλάζοντας το περιβάλλον της (τιμές μη-τοπικών μεταβλητών, ΠΑ), είτε κάνοντας και τα δύο. Συνάρτηση (function) Είναι ιαδικασία που, επιπλέον, επιστρέφει μία τιμή.

Συστατικά Υπορουτινών Μία Υπορουτίνα (ΥΡ), περιλαμβάνει 4 (διαδικασίες), ή 5 (συναρτήσεις) στοιχεία : Όνομα ΥΡ Τυπικές Παράμετροι Τοπικό Περιβάλλον Αναφοράς Κώδικας Αποτέλεσμα (μόνο για Συναρτήσεις)

Και άλλοι Ορισμοί Τυπικές Παράμετροι: εν είναι μεταβλητές, αλλά μόνο ονόματα, που δείχνουν το ρόλο που θα παίξουν οι πραγματικές παράμετροι, όταν κληθεί η υπορουτίνα. Πραγματικές Παράμετροι: Οι μεταβλητές και/ή οι εκφράσεις που παρέχονται σε μια υπορουτίνα, για να αντικαταστήσουν τις τυπικές παραμέτρους.

Παραδείγματα (1) Pascal: PROCEDURE F(X: real; var Y: integer) [: real] [FUNCTION] VAR M: array[1..10] of real; N: integer begin end;

Παραδείγματα (2) C functions: float power(float base, float exp) { } Κλήση: x = power(10.0, x) C procedures: void sort(int x[], int a) { } Κλήση: sort(scores, 100)

Σχεδιαστικά Θέματα (1) Λίστα Παραμέτρων ή Προσδιορισμός Παραμέτρων Εκτός από το όνομα των παραμέτρων, περιλαμβάνει τον τύπο και τον τρόπο χρήσης. Π.χ. PROCEDURE F( X: real; var Y: integer) Αντιστοιχία Τυπικών Πραγματικών Παραμέτρων Με βάση τη σειρά αναγραφής στον ορισμό της υπορουτίνας. Εξαίρεση: Η Ada επιτρέπει την ανατροπή της σειράς. Π.χ. Ορισμός: F(A, B). Κλήση: F(B->100, A->10).

Σχεδιαστικά Θέματα (2) Είδος τιμών που επιστρέφει μια Συνάρτηση FORTRAN, ALGOL60: Απλοί βαθμωτοί Τ (real, int, bool) PL/1: Βαθμωτοί και αλφαριθμητικά και pointers Pascal: βαθμωτοί και pointers C, Ada: Όλους τους Τ. Στις περισσότερες ΓΠ, πρέπει να εκχωρηθεί τιμή στο όνομα της function, πριν το τέλος της περιγραφής της. Π.χ. Pascal: function f(x: integer): integer begin if x<=1 then f:=1 else f:=x*f(x-1) end;

Υπολογισμός και Μεταβίβαση Παραμέτρων Υπολογισμός Παραμέτρων (parameter evaluation) ιεργασία κατά την οποία κάθε πραγματική παράμετρος αναγνωρίζεται ότι συνδέεται με την αντίστοιχη τυπική παράμετρο, και μετά υπολογίζεται. Μεταβίβαση Παραμέτρων (parameter passing) Ο τρόπος με τον οποίο η υπολογισμένη πραγματική παράμετρος μεταφέρεται (συνδέεται) στην υπορουτίνα. Κλήση με Τιμή (call by value) Κλήση με Αναφορά (call by reference) Κλήση με Τιμή - Αποτέλεσμα (call by value result) Κλήση με Όνομα (call by name).

Κλήση με Τιμή (1) Η πραγματική παράμετρος αποαναφοροποιείται και επιστρέφει μία τιμή, η οποία αντιγράφεται σε μια νέα θέση μνήμης, με την οποία συνδέεται το όνομα της τυπικής παραμέτρου. ηλαδή, πρακτικά δημιουργείται μια νέα (τοπική) μεταβλητή. C, C++, Pascal (default) Πλεονέκτημα: Η υπορουτίνα μόνο διαβάζει την πραγματική παράμετρο, δεν έχει πρόσβαση για να την αλλάξει. Μειονέκτημα: ιπλασιασμός χρησιμοποιούμενης μνήμης.

Κλήση με Τιμή (2) Σχηματικά: Ορισμός: Procedure P(x, y) Κλήση: P(a, b) a 10 a 10 b 45 b 45 x x 10 y y 45

Κλήση με Αναφορά (1) Αν η πραγματική παράμετρος χρησιμοποιεί μνήμη (π.χ. είναι μεταβλητή), αυτή η μνήμη συνδέεται με την τυπική παράμετρο, όταν γίνεται κλήση της υπορουτίνας. ηλαδή, πρακτικά η τυπική παράμετρος γίνεται pointer στην πραγμ. παράμετρο. FORTRAN, PL/1, Pascal (με VAR στις τυπικές παραμέτρους) C, C++ με χρήση pointers: void A(int *f) κλήση: Α(&x) Κλήση με πραγματικές παραμέτρους σταθερές: P(var x) Κλήση: P(10) Αν αλλάζει η τιμή του x στη διαδικασία, η θέση μνήμης του, λέγεται ανώνυμη μεταβλητή. Πλεονεκτήματα: Απόδοση, γρήγορη αλλαγή τιμής της πραγματικής παραμέτρου.

Κλήση με Αναφορά (2) Σχηματικά: Procedure P( VAR x, y) Κλήση: P(a, b) a 10 a 10 b 45 b 45 x x y y

Κλήση με Τιμή - Αποτέλεσμα Όταν η πραγματική παράμετρος είναι μεταβλητή, αποαναφοροποιείται και η τιμή αντιγράφεται σε μια νέα θέση μνήμης, όπως στην Κλήση με Τιμή. Η θέση αυτή μνήμης, χρησιμοποιείται στο σώμα της υπορουτίνας. Κατά την έξοδο, η τιμή της τυπικής παραμέτρου αντιγράφεται στη θέση μνήμης της πραγματικής μεταβλητής. ALGOL-W

Κλήση με Όνομα Αφήνει τις πραγματικές παραμέτρους χωρίς να υπολογιστεί η τιμή τους, μέχρι το χρονικό σημείο χρήσης τους στην υπορουτίνα. ηλαδή, οι πραγματικές παράμετροι αντιμετωπίζονται οι ίδιες σαν υπορουτίνες χωρίς παραμέτρους (thunk), που εκτελούνται και υπολογίζεται η τιμή τους (για να δοθεί στην τυπική παράμετρο), με το τρέχον ΠΑ του προγράμματος ή υπορουτίνας το οποίο καλεί την τρέχουσα υπορουτίνα. Τότε, η τυπική παράμετρος συνδέεται με την πραγματική παράμετρο, όπως στην Κλήση με Αναφορά. Ο υπολογισμός της πραγματικής παραμέτρου, γίνεται εξ αρχής, κάθε φορά που χρησιμοποιείται η αντίστοιχη τυπική παράμετρος. ALGOL-60, SIMULA (επιλογή του χρήστη)

Παράδειγμα MAIN VAR M: integer; C: array [1..10] of integer; Procedure R (VAR i, j: integer) begin i = i + 1; j = j + 1; write (i, j); end; Ερώτημα 3: BEGIN Τι τιμή έχει το C[3] στο τέλος με M:= 2; Κλήση με Όνομα; R (M, C[M]); Απάντηση 3: END. C [3]αρχικό + 1 Ερώτημα 1: Με την εντολή write(i,j) τι θα τυπωθεί, αν έχουμε Κλήση με Αναφορά; Απάντηση 1: 3, C [2] + 1 Ερώτημα 2: Με την εντολή write(i,j) τι θα τυπωθεί, αν έχουμε Κλήση με Όνομα; Απάντηση 2: 3, C [3] + 1