Você está na página 1de 8

[Digite o ttulo do documento]

Semntica de Linguagem de programao


Descrever o significados das estruturas do programa expressos na sua sintaxe. Semntica diz respeito significao. A semntica o estudo do sentido dos significantes. Em programao, a semntica diz respeito ao significado do programa sintaticamente vlido. O que pode ocorrer que um programa seja sintaticamente vlido sem, no entanto, ter um significado lgico coerente. As regras semnticas podem ser classificadas em estticas ou dinmicas dependendo do momento em que so checadas (compilao ou em tempo de execuo). A anlise sinttica verifica e aponta as expresses que quebram qualquer regra determinada pela gramtica. Mas o nvel de complexidade aumenta quando tratamos de linguagens dependentes de contexto. A anlise semntica busca apontar (no resolver) este tipo de erros (dependentes de contexto). O objetivo da anlise semntica , assim, criar, a partir de um texto-fonte, uma interpretao expressa em alguma notao adequada - geralmente uma linguagem intermediria do compilador. Isto feito com base nas informaes das tabelas e nas sadas dos outros analisadores. Denomina-se semntica de uma sentena o significado por ela assumido dentro do contexto em que se encontra. Semntica de uma linguagem a interpretao que se pode atribuir ao conjunto de todas as suas sentenas. A anlise semntica utiliza-se da verificao de tipos para verificar se um determinado operando recebe outro operando de mesmo tipo. Um exemplo comum nas linguagens de programao a anlise semntica retornar um erro quando uma varivel do tipo numrica (real ou inteira) receber um valor tipo texto (string). Exemplos tpicos de erros semnticos so: Uma varivel no declarada Uma multiplicao entre tipos de dados diferentes Atribuio de um literal para outro tipo, como um inteiro em uma string ou vice-versa.

Tipos de Semntica
Semntica Esttica Descreve as caractersticas de uma programa vlido. quando acontece durante a compilao, pode ser por meio de alocao, desalocao de variveis locais ou descoberta de tipos em expresses numricas.

[Digite o ttulo do documento]


Exemplos de regras estticas: Todo identificador deve ser declarado antes de ser usado; Os parmetros utilizados na chamada de uma funo tm o tipo correto. Semntica dinmica - Descreve os resultados da execuo do programa. quando acontece durante a execuo, pode ser por meio de alocao na heap com malloc (em C), verificao de cast de classe (em java), ou verificao de limites de arrays (em java). Exemplos de regras dinmicas: O ndice de um array est dentro do limite correto; Variveis nunca so utilizadas antes de serem inicializadas; No haver diviso por zero. Ao contrrio da sintaxe, no existe ainda um formalismo aceito globalmente para descrever a semntica da linguagem Exemplos de formalismos: Semntica Operacional Estrutural, Mquinas de Estado Abstratas, Semntica Denotacional, Semntica de Aes, Montagens, etc.

Abordagens para Descrio Semntica


A especificao semntica de uma linguagem pode: 1 - Definir um mapeamento entre a sintaxe do programa e seu significado. Ex.: Semntica Denotacional, Semntica de Aes, Semntica Algbrica, etc. 2 - Definir uma mquina que executa programas da linguagem. Ex.: Semntica Natural, Mquinas de Estado Abstratas.

[Digite o ttulo do documento]


Tipos de Dados
Em cincia da computao tipos de variveis ou dados uma combinao de valores e de operaes que uma varivel pode executar, o que pode variar conforme o sistema operacional e a linguagem de computador. So utilizados para indicar ao compilador ou interpretador as converses necessrias para obter os valores em memria durante a construo do programa. Os tipos de dados ajudam tambm o programador a detectar eventuais erros envolvidos com semntica das instrues, erros esses detectados na anlise semntica dos compiladores. Dependendo da linguagem de programao, o tipo de um dado verificado diferentemente, de acordo com a anlise lxica, sinttica e semntica do compilador ou interpretador da linguagem. Os tipos tm geralmente associaes com valores na memria ou com objetos (para uma

linguagem orientada a objeto) ou variveis. Os programas so compostos por cdigo (instrues) e dados (variveis). Estes programas so carregados na memria quando forem chamados para execuo e so retirados da memria quando for finalizada a sua execuo. Assim, em determinado momento, a memria est com partes ocupadas e livres. A utilizao da memria controlada pelo Sistema Operacional. O Sistema Operacional mantm uma tabela que informa quais partes da memria esto livres (memria disponvel) e quais partes da memria esto ocupadas (memria ocupada). Toda vez que um programa for executado, o Sistema Operacional aloca (reserva), da memria disponvel, o espao suficiente para as variveis deste programa. Esta memria passa a ser ocupada e no ser mais alocada para outras variveis, at que o programa termine. Desta forma, as memrias disponvel e ocupada crescem e diminuem a medida que diferentes programas so executados.

[Digite o ttulo do documento]


Esttica / Dinmica
As variveis estticas so alocadas antes que o programa entre em execuo. O programa solicita ao Sistema Operacional que aloque espao da memria disponvel para as variveis estticas. Ento, o Sistema Operacional retira da memria disponvel o espao necessrio para as variveis e coloca na memria ocupada. O Sistema Operacional garante que o espao de memria utilizado por uma varivel esttica jamais poder ser utilizado por uma outra. Esta garantia no dada s variveis dinmicas. A grande desvantagem desse tipo de varivel o fato de que uma vez criada, o espao de memria que ela ocupa no pode mais ser alterado. As variveis dinmicas podem ser criadas e ou destrudas durante a execuo de um programa, e esta, a grande vantagem delas sobre as estticas. Varivel Dinmica Pode ser criada ou eliminada durante a execuo do programa, ocupando espao na memria apenas enquanto est sendo utilizada.

Forte / Fraco
Linguagens implementadas com tipos de dados fortes, tais

como Java e Pascal, exigem que o tipo de dado de um valor seja do mesmo tipo da varivel ao qual este valor ser atribudo.

[Digite o ttulo do documento]


Exemplo: (Sintaxe genrica) 1. Declarar Variveis 2. TEXTO nome 3. REAL idade 4. 5. Atribuies 6. nome = "Fulano" 7. idade = "13" Ocorrer um erro ao compilar a linha 7, pois o valor "13" precisa ser convertido para o tipo de dado INTEIRO. Em linguagens com tipos de dados fracos, tais como PHP e VBScript, a converso no se faz necessria, sendo realizada implicitamente pelo compilador ou interpretador.

Primitivo / Composto
Um tipo primitivo (tambm conhecido por nativo ou bsico) fornecido por uma linguagem de programao como um bloco de construo bsico. Dependendo da implementao da linguagem, os tipos primitivos podem ou no possuir correspondncia direta com objetos na memria. Um tipo composto pode ser construdo em uma linguagem de programao a partir de tipos primitivos e de outros tipos compostos, em um processo chamado composio. Em C, cadeias de caracteres so tipos compostos, enquanto em dialetos modernos de Basic e em JavaScript esse tipo nativo da linguagem. Tipos primitivos tpicos incluem caracter, inteiro (representa um sub-conjunto dos nmeros inteiros, com largura dependente do sistema; pode possuir sinal ou no), ponto flutuante (representa o conjunto dos nmeros

[Digite o ttulo do documento]


reais), booleano(lgica booleana, verdadeiro ou falso) e algum tipo

de referncia (como ponteiro ou handles). Tipos primitivos mais sofisticados incluem tuplas, listas ligadas, nmeros complexos, nmeros racionais e tabela hash, presente sobretudo

em linguagens funcionais. Espera-se que operaes envolvendo tipos primitivos sejam as construes mais rpidas da linguagem. Por exemplo, a adio de inteiros pode ser feita com somente uma instruo de mquina, e mesmo algumas CPUs oferecem instrues especficas para processar sequncias de caracteres com uma nica instruo. A maioria das linguagens no permite que o comportamento de um tipo nativo seja modificado por programas. Como exceo, Smalltalk permite que tipos nativos sejam estendidos, adicionando-se operaes e tambm redefinindo operaes nativas. Uma estrutura em C e C++ um tipo composto de um conjunto determinado de campos e membros. O tamanho total da estrutura para o tipo composto corresponde a soma dos requerimentos de cada campo da estrutura, alm de um possvel espao para alinhamento de bits. Por exemplo: struct Conta { int numero; char *nome; char *sobrenome; float balanco; };

Define

um

tipo

composto

chamado Conta.

partir

de

uma

varivel minhaConta do tipo acima, pode-se acessar o nmero da conta atravs de minhaConta.numero.

[Digite o ttulo do documento]


Arrays Em programao como vetor (para de arrays computadores, um array, tambm conhecido arrays bi-

uni-dimensionais)

ou matriz (para

dimensionais), uma das mais simples estruturas de dados. Os arrays mantm uma srie de elementos de dados, geralmente do mesmo tamanho e tipo de dados. Elementos individuais so acessados por sua posio no array. A posio dada por um ndice, tambm chamado de subscrio. O ndice geralmente utiliza uma sequncia de nmeros inteiros, (ao contrrio de um array associativo) mas o ndex pode ter qualquer valor ordinal. Alguns arrays so multi-dimensionais, significando que eles so indexados por um nmero fixo de nmeros inteiros, por exemplo, por um sequncia (ou sucesso) finita de quatro nmeros inteiros. Geralmente, arrays uni- e bi-dimensionais so os mais comuns. Os arrays podem ser considerados como as estruturas de dados mais simples. Tm a vantagem de que os seus elementos so acessveis de forma rpida mas tm uma notvel limitao: so de tamanho fixo, mas podem ser incrementados ou diminudos com determinados algoritmos, geralmente envolvendo a cpia de elementos de um array para outro e reiniciar o original com a nova dimenso. Os vetores podem ser implementados desta forma. Estas estruturas de dados so ajeitadas nas situaes em que o acesso aos dados seja realizado de forma aleatria e imprevisvel. Porm, se os elementos podem estar ordenados e vai-se empregar um acesso sequencial, seria mais recomendada uma lista.

[Digite o ttulo do documento]


Bibliografia:
http://www.inf.puc-rio.br/~inf1621/sintaxe.pdf http://pt.wikipedia.org/wiki/Sem%C3%A2ntica_denotacional http://sibetim.blogspot.com.br/2009/03/sintaxe-e-semantica-de-linguagensde.html http://pt.wikipedia.org/wiki/Tipo_de_dado#Tipo_est.C3.A1tico_e_din.C3.A2mico http://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0_Teoria_dos_ Compiladores/An%C3%A1lise_Sem%C3%A2ntica http://pt.wikipedia.org/wiki/Array