2º AÑO Ing. JOSE MUGETTI

Post on 06-Jan-2016

38 views 0 download

description

INGENIERIA EN SISTEMAS DE INFORMACION SINTAXIS Y SEMANTICA DEL LENGUAJE. 2º AÑO Ing. JOSE MUGETTI. LENGUAJES DE PROGRAMACION EL PROCESO DE DESARROLLO DE SOFTWARE. 1.Análisis y Especificación de Requerimientos. 2.Diseño y Especificación del Software. 3.Implementación (Codificación). - PowerPoint PPT Presentation

Transcript of 2º AÑO Ing. JOSE MUGETTI

2º AÑO2º AÑO

Ing. JOSE MUGETTIIng. JOSE MUGETTI

INGENIERIA EN SISTEMAS DE INFORMACION

SINTAXIS Y SEMANTICA DEL LENGUAJE

1.Análisis y Especificación de Requerimientos.

2.Diseño y Especificación del Software.3.Implementación (Codificación).4.Prueba.5.Mantenimiento.

LENGUAJES DE PROGRAMACION EL PROCESO DE DESARROLLO DE SOFTWARE

METODOLOGIAS DE DESARROLLO SOFTWARE Y LENGUAJES DE PROGRAMACION

• FORTRAN: NO FUE DISEÑADO PARA SOPORTAR CIERTAS • METODOLOGIAS DE DISEÑO.• Ausencia de estructuras de control de alto nivel en los primeros

Fortran.

• PASCAL: FUE DISEÑADO CON EL OBJETIVO DE SOPORTAR• DISEÑO `TOP DOWN` Y PROGRAMACION ESTRUCTURADA.

-EMPLEO DEL CONCEPTO DE “OCULTAMIENTO DE INFORMACION” (información Hiding).

-ABSTRACCION DE DATOS.

-Lenguajes orientados a la abstracción de datos:

*SIMULA 67. “CLASS” *MESA.

“MODULE” *CLU. “CLUSTER” *ADA. “PACKAGE”

La elección del método de diseño del programapuede influir en el diseño de un lenguaje, asícomo en la elección del lenguaje a utilizar

ARQUITECTURAS DE COMPUTADORAS Y LENGUAJES DE PROGRAMACION

Los lenguajes de Programación han sido restringidos a la arquitectura de Von Newman,la cual se basa en:

-Una memoria que contiene datos.-Una unidad de Control (que toma una instrucción fuera de la

memoria a la vez).-Una unidad de procesamiento.

Arquitectura de Von Newman Lenguajes Convencionales.

-Ejecución de instrucciones paso por paso.-Deposito modificable de datos (variables en el lenguaje, celda

de memoria en la maquina-fundamento matemático del Paradigma.-Gran poder expresivo.

Existen diferentes estilos de programación:

-Programación lógica.-Programación Funcional.-Programación Procedimental.-Programación Orientada a Objetos.

OBJETIVOS EN EL DISEÑO DE LENGUAJES IMPUESTOS POR EL PROCESO DE DESARROLLO DE SOFTWARE.

Las distintas metodologías de desarrollo de software tienen como objetivo generar sistemas con las siguientes caracteristicas: -Confiable. -Mantenible. -Ejecutable eficientemente.Confiabilidad: fuertemente vinculado con el requerimiento formal de corrección o exactitud.Mantenible: deberá ser sumamente sencillo introducir modificaciones al software.Ejecutable eficientemente: atributo vinculado tanto con el lenguaje empleado como con el algoritmo a ser usado para implementar la aplicación.

LENGUAJE Y CONFIABILIDAD

-Gran poder expresivo: permite expresar el programa en una forma natural, de acuerdo a la naturaleza del problema.

-Legitibilidad: hace sencillo seguir la lógica del programa y descubrir errores mediante la inspección del mismo.

-Manejo de excepciones: Contribuye a la confiabilidad del software. El lenguaje debe poder manejar eventos no deseados, dando respuestas a cada uno de ellos.

LENGUAJE Y MANTENIMIENTO

La exigencia de mantenimiento impone al lenguaje requisitos de legitibilidad y modificabilidad.

La característica que hace a los programas más fácilmente modificables es la posibilidad de factoreo (en el programa, la descripción de un determinado hecho se realiza en un solo lugar).

Velocidad de ejecución.-Espacio requerido.-Fácil de escribir.-Mantenible.-Optimizable.La optimización implica la posibilidad de

optimización automática.La preocupación por la optimización deberá

eliminarse de las primeras etapas de la programación.

LENGUAJE Y EFICIENCIA

GENEALOGIA DE LOS PRINCIPALES LENGUAJES DE PROGRAMACION.

LENGUAJE AÑO PROPOSITOFORTRAN 1954-57 Comp Numérica

ALGOL 60 1958-60 Comp Numérica

COBOL 1959-60 P.D.Comerciales

APL 1956-60 Proc.arrays

LISP 1956-62 Comp. Simbólica

SNOBOL4 1962-66 Proc. De Strings

PL/I 1963-64 Prop. General

SIMULA 67 1967 Simulacion Gral.

ALGOL 68 1963-68 Prop. General

Bliss 1971 Prog. De Sistemas

Pascal 1971 Gral y educacional.Prog estructurada

PROLOG 1972 Inteligencia artificial

C 1974 Prog. De Sistemas

Mesa 1974 Prog. De Sistemas

SETL 1974 Prog muy alto nivel

Concurrent Pascal 1975 Prog. Concurrente

CLU 1974-77 Met. Basada en la abstracción

Euclid 1977 Sist.Verificables

Gypsy 1977 Sist. Verificables

Módula2 1977 Prog sist., tpo real

Ada 1979 Prop.Gral.,tpo real

Smalltalk 1971-80 Ambiente personal

EVOLUCION DE LOS AMBIENTES DE APLICACIÓN DE LOS LENGUAJES DE PROGRAMACION

*Solo fase de codificación.Primeras Etapas Un Programador *Aplicación Científica. *Aplicación bien comprendida. *No había mucha necesidad de Análisis, diseño y Mantenimiento.

*Ambiente sofisticado. *Enfoque mas normal.

Actualidad Equipo Programador *Necesidad de mantenimiento.(con comunicación) *Mayores requerimientos de

confiabilidad. *Usuarios sin formación computacional.

EVOLUCION ATADA AL COMPROMISO ENTRE :

NECESIDAD DE EXPRESION DEL PROGRAMADOR RESTRICCION DEL HADWARE.

T.D.A(TIPO DE DATOS ABSTRACTOS)

-proceso mental que se extraen rasgos esenciales para ser representados.

-Técnica o metodología .

Una estructura de datos puede implementarse en cualquier lenguaje y aplicarse en cualquier concepto.

NIVELES DE LA ABSTRACCIÒN DE DATOS 1- Nivel lógico o abstracto.2- Nivel Físico o de Implementación.3- Nivel de aplicación o de uso.

ESPECIFICACION LOGICA DE UN T.D.A

1-Elementos que conforman la estructura de dato:

Ejs: números- caracteres,etc.

2-Organización de los elementos:-Lineal

-Jerarquica -Red

-Sin relaciones

3-Dominio*opcional y describe la

capacidad4-Descripción de las

operaciones de la estructura.

EVOLUCION DE CONCEPTOS EN LOS LENGUAJES DE PROGRAMACION

*ABSTRACCION DE DATOS:

ABSTRACCION DE DATOS EN LOS LENGUAJESANTIGUOS. El primer caso es para introducir abstracciones con datos fue dadoen los lenguajes de programación tales como:-FORTRAN.-COBOL.-ALGOL 60.La información almacenada en memoria es vista no como una secuencia de bits sinocomo un valor entero, un booleano o cualquier otro tipo.

-Las abstracciones de datos dependían del tipo de máquina y de la naturalezade las aplicaciones.-Los lenguajes se tornaron no apropiados para todos los propósitos y el programadorqueda limitado por el poder expresivo del conjunto de abstracciones dadas por ellenguaje.

ABSTRACCION DE DATOS EN ALGOL 68, PASCAL Y SIMULA 67.

-Se permite al programador definir nuevas abstracciones, y como consecuencia los programas se tornaron más fáciles decomprender y modificar.-Los programas tienen mayor disponibilidad de ser correctos.

Algol 68 y Pascal brindan un conjunto de tipos ya definidos y constructores (arrays, records y otros) para definir nuevostipos.Ejemplo:Pascal

Type estudiante = Recordnombre: array[1..10]of char;inicial:char;apellido:array [1…20]of estudiante

end;

curso= Recordnro_de _estudiante:0…20;asistentes: array[1…20] of estudianteend;

Var comisionA,comisionB, comisionC : curso

La variable comisionA puede verse como:

Nro_de_estudiante asistentes

10 Pablo A Pedroni

Juan B Truco

……..

………

Mario C Lopez……..

………

………

Una versión abstracta del programa que use tales estructuras de datos podría ser:

For cada conjunto de fichas con datos de los estudiantes do sea I la identificación del estudiante y A el nombre del curso Insertar I en la tabla del curso A en el orden apropiadoEnd_of_do;

Imprimir la tabla de la comisión A:Imprimir la tabla de la comisión B:Imprimir la tabla de la comisión C:

SIMULA 67: Proporciona una estructura (CLASS)que permite que la representación y las operaciones concretas puedan especificarse en una única unidad sintáctica.

EJEMPLO SIMULA 67

Class complex (x,y): real r,y;Begin real angle,radius:

radius:= sqrt(x**2 + y**2);if abs(x)<epsilon

end else angle:= arctan(y/x)end complex;

Una declaración de clase (class) tiene la forma general:<class_heading>; <class_body>

-Las abstracciones de datos dependían del tipo de máquina y de la naturaleza de las aplicaciones.

-Los lenguajes se tornaron no apropiados para todos los propósitos y el programador queda limitado por el poder expresivo del conjunto de abstracciones dadas por el lenguaje.

FACILIDADES DE LOS TIPOS DE DATOS BSTRACTOS

* Tipo predefinido integer

* Tipo definido por el usuario curso

Integer y curso son abstracciones construidas sobre una representación interna, una cadena de bits para integer y un registro(record) para curso.

Integer y curso tienen asociado un conjunto de operaciones aritméticas, de comparación de unentero, inserción e impresión de un curso.

Los tipos predefinidos difieren de los definidos por el usuario:En los primeros la representación interna no pueda manipularse directamente y por otra parteprocedimientos tales como insertar e imprimir no son los únicos que pueden manipular un curso:Por ejemplo:comisionA.nro_de_estudiante:= 10

Características de un tipo de dato abstracto

a)La asociación de una representación con sus operaciones concretas en una unidad del lenguaje que implementa elnuevo tipo.b)El ocultamiento de la representación del nuevo tipo para las unidades que lo van a usar.

La propiedad a) hace que la versión final del programa refleje las abstracciones identificadas durante la etapa del diseño.

La propiedad b) refuerza la distinción entre niveles de abstracción y favorece la modificabilidad.

LOS TIPOS DEFINIDOS POR EL USUARIO QUE SATIFACEN LAS PROPIEDADES A) Y B) SE DENOMINANTIPOS DE DATOS ABSTRACTOS.

Lenguajes como CLU y ADA proveer facilidades para definir TDA que satisfacen las propiedades a) y b)

Los tipos de datos abstractos esconden los detalles de la representación y orientan los accesos a los objetos abstractos a través de procedimientos.

ABSTRACCION DE CONTROL

EVOLUCION DE LAS ESTRUCTURAS DE CONTROL

Las estructuras de control describen el orden en el cual las sentencias o grupos de sentencias sonejecutadas.

Clasificacion:*Estructuras de Control a Nivel de Sentencia. *Estructuras de Control a Nivel de Unidad.

Las primeras ordenan la activación de sentencias individuales.Las segundas ordenan la activación de unidades de programa.

ESTRUCTURAS DE CONTROL A NIVEL DE SENTENCIAMecanismos para gobernar el flujo de control de las instrucciones individuales del hardware convencional:• “sequencing” (secuenciacion).• “branching”(salto).

Secuencia: almacen en posiciones consecutivas de memoria las instrucciones a ser ejecutadas una después de otra.Ejemplo: trozo programa Pascal:……………..Writeln(‘Listado ejemplo archivo Personas’);Writeln(‘----------------’);Cont:=;Assing(personas,’c:\personas’);Reset(personas);……………….

Salto: permite realizar la transferencia de control a una posición especifica distinta de la siguiente en secuencia.El uso de estas estructuras produce programas difíciles de leer y de mantener.

ejemplo: trozo de programa Cobol:………..Perform proceso until (fin=‘s’) or(contador>100)if fin=‘s’ go to finalElse go to sigo.Proceso. ………Sigo. ……..Final. Stop run.

EVOLUCION DE LAS ESTRUCTURAS DE CONTROL A NIVEL DE UNIDADES SUBPROGRAMAS Y BLOQUES

*poderosas herramientas para la programación estructurada.*permite agrupar sentencias que representen una acción abstracta en una adecuada unidad de programas(subprogramas).*un subprograma soporta la distinción entre la definición de una acción abstracta (el cuerpo del subprograma) y el uso de este (la llamada al subprograma).

Ejemplo:Declaración del subprograma: Llamada al subprograma :

Subprograma S(P1,P2……Pn) call S(R1,R2……Rn) .………End s

MANEJO DE EXCEPCIONES *eventos usuales o excepcionales.*Excepcionales:

*division por cero. *un puntero sale de rango. *error de protocolo durante una transmision.

*dividir el programa en multiples unidades para manejar los eventos normales y poderr detectar las anomalias oexcepciones.*PL/I1er lenguaje de alto nivel que provee caracteristicas para el manejo de excepciones.*otros: Mesa,CLU,ADA.

CORRUTINAS

Los subprogramas convencionales están subordinados a sus llamadores y cuando terminan retornan al llamador.Los subprogramas convencionales son pueden describirse como unidades que proceden concurrentemente (simulacióndiscreta).Las corrutinas son unidades simétricas que activan explícitamente unas a otras y no devuelven el control sino que cadauna reanuda a la siguiente.

UNIDADES CONCURRENTESLas corrutinas son adecuadas para modelar actividades que van ocurriendo en forma intercalada.En muchas aplicaciones es necesario un conjunto de unidades, llamadas unidades concurrentes, cuyo flujo avanza enparalelo.La descripción de unidades concurrentes permite la abstracción del equipo en el cual se correrá el sistema, el cual puedeser un multiprocesador ejecutando las unidades independientemente o un monoprocesador con multiprogramación.

Ejemplo de corrutina:Corrutina del jugador i

PROGRAMA CORRECTO

UN PROGRAMA ES C ORRECTO SI CUMPLE SUS ESPECIFICACIONES

La adopción de herramientas adecuadas y sistemáticas en la etapa del diseño ayuda a prevenir la aparición de errores.

Las abstracciones de datos y de control son poderosos mecanismos que permiten dominar la complejidad del diseño de un programa.

Existen dos enfoques distintos para la producción de programas correctos: Corrección de errores. (modificar un programa ya escrito) Prevención de errores ( desarrollar un programa correcto desde el primer

momento)

Los primeros lenguajes no reconocen la necesidad de características que soporten la corrección de los programas.

Los lenguajes mas recientes han sido diseñados con el objetivo de soportarm comprobaciones exhaustivas.

LENGUAJE, SINTAXIS Y SEMÁNTICA

LENGUAJE: Medio de comunicación entre los seres humanos.Español, Inglés, Chino, etc. Los lenguajes que usamos para instruir a los COMPUTADORES se denominan:LENGUAJES DE PROGRAMACIÓN  FORTRAN, COBOL, PASCAL, C, LISP, PROLOG, SMALLTALK, ..., etc. 

LENGUAJE

VOCABULARIO DE SÍMBOLOS REGLAS PARA FORMAR FRASES

Todos los Lenguajes tienen su SINTAXIS y su SEMÁNTICA.    SINTAXIS: Se refiere a la FORMA del Lenguaje.    SEMÁNTICA: se refiere al SIGNIFICADO de las oraciones (o sentencias) del

lenguaje. 

SINTAXIS

LENGUAJES DE PROGRAMACIÓN

SÍMBOLOS DE UN LENGUAJE DE PROGRAMACIÓN.

Palabras claves Identificadores Literales Operadores Signos de puntuación etc.

  Los símbolos permiten formar: 

Frases Expresiones Declaraciones Comandos Programas.

SEMÁNTICACASAsignifica un tipo particular de construccionesVERDEsignifica un color particular¿Cuál es el significado de "La casa verde" ?  SEMÁNTICA DE LOS LP El significado de una frase en un programa es el cómputo que ésta describe. El significado de una expresión es el cómputo que produce un valor. El significado de un comando es el computo que modifica variables. El significado de una declaración es el cómputo que produce vinculación. Ejemplos:

n+1 produce un valor m := n+1 modifica la variable const n = 5 produce vinculación

ESPECIFICACIÓN DE LOS LP La especificación define el conjunto de programas expresados en el lenguaje y el

significado de cada programa.  Existen métodos de especificación formales e informales de los Lenguajes de

Programación.   Especificación informal: expresadas en palabras, en lenguaje natural.   Especificación formal: expresada en una notación especial cuyo significado se

conoce de manera precisa, completa y sin ambigüedad.

 

ESPECIFICACIÓN DE LA SINTAXIS:BACKUS-NAUR FORM (BNF)

 El lenguaje de programación ALGOL 60 fue definido con una gramática libre de

contexto desarrollada por John Backus.  Este método conocido como BNF o LA FORMA BACKUS NAUR permite definir la

sintaxis de un lenguaje de manera clara y compacta.

Ejemplos  While_Command::= While Expression do Command Identifier ::= Letter | Identifier Letter

| Identifier _ Letter Operator ::= + | - | * | /

ESPECIFICACIÓN DE LA SEMÁNTICA

Semántica Operacional del comando while en el Lenguaje Pascal:  "While E do C "  (1) Evalúa la expresión E, produciendo un valor de verdad. (2) si el valor de verdad es verdadero ejecuta el comando C; y luego repite desde (1). (3) si el valor de verdad es falso, termina.

 

- Semántica Denotacional del comando While en Pascal:

 execute [while E do C] =let execute_while env sto =

if evaluate E env sto = Truth_value true then execute_while env (execute C env sto)else sto

inexecute_while

  La detonación del comando while es la función execute_while, la cual está definida

recursivamente de la siguiente manera: - E es evaluado en sto, dando un valor de verdad. - si el valor de verdad es verdadero, C es ejecutado en sto, y execute_while es

aplicado en el almacenamiento resultante. - si el valor de verdad es falso, execute_while da sto como resultado.

•SINTAXIS - GRAMÁTICA FORMALGRAMÁTICAS LIBRES DE CONTEXTO

  CONJUNTO DE SÍMBOLOSALFABETO DEL LENGUAJE  SENTENCIASTRING (CADENA)(Secuencia de símbolos) Una gramática satisfactorio para un Lenguaje de Programación debe permitirnos

discernir por un procedimiento mecánico si una secuencia arbitraria de símbolos es un programa "bien conformado".

  

GRAMÁTICAS LIBRES DE CONTEXTO

COMPONENTES FUNDAMENTALES  SÍMBOLOS TERMINALES SÍMBOLOS NO TERMINALES SÍMBOLO DE COMIENZO REGLAS GRAMATICALES

Un ejemplo del lenguaje Inglés: una regla especifica como construir una oración de la siguiente manera:

 "I see the cat." Esta oración consiste de un sujeto, un verbo, un objeto y un punto. Símbolos terminales: cat I see the .Símbolos no terminales: Oración, Sujeto, Verbo, Objeto, Sustantivo.símbolo de comienzo: OraciónReglas de producción gramaticales. Oración ::= Sujeto Verbo Objeto . Sujeto::= IObjeto::= the SustantivoSustantivo::= catVerbo::= see

 

La notación ::= se lee: "está definida como"  Por lo tanto: Una oración está definida como un sujeto, seguido por un verbo, un objeto y un .

(punto). 

"I see the cat."

Para formalizar la noción de gramática decimos que una gramática libre de contexto es una cuaterna

 G = (T, N, S, P) dondeT: es un conjunto finito de símbolos terminales.N: es un conjunto finito de símbolos no terminales.S: es un símbolo de comienzo.P: es un conjunto finito de reglas de producción. Se requiere que: TN = y S N. Cada regla de producción en P es escrita en la forma N :: = , donde N N es un símbolo no

terminal y (T N)* es una cadena de símbolos terminales y no terminales.    

Si N :: = , N :: = , N::= usamos la notación   N :: = | |   donde la notación | es leída como "o".   La gramática de un Lenguaje consiste en un conjunto de reglas tales que todo símbolo

no terminal esté definido con otras reglas BNF, y todos los símbolos terminales sean símbolos validos del lenguaje.

Ejemplo: Calculadora de mano        - comandos: ‘3 * 9 =’ , ‘40 - 3 * 9 =’ - expresiones: ‘3 * 9’, ‘40 - 3’, ‘40 -3 * 9’

 - números: ‘3’, ‘40’ - dígitos simples: ‘0’, ‘1’, ....., ‘9’. 

- Reglas de Producción:  Comando ::= Expresión = Expresión ::= Número

| Expresión + Número | Expresión - Número | Expresión * Número

 Número ::= Dígito

| Número Dígito Dígito ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Tiras y LenguajesSi tenemos un alfabeto de vocabularios (a,b), algunas tiras son:

λ, a, b, ab, aaa, aab, aba, abb

λ = tira nula

Si x= abc y z= deac la concatenación xz = abcdeacλ x = x λ = x = abc

Longitud de una tira | λ| = 0 | a| = 1 |abcd| = 4 Potencia de una tira x0 = λ x1 = abc x2 = abcabc

Producto cartesiano AB = {xy / (x € A) and (y € B)}

Si A = { a, b, ca} , B= { d, e}AB = { ad, ae, bd, be, cad, cae}

A . {λ} = {λ} . A = AA0 = {λ} A1 = A A2 = A . A

Si A = { a, b} entonces:

A0 = {λ}

A1 = A = { a, b}

A2 = A . A = {aa, ab, ba, bb}

A3 = A . A . A = { aaa, aab, aba, abb, baa, bab, bba, bbb}

A+ = A0 U A1 U A2 U A3 U A4 … UAn (cierre transitivo)

A* = A+ U A0 = A+ U {λ} (cierre transitivo y reflexivo)

Descripción de un lenguajeL1 = { ab, ac, ba, ca} = enumeración

L1 = { an | n € N} = Derivación algebraica

L2 = { an bn | n € N+}

Conjunto con una propiedad (Para decidir si una tira pertenece o no pertenece al lenguaje ejs V = { a, b, c, d}

L1 { x | (|x| = 3) and ( x € V*)} Lenguaje definido con vocabulario “V” de tiras que tengan tres caracteres – algunas de ellas tiras son: aaa, aab, aba, abb, etc…

GRAMÁTICAS

(N, T, P, S)

G1 = ( { S} , { a, b} , P , S ) N T

Reglas de derivación para lenguajes y algunas de ellas son:

S -> ab S -> aSb

GRAMÁTICAS DE CONTEXTO LIBREDerivación:

L (G) = {x | ( S => * x ) and ( x € T*)}

X = símbolos terminales o sentencias del lenguajeT* = todas las tiras posibles, incluyendo la nulaS => *x = Derivaciones directa de S para llegar a x

Ejs: G1 S => aSb -> aaSbb -> aaabbb

Cumple axiomaS -> * xFormas sentenciales

Solo esta cumpleX incluida T*

D (G) = α | (S => * α ) and € (N U T)* } -> formas sentenciales

Al desaparfecer N en el “cierre transitivo reflexivo”

T* = T + U λ solo quedan las cadenas de terminales

Árboles de derivación

derivación izquierda derivación derecha

ÁRBOLES DE SINTAXISCONTINÚA EN MODULO 2