Professional Documents
Culture Documents
5 Control Statements Final
5 Control Statements Final
Ενότητα 5
Περιεχόμενα
• Εκτέλεση υπό όρους, εντολή if, if-else
• Επαναληπτικές εντολές
– while, do-while, for
• Επανάληψη, μετρητές
• Πολλαπλοί μετρητές
• Μη ακέραιοι μετρητές
• Φωλιασμένες επαναλήψεις
Τύποι Δηλώσεων στη Java
• Τα προγράμματα στην Java αποτελούνται από ένα σύνολο
τάξεων. Αυτές οι τάξεις περιλαμβάνουν μεθόδους, και κάθε
μία από αυτές αποτελείται από μια αλληλουχία δηλώσεων.
• Οι δηλώσεις στην Java χωρίζονται σε 3 βασικές κατηγορίες :
– Απλές δηλώσεις
– Συνθετες δηλώσεις
– Δηλώσεις ελέγχου
• Οι απλές δηλώσεις σχηματίζονται με την προσθήκη ενός
ερωτηματικού στο τέλος μιας έκφρασης Java.
• Οι σύνθετες δηλώσεις (ονομαζόμενες και blocks)
αποτελούνται από μια ακολουθία εκφρασεων μεσα σε
άγκιστρα.
• Οι δηλώσεις ελέγχου χωρίζονται σε 2 κατηγορίες :
– Υπό όρους δηλώσεις που ορίζουν κάποιου είδους τεστ
– Επαναληπτικές δηλώσεις που καθορίζουν επανάληψεις
Δηλώσεις ελέγχου και επίλυση προβλημάτων
• Πριν την λεπτομερή εξέταση των επιμέρους δηλώσεων
ελέγχου, θα εξετάσουμε ολιστικά ένα ζευγάρι
προγραμμάτων που κάνουν χρήση κοινών προτύπων
ελέγχου.
• Οι επόμενες διαφάνειες επεκτείνουν το πρόγραμμα
Add2Integers από το κεφάλαιο 2 για τη δημιουργία
προγραμμάτων που προσθέτουν μεγαλύτερες λίστες. Οι
διαφάνειες απεικονίζουν τρεις διαφορετικές στρατηγικές:
– Την προσθήκη νέου κώδικα για την επεξεργασία κάθε τιμής εισόδου
– Την επανάληψη του κύκλου εισόδου έναν προκαθορισμένο αριθμό
φορών
– Την επανάληψη του κύκλου εισόδου έως ότου ο χρήστης εισάγει μια
ειδική τιμή φρουρό
Το Πρόγραμμα Add4Integers
• Αν δεν έχετε πρόσβαση σε δηλώσεις ελέγχου, ο μόνος
τρόπος που μπορεί να αυξήσει τον αριθμό των τιμών των
εισόδων είναι να προσθέσετε μια νέα δήλωση για κάθε μία,
όπως στο ακόλουθο παράδειγμα:
public class Add4Integers extends ConsoleProgram {
public void run() {
println("This program adds four numbers.");
int n1 = readInt("Enter n1: ");
int n2 = readInt("Enter n2: ");
int n3 = readInt("Enter n3: ");
int n4 = readInt("Enter n4: ");
int total = n1 + n2 + n3 + n4;
println("The total is " + total + ".");
}
}
Όπως
Η ισχύει γιαγια
πληροφορία όλα
τοντααριθμό
μοτίβα των
σε αυτό το βιβλίο, καθορίζεται
επαναλήψεων οι λέξεις με
πλάγιους
από χαρακτήρες
την πρώτη γραμμή,δείχνουν
η οποίαταονομάζεται
μέρη του σχεδίου θα πρέπει να
και κεφαλίδα.
αλλάξετε
Οι δηλώσειςγιαπου
κάθεπρέπει
εφαρμογή. Για να χρησιμοποιήσετε
να επαναληφθούν ονομάζονταιαυτόσώματο
πρότυπο,
της δήλωσηςγιαforπαράδειγμα,
και είναι σε θα πρέπει
εσοχή να αντικαταστήσετε
σε σχέση με την κεφαλίδα. το
repetitions με μια έκφραση που δίνει τον αριθμό των
επαναλήψεων
Μια δήλωση και να περιλαβετε
ελέγχου τις δηλώσειςένα
που επαναλαμβάνει πουτμήμα
πρέπειτου
να
επαναληφθουν
κώδικα μέσα σταβρόχος
που ονομάζεται άγκιστρα..
Κάθε εκτέλεση του σώματος ενός βρόχου ονομάζεται κύκλος.
Το Πρόγραμμα AddNIntegers
Αυτό
Ο
Αυτό τοπρόγραμμα
βρόχος
το
το σώμα του το
σε αυτό
πρόγραμμα βρόχου αποτελείται
παράδειγμα
χρησιμοποιεί
χρησιμοποιεί από Repeat-Ν-Times
λειτουργεί
τον
τον τρόπο
τρόπο δύο δηλώσεις.
σωστά Ηγια
μόνο αν
Repeat-Ν-Times 1ηη
διαβάζει
μεταβλητή
να έναν ακέραιο
total
υπολογίσει το πάρει από
την το
άθροισμα
άθροισμα χρήστη
τιμή 0 πριν
ενός
ενός στη μεταβλητή
από την εκτέλεση
προκαθορισμένου
προκαθορισμένου του.
αριθμού
value,
αριθμού
και η 2η προσθέτει
ακέραιων
ακέραιων τιμών, τηνκαθορίζονται
τιμών, που
που τιμή στη μεταβλητή
καθορίζονται από
απότην
τηνσταθερά
σταθεράN.
total. N.
AddIntegerList
int n = 1298463, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 10
println(n+“ is not a multiple of 13”);
}
n += 18;
Υπο όρους εκτέλεση (μορφή 1)
if ( expr )
if_block // εκτελείται εάν expr==true
//εδώ απευθείας εάν expr==false
int n = 1298463, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 10
println(n+” is not a multiple of 13”);
}
n += 18;
Υπο όρους εκτέλεση (μορφή 1)
if ( expr )
if_block // εκτελείται εάν expr==true
//εδώ απευθείας εάν expr==false
int n = 1298463, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 10
println(n+” is not a multiple of 13”);
}
n += 18;
Υπο όρους εκτέλεση (μορφή 1)
if ( expr )
if_block // εκτελείται εάν expr==true
//εδώ απευθείας εάν expr==false
int n = 1298463, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 10
println(n+” is not a multiple of 13”);
}
n += 18;
Υπο όρους εκτέλεση (μορφή 1)
if ( expr )
if_block // εκτελείται εάν expr==true
//εδώ απευθείας εάν expr==false
int n = 1298463, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 10
println(n+” is not a multiple of 13”);
}
n += 18;
Υπο όρους εκτέλεση (μορφή 2)
if ( expr )
if_block // εκτελείται εάν expr==true
else
else_block //εδώ εάν expr==false
// εδώ μετά το if ή το else
Υπό όρους εκτέλεση (μορφή 2)
int n = 1298453, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 0
println(n+” is not a multiple of 13”);
}
else {
println(”n is a multiple of 13”);
}
n += 18;
Υπό όρους εκτέλεση (μορφή 2)
int n = 1298453, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 0
println(n+” is not a multiple of 13”);
}
else {
println(”n is a multiple of 13”);
}
n += 18;
Υπό όρους εκτέλεση (μορφή 2)
int n = 1298453, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 0
println(n+” is not a multiple of 13”);
}
else {
println(”n is a multiple of 13”);
}
n += 18;
Υπό όρους εκτέλεση (μορφή 2)
int n = 1298453, r = 0;
if ( n % 13 != 0 ) { // n % 13 == 0
println(n+” is not a multiple of 13”);
}
else {
println(”n is a multiple of 13”);
}
n += 18;
Π.χ., abs(x)
• abs(x) = απόλυτη τιμή του x = |x|
double abs(double x) {
double y ;
if ( x < 0 )
y = -x;
else
y = x;
return y;
}
Π.χ., abs(x)
• abs(x) = απόλυτη τιμή του x = |x|
double abs(double x) {
double abs(double x) { double y ;
double y ; y = x < 0 ? –x : x;
if ( x < 0 ) return y;
y = -x; }
else
y = x;
return y;
}
Π.χ., abs(x)
• abs(x) = απόλυτη τιμή του x = |x|
double abs(double x) {
double abs(double x) { double y ;
double y ; y = x < 0 ? –x : x;
if ( x < 0 ) return y;
y = -x; }
else
y = x; double abs(double x) {
return y; return x < 0 ? –x : x;
} }
Υπερφόρτωση
double abs(double x) {
return x < 0 ? –x: x;
} public void run() {
abs(-3);
abs(-3.0);
int abs(int x) {
}
return x < 0 ? –x: x;
}
Υπερφόρτωση
double abs(double x) {
return x < 0 ? –x: x;
} public void run() {
abs(-3);
abs(-3.0);
int abs(int x) {
}
return x < 0 ? –x: x;
}
Υπερφόρτωση
double abs(double x) {
return x < 0 ? –x: x;
} public void run() {
abs(-3);
abs(-3.0);
int abs(int x) {
}
return x < 0 ? –x: x;
}
H δήλωση switch
Όταν
Η
ΗΑνJava Java
δήλωση εκτελεί
switch
αναζητά μια
αξιολογεί
κανένα case μια
τις
δεν δήλωση
προσφέρει
case
δηλώσειςπου
ταιριάζει switch,
σεμια
ταιριάζει
μεμια
τηναρχίζει
βολική
με τηνμε την
σύνταξηαξιολόγηση
expression.
μέχρι
έκφραση,
case ηναJavaγια την
Εάν
φτάσει η
το
εκτελεί
Η
τουδήλωση
επιλογή switch
expression,
ανάμεσα προσφέρει
ηίση
οποία
σεαπό
μια πρέπει
σειρά μια
να
απόβολική
παράγεισύνταξη
πιθανές μια για
ακέραια
διαδρομές: την επιλογή
τιμή.
expression
τις
break , που
δηλώσειςήταν
πρέπει
κάτω
ανάμεσα σε μια σειρά απόμε
να v ,
υπάρχει
το
2 τότε διαλέγει
στο
default. τέλοςτην
κάθε
πιθανές διαδρομές:δεύτερη περίπτωση.
δήλωσης.
switch ( expression ) {
case v1:
statements to be executed if expression = v1
break;
case v2:
statements to be executed if expression = v2
break;
. . . more case clauses if needed . . .
default:
statements to be executed if no values match
break;
}
Παράδειγμα της switch
Η δήλωση switch είναι χρήσιμη όταν το πρόγραμμα πρέπει να
επιλέξει ανάμεσα σε αρκετές περιπτώσεις, όπως στο :
public void run() {
println(This program shows the number of days in a month.");
int month = readInt("Enter numeric month (Jan=1): ");
switch (month) {
case 2:
println("28 days (29 in leap years)");
break;
case 4: case 6: case 9: case 12:
println("30 days");
break;
case 1: case 3: case 5: case 7: case 8: case 11:
println("31 days");
break;
default:
println("Illegal month number");
break;
}
}
Επανάληψη
• Εκτέλεση n φορές μιας ομάδας εντολών;
– Π.χ., εντολή println(”Γειά σου”);
Επανάληψη
println(”Γειά σου”); // 1 κλήση
println(”Γειά σου”); // 2η κλήση
…
println(”Γειά σου”); // n-οστή κλήση
- Μεγάλο πρόγραμμα
- Δυσανάγνωστο για μεγάλο n (π.χ., n>1000!!!)
H δήλωση while
Η δήλωση while statement είναι η απλούστερη από τις δήλωση
ελέγχου επαναλήψεων της Java και έχει την ακόλουθη μορφή :
while ( condition ) {
statements to be repeated
}
DigitSum
skip simulation
Το ιδίωμα Loop-and-a-Half
Η δήλωση while στην Java πάντα δοκιμάζει την κατάσταση κατά
την έναρξη του κάθε κύκλου του βρόχου. Μερικές φορές, όμως,
θα πρέπει να εκτελεστεί κάποιος υπολογισμός πριν γίνει αυτό.
Τότε, το ιδίωμα loop-and-a-half είναι πολύ χρήσιμο:
while (true) {
computation necessary to make the test
if (test for completion) break;
computation for the rest of the loop cycle
}
Τί κάνει το πρόγραμμα;
Επαναληπτικές εντολές
int i = 1;
while ( true ) {
println(”Γειά σου”);
if ( i < 10 )
i++;
else
break; // έξοδος από επαναλήψεις
}
Επαναληπτικές εντολές
int i = 1;
while ( true ) {
println(”Γειά σου”);
if ( i < 10 ) {
i++;
continue; // συνέχιση επόμενης
} // επανάληψης
break;
}
Επανάληψη
• Επαναληπτική υλοποίηση: Επανάληψη ίδιου
στοιχειώδους υπολογισμού και χρήση
μετρητών.
μετρητές
Επαναληπτική υλοποίηση firstdivisor
• firstdivisor(n)
– Μικρότερος διαιρέτης του n μεγαλύτερος του 2.
• Π.χ., n=35
2 3 4 5 6 ... 33 34 35
Διαιρεί
το 15;
Επαναληπτική υλοποίηση firstdivisor
• firstdivisor(n)
– Μικρότερος διαιρέτης του n μεγαλύτερος του 2.
• Π.χ., n=35
2 3 4 5 6 ... 33 34 35
Διαιρεί
το 15;
Επαναληπτική υλοποίηση firstdivisor
• firstdivisor(n)
– Μικρότερος διαιρέτης του n μεγαλύτερος του 2.
• Π.χ., n=35
2 3 4 5 6 ... 33 34 35
Διαιρεί
το 15;
Επαναληπτική υλοποίηση firstdivisor
• firstdivisor(n)
– Μικρότερος διαιρέτης του n μεγαλύτερος του 2.
• Π.χ., n=35
2 3 4 5 6 ... 33 34 35
Διαιρεί
το 15;
Επαναληπτική υλοποίηση firstdivisor
• firstdivisor(n)
– Μικρότερος διαιρέτης του n μεγαλύτερος του 2.
• Π.χ., n=35
2 3 4 5 6 ... 33 34 35
Επαναληπτική υλοποίηση firstdivisor
int firstdivisor(int n) {
int i = 2; // υποψήφιος διαιρέτης (μετρητής)
while ( i <= n) {
if ( n % i == 0 )
break;
else
i++;
}
return i;
}
Επαναληπτική υλοποίηση firstdivisor
int firstdivisor(int n) {
int i = 2; // υποψήφιος διαιρέτης (μετρητής)
while ( n % i != 0 ) {
i++;
}
return i;
}
Επαναληπτική υλοποίηση firstdivisor
int firstdivisor(int n) {
int i = 2; // υποψήφιος διαιρέτης (μετρητής)
while ( n % i != 0 )
i++; // ok, γιατί μόνο 1 εντολή
return i;
}
Επαναληπτική υλοποίηση firstdivisor
int firstdivisor(int n) {
int i = 2; // υποψήφιος διαιρέτης (μετρητής)
while ( n % i++ != 0 ); // while χωρίς εντολές
return i-1;
}
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 1
sum: 1
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 2
sum: 3
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 3
sum: 6
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 4
sum: 10
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 5
sum: 15
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 6
sum: 21
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 7
sum: 28
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 8
sum: 36
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 9
sum: 45
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum += 10
sum: 55
Επαναληπτική υλοποίηση 1+2+…+n
• Π.χ., n=10
1 2 3 4 5 6 7 8 9 10
sum: 55
Επαναληπτική υλοποίηση 1+2+…+n
int n = 10;
int i = 1; // όρος (μετρητής)
int sum = 0; // μερικό άθροισμα (μετρητής)
while ( i <= n ) {
sum += i;
i++;
}
println(”1+2+…+n=”+sum);
Επαναληπτική υλοποίηση 1+2+…+n
int n = 10;
int i = 1;
int sum = 0;
while ( i <= n ) { // 1 περιττός έλεγχος εάν n>=1
sum += i;
i++;
}
println(”1+2+…+n=”+sum);
Επαναληπτικές εντολές
int n = 10, sum = 0;
int i = 1;
do {
sum += i;
i++;
} while ( i <= n ); // Έλεγχος μόνο για i>1
println(”1+2+…+n=”+sum);
Επαναληπτικές εντολές
int n = 10, sum = 0;
int i = 1; // αρχικοποίηση μετρητών
while ( i <= n ) { //έλεγχος συνθήκης επανάληψης
sum += i;
i++; // ανανέωση μετρητών (επόμενος όρος)
}
println(”1+2+…+n=”+sum);
Η δήλωση for
Η δήλωση for στην Java είναι ένα ιδιαίτερα ισχυρό εργαλείο για
τον καθορισμό μιας δομής ελέγχου ενός βρόχου ανεξάρτητα
από τις εργασίες που επιτελεί το σώμα του. Η σύνταξη του είναι:
init;
while ( test ) {
statements to be repeated
step;
}
init;
while ( true ) {
statements to be repeated
step;
}
Συγκρίνοντας τα for και while
Η δήλωση for
for (;;) {
statements to be repeated
}
while ( true ) {
statements to be repeated
}
Επανάληψη με μετρητή
• Πολλαπλές εντολές αρχικοποίησης/ανανέωσης
int n = 10, i, sum;
for( sum = 0, i = 1; i <= n; i++ ) {
sum += i;
}
println(”1+2+…+n=”+sum);
Επανάληψη με μετρητή
• Πολλαπλές εντολές αρχικοποίησης/ανανέωσης
int n = 10, i, sum;
for( sum = 0, i = 1; i <= n; sum += i, i++ );
println(”1+2+…+n=”+sum);
Άσκηση: διαβάζοντας δηλώσεις for
Περιγράψτε το αποτέλεσμα του καθενός από τα παρακάτω:
1. for (int i = 1; i <= 10; i++)
Η δήλωση αυτή εκτελεί το σώμα δέκα φορές, με μεταβλητή
ελέγχου i, λαμβάνοντας διαδοχικά τιμές μεταξύ 1 και 10.
Countdown
10
9
8
7
6
5
4
3
2
1
0
Liftoff!
skip simulation
Υλοποίηση firstdivisor με for
int firstdivisor(int n) {
int i; // υποψήφιος διαιρέτης (μετρητής)
for ( i = 2; i <= n; i++ ) {
if ( n % i == 0 )
break;
}
return i;
}
Υλοποίηση firstdivisor με for
int firstdivisor(int n) {
int i; // υποψήφιος διαιρέτης (μετρητής)
for ( i = 2; n % i != 0; i++ );
return i;
}
Πολλαπλοί μετρητές
• Εμφάνισε τους πρώτους 20 πρώτους αριθμούς
i ****
*****
Φωλιασμένες επαναλήψεις
• Εμφάνιση δέντρου μεγέθους n
– Π.χ., n=5
*
**
***
μετρητής
n βήματα επανάληψης
i ****
*****
μετρητής j, με i επαναλήψεις στο βήμα i
Φωλιασμένες επαναλήψεις
• Εμφάνιση δέντρου μεγέθους n
– Π.χ., n=5
* for ( int i = 1; i <= n; i++ ) {
for ( int j = 1; j <= i; j++ )
** print(’*’);
***
μετρητής
println();
n βήματα επανάληψης
i **** }
*****
μετρητής j, με i επαναλήψεις στο βήμα i
Σκακιέρα
• Η επόμενη διαφάνεια δείχνει ένα πρόγραμμα που
εμφανίζει ένα ταμπλό σκακιέρας στο οποίο ο
αριθμός των γραμμών και των στηλών δίνονται από
τις σταθερές N_ROWS και N_COLUMNS.
• Οι βρόχοι for στο πρόγραμμα Checkerboard μοιάζουν έτσι
for (int i = 0; i < N_ROWS; i++) {
for (int j = 0; j < N_COLUMNS; j++) {
Display the square at row i and column j.
}
}
Checkerboard
skip simulation
Exercise: Triangle Number Table
Να γραφεί ένα πρόγραμμα που όταν τρέχει να μοιάζει με το
δείγμα στο κάτω μέρος της διαφάνειας, που εμφανίζει το
άθροισμα των πρώτων ακεραίων N για κάθε τιμή του Ν από 1
έως 10. Όπως φαίνεται στην εικόνα οι αριθμοί αυτοί μπορεί να
σχηματίσουν ένα τρίγωνο και συνεπώς ονομάζονται, τριγωνικοί
αριθμοί.
TriangleTable
1 = 1
1 + 2 = 3
1 + 2 + 3 = 6
1 + 2 + 3 + 4 = 10
1 + 2 + 3 + 4 + 5= 15
1 + 2 + 3 + 4 + 5+ 6= 21
1 + 2 + 3 + 4 + 5+ 6+ 7= 28
1 + 2 + 3 + 4 + 5+ 6+ 7+ 8 = 36
1 + 2 + 3 + 4 + 5+ 6+ 7+ 8 + 9 = 45
1 + 2 + 3 + 4 + 5+ 6+ 7+ 8 + 9 + 10 = 55
Θέματα σχεδίασης:
Triangle Number Table
Καθώς σκέφτεστε το σχεδιασμό του TriangleTable, θα βοηθήσει
να έχετε τις ακόλουθες πράγματα στο μυαλό σας:
• Το πρόγραμμα περιλαμβάνει δύο φωλιασμένους βρόχους. Ο
εξωτερικός αυξάνει τις τιμές του Ν από το 1 έως το μέγιστο
Ο εσωτερικός εκτυπώνει μια σειρά τιμών σε κάθε γραμμή.
• Τα επιμέρους στοιχεία της κάθε γραμμής είναι εύκολο να
εμφανιστούν εάν καλέσετε την print αντί της println. Η
μέθοδος print είναι παρόμοια της println αλλά δεν αλλάζει
γραμμή όπως κάνει η println. Χρησιμοποιώντας επομένως
την print μπορείτε να έχετε διάφορες τιμές εξόδου μαζί
στην ίδια γραμμή.
• Η n-οστή γραμμή εξόδου περιχέει n τιμές πριν το ίσον αλλά
n – 1 συν (+). Το πρόγραμμά σας λοιπόν δεν μπορεί να
εκτυπώνει ένα συν σε κάθε κύκλο του εσωτερικού βρόχου,
αλλά πρέπει να παραλείψει ένα κύκλο.
Το πρόγραμμα TriangleTable
public class TriangleTable extends ConsoleProgram {
public void run() {
for (int n = 1; n <= MAX_VALUE; n++) {
int total = 0;
for (int i = 1; i <= n; i++) {
if (i > 1) print(" + ");
print(i);
total += i;
}
println(" = " + total);
}
}
/* Private constants */
private static final int MAX_VALUE = 10;
}
Απλό Animation γραφικών
Οι δηλώσεις while και for καθιστούν δυνατή την δημιουργία
απλού animation. Η στρατηγική είναι η δημιουργία ενός
συνόλου γραφικών αντικειμένων και η εκτέλεση του ακόλουθου
βρόχου
for (int i = 0; i < N_STEPS; i++) {
update the graphical objects by a small amount
pause(PAUSE_TIME);
}
Σε κάθε κύκλο του βρόχου, αυτό το ιδίωμα ενημερώνει κάθε
αντικείμενο μετακινώντας το ελαφρά ή αλλάζοντας κάποια άλλη
ιδιότητα του, όπως το χρώμα του. Κάθε κύκλος ονομάζεται ένα
χρονικό βήμα.
Μετά από κάθε χρονικό βήμα, καλείται η pause, η οποία
καθυστερεί το πρόγραμμα για κάποια χιλιοστά του
δευτερολέπτου (PAUSE_TIME). Χωρίς αυτό, το πρόγραμμα θα
τελείωνε πιο γρήγορα από ό, τι το ανθρώπινο μάτι μπορεί να
δει.
The AnimatedSquare Program
public void run() {
GRect square = new GRect(0, 0, SQUARE_SIZE, SQUARE_SIZE);
square.setFilled(true);
square.setFillColor(Color.RED);
add(square);
double dx = (getWidth() - SQUARE_SIZE) / N_STEPS;
double dy = (getHeight() - SQUARE_SIZE) / N_STEPS;
for (int i = 0; i < N_STEPS; i++) {
square.move(dx, dy);
pause(PAUSE_TIME); i dx dy square
}
} 101 3.0 1.7
AnimatedSquare
skip simulation