Programación Estructurada. Complementos de Informática Tema 2: Programación Estructurada y Programación Modular. Números Amigos

Documentos relacionados
Programación MODULAR: Subalgoritmos - funciones y procedimientos

Tema 5: Programación modular

Qué es la recursividad?

SUBPROGRAMAS. Los subprogramas pueden ser invocados varias veces desde diferentes partes del programa.

Análisis de algoritmos. Recursividad

Tema: Funciones, Procedimientos y Recursividad en C#.

Primer Cuatrimestre 2018 Resolución de Problemas y Algoritmos

COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor. Prof. Mireya Morales

Sintaxis de PSeInt Tutorial

Tema 3. Listas Recursión sobre datos

2.2 METODOLOGÍA PARA EL DISEÑO DE SOFTWARE

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Procedimientos y funciones

PROGRAMACION ESTRUCTURADA: Tema 3. Funciones

La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados.

TEMA 5: Subprogramas, programación modular

Guía práctica de estudio 05: Pseudocódigo

Lenguaje C, tercer bloque: Funciones

Tema: Funciones, Procedimientos y Recursividad en C#.

Tema: Funciones, Procedimientos y Recursividad en C#.

Capítulo 4. Control de flujo. Continuar

Tema: Funciones, Procedimientos y Recursividad en C#.

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n!

CAPITULO 6: FUNCIONES

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Programación II Recursividad Dr. Mario Rossainz López

Sistemas y Aplicaciones Informáticas. Tema 28. Programación Modular. Diseño de Funciones: Recursividad. Librerías.

Unidad 6. Subprogramas: Funciones y Procedimientos. Prof. Eliana Guzmán U. Semestre: A 2015

8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL.

Introducción a los subalgoritmos o subprogramas

Guía práctica de estudio 04: Diagramas de flujo

EVIDENCIAS DE APRENDIZAJE

SECUENCIA DIDÁCTICA. Módulo IV Competencia de Módulo: Competencia de curso:

Funciones y subrutinas

Guía práctica de estudio 05: Diagramas de flujo

TEMA 4: ALGORITMOS Y PROGRAMAS

Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones)

INDICE. Prólogo de la Segunda Edición

Capitulo 2. Programación Modular

Tema 2. Algoritmos y Programas. Informática Grado en Física

Conceptos. Generales ALGORITMOS

2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

a) Si ch tiene el valor X y numero el valor 5, cuál sería el efecto de ejecutar cada una de las siguientes llamadas al procedimiento:

Recursividad. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Unidad I: Introducción a las estructuras de datos

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN

Práctico Nº 7 Tema: Lenguaje de Diseño (Parte 3). Subalgoritmos

Índice general 7. Presentación 15

Programación Modular. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Fortran tiene dos tipos diferentes de subprogramas, las funciones y las subrutinas.

Recursión. Capítulo 4

Algoritmos y programas. Algoritmos y Estructuras de Datos I

TEMA 2: ALGORITMOS Y PROGRAMAS

Estructuras de Control Selección o Decisión

Tema 2. Concepto de Algoritmo

CURSO DE INGRESO ASIGNATURA Introducción a la Informática

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Elementos de Programación Tema VI.Subprogramas ā Relación de Ejercicios 3 de diciembre de 2002

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE

Modularización. Bibliografía

Fundamentos de programación C++

Funciones Definición de función

Computación Avanzada. Ing. Daniel Capriles M.

Tema 14: Diseño Estructurado (Modularidad)

Acción que el procesador puede ejecutar sin necesidad de información suplementaria

Cómo describir un diagrama de flujo en pseudocódigo?

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

DISEÑO ESTRUCTURADO. Herramientas de representación de algoritmos

Tema: Funciones y Procedimientos en C#.

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Informática Aplicada TEMA 8: FUNCIONES 1.- CONCEPTOS. Funciones

Transcripción:

Programación Estructurada Complementos de Informática Tema 2: Programación Estructurada y Programación Modular Álo Romero Jiménez Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Conjunto de técnicas para desarrollar algoritmos fáciles de escribir, verificar, leer y modificar. Técnicas utilizadas: Diseño descendente: los algoritmos se diseñan por etapas, de los conceptos generales a los detalles particulares. Recursos abstractos: la resolución de un problema complejo se realiza suponiendo que los subproblemas en los que se descompone están ya resueltos. Estructuras básicas: los algoritmos se escriben utilizando únicamente las estructuras secuencial, selectiva y repetitiva. 2 / 23 Números Amigos Deició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: 1 + 2 + 4 + 71 + 142 = 220 Suma 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úmeros amigos menores o iguales a uno dado. Ejemplo de Algoritmo Estructurado I Esqueleto del Algoritmo si num1 y num2 son amigos entonces si 3 / 23 4 / 23

Ejemplo de Algoritmo Estructurado II Ejemplo de Algoritmo Estructurado III Primer Reamiento natural : suma1, suma2 # Guardarán la suma de los divisores suma1 suma de los divisores de num1 suma2 suma de los divisores de num2 si suma1 = num2 y suma2 = num1 entonces si Ejemplo de Algoritmo Estructurado IV Segundo Reamiento natural : suma1, suma2, número suma1 0 para número desde 1 hasta num1-1 hacer si número divide a num1 entonces suma1 suma1 + número si 5 / 23 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 si si suma1 = num2 y suma2 = num1 entonces si 6 / 23 8 / 23

Programación Modular 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. Algunas ventajas significativas de la programación modular: La independencia de los módulos permite trabajar en ellos simultáneamente. La modificación de un módulo no afecta a los demás. Los módulos solo se escriben una vez, aunque se necesiten en distintas ocasiones. 9 / 23 10 / 23 Tipos de subalgoritmos Funciones Declaración de 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. <tipo de dato> función <nombre de la función> (<parámetros formales>) const <declaración de constantes> <declaración de iables>. devolver <resultado> 11 / 23 12 / 23

Tipos de Subalgoritmos Procedimientos Declaración de 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. procedimiento <nombre del procedimiento> (<parámetros formales>) const <declaración de constantes> <declaración de iables>. 13 / 23 14 / 23 Tipos de Parámetros Paso de Parámetros Los parámetros se clasifican según la dirección del flujo de información como sigue: Parámetros de entrada (E): transmiten información desde el programa llamador al subprograma. Parámetros de salida (S): transmiten información desde el subprograma al programa llamador. Parámetros de entrada/salida (E/S): transmiten información tanto desde como hacia el programa llamador. Al invocar un procedimiento o una función se produce una correspondencia entre los parámetros formales y los parámetros actuales. Correspondencia posicional: los parámetros formales y los actuales se emparejan según su posición, en la deición del procedimiento o función los primeros, y en la llamada realizada los segundos. 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. 15 / 23 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. Paso por valor: los parámetros formales reciben una copia de los valores de los parámetros actuales. Paso por valor resultado: los parámetros formales reciben una copia de los valores de los parámetros actuales y al alizar la ejecución del subprograma se realiza el proceso inverso. Paso por referencia: los parámetros formales reciben las direcciones de memoria que referencian a los valores de los parámetros actuales. 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 iables usadas por un subprograma que no sean iables globales deben declararse como iables locales de ese subprograma. Los parámetros del subprograma también actúan como iables locales. Se puede declarar una iable local con el mismo nombre que otra iable ya declarada. El valor asignado a la primera solo tendrá vigencia para las expresiones incluidas dentro de su ámbito. Ejemplo de Algoritmo Modular I 17 / 23 Ejemplo de Algoritmo Modular II 18 / 23 # Este algoritmo no tiene iables globales procedimiento calcula_pares () # Variables locales del procedimiento si son_amigos(num1, num2) entonces si 19 / 23 lógico función son_amigos (E natural : num1, num2) # Variables locales de la función natural : suma1, suma2 lógico : resultado suma1 suma_divisores(num1) suma2 suma_divisores(num2) resultado suma1 = num2 y suma2 = num1 devolver resultado 20 / 23

Ejemplo de Algoritmo Modular III natural función suma_divisores (E natural : num) # Variables locales de la función natural : suma, número suma 0 para número desde 1 hasta num-1 hacer si divide_a(número, num) entonces suma suma + número si devolver suma # Aquí acaba el algoritmo Algoritmos Recursivos Son aquellos que forman parte de sí mismos o intervienen en su propia deición. Resultan útiles para trabajar con problemas o estructuras deidos en modo recursivo. Todo algoritmo recursivo puede ser convertido en iterativo. Ejemplo de Algoritmo Recursivo La sucesión de Fibonacci se dee por recursión como sigue: fib 0 = 0, fib 1 = 1 fib n = fib n 1 + fib n 2, para todo n > 1 Función que calcula un término especificado de la sucesión. natural función fib (E natural : n) natural término si n < 2 entonces término n si no entonces término fib(n-1) + fib(n-2) si devolver término 21 / 23 23 / 23 22 / 23