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