# Μετρώντας ως το 10

## Βρόγχοι ``While''

Παρουσιάζουμε την πρώτη δομή ελέγχου. Κανονικά ο υπολογιστής ξεκινάει με την πρώτη γραμμή και συνεχίζει από εκεί. Οι δομές ελέγχου αλλάζουν την σειρά με την οποία οι εντολές εκτελούνται ή αποφασίζουν για το αν μια συγκεκριμένη εντολή θα εκτελεστεί ή όχι. Να ο κώδικας ενός προγράμματος που χρησιμοποιεί την δομή ελέγχου while:

    a = 0
    while a < 10:
            a = a + 1
            print a

Και εδώ το εξαιρετικά ενδιαφέρον αποτέλεσμα:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

(Και νομίσατε πως ο υπολογιστής δεν μπορούσε να καταντήσει χειρότερα από κομπιουτεράκι!) Τι κάνει λοιπόν το πρόγραμμα; Πρώτα βλέπει την γραμμή `a = 0` και γράφει μηδέν. Μετά βλέπει `while a < 10:` και έτσι ο υπολογιστής ελέγχει αν`a < 10`. Την πρώτη φορά που ο υπολογιστής βλέπει αυτήν την δήλωση το a είναι μηδέν άρα μικρότερο από 10. Με άλλα λόγια, για όσο το a είναι μικρότερο του 10 ο υπολογιστής θα εκτελεί τις εντολές που είναι στην εσοχή.

Να άλλο ένα παράδειγμα για την χρήση της δήλωσης `while`:

    a = 1
    s = 0
    print 'Enter Numbers to add to the sum.'
    print 'Enter 0 to quit.'
    while a != 0 :
            print 'Current Sum:',s
            a = input('Number? ')
            s = s + a
    print 'Total Sum =',s

Την πρώτη φορά που έτρεξα το πρόγραμμα η Python εμφάνισε:

      File "sum.py", line 3
        while a != 0
                    ^
    SyntaxError: invalid syntax

Είχα ξεχάσει να βάλω τα `:` μετά το while. Το μήνυμα σφάλματος παραπονέθηκε για την παράλειψη και μου έδειξε που νόμιζε ότι βρίσκετα το πρόβλημα με το `SPMquot`^" . Να τί έκανα με το πρόγραμμα αφού διόρθωσα το πρόβλημα:

    Enter Numbers to add to the sum.
    Enter 0 to quit.
    Current Sum: 0
    Number? 200
    Current Sum: 200
    Number? -15.25
    Current Sum: 184.75
    Number? -151.85
    Current Sum: 32.9
    Number? 10.00
    Current Sum: 42.9
    Number? 0
    Total Sum = 42.9

Προσέξτε πως η εντολή print 'Total Sum =',s τρέχει μόνο μια φορά στο τέλος. Η εντολή while> αφορά μόνο την γραμμή που βρίσκεται σε εσοχή. Το != σημαίνει ``όχι ίσο'' συνεπώς το while a != 0 : σημαίνει ``μέχρι το α να είναι μηδέν τρέξε τις εντολές που βρίσκονται στην παρακάτω εσοχή''.

Τώρα που έχουμε τους βρόγχους while, μπορούμε να φιάξουμε προγράμματα που θα τρέχουν αιωνίως. Ένας εύκολος τρόπος είναι γράφοντας ένα πρόγραμμα σαν το παρακάτω:

    while 1 == 1:
         print "Help, I'm stuck in a loop."

Το πρόγραμμα θα εμφανίζει `Help, I'm stuck in a loop.` μέχρι το τέλος του κόσμου ή μέχρι να το σταματήσουμε εμείς. Ο δεύτερος τρόπος είναι εύκολος: αρκεί να πατήσουμε το κουμπί Control (ή Ctrl) και το `c' (το γράμμα) ταυτόχρονα. Αυτός ο συνδυασμός θα ``σκοτώσει'' το πρόγραμμα (Ορισμένες φορές μπορεί να χρειαστεί να πατήσετε και ``Εnter'' μετά τα ``Control+C''.)

## Παραδείγματα

Fibonnacci.py

    #This program calulates the fibonnacci sequence
    a = 0
    b = 1
    count = 0
    max_count = 20
    while count < max_count:
        count = count + 1
        #we need to keep track of a since we change it
        old_a = a
        old_b = b
        a = old_b
        b = old_a + old_b
        #Notice that the , at the end of a print statement keeps it
        # from switching to a new line
        print old_a,
    print

Αποτέλεσμα:

    0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

Password.py

    # Waits until a password has been entered.  Use control-C to break out with out
    # the password

    #Note that this must not be the password so that the
    # while loop runs at least once.
    password = "foobar"

    #note that != means not equal
    while password != "unicorn":
        password = raw_input("Password:")
    print "Welcome in"

Δοκιμή:

    Password:auo
    Password:y22
    Password:password
    Password:open sesame
    Password:unicorn
    Welcome in