0% encontró este documento útil (0 votos)
33 vistas17 páginas

Estructuras Repetitivas Parte 1

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 17

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERÍA Y ARQUITECTURA


ESCUELA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
INTRODUCCIÓN A LA INFORMÁTICA

UNIDAD V
ESTRUCTURAS REPETITIVAS (parte 1/2)

Contenido
1. GENERALIDADES - ESTRUCTURAS REPETITIVAS
2. TERMINOLOGÍA BÁSICA
3. ESTRUCTURA DE ENTRADA CONDICIONADA - ESTRUCTURA MIENTRAS
4. VALIDACIÓN DE DATOS CON CICLO MIENTRAS
5. OPERADORES ADICIONALES DEL LENGUAJE C#
6. ESTRUCTURA CONTROLADA POR UN CONTADOR – ESTRUCTURA DESDE_HASTA
7. ESTRUCTURA DE ENTRADA ASEGURADA – ESTRUCTURA HASTA_QUE
8. ESTRUCTURA PARA CADA ELEMENTO - ESTRUCTURA DERIVADA
9. CICLOS ANIDADOS
10. TECNICA DE CICLO CONTROLADO POR BANDERA
11. TECNICA DE CICLO CONTROLADO POR CENTINELA
12. TECNICA PARA DETERMINAR EL VALOR MENOR/MAYOR Y DATOS ASOCIADOS
13. ANEXOS

Objetivo: Aprender a utilizar las estructuras repetitivas fundamental y derivadas en el


diseño y codificación de soluciones.

INTRODUCCIÓN

En nuestra vida cotidiana nosotros podemos realizar tareas o acciones más de una
vez, por ejemplo para los alumnos es casi obligatorio venir a clase todos los días,
para nosotros los docentes es obligatorio venir a trabajar todos los días; así también
todos los días nos bañamos, comemos, dormimos, etc. Hay otras tareas que no son
tan frecuentes pero que también se repiten: estudiar (solo estudiamos unos 2 o 3 días
antes de la evaluación), ir al cine (solo cuando tenemos dinero, tiempo y exhiben la
película que nos interesa).

Realizar algunas actividades muchas veces depende de alguna condición que se nos
imponga: por ejemplo: compilamos un programa las veces que sea necesario hasta
que no tenga errores; es decir, mientras tenga errores no dejamos de compilarlo.

1
Recordemos que para cualquier diseño de solución y su respectiva codificación
disponemos únicamente de tres estructuras de control que son: las secuenciales, las
selectivas y las repetitivas; y que no importa que tan compleja sea la solución que se
necesita, dichas estructuras son suficientes para diseñarla y codificarla. Ya hemos
estudiado las estructuras secuenciales y las estructuras selectivas por lo que en esta
unidad se deben hacer uso de las estructuras secuenciales y selectivas según
corresponda en combinación con las estructuras repetitivas, a fin de obtener una
solución adecuada al problema planteado.

Las estructuras repetitivas son aplicables a problemas para los cuales el diseño de la
solución requiere la repetición de una o más acciones, para llevar a cabo el objetivo
de la misma, dicho sea de paso las computadoras están especialmente diseñadas
para ejecutar tareas que se repiten y hacerlo con la mayor eficiencia. En esta unidad
iniciaremos estudiaremos las generalidades sobre el tema; comenzando con la
terminología (conceptos básicos que nos ayudarán a comprender mejor el uso de los
ciclos), luego operadores en lenguaje C# (especialmente para uso en ciclos) y la
clasificación de las estructuras repetitivas. Otro punto importante que estudiaremos
es la estructura o ciclo mientras y sus aplicaciones en la solución de problemas como
es el caso de validaciones, conteos, cálculo de sumas y promedios, entre otros así
como las distintas aplicaciones de variables de control de ciclo. Por ultimo
aprenderemos ciclos derivados como: desde hasta y hasta que con las formas en
que podemos aplicarlos principalmente en cálculos de sumas y promedios, junto con
técnicas de variables de control y técnica para determinar el valor menor/mayor y
datos asociados.

1. GENERALIDADES - ESTRUCTURAS REPETITIVAS

Para repetir varias veces un proceso determinado haremos uso de los ciclos
repetitivos, a los cuales se les conoce también con el nombre de Estructuras
Repetitivas, Estructuras Iterativas, Lazos, Bucles, Loops o simplemente ciclos al
conjunto de bloques y flechas que nos permite, representar en un flujograma que,
una acción (o varias) se puede realizar una o varias veces (en algunos casos
especiales ninguna vez) de acuerdo a una condición. Al igual que las estructuras
secuenciales y las selectivas, estas estructuras tienen únicamente una flecha de
entrada y una sola flecha de salida dentro de un flujograma.

2. TERMINOLOGÍA BÁSICA

Para trabajar con estructuras repetitivas se hace necesario conocer ciertos


conceptos, previo al estudio de cada estructura, ya que nos servirán para comprender
mejor el funcionamiento de cada una de ellas.

2
Estructuras de Control Repetitivas: En un programa son aquellas estructuras en las
que una sentencia o grupo de sentencias se pueden repetir una o varias veces (en
algunos casos especiales ninguna vez) mientras o hasta que una condición
especifica se cumpla.

Las estructuras repetitivas las clasificamos en fundamental y derivadas como se


describe a continuación:

a) Estructura Fundamental
Entrada Condicionada o estructura Mientras, se repite mientras la
condición se cumpla.

b) Estructuras Derivadas
Ciclo controlado por contador o estructura Desde_hasta, se repite desde un
valor inicial hasta un valor final.
Ciclo Para_cada_uno es una variante del Desde_hasta pensada
especialmente para compactar la escritura de códigos donde se realice algún
tratamiento a todos los elementos de una colección, muy habitual en los lenguajes
C#. Lo veremos en detalle cuando estemos trabajando con Colecciones de datos
en la siguiente Unidad.
Entrada asegurada o estructura Hasta_que, se repite al menos una vez antes
que se evalúa la condición y se repite mientras la condición se cumpla.

Para representar gráficamente una estructura repetitiva, haremos uso de los siguientes
símbolos o bloques.

Es el mismo rombo que se utiliza Este es el símbolo especial para


para las estructuras selectivas, pero representar las tres estructuras
en estructuras repetitivas, las repetitivas, por lo tanto es necesario
flechas internas nunca se reúnen de aclarar a cuál de ellas representamos,
nuevo. Con este símbolo se visualiza escribiendo dentro del bloque el
y comprende fácilmente el nombre de la estructura
funcionamiento de las estructuras
repetitivas

3
Cuerpo del Ciclo: Está formado por la acción o conjunto de acciones que se repite en un
bucle y puede estar formado por una o más estructuras lógicas de control:
 Secuenciales (entrada de datos, asignación/proceso, salida de datos)
 Selectivas (simple, doble, anidada, múltiple)
 Repetitivas (entrada condicionada, entrada asegurada, controlada por contador)
 Combinación de las anteriores.

Iteración: A la ejecución del cuerpo del ciclo se le conoce como iteración; dicho de otra
forma, una iteración es cada una de las ejecuciones, es decir, cada una de las veces que
se repite el cuerpo del ciclo. Si el cuerpo del ciclo o acción a repetir, se realiza 5 veces,
se dice que se ejecutan 5 iteraciones.

Representación general de las estructuras iterativas

Variable de control del ciclo: es una variable que permite controlar las veces que se
ejecuta un ciclo. La variable de control puede ser: bandera, centinela o contador. Cabe
aclarar que un ciclo podría estar controlado por más de una variable. A continuación se
define cada una de las variables de control:

Bandera: es una variable de entrada y una variable de control de ciclo (con una
sola función: continuar o detener un ciclo), y solamente
puede almacenar uno de dos valores, normalmente cero
(0) o uno (1), debemos recordar que cero es el valor
numérico para falso y uno se considera el valor numérico
para cierto.

Se puede hacer uso de números o letras; pero en todo


caso solo existirán dos valores posibles. En el caso de

4
usar letras se escoge dos letras una de ellas indica cierto y la otra falso, por
ejemplo 's' y 'n', una es sí (cierto) y la otra es no (falso). Se usa con el ciclo
mientras o con el ciclo hasta que.

Centinela: es una variable de entrada y una variable de control de ciclo (con


doble función la primera recibir los datos a procesar
y la segunda función de: continuar o detener un
ciclo). Una variable centinela se escoge de entre las
variables de entrada de la solución (variables tipo
entero, tipo real o tipo alfanumérico de un carácter)

La variable centinela al igual que la variable de


control bandera se usará cuando la cantidad de
veces que debe repetirse el ciclo es desconocida. Se usa con el ciclo mientras o
con el ciclo hasta que.

Contador: Es una variable que controla el número de veces que se repite un ciclo
y/o el número de ocurrencias de un evento, situación o valor determinado (tiene
una doble función controlar el ciclo repetitivo y contar; pero puede ser usada
únicamente para contar).Para definir correctamente una variable contador, se
debe de indicar lo siguiente:

Valor inicial: representa el número a partir del cual se


empieza a contar.
Valor final: representa el número hasta el que se va a
contar.
Valor de cambio: Indica de cuanto en cuanto se realiza la
cuenta (siempre es el mismo valor, es decir, es
constante).

La forma más común de contar es de uno en uno, sobre todo si lo que se desea
es saber cuántas veces se repite una acción determinada, pero no es la única
forma de contar, se puede hacer también contar de dos en dos ó de cinco en
cinco ó de 100 en 100, es más también podemos contar con fracciones de 0.5 en
0.5 o de 0.01 en 0.01. Estas formas de contar se conocen como progresivas, y el
valor de cambio de la variable que controla estas cuentas siempre es positivo y se
le llama incremento, el valor inicial siempre debe de ser menor que el valor final
para que la acción se pueda ejecutar.

Existen también conteos regresivos, en estas formas de contar el valor de


cambio es negativo y el valor inicial es siempre mayor que el valor final de la

5
variable contador; así podemos contar desde 5 hasta 1 por ejemplo, el valor de
cambio es -1. Es importante recordar que independientemente del valor de
cambio (positivo o negativo) de un contador, éste siempre es constante. Como
ejemplo podemos mencionar que para leer un grupo de 5 edades, se puede
definir una variable contador numEd. Dicha variable numEd, tendrá un valor
inicial de 1, un valor final de 5 y un valor de cambio 1.

La variable contador se usará cuando la cantidad de veces que debe repetirse el


ciclo es conocida o se puede preguntar las veces que debe repetirse, en cuyo
caso la cantidad de repeticiones es una variable de entrada más a considerar. La
variable contador se puede usar con ciclos mientras, hacer hasta que y hacer
desde hasta.

Acumulador: Es una variable que “almacena” el resultado final de sumar todos los
distintos valores que toma una variable, para definirla, también es necesario indicar:

Valor inicial: Representa el valor original o inicial del acumulador, por lo general cero.
Valor final: El último valor que toma el acumulador, desconocido por lo general.
Valor de cambio: Representa cada valor de la variable que se va sumando o acumulando
(en cada iteración ese valor puede cambiar).

Por ejemplo para calcular el monto total a desembolsar para pagar la planilla de 20
empleados, tendríamos que sumar todos los salarios de los empleados. Podemos hacer
uso de una variable suma; para la cual definimos un valor inicial de 0.0 y un valor de
cambio que es el valor de la variable salario (contiene el salario del enésimo trabajador);
el valor final es lo que pretendemos encontrar, no está definido de antemano.

El acumulador no lo utilizaremos para controlar ciclos pero es aplicable su uso en


cualquier tipo de ciclos, con cualquier variable de control de ciclo.

3. ESTRUCTURA DE ENTRADA CONDICIONADA - ESTRUCTURA MIENTRAS

A la Estructura MIENTRAS también se le llama estructura de entrada condicionada,


debemos mencionar que ésta es la primera estructura usada para repetir porciones de
un algoritmo a conveniencia, por lo tanto se le distingue como Estructura Fundamental;
de esta estructura, se diseñaron otras 3 estructuras, que se conocen como Derivadas.
(Hacer desde hasta, hacer hasta que, y una última conocida como para cada elemento)

Funcionamiento de la Estructura Mientras


Esta estructura, nos permite realizar el cuerpo del ciclo las veces que sea necesario,
siempre y cuando (o Mientras) se cumpla la condición. Al entrar a la estructura se evalúa
la condición, si el resultado es falso, el cuerpo del ciclo no se ejecuta, si al contrario la
6
condición resulta cierta, se realiza el cuerpo del ciclo. Una vez finalizada la ejecución del
cuerpo del ciclo se regresa a evaluar la condición de nuevo. De tal forma que el cuerpo
del ciclo puede ser que se ejecute: ninguna vez, una vez o varias veces, dependiendo
del resultado de la condición, por esta razón, a estos ciclos se les denomina ciclos con
entrada condicionada, se entra al cuerpo del ciclo si la condición se cumple.

Dentro del cuerpo del ciclo debe existir alguna estructura que modifique el resultado
lógico (de verdadero a falso) de la condición; si esto no sucediera, la estructura repetitiva
se quedaría ejecutando el cuerpo del ciclo indefinidamente, ya que para salir de la
estructura la condición debe dar como resultado falso, en este caso el ciclo se denomina
bucle infinito (ciclo o lazo infinito) o sin fin (situación que DEBE evitarse).

Representación Gráfica – Diseño de la Solución Para representar gráficamente una


estructura MIENTRAS, vamos a utilizar el símbolo especial que se mostró en la figura
anterior, aunque también se puede utilizar el rombo, como se muestra en la figura de la
siguiente página:

7
Ejemplo

Nótese que lo que está dentro de las líneas punteadas es la Estructura Repetitiva
(gráfico de la derecha), los caminos o rutas que salen del rombo nunca se unen, como
sucede en la Estructura Selectiva. En este ejercicio se repite el cuerpo del ciclo cuando
el usuario ingresa el valor de 5, y como resultado se imprime "Felicidades Adivino"

La estructura algorítmica mientras es la estructura adecuada para utilizar en un ciclo


cuando no sabemos el número de veces que éste se ha de repetir. Dicho número
depende de las proposiciones dentro del ciclo. Ejemplos en la vida cotidiana
encontramos muchos. Por ejemplo, supongamos que tenemos que obtener el total de
una serie de gastos, pero no sabemos exactamente cuántos son; o cuando tenemos que
sacar el promedio de calificaciones de un examen, pero no sabemos precisamente
8
cuántos alumnos lo aplicaron. Tenemos que sumar las calificaciones e ir contando el
número de alumnos, esto con el fin de poder obtener posteriormente el promedio. El ciclo
se repite mientras tengamos calificaciones de alumnos.

Representación en Pseudo-Código – Diseño de la Solución

Para expresar una estructura MIENTRAS en pseudo-código vamos a utilizar la siguiente


simbología. Debe tenerse muy claro que el uso de ciclos implica la posible realización de
acciones previas y acciones posteriores al ciclo, según corresponda al diseño de la
solución.

…… …
//Acciones Previas n=0
Hacer cont = Proposición Inicial Mientras (n!=5) repetir {
Mientras cont es verdadero repetir Escribir "Adivine el número:"
{ Leer n`
Repetir el Cuerpo del Ciclo }//Fin del Ciclo
Hacer cont = Modificación de cont Escribir "Felicidades Adivinó!!!"
}// Fin del ciclo
//Acciones Posteriores

Reglas de Funcionamiento

Las siguientes normas o reglas deben de cumplirse, cuando utilicemos una estructura
MIENTRAS:

i. La condición (expresión lógica) es lo primero que se evalúa al llegar a la


estructura; cuando el resultado es “Verdadero”, se ejecuta el cuerpo del ciclo (y se
regresa a evaluar la condición), cuando el resultado es “Falso” se sigue la flecha
de salida de la estructura.

ii. Cuando la condición se evalúa a “Falso”, al entrar a la estructura por primera vez,
el cuerpo del bucle no se ejecutará nunca. En este caso se dice que el bucle se
ha ejecutado cero veces.

iii. Mientras la condición dé como resultado “Verdadera” el cuerpo del ciclo se va a


continuar ejecutando.

iv. La única forma de salir del ciclo MIENTRAS, es obteniendo un resultado de falso
en la expresión lógica.

9
Codificación de la Estructura Mientras en C#

La estructura iterativa de entrada condicionada necesita solamente la palabra reservada


while, que justamente en español significa mientras, los paréntesis ( ) para encerrar la
condición y las { } para delimitar el cuerpo del ciclo:

Sintaxis Ejemplo

... //Acciones previas

//Acciones previas x = 100;

cont = Proposición Inicial // cont=Vi; while ( x <= 500) {


while(condición) // cont<=Vf;
Console.Write("\n {0}", x);
{
x = x + 50;
//Cuerpo del Ciclo
}
//Acción1
//Acciones Posteriores . . .
//AcciónN

//cont = Modificación de cont


cont++

//Acciones Posteriores . . .

Otro Ejemplo

...
//Acciones previas
n=0;
while(n !=5) {
Console.Write("Adivine el numero:");
n = Console.ReadLine();
}
Console.Write("Felicidades Adivinó!!!"); //Acciones posteriores . . .

10
Es de aclarar que si el cuerpo del ciclo está formado por solo una acción no se coloca las
llaves; solo en el caso que sean dos o más acciones, se colocarán las llaves. Observe
también que la línea donde va el while no lleva. Además Un bucle while se puede
terminar cuando una instrucción break, goto, return o throw, que transfiere el control
fuera del bucle. Para pasar el control a la siguiente iteración sin salir del bucle, use la
instrucción continue. Para uso académico de la asignatura no se aplicará ninguno de
estos últimos.

Para el siguiente ejercicio se considera solamente los conceptos adquiridos hasta el


momento con las estructuras selectivas y las nociones de las estructuras repetitivas
mientras. Se hará uso de la estructura selectiva para validar el dato de entrada, dado
que hasta el momento no hemos implementado la estructura mientras con este fin, lo
solucionaremos de esta forma en el primer ejercicio. En este caso la estructura repetitiva
mientas la utilizaremos para dejar de repetir el cuerpo del ciclo.

Ejemplo No. 1: En la primera parte aplique la metodología para resolver problema sin
módulos, con el fin de conocer la estructura mientras. Luego aplique la metodología
modular para el siguiente:

Enunciado: Diseñe un flujograma que Imprima los n primeros números enteros


positivos.

Análisis del Problema.

a. Variables de Salida:

Nombre Tipo Descripción

num Entero Representa cada uno de los números a imprimir

11
b. Variables de Entrada:

Nombre Tipo Descripción

cantNum Entero Almacena la cantidad de números a imprimir

Constantes: No son necesarias.

c. Restricciones:

cantNum >0

d. Procesos:

Lo que haremos es leer la cantidad de números que vamos a imprimir y verificar que
cumpla la restricción; luego iniciar con num=1; imprimirlo y aumentarle 1, mientras
num sea menor o igual que cantNum.

Leer cantNum
¿ cantNum >0?
Si: Inicialmente num=1
Mientras num <= cantNum
Imprimir num
num= num + 1
NO: Imprimir “Error en datos”

e. Variables de Proceso:

No se ha utilizado.

Diseño de la solución.

Pseudocódigo (Flujograma ver ANEXO 1-A)

{El programa, imprime los n primeros números enteros positivos}


{num y cantNum son variables de tipo entero, y deben ser positivo, num representa cada
uno de los números a imprimir, cantNum almacena la cantidad de números a imprimir}
1. Escribir “Cuantos números quiere imprimir”
2. Leer cantNum.
3. Si cantNum > 0 Entonces num = 1
3.1. Mientras num <= cantNum repetir
Escribir num
num = num + 1;
3.2. {Fin del ciclo paso 3.1} Sino
12
Escribir “Error en dato”
4. {fin del condicional del paso 3}

Codificación.
/* *Programa que genera cantNum numeros enteros positivos, iniciando de 1 * */
using System;
namespace ImprimeNumerosPositivos
{
class Program
{
public static void Main(string[] args)
{
//declaracion de variables
int cantNum, num=1;

//Entrada de Datos
Console.WriteLine("Cuantos números quiere imprimir (positivo)?");
cantNum = int.Parse( Console.ReadLine() );

if (cantNum > 0)//validacion del numero ingresado


{
Console.WriteLine("NUMEROS ENTEROS POSITIVOS. {0}",
cantNum);
// estructura mientras, num sea menor que numero ingresado
while (num <= cantNum)
{
Console.WriteLine("{0}", num);
num = num + 1;
}
}
else
Console.WriteLine("Error en datos");
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
return;
}
}
}

Otra forma de solucionar el ejemplo de los números enteros positivos utilizando


modularidad es el siguiente:
13
Enunciado: Diseñe un flujograma que Imprima los n primeros números enteros
positivos.

II. Análisis / Diseño Jerárquico Modular

 Main, Lee cuantos números desea imprimir (cantNum) e invoca el método


ImprimirEnteros
 ImprimirEnteros, mostrará un mensaje y luego leerá la cantidad de mumeros como un
valor entero por teclado, lo convertirá a entero y retornará el valor entero.

14
II. Análisis / Diseño Jerárquico Modular Diseño de la Solución
Pseudocódigo (Flujograma ver ANEXO 1-B)

Método: ImprimirEnteros Acceso: Público Estático: Sí


{ imprime enteros hasta que num < cantNum }
{ num, cantNum de tipo entero, positivos}
1. Recibir cantNum, num.
2. Si cantNum > 0
Entonces
Escribir “Numeros Enteros Positivos", cantNum
2.1. Mientras num <= cantNum Repetir
Escribir num
num = num + 1;
2.2. {Fin del ciclo paso 2.1}
Sino
Escribir “Error en dato”
3. { fin del condicional del paso 2}

Método: Main Acceso: Público Estático: Sí


{ imprime enteros hasta que num < cantNum }
{ num, cantNum de tipo entero, positivos}
1. Hacer num = 1
2. Escribir “Cuantos números quiere imprimir (positivo)”
3. Leer cantNum.
4. imprimirEnteros(cantNum,num)

V. Codificación.
/* *Programa que genera cantNum numeros enteros positivos, iniciando de 1 * */
using System;
namespace ImprimeNumerosPositivos
{
class Program
{
public static void Main(string[] args)
{
//declaracion de variables
int cantNum, num=1;

//Entrada de Datos
Console.WriteLine("Cuantos números quiere imprimir (positivo)?");
cantNum = int.Parse( Console.ReadLine() );
15
imprimirEnteros(cantNum, num);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}

public static void imprimirEnteros(int cantNum, int num)


{
if (cantNum > 0)//validacion del numero ingresado
{
Console.WriteLine("NUMEROS ENTEROS POSITIVOS. {0}",
cantNum);
// estructura mientras, num sea menor que numero ingresado
while (num <= cantNum)
{
Console.WriteLine("{0}", num);
num = num + 1;
}
}
else
Console.WriteLine("Error en datos");

return;
}
}
}

16
Anexos

17

También podría gustarte