Professional Documents
Culture Documents
FabianoBaldo UDESC
PrincipaisOperaes
Asprincipaisoperaesnatabeladesmbolosso:
Inserir:Usadaparaarmazenarinformaes,taiscomo,tipo eescopo,natabeladesmbolos. Verificar:Usadapararecuperarinformaesassociadasa umnome,quandoessenomeutilizadocomoumcdigo. d tili d di Remover:Usadapararemoverinformaesquandoestas noseromaisutilizadas.
EstruturadaTabeladeSmbolos
Tipicamente,atabeladesmbolosumaestrutura dedadosdotipodeumdicionrio. Aeficinciadastrsoperaesbsicasvariade acordocomaorganizaodaestruturadedados. g Implementaestpicasdeestruturasdedicionrios solistaslineares,rvoresdebuscaetabelasde hashing. AlistalinearimplementainserocomtempoO(1) e deverificaoeremoocomtempoO(n).
FabianoBaldo UDESC
FabianoBaldo UDESC
EstruturadaTabeladeSmbolos
Atabeladehashing implementainsero,verificao eremoocomtempoO(1).
Amaiordesvantagemdatabeladehashing soascolises demapeamento,quedegradamodesempenhodas funesdeverificaoeremoo. f d ifi
Declaraes
Ocomportamentodeumatabeladesmbolosdepende fortementedaspropriedadesdasdeclaraesdalinguagem. Aformacomoasoperaesinserir eremover manipulama tabela,quandoelasdevemserativadas,quaisatributos devemserinseridos,etc.variamparacadalinguagem. d i id i d li Atmesmoomomentoemqueatabeladeveserconstruda, eporquantotempoeladeveexistir,podevariarentre diferenteslinguagens.
Arvoredebuscabinriaimplementaasoperaes deinseroeverificaoO(log(n)).
Entretanto,aoperaodedeleobastanteineficiente.
FabianoBaldo UDESC
FabianoBaldo UDESC
11/6/2008
Declaraes
Existem4tiposbsicosdedeclaraes:
1. DeclaraodeConstantes: Ex.emC: 2. DeclaraodeTipos: Declarao type em Pascal: Declaraotype emPascal: Ex.emC:
Declaraes
3. DeclaraodeVarivel: 4. DeclaraodeProcedimentoseFunes: Ex.emC:
FabianoBaldo UDESC
FabianoBaldo UDESC
DeclaraodeConstantes
DeclaraodeConstante=Associaodevaloresanomes(ou seja,ligaoentrevalores) Valoresdeumaconstante:
OPascalnecessitaqueosvaloresnadeclaraodeumaconstante sejamestticos j Cpermitequeasconstantessejamdinmicas(somentecomputveis duranteaexecuo)umanicaatribuio.
DeclaraesdeTipos
Declaraesdetipos=associaodeumnomea umatipoconstrudorecentementeoucriaodeum alias paraumtiponomeadoexistente. Nomesdetipossocomumenteutilizadosem conjuntocomumalgoritmodeequivalnciadetipo pararealizaraverificaodetipodeumprogramade acordocomasregrasdaliguagem.
Tiposdeumaconstante:
EmPascal,tiposdedadosdeconstantessoimplicitamente determinadosdeseusvaloresestticos EmC,ostiposdedadossoprovidosexplicitamente,assimcomoem declaraesdevariveis.
FabianoBaldo UDESC 9
FabianoBaldo UDESC
10
DeclaraodeVariveis
DeclaraodeVariveis=associaodeumnomeaumtipo dedado. Declaraodevarivelpodetambmassociaroutrosatributos implicitamente. O escopo de uma declarao define a regio do programa Oescopo deumadeclaraodefinearegiodoprograma ondeadeclaraoaplicada,ouseja,ondeavariveldefinida peladeclaraoacessvel.
indicadopelaposiodadeclaraodentrodoprograma. Podeserafetadopornotaessintticasexplcitaseinteraescom outrasdeclaraes.
DeclaraodeVariveis
EmC,todasasvariveiscujaasdeclaraessoexternasa funessoalocadasestaticamente eassimtemtempode vidaigualaodoprogramaprincipal. EmC,todasasvariveisquesodeclaradasdentrodefunes soalocadasapenasparaaduraodecadachamadade funo(chamada,alocaoautomtica). OCtambmpermiteparaotempodevidadeumadeclarao dentrodeumafunoseralteradodeautomticapara estticoatravsdousodapalavrareservadastatic na declarao,talcomo:
Otempodevidadadeclaraodefineaduraodaalocao dememriaparaumavariveldeclarada.
FabianoBaldo UDESC 11 FabianoBaldo UDESC 12
11/6/2008
DeclaraesdeVariveis
Consideraessobredeclaraodevariveis:
int a,b[100]; =>definea eb ealocamemriaparaeles. static int a,b[100]; =>declaraasvariveislocaisparao procedimento,maselasnosocolocadasnapilhado procedimento. di t extern int a,b[100]; =>informaocompiladorqueo ligador irencontrarestasvariveisalocadaseinicializadas emoutrapartedoprograma. register int x;=>alocaavarivelemumregistroaoinvs damemria.
RegradeEscopoeEstruturade Blocos
Asregrasdeescopoemlinguagensdeprogramao variamuito,entretantoexistemalgunsemcomum, taiscomo:
Declaraoantesdouso Regradeaninhamento maisprximoparaestruturado bloco.
FabianoBaldo UDESC
13
FabianoBaldo UDESC
14
DeclaraoantesdoUso
Adeclaraoexplcitaantesdousoajudao programadorareduzirerrosderefernciadetipo. Istosimplificaaoperaocomatabeladesmbolos, poistornamaisfciladetecodevariveisqueno foramdeclaradas. Elatambmhabilitaumacompilaoemumanica passada. Linguagemondedeclaraoexplcitaeantesdouso nosoexigidas,nopodemserfacilmente compiladasemumnicopasso.
FabianoBaldo UDESC 15
EstruturadeBlocos
Umblocoemumalinguagemdeprogramao qualquerconstruoquepossaconterdeclaraes. Ex:
EmPascal:Programaprincipal,declaraode procedimentosefuneseregistros. EmC:Unidadesdecompilao(arquivosdecdigo), declaraesdeprocedimentosefunes,declaraes compostas(comoseqnciasdedeclaraesentre chaves),estruturaseunies, Emlinguagensorientadasaobjetos:classes.
FabianoBaldo UDESC
16
EstruturadeBlocos
Umalinguagemestruturadaemblocosse:
Permitiroaninhamento deblocosdentrodeoutrosblocos. Eseoescopodasdeclaraesemumblocoforlimitadoa aqueleblocoeaosblocosnelecontidos.
Exemplo1
Oint inolocalnopodeser alcanadodedentrodadeclarao compostadafunof,isso chamadoburacodeescopo. Oint jnolocalpodeseralcanado dedentrodadeclaraocomposta dafunof,masnodedentrode umdeseusdoisblocos. EmPascalasfunespodemser aninhadas,complicandooambiente emtempodeexecuo.
FabianoBaldo UDESC
17
FabianoBaldo UDESC
18
11/6/2008
Exemplo2
EssecdigoPascalrefleteuma estruturadetabeladesmbolos queoexemplo1.Entretanto, duranteotempodeexecuo umproblemadeacessoe p escopoaparece,dadoquef,ge hpodemserchamadasumas pelasoutrasdevriasformas diferentes.
Implementao
Paraimplementarosescopoaninhadoearegrade aninhamento maisprximo,aoperaoinserirdatabelade smbolosnopodesobrescreverdeclaraesanteriores,mas deveocultlastemporariamenteparaqueaoperao verificar encontreapenasadeclaraoinseridamais f p recentemente. Demaneirasimilar,aoperaoremovernopoderemover todasasdeclaraesquecorrespondamaumnome,mas apenasamaisrecente.
FabianoBaldo UDESC
19
FabianoBaldo UDESC
20
Implementao
Aconstruodatabeladesmbolospodeacontecera seguinteforma:
Realizeoperaesinserirparatodososnomesdeclarados aoentraremcadablocodecdigo. Realizeoperaesremover correspondentesparaos mesmosnomesdeclaradosaosairdecadabloco.
Implementao
Umaimplementaopossvelparaescopoaninhado:
Construirumanovatabeladesmbolosparacadaescopo Vincularessastabelasdeescopomaisinternocomomais externo. Dessaforma,aoperaoverificar continuaautomati camente abuscaemumatabelamaisexternaseno conseguirencontrarumnomenatabelacorrente.
Atabeladesmbolossecomportacomoumapilha duranteoprocessamentodeescoposaninhados.
FabianoBaldo UDESC
Implementao
Paraaconstruodetabelasdiferentesparaconter informaesdeescoposdiferentessonecessrias duasnovasoperaes:
Abrirescopo:Deveserexecutadasemprequeseentraem umnovobloco.Seuresultadoacriaodeumanova tabeladesmbolosparacadanovoblocoeacolocaono topodapilha. Fecharescopo:Executadasemprequesesaideumbloco. Suafunoapagarocontedodatabeladesmbolosdo blocoetirladotopodapilha.
Implementao
Utilizandoaalternativadeimplementar aninhamento deescopoemumamesmatabelade smbolos.
necessriaaidentificaodecadaespocoporumnome eoprefixodecadanomedeclaradodentrodeumescopo comosnomesacumuladosdeseusescoposaninhados. Adicionalmente,podesernecessrioatribuirumnvelde aninhamento ouprofundidadedeaninhamento acada escopoeregistraremcadacluladatabeladesmboloso nveldeaninhamento decadanome.
FabianoBaldo UDESC
23
FabianoBaldo UDESC
24
11/6/2008
InteraoemDeclaraesdo mesmoNvel
Umrequisitotpicodaslinguagensano reutilizaodomesmonomeemdeclaraesde mesmonvel. Portanto,oexemploemC:
Develevaraumerrodecompilao.
InteraoemDeclaraesdo mesmoNvel
Umaquestomaisdifcildeseresolveraseguinte:
Esteerrodetectadoutilizandoatabeladesmbolos
Atabeladesmbolosnopodepermitirqueumavarivel sejainseridamaisdeumavezparaumdadonvel. Ovalorimpressoporj3porqueasdeclaraesno processadasseqencialmente. Algumasling.permitemdeclaraescolaterais,nessecassoo valordejderivadodoiexterno,porqueoiinternoainda noconhecido.
25 FabianoBaldo UDESC 26
FabianoBaldo UDESC
InteraoemDeclaraesdo mesmoNvel
Htambmocasodasdeclaraesrecursivas,emqueas declaraespodemseautoreferenciaroureferenciaroutras declaraes.
InteraoemDeclaraesdo mesmoNvel
Emcasosmaiscomplexos,podesetergruposdefunes mutuamenteexclusivas. Nestecaso,umadeclaraodeprottipodefuno necessriapararesolveroproblema,talcomoemC:
FabianoBaldo UDESC
27