Questões de Programação

Limpar Busca

Na criação de programas de computador, utilizam-se variáveis para armazenar dados mais simples como números e textos, ou mais complexos como estruturas de dados (listas ou dicionários). As variáveis podem ser mutáveis ou imutáveis. Nesse contexto, é correto afirmar:

  • A as variáveis mutáveis podem ter seu valor alterado, mas essa alteração causa necessariamente a alteração do endereço de memória.
  • B as variáveis imutáveis podem armazenar variáveis mutáveis, possibilitando a alteração do conteúdo que a variável faz referência.
  • C as variáveis mutáveis servem apenas para tipos simples, como números e textos, e não para estruturas de dados.
  • D as variáveis imutáveis somente são utilizadas para variáveis globais, impedindo que outras partes do programa possam alterá-las.
  • E as variáveis mutáveis somente são utilizadas por linguagens dinâmicas em que o tipo da variável não é determinístico.

No contexto de desenvolvimento de sistemas e programação orientada a objetos, assinale a alternativa correta:

  • A A programação orientada a objetos dispensa o uso de encapsulamento.
  • B Métodos herdados não podem ser sobrescritos na classe filha.
  • C Herança é um princípio da programação orientada a objetos que permite que uma classe herde atributos e métodos de outra.
  • D A herança só pode ocorrer quando as classes estão escritas na linguagem SQL.

O paradigma lógico de programação é fundamentado na lógica matemática e na definição de fatos e regras para a resolução de problemas. Em linguagens como Prolog, qual característica essencial define esse paradigma em contraste com os paradigmas imperativo e funcional?

  • A A resolução de problemas por meio de unificação de termos e backtracking, sem especificar passo a passo a sequência de execução.
  • B A definição de funções puras com avaliação preguiçosa, permitindo a composição funcional de chamadas recursivas.
  • C A manipulação direta de ponteiros e estruturas de memória alocadas dinamicamente.
  • D A execução paralela de processos com controle explícito de concorrência baseado em threads.
  • E A utilização de laços de repetição e variáveis mutáveis como elementos centrais da lógica de inferência.

Em linguagens de programação, algumas características são comumente utilizadas para descrevê-las, como o sistema de tipagem, nível ou se é compilada ou interpretada, por exemplo. Embora a definição de nível não seja única e universal, sendo o termo muitas vezes utilizado de forma comparativa, assinale a alternativa que representa a interpretação mais adequada e coerente com o conceito de nível.

  • A uma linguagem de baixo nível é sempre interpretada e de tipagem forte.
  • B uma linguagem de baixo nível é sempre compilada e pode não ter sistema de tipagem.
  • C uma linguagem de alto nível é sempre interpretada e de tipagem fraca.
  • D uma linguagem de alto nível é sempre compilada e de tipagem forte.
  • E uma linguagem de alto nível, pode ser tanto compilada como interpretada, mas tem sempre tipagem forte.

Dado o pseudocódigo a seguir:



função f(a: Natural) → Booleano


se a é 0


então devolve Verdadeiro


senão devolve g(a - 1)



função g(a: Natural) → Booleano


se a é 0 então devolve Falso


senão devolve f(a - 1)



Assinale a alternativa correta.

  • A Não é possível implementar essas funções na maioria das linguagens de programação, pois existe um ciclo de dependência entre elas.
  • B As funções estão mal definidas, pois, para algumas entradas válidas, elas nunca param de executar.
  • C Essas funções não são eficientes, pois é possível defini-las de maneira que não dependam uma da outra.
  • D O propósito da função f é contar até zero e devolver verdadeiro, enquanto o propósito da função g é contar até zero e devolver falso.
  • E Não é possível identificar o propósito das funções.