Tema – 25 Programación estructurada.

Tema – 25 Programación estructurada.

1. TÉCNICAS DE PROGRAMACIÓN.. 2

2. PROGRAMACIÓN CONVENCIONAL. 2

3. PROGRAMACIÓN MODULAR. 3

4. PROGRAMACIÓN ESTRUCTURADA.. 3

4.1 Razonamiento deductivo (TOP-DOWN) 4

4.2 Recursos abstractos. 4

4.3 Estructuras básicas. 4

4.4 Dinámica de los 3 conceptos. 5

4.5 Ventajas de la programación estructurada. 5

5. TEOREMA DE LA ESTRUCTURA.. 5

6. SUBPROGRAMAS. 6

6.1 Funciones. 6

6.2 Procedimientos. 6

6.3 Ámbito de un identificador. 7

6.4 Parámetros. 7

6.5 Funciones y procedimientos como parámetros. 7

6.6 Efectos laterales. 7

7. SISTEMAS DE REPRESENTACIÓN.. 8

7.1 Método de Warnier. 8

7.2 Método Jackson. 9

7.3 Método Bertini 10

7.4 Método de Tabourier. 11

7.5 Método de Chapin. 13

1. TÉCNICAS DE PROGRAMACIÓN

Se crearon por la necesidad de reducir coste de mantenimiento de las aplicaciones.

2. PROGRAMACIÓN CONVENCIONAL

· Objetivo principal à que el programa funcionará, sin preocuparse de posterior mantenimiento.

· Conjunto de instrucciones sin estructura ninguna.

Inconvenientes:

– Dificultad al localizar errores

– Difícil corrección de errores

– A veces es más cómodo desarrollar el programa de nuevo

– Imposible incluir nuevas funciones al programa

– Difícil portabilidad del programa

– No suelen estar documentados

3. PROGRAMACIÓN MODULAR

· Descomposición del programa en trozos denominados módulos.

· Cada módulo resuelve una tarea concreta.

· Cada módulo se analiza y codifica por separado.

· Consta de un módulo principal y llama al resto de módulos o subprogramas.

clip_image002

Características de los módulos:

– Deben tener nombre propio

– Son llamados utilizando su nombre

– Pueden crear nuevos datos

– Pueden ser compilados por separado y almacenados en librerías.

– Constan de 2 partes (cabecera) y (cuerpo)

4. PROGRAMACIÓN ESTRUCTURADA

· Desarrollada por Dijkstra

· Hay que mencionar a: (Chapin, Warnier, Jackson, Bertini, Tabourier…)

Condiciones:

– Información suficiente para ser legible y comprendido

– Las distintas partes del programa deberán poder ser modificada sin afectar al resto del programa.

– El programa podrá ser desarrollado por partes fácilmente ensamblantes.

Lo que de verdad diferencia a estos programas estructurados de los no estructurados son una serie de reglas que tendrán estos 3 elementos:

o Razonamiento TOP-DOWN

o Recursos abstractos

o Estructuras básicas

4.1 Razonamiento deductivo (TOP-DOWN)

· Técnica que permite la deducción de un problema por medio de niveles o pasos consecutivos.

· La salida de un nivel es la entrada del siguiente.

· El paso de un nivel al siguiente se realiza por medio de un “REFINAMIENTO

Las estructuras básicas del programa pueden verse desde 2 puntos de vista:

o Desde punto de vista exterior: Caja negra con una única vía de entrada y única vía de salida de información. Realiza una acción sin importar cómo.

o Desde punto de vista interior: Lo único que importa es cómo realiza su tarea, si con instrucciones (repetitivas, alternativas o secuenciales)

El diseño de programas se realizará en niveles que irán de lo genérico a lo particular, por medio de refinamientos o descomposiciones que concluirán instrucciones del programa.

4.2 Recursos abstractos

· Tendencia natural à Pasar directamente de las ideas a las instrucciones

· Consiste en la división del problema en partes más pequeñas que simplifican la concepción del mismo.

· Estas partes podrán o no tener correspondencia directa con instrucciones.

· Si no la tienen, se subdividirán en partes todavía más simples hasta que exista correspondencia.

· De esa manera, se transforman los recursos abstractos en recursos concretos.

4.3 Estructuras básicas

Böhm y Jacopini en 1966à Un programa puede desarrollarse utilizando solamente 3 estructuras básicas: Estructura secuencial, estructura alternativa y estructura repetitiva.

4.3.1 Estructura secuencial

Permite descomponer un problema en una secuencia de acciones que se ejecutan una detrás de otra.

4.3.2 Estructuras alternativas

Permiten la ejecución o no de un grupo de instrucciones dependiendo de si se cumple o no una condición. 3 tipos (simple, doble y múltiple)

4.3.3 Estructuras repetitivas

Permiten la ejecución repetida de un grupo de instrucciones un número determinado de veces hasta que se cumpla o deje de cumplirse una condición. 4 tipos (MIENTRAS, PARA, ITERAR, REPETIR)

4.4 Dinámica de los 3 conceptos

La técnica de programación estructurada consiste en:

– El problema se considera recurso abstracto. Se debe definir exactamente su función.

– Si la función se puede codificar directamente, se termina el proceso.

– En caso contrario, se divide en partes más pequeñas (refinarse)

– Cada parte se considera un recurso abstracto al que se le aplica el mismo proceso.

4.5 Ventajas de la programación estructurada

– Tiempo ahorrado en la labor de codificación

– Facilidad de localización y corrección de errores

– Reduce periodo de prueba del programa y simplifica posterior mantenimiento.

– Aumento del personal dedicado al SW.

– Programa sencillo y rápido (permite lectura desde principio a fin de forma continua) incluso para otros programadores ajenos.

– Programas muy bien documentados

5. TEOREMA DE LA ESTRUCTURA

Cualquier programa propio, con una sola entrada y una sola salida y con caminos que recorren el programa (sin bucles infinitos ni instrucciones que no se ejecutan nunca) pueden describirse utilizando solamente las estructuras de control (secuencial, alternativa y repetitiva)

6. SUBPROGRAMAS

· La descomposición del programa en subprogramas o módulos es una técnica muy utilizada en la programación.

· Método que permite resolver problemas complejos dividiéndolos en trozos más simples que se pueden implementar por separado.

· Consta de un programa principal que toma el control al principio del a ejecución y es de donde se llama a cada uno de los módulos (donde toman el control los módulos)

· La estructura de un subprograma es la misma que la de un programa.

6.1 Funciones

· Reciben uno o varios datos de entrada y producen un solo dato de salida.

· Siempre tienen que devolver algo, no pueden no devolver nada.

· 2 tipos de funciones:

o Internas: Vienen definidas en el lenguaje de programación.

o Externas: Definidas por el usuario.

· Para hacer referencia a ella se hace una “llamada” a su nombre y en paréntesis los argumentos o parámetros de entrada.

· Están divididas en 2 partes:

o Cabecera: nombre_función(parámetros)

o Cuerpo: Se definen las variables y las acciones a realizar(instrucciones)

· FORMATO:

FUNCIÓN nom_función (nom_par1: tipo, nom_par2: tipo…) tipo-función

VAR variables_locales

INICIO

Instrucción 1

Instrucción 2

Instrucción N

Retorno resultado

FIN nom_función

6.2 Procedimientos

· Pueden devolver más de un valor resultado.

· No asignan estos valores al nombre del procedimiento.

· Al llamar a un procedimiento no hay que hacerlo desde una expresión, hay que hacerlo con una instrucción concreta.

· El procedimiento toma el control mientras dura su ejecución, cuando termina, devuelve el control a la instrucción siguiente a la que lo llamó.

· FORMATO:

PROCEDIMIENTO nom_procedimiento (tipo-traspaso nom parámetro: tipo, …)

CONSTANTES definición_constantes

TIPOS definición_tipos

VARIABLES definición_variables_localeas

INICIO

Instrucción 1

Instrucción 2

Instrucción N

FIN nom-procedimiento

· Ya no existe la instrucción RETORNO. Los resultados los devuelven a través de los parámetros traspasados por referencia. Antes de salir del procedimiento se deberán asignar a estos parámetros los valores que se quieran devolver.

· La llamada al procedimiento se hace:

o [LLAMAR] nom_procedimiento (nom_parámetro1, nom_parametro2, …)

o LLAMARà CALL

o A veces basta con poner solo el nombre del procedimiento con los parámetros.

6.3 Ámbito de un identificador

· Variables locales:

· Se definen dentro de un subprograma

· No se puede acceder a ella fuera del subprograma

· Se podrá definir otra variable con el mismo nombre fuera del subprograma.

· Variables globales:

· Se definen en el programa principal.

· Engloba al programa principal y a todos los subprogramas que dependen de él.

· Si dentro de un subprograma se define una variable con el mismo nombre, dentro de ese subprograma se accede a la variable local y no a la global.

6.4 Parámetros

· A los parámetros que aparecen en la llamada se les denomina parámetros reales pueden ser variables, constantes y expresiones.

· A los parámetros que aparecen en la definición se les llama parámetros formales

Paso de parámetros por valor:

o El valor del parámetro real se copia en el parámetro formal

o Los cambios efectuados sobre el parámetro formal (dentro de la función) no quedan reflejados en el parámetro real (fuera de la función)

• Paso de parámetros por referencia:

• Los parámetros formales se declaran como punteros y reciben la dirección de memoria en la que se almacena el correspondiente parámetro real

o para ello se usa el operador de dirección &

• Cualquier modificación sobre el parámetro formal que se realice en la función se mantendrá una vez que termine la función

• El paso de parámetros por referencia permite que una función pueda modificar más de un valor

En el mundo de la programación existen dos formas muy famosas de pasar variables a alguna función: una se conoce como paso por valor y la otra es conocida como paso por referencia. De acuerdo a nuestras clases, la primera forma nos dice que nuestra función recibirá una copia de la variable que pasemos y, cualquier modificación que realicemos, solo afectará a dicha copia. Por otro lado, en la segunda forma se nos lleva a entregar prácticamente la variable original, es decir, si realizamos algún cambio en el parámetro de nuestra función, esto equivaldría a estar actuando directamente sobre la variable original.

6.5 Funciones y procedimientos como parámetros

Los parámetros reales que se traspasen a un subprograma podrán ser a su vez funciones o procedimientos, de deberá definir en su cabecera

6.6 Efectos laterales

No es una buena práctica en programación tratar con variables globales en los subprogramas, porque pueden aparecer errores debidos a algún cambio no previsto en una de estas variables. Este tipo de errores son conocidos como efectos laterales y se evitan usando los parámetros en la comunicación de un programa con sus procedimientos.

Un efecto colateral es cualquier cambio que una función produce fuera del ámbito de la función en sí. Por ejemplo, una función que modifique una variable que ha recibido como parámetro (es decir, «parámetros de entrada/salida») o que modifique variables globales o cualquier otra cosa que no sean variables locales a la función está produciendo efectos colaterales. Esto incluye cualquier tipo de entrada/salida, como leer o escribir ficheros o interactuar con la pantalla, el teclado o el ratón.

7. SISTEMAS DE REPRESENTACIÓN

Métodos de representar y describir un algoritmo.

7.1 Método de Warnier

· Representación basada en llaves.

o Estructura secuencial

o Estructuras alternativas

o clip_image004Estructuras repetitivas

clip_image006

clip_image008

7.2 Método Jackson

Representa los programas en forma de árbol.

clip_image010

clip_image012

clip_image014

clip_image016

7.3 Método Bertini

También representa el algoritmo en forma árbol.

Se recorren en orden inverso.

clip_image018

clip_image020

clip_image022

clip_image025
clip_image026
7.4 Método de Tabourier

· También estructura arborescente.

· Se recorre en pre orden

· Utiliza rectángulos y rombos

clip_image031
clip_image032
clip_image033
clip_image034
7.5 Método de Chapin

Utiliza cajas o rectángulos para representar el algoritmo.

clip_image036Se lee de arriba abajo.

clip_image038

clip_image040

clip_image042

clip_image044

Ejemplo de todos los métodos:

clip_image045

clip_image046

clip_image047

clip_image048

clip_image049

clip_image050