UNIDAD 3: PROGRAMACIÓN ESTRUCTURADA

1. Introducción
La característica fundamental de la
programación estructurada es que se basa en el uso únicamente de tres
estructuras de control. Para ello se apoya en los siguientes conceptos:
·
Recursos
abstractos: Son los recursos que se tienen en
el momento de programar, Estos recursos se tienen que ir transformando en
recursos concretos.
·
Diseño
descendente (top down): Se trata de ir
descomponiendo el problema en niveles cada vez más sencillos
·
Estructuras
básicas de control: Para construir un programa se
siguen los pasos de razonamiento anteriores y al final se codifica el programa
usando tres tipos de secuencias: repetitivas, alternativas y secuenciales.
Al final todo programa va a tener
una única entrada y una única salida.
Desde la entrada tienen que existir
caminos que permiten pasar por todas las partes del programa y llegar a la
salida, no se van a permitir los bucles
infinitos.
2. Estructuras Secuenciales
En las estructuras secuenciales una
instrucción sigue a otra en secuencia, es decir, la salida de una instrucción es
la entrada de la siguiente.
3. Estructuras Selectivas
Se evalúa una condición y en función
del resultado lógico (verdadero o falso) se ejecuta un conjunto de
instrucciones u otro. Son también denominadas estructuras de control de flujo,
estructuras condicionales y de toma de decisiones. Hay tres tipos: simples,
dobles o múltiples.
3.1 Estructura
Selectiva Simple
La estructura selectiva simple es la
estructura condicional elemental y básica. Presenta la forma:
Sí
<condición> entonces
<Acciones>
Fin si
Evaluamos
la condición. Si el resultado es verdadero, ejecutamos el conjunto de acciones
asociadas al bloque entonces. Si el resultado es falso, no ejecutamos acción
alguna.
3.2 Estructura Selectiva Doble
La estructura selectiva doble es una
estructura condicional que evalúa una condición dada. Si es verdad, se ejecutan
el conjunto de acciones asociadas a la parte entonces. Si es falso se ejecutan
el conjunto de acciones asociadas a la parte sino.
3.2 Estructura Selectiva de
Alternativa Múltiple
Se evalúa una
condición o expresión que puede tomar n valores distintos. Según sea el valor
de la expresión en ese instante de tiempo se ejecutan las acciones
correspondientes al valor. En muchos lenguajes se conocen como sentencias Case
o Switch.
Es una sentencia
de la forma:
Según sea <expresión>
<valor1>: <acciones 1>
<valor2>: <acciones 2>
[<otro>: <acciones n>]
fin según
En la opción
Otro: las acciones asociadas a éste se ejecutan cuando la expresión no toma
ninguno de los valores que aparecen antes. El valor con el que se compara la
expresión es dependiente de los lenguajes de programación. Por lo general se
espera un tipo de dato determinístico y con valores secuencia les tales como los enteros y caracteres. En
general ese valor puede ser un valor constante, un rango de valores
deterministico o incluso otra condición.
4. Estructuras Repetitivas o de
Ciclo
Las estructuras repetitivas o de
ciclo contienen o representan un bucle o conjunto de instrucciones que se repiten
un número finito de veces. Cada repetición del bucle se llama una iteración.
Todo bucle tiene asociada una condición, que es la que va a determinar si se
ejecuta el bucle y hasta cuando.
Existen tres tipos de básicos de
estructuras repetitivas:
1. Mientras-hacer
(While do)
2. Repetir-hasta
(Repeat until)
3. Desde
(For)
4.1
Estructura Repetitiva Mientras-hacer
Aquí la condición de entrada al ciclo se evalúa antes realizar cualquier
iteración del bucle. Si la condición no se cumple, el ciclo no se ejecuta y
el programa continúa con la secuencia de acciones siguientes al ciclo. Si la
condición es verdadera, se comienza a ejecutar las acciones del Mientras-hacer.
Después de la última acción, se
repite el proceso de evaluación de la condición; si la condición es verdadera
de nuevo, se repite las acciones. Este proceso se conoce como un bucle y
continua hasta que la condición sea falsa, y la ejecución prosigue con la
sentencia siguiente del programa.
Al evaluarse la condición antes de
entrar en el bucle al principio, si la
condición al ser evaluada la primera vez es falsa, no entraremos nunca en el
bucle, el bucle puede que se ejecute O veces, por tanto se usará este tipo
de bucle en el caso de que exista la posibilidad de que el bucle pueda
ejecutarse O veces.
4.2 Estructura
Repetitiva Repetir-hasta
Aquí la condición del ciclo se evalúa después de realizar la primera
iteración del bucle. Este bucle se repite mientras la condición evaluada al
final se mantenga falsa. Al cumplirse la condición y
ser verdadera, se sale del bucle. De allí
su nombre "repetir hasta" que se cumpla la condición.
Se repite el bucle hasta que la
condición sea verdadera. En otras palabras, el bucle se repite y ejecuta
mientras la condición sea falsa. La condición se
evalúa siempre al final del bucle, si es falsa volvemos a ejecutar las
acciones, si es verdad se sale del bucle. Como la condición se evalúa al final se pasa al menos una vez por el bucle.
Es decir que cuando un bucle se tenga que ejecutar como mínimo una vez, se
puede usar una estructura repetir hasta. Si se quiere usar una estructura
mientras hacer, la única diferencia es que se debe asegurar que la condición de
entrada sea verdadera para dicho ciclo.
4.3 Estructura
Repetitiva Desde
Se
usa cuando se sabe el número exacto de veces que se va ha ejecutar el bucle.
El bucle lleva asociado una variable que se denomina variable índice, a la que
le asigna un valor inicial y se establece cual va a ser su valor final. La
variable índice se incrementa o decrementa en cada iteración del bucle en un
valor constante de manera automática. El programador no se tiene que ocupar de
actualizar el valor de esta variable en cada iteración del bucle; es una
operación implícita.
Por tanto en cada iteración del
bucle, la variable índice se actualiza automáticamente y cuando alcanza el
valor que se establecido como final se termina la ejecución del bucle.
5. Estructuras Anidadas
Las estructuras selectivas como los
bucles se pueden escribir unas dentro de otras. Esto se conoce como estructuras
anidadas.
5.1 Anidación
de Condicionales
En ocasiones se requiere evaluar un
conjunto de condiciones en forma secuencial y separada. En estos casos, se
recomienda utilizar una anidación de condicionales. La ventaja de anidar
sentencias condicionales, es que cuando una se cumple no hay por que evaluar
las condiciones que están debajo o que le siguen.
Sintaxis:
Si
<condicion1> Entonces <sentencia1>
Sino
si <condicion2> Entonces <sentencia2>
Sino
si <condicion3> Entonces <sentencia3>
Fin
si
Fin
si
Fin si
OJO:
La sentencia según sea (case) siempre equivale a una anidación de
condicionales, pero lo contrario no es cierto.
5.2 Bucles Anidados
Al igual que se pueden colocar unas
expresiones dentro de otras, los bucles pueden estar unos dentro de otros. Al
anidar bucles hay que tener en cuenta
que el bucle interno funciona como una sentencia más en el bloque del bucle
externo, por lo tanto, en cada iteración del bucle externo se van a
ejecutar todas las iteraciones del bucle interno.
Los bucles deben estar bien formados
y ser sintácticamente, nunca pueden cruzarse las sentencias de los bucles. Si
se tiene un ciclo desde que internamente
posee un ciclo mientras hacer,
es necesario finalizar las sentencias o instrucciones del ciclo más interno en
este caso mientras-hacer antes de colocar
la culminación del ciclo externo desde.
Si el bucle más externo se repite n veces y el más interno se repite m veces, si por cada iteración del más externo se
repite el más interno, el número total de iteraciones será el producto de m * n.
Los bucles que se anidan pueden ser
de igual o distinto tipo. Ejemplo:
Desde i=1 hasta 8
Desde
k=1 hasta 5
Escribir
"Profesor n” i “introduzca asignatura Nº” k Leer asignatura
Fin desde
Fin desde
Note
como cada ciclo interno termina antes de cerrar el más Externo.
No existen limitaciones en cuanto al
número de sentencias y estructuras anidadas que se pueden anidar en un mismo
bloque, esto depende del lenguaje que se está usando. No obstante no se
recomienda abusar de los anidamientos ya que resultan en un código difícil de
leer y por lo tanto difícil de mantener.
6. Control de Datos de Entrada
Existen una serie de situaciones
comunes en programación donde se toman datos desde un dispositivo de entrada y
se requiere de alguna forma de control
implementada por bucles.
6.1
Usando un Valor Centinela que Determina
el Fin del Bucle
En este caso se espera la entrada de
un valor centinela para decidir si se va ingresar al ciclo o no de entrada de
datos.
El bucle se va a repetir mientras no
se lea un valor determinado.
La primera lectura se va a realizar
fuera del bucle. Si al ingresar el dato de entrada, éste es el valor centinela
no se entra en el bucle y se
seguirá con el resto del algoritmo. En caso contrario, se entra en el bucle
para seguir con la entrada de datos.
Se recomienda utilizar una
estructura Mientras-hacer.
Ejemplo:
Centinela = 9
Leer opción
Mientras (opción <> centinela) hacer
<Acciones>
Leer opción
Fin mientras
6.2
Lectura Secuencial de un Archivo
Los datos de entrada pueden estar en
un archivo, el cual debe ser leído desde el primer al último registro para
recuperar todos los datos, para ello se realiza una lectura secuencial de todos
los registros del archivo.
Una estrategia común de lectura para
un archivo con acceso secuencial es:
·
Abrir el archivo,
·
Leer un registro
del archivo,
·
Verificar si no
es fin de archivo al entrar a un ciclo para recorrer el archivo realizar
operaciones con los datos de entrada,
·
Volver a leer
datos del archivo, con cada operación de lectura se avanza de registro en
registro en los datos del archivo
·
Regresar al ciclo
hasta que sea fin de archivo.
Ejemplo:
Archivo mi_archivo
Abrir_Archivo (mi_archivo)
Leer_Archivo (mi_archivo)
Mientras (NOT (Fin_de_Archivo(mi_archivo))) Hacer
<acciones con los datos del archivo>
Leer_Archivo (mi_archivo)
Fin mientras
6.3 Cuando se Sabe el Número Exacto de Veces que se Ejecuta una
Acción o Proceso
Cuando se sabe
el número exacto de veces que se ejecuta una acción o proceso la opción natural
para realizar el control de entrada es utilizar un ciclo o bucle Desde...Hasta.
Normalmente, el
número de veces que se desea repetir el proceso a controlar es solicitado como
un valor de entrada o es suministrado desde alguna otra fuente (variable de
entorno, constante, archivo de configuración, entre otros). Una vez que se
obtiene este valor, se le asigna a la variable de índice para el ciclo Desde.
Se efectúa la operación hasta que se cumpla el número de veces deseado.
Ejemplo:
i: Entero
Mostrar "Ingrese el numero da
materias a registrar:”
Leer número materias
Desde i =1 Hasta numero materias
Mostrar "Ingresar datos Materia
numero “
Leer materia
<Acciones a realizar con materia>
Fin desde
6.4 Control de Datos Para no Permitir Datos Erróneos
El control de
ingreso de datos para evitar datos de entrada erróneos se usa cuando se
controla al usuario para que introduzca los datos correctos. Por ejemplo: un
valor numérico dentro de un rango determinado. En estos casos se recomienda
usar un ciclo Repetir...Hasta.
Ejemplo:
opcion: Entero
opción=0
Repetir
Mostrar "Menú:”
Mostrar "1. Crear Archivo"
Mostrar "2. Borra Archivo"
Mostrar "3. Incluir Registro"
Mostrar "4. Salir del sistema"
Mostrar "Su opción:"
Leer opción
Hasta (opción >= 1) Y (opción <= 4)




No hay comentarios:
Publicar un comentario