Está en la página 1de 20

1

Nombre de la Practica: Estructuras repetitivas en Algoritmos


Lugar de Ejecucin: Centro de Computo
Tiempo Estimado: 2 horas y 30 minutos
MATERIA: Introduccin a la Programacin



I. OBJETIVOS

Que el alumno sea capaz de:
Evaluar la solucin a problemas que requieren repetir uno o ms bloques de instrucciones
Utilizar apropiadamente las diversas estructuras repetitivas disponibles en los algoritmos
Traducir correctamente un pseudocdigo repetitivo a la sintaxis utilizada por las aplicaciones DFD y PSeint


II. INTRODUCCION TEORICA

Tipos de Estructuras de Control dentro de un Algoritmo
Existen tres tipos de estructuras generales para controlar la secuencia de la ejecucin de los pasos de un
algoritmo. Estas son:
a) Estructura secuencial
b) Estructura condicional o selectiva
c) Estructura repetitiva

C. USO DE INSTRUCCIONES REPETITIVAS EN UN ALGORITMO
Para crear una estructura repetitiva (tambin llamadas Ciclo, Lazo o Bucle), se necesita definir 3 elementos:
a) Ya sea una Condicin de Conteo o una Condicin Lgica.
b) Un contador, el cual deber incrementarse por cada iteracin del lazo.
c) Un bloque de pasos de un algoritmo, que se necesita repetir (denominado el Cuerpo del Bucle)

Cada vez que se ejecuta el bloque completo de pasos (Cuerpo del Bucle) de una Estructura Repetitiva, se dice que
se ha completado un Ciclo.

Existen tres tipos diferentes de estructuras repetitivas cuyos diagramas de flujo y pseudocdigo se muestran a
continuacin:

CICLO: 01/ 2014
UNIVERSIDAD ANDRES BELLO
FACULTAD DE CIENCIAS ECONOMICAS
Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 2
Estructura Mientras
La estructura repetitiva Mientras es aquella en la cual, el cuerpo del bucle se repite solamente cuando se cumpla
una Condicin Lgica especfica (ver figura 4.1).
Cuando se ejecuta la instruccin Mientras, la primera cosa que sucede es que se evala una Condicin (una
expresin lgica), para luego realizar lo siguiente:

* Si la expresin lgica es verdadera,
entonces se ejecuta el cuerpo del bucle.
Luego se prepara nuevamente para
evaluar a la misma expresin lgica.
Este proceso (ejecucin del Cuerpo del
Bucle) se repite una y otra vez solamente
cuando la expresin lgica (condicin) sea
verdadera

* Si se evala falsa, ignora todo el
conjunto de pasos (el cuerpo del Bucle),
para que el algoritmo continu con la
siguiente instruccin despus del fin del
bucle Mientras.

Representacin de estructura Mientras

Diagrama de flujo:


Pseudocdigo:

Mientras <expresin_logica> Hacer
accin S1
accin S2
.
.
accin Sn
Fin_Mientras


Figura 4.1: Estructura de control Mientras

Estructura Hacer Mientras
El bucle hacer mientras es similar al bucle mientras, es decir que el Cuerpo del Bucle se ejecuta una y otra vez
solamente cuando su Condicin (Expresin lgica) sea verdadera.

Existe, sin embargo, su gran diferencia
con la estructura Mientras es que el
Cuerpo del Bucle esta encerrado entre la
palabras reservadas hacer y mientras, de
modo que las sentencias de dicho cuerpo
se ejecutan al menos una vez, antes de
que se evalu la expresin lgica, ver
Figura 4.2.

En otras palabras, el cuerpo del bucle
siempre se ejecuta una vez, y al finalizar,
se evala la expresin lgica.

Representacin de estructura Hacer Mientras
Diagrama de flujo:

Pseudocdigo:
Hacer
accin S1
accin S2
.
.
accin Sn
Mientras <expresin_logica>

Figura 4.2: Estructura de control Hacer Mientras.
3
Estructura Repetir-Hasta
El bucle Repetir-Hasta permite ejecutar al menos una vez un Cuerpo de pasos, para luego evaluar una Condicin
Lgica.
La misma debe resultar Falsa para repetir nuevamente el Cuerpo del Bucle, de lo contrario, sale del Bucle para
continuar con el resto del algoritmo.

Si se observa el Diagrama de flujo del bucle
Repetir Hasta y lo compara con el resto de
estructuras repetitivas, resulta ser casi
idntica al bucle Hacer-Mientras.

La diferencia entre ambas estructura se
centra en la resultado de la Evaluacin
Lgica de la Condicin utilizada.

Para repetir el cuerpo de un Bucle Hacer-
Mientras, la Condicin deber ser evaluada
como Verdadera; en cambio, para el Bucle
Repetir-Hasta, requiere que la condicin sea
Falsa para repetir el Cuerpo del Bucle.
Representacin de estructura Repetir Hasta
Diagrama de flujo:

Pseudocdigo:
Repetir
accin S1
accin S2
.
.
accin Sn
Hasta <expresin_logica>

Figura 4.3: Estructura de control Repetir Hasta.


Estructura Para
Al solucionar un problema con estructuras repetitivas, muchas veces ocurre que se conocen de antemano el
nmero de veces que se desean ejecutar un mismo Grupo de instrucciones dentro de un Bucle. En estos casos,
cuando el numero de iteraciones es fijo, se puede usar la estructura Para.

La representacin de la estructura Para es la siguiente:
Representacin de estructura Para
Diagrama de flujo:


Pseudocdigo:

Para i vi Hasta vf [incremento | decremento incr] hacer
accin S1
accin S2
.
accin Sn
Fin_Para

En donde:
i: variable ndice
vi, vf: valores inicial y final de la variable
incr: indica el valor numrico en que va haciendo el aumento o
decremento por default hace un incremento de 1

Figura 4.4: Estructura de control de repeticin Para.
Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 4
La estructura Para ejecuta las acciones del Cuerpo del Bucle un numero especificado de veces y de modo
automtico controla el numero de iteraciones o pasos a travs del cuerpo del bucle. Comienza con un valor inicial
de la variable ndice y las acciones especificadas se ejecutan solamente cuando el valor inicial sea menor que el
valor final. La variable ndice se incrementa en 1 (por defecto, se cuenta de uno en uno), o en el valor que
especifiquemos, y si este nuevo valor no excede al valor final se ejecutan de nuevo las acciones. Si establecemos
que la variable ndice decremente en cada iteracin el valor inicial deber ser superior al final. Consideremos
siempre la variable ndice de tipo entero.


Estructuras repetitivas del software DFD
En el programa DFD se cuenta con 2 tipos de estructuras repetitivas (Ver figura 4.5), las cuales son Mientras y la
estructura Para. La estructura y sintaxis de uso de cada una se explica a continuacin.


Figura 4.5: Estructuras Mientras y Para en la aplicacin DFD

Estructura Mientras
Al igual que lo mencionado en la introduccin general de un lazo Mientras, DFD requiere que especifique 2
elementos:
A. Una condicin de control, la cual se coloca en el smbolo inicial.
B. Cuerpo del bucle: el o los pasos a ejecutar solamente cuando la condicin anterior se cumpla. Este se
ubica en la lnea que une a los 2 smbolos iniciales que definen a la estructura.

Estructura Para
Este ciclo necesita la definicin de una variable de conteo, la cual lleva el control de la cantidad de veces que el
ciclo se est repitiendo. Para definirlo, el smbolo de apertura MQ solicita 3 parmetros obligatorios y uno
opcional, mostrado en la figura 4.6.


Figura 4.6: los 4 parmetros requeridos por estructura Para en DFD

Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 5
La variable de conteo la utiliza el Bucle, para evaluarla con el resto de los 3 parmetros de la figura 4.6 y
determinar si debe o no repetir una vez ms la ejecucin de su Cuerpo de instrucciones.
La expresin de conteo puede ser un (valor fijo, una variable o una expresin), e indicara el valor inicial para la
variable de conteo del Bucle.
La expresin de valor final a contar es el valor mximo que la variable de conteo llegara a tener durante el ltimo
ciclo a ejecutar por la estructura Para. En otras palabras, la variable de conteo del ciclo no deber superar el valor
de dicho valor final, para poder repetir una vez ms el Cuerpo del Bucle

La expresin de incremento tiene un valor predeterminado de 1 y funciona de esta manera:
Cada vez que el ciclo Para finaliza la ejecucin de su cuerpo de instrucciones, incrementa a su variable de conteo
con el valor de la expresin de incremento. Si el valor de incremento es negativo, el ciclo se lo restara a su
variable de conteo.
Luego, compara al nuevo valor de la variable de conteo contra el valor final, para as determinar si repite una vez
ms el cuerpo del ciclo o sino, finaliza su ejecucin.

Cundo un ciclo Para repetir una vez ms a su cuerpo de instrucciones?
Un ciclo Para utiliza a los valores asignados a su pareja de parmetros (expresin final de conteo y al
incremento) para determinar si debe repetir su bloque de pasos una vez mas y tambin, como alterara a su variable
de conteo cuando un ciclo se finalice. Las reglas se resumen en la tabla 1 a continuacin:

Si valor de
incremento es
Condicin que evala ciclo Para para determinar si repite
una vez a su Cuerpo de instrucciones.
Al finaliza un ciclo, al valor
de variable de conteo se
positivo Variable de conteo debe ser menor o igual a Valor final de
conteo
suma valor de incremento
negativo Variable de conteo debe ser mayor o igual a Valor final de
conteo
resta el incremento

Tabla 1: Condiciones que evala un ciclo Para de acuerdo
a su valor final de conteo y tipo de incremento (+ o -)

6
Estructuras repetitivas del software PSeint

Dentro del programa PSeint se tienen disponibles a 3 de las estructuras repetitivas, las cuales son Mientras,
Repetir-Hasta y la estructura Para, ver figura 4.7. La estructura y sintaxis de uso de cada una se explica a
continuacin.

* Mientras

* Repetir Hasta

* Para

Figura 4.7: Comandos de PSeint para estructuras repetitivas


Sintaxis y uso de la instruccin Mientras
Repite un bloque de instrucciones (Secuencia_de_acciones) limitada entre el paso Mientras y paso FinMientras.


La repeticin del bloque de pasos se controla al inicio de la estructura, gracias a evaluar a una condicin lgica CL
Expresion_logica, cuyo resultado Verdadero o Falso es aprovechado para determinar si repite o no el bloque!!

Al utilizar un lazo Mientras hay que tener cuidado de lo siguiente:
a. Para permitir que el lazo Mientras ejecute al menos una vez su ciclo de instrucciones, usted debe de
asegurarse que su Condicin Lgica se cumpla (inicialmente), sino PSeint ignora a toda el bloque a repetir
dentro de la estructura y continuara con el paso justamente despus del cierre del Mientras.
b. Para que el lazo Mientras pueda repetir el Bucle una o ms veces, asegrese que en el interior de los pasos
del ciclo se modifique/altere el valor de (por lo menos) una de las variables utilizada en la CL, de manera
que al finalizar el ciclo actual, PSeint evalu de nuevo la CL, y decida si repetir el Bucle.
c. Segn la aclaracin anterior, si necesita que el lazo finalice (que ya no se repita de nuevo el ciclo),
asegrese que al volver a evaluar la CL, esta ya no se cumpla.

Como conclusiones de las ltimas dos aclaraciones:
Siempre asegrese que la CL del lazo sea Verdadera para mantenerse repitiendo continuamente el lazo
mientras, mientras que vuelva la CL a Falsa para salir del lazo.
Tenga mucho cuidado: Si al evaluar la CL, esta siempre es verdadera, los ciclos del lazo Mientras
nunca finalizaran y PSeint no podr continuar con el resto del flujograma. GENERANDO UN LAZO
INFINITO!!
7
Sintaxis y uso de la instruccin Repetir - Hasta
La estructura permite repetir un bloque de instrucciones (secuencia_de_acciones) limitadas entre los pasos
Repetir y Hasta que. Usa una Condicin Lgica CL (expresin_logica) para determinar si repetir
nuevamente el cuerpo del ciclo.



Al utilizar un lazo Repetir-Hasta hay que tener cuidado de lo siguiente:
a. El ciclo Repetir-Hasta hasta ejecuta una vez el cuerpo del bloque
b. Para determinar si volver a ejecutar el bucle, se debe asegurar que la Condicin Lgica del paso final del
ciclo se cumpla, sino PSeint continuara con el paso justamente despus del cierre del Repetir-Hasta.
c. Para que el lazo Repetir-Hasta pueda repetir el Bucle 2 o ms veces, asegrese que en el interior de los
pasos del ciclo se modifique/altere el valor de (por lo menos) una de las variables utilizada en la CL que
se evala al final de la estructura, de manera que al finalizar cada ciclo, PSeint evalu de nuevo la CL, y
decida si repetir el Bucle.
d. Segn la aclaracin anterior, si necesita que el lazo finalice (que ya no se repita de nuevo el ciclo),
asegrese que al finalizar el cuerpo, la CL ya no se cumpla.

Sintaxis y uso de la instruccin Para - Hasta
La estructura repetitiva Para consta de 2 pasos (Para y FinPara) que limitan el cuerpo del bucle
(secuencia_de_acciones) a repetir.



Dentro del paso inicial de una estructura Para se le necesita definir una condicin de conteo la cual consta de
los siguientes 4 parmetros:
Una variable de conteo (variable_numerica) que lleve el control del total de ciclos de instrucciones
repetidas por el lazo Para
Un valor fijo o en una variable (valor_inicial) que se le asignara a la variable de conteo anterior, para
indicar el valor inicial del conteo de ciclos a repetir
[OPCIONAL] un valor de incremento (paso) que se le aplicara a la variable de conteo usada por el ciclo Para.
A este valor/variable se le denomina tambin el INCREMENTO.
Un valor fijo o una variable (valor_final) que diga el valor final de conteo, es decir hasta donde debe llegar la
variable de conteo para dejar de repetir ciclos del Para.

En conclusin
Al igual que en los PSeudocodigos, la sintaxis de estas estructuras repetitivas en PSeint requieren las siguientes
reglas de uso:
1. Las estructuras Mientras y Repetir-HastaQue requieren escribirles una Condicin Lgica, la cual se
ubica al inicio del bucle (en ciclo Mientras) o sino al final (en bucle Repetir-Hasta)
Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 8
2. Cmo debe ser evaluada la condicin implementada en un Bucle?, ya sea para definir cuando se repetir
el cuerpo del Bucle o cuando se terminara (y continuar con el resto del algoritmo)
3. Para la estructura Para, se deben definir 3 parmetros obligatorios (variable conteo, valor inicial, valor
final del conteo) y uno opcional (valor que define incremento del conteo)


III. MATERIALES Y EQUIPO

Para la realizacin de la gua de prctica se requerir lo siguiente:

No. Requerimiento Cantidad
1 Gua de Laboratorio #04 de IP 1
2 PC con software DFD y PSeint instalados 1
3 Disquete Memoria USB 1


IV. PROCEDIMIENTO

1. Proceda a crear una carpeta de trabajo, denominada Practica4IP_SUCARNET para almacenar todos los
archivos a elaborar dentro del procedimiento de la prctica. Reemplazar SUCARNET por su nmero de
carnet.

PARTE A: Uso de operadores lgicos (AND, OR y NOT)

2. Crear un archivo de texto sencillo llamado PARTEA.txt, en la cual redactara la solucin del problema
descrito en la figura 4.8.

Expresiones Lgicas (Condiciones Compuestas)
a evaluar
Resultado de expresin
V o F?
10+t>1+2*m
m<5 or p <> t MOD 7
(t<>p+3) and not(-2*n>m^2)
(n=t-4) and (t-n <= m) or (t^p=1)
Asignacion inicial de variables: m<- (5), n<- (-7), p<-(0), t<-(2)
Figura 4.8: Evaluacin de una condicin compuesta

Dado el listado de variables (y el valor inicial de cada una), desarrolle la Evaluacin paso a paso de cada una
de las Expresiones Lgicas (Condiciones compuestas) indicadas en la tabla de la Figura 4.8. En otras palabras,
determine si c/condicin da resultado Verdadero o Falso


Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 9
PARTE B: Estructura Repetitiva (Lazo/Ciclo Para)

1. A continuacin se le brinda una serie de problemas y su respectivo Algoritmo (solucin), para que usted
elabore el Diagrama de Flujo (con DFD) y el Pseudocdigo (con aplicacin Pseint).

NOTA: Con respecto a los comentarios de programador indicados en algunas de las lneas (con uso de //):
A. No deben ser redactados en archivos DFD, ya que esta aplicacin no permite esa funcionalidad
B. Para las soluciones en PSeint, si debe redactar la informacin descrita por los comentarios de
programador al redactar las lneas de c/pseudocdigo inicial a traducir.

PROBLEMA 1:
Haga lo necesario para mostrar en pantalla a la Tabla de multiplicar de un Nmero dado
por el usuario.

2. A continuacin se le ofrece la solucin (en Pseudocdigo general) que resuelve este problema, utilizando
una estructura repetitiva Para.

Paso descripcin
1
2
3
4
5
6
7
8
9
10
11
12
13
Inicio
//lista de variables de...
Declarar num<-0.8 //.. Entrada
Declarar factor<-0.7 //.. Salida
Declarar contador<-0 //.. Proceso
Escribir "PROGRAMA PARA GENERAR Tabla de Multiplicar"
Escribir "Escriba un numero para mostrar su tabla de multiplicar"
Leer num
Para contador<-1 Hasta 10, incremento 1
factor<-num*contador
Escribir ">> ",num," x ",contador," = ",factor
FinPara
Fin

3. Prepare un nuevo archivo de diagrama de flujo en el software DFD.
4. Redacte los pasos del 3 al 8 con la simbologa y parmetros apropiados solicitados por DFD

5. Guarde el archivo bajo el nombre Problema1.dfd en su carpeta de trabajo.

6. Luego del smbolo DFD Leer antes del final del diagrama de flujo, ah creara la estructura repetitiva
Para en el paso 9 del pseudocdigo.
Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 10
Para ello, seleccione el smbolo (Ciclo para) y de clic en
la lnea despus del smbolo Lectura (utilizado para
cumplir el paso 8 del pseudocdigo).

7. Observe el resultado en la Figura 4.9
8. De doble clic sobre el smbolo de inicio de la
estructura.

9. Digite los siguientes valores como los 4
parmetros que le solicita DFD (en ese orden):

Contador 1 10 1


Figura 4.9: Agregando estructura Para
al diagrama de flujo
10. De un clic en cualquier rea vaca del rea de diseo del flujograma.
11. Entre la lnea que une a los pasos [Para] y [Fin(Para)], agregue los smbolos apropiados para implementar
los pasos 10 y 11 del pseudocdigo general.

12. Proceda a ejecutar el DFD. Ingrese un numero entero X y luego analice si obtiene la tabla de multiplicar
de ese nmero ingresado.
13. Repita el paso anterior, pero ingresando un valor negativo. Tambin debe generarse su tabla de
multiplicar.

14. Para continuar, se creara un archivo de pseudocdigo en el software Pseint equivalente al pseudocdigo
general de solucin del PROBLEMA 1.
15. Guardar el nuevo archivo en su carpeta de trabajo bajo el nombre Problema1.pseint
16. A continuacin se le ofrece la solucin que resuelve el problema anterior, pero con la sintaxis de PSeint y
sin incluir aun los pasos de la estructura de repeticin (rango de pasos 9 al 12) del pseudocdigo general.

Proceda a digitar el cdigo siguiente en su archivo pseint:

Linea Instruccion
1
2
3
4
5
6
7
8
9
Proceso Guia3ejemplo1
//lista de variables de...
num<-0.8; //.. Entrada
factor<-0.7; //.. Salida
contador<-0; //.. Proceso
Escribir "PROGRAMA PARA GENERAR Tabla de Multiplicar";
Escribir "Escriba un numero para mostrar su tabla de multiplicar";
Leer num;
FinProceso

17. Para agregar la estructura Para requerida en el paso 9 del pseudocdigo del PROBLEMA 1, insertar una
lnea en blanco luego de la Lnea 8 del cdigo en PSeint.
Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 11
18. Colocar cursor en esta lnea 9 vacia y seleccionar el comando Para de PSeint. Se agregara la estructura
general de la estructura Para-Fin Para en 3 Lneas del pseudocdigo.
19. Reemplace los parmetros resaltados: variable_numerica, valor_inicial, valor_final y paso, por los valores:
contador, 1, 10 y 1, respectivamente.
De esta manera, se implementan los valores del conteo a ejecutar por ciclo Para, segn los valores indicados en el
Paso 9 del pseudocdigo general.

20. Luego, reemplace el parmetro secuencia_de_acciones por los comandos necesarios para implementar
los pasos 10 y 11 del pseudocdigo.
21. Compruebe que la solucin funciona, ejecutando el pseudocdigo y brindando un valor positivo.
Si hay algn problema, revise su cdigo y corrjalo.

22. Ahora compruebe la ejecucin de su pseudocdigo con la herramienta PasoxPaso.
Siga la secuencia de los pasos, y especficamente analice con mucho cuidado como se ejecuta el Ciclo Para:
+ Cundo y por qu se mantiene dentro del ciclo?
+ Cundo y por que logra salir del ciclo y finalizar el algoritmo general?


PARTE C: Estructura Mientras (Lazo o Ciclo Mientras)

23. A continuacin se le ofrece otro problema, para que se evalu/analice e implemente el algoritmo
solucin, tanto en DFD como en PSeint!

PROBLEMA 2:
Solicite un listado de 6 enteros (que sean solo positivos) al usuario, para que al finalizar, se le
muestre las estadsticas siguientes:
a) Cuntos de los nmeros resultaron ser mltiplos de 3?
b) Suma de solamente los mltiplos de 7 (si los hay) o avisar que no ingreso ninguno.
c) El Promedio de los nmeros pares que fueron ingresados.
Extras:
+ debe llamarle la atencin del usuario cuando este ltimo no ingrese un valor positivo.
+ No mostrar las estadsticas hasta haber recibido del usuario un listado completamente
valido de nmeros solicitados (es decir, que cada uno de los 6 nmeros recibidos sean
positivos !!)

24. Proceda a crear en PSeint a un nuevo Pseudocdigo denominado Problema2_ETAPA1.pseint.
25. En este archivo, creara la solucin a este problema, pero por etapas, con el fin de ir evaluando el impacto
que genera cada una de ellas en conjunto, para lograr el cumplimiento total del problema.




Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 12
ETAPA 1: Solicitar a usuario un total de 6 nmeros a usuario, pero que sean solamente positivos.

26. Digite las lneas de solucin de la 1er etapa, mostradas en la tabla 2 y que ya estn con la sintaxis de
PSeint
Ah estn definidas todas las variables (de entrada, salida y proceso) que requiere la solucin final.

27. Ejecute el pseudocdigo y confirme que solo muestra el dialogo definido en pseudocdigo y finaliza
normalmente, sin ninguna lectura (Entradas) de variables.

28. Ahora agregara la lgica necesaria para hacer que usuario ingrese verdaderamente 6 nmeros positivos,
incluso le llame la atencin cuando se equivoque!!

29. Colocar el cursor al final de la Lnea 13 del mismo y presionar Enter para agregar una Lnea 14 vaca.
30. En esta nueva lnea, seleccione el comando Mientras. Se agregan las 3 lneas mnimas que requiere la
estructura Mientras para ejecutarse.

Lnea Cdigo de pseint
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Proceso Multiplos4
//Entradas
N<-5; //Uno de los Nmeros dados por usuario y puede ser +, - o cero
//Salidas
multi3<-0; sumamulti7<-0;prompares<-0.8;
//Procesos
totnum<-6; //valor constante
totvalidos<-0;
sumapares<-0;totpares<-0;
//Solicitando entradas
Escribir "Programa de Estadisticas Basicas";
Escribir "Necesito que me digite un total de ",totnum," nmeros enteros";
Escribir "PERO SOLAMENTE POSITIVOS";
FinProceso

Tabla 2: Pasos de la Etapa 1 de solucin del PROBLEMA 2.


31. En esta nueva lnea, seleccione el comando Mientras. Se agregan las 3 lneas mnimas que requiere la
estructura Mientras para ejecutarse.
32. Reemplace parmetro expresin_logica del ciclo Mientras por la condicin: totvalidos<totnum

Y en lugar de secuencia_de_acciones, digitara los pasos para solicitar a usuario un nico valor positivo de todo
el l listado, capturndolo en variable en N, por cada vez que se ejecute el Cuerpo del Bucle.
Vea el resultado en la Tabla 3.


Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 13
Lnea Cdigo de pseint
14
15
16
17
Mientras totvalidos<totnum Hacer
Escribir ">> Dato ",totvalidos+1,":";
Leer N;
FinMientras

Tabla 3: Pasos que definen al lazo Mientras que requiere la Etapa 1 de solucin del PROBLEMA 2.

33. Proceda a ejecutar la solucin e intente escribir 6 valores cualesquiera, pero que sean todos positivos.
Ahora responda Finalizo el programa al ingresar el ultimo valor valido?

34. Digite mas valores para determinar en qu momento logra finalizar la ejecucin.
Responda Cuntos datos ingreso usted en el pseudocdigo de PSeint para que finalizara la ejecucin?
A este problema de repetir continuamente los mismos pasos de un Ciclo, sin finalizar nunca de hacerlo, se le
conoce como un CICLO INFINITO. Este se desencadena debido a que no se altera ninguna de las variables
definidas en la Condicin que usa un Ciclo para determinar si debe repetir una vez ms su cuerpo de
instrucciones (Cuerpo del bucle).
Entonces nunca se deja de cumplir la condicin usada por la estructura y ya no se ejecutan los pasos siguientes al
paso del fin del Ciclo.

35. Observe que el valor de variable totValidos siempre se mantiene con un valor de 1, y totnum es constante
(con un valor de 6). As que nunca se dejara de cumplir la condicin 1 < 6 usada por el ciclo Mientras.
36. Aborte la ejecucin infinita de este pseucodigo, cerrando la ventana de ejecucin del mismo.

37. Ahora convertir a la variable totValidos en una variable de conteo que se usara en la condicin del
Ciclo Mientras, para indicarle Cundo debe continuar repitiendo su cuerpo de instrucciones y tambin,
cuando finalizar el ciclo? Para evitar generar un Ciclo Infinito como el del caso previo.
38. Inserte la siguiente asignacin luego de la Lnea 16:
totvalidos <- totvalidos+1;
39. Ahora pruebe al pseudocdigo, ingresando cualquier cantidad de nmeros positivos. funciona el conteo
del paso anterior?
40. Nuevamente, ejecute al pseudocdigo, ingresando cualquier cantidad de nmeros solamente negativos
funciona el conteo de ciclo del paso anterior?
En ambos pruebas, el conteo de solamente 6 valores ingresados se hace correctamente, gracias a que la asignacin
de la lnea 16 hace la funcin de un conteo de un ciclo
Un contador de ciclo es una variable que forma parte de la condicin de control usada por un Ciclo/Bucle y que
luego es alterada dentro del Cuerpo de ese mismo Ciclo (en este caso la estructura Mientras)!!

41. Pero en las 2 pruebas anteriores Son datos validos en cada caso, segn el problema a resolver?
La prueba 2 no es conveniente para la solucin del problema 2. Para cumplir perfectamente la ETAPA 1 de la
solucin del PROBLEMA 2, se requiere que se acepte solamente 6 valores y que TODOS sean positivos; as
como descartar cualquier valor negativo y llamar la atencin del usuario cuando esto suceda!!

42. Reemplace la Lnea que agrego como conteo de ciclo al pseudocdigo (la lnea 17 actual) por una
estructura de toma de decisiones (Si-Entonces) que cumpla con estas caractersticas:
Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 14
+ Redacte una condicin que permita determinar Cuando la variable N es negativa?
+ En el bloque 1 (cuando se cumple la condicin), genere 2 mensajes en secuencia al usuario:
* primero, avisarle que ha ingresado un nmero no valido y los motivos que justifican el llamado de atencin.
* Indicarle el tipo de valores que debe ingresar, para que sean tomados en cuenta (sean correctos!!)
+ En el bloque 2 (Sino), inserte nuevamente al paso de conteo del ciclo Mientras: totvalidos <- totvalidos+1;

43. Ejecute nuevamente el pseudocdigo e ingresar mezclas de valores negativos y positivos.
Preste atencin al valor del conteo del listado de numero solicitado al usuario: Qu ocurre cuando es un numero
positivo (correcto) o negativo (incorrecto)?, Usuario recibe los mensajes de error en el momento apropiado?

44. Si todo es correcto, guarde su pseudocdigo actual y luego haga clic en el men (Archivo/Guardar
como..), para hacer una copia del archivo actual, bajo el nombre Problema2_ETAPA2.pseint.

ETAPA 2: Determinar Cuntos de los nmeros ingresados son mltiplos de 3?
1. Cierre el archivo Problema2_ETAPA1.pseint, para que los cambios de esta etapa se realicen solamente en
el archivo Problema2_ETAPA2.pseint.
2. Ahora se proceder a realizar cada uno de los clculos para cumplir las salidas esperadas de la solucin.

3. La meta final de la Etapa 2 sera determinar al primer dato de salida: total de nmeros validos que son
mltiplos de 3.
4. Colocar el cursor al inicio de la lnea que hace la funcin de conteo del ciclo Mientras ( totvalidos <-
totvalidos+1; ) y presionar tecla Enter 2 veces, para insertar nuevos pasos en blanco (desplazando esste
paso y los siguientes hacia abajo de la redaccin, sin borrarlos!!)
5. En la 1er lnea vaca (ubicada luego del paso Sino de la estructura Si-Entonces), agregue una nueva toma
de decisiones (Si entonces). Elimine el paso Sino de esta nueva estructura Si-Entonces
Reemplace el parmetro expresion_logica por una condicin que permita determinar Cundo el valor de la
variable N es mltiplo de 3?

6. En el nico bloque Si de esta 2da toma de decisiones (Si-Entonces), agregue este paso de asignacin
multi3<-multi3+1;
Con esta asignacin, la variable multi3 est siendo utilizada como una variable de conteo, porque cada vez que
se ejecuta ese paso, la variable multi3 se cambia al sumar a su valor almacenado un valor fijo de 1 est contando
de 1 en 1!!

7. Ahora, inserte un paso en blanco despus de la lnea del paso FinMientras.
En esta lnea en blanco, haga los pasos necesarios para que se muestre un idntico al siguiente:

RESULTADOS FINALES:
1. Usted escribi un total de X nmeros multiplos de 3
En donde X deber ser reemplazado por el valor guardado en la variable de conteo multi3.

8. Ejecute al pseudocdigo con los datos de prueba definidos en la tabla de entradas-salidas a continuacin
(ver Tabla 4 ). Debe obtener las salidas ah indicadas en cada caso:

Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 15
#prueba Entradas (valores de N) Salida (mensaje en pantalla)
1 9 16 24 81 7 15 RESULTADOS FINALES:
1. Usted escribio un total de 4 nmeros multiplos de 3
2 11 7 5 22 56 83 RESULTADOS FINALES:
1. Usted escribio un total de 0 nmeros multiplos de 3

Tabla 4: pruebas de ejecucin para ETAPA 2 de la solucin del PROBLEMA 2

9. No contine el procedimiento hasta cumplir el paso anterior!!

10. Guarde su pseudocdigo actual y luego de clic en el men (Archivo/Guardar como), para hacer una
copia del archivo actual, bajo el nombre Problema2_ETAPA3.pseint. Cierre el archivo
Problema2_ETAPA2.pseint

ETAPA 3: Calcular sumatoria de solamente los mltiplos de 7 o sino, avisar que no ingreso ninguno

11. Los cambios a continuacin se harn en el Problema2_ETAPA3.pseint
12. Para esta Etapa 3, localice la variable (sumamulti7) en el listado de creacin de variables al inicio del
pseudocdigo.
13. Colocar el cursor al final de la Lnea donde se ubica el paso (Fin_Si) de la toma de decisiones que se
agrego en la Etapa 2 anterior!!
14. Presione tecla Enter para insertar lneas vacas en el pseudocdigo.
15. En la 1er lnea en blanco, agregue una tercera toma de decisiones (Si-Entonces) y defina para la misma:
+ una condicin que determine Cuando la variable N es mltiplo de 7?
+ elimine el Paso Sino a la misma
+ Luego, en el nico bloque Si de esta estructura, agregue la siguiente asignacin:
sumamulti7<-sumamulti7+N;

La variable summulti7 hace la funcin de Acumulador o Sumador, debido a que asigna su nuevo valor basada en
su valor inicial ms el valor de otra variable diferente!!
En este caso, esta sumando solamente a cada valor de N ingresado por usuario (y que previamente se ha
comprobado que es mltiplo de 7).

16. Luego, ubique cursor al final del penltimo paso del pseudocdigo (el paso previo al paso Fin, en donde
muestra al usuario el total de nmeros mltiplos de 3 que ingreso).
17. Presione Enter para insertar una Lnea en blanco.
18. En esta lnea en blanco, agregue una tercera Toma de Decisiones que tenga esta caractersticas:
+ La condicin permitir saber si La variable sumamulti7 es diferente de cero?
+ Si se cumple, mostrar al usuario el valor de la sumatoria de los nmeros los nmeros mltiplos de 7 que ingreso
+ Cuando no se cumple, indicar a usuario que no ingreso ningn valor mltiplo de 7

19. Ejecute nuevamente su pseudocdigo con los datos de prueba definidos en la tabla de entradas-salidas a
continuacin (ver Tabla 5 ). Debe obtener las salidas indicadas en cada caso:

Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 16
#prueba Entradas (valores de N) Salida (mensaje en pantalla)
1 9 16 21
81 7 15
RESULTADOS FINALES:
1. Usted escribio un total de 4 nmeros multiplos de 3
2. La sumatoria de valores mltiplos de 7 fue de 28
2 11 24 15
22 36 83
RESULTADOS FINALES:
1. Usted escribio un total de 3 nmeros multiplos de 3
2. No ingreso ningn valor mltiplo de 7

Tabla 4: pruebas de ejecucin para ETAPA 2 de la solucin del PROBLEMA 2

20. Guarde su pseudocdigo actual. Luego hacer una copia del archivo actual, bajo el nombre
Problema2_ETAPA4.pseint.

ETAPA 4: Mostrar el promedio de los nmeros pares ingresados

21. Para esta etapa, se trabajara con el archivo Problema2_ETAPA4.pseint.
22. Tomando de ejemplo las etapas anteriores, asi como a las Variables de Proceso [ sumapares y totpares ]
declaradas en la solucion, haga TODOS LOS CAMBIOS NECESARIOS para determinar el valor correcto
para la variable de la ltima salida [ prompares ], para cualquier secuencia valida de datos brindada por
usuario.

23. Cuando haya hecho los cambios, apyese en las pruebas definidas en la Tabla 5 para confirmar si cumpli
esta ltima Etapa de la solucin:
#prueba Entradas (valores de N) Salida (mensaje en pantalla)
1 9 16 21

82 7 15
RESULTADOS FINALES:
1. Usted escribio un total de 4 nmeros multiplos de 3
2. La sumatoria de valores mltiplos de 7 fue de 28
3. El promedio de los valores pares ingresados fue de 49
2 11 69 15

49 129 83
RESULTADOS FINALES:
1. Usted escribio un total de 3 nmeros multiplos de 3
2. La sumatoria de valores mltiplos de 7 fue de 49
3. El promedio de los valores pares ingresados fue de 0

Tabla 5: pruebas de ejecucin para ETAPA 2 de la solucin del PROBLEMA 2


PARTE D: Estructura/Lazo/Ciclo (Repetir-Hasta)

1. A continuacin se le ofrece otro problema, para que se evalu/analice e implemente el algoritmo solucin
con Pseint. Guarde el archivo como Problema3.pseint!!




Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 17

PROBLEMA 3:
Solicite al usuario los valores de un conjunto de N resistencias (R1, R2 Rn) conectadas en
paralelo, para as retornarle finalmente la resistencia equivalente (Req) de las mismas.
Se consulto a un electricista sobre el tema y menciono que la formula que se aplicara en este
caso seria:


2. A continuacin se describe la solucin a este problema 3, la cual utiliza la estructura repetitiva (Repetir-
Hasta que) en una solucin con PSeint !!

Proceso ResistenciaEq
//Entradas
N<-0; //total de resistencias
R<-0.01; //Valor de solo una resistencia
//Salida
req<-0; //resistencia equivalente final
//Procesos
i<-1; //cuenta la resistencia que se ingresara
sumadeno<-0.00; //calcula denominador de formula
Escribir "Software para Electronica basica";
Escribir ">> Cuantas resistencias ingresara??";
Leer N;
i<-1; //inicia con 1era resistencia
Repetir
Escribir ">> Resistencia(KOhmios) ",i,":";
Leer R;
sumadeno<-sumadeno+(1/R);//calcula nuevo denominador
i<-i+1; //se prepara para proxima resistencia (si falta)
Hasta Que i>N
req<-1/sumadeno;
Escribir " RESISTENCIA EQUIVALENTE: ",req," Kohmios";
FinProceso

Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 18
3. Pruebe (manualmente) la solucin, con solamente un total de 3 resistencias (de 20, 40 y 49 Kohmio).
Determine la resistencia equivalente.
4. Ahora proceda a ejecutar el PSeudocodigo anterior, e ingrese los datos del paso anterior. Debe obtener los
mismos resultados!!


PROBLEMAS A RESOLVER DURANTE LA PRACTICA

En pareja con otro compaero del laboratorio, resuelva con un PSeudocodigo y un DFD equivalente el problema a
continuacin:

Ayude a un docente de Humanstica 1, el cual tiene un listado de 3 notas registradas finales
por cada uno de sus 7 estudiantes. La nota final se compone de una Investigacin (25%), una
Exposicin (35%) y el Parcial (40%).

El docente requiere los siguientes informes claves de sus estudiantes:
1. Nota promedio final de los estudiantes que reprobaron el curso. Un estudiante reprueba el
curso si tiene una nota final inferior a 6.5.
2. Porcentaje de los estudiantes que tienen una nota de investigacin mayor a 7.65
3. Cual fue la mayor nota obtenida en las Exposiciones
3. Total de estudiantes que obtuvieron una nota en el Parcial solamente en un rango de 4.0 a
7.5, ambas inclusive

Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 19

V. DISCUSION DE RESULTADOS

Los ejercicios a continuacin se realizaran en parejas o trios.
Con el software indicado en cada problema, desarrolle los algoritmos que solucionan cada uno de los problema a
continuacin

PROBLEMAS:

A. (con DFD) Desarrolle un diagrama de flujo que sea equivalente a los pasos definidos en el archivo de
pseudocdigo Problema2_ETAPA4.pseint del PROBLEMA 2 resuelto en el procedimiento de esta prctica. El
archivo dfd final se llamara Problema2_ETAPA4.dfd

B. (con Pseint y DFD) Elaborar una encuesta entre los N empleados de fabrica ADOC. A cada empleado se le
debe pedir los siguientes datos:
a) sexo (1: Femenino 2: Masculino) b) estatura (en Centmetros)
Al finalizar el ingreso de datos de la encuesta, el administrador desea recibir esta informacin:
a) Estatura promedio de los Hombres
b) Porcentaje de empleadas que tiene contratadas ADOC
c) La menor estatura entre el personal femenino.

C. (con PSeint) Los cajeros del negocio Los Usureros SA de SV requieren un programa que les permita ingresar
el nombre, precio individual y total de unidades de un listado de N productos diferentes comprados por un
cliente La tasa del impuesto del IVA es del 13.7%. Al finalizar el ingreso de productos, muestre al cliente el
monto ($) final que pagara por la compra.



VII. BIBLIOGRAFIA

Joyanes Aguilar, Lus. Metodologa de la Programacin: Diagramas de Flujo, Algoritmos y Programacin
estructurada., Editorial: MCGRAW HILL, No. De Clasificacin 005.1 J88 1998.
Joyanes Aguilar, Lus. Problemas de Metodologa de la Programacin. Editorial: MCGRAW HILL. No. de
Clasificacin 005.1 J88 1990.
Gua #: 04 Estructuras repetitivas en Algoritmos
Introduccin a la Programacin 20

Hoja de evaluacin Gua #4

Fecha: ____________________

Nombre del alumno: _______________________________________________________ Carnet: ___________________

Nombre del docente: _________________________________________________ GL: ________ GT: ________


I. Evaluacin del contenido practico
Objetivos a evaluar:

Que el alumno sea capaz de:
Ilustrar la solucin de problemas mediante el uso de estructuras repetitivas, por medio de la herramienta DFD.
Evaluar cuando hacer uso de cada una de las diferentes estructuras repetitivas.

Criterios SI (7) Regular
(4)
NO (2)
1. Demuestra la comprensin terica y practica del funcionamiento de
los operadores lgicos y relacionales.

2. Implementa apropiadamente la sintaxis de estructuras repetitivas en
software PSeint

3. Construye los bloques de smbolos que conforman una estructura
repetitiva en un Diagrama de Flujo con el software PSeint

4. Realiza la ejecucin manual (sin usar la herramienta Ejecucin) de
cualquier PSeudocodigo



II. Evaluacin general

Cmo realiza el trabajo asignado?
Excelente Muy Bien Bueno Regular
Necesita ayuda del instructor?
Ninguna Un poco Varias Veces Siempre
10.0 (mx.) * ( ) / 28 puntos (mx.) = __________

También podría gustarte