Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los lenguajes de Programacin son el corazn de la Ciencia de la Computacin. Son herramientas que usamos para comunicarnos con las mquinas y tambin con las personas.
CUAL ES LA IDEA?
Introducimos analizamos y e!aluamos los conceptos ms importantes de los lenguajes de programacin. Premisa !el "alor de un lenguaje o de un concepto se de#e ju$gar seg%n la &orma en 'ue a"ecta la produccin de So&t(are y a la &acilidad con la 'ue puede integrarse a otras )erramientas*
3
+U, C-.SE/UI0E1-S Ad'uirir )a#ilidad de apreciar y e!aluar lenguajes2 identi&icando los conceptos ms importantes de cada uno de ellos y sus l#mites y posibilidades 3a#ilidad para elegir para dise$ar implementar o utilizar un lenguaje En&ati$ar la abstraccin como la mejor &orma de manejar la complejidad de o#jetos y &enmenos
4
PA0A +U, ES4UDIA0 C-.CEP4-S DE LE./UA5ES 6 Aumentar la capacidad para producir so&t. 6 1ejorar el uso del lenguaje 6 Incrementar el "oca#ulario 6 Elegir mejor un lenguaje 6 7acilitar el aprendi$aje de nue"os lenguajes 6 7acilitar el dise8o e implementacin de lenguajes
5
C%I&'%I(S P)%) '*)L+)% L(S L',-+).'S /' P%(-%)0)CI(, Para poder evaluar los lenguajes necesitamos
establecer criterios de evaluacin. Objetivos de diseo:
Simplicidad y legibilidad laridad en los bindings on!iabilidad Soporte "bstraccin #rtogonalidad $!iciencia
Sint9is y Semntica
Un lenguaje de programacin es una notacin &ormal para descri#ir algoritmos a ser ejecutados en una computadora Lenguaje de programacin
Sinta9is Semntica
Sint9is y Semntica
/e"iniciones.
Sint9is Conjunto de reglas 'ue de&inen como componer letras2 d:gitos y otros caracteres para &ormar los programas Semntica Conjunto de reglas para dar signi&icado a los programas sintcticamente "lidos.
v% array &1..1'( o! integer) y ******** en Pascal
Sint9is y Semntica
La de&inicin de la sint9is y la semntica de un lenguaje de programacin proporcionan mecanismos para 'ue una persona o una computadora pueda decir
Sint9is
Caracter#sticas de la sint1is
La sint9is de#e ayudar al programador a escri#ir programas correctos sintcticamente La sint9is esta#lecen reglas 'ue sir"en para 'ue el programador se comuni'ue con el procesador La sint9is de#e contemplar soluciones a caracter:sitcas tales como
Sint9is
Caracter#sticas de la sint1is
La sint9is de#e ayudar al programador a escri#ir programas correctos sintcticamente La sint9is esta#lecen reglas 'ue sir"en para 'ue el programador se comuni'ue con el procesador La sint9is de#e contemplar soluciones a caracter:sitcas tales como
Sint9is
La sint9is esta#lece reglas 'ue de&inen cmo de#en com#inarse las componentes #sicas2 llamadas 23ord42 para &ormar sentencias y programas.
'lementos de la sint1is
Al&a#eto o conjunto de caracteres Identi&icadores -peradores Pala#ra cla"e y pala#ra reser"ada Comentarios y uso de #lancos
'structura sintctica
Sint9is
*ocabulario o 3ords
Conjunto de caracteres y pala#ras necesarias para construir e9presiones2 sentencias y programas. Ej identi&icadores2 operadores2 pala#ras cla"es2 etc. Las (ords no son elementales se construyen a partir del al&a#eto
'1presiones
Son &unciones 'ue a partir de un conjunto de datos de"uel"en un resultado. Son #lo'ues sintcticos #sicos a partir de los cuales se construyen las sentencias y programas Componente sintctico ms importante. 4iene un &uerte impacto en la &acilidad de escritura y legi#ilidad 3ay sentencias simples2 estructuradas y anidadas.
Sentencias
Sint9is
0eglas l<9icas Conjunto de reglas para &ormar las 23ord42 a partir de los caracteres del al&a#eto 0eglas sintcticas Conjunto de reglas 'ue de&inen como &ormar las 2e1presiones4 y 2sentencias4
$l -! en no lleva ./t0en//1 en Pascal si
La di&erencia entre l<9ico y sintctico es ar#itrario2 dan la apariencia e9terna del lenguaje
Sint9is
0eglas l<9icas Conjunto de reglas para &ormar las 23ord42 a partir de los caracteres del al&a#eto 0eglas sintcticas Conjunto de reglas 'ue de&inen como &ormar las 2e1presiones4 y 2sentencias4
$l -! en no lleva ./t0en//1 en Pascal si
La di&erencia entre l<9ico y sintctico es ar#itrario2 dan la apariencia e9terna del lenguaje
&ipos de Sint1is
Sint9is
)5S&%)C&)
Se re&iere #sicamente a la estructura Se re&iere #sicamente a la parte l<9ica Se re&iere #sicamente al uso prctico
C(,C%'&)
P%)-06&IC)
Sint9is
Son di&erentes respecto a la sint1is concreta2 por'ue e9isten di&erencias l<9icas entre ellas Son iguales respecto a la sint1is abstracta2 ya 'ue am#as tienen la misma estructura
()ile condicin #lo'ue
Sint9is
'j@. 8'n C y Pascal AB o beginCend pueden omitirse si el bloque esta compuesto por una sola En Modula: sentencia If x=y then 8 -------3hile 91>?y: 1?yD; 8Pragmticamente puede conducir a error ya
end
'ue si se necesitara agregar una sentencia de#e agregarse el #egin end o las EG.
Sint9is
Se necesita una descripcin &inita para de&inir un conjunto in&inito =conjunto de todos los programas #ien escritos> 7ormas para de&inir la sinta9is
Lenguaje natural. Ej. 7ortran Utili$ando la gramtica li#re de conte9to2 de&inida por IacJus y .aun I.7. Ej Algol Diagramas sintcticos son e'ui"alentes a I.7 pero muc)o mas intuiti"os
Sint9is
<
77?
De&ine las reglas por medio de !producciones* Ejemplo < digito = 77? KLMLNLOLPLQLRLSLTLU
-ramtica
Sint9is
Conjunto de reglas &inita 'ue de&ine un conjunto in&inito de posi#les sentencias "lidas en el lenguaje. Una gramtica esta &ormada por una PFtupla - ? 9 , & S P:
Conjunto de producciones Conjunto de s:m#olos terminales S:m#olo distinguido de la gramtica 'ue pertenece a .
6rboles sintcticos
Sint9is
!5uan el un manta* Es una oracin sintcticamente incorrecta .o todas las oraciones 'ue se pueden armar con los terminales son "lidas Se necesita de un 0todo de anlisis 9reconocimiento: 'ue permita determinar si un string dado es "alido o no en el lenguaje Parsing. El parse para cada sentencia construye un 2rbol sintctico o rbol de deri!acin4
Sint9is
0todo bottonCup
De i$'uierda a derec)a De derec)a a i$'uierda De i$'uierda a derec)a De derec)a a i$'uierda
0todo topCdo3
6rbol de deri!acin7
Ejemplo topFdo(n de i$'uierda a derec)a CoracinD BD CsujetoDCpredicadoD BD 5uan CpredicadoD BD 5uan C"er#oDCo#jetoD BD 5uan compra Co#jetoD BD 5uan compra artDCsustanD BD 5uan compra un CsustanD
Sint9is
BD 5uan compra un perro Los compiladores utili$an el parse cannico 'ue es el #ottomFup de i$'uierda a derec)a
Producciones recursi!as7
Son las 'ue )acen 'ue el conjunto de sentencias descripto sea in&inito Ejemplo de producciones recursi"as CnaturalD B CdigitoD L CdigitoDCdigitoD L ....... L CdigitoD..............CdigitoD Si lo planteamos recursi"amente
Sint9is
/. B = .2 42 S2 P> . B E CnaturalD2 CdigitoD GV4 B E K2 M2 N2 O2 P2 Q2 R2 S2 T2 U GV S B CnaturalD P B ECnaturalD B CdigitoD L CdigitoD CnaturalD2 CdigitoD B K L M L N L O L P L Q L R L S L T L UG
Cual'uier gramtica 'ue tiene una produccin recursi"a descri#e un lenguaje in"inito.
Producciones recursi!as7
Sint9is
La asociati"idad es por la i$'uierda El s:m#olo no terminal de la parte i$'uierda de una regla de produccin aparece al comien$o de la parte derec)a La asociati"idad es por la derec)a El s:m#olo no terminal de la parte i$'uierda de una regla de produccin aparece al &inal de la parte derec)a
-ramticas ambiguas7
Sint9is
Una gramtica es am#igua si una sentencia puede deri"arse de mas de una &orma
/B = .2 42 S2 P> V. B E CidD2 Ce9pD2 CasigDG V4 B E A2I2C2 W2X2F2Y2 BG VS B CasigD VPM B E CasigD B CidD B Ce9pD Ce9pD B Ce9pDWCe9pDLCe9pDXCe9pDLCe9pDF Ce9pDL Ce9pDY Ce9pDLCidD CidD B A L I L C recursin G
Subgramticas7
Sint9is
V. B E CidD2 CletraD2 CdigitoD2 CotroDG V4 B E A2 ................2 Z2 K2 ........2 MG VS B CidD VP B E CidD B CletraD L CletraDCotroD2 CotroD B CletraD L CdigitoD L CletraDCotroD L CdigitoDCotroD2 V CletraD B A L I L C L .............L Z CdigitoD B K L M L N L LU G
Para de&inir la gramtica /E2 de e9presiones2 se puede utili$ar la gramtica de n%meros y de identi&icadores. /E se de&ir:a utili$ando las subgramticas /. y /I V*La &iloso&:a de composicin es la &orma en 'ue tra#ajan los compiladores*
Sint9is
Seg%n nuestra gramtica son sentencias sintcticamente "lidas2 aun'ue puede suceder 'ue a "eces no lo sea semnticamente.
Una gramtica li#re de conte9to es a'uella en la 'ue no reali$a un anlisis del conte9to. Una gramtica sensi#le al conte9to anali$a este tipo de cosas. =Algol RT>.
Sint9is
'5,E. Esta gramtica es la 5,E e1tendida Los metasim#olos 'ue incorporados son
8 H I elemento optati!o puede o no estar 8 9G: seleccin de una alternati!a 8 AB repeticin J K o mas !eces D una o mas !eces
Sint9is
Sint9is
Es un gra&o sintctico o carta sintctica Cada diagrama tiene una entrada y una salida2 y el camino determina el anlisis. Cada diagrama representa una regla o produccin Para 'ue una sentencia sea "lida2 de#e )a#er una camino desde la entrada )asta la salida 'ue la descri#a. Se "isuali$a y entiende mejor 'ue I.7 o EI.7
Sint9is
Sint9is
nTmero
'jemplos7
K ; @ N O P Q R S S
d#gito
d#gito
identi"icador letra letra secuencia letra d#gito letra d#gito Programa A Sentencia B secuencia secuencia