Publicado el 4 de Marzo del 2020
596 visualizaciones desde el 4 de Marzo del 2020
147,9 KB
34 paginas
Creado hace 19a (21/10/2005)
Complementos de Informática
Tema 2: Programación Estructurada y
Programación Modular
Álvaro Romero Jiménez
Departamento de Ciencias de la Computación e Inteligencia Artificial
Universidad de Sevilla
Programación Estructurada
Conjunto de técnicas para desarrollar algoritmos fáciles de
escribir, verificar, leer y modificar.
Técnicas utilizadas:
2 / 23
Programación Estructurada
Conjunto de técnicas para desarrollar algoritmos fáciles de
escribir, verificar, leer y modificar.
Técnicas utilizadas:
I Diseño descendente: los algoritmos se diseñan por etapas,
de los conceptos generales a los detalles particulares.
2 / 23
Programación Estructurada
Conjunto de técnicas para desarrollar algoritmos fáciles de
escribir, verificar, leer y modificar.
Técnicas utilizadas:
I Diseño descendente: los algoritmos se diseñan por etapas,
de los conceptos generales a los detalles particulares.
I Recursos abstractos: la resolución de un problema
complejo se realiza suponiendo que los subproblemas en
los que se descompone están ya resueltos.
2 / 23
Programación Estructurada
Conjunto de técnicas para desarrollar algoritmos fáciles de
escribir, verificar, leer y modificar.
Técnicas utilizadas:
I Diseño descendente: los algoritmos se diseñan por etapas,
de los conceptos generales a los detalles particulares.
I Recursos abstractos: la resolución de un problema
complejo se realiza suponiendo que los subproblemas en
los que se descompone están ya resueltos.
I Estructuras básicas: los algoritmos se escriben utilizando
únicamente las estructuras secuencial, selectiva y
repetitiva.
2 / 23
Números Amigos
Definición
Dos números se dice que son amigos si cada uno de ellos es
igual a la suma de los divisores propios del otro.
Por ejemplo, los números 220 y 284 son amigos, ya que:
Suma de divisores de 284:
Suma de divisores de 220:
1 + 2 + 4 + 71 + 142 = 220
1 + 2 + 4 + 5 + 10 +
11 + 20 + 22 + 44 +
55 + 110 = 284
Problema: Encontrar y mostrar todas las parejas de números
amigos menores o iguales a uno dado.
3 / 23
Ejemplo de Algoritmo Estructurado I
Esqueleto del Algoritmo
algoritmo números_amigos
var
natural : cota, num1, num2
inicio
leer cota
para num1 desde 1 hasta cota-1 hacer
para num2 desde num1+1 hasta cota hacer
si num1 y num2 son amigos entonces
escribir num1, num2
fin si
fin para
fin para
fin
4 / 23
Ejemplo de Algoritmo Estructurado II
Primer Refinamiento
algoritmo números_amigos
var
natural : cota, num1, num2
natural : suma1, suma2
inicio
# Guardarán la suma de
los divisores
leer cota
para num1 desde 1 hasta cota-1 hacer
para num2 desde num1+1 hasta cota hacer
suma1 ← suma de los divisores de num1
suma2 ← suma de los divisores de num2
5 / 23
Ejemplo de Algoritmo Estructurado III
si suma1 = num2 y suma2 = num1 entonces
escribir num1, num2
fin si
fin para
fin para
fin
6 / 23
Ejemplo de Algoritmo Estructurado IV
Segundo Refinamiento
algoritmo números_amigos
var
natural : cota, num1, num2
natural : suma1, suma2, número
inicio
leer cota
para num1 desde 1 hasta cota-1 hacer
para num2 desde num1+1 hasta cota hacer
suma1 ← 0
para número desde 1 hasta num1-1 hacer
si número divide a num1 entonces
suma1 ← suma1 + número
fin si
fin para
7 / 23
Ejemplo de Algoritmo Estructurado V
suma2 ← 0
para número desde 1 hasta num2-1 hacer
si número divide a num2 entonces
suma2 ← suma2 + número
fin si
fin para
si suma1 = num2 y suma2 = num1 entonces
escribir num1, num2
fin si
fin para
fin para
fin
8 / 23
Programación Modular
Resolución independiente de los subproblemas resultantes de la
descomposición de un problema.
Completa y amplía el diseño descendente como método de
resolución de problemas.
Un problema será resuelto por un algoritmo principal que
transferirá el control a los distintos módulos o subalgoritmos,
los cuales al terminar su tarea devolverán el control al
algoritmo principal.
9 / 23
Programación Modular
Algunas ventajas significativas de la programación modular:
10 / 23
Programación Modular
Algunas ventajas significativas de la programación modular:
I La independencia de los módulos permite trabajar en ellos
simultáneamente.
10 / 23
Programación Modular
Algunas ventajas significativas de la programación modular:
I La independencia de los módulos permite trabajar en ellos
simultáneamente.
I La modificación de un módulo no afecta a los demás.
10 / 23
Programación Modular
Algunas ventajas significativas de la programación modular:
I La independencia de los módulos permite trabajar en ellos
simultáneamente.
I La modificación de un módulo no afecta a los demás.
I Los módulos solo se escriben una vez, aunque se
necesiten en distintas ocasiones.
10 / 23
Tipos de subalgoritmos
Funciones
Una función toma uno o más valores, denominados
argumentos o parámetros formales, y devuelve un resultado.
Para invocar a una función se utiliza su nombre seguido por
los parámetros actuales sobre los que aplicarla, escritos entre
paréntesis y separados por comas en una expresión.
Cada lenguaje de programación tiene sus propias funciones
internas incorporadas. Si estas no permiten realizar el tipo de
cálculo deseado será necesario declarar una función externa.
11 / 23
Declaración de funciones
<tipo de dato> función <nombre de la función>
(<parámetros formales>)
const
<declaración de constantes>
<declaración de variables>
inicio
...
devolver <resultado>
var
fin
12 / 23
Tipos de Subalgoritmos
Procedimientos
Un procedimiento es un algoritmo que realiza una tarea
específica, pero que generalmente no devuelve ningún
resultado.
La entrada de información se realiza a través de los
parámetros. En caso necesario la salida de información
también se realiza a través de los parámetros.
Para invocar a un procedimiento se utiliza la instrucción
llamar a seguida del nombre del procedimiento y de los
parámetros actuales sobre los que aplicarlo, escritos entre
paréntesis y separados por comas.
13 / 23
Declaración de procedimientos
procedimiento <nombre del procedimiento>
(<parámetros formales>)
const
<declaración de constantes>
<declaración de variables>
inicio
...
var
fin
14 / 23
Tipos de Parámetros
Los parámetros se clasifican según la dirección del flujo de
información como sigue:
I Parámetros de entrada (E): transmiten información desde
el programa llamador al subprograma.
I Parámetros de salida (S): transmiten información desde el
subprograma al programa llamador.
I Parámetros de entrada/salida (E/S): transmiten
información tanto desde como hacia el programa
llamador.
15 / 23
Paso de Parámetros
Al invocar un procedimiento o una función se produce una
correspondencia entre los parámetros formales y los
parámetros actuales.
16 / 23
Paso de Parámetros
Al invocar un procedimiento o una función se produce una
correspondencia entre los parámetros formales y los
parámetros actuales.
I Correspondencia posicional: los parámetros formales y los
actuales se emparejan según su posición, en la definición
del procedimiento o función los primeros, y en la llamada
realizada los segundos.
16 / 23
Paso de Parámetros
Al invocar un procedimiento o una función se produce una
correspondencia entre los parámetros formales y los
parámetros actuales.
I Correspondencia posicional: los parámetros formales y los
actuales se emparejan según su posición, en la definición
del procedimiento o función los primeros, y en la llamada
realizada los segundos.
I Correspondencia por nombre: la correspondencia entre los
parámetros formales y los actuales se indica
explícitamente en la llamada al procedimiento o función.
16 / 23
Paso de Parámetros
Según el lenguaje de programación utilizado, existen tres
métodos de transmisión de valores a los parámetros formales.
17 / 23
Paso de Parámetros
Según el lenguaje de programación utilizado, existen tres
métodos de transmisión de valores a los parámetros formales.
I Paso por valor: los parámetros formales reciben una copia
de los valores de los parámetros actuales.
17 / 23
Paso de Parámetros
Según el lenguaje de programación utilizado, existen tres
métodos de transmisión de valores a los parámetros formales.
I Paso por valor: los parámetros formales reciben una copia
de los valores de los parámetros actuales.
I Paso por valor resultado: los parámetros formales reciben
una copia de los valores de los parámetros actuales y al
finalizar la ejecución del subprograma se realiza el proceso
inverso.
17 / 23
Paso de Parámetros
Según el lenguaje de programación utilizado, existen tres
métodos de transmisión de valores a los parámetros formales.
I Paso por valor: los parámetros formales reciben una copia
de los valores de los parámetros actuales.
I Paso por valor resultado: los parámetros formales reciben
una copia de los valores de los parámetros actuales y al
finalizar la ejecución del subprograma se realiza el proceso
inverso.
I Paso por referencia: los parámetros formales reciben las
direcciones de memoria que referencian a los valores de
los parámetros actuales.
17 / 23
Variables Globales y Locales
Variable global: aquella tal que el ámbito en el que se conoce
su valor es el programa completo, incluídos los subprogramas.
Variable local: aquella tal que el ámbito en el que se conoce su
valor es únicamente una parte del programa.
Todas las variables usadas por un subprograma que no sean
variables globales deben declararse como variables locales de
ese subprograma. Los parámetros del subprograma también
actúan como variables locales.
Se puede declarar una variable local con el mismo nombre que
otra variable ya declarada. El valor asignado a la primera solo
tendrá vigencia para las expresiones incluidas dentro de su
ámbito.
18 / 23
Ejemplo de Algoritmo Modular I
algoritmo números_amigos
inicio
# Este algoritmo no tiene variables globales
procedimiento calcula_pares ()
var
# Variables locales del procedimiento
natural : cota, num1, num2
inicio
leer cota
para num1 desde 1 hasta cota-1 hacer
para num2 desde num1+
Comentarios de: Tema 2: Programación Estructurada y Programación Modular - Complementos de Informática (0)
No hay comentarios