Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα) Επικοινωνία Το υποπρόγραμμα δέχεται τιμές από το πρόγραμμα Επιστρέφει, στο πρόγραμμα νέες τιμές (αποτέλεσμα) Παράμετροι Οι τιμές που μεταφέρονται από και προς το πρόγραμμα (είναι μεταβλητές του προγράμματος) 2 είδη Διαδικασίες - Συναρτήσεις Ιδιότητες Μια είσοδο μια έξοδο Ανεξάρτητο από τα άλλα υποπρογράμματα Εκτελεί μόνο μια λειτουργία Έκταση τέτοια ώστε να είναι κατανοητό και εύκολα κατανοητό
διαδικασίες Είναι ένα υποπρόγραμμα που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος (να εισάγει δεδομένα, να εκτελεί υπολογισμούς, να εκτυπώνει αποτελέσματα κ.λ.π.). ΔΟΜΗ ΔΙΑΔΙΚΑΣΙΑ όνομα_διαδικασίας (λίστα παραμέτρων) ΔΗΛΩΣΕΙΣ ΣΤΑΘΕΡΩΝ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΗ 1 ΕΝΤΟΛΗ 2.. ΕΝΤΟΛΗ ν ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ όνομα_διαδικασίας
ΚΑΝΟΝΕΣ αναγράφονται μετά το τέλος του κύριου προγράμματος. όνομα της διαδικασίας μπορεί να είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑ. λίστα παραμέτρων - μπορούν να υπάρχουν στη λίστα καμία, μία ή περισσότερες παράμετροι. Η ύπαρξη λίστας παραμέτρων σε μια διαδικασία δεν είναι υποχρεωτική. ισχύουν όλοι οι κανόνες σύνταξης προγραμμάτων. Η κλήση μιας διαδικασίας γίνεται με την εντολή ΚΑΛΕΣΕ. Η σύνταξη της εντολής είναι η εξής: ΚΑΛΕΣΕ όνομα_διαδικασίας (λίστα παραμέτρων)
παράδειγμα Να γίνει πρόγραμμα, το οποίο θα διαβάζει από το πληκτρολόγιο δύο αριθμούς και θα υπολογίζει και θα τυπώνει τον μεγαλύτερο από αυτούς. Για τον υπολογισμό του μεγίστου δύο αριθμών να χρησιμοποιήσετε διαδικασία. ΠΡΟΓΡΑΜΜΑ Μεγιστος_2_αριθμών ΠΡΑΓΜΑΤΙΚΕΣ: a, b, max ΓΡΑΨΕ 'Δώσε πρώτο αριθμό:' ΔΙΑΒΑΣΕ a ΓΡΑΨΕ 'Δώσε δεύτερο αριθμό:' ΔΙΑΒΑΣΕ b ΚΑΛΕΣΕ ΜΕΓΙΣΤΟΣ (a, b, max) ΓΡΑΨΕ 'Ο μέγιστος αριθμός είναι: ', max ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Μεγιστος_2_αριθμών --------------------------------------------------------- ΔΙΑΔΙΚΑΣΙΑ ΜΕΓΙΣΤΟΣ (x, y, μεγ) ΠΡΑΓΜΑΤΙΚΕΣ: x, y, μεγ ΑΝ x > y ΤΟΤΕ μεγ x ΑΛΛΙΩΣ μεγ y ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ ΔΙΑΔΙΚΑΣΙΑΣ ΜΕΓΙΣΤΟΣ παρατήρηση Οι μεταβλητές που ανήκουν σε διαφορετικά τμήματα ενός προγράμματος (κύριο πρόγραμμα, διαδικασία ή συνάρτηση) είναι υποχρεωτικά διαφορετικές. Κατά συνέπεια, μπορούν να έχουν το ίδιο όνομα, καθώς αυτό αντιστοιχεί σε διαφορετική οντότητα κάθε φορά. Είναι όμως σκόπιμο, να αποφεύγεται η χρήση ίδιων ονομάτων σε μεταβλητές προγραμμάτων και διαδικασιών ή συναρτήσεων που επικοινωνούν, ώστε να μην συγχέονται μεταξύ τους.
συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα το οποίο υπολογίζει μια τιμή (αριθμητική, χαρακτήρα ή λογική) και την επιστρέφει στο πρόγραμμα. Κάθε συνάρτηση χαρακτηρίζεται από τον τύπο της και τη λίστα παραμέτρων. Ο τύπος αντιστοιχεί στον τύπο της τιμής που επιστρέφει στο πρόγραμμα. Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές μεταβιβάζονται στη συνάρτηση κατά την κλήση της. ΔΟΜΗ ΣΥΝΑΡΤΗΣΗ όνομα (λίστα παραμέτρων): τύπος συνάρτησης ΔΗΛΩΣΕΙΣ ΣΤΑΘΕΡΩΝ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΗ 1 ΕΝΤΟΛΗ 2. όνομα έκφραση. ΕΝΤΟΛΗ ν ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ όνομα
ΚΑΝΟΝΕΣ αναγράφονται μετά το τέλος του κύριου προγράμματος. όνομα κάθε συνάρτησης μπορεί να είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ. χαρακτηρίζεται από τον τύπο της, ο οποίος αντιστοιχεί στον τύπο της τιμής που επιστρέφει στο κύριο πρόγραμμα. Μπορεί να πάρει τιμές όλων των τύπων δεδομένων της ΓΛΩΣΣΑΣ (ΠΡΑΓΜΑΤΙΚΕΣ, ΑΚΕΡΑΙΕΣ, ΛΟΓΙΚΕΣ, ΧΑΡΑΚΤΗΡΕΣ). Στις εντολές της συνάρτησης πρέπει υποχρεωτικά να περιλαμβάνεται μία εντολή εκχώρησης τιμής στη μεταβλητή με το όνομα της συνάρτησης. ισχύουν όλοι οι κανόνες σύνταξης προγραμμάτων.
ΠΡΟΓΡΑΜΜΑ Μεγιστος_2_αριθμών ΠΡΑΓΜΑΤΙΚΕΣ: a, b, max ΓΡΑΨΕ 'Δώσε πρώτο αριθμό:' ΔΙΑΒΑΣΕ a ΓΡΑΨΕ 'Δώσε δεύτερο αριθμό:' ΔΙΑΒΑΣΕ b ΚΑΛΕΣΕ ΜΕΓΙΣΤΟΣ (a, b, max) ΓΡΑΨΕ 'Ο μέγιστος αριθμός είναι: ', max ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Μεγιστος_2_αριθμών --------------------------------------------------------- ΔΙΑΔΙΚΑΣΙΑ ΜΕΓΙΣΤΟΣ (x, y, μεγ) ΠΡΑΓΜΑΤΙΚΕΣ: x, y, μεγ ΑΝ x > y ΤΟΤΕ μεγ x ΑΛΛΙΩΣ μεγ y ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ ΔΙΑΔΙΚΑΣΙΑΣ ΜΕΓΙΣΤΟΣ ΠΡΟΓΡΑΜΜΑ Μέγιστος_2_αριθμών : ΠΡΑΓΜΑΤΙΚΕΣ: a, b, max ΓΡΑΨΕ 'Δώσε πρώτο αριθμό: ' ΔΙΑΒΑΣΕ a ΓΡΑΨΕ 'Δώσε δεύτερο αριθμό: ΔΙΑΒΑΣΕ b max ΜΕΓΙΣΤΟΣ (a, b) ΓΡΑΨΕ 'Ο μέγιστος αριθμός είναι: ', max ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Μέγιστος_2_αριθμών -------------------------------------------- ΣΥΝΑΡΤΗΣΗ ΜΕΓΙΣΤΟΣ (x, y): ΠΡΑΓΜΑΤΙΚΗ : ΠΡΑΓΜΑΤΙΚΕΣ: x, y ΑΝ x > y ΤΟΤΕ ΜΕΓΙΣΤΟΣ x ΑΛΛΙΩΣ ΜΕΓΙΣΤΟΣ y ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΜΕΓΙΣΤΟΣ
ΤΥΠΟΙ ΔΙΑΔΙΚΑΣΙΩΝ 1. Διαδικασίες που δεν δέχονται ούτε επιστρέφουν τιμές στο κύριο πρόγραμμα Στις περιπτώσεις των διαδικασιών αυτών δεν υπάρχει λίστα παραμέτρων. Συνήθως, χρησιμοποιούνται για την εμφάνιση μηνυμάτων ή τη δημιουργία πλαισίων εκτύπωσης στην οθόνη. ΠΡΟΓΡΑΜΜΑ απορία. ΜΒΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ: απάντηση ΓΡΑΨΕ Ποια είναι η καλύτερη ομάδα ; ΔΙΑΒΑΣΕ απάντηση ΚΑΛΕΣΕ ΜΗΝΥΜΑ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ απορία ------------------------- ΔΙΑΔΙΚΑΣΙΑ ΜΗΝΥΜΑ ΓΡΑΨΕ η Liverpool ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΜΗΝΥΜΑ
2. Διαδικασίες που δέχονται αλλά δεν επιστρέφουν τιμές στο κύριο πρόγραμμα. Το παρακάτω πρόγραμμα δέχεται ένα ακέραιο αριθμό και εμφανίζει ένα μήνυμα, ανάλογα με το αν είναι άρτιος ή περιττός. Η διαδικασία που χρησιμοποιείται δεν επιστρέφει τιμές στο κύριο πρόγραμμα. ΠΡΟΓΡΑΜΜΑ έλεγχος_1 ΑΚΕΡΑΙΕΣ: Ν ΧΑΡΑΚΤΗΡΕΣ: ΜΗΝ ΓΡΑΨΕ ΔΩΣΕ ΑΚΕΡΑΙΟ: ΔΙΑΒΑΣΕ Ν ΑΝ Ν MOD 2 = 1 ΤΟΤΕ ΜΗΝ ΕΙΝΑΙ ΠΕΡΙΤΤΟΣ ΑΛΛΙΩΣ ΜΗΝ ΕΙΝΑΙ ΑΡΤΙΟΣ ΤΕΛΟΣ_ΑΝ ΚΑΛΕΣΕ ΜΗΝΥΜΑ (ΜΗΝ) ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ έλεγχος_1 ------------------------------- ΔΙΑΔΙΚΑΣΙΑ ΜΗΝΥΜΑ (msg) ΧΑΡΑΚΤΗΡΕΣ: msg ΓΡΑΨΕ msg ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΜΗΝΥΜΑ
3. Διαδικασίες που δέχονται και επιστρέφουν τιμές στο κύριο πρόγραμμα. Το παρακάτω πρόγραμμα δέχεται ένα ακέραιο αριθμό και εμφανίζει ένα μήνυμα, ανάλογα με το αν είναι άρτιος ή περιττός. Η διαδικασία που χρησιμοποιείται επιστρέφει τιμές στο κύριο πρόγραμμα. ΠΡΟΓΡΑΜΜΑ έλεγχος_2 ΑΚΕΡΑΙΕΣ: Α ΧΑΡΑΚΤΗΡΕΣ: ΜΗΝΥΜΑ ΓΡΑΨΕ ΔΩΣΕ ΑΚΕΡΑΙΟ: ΔΙΑΒΑΣΕ Α ΚΑΛΕΣΕ check (A, ΜΗΝΥΜΑ) ΓΡΑΨΕ ΜΥΝΗΜΑ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ έλεγχος_2 ------------------------------- ΔΙΑΔΙΚΑΣΙΑ check (N, msg) ΑΚΕΡΑΙΕΣ: Ν ΧΑΡΑΚΤΗΡΕΣ: msg ΑΝ Ν MOD 2 = 1 ΤΟΤΕ msg ΕΙΝΑΙ ΠΕΡΙΤΤΟΣ ΑΛΛΙΩΣ msg ΕΙΝΑΙ ΑΡΤΙΟΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ check
ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ διαδικασιών ΚΑΙ συναρτήσεων. Θα πρέπει να τονιστεί ότι η λίστα παραμέτρων ορίζει τις τιμές που μεταβιβάζονται στο υποπρόγραμμα και τις τιμές που επιστρέφει αυτό στο κύριο πρόγραμμα. Συνεπώς: Η λίστα παραμέτρων περιλαμβάνει τα ονόματα των μεταβλητών που ορίζουν την επικοινωνία προγράμματος - υποπρογράμματος. Οι παράμετροι ενός υποπρογράμματος θα πρέπει να είναι του ίδιου πλήθους και του ίδιου τύπου με τις αντίστοιχες μεταβλητές του προγράμματος που χρησιμοποιούνται για επικοινωνία. Είναι επιτρεπτό το πέρασμα της τιμής μιας ακέραιας μεταβλητής του κυρίου προγράμματος σε μία πραγματική παράμετρο του υποπρογράμματος. Το αντίστροφο, δηλαδή το πέρασμα πραγματικής τιμής σε ακέραια παράμετρο του υποπρογράμματος, δεν επιτρέπεται. Δεν μπορούν να χρησιμοποιηθούν σταθερές ως παράμετροι. Η αντιστοίχιση παραμέτρων και μεταβλητών του προγράμματος γίνεται με βάση τη σειρά αναγραφής τους στη λίστα.
ΔΙΑΔΙΚΑΣΙΕΣ Ή ΣΥΝΑΡΤΗΣΕΙΣ; Για να επιλέξουμε τον κατάλληλο τύπο υποπρογράμματος θα πρέπει να έχουμε υπόψη ότι: Μια συνάρτηση υπολογίζει μια τιμή και την επιστρέφει στο πρόγραμμα. Μια διαδικασία μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος και να επιστρέφει στο πρόγραμμα καμία, μία ή περισσότερες τιμές. Σύμφωνα με τα παραπάνω ισχύουν τα εξής: 1.Μια διαδικασία μπορεί να υλοποιήσει οποιοδήποτε υποπρόγραμμα. 2. Συνάρτηση μπορεί να χρησιμοποιηθεί μόνο στις περιπτώσεις υπολογισμών που επιστρέφουν μία και μόνο τιμή στο πρόγραμμα. 3. Μια διαδικασία μπορεί να υλοποιήσει υπολογισμούς που επιστρέφουν μία ή περισσότερες τιμές στο πρόγραμμα. 4. Η εισαγωγή δεδομένων από το πληκτρολόγιο και η εμφάνιση δεδομένων στην οθόνη μπορεί να υλοποιηθεί μόνο με χρήση διαδικασιών. Η συνάρτηση συμπεριφέρεται σαν μεταβλητή Η διαδικασία συμπεριφέρεται σαν εντολή.