Issuu on Google+

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

Estructuras Repetitivas Las computadoras están diseñadas para aquellas aplicaciones en las cuales una operación o conjunto de ellas deben repetirse muchas veces. Un tipo muy importante de estructura es el algoritmo necesario para repetir una o varias acciones por un número determinado de veces, a está estructura se la llama Estructura Repetitiva. Las estructuras repetitivas se utilizan cuando se desea que una instrucción o bloque de instrucciones se repita un número determinado de veces o hasta que una condición de terminación se cumpla. Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan bucles, y se llama iteración al hecho de repetir la ejecución de una secuencia de acciones. Iterar es repetir una vez el bucle. Se debe tener en cuenta lo siguiente para la construcción de una estructura repetitiva:   

El cuerpo del bucle: Es el grupo de instrucciones que se van a repetir. Dentro del cuerpo del bucle debe existir una instrucción que modifique la condición lógica de terminación. Las sentencias de inicialización. Son instrucciones que inicializan contadores y acumuladores. Las condiciones para la terminación del bucle: Expresiones lógicas que controlan la terminación del bucle.

A continuación se detallan tres estructuras repetitivas básicas: 1. 2. 3.

Estructura Repetitiva Desde / Para. (FOR) Estructura Repetitiva Hacer – Mientras. (DO WHILE) Estructura Repetitiva Mientras. (WHILE)

Para poder entender cómo funciona un proceso repetitivo, se necesita conocer el concepto de dos expresiones: ¿Qué es un contador? y ¿Qué es un acumulador? CONTADOR En un proceso repetitivo cuya función es contar los sucesos o acciones internas del bucle, como pueden ser el número de iteraciones del bucle, la cantidad de elementos que tiene un archivo, un vector, una matriz, etc. Una forma de controlar un bucle es mediante un contador. Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante o fija en cada iteración. La forma de representar un contador es: contador =

contador

1

La expresión anterior se debe interpretar como asignar a la variable contador el valor que tenia anteriormente más uno o menos uno, dependiendo del caso si se quiere incrementar o decrementar.

1

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

Nota: En todo contador es necesario que exista una instrucción que inicializa la variable que va a tener la función de contador y esta variable puede ser cualquier identificador. Ejemplo 1: Contador que incrementa de uno en uno. La variable contador va a tener la función de ser el contador. contador =

1

// Inicialización de la variable contador con el valor 1

contador =

contador + 1

// la variable contador incrementa a 2 por la suma

1 Ejemplo 2: Contador que decrementa de uno en uno La variable cont va a tener la función de ser el contador. cont

=

10

// Inicialización de la variable cont con el valor 10

cont

=

cont - 1

// la variable cont decrementa a 9 por la resta

10 Nota: Un contador puede ser positivo (incrementos, uno a uno) o negativo (decrementos, uno a uno). Un contador también puede incrementar o decrementar de dos en dos, tres en tres, cuatro en cuatro y así sucesivamente, dependiendo de la tarea que esté realizando el bucle. Ejemplo 3: Contador que incrementa de dos en dos c

=

0

c

=

c

// Inicialización de la variable c con el valor 0 +

2

// la variable c incrementa a 2 por la suma

0 Ejemplo 4: Contador que decrementa de cinco en cinco contador =

57

// la variable contador es igual a 57

contador =

contador - 5

// el contador decrementa a 52

57

2

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

ACUMULADOR Un acumulador es una variable cuya misión es almacenar cantidades variables. Realiza la misma función que un contador pero con la diferencia de que el incremento o decremento es variable y no constante como en el contador. La forma de representar un acumulador es: S = S + valorVariable Nota: En todo acumulador es necesario que exista una instrucción que inicializa la variable que va a tener la función de acumulador y esta variable puede ser cualquier identificador. Ejemplo 5: Calcular el promedio de notas de 10 alumnos, primero debemos utilizar una variable acumulador para ir sumando las 10 notas (cantidades variables) y luego dividir este valor entre diez. La variable S va a tener la función de ser el acumulador. Solución del ejemplo 5. S=0 leer(nota) S=S+nota Prom=S/10 La explicación del algoritmo es el siguiente: S =

0

// Inicialización de la variable “S” acumulador con el valor 0 // el bucle; tiene dos instrucciones.

leer (nota)

// 1. Se lee la 1era nota

S =

// Se suma la 1era nota + el valor de S que es cero “0” // Imaginemos que la 1era nota = 13, ahora S vale 13 // terminado regresa el bucle a su primera instrucción // // 2. Leer la 2da nota en la misma variable “nota” // imaginamos ahora nota=08, ahora S vale 13+8=21 // // 3. Leer nota por tercera vez // imaginamos ahora nota=17, ahora S vale 21+17=38 // 4. Leer nota por cuarta vez // nota=11, ahora S vale 38+11=49 // y asi sucesivamente hasta leer las 10 notas, // terminado en la varible acumuladora esta el total de // la suma de las 10 notas. // 5. Hallar el promedio = S / 10

S + nota

Prom = S/10

Esto es la forma como trabaja un acumulador. 3

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

Estructura Repetitiva Desde/Para En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar las acciones o instrucciones de un bucle. En estos casos en los que el número de iteraciones es fijo, se debe usar la estructura desde/para. Por ejemplo, ingresar 10 notas, 100 números, etc. La representación gráfica de la estructura repetitiva desde/para en un Diagrama de Flujo es el siguiente:

Figura 37. Diagrama de flujo de la estructura repetitiva Desde/Para

En su forma más típica y básica, esta estructura requiere una variable entera que cumple la función de un contador de vueltas. En la sección indicada como “inicialización”, se suele colocar el nombre de la variable que hará de contador, asignándole a dicha variable un valor inicial. En la sección de “condición” se coloca la condición que deberá ser verdadera para que el ciclo continúe (en caso de falso el ciclo se detendrá). Y finalmente, en la sección “modificación” se coloca una instrucción que permite modificar el valor de la variable que hace de contador (para permitir que alguna vez sea falsa). Ejemplo: Queremos que se repita 50 veces el bloque de instrucciones. Describiremos el siguiente ejemplo por etapas: Nota: El símbolo de la flecha apuntando a la izquierda ( ) significa = (igual) 1era Etapa (c=1): Cuando el ciclo comienza antes de dar la primera vuelta, la variable de inicialización toma el valor indicado en la sección de inicialización. 1era Etapa

4

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

2da. Etapa (c<=50): Inmediatamente se verifica en forma automática, si la condición es verdadera. En caso de serlo se ejecuta el bloque de instrucciones del ciclo, es decir, si el bloque tuviera 5 instrucciones esas se realizan una por una. 2da Etapa

3era. Etapa (c=c+1): Al finalizar de ejecutarse el bloque de instrucciónes del bucle, la ejecución de la estructura repetitiva se regresa a la sección de modificación. Se incrementa en una unidad en contador. 3era Etapa

4ta Etapa (c<=50): Seguidamente, se vuelve a comprobar la condición si es verdadera, y si lo es, vuelve a realizar las instrucciones del ciclo, así prosigue ejecutándose todo el bucle hasta que la condición es falsa y sale del bucle.

5

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

4ta Etapa

Analicemos el ejemplo:  La variable c toma inicialmente el valor 1.  Se controla automáticamente el valor de la condición: como c vale 1 y esto es menor que 50, la condición da verdadero.  Como la condición fue verdadera, se ejecutan la(s) instruccion(es).  Al finalizar de ejecutar todas las instrucciones, se retorna a la instrucción c = c + 1, por lo que la variable c se incrementa en uno.  Se vuelve a controlar automáticamente si c es menor o igual a 50. Como ahora su valor es 2 y sigue siendo menor que 50, se ejecuta nuevamente el bloque de instrucciones e incrementa nuevamente la variable del contador c.  El proceso se repetirá hasta que la variable c sea incrementada al valor 51. En ese momento la condición será falsa, el ciclo se detendrá y saldrá del bucle repetitivo. La variable c puede ser inicializada y finalizar en cualquier valor. Además, no es obligatorio que la instrucción de modificación sea un incremento de tipo contador c = c + 1. Puede ser también c = c + 2, en lugar de c = c + 1, el valor de c será incrementado de a 2 en cada vuelta, y no de a uno. En este caso, esto significará que el ciclo no efectuará las 50 vueltas sino solo 25 ¿Por qué? La instrucción de modificación no solamente puede ser un incrementador, también puede ser un decrementador, es decir, la variable de inicialización decrementará a lo que se desea, esto “se puede hacer siempre y cuando la variable de inicialización comienza en un valor mayor que el de la condición”, por ejemplo:

6

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

Analicemos el ejemplo:  La variable c toma inicialmente el valor 100.  El valor de la condición es c >= 1.  La variable c decrementa de dos en dos.  Esto quiere decir que el bucle se repite 50 veces, que comienza en un valor de contador = 100, decrementa de dos en dos, hasta que la condición es falsa. La representación gráfica de la estructura repetitiva desde/para en el diagrama estructurado y pseudocódigo son los siguientes:

estructura repetitiva desde/para

Figura 38. Diagrama estructurado de la estructura repetitiva Desde/Para

condición

modificación

inicialización

desde c = vi hasta vf inc|dec valor hacer instrucción 1 instrucción 2 . . instrucción n fin_desde Figura 39. Pseudocódigo de la estructura repetitiva Desde/Para

7

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

Ejemplo 1: Realizar un algoritmo que permita hallar la suma de los 10 primeros números enteros positivos, y su promedio.

Cuerpo del bucle

Figura 40. Diagrama de flujo del ejemplo 1

Cuerpo del bucle

Figura 41. Diagrama estructurado del ejemplo 1

8

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

algoritmo Ejemplo1 var entero: c , suma real: prom inicio suma = 0 desde c = 1 hasta 10 inc 1 hacer suma = suma + c fin_desde prom = suma/10 escribir(‘La suma es : ’,suma) escribir(‘El promedio es : ’,prom) fin

Asignatura: Fundamentos de Programación

Cuerpo del bucle

Figura 42. Pseudocódigo del ejemplo 1

Nota: En Pseudocódigo si la instrucción de incremento es en uno, se puede obviar la instrucción inc 1, y solamente se puede colocar: desde c = 1 hasta 10 hacer . Porque en algoritmo se sobrentiende que aumenta en 1. Ejemplo 2: Realizar un algoritmo que permita hallar la suma y promedio de 20 números enteros ingresados por teclado.

Cuerpo del bucle

Figura 43. Diagrama de flujo del ejemplo 2

9

Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas

Asignatura: Fundamentos de Programación

Cuerpo del bucle

Figura 44. Diagrama estructurado del ejemplo 2

algoritmo Ejemplo2 var entero: n, c, suma real: prom inicio suma = 0 desde c = 1 hasta 20 inc 1 leer(n) suma = suma + n fin_desde prom = suma/20 escribir(‘La suma es : ’,suma) escribir(‘El promedio es : ’,prom) fin

Cuerpo del bucle

Figura 45. Pseudocódigo del ejemplo 2

Ejemplos de autoaprendizaje: Resuelva en diagrama de flujo, estructurado y pseudocódigo. Ejemplo 3: Realizar un algoritmo que me permita leer 10 números positivos y negativos, e imprima solamente los números positivos. Ejemplo 4: Realizar un algoritmo que me permita leer 20 números e imprimir cuántos son positivos, negativos y neutros. Dato: Neutro se le conoce al cero “0”

10


Estructura Repetitiva: Estructura Repetitiva For