complementos de informática

34
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

Upload: others

Post on 19-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Complementos de Informática

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

Page 2: Complementos de Informática

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

Page 3: Complementos de Informática

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

Page 4: Complementos de Informática

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

Page 5: Complementos de Informática

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

Page 6: Complementos de Informática

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

Page 7: Complementos de Informática

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

Page 8: Complementos de Informática

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

Page 9: Complementos de Informática

Ejemplo de Algoritmo Estructurado III

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

fin sifin para

fin parafin

6 / 23

Page 10: Complementos de Informática

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

Page 11: Complementos de Informática

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

Page 12: Complementos de Informática

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

Page 13: Complementos de Informática

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

Page 14: Complementos de Informática

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

Page 15: Complementos de Informática

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

Page 16: Complementos de Informática

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

Page 17: Complementos de Informática

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

Page 18: Complementos de Informática

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

Page 19: Complementos de Informática

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

Page 20: Complementos de Informática

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

Page 21: Complementos de Informática

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

Page 22: Complementos de Informática

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

Page 23: Complementos de Informática

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

Page 24: Complementos de Informática

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

Page 25: Complementos de Informática

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

Page 26: Complementos de Informática

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

Page 27: Complementos de Informática

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

Page 28: Complementos de Informática

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

Page 29: Complementos de Informática

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

Page 30: Complementos de Informática

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

Page 31: Complementos de Informática

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

Page 32: Complementos de Informática

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

Page 33: Complementos de Informática

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

Page 34: Complementos de Informática

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