15 sept 2015

UNIDAD 3: PROGRAMACIÓN ESTRUCTURADA

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