Καθηγητής Νίκος Λορέντζος Προγραμματισμός & Εφαρμογές Υπολογιστών Κωδικός Μαθήματος: 2890 Κωδικός Διαφανειών: MKT130 Γεωπονικό Πανεπιστήμιο Αθηνών Τμήμα Αγροτικής Οικονομίας & Ανάπτυξης Εργαστήριο Πληροφορικής
Καθηγητής Νίκος Λορέντζος 2. Εντολή If-Then-Else Γεωπονικό Πανεπιστήμιο Αθηνών Τμήμα Αγροτικής Οικονομίας & Ανάπτυξης Εργαστήριο Πληροφορικής
Τελεστές Σύγκρισης = ίσον < μικρότερο <= μικρότερο ή ίσον (το πολύ) > μεγαλύτερο >= μεγαλύτερο ή ίσον (τουλάχιστον) <> διάφορο 3 Παραδείγματα x = 0 x > 5 x >= y x > (y + 5) (x-3) < (y + 5)
Συντακτικό If συνθήκη Then εντολή-a1 … εντολή-am End If 4 Λειτουργικότητα Αν ικανοποιείται η συνθήκη Τότε εκτέλεσε τις εντολές εντολή-a1 … εντολή-am Εντολή If-Then
5 Συντακτικό If συνθήκη Then εντολή-a1 … εντολή-am End If Εντολή If-Then συνθήκη εντολή-a1 … εντολή-am ΝΑΙ ΟΧΙ Λογικό Διάγραμμα συνθήκη εντολή-a1 … εντολή-am ΝΑΙ ΟΧΙ Λογικό Διάγραμμα
Πρόγραμμα [05] 6 Διαβάζει ένα βαθμό. Τυπώνει το βαθμό. Αν ο βαθμός είναι τουλάχιστον 5, τυπώνει το μήνυμα ΕΥΓΕ, ΠΕΡΑΣΕΣ!!! Στο τέλος τυπώνει το μήνυμα ΤΕΛΟΣ ΑΞΙΟΛΟΓΗΣΗΣ.
Πρόγραμμα [05] 7 Σημείωση: Οι εντολές σε αυτό το χρώμα δεν ζητούνται από την εκφώνηση. Option Explicit Dim bathmos As Single Private Sub Command1_Click() bathmos = InputBox("ΔΩΣΕ ΒΑΘΜΟ: ") Print "ΒΑΘΜΟΣ = " & bathmos If bathmos >= 5 Then Print "ΕΥΓΕ, ΠΕΡΑΣΕΣ!!!" End If Print "ΤΕΛΟΣ ΑΞΙΟΛΟΓΗΣΗΣ" Print End Sub
Εντολή If-Then-Else Συντακτικό If συνθήκη Then εντολή-a1 … εντολή-am Else εντολή-b1 … εντολή-bn End If 8 Λειτουργικότητα Αν ικανοποιείται η συνθήκη Τότε εκτέλεσε τις εντολές εντολή-a1 … εντολή-am Διαφορετικά εκτέλεσε τις εντολές εντολή-b1 … εντολή-bn
Συντακτικό If συνθήκη Then εντολή-a1 … εντολή-am Else εντολή-b1 … εντολή-bn End If συνθήκη εντολή-a1 … εντολή-am ΝΑΙ ΟΧΙ εντολή-b1 … εντολή-bn Λογικό Διάγραμμα 9 Εντολή If-Then-Else
Πρόγραμμα [06] 10 Διαβάζει ένα βαθμό. Τυπώνει το βαθμό. Αν ο βαθμός είναι τουλάχιστον 5 τυπώνει το μήνυμα ΕΥΓΕ, ΠΕΡΑΣΕΣ!!! Στην αντίθετη περίπτωση τυπώνει το μήνυμα ΚΟΠΗΚΕΣ! ΔΙΑΒΑΣΕ ΠΕΡΙΣΣΟΤΕΡΟ! Στο τέλος τυπώνει το μήνυμα ΤΕΛΟΣ ΑΞΙΟΛΟΓΗΣΗΣ.
Σημείωση: Οι εντολές σε αυτό το χρώμα δεν ζητούνται από την εκφώνηση. Option Explicit Dim bathmos As Single Private Sub Command1_Click() bathmos = InputBox("ΔΩΣΕ ΒΑΘΜΟ:") Print "ΒΑΘΜΟΣ = " & bathmos If bathmos >= 5 Then Print "ΕΥΓΕ, ΠΕΡΑΣΕΣ!!!“ Else Print "ΚΟΠΗΚΕΣ! ΔΙΑΒΑΣΕ ΠΕΡΙΣΣΟΤΕΡΟ!“ End If Print "ΤΕΛΟΣ ΑΞΙΟΛΟΓΗΣΗΣ“ Print End Sub Πρόγραμμα [06] 11
Πρόγραμμα [07] 12 Διαβάζει ένα βαθμό. Τυπώνει το βαθμό. Αν ο βαθμός είναι έγκυρος τυπώνει ένα από τα μηνύματα ΕΥΓΕ, ΠΕΡΑΣΕΣ!!! ή ΚΟΠΗΚΕΣ! ΔΙΑΒΑΣΕ ΠΕΡΙΣΣΟΤΕΡΟ!" Στην αντίθετη περίπτωση (αν ο βαθμός είναι άκυρος) τυπώνει το μήνυμα ΜΗ ΕΓΚΥΡΟΣ ΒΑΘΜΟΣ!!! Στο τέλος τυπώνει το μήνυμα ΤΕΛΟΣ ΑΞΙΟΛΟΓΗΣΗΣ.
Υπενθύμιση 13 ΕΓΚΥΡΟΣ ΒΑΘΜΟΣ (bathmos >= 0) And (bathmos <= 10)
Πρόγραμμα [07] 14 Option Explicit Dim bathmos As Single Private Sub Command1_Click() bathmos = InputBox("ΔΩΣΕ ΒΑΘΜΟ:") Print "ΒΑΘΜΟΣ = " & bathmos If (bathmos >= 0) And (bathmos <= 10) Then ' ΒΑΘΜΟΣ ΕΓΚΥΡΟΣ If bathmos >= 5 Then Print "ΕΥΓΕ, ΠΕΡΑΣΕΣ!!!" Else Print "ΚΟΠΗΚΕΣ! ΔΙΑΒΑΣΕ ΠΕΡΙΣΣΟΤΕΡΟ!" End If Else ' ΒΑΘΜΟΣ ΑΚΥΡΟΣ Print "ΜΗ ΕΓΚΥΡΟΣ ΒΑΘΜΟΣ!!!" End If Print "ΤΕΛΟΣ ΑΞΙΟΛΟΓΗΣ " Print End Sub
Υπενθύμιση 15 (bathmos 10) ΑΚΥΡΟΣ ΒΑΘΜΟΣ
Πρόγραμμα [08] Option Explicit Dim bathmos As Single Private Sub Command1_Click() bathmos = InputBox("ΔΩΣΕ ΒΑΘΜΟ:") Print "ΒΑΘΜΟΣ = " & bathmos If (bathmos 10) Then ' ΒΑΘΜΟΣ ΑΚΥΡΟΣ Print "ΜΗ ΕΓΚΥΡΟΣ ΒΑΘΜΟΣ!!!" Else ' ΒΑΘΜΟΣ ΕΓΚΥΡΟΣ If bathmos >= 5 Then Print "ΕΥΓΕ, ΠΕΡΑΣΕΣ!!!" Else Print "ΚΟΠΗΚΕΣ! ΔΙΑΒΑΣΕ ΠΕΡΙΣΣΟΤΕΡΟ!" End If Print "ΤΕΛΟΣ ΑΞΙΟΛΟΓΗΣ “ Print End Sub 16
Λογικοί Τελεστές Πίνακες Αληθείας σ1σ2σ1 AND σ2σ1 OR σ2 False TrueFalseTrue False True 17 σNOT(σ) FalseTrue False Συνθήκες (Προτάσεις) σ1: p > 8 σ2: q < 3 Αν ισχύει: p = 12 q = 10 Μια συνθήκη (πρόταση) είναι αποκλειστικά είτε Αληθής (True) είτε Ψευδής (False). Παραδείγματα Τότε: σ1 AND σ2 είναι False σ1 OR σ2 είναι True NOT(σ1) είναι False
Παραδείγματα 18 ΕΓΚΥΡΟΣ ΒΑΘΜΟΣ (bathmos >= 0) And (bathmos <= 10) ΝΟΤ((bathmos 10)) ΕΓΚΥΡΟΣ ΒΑΘΜΟΣ (bathmos 10) ΑΚΥΡΟΣ ΒΑΘΜΟΣ ΝΟΤ((bathmos >= 0) And (bathmos <= 10))
Πρόγραμμα [09] 19 Διαβάζει μια θερμοκρασία t, την τυπώνει, βγάζει ένα από τα παρακάτω μηνύματα - ΚΑΝΕΙ ΠΑΓΩΝΙΑ, αν t <= 3 - ΚΑΝΕΙ ΚΡΥΟ, αν 3 < t < 18 - ΚΑΝΕΙ ΚΑΛΟ ΚΑΙΡΟ, αν 18 <= t < 32 - ΚΑΝΕΙ ΖΕΣΤΗ, αν 32 <= t και τα μήνυμα ΟΛΟΚΛΗΡΩΣΗ ΕΚΤΕΛΕΣΗΣ. ΠΑΓΩΝΙΑ ΚΡΥΟ ΚΑΛΟ ΚΑΙΡΟΖΕΣΤΗ 31832
Private Sub Command1_Click() t = InputBox("ΔΩΣΕ ΘΕΡΜΟΚΡΑΣΙΑ: ") Print "ΘΕΡΜΟΚΡΑΣΙΑ = " & t If t <= 3 Then ' Ισχύει t <= 3 Print " ΚΑΝΕΙ ΠΑΓΩΝΙΑ" Else ' Ισχύει t > 3 If t < 18 Then ' Ισχύει 3 < t < 18 Print "ΚΑΝΕΙ ΚΡΥΟ" Else ' Ισχύει t >= 18 If t < 32 Then ' Ισχύει 18 <= t < 32 Print "ΚΑΝΕΙ ΚΑΛΟ ΚΑΙΡΟ" Else ' Ισχύει 32 <= t Print "ΚΑΝΕΙ ΖΕΣΤΗ" End If Print "ΟΛΟΚΛΗΡΩΣΗ ΕΚΤΕΛΕΣΗΣ " Print End Sub ΠΑΓΩΝΙΑ ΚΡΥΟ ΚΑΛΟ ΚΑΙΡΟΖΕΣΤΗ Σημείωση: Οι εντολές σε αυτό το χρώμα δεν ζητούνται από την εκφώνηση. 20 [09]
Private Sub Command1_Click() If t >= 32 ' Ισχύει 32 <= t Else ' Ισχύει t < 32 If t >= 18 ' Ισχύει 18 <= t < 32 Else ' Ισχύει t < 18 If t > 3 ' Ισχύει 3 < t < 18 Else ' Ισχύει t <= 3 End If End Sub ΠΑΓΩΝΙΑ ΚΡΥΟ ΚΑΛΟ ΚΑΙΡΟΖΕΣΤΗ Εναλλακτικός Τρόπος Α
Private Sub Command1_Click() If t >= 18 ' Ισχύει 18 <= t If t >= 32 ' Ισχύει 32 <= t Else ' Ισχύει 18 <= t < 32 End If Else ' Ισχύει t < 18 If t > 3 ' Ισχύει 3 < t < 18 Else ' Ισχύει t <= 3 End If End Sub ΠΑΓΩΝΙΑ ΚΡΥΟ ΚΑΛΟ ΚΑΙΡΟΖΕΣΤΗ Εναλλακτικός Τρόπος Β
Option Explicit Dim t As Integer Private Sub Command1_Click() t = InputBox("ΔΩΣΕ ΘΕΡΜΟΚΡΑΣΙΑ") Print " ΘΕΡΜΟΚΡΑΣΙΑ = " & t If t <= 3 Then Print " ΚΑΝΕΙ ΠΑΓΩΝΙΑ" ElseIf t < 18 Then ' Ισχύει 3 < t < 18 Print " ΚΑΝΕΙ ΚΡΥΟ" ElseIf t < 32 Then ' Ισχύει 18 <= t < 32 Print " ΚΑΝΕΙ ΚΑΛΟ ΚΑΙΡΟ" Else ' Ισχύει t >= 32 Print " ΚΑΝΕΙ ΖΕΣΤΗ" End If Print " ΟΛΟΚΛΗΡΩΣΗ ΕΚΤΕΛΕΣΗΣ" Print End Sub 23 If-ElseIf-Else [10]
Πρόγραμμα [20] Θέλουμε να υπολογίσουμε την αποζημίωση που πρέπει να καταβληθεί σε παραγωγούς σίτου λόγω καταστροφής της παραγωγής τους. Το ύψος της αποζημίωσης είναι ευρώ, για καθένα από τα πρώτα 30 στρέμματα ευρώ, για καθένα από τα τυχόν επόμενα 20 στρέμματα και ευρώ για καθένα από τα τυχόν υπόλοιπα στρέμματα. Να γραφεί πρόγραμμα που - διαβάζει την επιφάνεια, - υπολογίζει την αποζημίωση και - εκτυπώνει την επιφάνεια και την αποζημίωση ευρώ 600 ευρώ300 ευρώ 30
apoz = 600 * 30 ektasi <= 30 : 30 < ektasi <= 50 : 50 < ektasi :+ 400 * * (ektasi - 50) apoz = 600 * 30 apoz = 600 * ektasi * (ektasi - 30) Υπολογισμός Αποζημίωσης [20] 3050 = * ektasi = * ektasi ευρώ, για καθένα από τα πρώτα 30 στρέμματα ευρώ, για καθένα από τα τυχόν επόμενα 20 στρέμματα και ευρώ για καθένα από τα υπόλοιπα στρέμματα. 25
26 Πρόγραμμα [20] Option Explicit Dim ektasi As Single Dim apoz As Single Private Sub Command1_Click() ektasi = InputBox(“ΔΩΣΕ ΕΚΤΑΣΗ “) If ektasi <= 30 Then apoz = 600 * ektasi Else ' Ισχύει ektasi > 30 If ektasi <= 50 Then ' Ισχύει 30 < ektasi <= 50 apoz = * ektasi Else ' Ισχύει ektasi > 50 apoz = * ektasi End If Print "ΕΚΤΑΣΗ: ", ektasi Print "ΥΨΟΣ ΑΠΟΖΗΜΙΩΣΗΣ: ", apoz Print End Sub Σημ: Οι εντολές σε αυτό το χρώμα δεν ζητούνται από την εκφώνηση
27 Option Explicit Dim ektasi As Single Dim apoz As Single Private Sub Command1_Click() ektasi = InputBox(“ΔΩΣΕ ΕΚΤΑΣΗ “) If ektasi <= 30 Then apoz = 600 * ektasi Else ' Ισχύει ektasi > 30 If ektasi <= 50 Then ' Ισχύει 30 < ektasi <= 50 apoz = 600 * * (ektasi - 30) Else ' Ισχύει ektasi > 50 apoz = 600 * * * (ektasi - 50) End If Print "ΕΚΤΑΣΗ: ", ektasi Print "ΥΨΟΣ ΑΠΟΖΗΜΙΩΣΗΣ:", apoz End Sub ΟΧΙ ΤΟ ΒΕΛΤΙΣΤΟ !!! Πρόγραμμα [19]