Περιγραφή
Η συνθήκη for χρησιμοποιείται για την επανάληψη ενός συνόλου συνθηκών που περικλείονται σε άγκιστρα. Συνήθως χρησιμοποιείται ένας μετρητής προσαύξησης για να αυξήσει και να τερματίσει τον βρόχο. Η συνθήκη for είναι χρήσιμη για κάθε επαναληπτική λειτουργία και συχνά χρησιμοποιείται σε συνδυασμό με συστοιχίες για την λειτουργία της συλλογής των δεδομένων και ακροδεκτών.
Η επικεφαλίδα του βρόχου for αποτελείται από τρία μέρη:
for (initialization; condition; increment) {
//statement(s);
}

Πρώτη πραγματοποιείται η αρχικοποίηση (initialization) και ακριβώς μόνο μια φορά. Κάθε φορά η κατάσταση (condition) ελέγχεται μέσω του βρόχου. Εάν είναι αληθής, τότε εκτελείται το κομμάτι της συνθήκης καθώς και η προσαύξηση (increment). Όταν η συνθήκη γίνεται ψευδής, τότε ο βρόχος σταματά.
Παράδειγμα
// Dim an LED using a PWM pin
int PWMpin = 10; // LED in series with 470 ohm resistor on pin 10
void setup()
{
// no setup needed
}
void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}
Συμβουλές για τον κώδικα
Η συνθήκη C για τον βρόχο for είναι πολύ πιο ευέλικτη από ότι οι βρόχοι for που βρέθηκαν σε μερικές άλλες γλώσσες υπολογιστών, συμπεριλαμβανομένης της BASIC. Από τα τρία στοιχεία της επικεφαλίδας, οποιοδήποτε ή όλα μπορούν να παραλειφθούν. Ωστόσο τα ερωτηματικά είναι αναγκαία. Επίσης, οι δηλώσεις για την αρχικοποίηση, την κατάσταση και την προσαύξηση μπορεί να είναι οποιεσδήποτε έγκυρες δηλώσεις C με άσχετες μεταβλητές καθώς και η χρησιμοποίηση οποιονδήποτε τύπων δεδομένων C συμπεριλαμβανομένης των υποδιαστολών. Αυτοί οι τύποι των ασυνήθιστων δηλώσεων for, μπορούν να παρέχουν λύσεις σε ορισμένα σπάνια προβλήματα προγραμματισμού.
Για παράδειγμα, η χρησιμοποίηση του πολλαπλασιασμού στη γραμμή προσαύξησης, θα δημιουργήσει μια λογαριθμική πρόοδο:
for(int x = 2; x < 100; x = x * 1.5){
println(x);
}
Αυτό παράγει: 2, 3, 4, 6, 9, 13, 19, 28, 42, 63, 94
Ένα άλλο παράδειγμα που αναβοσβήνει ένα led μόνο με έναν βρόχο for είναι το εξής:
void loop()
{
int x = 1;
for (int i = 0; i > -1; i = i + x){
analogWrite(PWMpin, i);
if (i == 255) x = -1; // switch direction at peak
delay(10);
}
}
Επιστροφή στην σελίδα Παραπομπές Γλώσσας
