complementos de informática

Post on 19-Jul-2022

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Complementos de InformáticaTema 2: Programación Estructurada y

Programación Modular

Álvaro Romero Jiménez

Departamento de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Sevilla

Programación Estructurada

Conjunto de técnicas para desarrollar algoritmos fáciles deescribir, 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 problemacomplejo se realiza suponiendo que los subproblemas enlos que se descompone están ya resueltos.

I Estructuras básicas: los algoritmos se escriben utilizandoúnicamente las estructuras secuencial, selectiva yrepetitiva.

2 / 23

Programación Estructurada

Conjunto de técnicas para desarrollar algoritmos fáciles deescribir, 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 problemacomplejo se realiza suponiendo que los subproblemas enlos que se descompone están ya resueltos.

I Estructuras básicas: los algoritmos se escriben utilizandoúnicamente las estructuras secuencial, selectiva yrepetitiva.

2 / 23

Programación Estructurada

Conjunto de técnicas para desarrollar algoritmos fáciles deescribir, 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 problemacomplejo se realiza suponiendo que los subproblemas enlos que se descompone están ya resueltos.

I Estructuras básicas: los algoritmos se escriben utilizandoúnicamente las estructuras secuencial, selectiva yrepetitiva.

2 / 23

Programación Estructurada

Conjunto de técnicas para desarrollar algoritmos fáciles deescribir, 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 problemacomplejo se realiza suponiendo que los subproblemas enlos que se descompone están ya resueltos.

I Estructuras básicas: los algoritmos se escriben utilizandoúnicamente las estructuras secuencial, selectiva yrepetitiva.

2 / 23

Números Amigos

DefiniciónDos números se dice que son amigos si cada uno de ellos esigual 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: 1 + 2 + 4 + 71 + 142 = 220Suma de divisores de 220: 1 + 2 + 4 + 5 + 10 +

11 + 20 + 22 + 44 +55 + 110 = 284

Problema: Encontrar y mostrar todas las parejas de númerosamigos menores o iguales a uno dado.

3 / 23

Ejemplo de Algoritmo Estructurado I

Esqueleto del Algoritmo

algoritmo números_amigosvar

natural : cota, num1, num2inicio

leer cotapara num1 desde 1 hasta cota-1 hacer

para num2 desde num1+1 hasta cota hacersi num1 y num2 son amigos entonces

escribir num1, num2fin si

fin parafin para

fin4 / 23

Ejemplo de Algoritmo Estructurado II

Primer Refinamiento

algoritmo números_amigosvar

natural : cota, num1, num2natural : suma1, suma2 # Guardarán la suma de

los divisoresinicio

leer cotapara num1 desde 1 hasta cota-1 hacer

para num2 desde num1+1 hasta cota hacersuma1 ← suma de los divisores de num1suma2 ← suma de los divisores de num2

5 / 23

Ejemplo de Algoritmo Estructurado III

si suma1 = num2 y suma2 = num1 entoncesescribir num1, num2

fin sifin para

fin parafin

6 / 23

Ejemplo de Algoritmo Estructurado IVSegundo Refinamiento

algoritmo números_amigosvar

natural : cota, num1, num2natural : suma1, suma2, número

inicioleer cotapara num1 desde 1 hasta cota-1 hacer

para num2 desde num1+1 hasta cota hacersuma1 ← 0para número desde 1 hasta num1-1 hacer

si número divide a num1 entoncessuma1 ← suma1 + número

fin sifin para

7 / 23

Ejemplo de Algoritmo Estructurado V

suma2 ← 0para número desde 1 hasta num2-1 hacer

si número divide a num2 entoncessuma2 ← suma2 + número

fin sifin parasi suma1 = num2 y suma2 = num1 entonces

escribir num1, num2fin si

fin parafin para

fin

8 / 23

Programación Modular

Resolución independiente de los subproblemas resultantes de ladescomposición de un problema.

Completa y amplía el diseño descendente como método deresolución de problemas.

Un problema será resuelto por un algoritmo principal quetransferirá el control a los distintos módulos o subalgoritmos,los cuales al terminar su tarea devolverán el control alalgoritmo principal.

9 / 23

Programación Modular

Algunas ventajas significativas de la programación modular:

I La independencia de los módulos permite trabajar en ellossimultá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

Programación Modular

Algunas ventajas significativas de la programación modular:

I La independencia de los módulos permite trabajar en ellossimultá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

Programación Modular

Algunas ventajas significativas de la programación modular:

I La independencia de los módulos permite trabajar en ellossimultá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 senecesiten en distintas ocasiones.

10 / 23

Programación Modular

Algunas ventajas significativas de la programación modular:

I La independencia de los módulos permite trabajar en ellossimultá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 subalgoritmosFunciones

Una función toma uno o más valores, denominadosargumentos o parámetros formales, y devuelve un resultado.

Para invocar a una función se utiliza su nombre seguido porlos parámetros actuales sobre los que aplicarla, escritos entreparéntesis y separados por comas en una expresión.

Cada lenguaje de programación tiene sus propias funcionesinternas incorporadas. Si estas no permiten realizar el tipo decá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>var

<declaración de variables>inicio

...devolver <resultado>

fin

12 / 23

Tipos de SubalgoritmosProcedimientos

Un procedimiento es un algoritmo que realiza una tareaespecífica, pero que generalmente no devuelve ningúnresultado.

La entrada de información se realiza a través de losparámetros. En caso necesario la salida de informacióntambién se realiza a través de los parámetros.

Para invocar a un procedimiento se utiliza la instrucciónllamar a seguida del nombre del procedimiento y de losparámetros actuales sobre los que aplicarlo, escritos entreparéntesis y separados por comas.

13 / 23

Declaración de procedimientos

procedimiento <nombre del procedimiento>(<parámetros formales>)const

<declaración de constantes>var

<declaración de variables>inicio

...fin

14 / 23

Tipos de Parámetros

Los parámetros se clasifican según la dirección del flujo deinformación como sigue:

I Parámetros de entrada (E): transmiten información desdeel programa llamador al subprograma.

I Parámetros de salida (S): transmiten información desde elsubprograma al programa llamador.

I Parámetros de entrada/salida (E/S): transmiteninformación tanto desde como hacia el programallamador.

15 / 23

Paso de Parámetros

Al invocar un procedimiento o una función se produce unacorrespondencia entre los parámetros formales y losparámetros actuales.

I Correspondencia posicional: los parámetros formales y losactuales se emparejan según su posición, en la definicióndel procedimiento o función los primeros, y en la llamadarealizada los segundos.

I Correspondencia por nombre: la correspondencia entre losparámetros formales y los actuales se indicaexplícitamente en la llamada al procedimiento o función.

16 / 23

Paso de Parámetros

Al invocar un procedimiento o una función se produce unacorrespondencia entre los parámetros formales y losparámetros actuales.

I Correspondencia posicional: los parámetros formales y losactuales se emparejan según su posición, en la definicióndel procedimiento o función los primeros, y en la llamadarealizada los segundos.

I Correspondencia por nombre: la correspondencia entre losparámetros formales y los actuales se indicaexplícitamente en la llamada al procedimiento o función.

16 / 23

Paso de Parámetros

Al invocar un procedimiento o una función se produce unacorrespondencia entre los parámetros formales y losparámetros actuales.

I Correspondencia posicional: los parámetros formales y losactuales se emparejan según su posición, en la definicióndel procedimiento o función los primeros, y en la llamadarealizada los segundos.

I Correspondencia por nombre: la correspondencia entre losparámetros formales y los actuales se indicaexplícitamente en la llamada al procedimiento o función.

16 / 23

Paso de Parámetros

Según el lenguaje de programación utilizado, existen tresmétodos de transmisión de valores a los parámetros formales.

I Paso por valor: los parámetros formales reciben una copiade los valores de los parámetros actuales.

I Paso por valor resultado: los parámetros formales recibenuna copia de los valores de los parámetros actuales y alfinalizar la ejecución del subprograma se realiza el procesoinverso.

I Paso por referencia: los parámetros formales reciben lasdirecciones de memoria que referencian a los valores delos parámetros actuales.

17 / 23

Paso de Parámetros

Según el lenguaje de programación utilizado, existen tresmétodos de transmisión de valores a los parámetros formales.

I Paso por valor: los parámetros formales reciben una copiade los valores de los parámetros actuales.

I Paso por valor resultado: los parámetros formales recibenuna copia de los valores de los parámetros actuales y alfinalizar la ejecución del subprograma se realiza el procesoinverso.

I Paso por referencia: los parámetros formales reciben lasdirecciones de memoria que referencian a los valores delos parámetros actuales.

17 / 23

Paso de Parámetros

Según el lenguaje de programación utilizado, existen tresmétodos de transmisión de valores a los parámetros formales.

I Paso por valor: los parámetros formales reciben una copiade los valores de los parámetros actuales.

I Paso por valor resultado: los parámetros formales recibenuna copia de los valores de los parámetros actuales y alfinalizar la ejecución del subprograma se realiza el procesoinverso.

I Paso por referencia: los parámetros formales reciben lasdirecciones de memoria que referencian a los valores delos parámetros actuales.

17 / 23

Paso de Parámetros

Según el lenguaje de programación utilizado, existen tresmétodos de transmisión de valores a los parámetros formales.

I Paso por valor: los parámetros formales reciben una copiade los valores de los parámetros actuales.

I Paso por valor resultado: los parámetros formales recibenuna copia de los valores de los parámetros actuales y alfinalizar la ejecución del subprograma se realiza el procesoinverso.

I Paso por referencia: los parámetros formales reciben lasdirecciones de memoria que referencian a los valores delos parámetros actuales.

17 / 23

Variables Globales y Locales

Variable global: aquella tal que el ámbito en el que se conocesu valor es el programa completo, incluídos los subprogramas.

Variable local: aquella tal que el ámbito en el que se conoce suvalor es únicamente una parte del programa.

Todas las variables usadas por un subprograma que no seanvariables globales deben declararse como variables locales deese subprograma. Los parámetros del subprograma tambiénactúan como variables locales.

Se puede declarar una variable local con el mismo nombre queotra variable ya declarada. El valor asignado a la primera solotendrá vigencia para las expresiones incluidas dentro de suámbito.

18 / 23

Ejemplo de Algoritmo Modular I

algoritmo números_amigosinicio # Este algoritmo no tiene variables globales

procedimiento calcula_pares ()var # Variables locales del procedimiento

natural : cota, num1, num2inicio

leer cotapara num1 desde 1 hasta cota-1 hacer

para num2 desde num1+1 hasta cota hacersi son_amigos(num1, num2) entonces

escribir num1, num2fin si

fin parafin para

fin19 / 23

Ejemplo de Algoritmo Modular II

lógico función son_amigos (E natural : num1, num2)var # Variables locales de la función

natural : suma1, suma2lógico : resultado

iniciosuma1 ← suma_divisores(num1)suma2 ← suma_divisores(num2)resultado ← suma1 = num2 y suma2 = num1devolver resultado

fin

20 / 23

Ejemplo de Algoritmo Modular III

natural función suma_divisores (E natural : num)var # Variables locales de la función

natural : suma, númeroinicio

suma ← 0para número desde 1 hasta num-1 hacer

si divide_a(número, num) entoncessuma ← suma + número

fin sifin paradevolver suma

finfin # Aquí acaba el algoritmo

21 / 23

Algoritmos Recursivos

Son aquellos que forman parte de sí mismos o intervienen ensu propia definición.

Resultan útiles para trabajar con problemas o estructurasdefinidos en modo recursivo.

Todo algoritmo recursivo puede ser convertido en iterativo.

22 / 23

Ejemplo de Algoritmo RecursivoLa sucesión de Fibonacci se define por recursión como sigue:fib0 = 0, fib1 = 1fibn = fibn−1 + fibn−2, para todo n > 1

Función que calcula un término especificado de la sucesión.natural función fib (E natural : n)var

natural términoinicio

si n < 2 entoncestérmino ← n

si no entoncestérmino ← fib(n-1) + fib(n-2)

fin sidevolver término

fin23 / 23

top related