paradigmas de programaciÓn
DESCRIPTION
PARADIGMAS DE PROGRAMACIÓN. José Oscar Mugetti Mare 2do. Año Ing. En Sistemas de Información U.T.N. - Facultad Regional San Francisco. TEMA: Especificación de algoritmos funcionales. Identificadores. Especificación con condiciones. Especificación funcional operacional. - PowerPoint PPT PresentationTRANSCRIPT
11
PARADIGMAS DE PARADIGMAS DE PROGRAMACIÓNPROGRAMACIÓN
José Oscar Mugetti MareJosé Oscar Mugetti Mare2do. Año Ing. En Sistemas de InformaciónU.T.N. - Facultad Regional San Francisco
22
TEMA: TEMA: Especificación de Especificación de algoritmos funcionalesalgoritmos funcionales Identificadores.Identificadores. Especificación con condiciones.Especificación con condiciones. Especificación funcional operacional.Especificación funcional operacional. Sub-expresiones, condicional, Sub-expresiones, condicional,
recursividad, clases de recursividad, recursividad, clases de recursividad, notación.notación.
33
OBJETIVOS:OBJETIVOS: Introducir algunas características de la Introducir algunas características de la
programación funcional.programación funcional. Caracterizar el problema como una Caracterizar el problema como una
función entre conjuntos a ser definida.función entre conjuntos a ser definida. Entender el concepto de “órden Entender el concepto de “órden
superior”, que autoriza a realizar superior”, que autoriza a realizar abstracciones sobre funciones.abstracciones sobre funciones.
44
Metodología: Lección magistral para introducir Lección magistral para introducir
información conceptualinformación conceptual Duración:
45 minutos45 minutos Recursos:
Proyecciones Proyecciones EjemplosEjemplos
Metodologías y estrategias Metodologías y estrategias docentesdocentes
55
RecordatorioRecordatorio
Paradigma funcional se basa en el concepto matemático de Paradigma funcional se basa en el concepto matemático de función: una función es una regla de correspondencia que función: una función es una regla de correspondencia que asocia a cada elemento de un conjunto origen, un elemento asocia a cada elemento de un conjunto origen, un elemento del conjunto destinodel conjunto destino
PROBLEMA
ENTRE CONJUNTOS QUE DEBEN SER DEFINIDAS
MODULARIZACION
Func
iones
Muy
adec
uado
66
RecordatorioRecordatorio
El paradigma funcional así como el lógico admiten el El paradigma funcional así como el lógico admiten el cálculo de teorías formales y el sustento de la cálculo de teorías formales y el sustento de la programación es la matemática y la lógica.programación es la matemática y la lógica.
DOMINIO RANGO
F(x)
Aplicación de la función
77
Elementos básicos de Elementos básicos de especificaciónespecificación
Objeto predefinido: Forma parte de la definición del lenguaje.
Funciones: Un algoritmo es una descripción precisa y no ambigua de un método de transformación de unos valores iniciales en unos valores finales
Identificadores: Nombre que se le da a un objeto que aparece en una especificación
88
IdentificadoresIdentificadores
Símbolos especiales predefinidos(Ej. “+”)
Formado por letras y dígitos. Pueden ser predefinidos o definidos por el usuario (Ej. Div, EsMínimo, Color_oscuro)
SIMBÓLICO
ALFANU-MÉRICO
IDENTIFICADORES
99
IdentificadoresIdentificadores Especificación de un algoritmo:
EjemploEjemplo
(Define ( (Define ( ((nombre de la función) nombre de la función) (valor de la función) (valor de la función)) )) )
1010
IdentificadoresIdentificadoresf(x) = 2* x + 1 (x) = argumento nominal de f - variable que
denota valor genérico del dominio de la función.
Imagen del valor del argumento nominal
Estructura de definiciones en forma jerárquicaEn cada definición las funciones utilizadas a la derecha se referencia por un nombre (con el cuál fue definida).Problema complejo = combinación de problemas simplesLos módulos se referencian con el nombre y no se conoce su estructura interna Nombres que no necesitan definición = “módulos primitivos”Los no primitivos se denominan “abstractos”
1111
EspecificacionesEspecificaciones
Especificación con condiciones: Expresa el problema por resolver, es decir que debe hacer la función
Especificación operacional: detalla como se resuelve el problema
1212
Especificación con Especificación con condicionescondiciones Precondición:Precondición: Definido para los valores Definido para los valores
de entradade entrada Postcondición: Postcondición: Definido para valores Definido para valores
concretos de salida a partir de la precondiciónconcretos de salida a partir de la precondiciónEjemplo: Factorial de un nº entero
n! = 1 si n =o
n (n-1)(n-2)...1 si n > 0
Precondición: que n sea un número entero
Postcondición: que devuelva un valor z = n!
1313
Especificación con Especificación con condicionescondiciones
Función parcial:Función parcial: Definida solamente Definida solamente para ciertos elementos de su dominiopara ciertos elementos de su dominio
Función Total:Función Total: Definida sobre todo Definida sobre todo el dominio (generalmente éstas carecen el dominio (generalmente éstas carecen de precondición)de precondición)
La precondición y la poscondición son La precondición y la poscondición son sentencias lógicas cuyas únicas variables libres sentencias lógicas cuyas únicas variables libres son los parámetros formales. Implícitamente son los parámetros formales. Implícitamente estos parámetros están cuantificados estos parámetros están cuantificados universalmenteuniversalmente
1414
Especificación funcional Especificación funcional operacionaloperacional Describe un algoritmo y por lo tanto consta de una Describe un algoritmo y por lo tanto consta de una
funciónfunción
<cabecera>
<cuerpo>
Funcional = funciónfunción
Se describe a partir de datos genéricos
Encerrados entre ( )
Parámetros formales
EjemploEjemplo
1515
Especificación funcional Especificación funcional operacionaloperacional
Sintaxis única, escrita en Sintaxis única, escrita en metalenguaje metalenguaje
Los programas en Scheme no Los programas en Scheme no tienen “tipos”tienen “tipos”
1616
Especificación funcional Especificación funcional operacionaloperacional
Definición de funciones:Definición de funciones:(Define ((Define (nombre función)(valor función)nombre función)(valor función)))(Lambda (x) ( * x x )(Lambda (x) ( * x x )Podríamos así definir la función Podríamos así definir la función cuadrado:cuadrado:(Define cuadrado (lambda (x) (* x x) ) )(Define cuadrado (lambda (x) (* x x) ) )
1717
Especificación funcional Especificación funcional operacionaloperacional
Constantes: Constantes: (define constante? number?)(define constante? number?)(define (deriva_constante x E) 0 )(define (deriva_constante x E) 0 ) Variables:Variables:(define variable? symbol?)(define variable? symbol?)(define (deriva_variable x E)(define (deriva_variable x E)
if (equal? x E) 1 0 ) )if (equal? x E) 1 0 ) )
1818
Especificación funcional Especificación funcional operacionaloperacional
Condicionales:Condicionales: number?number? Verifica si el argumento es un Verifica si el argumento es un
númeronúmero symbol?symbol? Verifica si el argumento es un símbolo Verifica si el argumento es un símbolo equal?equal? Verifica si los argumentos son Verifica si los argumentos son
estructuralmente igualesestructuralmente iguales
1919
Especificación funcional Especificación funcional operacionaloperacional
Quote:Quote: es necesario para que las es necesario para que las expresiones sean tratadas como datosexpresiones sean tratadas como datos
(Define ejemplo ‘(+ 2 3) )(Define ejemplo ‘(+ 2 3) ) Listas: Listas: Es una secuencia de cero o más Es una secuencia de cero o más
valores, una lista se escribe encerrándola valores, una lista se escribe encerrándola entre paréntesis; puede existir una lista entre paréntesis; puede existir una lista vacíavacía la lista puede considerarse como una cabeza y la lista puede considerarse como una cabeza y
el resto de la listael resto de la lista
EjemploEjemplo
2020
Especificación funcional Especificación funcional operacionaloperacional Operaciones sobre listas:Operaciones sobre listas: (null? X) Verdadera si la lista es vacía(null? X) Verdadera si la lista es vacía (car x) El primer elemento de la lista no vacía(car x) El primer elemento de la lista no vacía (cdr x) El resto de la lista luego del 1er. Elemento(cdr x) El resto de la lista luego del 1er. Elemento (cons a x) Constructor de listas(cons a x) Constructor de listas Algunas funciones sobre listas:Algunas funciones sobre listas: LongitudLongitud AgregarAgregar EliminarEliminar CompararComparar Invertir ...Invertir ...
2121
Especificación funcional Especificación funcional operacionaloperacional
Función map: Función map: Función que hace cambio Función que hace cambio de los elementos de una lista mientras los copiade los elementos de una lista mientras los copia
Funciónes de órden superior: Funciónes de órden superior: Sus Sus resultados son los parámetros reales utilizados resultados son los parámetros reales utilizados para convocar a nuevas funcionespara convocar a nuevas funciones
2222
SubexpresionesSubexpresiones
Se utiliza la notación en las cuales existe el Se utiliza la notación en las cuales existe el paréntesis alrededor del operador y sus paréntesis alrededor del operador y sus operandos.operandos.
Ejs.: ( 4 + ( 5 * 4) ) = 24Ejs.: ( 4 + ( 5 * 4) ) = 24Proporciona así una sintaxis simple a costa de la Proporciona así una sintaxis simple a costa de la
proliferación de paréntesisproliferación de paréntesis
SUBEXPRESIONES (paréntesis (entre paréntesis))SUBEXPRESIONES (paréntesis (entre paréntesis))
2323
CondicionalCondicional
Elige entre dos valores posiblesElige entre dos valores posibles<condición> <expresión1> |<expresión2><condición> <expresión1> |<expresión2> con true la 1º con false la 2ºcon true la 1º con false la 2ºEjs: Función Max (x , y)Ejs: Función Max (x , y)
if (> x y)if (> x y) xx
yy
2424
NotaciónNotación
Notación infija: Notación infija: paradigma imperativoparadigma imperativoif b then v1 else v2if b then v1 else v2
Notación prefija: Notación prefija: paradigma funcionalparadigma funcionalif_then_else (b v1 v2)if_then_else (b v1 v2)
2525
RecursividadRecursividad Función definida en términos de Función definida en términos de
sí mismasí misma(Define factorial (Define factorial
Lamda (x) (if (equal? x 1)Lamda (x) (if (equal? x 1)11( * x (factorial (- x 1) ) ) ) )( * x (factorial (- x 1) ) ) ) )
Valor del parámetro básico o elemental . Valor del parámetro básico o elemental . Cuando llega allí la función no recurreCuando llega allí la función no recurre
Cada recursividad debe afectar a Cada recursividad debe afectar a parámetros que lo acerque al parámetro parámetros que lo acerque al parámetro básicobásico EjemploEjemplo
2626
Clases de recursividadClases de recursividad
Recursividad lineal:Recursividad lineal: El cuerpo de la El cuerpo de la función contiene una llamada recursivafunción contiene una llamada recursiva
Recursividad no lineal:Recursividad no lineal: El cuerpo de El cuerpo de la función contiene varias llamadas la función contiene varias llamadas recursivarecursiva
Recursividad mutua:Recursividad mutua: La función no La función no contiene ninguna llamada recursiva, pero contiene ninguna llamada recursiva, pero en la evaluación surgen llamadas en la evaluación surgen llamadas recursivasrecursivas
2727
Clases de recursividadClases de recursividad
Ejemplo de recursividad mutua:Ejemplo de recursividad mutua:Función F (...) ...Función F (...) ... ... G (...) ...... G (...) ...
Función G (...) ...Función G (...) ... ... F (...) ...... F (...) ...
2828
No hay conclusión. ¿Que cosa ha No hay conclusión. ¿Que cosa ha concluido, con respecto a la cual concluido, con respecto a la cual podemos llegar a una conclusión? podemos llegar a una conclusión?
No hay fortunas que puedan predecirse, ni No hay fortunas que puedan predecirse, ni consejos que puedan darse. Adiósconsejos que puedan darse. Adiós
William JamesWilliam James