PARADIGMAS DE PROGRAMACIÓN

28
PARADIGMAS DE PARADIGMAS DE PROGRAMACIÓN PROGRAMACIÓN José Oscar Mugetti Mare José Oscar Mugetti Mare 2do. Año Ing. En Sistemas de Información U.T.N. - Facultad Regional San Francisco

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 Presentation

Transcript of PARADIGMAS DE PROGRAMACIÓN

Page 1: PARADIGMAS DE PROGRAMACIÓN

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

Page 2: PARADIGMAS DE PROGRAMACIÓN

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.

Page 3: PARADIGMAS DE PROGRAMACIÓ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.

Page 4: PARADIGMAS DE PROGRAMACIÓN

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

Page 5: PARADIGMAS DE PROGRAMACIÓN

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

Page 6: PARADIGMAS DE PROGRAMACIÓN

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

Page 7: PARADIGMAS DE PROGRAMACIÓ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

Page 8: PARADIGMAS DE PROGRAMACIÓ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

Page 9: PARADIGMAS DE PROGRAMACIÓN

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)) )) )

Page 10: PARADIGMAS DE PROGRAMACIÓ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”

Page 11: PARADIGMAS DE PROGRAMACIÓN

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

Page 12: PARADIGMAS DE PROGRAMACIÓN

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!

Page 13: PARADIGMAS DE PROGRAMACIÓ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

Page 14: PARADIGMAS DE PROGRAMACIÓN

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

Page 15: PARADIGMAS DE PROGRAMACIÓN

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”

Page 16: PARADIGMAS DE PROGRAMACIÓN

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) ) )

Page 17: PARADIGMAS DE PROGRAMACIÓN

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 ) )

Page 18: PARADIGMAS DE PROGRAMACIÓN

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

Page 19: PARADIGMAS DE PROGRAMACIÓN

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

Page 20: PARADIGMAS DE PROGRAMACIÓN

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 ...

Page 21: PARADIGMAS DE PROGRAMACIÓN

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

Page 22: PARADIGMAS DE PROGRAMACIÓN

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))

Page 23: PARADIGMAS DE PROGRAMACIÓN

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

Page 24: PARADIGMAS DE PROGRAMACIÓN

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)

Page 25: PARADIGMAS DE PROGRAMACIÓN

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

Page 26: PARADIGMAS DE PROGRAMACIÓN

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

Page 27: PARADIGMAS DE PROGRAMACIÓN

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 (...) ...

Page 28: PARADIGMAS DE PROGRAMACIÓN

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