[eeei.gr Logo]
Επικοινωνία
Ταυτότητα
Μαθήματα Internet | Μαθήματα Προγραμματισμού | Net Business | Τα νέα του Internet | Ο Κόσμος του Αύριο

Μια πιο κλασική εφαρμογή της while

Τις περισσότερες φορές προτιμούμε μέσα στην παρένθεση του while να υπάρχει ένας συγκεκριμένος όρος (condition) που όσο ισχύει η while συνεχίζει να λειτουργεί. Ας δούμε το ακόλουθο πρόγραμμα όπου ο χρήστης πρέπει να μας δώσει την ηλικία του και εμείς θα κάνουμε κάποια σχόλια πάνω σ' αυτήν:

#!/usr/bin/perl -w

use strict;

Τα γνωστά

print "----------------------------------------------------------------------------------\n";

print "KALOSILΘES STHN EFARMOGH THS ALITHIAS GIA THN ILIKIA SOU\n";

print "----------------------------------------------------------------------------------\n";

Τα εισαγωγικά.

my $quit = 1;

Δίνουμε την αρχική τιμή της $quit.

while ($quit == 1)

Όσο η $quit είναι ίση με ένα, δηλαδή όσο διατηρεί την αρχική της τιμή το πρόγραμμα θα τρέχει (θα επαναλαμβάνεται) συνέχεια. Θα τερματίσει μόνο όταν αυτή αλλάξει. (Προσέξτε τα δύο = = που σημαίνουν σύγκριση. Αν λέγαμε $quit=1 αυτό θα σήμαινε ότι δίνουμε στην $quit την τιμή 1. Υπάρχει assignment τιμής και όχι condition. Συνεπώς το πρόγραμμα θα τρέχει για πάντα αφού δεν υπάρχει όρος που να του λέει πότε να σταματήσει..)

{

Αρχίζει το περιεχόμενο της while.

my $ilikia;

print " GRAPSE THN ILIKIA SOU:\n";

$ilikia = <STDIN>;

chomp $ilikia;

Ο χρήστης δίνει την ηλικία του.

if ( $ilikia eq '')

{

print "Prepei na grapshs kati\n";

}

Αν ο χρήστης πατήσει Enter χωρίς να γράψει τίποτε το πρόγραμμά μας θα λάβει ένα άδειο string και φυσικά θα διαμαρτυρηθεί γι' αυτό. (eq σημαίνει equal. Δείτε σχετικά τα κείμενα για τους λογικούς τελεστές.)

elsif ( $ilikia =~ m/^-\d+$/)

{

print "EISE AGENITOS\n";

}

Αν πληκτρολογηθεί αρνητικός αριθμός (βλέπε σχετικά στις regular expressions). Σε αυτή την περίπτωση το πρόγραμμα (για την ακρίβεια η while) θα ξαναρχίσει από την αρχή.

elsif ($ilikia =~ m/\D/)

{

print "LES ANOHSIES\n";

}

Αν πληκτρολογηθεί μη αριθμητικός χαρακτήρας (βλέπε σχετικά στις regular expressions). Σε αυτή την περίπτωση το πρόγραμμα (για την ακρίβεια η while) θα ξαναρχίσει από την αρχή.

else

Αν δηλαδή η τιμή είναι σωστή (αποδεκτή).

{

if ( $ilikia >=1 and $ilikia <= 15 )

{

print "Eisai moro\n";

}

elsif ( $ilikia > 15 && $ilikia <= 19 )

{

print "Eisai gematos spirakia\n";

}

elsif ( $ilikia > 19 && $ilikia <= 35 )

{

print "Eisai ATOMO\n";

}

elsif ( $ilikia > 35 && $ilikia <= 999 )

{

print "Eisai apokliros kai ora na doseis topo stous neous\n";

}

else

{

print "LES ANOHSIES\n";

}

$quit = 2;

}

Μια σειρά από εναλλακτικές επιλογές που τελειώνουν με ορισμό της $quit σε κάτι διαφορετικό του 1. ’ρα η while σταματά να επαναλαμβάνεται.

}

Κλείσιμο της while.

Η γενική σύνταξη της while λοιπόν είναι:

While ( κάτι ) {σειρά εργασιών}

Δηλαδή για όσο χρονικό διάστημα ισχύει το «κάτι» να εκτελείς συνεχώς αυτές τις εργασίες.


Τρέχουσα Ενότητα: Perl


 

© Eeei.gr 2009