Tema 25

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 40

INFORMÁTICA

Tema 25.- PROGRAMACIÓN


ESTRUCTURADA. ESTRUCTURAS BÁSICAS.
FUNCIONES Y PROCEDIMIENTOS.
SITUACIÓN EN EL TEMARIO
ALGORITMIA Y PROGRAMACIÓN

• 23. Diseño de algoritmos. Técnicas descriptivas.


• 24. Lenguajes de programación. Tipos. Características.
• 25. Programación estructurada. Estructuras básicas. Funciones y
Procedimientos.
• 26. Programación modular. Diseño de funciones. Recursividad. Librerías.
• 27. Programación orientada a objetos. Objetos. Clases. Herencia.
Polimorfismo. Lenguajes.
• 28. Programación en tiempo real. Interrupciones. Sincronización y
comunicación entre tareas. Lenguajes.
• 29. Utilidades para el desarrollo y prueba de programas. Compiladores.
Intérpretes. Depuradores.
• 30. Prueba y documentación de programas. Técnicas.
RELACIÓN CON EL CURRÍCULO

• Grado Superior DAM / DAW:


– Programación (1º curso).
– Entornos de desarrollo (1º curso).

• Bachillerato:
– TIC I.
– TIC II.
ÍNDICE

1. PROGRAMACIÓN ESTRUCTURADA.

2. ESTRUCTURAS BÁSICAS.
– Estructura secuencial.
– Estructura condicional.
– Estructura repetitiva.

3. FUNCIONES Y PROCEDIMIENTOS.
INTRODUCCIÓN
• Programación: creación de un conjunto concreto
de instrucciones que un ordenador puede
ejecutar, denominado programa de ordenador.
– El programa habitualmente se escribe en un lenguaje
de programación.
• Un procesador de un ordenador únicamente
puede interpretar y ejecutar programas escritos
en lenguaje o código máquina.
– Se han desarrollado lenguajes de alto nivel
independientes del procesador.
• El eje central de la metodología necesaria para
resolver problemas mediante programas, es el
concepto de algoritmo.
PROGRAMACIÓN CONVENCIONAL
• Objetivo principal: Que el programa funcione.
• Sin preocupación por su posterior mantenimiento.
• Programas: Conjunto de instrucciones sin estructura ninguna, difícilmente
comprensible por otra persona que no fuera la que lo desarrolló.
• Inconvenientes:
– Presentan una gran dificultad a la hora de localizar los posibles errores.
– Una vez localizados los errores, se presenta difícil su corrección.
– La modificación es tan complicada que, en ciertas ocasiones, es más cómodo
desarrollar el programa de nuevo.
– Por el motivo anterior, la posibilidad de incluir nuevas funciones al programa y
actualizarlo se presenta casi imposible.
– También afecta esta circunstancia a la transportabilidad del programa.
– No suelen estar documentados y no existen organigramas que representen su
función, lo que contribuye a que los programas construidos de esta forma
sean muy difíciles de comprender.
METODOLOGÍA DE PROGRAMACIÓN
• Se hace necesaria la utilización de unos métodos de
programación que faciliten las tareas de
mantenimiento del programa:
– Se tiende a la búsqueda de metodologías de programación
que conduzcan a la construcción de programas:
• Fácilmente comprensibles.
• Eficaces.
• Que permitan la localización y corrección de errores de forma
cómoda.
• Fácil actualizables.
• Finales de los años sesenta: Programación
estructurada.
TEOREMA DEL PROGRAMA
ESTRUCTURADO
• Todo programa puede escribirse utilizando
únicamente las tres instrucciones de control
siguientes:
– Secuencia: Sucesión simple de dos o más operaciones.
– Selección: bifurcación condicional de una o más
operaciones.
– Iteración: Repetición de una operación mientras se cumple
una condición.
• Número ilimitado de estructuras de control.
• Eliminación de instrucciones de salto incondicional
(goto).
1. PROGRAMACIÓN ESTRUCTURADA
1.1. FUNDAMENTOS

• Principios de los años 60.


• E. Dijkstra y otros colegas propusieron un conjunto de
construcciones lógicas con las que podría formarse
cualquier programa.
• Cada construcción tenía una estructura lógica predecible,
se entraba por el principio de la estructura y se salía por el
final, y facilitaba al lector el seguimiento del flujo
procedimental.
• Símbolos de ordinogramas:
– Tratamiento.
– Predicado (condición).
– Reagrupamiento.
Tratamiento o procedimiento puro Sirve para representar: una sentencia
de asignación, una secuencia de
sentencias, la llamada a un subprograma, o
una parte de un programa que no tiene
rada más que una entrada o una salida.
Desde el punto de vista abstracto, f es
una función que efectúa una modificación
de los datos de entrada.
Predicado, “condición”,
“expresión booleana” o “test” .

Sirve para representar una alternativa


dependiente del valor (verdadero o falso)
del dato de entrada, y según el caso ta una
de ambas salidas.

Reagrupamiento.

Este diagrama se utiliza para unir, en


una sola, diversas salidas de tratamientos
y/o predicados.
PROGRAMA BIEN ESTRUCTURADO
• Deberá contener, en su código, información
suficiente como para ser comprendido y
verificado sin necesidad de información
adicional.
• Las distintas partes de que conste el programa
deberán poder ser modificadas o cambiadas
sin que esto afecte al resto del programa.
• El programa podrá ser desarrollado por partes
fácilmente ensamblables.
REGLAS DIFERENCIADORAS
• Recursos abstractos.
– No necesariamente ligados a instrucciones
máquina.
– Con diferentes niveles de detalle.
• Diseño descendente.
– Descomposición sucesiva.
– De tareas generales a tareas específicas.
• Estructuras básicas.
– Secuencial, condicional, repetitiva.
1. PROGRAMACIÓN ESTRUCTURADA
1.2. VENTAJAS E INCONVENIENTES

• Ventajas:
– Más fáciles de entender (lectura de su traza).
– Claridad en la estructura.
– Sencillez de las pruebas (lógica más “visible”).
– Reducción de los costes de mantenimiento.
– Aumento de la productividad del programador.
– Programas más sencillos y más rápidos.
– Bloques de código (auto explicativos), lo que apoya a la
documentación.

• Inconvenientes:
– Un único bloque de programa.
2. ESTRUCTURAS BÁSICAS
2.1. ESTRUCTURA SECUENCIAL

• El orden de ejecución de las instrucciones de un programa


es secuencial.
• Las instrucciones se ejecutan de arriba-abajo y de
izquierda-derecha una detrás de otra respetando siempre
el orden inicialmente establecido entre ellas.

Instrucción 1
Instrucción 2
Instrucción 3
...
Instrucción N
2. ESTRUCTURAS BÁSICAS
2.2. ESTRUCTURAS CONDICIONALES

• Controlan la ejecución o la no ejecución de


una o más instrucciones en función de que se
cumpla o no una condición previamente
establecida.

• Tipos:
– Simple.
– Doble.
– Múltiple.
ALTERNATIVA SIMPLE.

Si Condición
Instrucción 1
FinSi
ALTERNATIVA DOBLE.

Si Condición
Instrucción 1
Sino
Instrucción 2
FinSi
ALTERNATIVA MÚLTIPLE.

Según_valor Expresión
Valorl:
Instrucción 1
Valor2:
Instrucción 2
Valor3:
Instrucción 3
ValorN:
Instrucción N
Otros:
...
FinSegún_valor
2. ESTRUCTURAS BÁSICAS
2.3. ESTRUCTURAS REPETITIVAS

• Permiten variar o alterar la secuencia normal de ejecución


de un programa haciendo posible que un bloque de
instrucciones se ejecute más de una vez de forma
consecutiva.
– Bucles, estructuras iterativas.

• Tres partes:
– Condición o Expresión condicional.
– Cuerpo, constituido por la instrucción o bloque de instrucciones
que se deberán ejecutar en caso de ser verdadera la expresión
condicional establecida.
– Salida o Final del bucle.
ESTRUCTURA MIENTRAS (WHILE).
Permite repetir un bloque de
instrucciones de 0-n veces, es decir, que en
aquellos casos en los que la condición
establecida sea verdadera, el número de
veces que se ejecutará dicho bloque de
instrucciones será una vez como mínimo y "n"
como máximo, mientras que en el caso de
que la condición establecida sea falsa dicho
bloque de instrucciones no se ejecutará
ninguna vez.

Mientras Condición
Instrucción 1
FinMientras
ESTRUCTURA REPETIR-MIENTRAS (DO
WHILE).
Permite repetir un bloque de instrucciones de
1-n veces, es decir, ya sea verdadera o falsa la
condición establecida el número de veces que se
ejecutará el bloque de instrucciones será de una
vez como mínimo y de "n" veces como máximo.

Repetir
Instrucción 1
Mientras Condición
ESTRUCTURA PARA O DESDE (FOR).

Este tipo de instrucciones repetitivas se caracteriza porque


el número de veces que se repetirá el bloque de
instrucciones generalmente está fijado de antemano.

Para Vcont de Vi a Vf con Inc = n


Instruccion 1
FinPara

Donde:

• Vcont Variable contador del bucle.


• Vi Valor inicial que toma Vcont (valor inicial a partir del
cual comienza la ejecución del bucle).
• Vf Valor final para Vcont (es el valor final que se toma
como referencia para la finalización del bucle).
• n Cantidad en que incrementa o decrementa (según sea
el valor especificado positivo o negativo) la variable Vcont
al final de cada vuelta de bucle. Por defecto el valor es
siempre 1.

La instrucción Para es una forma compacta de representar


un bucle Mientras específico.
2. ESTRUCTURAS BÁSICAS
2.4. PROGRAMAS ESTRUCTURADOS

• Se dice que un programa propio está estructurado si se


puede representar exclusivamente con los diagramas de
estructura.

• Cuando esta estructura existe, se puede obtener


automáticamente una descomposición funcional
representable por una estructura arborescente.

• Estas representaciones de los programas por estructuras


arborescentes son las que permiten el análisis de arriba
abajo (top-down).
2. ESTRUCTURAS BÁSICAS
2.5. VARIABLES DE TRABAJO
• Contador.
– Variable destinada a contener un valor que se irá incrementando o
decrementando en una cantidad fija y constante.

• Acumulador.
– Variable destinada a contener o almacenar cantidades variables
provenientes de los resultados obtenidos en operaciones aritméticas
previamente realizadas de manera sucesiva, lo que nos permitirá
obtener el total acumulado de dichas cantidades.

• Interruptor.
– Variable que puede tomar dos únicos valores considerados como
lógicos y opuestos entre sí.
– Objetivo:
• Recordar un suceso.
• Hacer que dos acciones diferentes se ejecuten alternativamente en un proceso
repetitivo.
3. FUNCIONES Y PROCEDIMIENTOS
3.1. INTRODUCCIÓN

• Diseño top-down (“divide y vencerás”):


– Diseño descendente: Dividir un problema complejo en
subproblemas y repetir la división.
• Las partes en que se divide un programa deben
poder desarrollarse independientemente entre sí.
Estas partes independientes se denominan
subprogramas.
• El problema principal se soluciona por el
correspondiente programa o algoritmo principal , y la
solución de los subproblemas se obtiene mediante
subprogramas.
• Un subprograma puede realizar las mismas
acciones que un programa:
– Aceptar datos.
– Realizar cálculos.
– Devolver resultados.
• Un subprograma tiene un propósito
específico.
• Un subprograma es llamado o invocado, por el
programa principal o por otro subprograma:
– El subprograma realiza una tarea y devuelve el
control al elemento que efectuó la llamada.
• Tipos principales: funciones y procedimientos.
3. FUNCIONES Y PROCEDIMIENTOS
3.2. FUNCIONES

• Una función es una operación que toma uno o más


valores llamados argumentos y produce un valor
denominado resultado.
• Una función se invoca utilizando su nombre en una
expresión acompañada de los argumentos reales
(normalmente encerrados entre paréntesis).
– La lista de argumentos suministrados debe coincidir en
cantidad, tipo y orden con los de la definición de la
función.
• Las funciones pueden ser internas (definidas en el
lenguaje) o externas (definidas por el programador).
• Las funciones devuelven un único valor.
DECLARACIÓN DE FUNCIONES
<tipo_de_resultado> función <nombre_fun> (lista de parámetros)
[declaraciones locales]
inicio
<acciones> //cuerpo de la función
devolver (<expresion>)
fin función

• Lista de parámetros:
({E|S|E/S} tipo_de_datoA: parámetro 1[, parámetro 2]...;
{E|S|E/S} tipo_de_datoB: parámetro x[, parámetro y]...)

• Parámetros o Argumentos:
– Formales: los incluidos en la definición.
– Actuales o Reales: los incluidos en la invocación.
INVOCACIÓN DE FUNCIONES
nombre_función (lista de parametros actuales)

nombre_función: función a la que se llama.


lista_de_parametros_actuales: constantes, variables, expresiones,
valores de funciones, nombres de funciones o procedimientos.

• Cada vez que se llama a una función se establece automáticamente una


correspondencia entre los parámetros formales y los parámetros actuales.
– Debe haber exactamente el mismo número de parámetros actuales que de parámetros
formales en la declaración de la función y se presupone una correspondencia uno a uno de
izquierda a derecha entre los parámetros formales y los actuales.
• Una llamada a la función implica los siguientes pasos:
1. A cada parámetro formal se le asigna el valor real de su correspondiente parámetro actual.
2. Se ejecuta el cuerpo de acciones de la función.
3. Se devuelve el valor de la función al nombre de la función y se retorna al punto de llamada.
3. FUNCIONES Y PROCEDIMIENTOS
3.3. PROCEDIMIENTOS

• Con frecuencia se requieren subprogramas que calculen


varios resultados en vez de uno solo. En estas situaciones la
función no es apropiada y se necesita disponer del otro tipo
de subprograma: el procedimiento o subrutina.

• Es un subprograma que no lleva ningún valor asociado a su


nombre (no devuelve ningún valor asociado a la propia
función).

• La devolución de valores (1 ó más) se produce a través de


los parámetros.

• Su definición es similar a la de una función, prescindiendo


del tipo de dato que devuelve.
3. FUNCIONES Y PROCEDIMIENTOS
3.4. ÁMBITO

• Variable local:
– Está declarada y definida dentro de un subprograma.
– Es distinta de las variables con el mismo nombre declaradas en
cualquier otro ámbito (programa principal u otro subprograma).
– Su significado se confina al procedimiento en el que está declarada.
– Hace los subprogramas más independientes: su comunicación con
otras partes del programa se produce a través de los parámetros
(encapsulamiento).
• Variable global:
– Está declarada para el programa o algoritmo principal, del que
dependen todos los subprogramas.
– Comparte datos con los subprogramas sin necesidad de ser
aportados como argumentos.
3. FUNCIONES Y PROCEDIMIENTOS
3.5. PASO DE PARÁMETROS

• Parámetros de entrada:
– Proporcionan valores desde el programa que llama y son utilizados
por el subprograma.
– Son los argumentos en el sentido tradicional

• Parámetros de salida:
– Producen los resultados del subprograma.
– Devuelven el valor calculado por ellas.

• Parámetros de entrada / salida:


– Proporcionan las dos funcionalidades descritas: proporcionan
valores y pueden enviar de vuelta valores (distintos).
CORRESPONDENCIA DE PARÁMETROS
• Correspondencia posicional.
– Se establece emparejando los parámetros reales y
formales según su posición en las listas.
– Utilizado mayoritariamente por los lenguajes de
programación.
– Desventaja: legibilidad cuando el número de
parámetros es grande.
• Correspondencia por el nombre.
– En las llamadas se indica explícitamente la
correspondencia entre los parámetros reales y
formales (lenguaje Ada).
function Factorial (N: Positive) return Positive is
begin
if N = 1 then
return 1;
else
return (N * Factorial (N - 1));
end if;
end Factorial;

F := Factorial (N => (3 + I)); -- Llamada


TRANSMISIÓN DE PARÁMETROS
• Por valor.
– Parámetros de entrada.
• Por referencia.
– Parámetros de entrada /salida.
• Por nombre.
– Ejemplo anterior (ADA).
• Por resultado.
– Parámetros expresados como de entrada pero con
comportamiento como de salida.
PASO POR VALOR
• Los parámetros se tratan como variables locales y los valores
iniciales se proporcionan copiando los valores de los
correspondientes argumentos.
• No se hace diferencia entre un argumento que es variable,
constante o expresión, ya que sólo importa el valor del
argumento.
• Limitación: no existe ninguna otra conexión con los parámetros
actuales, y entonces los cambios que se produzcan por efecto
del subprograma no producen cambios en los argumentos
originales.
– Son parámetros de entrada.
– Cualquier cambio realizado en los valores de los parámetros formales durante la
ejecución del subprograma se destruye cuando se termina el subprograma.
• Variante: llamada por valor resultado (Fortran).
PASO POR REFERENCIA
• En numerosas ocasiones se requiere que ciertos parámetros
sirvan como parámetros de salida, es decir, se devuelvan los
resultados a la unidad o programas que llama. Este método se
denomina paso por referencia o también de llamada por
dirección o variable.
– La unidad que llama pasa a la unidad llamada la dirección del
parámetro actual (que está en el ámbito de la unidad llamante).
– Entonces una variable pasada como parámetro real es compartida, es
decir, se puede modificar directamente por el subprograma.

• Los parámetros son de entrada / salida.


SUBPROGRAMAS COMO PARÁMETROS
• En ocasiones se requiere que un procedimiento o
función dada invoque a otro procedimiento o función
que ha sido definida fuera del ámbito de ese
procedimiento o función.
• Esto puede conseguirse transfiriendo como
parámetro el procedimiento o función dados
• Ejemplo:
procedimiento P(E func: F1; E real: x,y)
real función F(E func: F1,F2; E entero:x,y)
EFECTOS LATERALES
• Un subprograma puede modificar el valor de
una variable global.
• Igualmente, un subprograma puede utilizar
parámetros valor y parámetros variables.
• Recomendación:
– Si se necesita modificar el valor de una variable global
debe pasarse al subprograma como parámetro variable.
– Si no se desea poder modificar el valor de una variable
global debe plantearse su definición como constante.
CONCLUSIÓN
• Los aspectos básicos de la programación estructurada datan
de los años 70, y permanecen en la práctica totalidad de los
lenguajes empleados en la realidad, como principios de la
buena programación.

• Ello hace que en realidad los lenguajes se basen en estos


principios básicos de programación estructurada, haciendo
que sean muy parecidos, aunque con sus avances actuales
como la programación orientada a objetos, a eventos o web,
y que, una vez conocido uno, el paso a otro sea
relativamente fácil.

También podría gustarte