Η συλλογιστική με την οποία λειτουργεί η for είναι:
Έχουμε αρχική τιμή Χ |
|
Αν το Χ εκπληρώνει κάποια συνθήκη (π.χ. X > 500) |
|
Κάνε αυτό |
|
Τροποποίησε το Χ |
Δίνουμε δηλαδή μια αρχική τιμή και μετά όσο ισχύει μια συνθήκη επαναλαμβάνουμε τις ίδιες πράξεις.
Η γενική σύνταξη της for είναι:
For (Αρχική τιμή; Συνθήκη; Μετά το τέλος τροποποίηση της αρχικής τιμής)
{ κάνε αυτό }
Στο ακόλουθο παράδειγμα έχουμε ένα είδος προς πώληση και ελέγχουμε το υπόλοιπο της αποθήκης μας μετά από κάθε παραγγελία:
#!usr/bin/perl -w
use strict;
Τα απαραίτητα αρχικά.
my $forsale = 10000;
Το περιεχόμενο της αποθήκης μας. (Με το my δηλώνουμε ότι θα κάνουμε χρήση της μεταβλητής, κάτι απαραίτητο όταν λειτουργούμε σε use strict.)
my $sold;
Ο αριθμός των πωληθέντων (φυσικά ξεκινάμε από 0, αλλά δεν δίνουμε εδώ τιμή διότι θα το κάνουμε παρακάτω μέσα στην for).
my $order =0;
Ο αριθμός των παραγγελιών που έχουμε λάβει μέχρι τώρα. (0 αφού τώρα ξεκινάμε).
for ($sold =0; $sold < $forsale; $sold = $sold + $order)
$sold =0 είναι η αρχική τιμή μας
$sold < $forsale είναι η συνθήκη μας (Τα πουλημένα τεμάχια πρέπει να είναι λιγότερα από όσα έχουμε συνολικά προς πώληση.)
$sold = $sold + $order
Μετά το πέρας κάθε εκτέλεσης των εργασιών που περιέχονται στα άγκιστρα (και ακολουθούν αμέσως μετά) η $sold θα αλλάζει (θα προσαυξάνεται κατά την order).
{
my $available = $forsale - $sold;
Βρίσκουμε πόσα τεμάχια απομένουν ακόμη.
print "Apomenoyn akomh $available. Posa thelete;\n";
$order = <STDIN>;
chomp ($order);
Ενημερώνουμε για τη διαθεσιμότητα τον χρήστη και λαμβάνουμε την παραγγελία του. Τώρα θα ενημερωθεί η $sold για τη νέα ποσότητα που παραγγέλθηκε και οι εντολές μέσα στα άγκιστρα θα αρχίσουν τα εκτελούνται από την αρχή.
}
Φυσικά το «πρόγραμμά» μας έχει πολλά κενά (δεν στέλνουμε πουθενά τις παραγγελίες, δεν ελέγχουμε αν ο χρήστης ζητάει κάτι λογικό και δεν πληκτρολογεί ασυναρτησίες κ.λπ.). Πρόκειται όμως για μια καλή εισαγωγική εφαρμογή.
Ολόκληρος ο κώδικας του προγράμματος είναι:
#!usr/bin/perl -w
use strict;
my $forsale = 10000;
my $sold;
my $order =0;
for ($sold =0; $sold < $forsale; $sold = $sold + $order) {
my $available = $forsale - $sold;
print "Apomenoyn akomh $available. Posa thelete;\n";
$order = <STDIN>;
chomp ($order);
}