Εφαρμογές Υπολογιστών

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Προγραμματισμός PASCAL
Advertisements

Κεφάλαιο Τμηματικός προγραμματισμός
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΥΠΟΡΟΥΤΙΝΕΣ
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος ε
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος α
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 5: Επαναληπτικές και εξωτερικές συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009.
Γενική μορφή προγράμματος Pascal
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ
Διαφάνειες παρουσίασης #3
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΤΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ ΓΛΩΣΣΑΣ PASCAL ΠΑΡΟΥΣΙΑΣΗ ΠΑΡΑΔΕΙΓΜΑΤΟΣ: ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΕ ΤΙΣ ΤΡΕΙΣ ΕΠΑΝΑΛΗΠΤΙΚΕΣ.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Κεφάλαιο 10 – Υποπρογράμματα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ (ΜΗ-ΠΡΟΚΑΘΟΡΙΣΜΕΝΕΣ ΕΠΑΝΑΛΗΨΕΙΣ – WHILE – REPEAT) Καλλονιάτης Χρήστος Επίκουρος Καθηγητής Τμήμα.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Διαφάνειες παρουσίασης #2
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ (ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ - ΔΙΕΡΓΑΣΙΕΣ)
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Επιστημονικός Υπολογισμός Ι Πρώτο Εργαστήριο Εισαγωγή στο matlab 15 Οκτωβρίου 2010 Γιώργος Δρακόπουλος ΤΜΗΥΠ.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Δημιουργία προγράμματος ερωτηματολογίου Πολλαπλής Επιλογής Α. Σχεδίαση Φόρμας.
Οι εντολές επανάληψης Σε πολλά προβλήματα απαιτείται η επανάληψη ενός συνόλου ενεργειών προκειμένου να λυθεί το πρόβλημα. Θα αναφέρουμε δύο χαρακτηριστικά.
Υποπίνακες REAL A(10) A(1:9:2)=7 τότε θα έχουμε A(1)=A(3)=A(5)=A(7)=A(9)=7 A(3:)=7 τότε θα έχουμε A(3)=…=A(10)=7 A(:5)=7 τότε θα έχουμε A(1)=A(2)=A(3)=A(4)=A(5)=7.
Βασικά στοιχεία της Java
2) Aν δανειστούμε ένα ποσό Α με επιτόκιο Τ=Ε% και υποχρεωθούμε να το ξεχρεώσουμε σε Ν χρόνια, τότε το ποσό της μηνιαίας δόσης Μ θα δίνεται από τον τύπο.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Αναδρομικές Συναρτήσεις Σύνταξη: RECURSIVE type FUNCTION name1 (variables) RESULT (name2) IMPLICIT NONE Τμήμα δηλώσεων Εκτελέσιμες εντολές END FUNCTION.
Καθηγητής Νίκος Λορέντζος Προγραμματισμός & Εφαρμογές Υπολογιστών Κωδικός Μαθήματος: 2890 Κωδικός Διαφανειών: MKT130 Γεωπονικό Πανεπιστήμιο Αθηνών Τμήμα.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
Καθηγητής Νίκος Λορέντζος Προγραμματισμός & Εφαρμογές Υπολογιστών Κωδικός Μαθήματος: 2890 Κωδικός Διαφανειών: MKT130 Γεωπονικό Πανεπιστήμιο Αθηνών Τμήμα.
Δομές Επανάληψης ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
Προγραμματισμός & Εφαρμογές Υπολογιστών Κωδικός Μαθήματος: 2890 Κωδικός Διαφανειών: MKT130 Καθηγητής Νίκος Λορέντζος Γεωπονικό Πανεπιστήμιο Αθηνών Τμήμα.
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη. Αθήνα, 2015.
Αντικειμενοστραφής Προγραμματισμός Ι
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη.
Εργαστηριακό σεμινάριο Χειμερινό εξάμηνο
Κωδικός Διαφανειών: MKT119
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
ενισχυτική διδασκαλία
Ενισχυτική διδασκαλία
Εφαρμογές Υπολογιστών
Γενικές Διαδικασίες.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ» Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της.
Εφαρμογές Υπολογιστών
Βάσεις Δεδομένων & Έμπειρα Συστήματα
Η Γλώσσα Pascal Υποπρογράμματα
Στοιχεία Δομημένου Προγραμματισμού
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Εφαρμογές Υπολογιστών
Select Case Σκοπός: Εκμάθηση της εντολής (δομής) Select Case ώστε να μπορείτε να διαλέγετε μια επιλογή ανάμεσα σε πολλές διαθέσιμες στον κώδικα του προγράμματος.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Μεταγράφημα παρουσίασης:

Εφαρμογές Υπολογιστών Γεωπονικό Πανεπιστήμιο Αθηνών Τμήμα Αγροτικής Οικονομίας & Ανάπτυξης Εργαστήριο Πληροφορικής Προγραμματισμός & Εφαρμογές Υπολογιστών Κωδικός Μαθήματος: 2890 Κωδικός Διαφανειών: MKT130 Καθηγητής Νίκος Λορέντζος

9. Υποπρογράμματα Καθηγητής Νίκος Λορέντζος Γεωπονικό Πανεπιστήμιο Αθηνών Τμήμα Αγροτικής Οικονομίας & Ανάπτυξης Εργαστήριο Πληροφορικής 9. Υποπρογράμματα Καθηγητής Νίκος Λορέντζος

Παραδείγματα υποπρογραμμάτων: Οι ενσωματωμένες συναρτήσεις Υποπρόγραμμα Πρόγραμμα, του οποίου η εκτέλεση επιτυγχάνεται μέσα από άλλο πρόγραμμα. Παραδείγματα υποπρογραμμάτων: Οι ενσωματωμένες συναρτήσεις Αριθμητικές y = Abs(x) y = Sqr(x) y = Exp(x) Y = Log(x) … Τριγωνομετρικές y := Sin(x) y := Cos(x) y := Tan(x) … Άλλες 3

Εκφράσεις με ενσωματωμένες συναρτήσεις Υποπρόγραμμα Εκφράσεις με ενσωματωμένες συναρτήσεις y1 = Cos(x1) y2 = Cos(x2) y = Cos(x1) + Cos(x2) y = Cos(x1) * Cos(x2) Print Cos(x1) Print Cos(x2) Print Cos(x1) + Cos(x2) Print Cos(x1) * Cos(x2) 4

Υποπρόγραμμα Είδη Υποπρογραμμάτων Υποπρόγραμμα Συνάρτηση Υποπρόγραμμα Διαδικασία 5

Πρόγραμμα [25] Να συνταχθεί πρόγραμμα για τον υπολογισμό της αποζημίωσης παραγωγών σίτου, των οποίων η σοδειά καταστράφηκε. Το πρόγραμμα διαβάζει την έκταση ενός παραγωγού και υπολογίζει ως ποσό αποζημίωσης του, - 600 ευρώ, για καθένα από τα πρώτα 30 στρέμματα, - 400 ευρώ, για καθένα από τα τυχόν επόμενα 20 στρέμματα, - 300 ευρώ, για καθένα από τα τυχόν υπόλοιπα στρέμματα. Στη συνέχεια, το πρόγραμμα επαναλαμβάνει τα παραπάνω για άλλον ένα παραγωγό.

Υπολογισμός Αποζημίωσης [20] 30 50 600 400 300 ektasi <= 30 : apoz = 600 * ektasi 30 < ektasi <= 50 : apoz = 600 * 30 + 400 * (ektasi - 30) = 6000 + 400 * ektasi apoz = 600 * 30 50 < ektasi : + 400 * 20 + 300 * (ektasi - 50) = 11000 + 300 * ektasi - 600 ευρώ, για καθένα από τα πρώτα 30 στρέμματα - 400 ευρώ, για καθένα από τα τυχόν επόμενα 20 στρέμματα και - 300 ευρώ για καθένα από τα υπόλοιπα στρέμματα. 7

Υπολογισμός Αποζημίωσης [20] = 600 * e e <= 30: p 30 < e <= 50: = 6000 + 400 * e p 50 < e: = 11000 + 300 * e p If e <= 30 Then p = 600 * e Else ' Ισχύει ότι έκταση > 30 If e <= 50 Then ' Ισχύει ότι 30 < έκταση <= 50 p = 6000 + 400 * e Else ' Ισχύει ότι έκταση > 50 p = 11000 + 300 * e End If End If

0. Χωρίς χρήση Υποπρογράμματος 9

Χωρίς χρήση Υποπρογράμματος [25] Option Explicit Dim e1 As Single Dim p1 As Single Dim e2 As Single Dim p2 As Single Private Sub Command1_Click() e1 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") If e1 <= 30 Then p1 = 600 * e1 Else If e1 <= 50 Then p1 = 6000 + 400 * e1 p1 = 11000 + 300 * e1 End If Print "ΕΚΤΑΣΗ: " & e1, "ΠΟΣΟ: " & p1 e2 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") If e2 <= 30 Then p2 = 600 * e2 Else If e2 <= 50 Then p2 = 6000 + 400 * e2 p2 = 11000 + 300 * e2 End If Print "ΕΚΤΑΣΗ: " & e2, "ΠΟΣΟ: " & p2 End Sub 10

1. Με Υποπρόγραμμα Συνάρτηση 11

Εκφράσεις με ενσωματωμένες συναρτήσεις y1 := Cos(x1); y2 := Cos(x2); y := Cos(x1) + Cos(x2); y := Cos(x1) * Cos(x2); Print Cos(x1) Print Cos(x2) Print Cos(x1) + Cos(x2) Print Cos(x1) * Cos(x2) Εκφράσεις με δικές μας συναρτήσεις (Συναρτήσεις οριζόμενες από τον χρήστη) p1 := apozimiosi(e1); p2 := apozimiosi(e2); Print apozimiosi(e1); Print apozimiosi(e2); 12

Συναρτήσεις οριζόμενες από τον χρήστη Private Sub Command1_Click() … If e1 <= 30 Then p1 = 600 * e1 Else If e1 <= 50 Then p1 = 6000 + 400 * e1 p1 = 11000 + 300 * e1 End If If e2 <= 30 Then p2 = 600 * e2 If e2 <= 50 Then p2 = 6000 + 400 * e2 p2 = 11000 + 300 * e2 End Sub Private Sub Command1_Click() … p1 = apozimiosi(e1) p2 = apozimiosi(e2) End Sub 13

Με Υποπρόγραμμα Συνάρτηση [26] Option Explicit Dim e1 As Single Dim p1 As Single Dim e2 As Single Dim p2 As Single Private Sub Command1_Click() e1 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") p1 = apozimiosi(e1) Print "ΕΚΤΑΣΗ: " & e1, "ΠΟΣΟ: " & p1 e2 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") p2 = apozimiosi(e2) Print "ΕΚΤΑΣΗ: " & e2, "ΠΟΣΟ: " & p2 End Sub Function apozimiosi(e As Single) If e <= 30 Then apozimiosi = 600 * e Else If e <= 50 Then apozimiosi = 6000 + 400 * e apozimiosi = 11000 + 300 * e End If End Function 14

Με Υποπρόγραμμα Συνάρτηση [26] Option Explicit Dim e1 As Single Dim p1 As Single Dim e2 As Single Dim p2 As Single Private Sub Command1_Click() e1 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") p1 = apozimiosi(e1) Print "ΕΚΤΑΣΗ: " & e1, "ΠΟΣΟ: " & p1 e2 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") p2 = apozimiosi(e2) Print "ΕΚΤΑΣΗ: " & e2, "ΠΟΣΟ: " & p2 End Sub Function apozimiosi(e As Single) If e <= 30 Then apozimiosi = 600 * e Else If e <= 50 Then apozimiosi = 6000 + 400 * e apozimiosi = 11000 + 300 * e End If End Function 15

Με Υποπρόγραμμα Συνάρτηση Function apozimiosi(e As Single) If e <= 30 Then apozimiosi = 600 * e Else If e <= 50 Then apozimiosi = 6000 + 400 * e apozimiosi = 11000 + 300 * e End If End Function Option Explicit Dim e1 As Single Dim p1 As Single Dim e2 As Single Dim p2 As Single Private Sub Command1_Click() e1 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") e2 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") Print apozimiosi(e1) + apozimiosi(e2) Print "ΔΙΠΛΑΣΙΟ (e1 + e2) ", diplasio(e1, e2) End Sub Function diplasio (x, y As Single) diplasio = 2 * (x + y) End Function 16

Συντακτικό Υποπρογράμματος Συνάρτησης Κύριο Πρόγραμμα: Έχει μια από τις εκφράσεις x = name(m1, m2, …, mk) Print name (m1, m2, …, mk) όπου name είναι το όνομα της συνάρτησης. Υποπρόγραμμα Συνάρτηση: Έχει την παρακάτω δομή. Function name (n1 As ΤΔ, n2 As ΤΔ, …, nk As ΤΔ) εντολές name = TIMH End Function Εκτέλεση Κώδικα Όταν εκτελείται κάποια από τις παραπάνω εντολές του κυρίου προγράμματος λέμε ότι το κύριο πρόγραμμα καλεί προς εκτέλεση τη συνάρτηση. Τότε οι τιμές των m1, m2, …, mκ γίνονται αντίστοιχα τιμές των n1, n2, …, nκ. Εκτελούνται οι εντολές της συνάρτησης και η συνάρτηση name παίρνει την ΤΙΜΗ. Η ΤΙΜΗ επιστρέφεται στο κύριο πρόγραμμα. Συνεχίζεται η εκτέλεση των εντολών του κυρίου προγράμματος.

Πλεονεκτήματα Υποπρογραμμάτων Αποφυγή επανάληψης των ίδιων εντολών σε πολλά τμήματα του ίδιου προγράμματος. Υπολογισμοί ανεξάρτητοι από συγκεκριμένα ονόματα μεταβλητών. Αντικατάσταση ενός μεγάλου και περίπλοκου προγράμματος από μικρότερα και απλούστερα. Ευκολότερος εντοπισμός λογικών λαθών.

2. Με Υποπρόγραμμα Διαδικασία 19

Με Υποπρόγραμμα Διαδικασία [27] Option Explicit Dim e1 As Single Dim p1 As Single Dim e2 As Single Dim p2 As Single Private Sub Command1_Click() e1 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") apozimiosi e1, p1 Print "ΕΚΤΑΣΗ: " & e1, "ΠΟΣΟ: " & p1 e2 = InputBox("ΔΩΣΕ ΕΚΤΑΣΗ : ") apozimiosi e2, p2 Print "ΕΚΤΑΣΗ: " & e2, "ΠΟΣΟ: " & p2 End Sub Sub apozimiosi(e As Single, p As Single) If e <= 30 Then p = 600 * e Else If e <= 50 Then p = 6000 + 400 * e p = 11000 + 300 * e End If End Sub 20

Συντακτικό Υποπρογράμματος Διαδικασίας Κύριο Πρόγραμμα: Έχει την παρακάτω έκφραση name m1, m2, …, mk όπου name είναι το όνομα της διαδικασίας. Υποπρόγραμμα Διαδικασία: Έχει την παρακάτω δομή. Sub name (n1 As ΤΔ, n2 As ΤΔ, …, nk As ΤΔ) εντολές End Sub Εκτέλεση Κώδικα Οι τιμές των m1, m2, …, mk γίνονται αντίστοιχα τιμές των n1, n2, …, nk. 2. Εκτελούνται οι εντολές της Διαδικασίας. 3. Η τιμές που υπολογίσθηκαν στη διαδικασία επιστρέφονται στο κύριο πρόγραμμα. 4. Συνεχίζεται η εκτέλεση των εντολών του κυρίου προγράμματος.

Διαφορές Συνάρτησης από Διαδικασία 22

Πρόγραμμα [31] Να συνταχθεί πρόγραμμα το οποίο: 1. Διαβάζει δυο αριθμούς. 2. Καλεί υποπρόγραμμα, το οποίο - βρίσκει το μικρότερο και το μεγαλύτερο από τους δυο αριθμούς και - υπολογίζει το μέσο τους. 3. Εκτυπώνει το μικρότερο, το μεγαλύτερο και το μέσο αριθμό. 23

Πρόγραμμα [31] Option Explicit Dim v As Single Dim w As Single Dim mini As Single Dim maxi As Single Dim mesos As Single Private Sub Command1_Click() v = InputBox("ΔΩΣΕ 1o ΑΡΙΘΜΟ: ") w = InputBox("ΔΩΣΕ 2o ΑΡΙΘΜΟ: ") mmm v, w, mini, maxi, mesos Print " ΕΛΑΧΙΣΤΟΣ: ", mini Print " ΜΕΓΙΣΤΟΣ: ", maxi Print " ΜΕΣΟΣ: ", mesos Print End Sub Sub mmm(x, y, min, max, mes As Single) If x <= y Then min = x max = y Else min = y max = x End If mes = (x+y)/2 End Sub 24

Διαφορά 1η Η συνάρτηση επιστρέφει μόνο μια τιμή ενώ η διαδικασία ενδέχεται να επιστρέψει πολλές. 25

Πρόγραμμα [32] Να συνταχθεί πρόγραμμα το οποίο κάνει ό,τι και το Πρόγραμμα 31 αλλά, επιπλέον, μετά από την εκτύπωση καθενός από το μικρότερο, το μεγαλύτερο και το μέσο αριθμό, καλεί υποπρόγραμμα που εκτυπώνει τρεις φορές την παρακάτω γραμμή. ______________________ 26

Πρόγραμμα [32] Option Explicit Dim v As Single Dim w As Single Dim mini As Single Dim maxi As Single Dim mesos As Single Private Sub Command1_Click() v = InputBox("ΔΩΣΕ 1o ΑΡΙΘΜΟ: ") w = InputBox("ΔΩΣΕ 2o ΑΡΙΘΜΟ: ") mmm v, w, mini, maxi, mesos Print " ΕΛΑΧΙΣΤΟΣ: ", mini printlines Print " ΜΕΓΙΣΤΟΣ: ", maxi Print " ΜΕΣΟΣ: ", mesos Print End Sub Sub mmm(x, y, min, max, mes As Single) If x <= y Then min = x max = y Else min = y max = x End If mes = (x+y)/2 End Sub Sub printlines() Dim i As Integer For i = 1 To 3 Step 1 Print "______________________" Next i End Sub 27

Διαφορά 2η Η συνάρτηση επιστρέφει μόνο μια τιμή ενώ η διαδικασία ενδέχεται να μην επιστρέψει καμμία. 28

Παρατηρήσεις Ένα πρόγραμμα ενδέχεται να καλεί προς εκτέλεση κάποιο υποπρόγραμμα χωρίς παραμέτρους. Π.χ. - διαδικασία printlines, - ενσωματωμένες συναρτήσεις date, time, now. περισσότερα του ενός υποπρογράμματα. Ένα υποπρόγραμμα ενδέχεται να έχει τοπικές μεταβλητές. 29

Πρόγραμμα [28] Ένα αρχείο, το parag.txt, περιέχει τα παρακάτω στοιχεία παραγωγών, των οποίων η σοδειά καταστράφηκε: - Αριθμό Μητρώου, - Επώνυμο, - Όνομα, - Είδος προϊόντος που καλλιεργεί: Σίτος (Σ), Αραβόσιτος (Α) κλπ - Καλλιεργούμενη έκταση, σε στρέμματα. Να γραφεί πρόγραμμα το οποίο: 1. Διαβάζει τα παραπάνω στοιχεία του parag.txt. 2. Για κάθε παραγωγό σίτου: (i) Υπολογίζει ως ποσόν αποζημίωσής του, - 600 ευρώ για καθένα από τα πρώτα 30 στρέμματα, - 400 ευρώ για καθένα από τα τυχόν επόμενα 20 στρέμματα, - 300 ευρώ για καθένα από τα τυχόν υπόλοιπα στρέμματα. (ii) Εκτυπώνει σε ένα αρχείο εξόδου τον Αριθμό Μητρώου, Όνομα και Επώνυμό του καθώς και το ποσόν της αποζημίωσης που δικαιούται. 3. Υπολογίζει και εμφανίζει στη οθόνη: (i) το πλήθος των σιτοπαραγωγών, (ii) το συνολικό ποσόν που θα εισπράξουν όλοι οι σιτοπαραγωγοί, (iii) το μέσο ποσόν που θα εισπράξει κάθε σιτοπαραγωγός.

Αρχεία Περιεχόμενο Αρχείου Εισόδου (parag.txt) 1, ΑΒΡΑΜΙΔΗΣ, ΑΒΡΑΑΜ, Σ, 20 2, ΒΑΣΙΛΕΙΟΥ, ΒΑΣΙΛΕΙΟΣ, Α, 45 3, ΔΗΜΗΤΡΙΟΥ, ΔΗΜΗΤΡΙΟΣ, Σ, 40 4, ΓΕΩΡΓΙΟΥ, ΓΕΩΡΓΙΟΣ, Α, 55 5, ΘΕΟΔΩΡΟΥ, ΘΕΟΔΩΡΟΣ, Σ, 50 6, ΙΩΑΝΝΟΥ, ΙΩΑΝΝΗΣ, Κ, 65 7, ΝΙΚΟΛΑΟΥ, ΝΙΚΟΛΑΟΣ, Σ, 60 8, ΠΕΤΡΙΔΗΣ, ΠΕΤΡΟΣ, Κ, 75 Αναμενόμενο Περιεχόμενο Αρχείου Εξόδου (eispr.txt) 1, ΑΒΡΑΑΜ, ΑΒΡΑΜΙΔΗΣ, 12000 3, ΔΗΜΗΤΡΙΟΣ, ΔΗΜΗΤΡΙΟΥ, 22000 5, ΘΕΟΔΩΡΟΣ, ΘΕΟΔΩΡΟΥ, 26000 7, ΝΙΚΟΛΑΟΣ, ΝΙΚΟΛΑΟΥ, 29000

0. Χωρίς Υποπρόγραμμα

Χωρίς Υποπρόγραμμα [28] Option Explicit Dim am As Integer Dim epon As String Dim onoma As String Dim eidos As String Dim ektasi As Single Dim poso As Single Dim synolo As Single Dim plithos As Integer Private Sub Command1_Click() ' 1. Διαχείριση Αρχείων Open "parag.txt" For Input As #1 Open "eispr.txt" For Output As #2 synolo = 0 plithos = 0 (συνεχίζει) 33

Χωρίς Υποπρόγραμμα [28] Do While Not (EOF(1)) Input #1, am, epon, onoma, eidos, ektasi If eidos = "Σ" Then If ektasi <= 30 Then poso = 600 * ektasi Else If ektasi <= 50 Then poso = 6000 + 400 * ektasi poso = 11000 + 300 * ektasi End If plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso Loop (συνεχίζει)

Χωρίς Υποπρόγραμμα [28] Close #1 Close #2 If plithos > 0 Then Print "ΠΛΗΘΟΣ: " & plithos Print "ΣΥΝΟΛΟ: " & synolo Print "ΜΕΣΟΣ ΟΡΟΣ:" & synolo / plithos Else Print "ΔΕΝ ΥΠΑΡΧΟΥΝ ΣΙΤΟΠΑΡΑΓΩΓΟΙ." End If End Sub (τέλος)

1. Με Υποπρόγραμμα Συνάρτηση 36

Με Συνάρτηση (τροποποιήσεις) [29] If eidos = "Σ" Then ' Κώδικάς χωρίς συνάρτηση (παλιός) If ektasi <= 30 Then poso = 600 * ektasi Else If ektasi <= 50 Then poso = 6000 + 400 * ektasi poso = 11000 + 300 * ektasi End If plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso If eidos = "Σ" Then ' Κώδικάς με συνάρτηση (νέος) poso = apozimiosi(ektasi) plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso End If 37

Με Συνάρτηση (τροποποιήσεις) [29] If eidos = "Σ" Then poso = apozimiosi(ektasi) plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso End If Function apozimiosi(e As Single) If e <= 30 Then apozimiosi = 600 * e Else If e <= 50 Then apozimiosi = 6000 + 400 * e apozimosi = 11000 + 300 * e End If End Function (τέλος)

Με Υποπρόγραμμα Συνάρτηση [29] (Πλήρες Πρόγραμμα) Option Explicit Dim am As Integer Dim epon As String Dim onoma As String Dim eidos As String Dim ektasi As Single Dim poso As Single Dim synolo As Single Dim plithos As Integer (συνεχίζει) 39

Με Υποπρόγραμμα Συνάρτηση [29] (Πλήρες Πρόγραμμα) Private Sub Command1_Click() ' 1. Διαχείριση Αρχείων Open "parag.txt" For Input As #1 Open "eispr.txt" For Output As #2 synolo = 0 plithos = 0 Do While Not (EOF(1)) Input #1, am, epon, onoma, eidos, ektasi If eidos = "Σ" Then poso = apozimiosi(ektasi) plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso End If Loop Close #1 Close #2 40 (συνεχίζει)

Με Υποπρόγραμμα Συνάρτηση [29] (Πλήρες Πρόγραμμα) If plithos > 0 Then Print "ΠΛΗΘΟΣ: " & plithos Print "ΣΥΝΟΛΟ: " & synolo Print "ΜΕΣΟΣ ΟΡΟΣ:" & synolo / plithos Else Print "ΔΕΝ ΥΠΑΡΧΟΥΝ ΣΙΤΟΠΑΡΑΓΩΓΟΙ." End If End Sub (συνεχίζει) 41

Με Υποπρόγραμμα Συνάρτηση [29] (Πλήρες Πρόγραμμα) Function apozimiosi(e As Single) If e <= 30 Then apozimiosi = 600 * e Else If e <= 50 Then apozimiosi = 6000 + 400 * e apozimosi = 11000 + 300 * e End If End Function (τέλος) 42

2. Με Υποπρόγραμμα Διαδικασία

Με Υποπρόγραμμα Διαδικασία [30] (τροποποιήσεις) If eidos = "Σ" Then ' Κώδικάς με συνάρτηση (παλιός) poso = apozimiosi(ektasi) plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso End If If eidos = "Σ" Then ' Κώδικάς με διαδικασία (νέος) apozimiosi ektasi, poso plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso End If

Με Υποπρόγραμμα Διαδικασία [30] (τροποποιήσεις) If eidos = "Σ" Then apozimiosi ektasi, poso plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso End If Sub apozimiosi(e As Single, p As Single) If e <= 30 Then p = 600 * e Else If e <= 50 Then p = 6000 + 400 * e p = 11000 + 300 * e End If End Sub (τέλος)

Με Υποπρόγραμμα Διαδικασία [30] (Πλήρες Πρόγραμμα) Option Explicit Dim am As Integer Dim epon As String Dim onoma As String Dim eidos As String Dim ektasi As Single Dim poso As Single Dim synolo As Single Dim plithos As Integer (συνεχίζει) 46

Με Υποπρόγραμμα Διαδικασία [30] (Πλήρες Πρόγραμμα) Private Sub Command1_Click() ' 1. Διαχείριση Αρχείων Open "parag.txt" For Input As #1 Open "eispr.txt" For Output As #2 synolo = 0 plithos = 0 Do While Not (EOF(1)) Input #1, am, epon, onoma, eidos, ektasi If eidos = "Σ" Then apozimiosi ektasi, poso plithos = plithos + 1 synolo = synolo + poso Print #2, am & ",", onoma & ",", epon & ",", poso End If Loop Close #1 Close #2 (συνεχίζει) 47

Με Υποπρόγραμμα Διαδικασία [30] (Πλήρες Πρόγραμμα) If plithos > 0 Then Print "ΠΛΗΘΟΣ: " & plithos Print "ΣΥΝΟΛΟ: " & synolo Print "ΜΕΣΟΣ ΟΡΟΣ:" & synolo / plithos Else Print "ΔΕΝ ΥΠΑΡΧΟΥΝ ΣΙΤΟΠΑΡΑΓΩΓΟΙ." End If End Sub (συνεχίζει) 48

Με Υποπρόγραμμα Διαδικασία [30] (Πλήρες Πρόγραμμα) Sub apozimiosi(e As Single, p As Single) If e <= 30 Then apozimiosi = 600 * e Else If e <= 50 Then apozimiosi = 6000 + 400 * e apozimosi = 11000 + 300 * e End If End Sub (τέλος) 49