Συνάρτηση Διαδικασία

Σχετικά έγγραφα
Εισαγωγή στον Προγραμματισμό H/Y (Fortran 90/95/2003)

Παράδειγμα Να γράψετε πρόγραμμα που θα υπολογίζει με τη βοήθεια συναρτήσεων τον n-οστό όρο της αναδρομικής ακολουθίας x n =(n-4)!x n-1 +(n-3)!

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

Μορφοποίηση της εξόδου

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

Δομή προγράμματος στη Fortran

Δομή προγράμματος στη Fortran

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

IMPLICIT NONE INTEGER :: a, b, c

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

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

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

Μονοδιάστατοι πίνακες

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

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

ΦΥΣ 145 Μαθηματικές Μέθοδοι στη Φυσική. Γράψτε το ονοματεπώνυμο και αριθμό ταυτότητάς σας στο πάνω μέρος της αυτής της σελίδας.

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Πανεπιστήμιο Πελοποννήσου. Σχολή Θετικών Επιστημών & Τεχνολογίας. Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών. Προγραμματισμός Ι Εργαστήριο

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Εισαγωγή στον Προγραμματισμό H/Y (Fortran 90/95/2003)

Μονοδιάστατοι πίνακες (συνέχεια)

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

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

Υπο-προγράμματα στη Fortran

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

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

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

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Αναδρομικός αλγόριθμος

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 4

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Σημειωματάριο μαθήματος 1ης Νοε. 2017

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

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

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

Εντολές Επανάληψης. Επικ. Καθ. Ν. Καραµπετάκης, Τµήµα. Τµήµα Μαθηµατικών, Α.Π.Θ.

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

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

8 FORTRAN 77/90/95/2003

Αναδρομικοί Αλγόριθμοι

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

Ευφυής Προγραμματισμός

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ FORTRAN 77

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

ιαφάνειες παρουσίασης #4

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Συναρτήσεις και Υπορουτίνες

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναδροµικές Συναρτήσεις Χειµερινό Εξάµηνο 2014

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

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

ιαφάνειες παρουσίασης #4

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

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

0.1 Εκχειλίσεις κατά την Επίλυση Τετραγωνικής Εξίσωσης

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

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ. Σταυράκης

ιαφάνειες παρουσίασης #7

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

Εισαγωγή στη Fortran. Μάθημα 3 ο. Ελευθερία Λιούκα

Χαρακτηριστικά αναδροµής

1. If log x 2 y 2 = a, then dy / dx = x 2 + y 2 1] xy 2] y / x. 3] x / y 4] none of these

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

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

Προγραμματισμός Αναδρομή

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

ΦΥΣ Διαλ.03. Ø Εντολές ελέγχου και λογικής. Ø Εντολές µεταφοράς. Ø Βρόγχοι επανάληψης εντολών. Ø Βρόγχοι επανάληψης µε λογικές σχέσεις

Λογικές εκφράσεις και μεταβλητές

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

Λυμένα παραδείγματα με τις for, while, do-while

Δομές ελέγχου. ομαδοποίηση εντολών εκτέλεση εντολών υπό συνθήκη επανάληψη εντολών

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

Προγραμματισμός Αναδρομή

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

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

διακριτοποίηση αριθµητική παραγώγιση

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

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

Transcript:

Συνάρτηση Διαδικασία Συνάρτηση (function) : είναι ένα υποπρόγραμμα που στόχο του έχει να υπολογίζει και να επιστρέφει μόνο μια τιμή με το όνομά της όπως οι γνωστές μαθηματικές συναρτήσεις, πρδ. SIN(X), COS(X), EXP(X) κ.λ.π..

Παράδειγμα όταν είναι χρήσιμο να ορίσουμε δική μας συνάρτηση είναι αυτή: Να γράψετε πρόγραμμα που θα διαβάζει τους ακέραιους αριθμούς n, m και θα υπολογίζει το διωνυμικό συντελεστή (Binomial coefficient) n n! n m m m! n m! 0

Διαχωρισμός των υποπρογραμμάτων σε δύο κατηγορίες Υποπρογράμματα Συναρτήσεις Διαδικασίες Συνάρτηση (function) : είναι ένα υποπρόγραμμα που στόχο του έχει να υπολογίζει και να επιστρέφει μόνο μια τιμή με το όνομά της όπως οι γνωστές μαθηματικές συναρτήσεις, πρδ. SIN(X), COS(X) κ.λ.π.. Διαδικασία (subroutine) : είναι ένα υποπρόγραμμα το οποίο έχει όλα τα χαρακτηριστικά ενός προγράμματος.

Διαχωρισμός των τυπικών (formal) παραμέτρων INTENT(IN): δήλωση τυπικών παραμέτρων οι οποίες εισάγουν δεδομένα από το κύρίο πρόγραμμα, χωρίς να αλλάζει η τιμή τους μέσα στη διαδικασία. INTENT(OUT): δήλωση τυπικών παραμέτρων οι οποίες εξάγουν αποτελέσματα που υπολογίστηκαν μέσα στη διαδικασία. INTENT(INOUT): δήλωση τυπικών παραμέτρων οι οποίες εισάγουν δεδομένα από το κυρίως πρόγραμμα, αλλά και επιστρέφουν αποτελέσματα μέσω της διαδικασίας (και συνεπώς αλλάζει η τιμή τους μέσα στη διαδικασία). IN INOUT OUT

Συνάρτηση Σύνταξη: τύπος_συν. FUNCTION όνομα_συν.(μεταβλητές) δηλώσεις μεταβλητών προτάσεις RETURN! return for new compiler END FUNCTION όνομα_συν

Παράδειγμα 1: REAL FUNCTION DIST(X,Y) IMPLICIT NONE REAL:: X,Y DIST= SQRT(X**2+Y**2) RETURN END FUNCTION DIST

Παράδειγμα 2 : n! = 1 2 3 n INTEGER FUNCTION FACTORIAL(N) IMPLICIT NONE INTEGER, INTENT(IN):: N INTEGER :: I,FACT IF (N==0) THEN FACTORIAL=1 END IF FACT=1 IF (N>0) THEN DO I=1,N FACT=FACT*I END DO FACTORIAL=FACT END IF RETURN END FUNCTION FACTORIAL

Άσκηση Να γράψετε πρόγραμμα που θα ζητάει από το χρήστη 5 ζεύγη ακέραιων θετικών αριθμών και θα εκτυπώνει τους αριθμούς του κάθε ζεύγους και το Μ.Κ.Δ. των αριθμών του κάθε ζεύγους (με τη βοήθεια της συνάρτησης)

program progmkd implicit none integer i,n,m,mkd do i=1,5 print*,"assigne number to ",i,"pair of numbers" read*,n,m print*,"the values of the ",i,"pair are",n,"and",m print*,"the gcd of ",n," and",m, " is",mkd(n,m) end do end program progmkd

integer function mkd(x,y) implicit none integer x,y do while(x.ne.y) if(x>y) then x=x-y else y=y-x end if end do mkd=x return end function mkd! return for new compiler

Άσκηση Να γράψετε πρόγραμμα που θα διαβάζει τους ακέραιους αριθμούς n, m και θα υπολογίζει με τη βοήθεια της συνάρτησης το διωνυμικό συντελεστή (Binomial coefficient) n n! n m m m! n m! 0

program binom implicit none integer n,m integer factorial,binomial print*,"assigne number to n: " read*,n print*,"assigne number to m: " read*,m binomial=factorial(n)/(factorial(m)*factorial(n-m)) print*,"the result is: ",binomial end program binom

integer function factorial(n) implicit none integer n,i,fact if(n==0) then factorial=1 end if fact=1 if(n>0) then do i=1,n fact=fact*i end do end if factorial=fact return end function factorial! n παιρνει τιμές n, m, n-m

Άσκηση Να γράψετε πρόγραμμα που θα διαβάζει τους ακέραιους αριθμούς n,m και θα υπολογίζει με τη βοήθεια δύο συναρτήσεων το n n! n m m m! n m! 0

program binom2fun implicit none integer n,m,binomial print*,"assigne number to n: " read*,n print*,"assigne number to m: " read*,m print*,"the result is: " print*,binomial(n,m) end program binom2fun

! integer function binomial(n,m) implicit none integer n,m,factorial binomial=factorial(n)/(factorial(m)*factorial(n-m)) return end function binomial!

integer function factorial(n) implicit none integer n,i,fact if(n==0) then factorial=1 end if fact=1 if(n>0) then do i=1,n fact=fact*i end do end if factorial=fact return end function factorial

Recursivity function of factorial Recursivity είναι η ιδιότητα που έχει η συνάρτηση να καλεί τον εαυτό της Άσκηση Να γράψετε πρόγραμμα που θα διαβάζει τους ακέραιους αριθμούς n,m και θα υπολογίζει με τη βοήθεια δύο συναρτήσεων το n n! n m m m! n m! 0

program binom2recfun implicit none integer n,m,binomial print*,"assigne number to n: " read*,n print*,"assigne number to m: " read*,m print*,"the result is: ",binomial(n,m) end program binom2recfun

! integer function binomial(n,m) implicit none integer n,m,factorial binomial=factorial(n)/(factorial(m)*factorial(n-m)) return end function binomial!

recursive integer function factorial(n) result(fact) implicit none integer n,fact if(n==0) then fact=1 end if if(n>0) then fact=n*factorial(n-1)! recursivity n!=n*(n-1)! end if return end function factorial

Άσκηση Να γράψετε πρόγραμμα που θα υπολογίζει με την βοήθεια συναρτήσεων τον n-οστό όρο της αναδρομικής ακολουθίας x n =ax n-1 +bx n-2, n>2. Οι σταθερές a, b και οι δύο πρώτοι όροι x 1, x 2 θα καθορίζονται από το χρήστη. ( a,b,x1,x2 είναι ακέραιοί αριθμοί )

program recurfun implicit none integer a,b,x1,x2,xn,n,rec print*,"assign value to a:" read*,a print*,"assign value to b:" read*,b print*,"assign value to the first term x1:" read*,x1 print*,"assign value to the second term x2:" read*,x2 print*,"assign value to n:" read*,n

do while(n<=0) print*,"n must be greater than 0" print*,"assign value to n:" read*,n end do xn=rec(a,b,x1,x2,n) print*,"the ",n, " term of the sequence is: ",xn end program recurfun!

recursive integer function rec(a,b,x1,x2,n) result(xn) implicit none integer a,b,x1,x2,n,xn if(n==1) then xn=x1 else if(n==2) then xn=x2 else xn=a*rec(a,b,x1,x2,n-1)+b*rec(a,b,x1,x2,n-2) end if return end function rec