·

Ciência da Computação ·

Linguagens de Programação

Send your question to AI and receive an answer instantly

Ask Question

Preview text

APS Professor Sérgio Assunção Monteiro email smonteirounicariocaedubr 1 A atividade deve ser entregue individualmente no local apropriado do AVA 2 As resoluções da atividade devem ser digitadas 3 A atividade deve conter 1 Nome da disciplina 2 Código da Turma 3 Nome e matrícula do aluno 4 A data de entrega é até 05MAIO2021 5 Todas as respostas devem ser justificadas 6 O arquivo deve estar no formato PDF Considere o código abaixo escrito na linguagem C x 0 whilex 10 x x 5 printfo valor de x é i x Questão 01 identifique os lexemas e tokens do programa através da análise léxica Questão 02 Descreva uma ou mais gramáticas que contemplem a estrutura apresentada no código Questão 03 Apresente a respectiva árvore sintática do programa Questão 04 Traduza o programa para representação de três endereços Considere o código abaixo escrito na linguagem C x 0 whilex 10 x x 5 printfo valor de x é i x Questão 01 identifique os lexemas e tokens do programa através da análise léxica R Na análise léxica o código é dividido em lexemas que são as menores unidades significativas do código Os lexemas são então classificados em tokens que são os símbolos que representam essas unidades no código No caso do código apresentado os lexemas incluem as palavraschave while e printf os operadores e os delimitadores e e os identificadores x e 10 Os tokens correspondentes incluem while numero 5 0 10 identificador 1 literal o valor de x é i Abaixo será apresentado uma tabela para que fique melhor a visualização Token Padrão Lexema Descrição while Sequência das palavras w h i l e while While WHILE Palavra reservada Comando de atribuição numero 5 0 10 Dígitos numéricos 5 0 10 Constante numérica identificador 1 Nomes de variáveis funções parâmetros de funções printf x Nome de variável nome de função Delimitador de função Operador de comparação menor ou igual literal o valor de x é i Caracteres entre o valor de x é i Constante literal Delimitador de fim de comando Questão 02 Descreva uma ou mais gramáticas que contemplem a estrutura apresentada no código R Uma gramática é uma forma de especificar a estrutura sintática de uma linguagem A gramática proposta neste caso representa a estrutura do código em termos de regras que definem como as várias partes do código devem ser organizadas No caso da gramática apresentada ela é composta por regras que descrevem a estrutura do programa em termos de atribuições comandos de repetição while blocos de código delimitados por chaves e um comando de saída printf 1 Atribuição identificador x numero 0 2 Condição identificador x numero 10 3 Bloco while no exemplo do código o bloco é representado por um simples tab na indentação o que funciona como um 4 Comando printf identificador printf literal o valor de x é i identificador x Questão 03 Apresente a respectiva árvore sintática do programa R A árvore sintática nada mais é do que uma representação hierárquica da estrutura sintática de um programa A partir da análise sintática ela é construída e envolve a identificação das diferentes partes do código e a sua organização em uma hierarquia A árvore sintática do código proposto reflete a estrutura do programa em termos de suas partes constituintes incluindo a atribuição inicial de x a 0 o comando de repetição while que verifica a condição x 10 o bloco de código dentro do comando while que adiciona 5 a x e o comando de saída printf que exibe o valor final de x A árvore proposta fica assim bloco comando atribuição id ATR expressão x expressão soma id soma numero x 5 Cada nó representa uma construção sintática e as arestas indicam as relações entre essas construções O nó raiz é o bloco que contém apenas um comando while que por sua vez contém uma atribuição e uma expressão A expressão por sua vez é uma expressão soma que contém duas expressões um id a variável x e um número 5 Questão 04 Traduza o programa para representação de três endereços R A representação de três endereços é uma forma de traduzir um programa em uma forma mais simplificada ou seja mais facilmente executável Essa técnica envolve a decomposição das instruções do programa em uma série de operações básicas que podem ser executadas diretamente pelo computador Para o algoritmo apresentado apresentado a representação de três endereços reflete a estrutura do programa em termos de operações básicas incluindo a atribuição inicial x 0 o comando condicional id que verifica a condição x 10 o comando de atribuição que incrementa o valor de x x x 5 e o comando goto que controla o fluxo do programa entre as diferentes instruções O resultado é um código mais simples e mais eficiente que pode ser facilmente traduzido em código de máquina ou executado diretamente por um interpretador Representação de três endereços do programa 1 x 0 2 L1 if x 10 goto L2 3 goto L3 4 L2 x x 5 5 goto L1 6 L3 printfo valor de x é i x Considere o código abaixo escrito na linguagem C x 0 whilex 10 x x 5 printfo valor de x é i x Questão 01 identifique os lexemas e tokens do programa através da análise léxica R Na análise léxica o código é dividido em lexemas que são as menores unidades significativas do código Os lexemas são então classificados em tokens que são os símbolos que representam essas unidades no código No caso do código apresentado os lexemas incluem as palavraschave while e printf os operadores e os delimitadores e e os identificadores x e 10 Os tokens correspondentes incluem while numero 5 0 10 identificador 1 literal o valor de x é i Abaixo será apresentado uma tabela para que fique melhor a visualização Token Padrão Lexema Descrição while Sequência das palavras w h i l e while While WHILE Palavra reservada Comando de atribuição numero 5 0 10 Dígitos numéricos 5 0 10 Constante numérica identificador 1 Nomes de variáveis funções parâmetros de funções printf x Nome de variável nome de função Delimitador de função Operador de comparação menor ou igual literal o valor de x é i Caracteres entre o valor de x é i Constante literal Delimitador de fim de comando Questão 02 Descreva uma ou mais gramáticas que contemplem a estrutura apresentada no código R Uma gramática é uma forma de especificar a estrutura sintática de uma linguagem A gramática proposta neste caso representa a estrutura do código em termos de regras que definem como as várias partes do código devem ser organizadas No caso da gramática apresentada ela é composta por regras que descrevem a estrutura do programa em termos de atribuições comandos de repetição while blocos de código delimitados por chaves e um comando de saída printf 1 Atribuição identificador x numero 0 2 Condição identificador x numero 10 3 Bloco while no exemplo do código o bloco é representado por um simples tab na indentação o que funciona como um 4 Comando printf identificador printf literal o valor de x é i identificador x Questão 03 Apresente a respectiva árvore sintática do programa R A árvore sintática nada mais é do que uma representação hierárquica da estrutura sintática de um programa A partir da análise sintática ela é construída e envolve a identificação das diferentes partes do código e a sua organização em uma hierarquia A árvore sintática do código proposto reflete a estrutura do programa em termos de suas partes constituintes incluindo a atribuição inicial de x a 0 o comando de repetição while que verifica a condição x 10 o bloco de código dentro do comando while que adiciona 5 a x e o comando de saída printf que exibe o valor final de x A árvore proposta fica assim bloco comando atribuição id ATR expressão x expressão soma id soma numero x 5 Cada nó representa uma construção sintática e as arestas indicam as relações entre essas construções O nó raiz é o bloco que contém apenas um comando while que por sua vez contém uma atribuição e uma expressão A expressão por sua vez é uma expressão soma que contém duas expressões um id a variável x e um número 5 Questão 04 Traduza o programa para representação de três endereços R A representação de três endereços é uma forma de traduzir um programa em uma forma mais simplificada ou seja mais facilmente executável Essa técnica envolve a decomposição das instruções do programa em uma série de operações básicas que podem ser executadas diretamente pelo computador Para o algoritmo apresentado apresentado a representação de três endereços reflete a estrutura do programa em termos de operações básicas incluindo a atribuição inicial x 0 o comando condicional id que verifica a condição x 10 o comando de atribuição que incrementa o valor de x x x 5 e o comando goto que controla o fluxo do programa entre as diferentes instruções O resultado é um código mais simples e mais eficiente que pode ser facilmente traduzido em código de máquina ou executado diretamente por um interpretador Representação de três endereços do programa 1 x 0 2 L1 if x 10 goto L2 3 goto L3 4 L2 x x 5 5 goto L1 6 L3 printfo valor de x é i x