As estruturas iterativas, compostas por bucles, son aquelas que repiten determinadas accións segundo se den unhas ou outras condicións . As principais estruturas iterativas son:
- Repetir mentres (while)
- Repetir dende ...ata (for...in range...)
- Repetir para sempre (while True)
- Bucles aniñados
- Recursividade, das que falaremos unha vez coñecidas as funcións en Python.
Repetir mentres (while)
Imaxina un programa que permite introducir un nome de usuario e o seu contrasinal. Estamos afeitos a que ditos programas te permitan equivocarte ao poñer o contrasinal e poidas volver intentalo. Para realizar operacións como esas precisamos de ordes iterativas, é dicir, unha orde faga que o programa non avance ata que consigas introducir o contrasinal. O probema que imos atopar na nosa transición de Scratch a Python é que os comandos que se empregan establecen a condición repetir de maneira diferente.
Orde | Scratch | Python |
---|---|---|
Repetir ata que x=5 |
|
while x != 5: print(‘ola’) #Fíxate que é xusto o contrario que en Scratch |
Repetir mentres a=3 |
while a == 3: print(‘ola’) #Fíxate que é xusto o contrario que en Scratch |
A continuación imos estudar o exemplo do que falabamos: un programa que permita acceder aos datos (ou abra unha porta) cando introduzas ben o contrasinal.
Diagrama de fluxo
Programa en Scratch
Repetir dende ...ata (for i... in range())
Esta estrutura permite repetir un número determinado de veces, sen depender dunha condición. Para iso crea unha variable que vai mudando o seu valor, aumentando de un en un ou da cantidade que desexes.
Orde | Scratch | Python |
---|---|---|
Repetir 10 veces |
for i in range (10): print(‘ola’) #repite as ordes dende i= 0 , 10 veces
|
|
Repetir dende 2 ata 11 pero contando de 3 en 3 |
for i in range (2,11,3): print(i, end=' ') # E escribirá: 2 5 8 |
Fagamos un exemplo sinxelo: supoñamos que queremos saber a táboa de multiplicar de calquera número:
Diagrama de fluxo
Programa en Scratch
Repetir para sempre (while True)
En Python non existe propiamente unha orde que execute para sempre unha acción, pero podemos conseguir esa repetición empregando while True:. Unha opción importante coa que debemos contar, ademais, é coa opción de saír dun bucle en calquera momento (neste caso é Scratch quen non o pode facer). Para saír dun bucle empregaremos a orde break
Orde | Scratch | Python |
---|---|---|
Repetir para sempre (ollo cos bucles infinitos!) |
while True: print(‘ola’) #en Python non existe repetir |
|
Saír dun bucle |
|
while True: print ('ola') break |
Como exemplo imos probar cun caso real : un programa que permita acceder aos datos (ou abra unha porta) cando introduzas ben o contrasinal, pero que soamente che de a oportunidade de intentalo 3 veces.
Bucles aniñados
Que ocorre cando inserimos un bucle dentro doutro bucle?. Imos probar a aniñar dous bucles. Primerio execútase o bucle interior e despois o externo.
Orde | Scratch | Python |
---|---|---|
Bucle aniñado (repetir unha secuencia dentro doutra secuencia) |
|
for a in range (1,6):
for b in range (1,4):
print (a, ' ', b)
print()
#Quedaría así:
1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 4 1 4 2 4 3 5 1 5 2 5 3 |
Volvamos á táboa de multiplicar. Nesta ocasión imos escribir todas as táboas de multiplicar ata un número determinado.
Diagrama de fluxo
Programa en Scratch
[Scratch: Táboas de multiplicar múltiples]
Ata aquí as estruturas básicas, nas páxinas que temos a continuación afondaremos nelas e traballaremos con exercicios.
Estruturas secuenciais Estruturas condicionais Estruturas iterativas: Bucles