Usuari:Mcapdevila/Bucle for: diferència entre les revisions

Contingut suprimit Contingut afegit
m Corregit: hi apareixi la > hi aparegui la
Cap resum de modificació
Línia 1:
{{segona llegida|data=febrer de 2014}}
El ''' [[Bucle (programació)|bucle]] for ''' o ''' cicle for ''' és una [[Estructura de control (computació)|estructura de control]] en la qual es pot indicar el nombre exacte d'[[iteració|iteracions]]. Està disponible en gairebé tots els [[programació imperativa|llenguatges de programació imperatius]].
 
== Elements del bucle ==
Línia 25:
}}
 
* '''Variable de control''': habitualment s'utilitza la lletra '''i''' com a variable de control, o bé les seves successores (j, k, ...) en cas de bucles niats. L'ús d'aquesta lletra pot semblar arbitrari a primera vista però en la pràctica és una excel·lent forma d'aportar agilitat de lectura al codi, pel seu ús tan comú. Com rares vegades els bucles niats superen les tres dimensions o nivells (per una senzilla qüestió d'explosió exponencial), les lletres i, j, k solen ser les úniques relacionades amb aquest ús. La raó, però, és que en [[Fortran]] per defecte les variables que començaven a partir de la I es declaraven com a enteres (Integer) i aquest costum s'ha traslladat a altres llenguatges de programació. En C, la variable de control s'especifica com a primer paràmetre de la instrucció ''for'' juntament amb la seva inicialització (opcionalment).
 
* '''Inicialització de la variable de control''': en [[pseudocodi]] es demana explicitar (és la secció'' ''<math>i \leftarrow x</math>), però, altres llenguatges més permissius com C no ho requereixen de manera obligatòria. De tota manera, la pràctica d'utilitzar variables de control que no s'inicialitzen en el bucle no és recomanada per a la llegibilitat del codi.
 
* '''Condició de control''': en pseudocodi es veu representada pel valor final que pot prendre la variable de control (la secció <math>fins \ n</math>). En C és el segon paràmetre de la instrucció ''for'' i pot ser qualsevol condició (ni tan sols és obligatori que hi aparegui la variable de control, tot i que això no es considera una bona pràctica ja que dificulta la legibilitat del codi).
 
* '''Increment''': en pseudocodi es pren per defecte el valor 1, encara que es pot fer explícit mitjançant la sentència <math>a \ increments \ de \ s</math> qualsevol nombre enter (és a dir, tècnicament també es podria ecrementar). En C és l'últim paràmetre de la sentència ''for.''
 
* '''Cos''': és el conjunt d'instruccions que es repetirà a cada iteració. Se suposa que dintre del cos no s'hauria d'alterar el valor de la variable de control, ja que no es considera una bona pràctica i pot dificultar la legibilitat del bucle.
 
== Usos ==
Línia 57:
Un altre ús comú és utilitzar els bucles PER per recórrer vectors de dues o més dimensions, en aquest cas es nien aquestes iteracions.
 
''' PSEUDOCODI '''
 
Vector a [3] [4] [2].//Estem indicant un vector de 3 dimensions i 24 elements en total.
Línia 73:
FI PER
 
on '' VariableControl '', '' ValorInicial '', '' ValorFinal '' i Pas són sencers. La (s) instrucció (s) del cos s'executarà (n) (ValorFinal - ValorInicial+1) vegades, o sigui que va des ValorInicial a ValorFinal inclusivament.
 
== Exemple en C ==
Línia 79:
{
int vector [10], i;
'''for (i = 0; i <10; i++)'''
{
vector [i] = i;
Línia 85:
}
 
En la definició del '' for '', tenim que la variable de control '' i '' s'inicialitza en un valor 0, després es comprova la condició de control que ha de ser certa durant la seva execució, per completar el cicle, i, finalment, tenim l'increment, en aquest cas en una unitat. Quan la condició ''i<10'' deixa de ser certa (quan ''i=10''), el bucle finalitza.
 
Si, per exemple, en la condició col·loquem i <11, llavors el cicle for s'executarà des [0 ... 10], la qual cosa, en intentar accedir a l'element vector [10], generarà un error, ja que en C (per definició) els vectors de mida N van des de la posició 0 fins a la N-1.
 
== Exemple anterior escrit en [[Lexico]] ==
tasca
{
Línia 106:
</pre>
 
* ''' Element ''': és el nom de la variable o objecte que pren l'element iterat en el cos del bucle.
* ''' Tipus de Dada ''': és el tipus de variable o la classe a la qual pertany l'objecte que es vol iterar.
* ''' Conjunt ''': és l'estructura de dades que es vol iterar. L'ús més típic és amb vectors o-en programació orientada a objectes-classes del tipus Col·lecció.
* ''' Cos ''': és el que es farà en cada iteració, poden ser una o més instruccions. Si bé no s'imposa una obligació sobre això, el més comú és que en aquest cos hi hagi alguna operació sobre l'element iterat.
 
== Necessitat d'una nova estructura de control ==
Línia 129:
 
== Vegeu també ==
* [[Array|Vectorsbucle While]]
* [[Buclebucle Do-while]]
* [[Llenguatge de programació C|C]]
* [[LlenguatgeBucle de programacióinfinit]]
* [[Estructures de control]]
* [[Bucle]]
* [[Bucle while]]
* [[Bucle repetir]]
* [[Cicle infinit]]
* [[Teorema del programa estructurat]]
* [[ProgramacióLlenguatge estructuradaC]]
* [[Llenguatge de programació C|C]]
 
 
 
 
 
 
== Referències ==
{{Referències}}
[[Categoria:Estructures de control]]