Buscar

Exercícios de Linguagens de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal da Grande Dourados
Faculdade de Cieˆncias Exatas e Tecnologias
Bacharelado em Sistemas de Informac¸a˜o
Paradigmas em Linguagens de Programac¸a˜o
Lista de Exerc´ıcios 2
Prof. M.Sc. Rodrigo Porf´ırio da Silva Sacchi
1. Baseado na grama´tica abaixo, escreva sua grama´tica de atributos.
< programa > → begin < listastmt > end
< listastmt > → < stmt > | < stmt > ; < listastmt >
< stmt > → < var > := < expr >
< expr > → < var > + < var > | < var > - < var > | < var >
< var > → A | B | C
2. Identifique os lexemas que compo˜em os tokens nos programas seguintes.
Deˆ os valores de atributo razoa´veis para esses tokens.
a) Pascal
function max(i, j: integer): integer;
{ retorna o maior dos inteiros entre i e j. }
begin
if i > j then max := i
else max := j
end;
b) C
int max(i, j) int i, j;
/* retorna o maior dos inteiros entre i e j. */
{
1
return i > j ? i : j;
}
c) Fortran 77
FUNCTION MAX(I, J)
C RETORNA O MAIOR DOS INTEIROS ENTRE I E J.
IF(I .GT. J) THEN
MAX = I
ELSE
MAX = J
ENDIF
RETURN
3. Expecifique a forma le´xica das constantes nume´ricas usadas na lingua-
gem C.
4. Expecifique a forma le´xica dos identificadores usados na linguagem C.
5. Desenhe os diagramas de estado para constantes nu´mericas e identifi-
cadores em C.
6. Desenhe os diagramas de estado para as seguintes palavras reservadas
em C:
a) while
b) public
c) static
7. Desenhe, um diagrama de estado para nu´meros inteiros e nu´meros em
ponto flutuante em C.
8. Descreva a grama´tica de atributos para a seguinte BNF, que gera ex-
presso˜es formadas pela aplicac¸a˜o do operador aritme´tico + a constantes
inteiras e reais. Quando dois inteiros sa˜o adicionados, o tipo resultante
e´ inteiro; em caso contra´rio e´ real.
< expr > → < expr > + < term > | < term >
< term > → num.num | num
2
9. Descreva a grama´tica de atributos para a BNF a seguir, que gera de-
clarac¸o˜es para um u´nico identificador:
< cmd > → declare id < lista de opcoes >
< lista de opcoes > → < lista de opcoes > < opcao > | �
< opcao > → < modo > | < escala > | < precisao > | < base >
< modo > → real | complex
< escala > → fixed | floating
< precisao > → single | double
< base > → binary | decimal
10. Dada a grama´tica BNF a seguir:
< decl > → < tipo > < var − lista >
< tipo > → int | float
< var − lista > → id, < var − lista > | id
a) Fatore essa grama´tica a` esquerda.
b) Verifique se a sentenc¸a int x, y, z e´ reconhecida por essa grama´tica
mostrando as ac¸o˜es de derivac¸a˜o mais a` esquerda.
11. Dada a grama´tica EBNF a seguir:
< expr > → < termo > { < soma > < termo > }
< soma > → + | –
< termo > → < fator > { < mult > < fator > }
< mult > → *
< fator > → num | ( < expr > )
onde { e } representam repetic¸a˜o, fac¸a:
a) Fatore essa grama´tica a` esquerda, se necessa´rio.
b) Escreva pseudoco´digos para os na˜o-terminais dessa grama´tica.
12. Considere a grama´tica a seguir:
< lexp > → < atomo > | < lista >
< atomo > → num | id
< lista > → ( < lexp− seq > )
< lexp− seq > → < lexp > , < lexp− seq > | < lexp >
3
a) Fatore essa grama´tica a` esquerda.
b) Verifique se a sentenc¸a (a, (b, (2)), (c)) e´ reconhecida por essa gra-
ma´tica mostrando as ac¸o˜es de derivac¸a˜o mais a` esquerda.
c) Escreva pseudoco´digos para os na˜o-terminais dessa grama´tica.
4

Outros materiais