PDF de programación - Capítulo 3. Variables

Imágen de pdf Capítulo 3. Variables

Capítulo 3. Variablesgráfica de visualizaciones

Publicado el 12 de Abril del 2018
428 visualizaciones desde el 12 de Abril del 2018
1,2 MB
31 paginas
Creado hace 12a (11/10/2011)
LenguajesdeProgramación.

Capítulo3.
Variables.
CarlosUreñaAlmagro
Curso2011-12

Contents
1 Introducción
2 Referencias
3 Almacenamientodevalores
.
.
.
3.1 Almacenamientodetiposcompuestos .
.
.
.
.
3.2 Almacenamientodetiposrecursivos .
4 Tiposdevariablesytiempodevida
5 Referenciasinválidasyrecolecciónautomáticadebasura

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

2
5
7
8
12
13
24

1

LP(11-12)3. Variables.
1 Introducción
Invencióndelconceptodevariable
Históricamente,elconceptodevariablesurgeenlosprimeroslenguajesdeprogramación(p.ej.: Plankalkul,
ensambladores,Fortran). Seintentaresolvervariosproblemasdelcódigomáquina:
• direccionamientousandodireccionesnuméricas
• ausenciadeinformaciónsobrelainterpretaciónválidadelassecuenciasdebitsenmemoria
• ausenciadeinformaciónsemántica.
Direccionamientousandodireccionesnuméricas:
• Encódigomáquina,cadazonadememoriadondesealmacenansecuenciasdebitsseidentificaasu
vezporunasecuenciadebits(representaunvalornumérico).
• Aesevalornuméricoselellamalocalizacióndelasecuenciadebitsalmacenada.
Direccionamientousandodireccionesnuméricas:
• Ladireccióndeunvalorenmemoriadependedeladistribución(layout)detodoslosotrosvaloresen
memoria.
Ausenciadeinformaciónsobrelainterpretaciónválida
• Esposiblerealizarcualquierinterpretacióndedichassecuencias. Esfácilcometererrores.
Ausenciadeinformaciónsemántica
• No hay información en el programa sobre la semántica (el significado) de una secuencia de bits
almacenadaenunaposicióndememoria
ElconceptodeVariable
Una variable es una abstracción sobre un valor almacenado en una localización de memoria, usando la
representaciónasociadaauntipodedatos.

creadoOctober11,2011

página3.2/31

LP(11-12)3. Variables.
ElconceptodeVariable
• Unavariablepuedetenerunnombre
• Elvaloralmacenadopuedecambiardurantelaejecucióndeunprograma.
• Lalocalizaciónpuedecambiardurantelaejecucióndelprograma
Lasvariablescomoabstracciones
Abstracciónaquísignificaquepodemosolvidarnosde:
• Elvalorconcreto(solohayqueconocersutipo)
• Lalocalizaciónytamañodelazonadememoriadondesealmacenalarepresentacióndelvalor
• Larepresentaciónconcretaasociadaaltipodedatos
Beneficiosdelasabstracción
Olvidarnosdetodoestonosliberadelanecesidaddeocuparnosdeestosaspectos:
• Estoimpidequecometamosloserroresquesepuedencometeralocuparnosdeellos(mayorfiabilidad)
• Elusodevariablesconnombresytiposfacilitalaescrituradeprogramas,yaumentasulegibilidad.
Atributos
Enunpograma,unavariablesunaentidadqueestácompuestadeatributos,queson:
• Identidad(unvalordeuntipodependientedelaimplementación)
• Nombre(unasecuenciadedígitosyletras)
• Localizacióndememoria(unvalordetipopuntero)
• Valor(unasecuenciadebits)
• Tipo(entidadformal,determinalarepresentación)
• Tiempodevida(intervaloointervalosdetiempo)

creadoOctober11,2011

página3.3/31

LP(11-12)3. Variables.
Nombredelasvariables
• Esunidentificador(unasecuenciadedígitosyletras).
• Representaalavariableenelprogramafuente
• Permitealprogramadoraportarinformaciónsobreelsignificadodelvaloralmacenado
• Puedenexistirvariablessinnombre(sedenominananónimas)
• Puedenexistirvariablesconvariosnombres(aesosnombresselellamanalias)
Localizacióndememoria
• Sepuedecalcularapartirdelaidentidad
• Identificadondeestáalojadoelvalor
• Puedecambiarduranteeltiempodevidadelavariable.
• Loslenguajesdebenpermitiralprogramadorabstraersedeestevalor
Identidaddelasvariables
• Esunvalordeuntipodependientedellenguajey/olaimplementación
• Cadavariabledelprogramatieneasociadaunaidentidadúnica
• Nopuedecambiarduranteeltiempodevidadelavariable.
• Existeunafunciónqueasociaacadaidentidadunalocalizacióndememoria
• Laidentidadpuedeimplementarsemedianteeltipopuntero(C/C++),medianteuníndiceenunatabla
devariables(podríaserenJavaoC#),medianteelnombredelavariable(Python,Perl,Php)
Tipodelasvariables
• Determinaelconjuntodevaloresquepuedetomarlavariable,ylasoperacionesquepuedenhacerse
sobreella.
• Algunoslenguajesfuerzanaasociaruntipoúnicoacadavariable
• Algunoslenguajespermitenvariablessintipo(lasecuenciadebitssemanejatalcual)
• Algunoslenguajespermitenqueeltipodeunavariablecambiedurantesutiempodevida.
creadoOctober11,2011

página3.4/31

LP(11-12)3. Variables.
Tiempodevida
Laejecucióndeunprogramaocupaunintervalodetiempo:
• Eltiempodevidadeunavariableeselintervaloointervalosdetiempoduranteloscualeslavariable
existe
• Los intervalos están normalmente incluidos en el intervalo de tiempo de ejecución del programa. A
cadaunodeellosselesdenominaintervalodeexistencia
• Unavariableexistedurantelaejecucióncuandosepuedeaccederasuvalor,enelsentidodequese
puedegarantizarquedichovalorestáalmacenadoensulocalizaciónusandolarepresentaciónasociada
asutipo.
Ámbitodelasvariables
• Eslaporciónoporcionesdelprogramafuenteenloscualeslaaparicióndelnombredelavariablees
correctayhacereferenciaadichavariable,asusatributosoasuvalor.
• Lasvariablessinnombrenotienenámbito.
Otrosatributosdelasvariables
Lasvariablespuedentenerotrosatributos,p.ej.:
• Unavariablepuedesermodificableonomodificable,lassegundasnopuedencambiardevalordurante
unintervalodeexistencia(selessuelesllamarvariablesdesololectura.
2 Referencias
Referencias
Sea Tuntipocualquiera:
• Enunmomentodelaejecucióndeunprograma,podemosconsiderarelconjuntodelasidentidadesde
todaslasvariablesdetipo Tqueefectivamenteexistanenesemomento.
• Esteconjuntoesuntipo,quellamaremoseltipodelasreferenciasa T,(lonotamoscomo re f (T))
• Enalgunoslenguajes,podemosconsiderareltipodetodaslasreferencias,sintenerencuentaeltipo
delavariablereferenciada.

creadoOctober11,2011

página3.5/31

ref (T) =ref(T) ∪ {null}

LP(11-12)3. Variables.
Lareferencianula
Existeunvalordetiporeferencia,especial,llamadolareferencianula,quenoeslaidentidaddeninguna
variable,yquellamamosnull
• Normalmente,noconsideraremosunvalornuloentrelasreferencias
yaquenosirveparaaccederaningunavariable.
• Elconjuntoref eselconjuntodetodaslasreferenciasavariablesdetipo T,incluyendounvalornulo:
PunterosenC/C++
EllenguajeC/C++contemplalasreferenciasauntipo T, esdecir, eltiporef (T) , sedescribenconel
siguientedescriptordetipo T *(donde Teseldescriptordetipodeltipo T)
• EnlabibliografíasobreellenguajeC/C++,aestetipodereferenciasselesllamapunteros(pointers)
• Serepresentanenmemoriausandoelformatoparalocalizacionesdememoriadictadoporelhardware
subyacente.
• Secontemplaelvalornulo(elcero). Sepuedeusarelliteralentero 0(seconviertealenteronulo),
aunqueesmáslegibleusar NULLqueestádefinidocomo 0
ReferenciasenC/C++
LospunterosenC/C++presentanalgunosproblemas:
• Eltipo T *incluyetodaslasreferenciasválidas,másalgunasquenoloson.
• Seincluyetodoslosvaloresasociadosalocalizacionesdondealgunavezsehaalmacenadounavariable
detipo T
• Loanteriordalugarafrecuenteserrores.
Referencias(access)enAda
• EnAda83,eltipodelasreferenciasavariablesdetipo Tsedeclaracomo access T
• EnAda95,además,esválidousar access all T
creadoOctober11,2011

null /∈ref(T)

página3.6/31

LP(11-12)3. Variables.
Referenciasenotroslenguajes
EnloslenguajesJava,C#,Pythonyotrosnohayunasintaxisespecíficaparalasreferencias
• En estos lenguajes, el esquema de almacenamiento de variables (se verá más adelante) dicta que
variablessonreferencias.
• Loanteriordependeesencialmentedeltipodelavariable.
• Sehaceimplicitamente,nohayconstruccionesexplícitasparadeclararvariablesdetiporeferencia.
3 Almacenamientodevalores
Lasceldasdememoria
• Unaceldadememoriaesunasecuenciacontiguadebitsdelamemoria,deltamañomínimoquepuede
serasociadoconunalocalización(odirección)única,ytransferidoentrelaCPUylamemoria.
• Elconjuntodelocalizacionesodireccionesdeceldasenunconjuntofinitoordenadoynumerablede
valores,cadaunodeloscualesestaasociadoaunaceldadememoriadisponibleparaelprograma.

Lasceldasdememoria
• Eltamañoenbitsdelasceldasesfijoparacadaarquitecturahardware,sistemaoperativoycompilador
ointérprete.
• Estetamañosuelesermúltiplode8(unnúmeroenterodebytes).
• Eldiseñodeloslenguajesdeprogramaciónesindependientedeltamañodelasceldas
Ladireccióndeunavariable
• Cadavariable vdeuntipo Tocuparáunasecuenciadeceldasconsecutivasenmemoria(unbloque)
creadoOctober11,2011
página3.7/31

LP(11-12)3. Variables.
• Lalocalizacióndelavariable(dir(v))eslalocalizacióndelaprimeraceldaqueocupa(penlafigura)

3.1 Almacenamientodetiposcompuestos
Almacenamientodetiposcompuestos
Enloscasosdelasvariablesdetiposcompuestosnorecursivos(arraysyregistros),podemosdecirqueuna
variable(a)incluyeotrasvariables(c),queformanpartedelaprimera:

Arraysdetamañofijo
Enlosdiversoslenguajes,losarraysunidimensionalesdetamañofijosealmacenanusandounasecuencia
consecutivadebloquesdememoria,cadaunoconunvalor:

creadoOctober11,2011

página3.8/31

LP(11-12)3. Variables.
EnellenguajeC,losvaloressealmacenantalcual:

losvaloresalmacenados(ai)sondeuntipo T,eltamañototales s ndonde neselnúmerodeelementosy
s = tam(T). Elvalor nesconocidoentiempodecompilación.
Problemasenlosaccesosalosarrays
EnellenguajeC,unarraydetamañofijopuedeaccedersecomounarraydetamañovariable(dinámico)a
travésdeunpunteroalmismo,estoesmuyfrecuente
• Estoocurre,porejemplo,alpasarunarraycomoparámetroaunafunción
• Juntoconelpuntero,esnecesariopasarinformacióndeltamaño,paraquelosaccesoslotenganen
cuenta
• Estolodebedegestionarelprogramadorypuededarlugaraerrores
• Portanto,enotroslenguaje(p.ej. enAdaoJava),juntoconlasecuenciadevaloressealmacenael
tamañosiempre(paraarraysestáticosydinámicos)
RepresentacióndearraysenAdayJava

creadoOctober11,2011

página3.9/31

a0a1an-1........pp+sp+(n-1)san-2a2p+2s................ LP(11-12)3. Variables.
EnJavayC#,lasecuenciadevaloresincluyeunprefijoconelnúmerodeellos:

EnAda,siempreseincluyealiniciodosenterosconlosindicesminimoymáximodelarray:

Arraysdinámicos
Enlamayoríadeloslenguajes,losarraysdinámicossealmacenanusandounpuntero(enC)oreferenciaa
lasecuenciadevalores,queestáenbloquesdememorianocontiguosadichareferencia
EnC/C++nohayinformacióndeltamaño:

Arraysdinámicoseinformacióndetamaño
EnJavayC#seincluyeeltamaño,locualpermitecomprobarencualquieraccesoquelosíndicestienen

creadoOctober11
  • Links de descarga
http://lwp-l.com/pdf10371

Comentarios de: Capítulo 3. Variables (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad