Βρόχος For … Next Σκοπός Μαθήματος Χρήση For … Next για την εκτέλεση προκαθορισμένου αριθμού επαναλήψεων μιας ομάδα εντολών. Αθήνα, Απρίλιος 2014
Επαναλήψεις Εντολών Η Visual Basic υποστηρίζει επαναλήψεις ενός συνόλου εντολών: Για προκαθορισμένο αριθμό επαναλήψεων (For … Next). Όσο μια συνθήκη είναι αληθής (Do While ή Do Loop While). Μέχρι μια συνθήκη να γίνει αληθής (Do Until ή Do Loop Until).
For … Next Η απλούστερη μέθοδος επανάληψης ενός συνόλου εντολών για προκαθορισμένο αριθμό επαναλήψεων είναι με τη χρήση του βρόχου For…Next. Είναι ένας σύντομος τρόπος γραφής πολλών εντολών που θέλουμε να επαναλαμβάνονται.
For … Next Το πλήθος των επαναλήψεων προκύπτει μέσω μίας μεταβλητής, η οποία παίρνει μία αρχική τιμή πριν εκτελεστούν για πρώτη φορά οι εντολές και η τιμή της αλλάζει κάθε φορά που τελειώνει η εκτέλεση των εντολών αυτών
For … Next For Μετρητής=αρχική τιμή To τελική τιμή [Step βήμα] Εντολή(ες) Next Μετρητής
For … Next Ο μετρητής επιτρέπεται να χρησιμοποιηθεί σε υπολογισμούς μέσα στο βρόχο. Η τιμή του δεν επιτρέπεται να τροποποιηθεί μέσα στο βρόχο. Δεν επιτρέπεται να μεταβληθεί η αρχική και η τελική τιμή του μετρητή. Πρέπει να έχουν τον ίδιο τύπο.
Dim i As Integer For i = 1 To 50 Print "Καλημέρα"; i Next i Παράδειγμα 1: For … Next Dim i As Integer For i = 1 To 50 Print "Καλημέρα"; i Next i
Παράδειγμα 2: For … Next Dim i As Integer For i = 1 To 50 Step 10 Print "Καλημέρα " Next i
Dim i As Integer For i = 5 To 25 Step 5 Print "Καλημέρα" Next i Παράδειγμα 3: For … Next Dim i As Integer For i = 5 To 25 Step 5 Print "Καλημέρα" Next i
Dim i As Single For i = 1 To 2.5 Step 0.5 Print i Next i Παράδειγμα 4: For … Next Dim i As Single For i = 1 To 2.5 Step 0.5 Print i Next i
Παράδειγμα 5: For … Next Dim i As Integer For i = 50 To 1 Step -1 Print i Next i
Παράδειγμα 6: For … Next Dim i As Integer For i = 1 To 15 FontSize = 10 + i Print "Γραμμή"; i Next i
Dim i As Integer, Name As String Παράδειγμα 7: For … Next Dim i As Integer, Name As String Name = InputBox(“Δώσε όνομα”) For i = 1 To 10 Print Name, "Τιμή Μετρητή=" ; i Next i
Παράδειγμα 8: For … Next Dim i As Integer, j As Integer For i = 1 To 3 For j = 1 To 2 Print i, j Next j Next i
Παράδειγμα 9: For … Next For i = 1 To 4 For j = 1 To 3 For k = 1 To 2 Print i, j, k Next k Next j Next i
Παράδειγμα 10: For … Next For i = 1 To 100 sum = sum + i Next i Dim sum As Integer, i As Integer sum = 0 For i = 1 To 100 sum = sum + i Next i Print “Aθροισμα 1-100”; sum
Παράδειγμα 11: For … Next Dim i As Integer, Number As Single Dim sum As Single sum = 0 For i = 1 To 10 Number = InputBox(”Δώσε αριθμό") sum = sum + Number Next i MsgBox (“Άθροισμα=" & sum)
Παράδειγμα 12: For … Next Dim gin As Single, i As Integer gin = 1 For i = 1 To 10 gin = gin * i Next i Print “Γινόμενο:=“, gin
Παράδειγμα 13: For … Next Dim gin As Single, Number As Integer Dim i As Integer Number = InputBox("Δώσε αριθμό") gin = 1 For i = 1 To Number gin = gin * i Next i Print “Γινόμενο=“; gin
Αλγόριθμος εύρεσης Μέγιστου Παράδειγμα 5 3 6 2 1 10 8 9 Είσοδος Αλγόριθμος Έξοδος 10
5 3 6 2 1 10 8 9 5 ΜΑΧ 5
5 3 6 2 1 10 8 9 5 3 ΜΑΧ 5
5 3 6 2 1 10 8 9 5 3 6 ΜΑΧ 5
5 3 6 2 1 10 8 9 5 3 6 ΜΑΧ 6
5 3 6 2 1 10 8 9 5 3 6 2 ΜΑΧ 6
5 3 6 2 1 10 8 9 5 3 6 2 1 ΜΑΧ 6
5 3 6 2 1 10 8 9 5 3 6 2 1 10 ΜΑΧ 6
5 3 6 2 1 10 8 9 5 3 6 2 1 10 ΜΑΧ 10
5 3 6 2 1 10 8 9 5 3 6 2 1 10 8 ΜΑΧ 10
5 3 6 2 1 10 8 9 5 3 6 2 1 10 8 9 ΜΑΧ 10
Αλγόριθμος σε φυσική γλώσσα Αποθηκεύουμε τον πρώτο αριθμό σαν μέγιστο. Στη συνέχεια, συγκρίνουμε κάθε αριθμό που δίνεται, με το μέγιστο. Αν ο αριθμός είναι μεγαλύτερος από το μέγιστο, αποθηκεύουμε αυτόν στη θέση του μέγιστου.
Άσκηση 1 Να γραφεί πρόγραμμα το οποίο δέχεται σαν είσοδο 5 ακέραιους αριθμούς. Το πρόγραμμα εμφανίζει στην έξοδο το μεγαλύτερο από τους αριθμούς που δόθηκαν.
Αρχή
Αρχή Διάβασε Μ
Αρχή Διάβασε Μ ΜΑΧ Μ
Αρχή Διάβασε Μ ΜΑΧ Μ Για 4 φορές επανέλαβε
Αρχή Διάβασε Μ ΜΑΧ Μ Για 4 φορές επανέλαβε Διάβασε Μ
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ?
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ ΜΑΧ Μ Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ ΜΑΧ Μ Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ ΜΑΧ Μ Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ Διάβασε Μ ΜΑΧ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 5 Διάβασε Μ ΜΑΧ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 5 Διάβασε Μ ΜΑΧ ΜΑΧ Μ 5 Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ 5 Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 5 Διάβασε Μ ΜΑΧ ΜΑΧ Μ 5 Μετρητής Διάβασε Μ 1 ΝΑΙ ΟΧΙ ΜΑΧ Μ 5 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 1 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? 1 4 ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 2 2 Διάβασε Μ ΜΑΧ ΜΑΧ Μ 5 Μετρητής Διάβασε Μ 1 ΝΑΙ ΜΑΧ Μ 5 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 1 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 2 2 Διάβασε Μ ΜΑΧ ΜΑΧ Μ 5 Μετρητής Διάβασε Μ 1 ΝΑΙ ΜΑΧ Μ 5 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 1 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 2 2 Διάβασε Μ ΜΑΧ ΜΑΧ Μ 5 Μετρητής Διάβασε Μ 2 ΝΑΙ ΜΑΧ Μ 5 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 2 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος 2 4 ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 6 2 Διάβασε Μ 6 ΜΑΧ ΜΑΧ Μ 5 Μετρητής Διάβασε Μ 2 ΝΑΙ ΜΑΧ Μ 5 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 2 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 6 2 Διάβασε Μ 6 ΜΑΧ ΜΑΧ Μ 5 Μετρητής Διάβασε Μ 2 ΝΑΙ ΜΑΧ Μ 5 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 2 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 6 2 Διάβασε Μ 6 ΜΑΧ ΜΑΧ Μ 6 Μετρητής Διάβασε Μ 2 ΝΑΙ ΜΑΧ Μ 6 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 2 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 6 2 Διάβασε Μ 6 ΜΑΧ ΜΑΧ Μ 6 Μετρητής Διάβασε Μ 3 ΝΑΙ ΜΑΧ Μ 6 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 3 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος 3 4 ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 3 2 Διάβασε Μ 6 ΜΑΧ 3 ΜΑΧ Μ 6 Μετρητής Διάβασε Μ 3 ΜΑΧ Μ 6 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 3 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 3 2 Διάβασε Μ 6 ΜΑΧ 3 ΜΑΧ Μ 6 Μετρητής Διάβασε Μ 3 ΜΑΧ Μ 6 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 3 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 3 2 Διάβασε Μ 6 ΜΑΧ 3 ΜΑΧ Μ 6 Μετρητής Διάβασε Μ 4 ΜΑΧ Μ 6 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 4 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος 4 4 ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 1 2 Διάβασε Μ 6 ΜΑΧ 3 ΜΑΧ Μ 6 1 Μετρητής Διάβασε Μ 4 ΜΑΧ Μ 6 1 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 4 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 1 2 Διάβασε Μ 6 ΜΑΧ 3 ΜΑΧ Μ 6 1 Μετρητής Διάβασε Μ 4 ΜΑΧ Μ 6 1 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 4 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 1 2 Διάβασε Μ 6 ΜΑΧ 3 ΜΑΧ Μ 6 1 Μετρητής Διάβασε Μ 5 ΜΑΧ Μ 6 1 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 5 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ 5 4 ? Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 1 2 Διάβασε Μ 6 ΜΑΧ 3 ΜΑΧ Μ 6 1 Μετρητής Διάβασε Μ 5 ΜΑΧ Μ 6 1 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 5 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ 6 Τύπωσε ΜΑΧ Τέλος
Είσοδος Αρχή Μ 5 1 2 Διάβασε Μ 6 ΜΑΧ 3 ΜΑΧ Μ 6 1 Μετρητής Διάβασε Μ 5 ΜΑΧ Μ 6 1 Για 4 φορές επανέλαβε Μετρητής Διάβασε Μ 5 ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? Έξοδος ΜΑΧ Μ 6 Τύπωσε ΜΑΧ Τέλος
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Number = inputbox(“Δώσε αριθμό”) Διάβασε Μ ΜΑΧ Μ Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Number = inputbox(“Δώσε αριθμό”) Διάβασε Μ ΜΑΧ Μ Max = Number Για 4 φορές επανέλαβε Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Number = inputbox(“Δώσε αριθμό”) Διάβασε Μ ΜΑΧ Μ Max = Number Για 4 φορές επανέλαβε For i=1 to 4 Next i Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Number = inputbox(“Δώσε αριθμό”) Διάβασε Μ ΜΑΧ Μ Max = Number Για 4 φορές επανέλαβε For i=1 to 4 Number = inputbox(“Δώσε αριθμό”) Next i Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Number = Inputbox(“Δώσε αριθμό”) Διάβασε Μ ΜΑΧ Μ Max = Number Για 4 φορές επανέλαβε For i=1 to 4 Number = Inputbox(“Δώσε αριθμό”) If Number > Max then End if Next i Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Number = Inputbox(“Δώσε αριθμό”) Διάβασε Μ ΜΑΧ Μ Max = Number Για 4 φορές επανέλαβε For i=1 to 4 Number = inputbox(“Δώσε αριθμό”) If Number > Max then Max = Number End if Next i Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Τέλος
Αρχή Διάβασε Μ ΜΑΧ Μ Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Τύπωσε ΜΑΧ Number = inputbox(“Δώσε αριθμό”) Διάβασε Μ ΜΑΧ Μ Max = Νumber Για 4 φορές επανέλαβε For i=1 to 4 Number = inputbox(“Δώσε αριθμό”) If Νumber > Μax then Μax = Νumber End if Next i Διάβασε Μ ΝΑΙ ΟΧΙ Μ>ΜΑΧ ? ΜΑΧ Μ Msgbox(“o μεγαλύτερος αριθμός είναι ο “ & max) Τύπωσε ΜΑΧ Τέλος
Άσκηση 1: Διαφορετικός Αλγόριθμος Dim i As Integer, Number As Single, max As Single For i = 1 To 5 Number = InputBox(“Δώσε αριθμό " & i) If i = 1 Then max = Number End If If Number > max Then Next i Print “Ο μεγαλύτερος αριθμός είναι=", max
Άσκηση 2 Να γραφεί πρόγραμμα που δέχεται σαν είσοδο τα ονόματα 3 παραγωγών, και την ποσότητα του προϊόντος σε κιλά που παρήγαγε ο καθένας. Η τιμή του προϊόντος είναι 2 € το κιλό. Το πρόγραμμα να εμφανίζει στην έξοδο: Το όνομα κάθε παραγωγού και το ποσό που αυτός εισέπραξε. Το ποσό που εισέπραξαν συνολικά οι παραγωγοί. Τη μέση είσπραξη ανά παραγωγό.
Άσκηση 2: For … Next sum = 0 For i = 1 To 3 Name = InputBox("Ονοματεπώνυμο") posotita = InputBox("Ποσότητα παραγωγής") poson = 2 * posotita sum = sum + poson Print Name, "Ποσό που εισέπραξε="; poson Next i Print “Η συνολική είσπραξη είναι“; sum Print “H μέση είσπραξη ανά παραγωγό είναι“; sum/3
Άσκηση 3 Να γραφεί πρόγραμμα το οποίο: • Διαβάζει 10 αριθμούς. • Διαβάζει 10 αριθμούς. • Υπολογίζει το άθροισμα των αριθμών αυτών. Μετά το τέλος εισαγωγής των στοιχείων το πρόγραμμα εμφανίζει στην οθόνη: • Tο άθροισμα των αριθμών αυτών. • Tο μεγαλύτερο από τους αριθμούς. • Tο μικρότερο από τους αριθμούς.
Άσκηση για το σπίτι Να γραφεί πρόγραμμα που δέχεται σαν είσοδο τα ονόματα 5 παραγωγών, καθώς και την ποσότητα του προϊόντος που αυτός παρήγαγε. Το πρόγραμμα εμφανίζει στην έξοδο: Α) το όνομα του παραγωγού με τη μεγαλύτερη σοδειά, και την ποσότητα του προϊόντος που αυτός παρήγαγε Β) Το πλήθος των παραγωγών που παρήγαγαν πάνω από 500 κιλά έκαστος Γ) Τη συνολική ποσότητα προϊόντος που παρήγαγαν και οι 5 παραγωγοί.
sum1 = 0 sum2 = 0 pl1 = 0 pl2 = 0 plithos = 5 For i = 1 To plithos onoma = InputBox("όνομα παραγωγού “) eidos = InputBox("είδος 1 ή 2 ") posot = InputBox("ποσότητα παραγωγής") timi = InputBox("τιμή μονάδος")
axia = posot * timi If eidos = 1 Then sum1 = sum1 + posot pl1 = pl1 + 1 End If If eidos = 2 Then sum2 = sum2 + posot pl2 = pl2 + 1 Print onoma, axia Next i
Print "ειδος 1 ", sum1, pl1 Print "ειδος 2 ", sum2, pl2
Exit For Για να βγούμε από ένα For…Next πριν ολοκληρωθεί η εκτέλεσή του, χρησιμοποιούμε την εντολή Exit For. Η εντολή Exit For χρησιμοποιείται κυρίως όταν χρειάζεται να αντιμετωπισθούν ειδικές περιπτώσεις μέσα στο βρόχο και συντάσσεται κυρίως σε συνδυασμό με τη δομή If…Then.
Παράδειγμα: Exit For For i= 1 To 20 If i =5 Then Exit For Next i Dim i As Integer For i= 1 To 20 If i =5 Then Exit For Next i