Iteracions amb while

Iterar

  • Iterar és repetir l’execució d’un bloc de sentències

Iteracions determinades

  • La sentència for permet iterar

    • sobre els elements d’un iterable (seqüència, diccionari, objecte fitxer)

      for element in iterable:
          sentències(element)
      
    • sobre una enumeració dels elements d’un iterable

      for índex, element in enumerate(iterable):
          sentències(índex, element)
      
    • sobre els índexs d’una seqüència (llista, tupla, string)

      for índex in range(len(seqüència)):
          sentències(índex)
      
  • Les iteracions amb for sobre estructures de dades o índexs són determinades: coneixem el nombre d’iteracions necessàries per resoldre el problema o, com a mínim, una fita superior

Generació de seqüències

  • Problemes en què cal generar una seqüència d’elements a partir de dades senzilles, com nombres, per exemple

  • Si coneixem el nombre d’iteracions, es poden resoldre amb for

    for índex in range(funció(nombre)):
        sentències(índex)
    
  • Per exemple:

Iteracions indeterminades

  • Una iteració és indeterminada quan desconeixem el nombre d’iteracions necessàries per resoldre el problema o una fita superior

  • El problema està resolt quan es compleix una condició. La condició pot indicar o bé que

    • encara cal continuar iterant, o bé que

    • cal aturar la iteració

  • Les condicions de continuar i aturar són contràries: continuar == not aturar

  • La sentència while itera mentre la condició continuar val True:

    while continuar:
        sentències
    

    Perill

    si la condició continuar és sempre True, l’execució no acaba. Diem que és una iteració infinita

Generació de seqüències

  • Per tal de generar una seqüència amb una iteració indeterminada, cal saber:

    • Calcular el primer element

    • Calcular el següent (a partir de l’anterior)

    • Una condició, o bé per a continuar el càlcul dels elements, o bé per a aturar-lo

  • L’esquema per recórrer i tractar els elements d’una seqüència és:

    element = primer_element
    while continuar(element):
        tractar(element)
        element = següent(element)
    
  • Per exemple:

Successions i sèries