Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη.
Δομή Μαθήματος Θεωρητικό μέρος μέσω παραδειγμάτων Ασκήσεις
Βρόχος Do … Loop Οι βρόχοι Do…Loop είναι πολύτιμοι επειδή πολύ συχνά δεν γνωρίζουμε προκαταβολικά πόσες φορές θα πρέπει να επαναληφθεί ένας βρόχος.
Επαναλήψεις Εντολών Η Visual Basic υποστηρίζει επαναλήψεις ενός συνόλου εντολών: Για προκαθορισμένο αριθμό επαναλήψεων (For … Next) Όσο μια συνθήκη είναι αληθής (Do While ή Do Loop While) Μέχρι μια συνθήκη να γίνει αληθής (Do Until ή Do Loop Until)
Do … Loop Εναλλακτικός βρόχος του For…Next, είναι ο βρόχος Do…Loop, με τον οποίο εκτελούμε μια σειρά εντολών έως ότου μία συγκεκριμένη συνθήκη μέσα στον βρόχο είναι αληθής ή ψευδής. Ένας βρόχος Do…Loop μπορεί να περιέχει μια ή περισσότερες εντολές.
Do … Loop Αυτός ο τύπος βρόχων είναι χρήσιμος όταν δεν γνωρίζουμε τον ακριβή αριθμό των επαναλήψεων των εντολών. Ο βρόχος Do… Loop έχει διάφορες μορφές (τύπους).
Do … Loop Τύπος 1: Do While Συνθήκη Εντολή(ές) Loop
Διαφορά For … Next από Do While … Loop συνθήκη εντολή-a1 … εντολή-am ΝΑΙ ΟΧΙ Do While … Loop μετρητής = τιμή1 … τιμή2 Βήμα β εντολη-a1 εντολη-a2 … εντολη-am For … Next Είναι γνωστό προκαταβολικά πόσες φορές θα εκτελεσθούν οι εντολές. Δεν είναι γνωστό πόσες φορές θα εκτελεσθούν οι εντολές. 8
Παράδειγμα 1 : Do … Loop Να γραφεί πρόγραμμα το οποίο δέχεται σαν είσοδο ένα όνομα και το εμφανίζει στην οθόνη. Η διαδικασία αυτή να επαναλαμβάνεται συνεχώς για διάφορα ονόματα και να τερματίζεται με τη λέξη "Τέλος".
Παράδειγμα 1.1: Do … Loop Dim Name As String Name = "Μαρία" Do While Name <> "Τέλος" Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") Print Name Loop
Παράδειγμα 1.2 : Do … Loop Dim Name As String Name = "Μαρία" Do While Name <> "Τέλος" Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") If Name <> "Τέλος" Then Print Name End If Loop
Παράδειγμα 1.3: Do … Loop Dim Name As String Name = InputBox("Δώσε όνομα ") Do While Name <> "Τέλος“ Print Name Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") Loop
Do … Loop Τύπος 2: Do Εντολή(ές) Loop While Συνθήκη
Παράδειγμα 2 : Do … Loop Dim Name As String Do Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") If Name <> "Τέλος" Then Print Name End If Loop While Name <> "Τέλος"
Παράδειγμα 3: Do … Loop Να γραφεί πρόγραμμα για τη μετατροπή θερμοκρασιών από Φαρενάϊτ σε Κελσίου βάσει του τύπου: Κελσίου = (Φαρενάϊτ + 40)*5 /9 – 40
Παράδειγμα 3: Do … Loop Το πρόγραμμα θα πρέπει να ζητά από το χρήστη δεδομένα (θερμοκρασία σε Φαρενάϊτ) με τη χρήση της συνάρτησης InputBox, να μετατρέπει τη θερμοκρασία και να εμφανίζει το αποτέλεσμα σε ένα πλαίσιο μηνύματος. Η διαδικασία να επαναλαμβάνεται συνεχώς και να τερματίζεται με την κενή ακολουθία χαρακτήρων.
Loop While FTemp <> "" Παράδειγμα 3: Do … Loop Dim FTemp As Single, Celsius As Single Do FTemp=InputBox("Θερμοκρασία σε Φαρενάιτ") If FTemp <> "" Then Celsius = Int((FTemp + 40)*5 /9 - 40) MsgBox(Celsius), ,"Θερμοκρασία σε Κελσίου" End If Loop While FTemp <> ""
Παράδειγμα 4: Ατέρμονος βρόχος Do Number=InputBox("Δώσε τον αριθμό που θα υψωθεί στο τετράγωνο ή -1 για έξοδος") Number=Number* Number Print Number Loop While Number>=0
Άσκηση 1 Να γραφεί πρόγραμμα που δέχεται σαν είσοδο για κάθε παραγωγό το όνομά του και την ποσότητα του προϊόντος που παρήγαγε. Η εισαγωγή στοιχείων τερματίζεται όταν αντί για όνομα, δοθεί το συνθηματικό “end”. Το πρόγραμμα εμφανίζει στην έξοδο τη μέση ποσότητα προϊόντος ανά παραγωγό.
Άσκηση 1 sum =0 counter = 0 Do Name = InputBox("Δώσε όνομα ή end για τέλος") posotita = InputBox("Δώσε ποσότητα") sum = sum + posotita counter = counter + 1 Loop While Name <> "end" Print "Η μέση ποσότητα είναι: "; sum / counter
Άσκηση 1 sum =0 counter = 0 Do Name = InputBox("Δώσε όνομα ή end για τέλος") If Name <> "end" Then posotita = InputBox("dose posotita") sum = sum + posotita counter = counter + 1 End If Loop While Name <> "end" Print "Η μέση ποσότητα είναι: "; sum / counter
Do … Loop Ο βρόχος Do… Loop μπορεί να χρησιμοποιήσει τη δεσμευμένη λέξη Until για επανάληψη εκτέλεσης των εντολών του βρόχου μέχρι (Until) την επαλήθευση μιας συγκεκριμένης συνθήκης. Οι βρόχοι που χρησιμοποιούν τη λέξη Until μοιάζουν σε πολύ μεγάλο βαθμό με αυτούς που χρησιμοποιούν τη λέξη While με τη διαφορά ότι η συνθήκη περιλαμβάνει συνήθως τον αντίθετο τελεστή.
Do … Loop Τύπος 3: Do Until Συνθήκη Εντολή(ές) Loop
Do … Loop Dim Name As String Name = "Μαρία" Do Until Name="Τέλος" Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") If Name <> "Τέλος" Then Print Name End If Loop
Do … Loop Τύπος 4: Do Εντολή(ές) Loop Until Συνθήκη
Do … Loop Dim Name As String Do Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") If Name <> "Τέλος" Then Print Name End If Loop Until Name="Τέλος"
Σύνοψη Εντολών Do … Loop συνθήκη εντολή-a1 … εντολή-am ΝΑΙ ΟΧΙ 1. Do While … Loop συνθήκη εντολή-a1 … εντολή-am ΝΑΙ ΟΧΙ 3. Do Until … Loop Προσοχή: Ατέρμων Βρόχος εντολή-a1 … εντολή-am ΝΑΙ ΟΧΙ 2. Do … Loop While συνθήκη εντολή-a1 … εντολή-am ΝΑΙ ΟΧΙ 4. Do Loop … Until συνθήκη Ισχύει: Η συνθήκη είναι η ακριβώς αντίθετη της συνθήκη.
Άσκηση 2 Να γραφεί πρόγραμμα που δέχεται σαν είσοδο τα ονόματα παραγωγών και την ποσότητα του προϊόντος σε κιλά που παρήγαγε ο καθένας. Η τιμή του προϊόντος είναι 2 € το κιλό. Το πρόγραμμα εμφανίζει στην έξοδο: Το όνομα κάθε παραγωγού και το ποσό που αυτός εισέπραξε Το ποσό που εισέπραξαν συνολικά οι παραγωγοί. Τη μέση είσπραξη ανά παραγωγό. Το πρόγραμμα θα εκτυπώσει τα αποτελέσματα των ερωτημάτων 2 και 3 όταν δοθεί το σύνθημα τερματισμού, που σημαίνει ότι δεν υπάρχουν άλλοι παραγωγοί. Για να το δηλώσει αυτό ο χρήστης πληκτρολογεί για όνομα παραγωγού τη λέξη “Τέλος”.
Άσκηση 2 Dim Name As String Dim Posotita As Single Dim Poson As Single Dim Sum As Single Dim Counter As Integer Sum = 0 Counter = 0
Άσκηση 2 Do Name = InputBox("Ονοματεπώνυμο") If Name <> "Telos" Then posotita = InputBox("Ποσότητα παραγωγής") counter=counter +1 poson = 2 * posotita sum = sum + poson Print Name, "Ποσό είσπραξης="; poson End If Loop While Name <> "Telos"
Άσκηση 2 Print "Συνολικό ποσό είσπραξης"; sum Print "Συνολικό ποσό είσπραξης"; sum/counter