Unidad 6 - Sentencias Repetitivas - Para
-
Upload
camilo-pulido -
Category
Documents
-
view
7 -
download
2
description
Transcript of Unidad 6 - Sentencias Repetitivas - Para
2015
UNIDAD VI: Sentencias Repetitivas - Para
PROGRAMACION DE COMPUTADORAS
Unidad VI: Sentencias Repetitivas - Para
2
UNIDAD VI: Sentencias Repetitivas - Para
5.1 INTRODUCCIÓN
Un ciclo es una estructura que nos permite representar un conjunto de instrucciones que debe repetirse
una cantidad limitada de veces, normalmente dependiente de una condición o de una cantidad
determinada de repeticiones o iteraciones. Los ciclos permiten iterar todo un proceso tantas veces
como el programador (ó el usuario) lo determine.
Es común, que en la solución de muchos problemas algorítmicos, se requiera realizar la repetición de
cierto bloque de instrucciones, con el fin de obtener el objetivo buscado por el algoritmo. Como se vio
con la Sentencia Repetitiva Mientras, para implementar repetición de bloques de instrucciones se
utilizan las estructuras de control llamadas ciclos o estructuras repetitivas. En esta Unidad entraremos a
ver otra Estructura Repetitiva, en este caso la Sentencia Para.
5.2 Concepto General
Un Sentencia Repetitiva Para puede definirse como una estructura que nos permite repetir o iterar un
conjunto de instrucciones y que tiene las siguientes características:
• El conjunto de instrucciones a repetir dentro del ciclo debe ser finito
• La cantidad de veces que se repita dicho conjunto de instrucciones también debe ser finita. En
algunos casos esta cantidad de veces va a depender de una condición explícita y en otros casos
va a depender de una condición implícita. Una condición es explícita cuando depende solamente
de la misma ejecución del programa sin que sea importante la participación del usuario.
Asimismo una condición es implícita cuando depende solamente de la voluntad del usuario y
por lo tanto la cantidad de iteraciones o repeticiones del ciclo podría llegar a ser diferente cada
vez pues sería posible que cambiara con cada usuario.
• Deben estar claramente demarcados el inicio y el fin del ciclo. En los casos en los cuales solo
exista una instrucción a iterar, no serán necesarias dichas marcas.
• Dentro de un ciclo podrá ir cualquiera de las otras estructuras, incluyendo otros ciclos.
Al revisar detenidamente las definiciones vistas aquí y al hacer inferencia con lo que aprendimos en la
Sentencia Mientras, se puede concluir que las dos estructuras son iguales en su conceptualización.
Ahora que veamos la declaración del Para, vamos a darnos cuenta que son distintas en su sintaxis, pero
en su forma de operar prácticamente son iguales.
La forma de usar la Sentencia Repetitiva Para es la siguiente:
Para variable_numerica<-valor_inicial Hasta valor_final Con Paso paso Hacer
secuencia_de_acciones
Fin Para
Unidad VI: Sentencias Repetitivas - Para
3
Donde:
Variable_numerica: Corresponde a la variable que se utilizará para controlar las repeticiones del ciclo
Para.
Valor_inicial: Es el valor con el cual se iniciará el ciclo de repeticiones.
Valor_final: Corresponde al número de iteraciones que se llevarán a cabo por parte del ciclo Para.
Paso: Indica la forma en que el ciclo se comporta, esto es, si el ciclo se ejecutará en orden ascendente
(incremento) o en orden descendente (decremento). Este incremento o decremento afectará el valor de
la variable_numerica con el fin de alcanzar el valor_final.
Si se necesita repetir un grupo de acciones un número conocido de veces la mejor opción es la sentencia
repetitiva Para. Esto último es la diferencia radical en la forma de usar una Sentencia Para y una
Sentencia Mientras. Cuando se tiene una condición explícita, se usará el Para.
La sentencia repetitiva Para es una de las estructuras más usadas en los lenguajes de programación, esta
sentencia inicializa una variable, evalúa una condición y luego realiza una operación sobre una variable.
Modo de uso:
1. Se inicializa la variable.
2. Se evalúa la condición.
3. Si la condición se cumple, se realizan las acciones especificadas, si no se cumple, no se ejecuta
ninguna acción y se salta a la próxima línea.
4. Se realiza una operación sobre una variable (incremento, decremento).
5. Se repiten los pasos 2, 3 y 4 mientras se cumpla la condición.
Para entender bien el uso, desarrollemos un ejemplo muy sencillo.
Ejemplo:
1.- Escriba un programa que solicite el ingreso de dos números (valor inicial y un valor final) y que
muestre por pantalla los números que pertenecen al intervalo dado.
Pseudocódigo:
1 Proceso Ejemplo_Para 2 Definir inicial, contador, limite Como Entero; 3 Escribir "De valor inicial: "; 4 Leer inicial; 5 Escribir "De valor final: "; 6 Leer limite; 7 Para contador<-inicial Hasta limite Con Paso 1 H acer 8 Escribir contador; 9 FinPara 10 FinProceso
Unidad VI: Sentencias Repetitivas - Para
4
Explicación del algoritmo
Lo que se hace hasta la línea 6 se conoce muy bien. Sin embargo quiero resaltar el sentido de pedir al
usuario el valor inicial que será almacenado en la variable inicial. Esa variable va a almacenar el valor
con que arrancará el intervalo de números que queremos mostrar. La variable limite contendrá el último
valor del intervalo.
Entendiendo estos dos valores, podremos entender cómo se comporta la sentencia Para de la línea 7.
Esta sentencia es un ciclo repetitivo que se hará hasta que la variable contador alcance el valor que
tiene la variable limite, arrancando contador en el valor inicial. Cuando el ciclo alcance el valor de la
variable limite, terminará.
En la línea 8, se imprime el valor que va tomando la variable contador. Note que aunque nosotros no
cambiamos el valor de la variable contador, la salida a la pantalla muestra que la variable si está
cambiando. Note que la variable se incrementa de 1 en 1. Este valor de incremento lo da el valor que
coloquemos en el parámetro Paso de la sentencia Para.
¿Qué pasa si introducimos un valor menor en limite del que le demos a inicial?
¿Se produce algún cambio en la salida por pantalla si Ud. cambia el valor de Paso? Por ejemplo pruebe
con dos. Pruebe otros valores.
Revisando el Pseudocódigo, Ud. Puede deducir donde termina el ciclo Para?
Diagrama de flujo
Unidad VI: Sentencias Repetitivas - Para
5
Resultado de la ejecución
Con inicial en 1 y limite en 12
Con inicial en 15 y limite en 25
Como en este momento ya tenemos que escribir nuestros programas en C++, pasaremos el código de
Pseudocódigo a C++.
Unidad VI: Sentencias Repetitivas - Para
6
Código Fuente en C++
1 // ejemplopara.cpp 2 // Programa básico para mostrar 3 // como funciona un ciclo Para (for) en C++ 4 // 5 6 #include <cstdio> 7 #include <iostream> 8 9 using namespace std; 10 11 int main() 12 { 13 int inicial, contador, limite; 14 15 cout << "De valor inicial:"; 16 cin >> inicial; 17 cout << "De valor final:"; 18 cin >> limite; 19 20 for (contador=inicial; contador<=limite; contad or++){ 21 cout << contador << "\n"; 22 } 23 24 return 0; 25 }
Revise el código fuente y compárelo con el Pseudocódigo:
¿Puede identificar el ciclo Para? ¿Dónde empieza y dónde termina?
Dentro de la sentencia for hay tres parámetros separados por “;”. Qué significa cada parámetro
comparado contra el Para en Pseudocódigo?
¿Qué parámetro representa el Paso del Para dentro del for?
Explique cómo se comporta la sentencia contador++.
Intente hacer este mismo ejercicio con una Sentencia Repetitiva Mientras (while). ¿Se podría?
La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS
Y REPETIR, es que puede determinarse desde el comienzo del bucle cuántas
veces se iterará el mismo, lo cual muchas veces puede redundar en una
optimización del código por parte de los compiladores.
Unidad VI: Sentencias Repetitivas - Para
7
Ejemplo:
2.- Escribir un programa que imprima los números impares entre 1 y 100.
Pseudocódigo:
1 Proceso Impares 2 Definir contador Como Entero; 3 4 Para contador<-1 Hasta 100 Con Paso 1 Hacer 5 si ((contador%2)=1) Entonces 6 Escribir contador; 7 FinSi 8 FinPara 9 FinProceso
Explicación del algoritmo
En la línea 4 se encuentra la Sentencia Repetitiva Para. Inicia el contador en 1, después del inicio, el
programa valida en la misma sentencia si el contador no ha alcanzado el límite que en este caso es 100.
Si no ha alcanzado el límite indicado, el programa continúa en la línea 5, donde se evalúa la condición
(contador%2)= 1. En este sentencia, contador%2 valdrá cero (0) cuando el número sea par ó uno (1)
cuando el valor sea impar. Dado lo anterior, la condición será igual a 1 en los impares, entrando a la
línea 6.
Como dijimos atrás, a la línea 6, solo entrará el programa cuando contador sea impar, de lo contrario
regresará a la línea 4, incrementando contador en el valor que tenga Paso, luego contador se
incrementa en 1. Luego del incremento se vuelve a validar si no ha alcanzado el límite, para permitir el
paso a la línea 5. Cuando el límite se alcance, el programa continuará en la siguiente línea del FinPara,
que en este caso es la línea 9, terminando así el programa.
Diagrama de flujo
Unidad VI: Sentencias Repetitivas - Para
8
Resultado de la ejecución
Unidad VI: Sentencias Repetitivas - Para
9
Código Fuente en C++
1 // Impares.cpp 2 // Programa básico para mostrar 3 // como funciona un ciclo Para (for) en C++ 4 // 5 6 #include <cstdio> 7 #include <iostream> 8 9 using namespace std; 10 11 int main() 12 { 13 int contador; 14 15 for (contador=1; contador<=100; contador++){ 16 if ((contador%2)==1){ 17 cout << contador << "\n"; 18 } 19 } 20 21 return 0; 22 }
Compile y ejecute el programa en C++ y asegúrese que los resultados son los mismos.
Encuentre similitudes y diferencias entre escribir el código en Pseudocódigo y C++. Entienda cada
diferencia.
En este programa la selección de los impares se hace en la sentencia condicional al comparar el módulo
de 2 del contador. Plantee el programa sin usar el módulo de 2, modificando el Paso en el ciclo Para.
Luego que lo tenga funcionando en Pseudocódigo, pase el nuevo programa a C++.
Ejemplo:
3.- Escriba un algoritmo que solicite 20 números enteros y que cuente cuantos ceros se ingresaron.
Variables a utilizar
- contador: Variable que llevará el control de las iteraciones, en este caso serán 20 iteraciones.
- num: Esta variable almacena el número ingresado por parte del usuario.
- ceros: Será la variable que llevará el control de la cantidad de ceros ingresados
Datos de entrada:
- El usuario va a introducir una serie de números, cada uno de los cuales se irá almacenando en la
variable num.
Unidad VI: Sentencias Repetitivas - Para
10
Datos de salida:
- Presentar en pantalla el valor de la variable ceros que contendrá la cantidad de ceros ingresados
por el usuario. Al inicio esta variable empezará con el valor 0.
Procedimiento:
- Darle un valor inicial a la variable ceros.
- Por medio del ciclo Para solicitar al usuario ingrese una serie de 20 valores.
- Verificar si el valor ingresado es cero, si la comparación resulta ser verdadera se incrementará
en uno el valor de la variable ceros.
Pseudocódigo:
1 Proceso ceros 2 Definir contador, num, ceros Como Entero; 3 4 ceros<-0; 5 6 Para contador<-1 Hasta 20 Con Paso 1 Hacer 7 Escribir Sin Saltar "Ingrese el elemento ", conta dor; 8 Leer num; 9 10 Si num = 0 Entonces 11 ceros<-ceros+1; 12 FinSi 13 FinPara 14 15 Escribir "Se ingresaron un total de: ", ceros, " c eros"; 16 FinProceso
Explicación del algoritmo
Línea 2, Se define las variables a utilizar.
Línea 4, La variable ceros toma el valor inicial 0, indicando que no se han ingresados elementos con el
valor cero.
Línea 6, Inicia el ciclo Para, con la variable contador con un valor inicial de 1 y cuyo valor final será 20.
Además se indica que la variable contador irá aumentando su valor en uno
Línea 7 y 8, se le solicita al usuario ingrese un número y se captura su valor almacenado dicho valor en la
variable num.
Línea 10, se verifica si el número ingresado es igual a cero, si esto es verdadero se incrementa en uno el
valor de la variable ceros (esto de hace en el línea 11).
Línea 15, Se presente en pantalla el total de números creso ingresados.
Unidad VI: Sentencias Repetitivas - Para
11
Diagrama de flujo
Resultado de la ejecución
Unidad VI: Sentencias Repetitivas - Para
12
Pase el programa de Pseudocódigo a C++, compílelo y ejecútelo.
5.3 Ejercicios Propuestos
1. Escribir un programa que calcule la suma de los n primeros números naturales.
2. Escribir un programa que calcule la suma de los cuadrados de los n primeros números naturales:
1 + 22 + 3
2 + 4
2 + n
2.
3. Escribir la media aritmética, de un grupo de números leídos.
4. Escribir un programa que calcule la suma de los números enteros desde n hasta m (m>n).
5. Diseñar un programa que calcule el cociente y el resto de la división entera de dos números
mediante restas y sumas.
6. Leer una lista de números positivos y emitir el valor mínimo de la lista.
7. Escribir un programa que calcule el factorial de un número positivo n: n! = n * (n-1) * (n-2) * . . .
Nota : Observar el buen funcionamiento del programa para n=0 y para n<0.
8. Escribir un programa que calcule el cuadrado de un número, haciéndolo sólo por sumas. Ayuda:
El cuadrado de un número n es la suma de los n primeros números impares. Ejm: 32
= 1+3+5 = 9.
9. Los términos de la serie de Fibonacci se calculan así:
a1=1; a2=1; a3=2; a4=3; a5=5; a6=8; . . . an=an-1+an-2. Diseñar un programa que calcule el n-ésimo
término de la serie de Fibonacci.