Transcript
Page 1: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Βρόχος Do … Loop

Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη.

Page 2: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Δομή Μαθήματος

• Θεωρητικό μέρος μέσω

παραδειγμάτων

• Ασκήσεις

Page 3: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Βρόχος Do … Loop

Οι βρόχοι Do…Loop είναι πολύτιμοι επειδή πολύ συχνά δεν γνωρίζουμε προκαταβολικά πόσες φορές θα πρέπει να επαναληφθεί ένας βρόχος.

Page 4: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Επαναλήψεις Εντολών

Η Visual Basic υποστηρίζει επαναλήψεις ενός συνόλου εντολών:

• Για προκαθορισμένο αριθμό επαναλήψεων (For … Next)

• Όσο μια συνθήκη είναι αληθής (Do While ή Do Loop While)

• Μέχρι μια συνθήκη να γίνει αληθής (Do Until ή Do Loop Until)

Page 5: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

• Εναλλακτικός βρόχος του For…Next, είναι ο βρόχος Do…Loop, με τον οποίο εκτελούμε μια σειρά εντολών έως ότου μία συγκεκριμένη συνθήκη μέσα στον βρόχο είναι αληθής ή ψευδής.

• Ένας βρόχος Do…Loop μπορεί να περιέχει μια ή περισσότερες εντολές.

Do … Loop

Page 6: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

•Αυτός ο τύπος βρόχων είναι χρήσιμος όταν δεν γνωρίζουμε τον ακριβή αριθμό των επαναλήψεων των εντολών.

•Ο βρόχος Do… Loop έχει διάφορες μορφές (τύπους).

Do … Loop

Page 7: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Τύπος 1:

Do While ΣυνθήκηΕντολή(ές)

Loop

Do … Loop

Page 8: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

8

Είναι γνωστό προκαταβολικά πόσες φορές θα εκτελεσθούν οι εντολές.

Δεν είναι γνωστό πόσες φορές θα εκτελεσθούν οι εντολές.

Διαφορά For … Next από Do While … Loop

συνθήκη

εντολή-a1 …εντολή-am

ΝΑΙ

ΟΧΙ

Do While … Loop

μετρητής = τιμή1 … τιμή2 Βήμα β

εντολη-a1 εντολη-a2 … εντολη-am

For … Next

Page 9: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Να γραφεί πρόγραμμα το οποίο δέχεται σαν είσοδο ένα όνομα και το εμφανίζει στην οθόνη.

Η διαδικασία αυτή να επαναλαμβάνεται συνεχώς για διάφορα ονόματα και να τερματίζεται με τη λέξη "Τέλος".

Παράδειγμα 1 : Do … Loop

Page 10: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Dim Name As String

Name = "Μαρία"

Do While Name <> "Τέλος" Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο")

Print NameLoop

Παράδειγμα 1.1: Do … Loop

Page 11: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Dim Name As StringName = "Μαρία" Do While Name <> "Τέλος" Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") If Name <> "Τέλος" Then Print Name End IfLoop

Παράδειγμα 1.2 : Do … Loop

Page 12: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Dim Name As StringName = InputBox("Δώσε όνομα ")

Do While Name <> "Τέλος“ Print Name Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο")Loop

Παράδειγμα 1.3: Do … Loop

Page 13: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Τύπος 2:

DoΕντολή(ές)

Loop While Συνθήκη

Do … Loop

Page 14: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Dim Name As String

Do Name = InputBox("Δώσε όνομα ή Τέλος για

έξοδο") If Name <> "Τέλος" Then Print Name End IfLoop While Name <> "Τέλος"

Παράδειγμα 2 : Do … Loop

Page 15: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Να γραφεί πρόγραμμα για τη μετατροπή θερμοκρασιών από Φαρενάϊτ σε Κελσίου βάσει του τύπου:

Κελσίου = (Φαρενάϊτ + 40)*5 /9 – 40

Παράδειγμα 3: Do … Loop

Page 16: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Το πρόγραμμα θα πρέπει να ζητά από το χρήστη δεδομένα (θερμοκρασία σε Φαρενάϊτ) με τη χρήση της συνάρτησης InputBox, να μετατρέπει τη θερμοκρασία και να εμφανίζει το αποτέλεσμα σε ένα

πλαίσιο μηνύματος. Η διαδικασία να επαναλαμβάνεται συνεχώς και να τερματίζεται με την κενή ακολουθία χαρακτήρων.

Παράδειγμα 3: Do … Loop

Page 17: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος 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

Page 18: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

DoNumber=InputBox("Δώσε τον αριθμό που θα υψωθεί στο τετράγωνο ή -1 για

έξοδος")Number=Number* Number Print Number

Loop While Number>=0

Παράδειγμα 4: Ατέρμονος βρόχος

Page 19: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Άσκηση 1

Να γραφεί πρόγραμμα που δέχεται σαν είσοδο για κάθε παραγωγό το όνομά του και την ποσότητα του προϊόντος που παρήγαγε.

Η εισαγωγή στοιχείων τερματίζεται όταν αντί για όνομα, δοθεί το συνθηματικό “end”.

Το πρόγραμμα εμφανίζει στην έξοδο τη μέση ποσότητα προϊόντος ανά παραγωγό.

Page 20: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Άσκηση 1sum =0counter = 0Do Name = InputBox("Δώσε όνομα ή end για τέλος")

posotita = InputBox("Δώσε ποσότητα") sum = sum + posotita counter = counter + 1 Loop While Name <> "end"Print "Η μέση ποσότητα είναι: "; sum / counter

Page 21: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Άσκηση 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

Page 22: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

• Ο βρόχος Do… Loop μπορεί να χρησιμοποιήσει τη δεσμευμένη λέξη Until για επανάληψη εκτέλεσης των εντολών του βρόχου μέχρι (Until) την επαλήθευση μιας συγκεκριμένης συνθήκης.

• Οι βρόχοι που χρησιμοποιούν τη λέξη Until μοιάζουν σε πολύ μεγάλο βαθμό με αυτούς που χρησιμοποιούν τη λέξη While με τη διαφορά ότι η συνθήκη περιλαμβάνει συνήθως τον αντίθετο τελεστή.

Do … Loop

Page 23: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Τύπος 3:

Do Until ΣυνθήκηΕντολή(ές)

Loop

Do … Loop

Page 24: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Dim Name As StringName = "Μαρία"

Do Until Name="Τέλος" Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") If Name <> "Τέλος" Then Print Name End IfLoop

Do … Loop

Page 25: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Τύπος 4:

DoΕντολή(ές)

Loop Until Συνθήκη

Do … Loop

Page 26: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Dim Name As String

Do Name = InputBox("Δώσε όνομα ή Τέλος για έξοδο") If Name <> "Τέλος" Then Print Name End IfLoop Until Name="Τέλος"

Do … Loop

Page 27: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος 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

συνθήκη

Page 28: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Να γραφεί πρόγραμμα που δέχεται σαν είσοδο τα ονόματα παραγωγών και την ποσότητα του προϊόντος σε κιλά που παρήγαγε ο καθένας. Η τιμή του προϊόντος είναι 2 € το κιλό. Το πρόγραμμα εμφανίζει στην έξοδο:

1.Το όνομα κάθε παραγωγού και το ποσό που αυτός εισέπραξε

2.Το ποσό που εισέπραξαν συνολικά οι παραγωγοί.

3.Τη μέση είσπραξη ανά παραγωγό.

Το πρόγραμμα θα εκτυπώσει τα αποτελέσματα των ερωτημάτων 2 και 3 όταν δοθεί το σύνθημα τερματισμού, που σημαίνει ότι δεν υπάρχουν άλλοι παραγωγοί. Για να το δηλώσει αυτό ο χρήστης πληκτρολογεί για όνομα παραγωγού τη λέξη “Τέλος”.

Άσκηση 2

Page 29: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Άσκηση 2

Dim Name As StringDim Posotita As SingleDim Poson As SingleDim Sum As Single Dim Counter As Integer

Sum = 0Counter = 0

Page 30: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Άσκηση 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"

Page 31: Προγραμματισμός & Εφαρμογές Υπολογιστών (βρόχος Do...loop_)

Άσκηση 2

Print "Συνολικό ποσό είσπραξης"; sumPrint "Συνολικό ποσό είσπραξης"; sum/counter


Recommended