Publicado el 11 de Abril del 2018
379 visualizaciones desde el 11 de Abril del 2018
236,6 KB
26 paginas
Creado hace 12a (07/11/2011)
Capítulo6. AsociacionesyDeclaraciones.
LenguajesdeProgramación
CarlosUreñaAlmagro
Curso2011-12
Contents
1 Asociaciones,entornosyámbitos
2 Declaracionesydefiniciones
3 Definicionesdevalores,tiposyvariables
4 DeclaracionesSimples
.
.
.
.
.
.
.
4.1 Declaracionesdetipos.
4.2 Declaracionesdevariables .
.
.
.
.
5 Declaracionescompuestas
.
.
.
.
.
.
.
5.1 Composiciónsecuencial
5.2 Composicióncolateral
.
.
.
.
.
.
.
6 Declaracionesrecursivas
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
6
7
14
14
17
21
21
21
22
1
1 ASOCIACIONES,ENTORNOSYÁMBITOS
1 Asociaciones,entornosyámbitos
Elconceptodeasociación
Unaasociaciónesunarelaciónestablecidaentreunidentificadoryunaentidadenunprograma.
(laentidadpuedeser: unvalor,unavariable,unasentencia,unsubprograma,untipooclase,unaexcepción,
unmóduloodeclaración,unadeclaracióngenérica,unahebraotarea,etc...)
Significadoeinterpretación
• Siexisteunaasociaciónentreunidentificador idyunaentidad e,decimosque:
– ideselnombrede e
– eeselsignificadode id
• Alprocesodeencontrarlaentidadqueconstituyeelsignificadodeunidentificadordadoseledenomina
interpretacióndelidentificador.
Asociaciones: Aliasingysobrecarga
• Enalgunoscasos,unaentidadpuedetenermásdeunnombre(estosedenominaaliasing,ysedice
queelnombrenuevoesunaliasdeloriginal).
• Enalgunoscasosunidentificadortenermásdeunsignificado,aestosedenominasobrecarga.
• Cuando hay sobrecarga, la selección del significado de una aparición del identificador se realiza
teniendoencuentaelcontextodedichaaparición. Porahorasupondremosqueestonoocurre.
Elconceptodeentorno
• Unentornoesunconjuntodeasociacionesquerelacionanunaovariasentidadesconunoovarios
identificadores.
• Enentornosdistintos,unidentificadorpuedetenersignificadosdistintososimilares
Entornosdelaspartesdeunprograma
• Enunprogramadado, cadasentencia(cadavezqueseejecuta)ycadaexpresión(cadavezquese
evalúa)tienenasociadounentorno
• El entorno de una sentencia o expresión indica que identificadores se pueden usar en ella y que
significadotienen.
2
1 ASOCIACIONES,ENTORNOSYÁMBITOS
Entornosdelaspartesdeunprograma
Elentornodeunasentenciaoexpresiónesposiblementedistintoen:
• distintasejecucionesdelprograma
• distintasejecucionesdeunasentencia
• distintasevaluacionesdelaexpresión
Esquemasdeasociación
Haydosformasposiblesdeentenderlasasociaciones:
• Esquemadeasociacióndinámica
• Esquemadeasociaciónestática
Cadaunaserefiereaunaformadeinterpretarlosidentificadoreslibresenelcuerpodeunsubprograma.
Asociaciónestática
Losidentificadoreslibresdeunsubprogramaseinterpretanenelentornodeladeclaracióndedichosub-
programa
Normalmente,laasociaciónestáticaimplicaquelainterpretacióndelosidentificadoressehaceentiempo
decompilación.
Asociacióndinámica
Losidentificadoreslibresdeunsubprogramaseinterpretanenelentornodelallamadaadichosubprograma
Normalmente,laasociacióndinámicaimplicaquelainterpretacióndelosidentificadoressehaceentiempo
deejecución.
Característicasdelaasociaciónestática:
• LaasociaciónestáticaeslaqueseusaenlenguajescomoPascal,Ada,C/C++,JavayC#.
• Elentornodecadasentenciaoexpresióndeunprogramaesigualentodaslasejecucionesoevalua-
ciones,ypuedeserconocidosinejecutarlo.
• Sueledarseenlenguajesqueasignanuntipoúnicoavariablesyexpresiones.
3
1 ASOCIACIONES,ENTORNOSYÁMBITOS
libre
; }
; }
; } # ’x’
; escribex()
; escribex()
; # x de tipo entero en ’escribex’
; # x de tipo cadena en ’escribex’
Característicasdelaasociacióndinámica:
• LaasociacióndinámicaseusaenlenguajescomoPerl,PHP,TCLoPython
• Elentornodeunasentenciaoexpresióndeunprogramapuedevariarentreejecucionesoevaluaciones
(solosepuedeconoceralejecutarelprograma)
• Sueledarseenlenguajesquenoasignanuntipoúnicoavariablesoexpresiones.
EjemplodeasociacióndinámicaenPerl
Esteprogramaescribe"1234"y"hola",nótesecomodentrodelsubprograma escribex,elsignificadodel
identificador xseencuentraenelentornodelallamadaa escribex
sub escribex { print $x,"\n"
sub uno { local $x = 1234
sub dos { local $x = "hola"
uno()
dos()
EjemplodeasociaciónestáticaenC++
Esteprogramaescribe"hola",dosveces. Enestecasoelsignificadode xdentrode escribexseencuenta
enelentornodeladeclaraciónde escribex
char ∗ x = "hola"
void escribex { cout << x
; }
libre en ’escribex’
x = 1234 ; escribex()
void uno() { int
void dos() { char x = ’h’
; escribex()
; }
; dos()
int main() { uno()
Ámbitodeunaasociación
Supongamosunaasociaciónentreunidentificador idyunaentidad equeeselsignificadodelidentificador.
Elámbitodeunaasociaciónenunprogramasonlaspartesdeltextodelprogramatalesqueenellas,una
apariciónde idpuedeinterpretarsecomounareferenciaa e
; }
; }
;
//
’x’
4
1 ASOCIACIONES,ENTORNOSYÁMBITOS
Ámbitoestáticooámbitoléxico
Si el ámbito de una asociación se conoce a priori, y no varía entre ejecuciones, entonces se dice que la
asociacióntieneámbitoestáticooámbitoléxico.
Esteeselcasodetodaslasasociacionesenlenguajesconasociaciónestática.
Ámbitodinámico
Sielámbitodeunaasociaciónnosepuedeconocerapriori,yaquepuedevariarentreejecuciones,entonces
sedicequelaasociacióntieneámbitodinámico
Estosolopuedeocurrirenlenguajesconasociacióndinámica.
Ámbitosanidados
Enprogramaciónestructuradaesposiblequeesténanidadoslosámbitosdedosasociacionesdeunmismo
identificador:
x = 2 ;
int
void uno()
{ int
x = 1 ;
;
cout << x
}void dos()
{ cout << x
;
}
EjemplodeámbitodinámicoenPerl
• Elcuerpode escribexpertenecealámbitodelasdosasociacionesdelavariable x.
• Elentornode print $xesdistintoencadaunadelastresejecucionesdeestainstrucción
sub escribex { print $x,"\n"
sub uno { local $x = 1234
sub dos { local $x = "hola"
; }
sub tres { escribex()
uno()
tres()
;
x = 2 ;
int
{
x = 1 ;
int
cout << x
;
}cout << x
;
; dos()
; } # ’x’
; escribex()
; escribex()
libre
; }
; }
;
{
}
5
libre
; }
; }
EjemplodeámbitoestáticoenC++
• Laprimeraasociaciónde xtienecomoámbitotodoelprogramaexceptoloscuerposde unoy dos
• Lasegundayterceraasociacionesdextienencomoámbitoloscuerposdeunoydos,respectivamente.
char ∗ x = "hola"
;
void escribex() { cout << x
’x’
; } //
x = 1234 ; escribex()
void uno { int
void dos { char x = ’h’
; escribex()
int main() { uno()
; dos()
; }
2 Declaracionesydefiniciones
Elconceptodedeclaración
Unadeclaraciónesuntrozodeltextodeunprogramacuyafinalidades:
• Crearunaovariasasociaciones,indicandoelidentificadorylaentidadinvolucradaencadaunade
dichasasociaciones.
• Además,enalgunoscasos,crearalgunasotodaslasentidadesinvolucradasendichasasociaciones.
Elaboracióndedeclaraciones
• Lasasociaciones(yposiblementelasentidades)secrean,durantelaejecucióndelprograma,cuando
seelaboraladeclaraciónquelascrea.
• La elaboración de una declaración es un conjunto de acciones (que pueden afectar al estado de
ejecucióndelprograma)quetienenlugarcadavezqueelflujodecontrolentraensuámbito.
Elaboracióndedeclaraciones:
• Las elaboraciones de declaraciones pueden fallar si falla la ejecución (explícita o implicita) de las
sentenciasoaccionesasociadasalaelaboración.
• Laselaboracionestienenlugarenunestadodeejecucióndeterminado,quedependedellenguaje,el
tipodedeclaraciónyellugardondeaparecelamismaenelprograma.
2 DECLARACIONESYDEFINICIONES
6
3 DEFINICIONESDEVALORES,TIPOSYVARIABLES
Elconceptodedefinición
Unadefiniciónesuntipodedeclaraciónquenocreanuevasentidades
Unadefiniciónsoloproduceasociacionesnuevasparaentidadesqueyaexistenenelmomentodelaelabo-
racióndeladefinición.
Ámbitodelasdeclaraciones
Elámbitodeunadeclaracióneselámbitodelasasociacionesquecrea
(porahorasupondremosquetodaslasasociacionesproducidasenunadeclaracióntienenelmismoámbito)
3 Definicionesdevalores,tiposyvariables
Definiciones
Enestasecciónveremoslasdefinicionesmásbásicasdelosdistintoslenguajesdeprogramación:
• Definicionesdevalores: darunnombrenuevoaunvalor(constantes)
• Definicionesdetipos: darunnombrenuevoauntipoyaexistente
• Definicionesdevariables: darunnombrenuevoaunavariableyadeclarada
Definicionesdevalores
Unadefinicióndeunvaloresunadeclaracióncuyoefectoescrearunaasociaciónentreunidentificadory
unvalor(deuntipodeterminado). Selessuelellamartambiéndefinicionesdeconstantes.
(enelámbitodeestadefinicióndeunvalor,laaparicióndelidentificadoresequivalentealaaparicióndel
valorasociadoalmismo)
Elementosdelasdefinicionesdevalores
Enunadefinicióndeunvalorsedebenincluir:
• Elidentificador(id)queconstituyeelnuevonombredelvalor
• Undescriptordeltipodelvalorinvolucrado(nosiempreseincluye,sinoaparecesetomaeltipode
laexpresión,siapareceeltipoes T).
• Unaexpresióndeltipo T,talque,alevaluarse,produceelvalorasociadoalnuevonombre.
7
3 DEFINICIONESDEVALORES,TIPOSYVARIABLES
Elaboracióndedefinicionesdevalores
Cuandoseelaboraunadefinición,sedanestospasos:
1. Seevalúalaexpresiónenelestadodeejecuciónexistenteenelmomentodelaelaboración. Siesta
evaluaciónfalla,laelaboraciónfalla,encasocontrarioseobtieneunvalor v(detipo T).
2. Sinofalla,seasociaelidentificador idalvalorresultadodelaevaluación.
3. Dentrodelámbitodeladefinición,cualquieraparicióndelidentificadorconstituyeunaexpresiónde
tipo T,cuyaevaluaciónproduce v
Elaboracióndedefinicionesdevalores.
Haydossituacionesposibles:
1. Elvaloresfijoentodaslasejecucionesypuedeserconocidosinejecutarelprograma,yaque:
• nodependedelestadodeejecución(obien)
• dependedelestadodeejecución,perosepuededeterminaraprioricualseráelresultadodela
evaluación
• dependedelestadodeejecución,(y)
• dichoestadonoescalculablesinejecutarelprograma.
2. Elvalorvaríaentreelaboraciones,ynopuedeserconocidoapriori,yaque:
Implementacióndelaelaboración
Laimplementaciónsepuedeenfuncióndeenquecasodelosdosanterioresestemos:
1. Enelprimercaso,esposible,alprocesarelprograma,obtenerelvaloryusarloenloslugaresdonde
aparezcaelidentificador(sustituyéndolo).
2. En el segundo caso, al elaborar la definición es necesario crear una nueva variable, anónima, no
modificable,queocupamemoria,yqueseinicializaalvalorresultadodeevaluarlaexpresión
DefinicionesdevaloresenPascal
EnPascal, laexpresióndebeserunliteraldelos
Comentarios de: Capítulo 6. Asociaciones y Declaraciones (0)
No hay comentarios