Από συνάρτηση σε διαδικασία 1. Εντοπίζουμε τις παραμέτρους που αναφέρονται και μετά την κλήση της συνάρτησης. 2. Μέσα στο πρόγραμμα, αλλάζουμε όνομα στις παραμέτρους αυτές, αφού προηγουμένως (πριν την κλήση της συνάρτησης) τους εκχωρήσουμε την τιμή της παραμέτρου που αντικαθιστούν. 3. Προσθέτουμε στην διαδικασία μία ακόμη παράμετρο, στην οποία θα εκχωρείται αυτό που επιστρέφει η συνάρτηση. Στην περίπτωση που το αποτέλεσμα της συνάρτησης απλά εμφανίζεται, χρησιμοποιούμε μία νέα μεταβλητή. Αν πάλι το αποτέλεσμα της συνάρτησης εκχωρείται σε κάποια μεταβλητή, χρησιμοποιούμε αυτήν ως νέα μεταβλητή της διαδικασίας. 4. Δηλώνουμε στο πρόγραμμα τις νέες μεταβλητές. 5. Δηλώνουμε στη διαδικασία τη νέα παράμετρο η οποία αντικαθιστά το όνομα της συνάρτησης. Συνοπτικά: Αλλάζουμε, μόνο στο πρόγραμμα, τα ονόματα των παραμέτρων που αναφέρονται και μετά την κλήση της συνάρτησης. ΠΡΟΓΡΑΜΜΑ synartisi ΑΚΕΡΑΙΕΣ: A[10], max, i, C, S ΓΡΑΨΕ ΥΠΟ(A, max) ΣΥΝΑΡΤΗΣΗ ΥΠΟ(A, max):ακεραια ΑΚΕΡΑΙΕΣ: A[10], max, i, C, SUM ΑΝ A[i]>max ΤΟΤΕ max <- A[i] SUM <- SUM + A[i] ΥΠΟ <- max ΠΡΟΓΡΑΜΜΑ synartisi_se_diadikasia ΑΚΕΡΑΙΕΣ: A[10], max, i, C, S, B, maxmax ΚΑΛΕΣΕ ΥΠΟ(A, maxmax, B) ΓΡΑΨΕ B ==== ΔΙΑΔΙΚΑΣΙΑ ΥΠΟ(A, max, B) ΑΚΕΡΑΙΕΣ: A[10], max, i, B ΑΝ A[i] > max ΤΟΤΕ max <- A[i] SUM <- SUM + A[i] B <- max 1
Απαλοιφή συνάρτησης Α' ΦΑΣΗ 1. Εντοπίζουμε τις παραμέτρους που αναφέρονται και μετά την κλήση της συνάρτησης. 2. Αλλάζουμε όνομα στις παραμέτρους αυτές και στο πρόγραμμα και στη συνάρτηση, αφού προηγουμένως (πριν την κλήση της συνάρτησης) τους εκχωρήσουμε την τιμή της παραμέτρου που αντικαθιστούν. 3. Εντοπίζουμε όλες τις κοινές μεταβλητές προγράμματος και συνάρτησης και που αναφέρονται και μετά την κλήση της συνάρτησης και τους αλλάζουμε όνομα εντός της συνάρτησης. Συνοπτικά: Αλλάζουμε, και στο πρόγραμμα και στη συνάρτηση, τα ονόματα μόνο των παραμέτρων που αναφέρονται και μετά την κλήση της συνάρτησης. Επίσης αλλάζουμε μόνο στη συνάρτηση, τα ονόματα των μεταβλητών της που υπάρχουν και στο πρόγραμμα και αναφέρονται και μετά την κλήση της συνάρτησης. ΠΡΟΓΡΑΜΜΑ synartisi ΑΚΕΡΑΙΕΣ: A[10], max, i, C, S ΓΡΑΨΕ ΥΠΟ(A, max) ΣΥΝΑΡΤΗΣΗ ΥΠΟ(A, max) :ΑΚΕΡΑΙΑ ΑΚΕΡΑΙΕΣ: A[10], max, i, C, SUM ΑΝ A[i]>max ΤΟΤΕ max <- A[i] SUM <- SUM + A[i] ΥΠΟ <- max ΠΡΟΓΡΑΜΜΑ synartisi_se_programma_a ΑΚΕΡΑΙΕΣ: A[10], max, i, C, S, maxmax ΓΡΑΨΕ ΥΠΟ(A, maxmax) ΣΥΝΑΡΤΗΣΗ ΥΠΟ(A, maxmax) :ΑΚΕΡΑΙΑ ΑΚΕΡΑΙΕΣ: A[10], maxmax, ii, CC, SUM C ΓΙΑ ii ΑΠΟ 2 ΜΕΧΡΙ 10 ΑΝ A[ii]>maxmax ΤΟΤΕ maxmax <- A[ii] SUM <- SUM + A[ii] ΥΠΟ <- maxmax 2
Β' ΦΑΣΗ 1. Αντιγράφουμε εντός του προγράμματος και πριν την κλήση της συνάρτησης, το σώμα της συνάρτησης. 2. Η κλήση της συνάρτησης, αντικαθίσταται με το δεξί μέλος της εκχώρησης στο όνομά της. 3. Δηλώνουμε τις τυχόν νέες μεταβλητές. ΠΡΟΓΡΑΜΜΑ synartisi_se_programma_a ΑΚΕΡΑΙΕΣ: A[10], max, i, C, S, maxmax ΓΡΑΨΕ ΥΠΟ(A, maxmax) ΣΥΝΑΡΤΗΣΗ ΥΠΟ(A, maxmax) :ΑΚΕΡΑΙΑ ΑΚΕΡΑΙΕΣ: A[10], maxmax, ii, CC, SUM C ΓΙΑ ii ΑΠΟ 2 ΜΕΧΡΙ 10 ΑΝ A[ii]>maxmax ΤΟΤΕ maxmax <- A[ii] SUM <- SUM + A[ii] ΥΠΟ <- maxmax ΠΡΟΓΡΑΜΜΑ synartisi_se_programma_b ΑΚΕΡΑΙΕΣ: A[10], max, i, C, S, maxmax, ii, CC, SUM C ΓΙΑ ii ΑΠΟ 2 ΜΕΧΡΙ 10 ΑΝ A[ii]>maxmax ΤΟΤΕ maxmax <- A[ii] SUM <- SUM + A[ii] ΓΡΑΨΕ maxmax 3
Από διαδικασία σε συνάρτηση (με την προϋπόθεση πως χρησιμοποιείται μόνο μία παράμετρος επιστροφής τιμών) 1. Εντοπίζουμε την παράμετρο μέσω της οποίας θέλουμε να επιστρέψει τιμή η διαδικασία. 2. Μέσα στο πρόγραμμα, αντικαθιστούμε αυτό που επιστρέφει η διαδικασία, με την συνάρτηση. 3. Πριν τελειώσει η συνάρτηση, εκχωρούμε στο όνομά της, την τιμή που θέλουμε να επιστραφεί. ΠΡΟΓΡΑΜΜΑ diadikasia == ΔΙΑΔΙΚΑΣΙΑ ΤΑΞ(Β, N) ΑΚΕΡΑΙΕΣ: Β[10], temp, i, j, C, N ΑΝ Β[j-1]>Β[j] ΤΟΤΕ temp <- Β[j-1] Β[j-1] <- A[j] Β[j] <- temp ΠΡΟΓΡΑΜΜΑ diadikasia_se_synartisi ΑΚΕΡΑΙΕΣ: A[10], i, N, C ΓΡΑΨΕ ΤΑΞ(A, N), C == ΣΥΝΑΡΤΗΣΗ ΤΑΞ(Β, N):ΑΚΕΡΑΙΑ ΑΚΕΡΑΙΕΣ: Β[10], temp, i, j, C, N ΑΝ Β[j-1]>Β[j] ΤΟΤΕ temp <- Β[j-1] Β[j-1] <- Β[j] Β[j] <- temp ΤΑΞ <- Β[N-1] 4
Απαλοιφή διαδικασίας Α' ΦΑΣΗ 1. Στη διαδικασία, κάνουμε ίδια, όσα ονόματα παραμέτρων είναι διαφορετικά. 2. Εντοπίζουμε τις κοινές μεταβλητές προγράμματος και διαδικασίας, που αναφέρονται και μετά την κλήση της διαδικασίας και τους αλλάζουμε όνομα εντός της διαδικασίας. ΠΡΟΓΡΑΜΜΑ diadikasia == ΔΙΑΔΙΚΑΣΙΑ ΤΑΞ(Β, N) ΑΚΕΡΑΙΕΣ: Β[10], temp, i, j, C, N ΑΝ Β[j-1]>Β[j] ΤΟΤΕ temp <- Β[j-1] Β[j-1] <- Β[j] Β[j] <- temp ΠΡΟΓΡΑΜΜΑ diadikasia_se_programma_a == ΔΙΑΔΙΚΑΣΙΑ ΤΑΞ(A, N) ΑΚΕΡΑΙΕΣ: A[10], temp, i, j, CC, N C ΑΝ A[j-1]>A[j] ΤΟΤΕ temp <- A[j-1] A[j-1] <- A[j] A[j] <- temp 5
Β' ΦΑΣΗ 1. Αντικαθιστούμε την κλήση της διαδικασίας, με το σώμα της. 2. Δηλώνουμε τις τυχόν νέες μεταβλητές. ΠΡΟΓΡΑΜΜΑ diadikasia_se_programma_a == ΔΙΑΔΙΚΑΣΙΑ ΤΑΞ(A, N) ΑΚΕΡΑΙΕΣ: A[10], temp, i, j, CC, N C ΑΝ A[j-1]>A[j] ΤΟΤΕ temp <- A[j-1] A[j-1] <- A[j] A[j] <- temp ΠΡΟΓΡΑΜΜΑ diadikasia_se_programma, j, CC, temp C ΑΝ A[j-1]>A[j] ΤΟΤΕ temp <- A[j-1] A[j-1] <- A[j] A[j] <- temp 6