2015 UNIDAD VI: Sentencias Repetitivas - Para
PROGRAMACION DE COMPUADORAS
Unidad VI: Sentencias Repetitivas - Para
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 de termine.
Es común, que en la solución de muchos problemas algortmicos, se requiera reali!ar la repetición de cierto bloque de instrucciones, con el "in de obtener el objetivo buscado por el algoritmo. #omo se vio con la $entencia %epetitiva &ientras, para implementar repetición de bloques de instrucciones se utili!an las estructuras de control llamadas ciclos o estructuras repetitivas. En esta Unidad entraremos a ver otra Estructura %epetitiva, en este caso la $entencia 'ara.
5.2 Cncept !enera" Un $entencia %epetitiva 'ara puede de"inirse como una estructura que nos permite repetir o iterar un conjunto de instrucciones que tiene las siguientes caractersticas • •
•
•
El conjunto de instrucciones a repetir dentro del ciclo debe ser "inito La cantidad de veces que se repita dicho conjunto de instrucciones tambi*n debe ser "inita. En algunos casos esta cantidad de veces va a depender de una condición e+plcita en otros casos va a depender de una condición implcita. Una condición es e+plcita cuando depende solamente de la misma ejecución del programa sin que sea importante la participación del usuario. simismo una condición es implcita cuando depende solamente de la voluntad del usuario por lo tanto la cantidad de iteraciones o repeticiones del ciclo podra llegar a ser di"erente cada ve! pues sera posible que cambiara con c ada usuario. -eben estar claramente demarcados el inicio el "in del ciclo. En los casos en los cuales solo e+ista una instrucción a iterar, no sern necesarias dichas marcas. -entro de un ciclo podr ir cualquiera de las otras estructuras, incluendo otros ciclos.
l revisar detenidamente las de"iniciones vistas aqu al hacer in"erencia con lo que aprendimos en la $entencia &ientras, se puede concluir que las dos estructuras son iguales en su conceptuali!ación. hora que veamos la declaración del 'ara, vamos a darnos cuenta que son distintas en su sinta+is, pero en su "orma de operar prcticamente son iguales. La "orma de usar la $entencia %epetitiva 'ara es la siguiente Para variable_numerica<-valor_inicial Hasta valor_final Con Paso paso Hacer
secuencia_de_acciones Fin Para
2
Unidad VI: Sentencias Repetitivas - Para
-onde Varia!"e#n$%erica: #orresponde a la variable que se utili!ar para controlar las repeticiones del ciclo Para.
Va"&r#inicia": Es el valor con el cual se iniciar el ciclo de repeticiones. Va"&r#'ina": #orresponde al número de iteraciones que se llevarn a cabo por parte del ciclo Para. Pas&: 0ndica la "orma 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 a"ectar el valor de la variable1numerica con el "in de alcan!ar e l valor1"inal. $i se necesita repetir un grupo de acciones un número conocido de vec es la mejor opción es la sentencia repetitiva 'ara. Esto último es la di"erencia radical en la "orma de usar una $e ntencia 'ara una $entencia &ientras. #uando se tiene una condición e+plcita, se usar el 'ara. La sentencia repetitiva Para es una de las estructuras ms usadas en los lenguajes de programación, esta sentencia iniciali!a una variable, evalúa una condición luego reali!a una operación sobre una variable. &odo de uso . 2. /. 3. 4.
$e iniciali!a la variable. $e evalúa la condición. $i la condición se cumple, se reali!an las acciones especi"icadas, si no se cumple, no se ejecuta ninguna acción se salta a la pró+ima lnea. $e reali!a una operación sobre una variable (incremento, decremento). $e repiten los pasos 2, / 3 mientras se cumpla la condición.
'ara entender bien el uso, desarrollemos un ejemplo mu sencillo. E(e%p"&: .5 Escriba un programa que solicite el ingreso de dos números (valor inicial un valor "inal) que muestre por pantalla los números que perte necen al intervalo dado. Pse$)&c*)i+&: 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 Hacer 8 Escribir contador; 9 FinPara 6 FinProceso
/
Unidad VI: Sentencias Repetitivas - Para
E,p"icaci*n )e" a"+&rit%& Lo que se hace hasta la "nea . se conoce mu bien. $in 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 "nea /. 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. #uando el ciclo alcance el valor de la variable limite, terminar. En la "nea , se imprime el valor que va tomando la variable contador. 7ote que aunque nosotros no cambiamos el valor de la variable contador , la salida a la pantalla muestra que la variable si est cambiando. 7ote que la variable se incrementa de en . Este valor de incremento lo da el valor que coloquemos en el parmetro Pas& de la sentencia Para 89u* pasa si introducimos un valor menor en limite del que le demos a inicial : 8$e produce algún cambio en la salida por pantalla si Ud. cambia el valor de Pas&: 'or ejemplo pruebe con dos. 'ruebe otros valores. %evisando el 'seudocódigo, Ud. 'uede deducir donde termina el c iclo Para: Dia+ra%a )e '"$(&
3
Unidad VI: Sentencias Repetitivas - Para
Res$"ta)& )e "a e(ec$ci*n #on inicial en limite en 2
#on inicial en 4 limite en 24
#omo en este momento a tenemos que escribir nuestros programas en #;;, pasaremos el código de 'seudocódigo a #;;.
4
Unidad VI: Sentencias Repetitivas - Para
C*)i+& $ente en C33 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// // // //
ejemplopara.cpp Programa básico para mostrar como funciona un ciclo Para (for) en C++
#include #include using namespace std; int main() { int inicial, contador, limite; cout << "De valor inicial:"; cin >> inicial; cout << "De valor final:"; cin >> limite; for (contador=inicial; contador<=limite; contador++){ cout << contador << "\n"; } return 0; }
%evise el código "uente comprelo con el 'seudocódigo 8'uede identi"icar el ciclo 'ara: 8-ónde empie!a dónde termina: -entro de la sentencia '&r ha tres parmetros separados por =>?. 9u* signi"ica cada parmetro comparado contra el Para en 'seudocódigo: 89u* parmetro representa el Pas& del Para dentro del '&r: E+plique cómo se comporta la sentencia c&nta)&r33. 0ntente hacer este mismo ejercicio con una $entencia %epetitiva Mientras (4i"e). 8$e podra:
La principal di"erencia de un bucle '% con respecto a los bucles &0E7@%$ A %E'E@0%, es que puede determinarse desde el comien!o del bucle cuntas veces se iterar el mismo, lo cual muchas veces puede redundar en una optimi!ación del código por parte de los compiladores.
<
Unidad VI: Sentencias Repetitivas - Para
E(e%p"&: 2.5 Escribir un programa que imprima los números impares entre 66. Pse$)&c*)i+&: 1 2 3 4 5 6 7 8 9
Proceso Impares Definir contador Como Entero; Para contador<-1 Hasta 100 Con Paso 1 Hacer si ((contador%2)=1) Entonces Escribir contador; FinSi FinPara FinProceso
E,p"icaci*n )e" a"+&rit%& En la lnea 3 se encuentra la $entencia %epetitiva Para. 0nicia el contador en , despu*s del inicio, el programa valida en la misma sentencia si el contador no ha alcan!ado el lmite que en este caso es 66. $i no ha alcan!ado el lmite indicado, el progr ama continúa en la "nea 5, donde se evalúa la condición (contador%2)= 1. En este sentencia, contador%2 valdr cero (6) cuando el número sea par ó uno () cuando el valor sea impar. -ado lo anterior, la condición ser igual a en los impares, entrando a la "nea .. #omo dijimos atrs, a la "nea ., solo entrar el programa cuando contador sea impar, de lo contrario regresar a la "nea 6, incrementando contador en el valor que te nga Pas&, luego contador se incrementa en . Luego del incremento se vuelve a validar si no ha alcan!ado e l lmite, para permitir el paso a la "nea 5. #uando el lmite se alcance, el programa continuar en la siguiente lnea del inPara, que en este caso es la "nea 7, terminando as el programa. Dia+ra%a )e '"$(&
B
Unidad VI: Sentencias Repetitivas - Para
Res$"ta)& )e "a e(ec$ci*n
C
Unidad VI: Sentencias Repetitivas - Para
C*)i+& $ente en C33 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// // // //
Impares.cpp Programa básico para mostrar como funciona un ciclo Para (for) en C++
#include #include using namespace std; int main() { int contador; for (contador=1; contador<=100; contador++){ if ((contador%2)==1){ cout << contador << "\n"; } } return 0; }
#ompile ejecute el programa en #;; asegúrese que los resultados son los mismos. Encuentre similitudes di"erencias entre escribir el código en 'seudocódigo #;;. Entienda cada di"erencia. En este programa la selección de los impares se hace en la sentencia condicional al comparar el módulo de 2 del contador . 'lantee el programa sin usar el módulo de 2 , modi"icando el Pas& en el ciclo Para. Luego que lo tenga "uncionando en 'seudocódigo, pase el nuevo programa a #;;. E(e%p"&: /.5 Escriba un algoritmo que solicite 26 números e nteros que cuente cuantos ceros se ingresaron. ariables a utili!ar -
contador
ariable que llevar el control de las iteraciones, en este caso se rn 26 iteraciones. num: Esta variable almacena el número ingresado por parte del usuario. ceros: $er la variable que llevar e l control de la cantidad de ceros ingresados
-atos de entrada -
El usuario va a introducir una serie de números, cada uno de los cuales se ir almacenando en la variable num.
D
Unidad VI: Sentencias Repetitivas - Para
-atos de salida -
'resentar en pantalla el valor de la variable ceros que contendr la cantidad de ceros ingresados por el usuario. l inicio esta variable empe!ar con el valor 6.
'rocedimiento -
-arle un valor inicial a la variable ceros. 'or medio del ciclo 'ara solicitar al usuario ingrese una serie de 26 valores. eri"icar si el valor ingresado es cero, si la comparación resulta ser verdadera se incrementar en uno el valor de la variable ceros.
Pse$)&c*)i+&: 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 ", contador; 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, " ceros"; < FinProceso
E,p"icaci*n )e" a"+&rit%& 8nea 2, $e de"ine las variables a utili!ar. 8nea 69 La variable ceros toma el valor inicial 6, indicando que no se han ingresados elementos con el valor cero. 8nea .9 0nicia el ciclo Para, con la variable contador con un valor inicial de cuo valor "inal ser 26. dems se indica que la variable
contador ir
aumentando su valor en uno
8nea / , se le solicita al usuario ingrese un número se captura su valor almacenado dicho valor en la variable num. 8nea 109 se veri"ica 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 "nea 11). 8nea 159 $e presente en pantalla el total de números creso ingresados.
6
Unidad VI: Sentencias Repetitivas - Para
Dia+ra%a )e '"$(&
Res$"ta)& )e "a e(ec$ci*n
Unidad VI: Sentencias Repetitivas - Para
'ase el programa de 'seudocódigo a #;;, complelo ejecútelo.
5.# $%ercicis Prp&ests . 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 2
2
2
2
; 2 ; / ; 3 ; n . /. Escribir la media aritm*tica, de un grupo de números ledos. 3. Escribir un programa que calcule la suma de los números enteros desde n hasta m (mFn). 4. -iseGar un programa que calcule el cociente el resto de la división entera de dos números mediante restas sumas. <. Leer una lista de números positivos emitir el valor mnimo de la lista. B. Escribir un programa que calcule el "actorial de un número positivo n nH I n J (n5) J (n52) J . . . 7ota Kbservar el buen "uncionamiento del programa para nI6 para n6. C. Escribir un programa que calcule el cuadrado de un número, haci*ndolo sólo por sumas. uda 2 El cuadrado de un número n es la suma de los n primeros números impares. Ejm / I ;/;4 I D. D. Los t*rminos de la serie de Mibonacci se calculan as aI> a2I> a/I2> a3I/> a4I4> a . . . anIan5;an52. -iseGar un programa que calcule el n5*simo t*rmino de la serie de Mibonacci.
2