Iteracions amb while ==================== Iterar ------ - :term:`Iterar ` és repetir l'execució d'un bloc de sentències Iteracions determinades ----------------------- - La sentència :code:`for` permet iterar - sobre els elements d'un :term:`iterable` (:term:`seqüència`, diccionari, :term:`objecte fitxer`) .. code-block:: python3 for element in iterable: sentències(element) - sobre una enumeració dels elements d'un :term:`iterable` .. code-block:: python3 for índex, element in enumerate(iterable): sentències(índex, element) - sobre els índexs d'una :term:`seqüència` (llista, tupla, string) .. code-block:: python3 for índex in range(len(seqüència)): sentències(índex) - Les iteracions amb :code:`for` sobre estructures de dades o índexs són :term:`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 :code:`for` .. code-block:: python3 for índex in range(funció(nombre)): sentències(índex) - Per exemple: - :external+fi:doc:`temes/iteracions/Factorial/index`: 1 - :external+fi:doc:`temes/iteracions/Sèrie_alternada_pel_logaritme/index` - :external+fi:doc:`temes/iteracions/Nombres_primers/index` Iteracions indeterminades ------------------------- - Una iteració és :term:`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 :term:`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: :code:`continuar == not aturar` - La :term:`sentència` :code:`while` itera mentre la condició :code:`continuar` val :code:`True`: .. code-block:: python3 while continuar: sentències .. danger:: si la condició `continuar` és sempre ``True``, l'execució no acaba. Diem que és una :term:`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: .. code-block:: python3 element = primer_element while continuar(element): tractar(element) element = següent(element) - Per exemple: - :external+fi:doc:`temes/iteracions/Dígits_d_un_nombre_enter/index` - :external+fi:doc:`temes/iteracions/Nombres_triangulars/index` - :external+fi:doc:`temes/iteracions/MCD-MCM/index`: 2 i 3 - :external+fi:doc:`temes/iteracions/Factorització_Enter/index` Successions i sèries ~~~~~~~~~~~~~~~~~~~~ - Les :term:`successions ` i les :term:`sèries ` són un cas particular de la generació de seqüències - La :term:`condició` de continuar o acabar pot involucrar: - un :term:`terme` de la successió - :external+fi:doc:`temes/iteracions/Desenvolupament_en_sèrie/index` - :external+fi:doc:`temes/iteracions/Sèries_de_Maclaurin/index`: 1 - dos termes consecutius - :external+fi:doc:`temes/iteracions/Arrel/index` - :external+fi:doc:`temes/iteracions/Sèries_de_Maclaurin/index`: 2 - la suma dels termes - :external+fi:doc:`examens/curs2022-2023/1/L3/G20/series` - :external+fi:doc:`examens/curs2022-2023/1/L3/G40/series_trigo`