Documente Academic
Documente Profesional
Documente Cultură
APUNTE DE CATEDRA
1. Estructuras de Control
El orden de ejecución de las sentencias (enunciados o instrucciones) en un algoritmo se llama flujo
de control. Aunque un flujo normal de un algoritmo es lineal, existen ocasiones en que es necesario salir del
flujo lineal. La forma de manejar el flujo de control en un algoritmo se logra a través de las estructuras de
control. Estas estructuras pueden ser:
Secuenciación.
Selección.
Iteración.
Nota: En adelante se utilizan los términos enunciado, sentencia e instrucción en forma indistinta.
1.1 Secuenciación
La secuenciación se cumple cuando las sentencias se ejecutan siguiendo el orden físico, es decir, el
orden en que están escritas. Comenzamos con el primero paso, continuamos con el segundo, seguimos con
el tercero y así hasta llegar al fin. Respetando siempre el orden.
Enunciado 1
Enunciado 2
Enunciado 3
...
Enunciado n
En ningún caso se ejecutará el enunciado 2 antes que el enunciado 1. El orden de ejecución será
exactamente como están escritas.
1.2 Selección
Esta estructura se utiliza cuando el algoritmo debe elegir (seleccionar) entre dos o más acciones
posibles. Es decir, el algoritmo debe permitir que se tome una decisión y luego ejecutar una de varias
acciones (caminos) posibles.
Si<condición>
entonces
Si<condición>
<instrucciones>
entonces
Sino
<instrucciones>
<instrucciones>
1
COMPUTACION PROF. M.EUGENIA LOPEZ RUEDA
Ejemplos
Problema: Dado un número entero informar si el mismo es positivo o negativo.
Análisis
Entradas: Número (NUM).
Salidas: (mensaje).
Diseño
Proceso: - Leer el número.
- Decir si es positivo o negativo.
AlgoritmoEsPositivo
escribir “Ingrese un número entero”
leer NUM
si (NUM < 0)
entonces
escribir “El número ingresado es negativo”
sino
escribir “El número ingresado es positivo”
Si<condición>
Una estructura de selección puede tener anidada a entonces
otra y esta a otra y así sucesivamente. Por ejemplo: <instrucciones>
Sino
Si<condición>
entonces
<instrucciones>
Sino
<instrucciones>
1.3 Iteración
Esta estructura de control, como su nombre lo indica, posibilita repetir la ejecución de una
sentencia o un conjunto de sentencias.
Anteriormente hemos visto que en la secuencia el flujo de control sigue el orden físico de las sentencias,
por lo tanto, diremos que el orden lógico (orden en que queremos que se ejecuten las sentencias) es igual
que el orden físico. En cambio en la selección el flujo de control difiere del orden físico de las sentencias, en
este caso el orden físico y el orden lógico son diferentes. En la iteración el orden lógico también difiere del
orden físico de las instrucciones. Una iteración se conoce también como bucle o ciclo.
Nota: En adelante se usan de manera indistinta los términos bucle, ciclo e iteración.
2
COMPUTACION PROF. M.EUGENIA LOPEZ RUEDA
Formato general:
mientras<condición>hacer
<instrucciones>
Evalúa cierta condición booleana. Si el resultado es verdadero, ejecuta las instrucciones y continúa
de esta manera mientras la condición siga siendo verdadera. Es claro que el ciclo se romperá cuando la
condición deje de ser verdadera, es decir, se vuelva falsa. Es posible incluso que el ciclo nunca se efectúe si
de entrada la condición es falsa. Es decir, que la condición inicialmente sea falsa, por lo tanto, no entrará al
bucle ni siquiera una vez. En el siguiente ejemplo, si la primera vez que se lee X, se lee –1, la condición X >=
0 es inicialmente falsa, por lo tanto, no ejecutará ni siquiera una vez los enunciados que están dentro del
bucle.
leer X
mientras X >= 0 hacer
escribir X
leer X
Desarrollemos un ejemplo
Problema: Escribir un programa para ver si un número N es primo (Definición: un número es primo si es un
entero positivo mayor que 1, que es divisible solamente por si mismo y la unidad)
Ejemplos: 2 , 3, 7, 11 y 2003: son primos
4 no es primo es divisible por 2
2001 no es primo, es divisible por 3
121 no es primo, es divisible por 11
Análisis
Entrada : N
Salida: mensaje ‘es primo’ o ‘no es primo’
Diseño
Proceso: - leer N
-cuento la cantidad de divisores que tiene N, si tiene 0, entonces es primo.
ALGORITMO EsPrimo
3
COMPUTACION PROF. M.EUGENIA LOPEZ RUEDA
leer(N)
CantDivisores 0 # asumo que cantidad de divisores de N es 0
Divisor 2 #el primer divisor a considerar es 2
MIENTRAS (Divisor < N) y (CantDivisores = 0) hacer
SI N % Divisor = 0 #Si Divisor divide a N, incremento CantDivisores
ENTONCES
CantDivisoresCantDivisores + 1
Divisor Divisor + 1 # paso al próximo Divisor
SI (CantDivisores=0) y (N > 1)
ENTONCES
Escribir ‘N es primo’
SINO
Escribir‘N no es primo’ Una traza es una simulación de la
ejecución real de los pasos en la cual
Para comprobar la correctitud del algoritmo realizaremos la traza se lleva cuenta de los movimientos
realizadosy los cambios que se
Suponemos que Leemos N, y el usuario desde teclado ingresa el producen.
número 7 Si la traza se realiza correctamente, y
al llegar al final del algoritmo no se
N CantDivisores Divisor obtiene el resultado deseado,
7 0 2 entonces hay un error en la
secuencia de pasos.
N CantDivisores Divisor
7 0 2
3
Se vuelve a verificar la condición del bucle Mientras, y se ejecutan las instrucciones que se encuentran
dentro del mismo. Luego de iterar 5 veces
N CantDivisores Divisor
7 0 2
3
4
5
4
COMPUTACION PROF. M.EUGENIA LOPEZ RUEDA
6
7
Se sale del bucle, y se verifica la condición, (CantDivisores=0) y (N > 1), ambas son verdaderas, por lo tanto,
la conjunción también lo será. Se mostrará en pantalla:
7 es primo
repetir
enunciado1
hasta que (condición)
Esto significa, “hacer el enunciado1 MIENTRAS que la condición sea falsa”. Veamos un ejemplo de
dos segmentos de código que realizan lo mismo usando las dos estructuras.
CONT 1 CONT 1
Repetir Mientras (CONT <= 5) hacer
escribir CONT escribir CONT
CONT CONT + 1 CONT CONT + 1
Hasta que CONT <= 5
Ejemplos
Problema: Ingresar una serie de caracteres y contar la cantidad de letras ‘A’ que aparecen. Termina la serie
cuando se ingresa un ‘*’.
Análisis
Datos de Entrada: LETRA
Datos de Salida: mensaje, CANTIDAD
Diseño
Proceso: -leer letra
-para cada caracter ingresado, verifico, si es A incremento el contador hasta que el
carácter sea *
ALGORITMO Contar_A
5
COMPUTACION PROF. M.EUGENIA LOPEZ RUEDA
CANTIDAD 0
repetir
escribir “Ingrese un caracter (con ‘*’ termina)”
leer LETRA
si (LETRA == ‘A’ o LETRA == ‘a’)
entonces
CANTIDAD CANTIDAD + 1
hasta que LETRA == ‘*’
escribir “La cantidad de letras A ingresadas es: ”, CANTIDAD
Diseño
Proceso: - leer D, N
- ir mirando dígito a dígito
- si alguno es igual a D es que aparece; si recorro todo el número y ninguno es igual
a D entonces no aparece.
Observación: un número siempre tiene al menos un dígito (se repetirá 1 o más veces)
6
COMPUTACION PROF. M.EUGENIA LOPEZ RUEDA