Prévia do material em texto
Disciplina: Linguagens de Programação e Estruturas de Dados (ADS12) Avaliação: Avaliação I - Individual Semipresencial ( Cod.:637408) ( peso.:1,50) Prova: 18217946 Nota da Prova: 10,00 Legenda: Resposta Certa Sua Resposta Errada 1. Um grande recurso na programação de computadores são as variáveis. Como o próprio nome sugere, o conteúdo delas sofre alteração durante a execução do programa. Sobre a definição de uma variável em programação de computadores, assinale a alternativa CORRETA: a) Um local na memória pra guardar uma matriz. b) Um local na memória pra guardar um ponteiro e um registro. c) Um local na memória pra guardar um valor de tipo de dado predefinido. d) Um local na memória pra guardar um vetor. 2. Uma linguagem de programação é uma linguagem que possui sintaxe (formato) e semântica (significado), e é usada para expressar uma sequência de ações computacionais que formam um programa. Neste sentido, destacam-se os tipos de dados que definem conjunto de valores e as operações aplicáveis sobre esses valores. Os tipos de dados servem fundamentalmente para oferecer informações relevantes aos programadores e aos compiladores (ou interpretadores) sobre os dados usados pelos programas. Sobre o exposto, classifique V para as sentenças verdadeiras e F para as falsas: ( ) São tipos de dados primitivos na linguagem de programação JAVA: inteiro, booleano e caractere. ( ) O tipo de dado usado para armazenar expressões condicionais, apresentando apenas duas opções de valores (verdadeiro ou falso) é o booleano. ( ) Matriz é um tipo de dado primitivo. ( ) Os compiladores geram a partir do código-fonte, o arquivo executável do aplicativo. Este só pode ser executado, não sendo passível de alterações. Assinale a alternativa que apresenta a sequência CORRETA: a) V - V - F - V. b) F - V - V - F. c) V - F - F - V. d) F - V - V - V. 3. As estruturas de dados definem a organização, os métodos de acesso e as opções de processamento e armazenamento de todos os dados utilizados por um programa de computador. Com relação às estruturas de dados estudadas, classifique V para as sentenças verdadeiras e F para as falsas: ( ) Os tipos básicos de dados, também conhecidos como tipos primitivos, não possuem estrutura sobre seus valores, sendo assim não são indivisíveis. ( ) Arranjos são tipos de dados estruturados capazes de agrupar componentes do mesmo tipo e possuem tamanho máximo predefinido. ( ) Conjuntos são tipos de dados estruturados que servem para agregar componentes de tipos diferentes. ( ) Sequências e registros não são tipos de dados estruturados. ( ) Os tipos de dados definidos pelo usuário são estruturas de dados definidas, com a finalidade de representar os tipos de dados que não foram previstos pelas linguagens de programação. Assinale a alternativa que apresenta a sequência CORRETA: a) F - V - F - F - F. b) V - F - V - V - F. c) V - V - F - V - V. d) F - F - F - V - F. 4. Os números de Fibonacci correspondem a uma sequência infinita na qual os dois primeiros termos são 0 e 1. Cada termo da sequência, à exceção dos dois primeiros, é igual à soma dos dois anteriores, conforme a relação de recorrência a seguir. f(n) = f(n-1) + f(n-2) Para desenvolver este algoritmo é possível fazer ele iterativo ou recursivo. Sobre o exposto, analise as afirmativas a seguir: I- A iteratividade indireta é caracterizada, por exemplo, quando uma função C chama a função D, e esta função D, chama a função C. II- A solução recursiva possui a vantagem de ser implementada diretamente a partir da definição do problema. III- A solução iterativa é mais vantajosa em termos de eficiência, mas exige mais atenção na implementação. IV- A solução iterativa realiza economia de espaço na memória do computador. Assinale a alternativa CORRETA: a) As afirmativas II e III estão corretas. b) As afirmativas I e II estão corretas. c) As afirmativas III e IV estão corretas. d) As afirmativas I e IV estão corretas. 5. Escopo dinâmico: para as linguagens com escopo dinâmico, a vinculação das variáveis ao escopo é realizada em tempo de execução. Se uma variável é local ao bloco, então o uso da dada variável no bloco será sempre vinculado àquela local. Contudo, se a variável for não local, a sua vinculação depende da ordem de execução, a última vinculada na execução. A consequência disso é que, em um mesmo bloco de comandos, um identificador pode ter significados diferentes, e o programador precisa ter a ideia precisa de qual variável está sendo usada. Suponha que uma linguagem de programação tenha sido projetada com vinculação e verificação estáticas para tipos de variáveis, além de passagem de parâmetros por valor. Também é exigido pela especificação da linguagem que programas sejam compilados integralmente e que não é permitido compilar bibliotecas separadamente. Durante uma revisão da especificação da linguagem, alguém propôs que seja adicionado um mecanismo para suporte a variáveis com escopo dinâmico. Sobre a proposta de modificação da linguagem, analise as seguintes sentenças: I- As variáveis com escopo dinâmico podem ser tratadas como se fossem parâmetros para os subprogramas que as utilizam, sem que o programador tenha que especificá-las ou declarar seu tipo (o compilador fará isso). Assim, eliminasse a necessidade de polimorfismo e é possível verificar tipos em tempo de compilação. II- Como diferentes subprogramas podem declarar variáveis com o mesmo nome mas com tipos diferentes, se as variáveis com escopo dinâmico não forem declaradas no escopo onde são referenciadas, será necessário que a linguagem suporte polimorfismo de tipos. III- Se as variáveis dinâmicas forem declaradas tanto nos escopos onde são criadas como nos subprogramas em que são referenciadas, marcadas como tendo escopo dinâmico, será possível identificar todos os erros de tipo em tempo de compilação. Assinale a alternativa CORRETA: a) Somente a sentença I está correta. b) As sentenças I e III estão corretas.. c) Somente a sentença II está correta. d) As sentenças II e III estão corretas. 6. A partir da construção de um algoritmo, podem ser desenvolvidos programas que executam as mais variadas operações matemáticas através dos operadores aritméticos e lógicos. Assinale a alternativa CORRETA que apresenta o operador aritmético capaz de retornar o resto da divisão de valores inteiros: a) Mod b) Div c) <> d) <+ 7. Na Ciência da computação, uma estrutura de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente, facilitando sua busca e modificação. Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Por exemplo, as B-trees são particularmente indicadas para a implementação de bases de dados, enquanto que a implementação de compiladores geralmente requer o uso de tabela de dispersão para a busca de identificadores. Na estrutura apresentada, "TIPEST", cuja delimitação ocorre através de <estrutura> e a finalização através de <fim-estrutura>, refere-se ao armazenamento do tipo: a) Lista duplamente encadeada. b) Vetor. c) Matriz. d) Registro. 8. O computador deve converter os comandos dados em linguagem de alto nível para linguagem de máquina (códigos binários). Para isso, ele deve utilizar um tipo de software tradutor. Qual tipo de software tradutor deve ser utilizado para programas em geral, quando a velocidade de execução é uma exigência de alta prioridade? a) Compiladores. b) Macroprocessadores. c) Interpretadores. d) Tradutores híbridos. 9. Um algoritmo pode ser definido como uma sequência de passos/instruções que visam atuar na solução de um problema que pode ou não ser recorrente. Embora o conceito de algoritmos pareça complexo, na verdade, o aplicamos inconscientemente muitas vezes em nosso dia a dia. Sobre os conceitos que dão sustentação aos algoritmos, classifique V para as sentenças verdadeirase F para as falsas: ( ) Dados são valores sem significado contextual. ( ) Uma pseudolinguagem é uma linguagem intermediária que pode ser traduzida para uma linguagem de programação propriamente dita. ( ) Uma informação não possui significado contextual atrelado a um valor. ( ) A maneira como as instruções são encadeadas dentro de um programa é conhecida como lógica de programação. ( ) As linguagens de programação, em sua maioria, seguem exatamente a mesma sintaxe do portugol. Assinale a alternativa que apresenta a sequência CORRETA: a) V - F - V - F - F. b) V - V - F - V - F. c) F - V - F - V - F. d) F - F - F - V - V. 10. Uma função é denominada recursiva quando ela é chamada novamente dentro de seu corpo. Implementações recursivas tendem a ser menos eficientes, porém facilitam a codificação e seu entendimento. Considere a função recursiva f(), apresentada na imagem a seguir, a qual foi escrita em linguagem C. Suponha que a função f() é acionada com os seguintes parâmetros de entrada: F([2, -4, 7, 0, -1, 4}, 6); Nesse caso, o valor de retorno da função f() será: a) 15. b) 10. c) 8. d) 13. Prova finalizada com 10 acertos e 0 questões erradas.