Estructures de control

En un llenguatge de programació, les estructures de control permeten modificar el flux de l'execució d'un conjunt d'instruccions.

Es poden distingir tres tipus bàsics de control de flux, és a dir:

  • Seqüencial
  • Condicionals (o de selecció)
  • Cicliques (o repetició)

El flux seqüencial significa executar les instruccions en ordre d'aparició, que és el que hem vist a la introducció.

En aquest apartat ens centrarem en les estructures condicionals (if) i les repetitives (while, for).

També veurem una estructura repetitiva per a crear seqüències, el range.

Operadors lògics

Juntament amb altres operadors, serveixen per a contrastar dues o més condicions.

Per exemple; si volem un número entre 16 i 64; usaràs aquesta condició.

if (n>15) AND (n<65)
   print ("pots treballar")

A diferencia de java, s'escriuen amb lletres (AND/OR/XOR/NOT)

if (n>2) AND (n<5):
    print ("esta entre 2 y 5")
elif (n>5) OR (n<2):
   print("Fora de 2 y 5")
else:
    print("es un altre cas")

Condicional if/elif/else

El tabulador s´utilitza sempre al if i al else.

És important respectar els tabuladors per a què funcioni correctament.

if (s=="HOLA"):
    print ("HOLA")
elif (s=="Adios"):
   print("Era adios")
else:
    print("No es hola")

Veiem un altre exemple, fixa't que per encadenar més de 3 condicions necessitem diversos elif i al final un else.

x = int(input("Please enter an integer: "))
if x < 0:
    x = 0
    print('Negative changed to zero')
elif x == 0:
    print('Zero')
elif x == 1:
    print('Single')
else:
    print('More')

Si executem aquest codi, obtenim:

> Please enter an integer: 42
More

Si necessites més condicions (la instrucció match) consulta aquest article:

(https://www.freecodecamp.org/news/python-switch-statement-switch-case-example/)[Python switch case statment examples]

No és habitual l'ús del match, ja que s'ha incorporat força recentment (Python 3.10)

bucles (while/for)

while El while s'executa igual que a Java o Javascript.

count = 1
while (count <= 10):
    print(count)
    count += 1

for Es diferent a la forma vista amb Java, ja que necessita un array (llista en Python) inicialitzat.

numbers = [1,2,3,4,5,6,7,8,9,10]
for number in numbers:
    print(number)

Inicialitzem, la llista amb la funció range(), ficant el punt d'inici(inclusiu) i el punt final(exclusiu).

# Solution 3
numbers = range(1,11)
for number in numbers:
    print(number)

Segona forma d'inicialitzar la comanda for.

for number in range(1,11):
    print(number)

Range és una funció que genera una seqüència (normalment numèrica) i té tres formes:

  1. Amb 1 parámetre
  2. Amb 2 parámetres
  3. Amb 3 parámetres

Range retorna un "Generador", no una llista. Si vull una lista, he de convertir-la manualment amb list(...)

list(range(10))

list(range(1, 11))

list(range(1, 11, 2))

pass

El pass és una instrucció menys habitual. Serveix per no fer cap acció dintre d'un if o un while.

if (n>2) AND (n<5):
    print ("esta entre 2 y 5")
else:
    pass

S'utilitza a mode de #TODO, codi pendent d'implementar.

class MyEmptyClass:
    pass   # Remember to implement this!