Buscar

Avaliação Discursiva - Linguagens de Programação e Estruturas de Dados (ADS12)

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 17 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

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 6, do total de 17 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

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 9, do total de 17 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

Linguagens de Programação e Estruturas de Dados (ADS12)
Avaliação Final (Discursiva) - Individual FLEX
1. Um comerciante deseja calcular a média de preço dos seus produtos, mas
ele não sabe quantos produtos têm na loja. Para isso, desenvolva um
algoritmo que receba os valores e, para encerrar, o comerciante digita 0. Ao
final, apresente uma mensagem com a quantidade de produtos e o valor
médio.
Resposta Esperada:
Algoritmo Mediaproduto;
var
Cont : inteiro;
Num, Soma, Media : real;
Inicio
Soma := 0;
escreva(' Digite os elementos(-1 para encerrar):');
leia (Num);
Cont := 0;
Enquanto Num <> 0 faça
Inicio
Soma := Soma + Num;
Cont := Cont + 1;
leia(Num);
fim;
Media := Soma/Cont;
escreva (Quantidade = ', Cont);
escreva ('Media = ', Media);
fim.
2. As estruturas de dados, na maioria dos casos, baseiam-se nos tipos de
armazenamento vistos dia a dia, ou seja, são a transformação de uma forma de
armazenamento já conhecida e utilizada no mundo real adaptada para o mundo
computacional. Disserte sobre a diferença no uso das variáveis e as
constantes.
Resposta Esperada:
Dentro de um programa existem valores que precisam ser manipulados, ou
seja, eles recebem valores de outros campos; eles podem ser manipulados e
por esse motivo são variáveis. Já as constantes, como o nome sugere, tem
seu valor inalterado durante a execução do programa, por isso são
categorizados como constantes.
3. As estruturas de dados, na maioria dos casos, baseiam-se nos tipos de
armazenamento vistos dia a dia, ou seja,são a transformação de uma forma
de armazenamento já conhecida e utilizada no mundo real adaptada para
omundo computacional. Disserte sobre os tipos primitivos de dados.
Resposta Esperada:
Os tipos de dados primitivos são formados por números inteiros,
números, pontos flutuantes, caracteres e tipos nulos.Esses tipos de
dados servem para armazenar informações que usamos ou que
trabalhamos no nosso dia a dia. Por Exemplo: o booleano, que
armazena dois estados que são verdade ou falso, verdade ou mentira,
ligado ou desligado.Temos os tipos numéricos que armazenam valores,
que podem ser reais ou inteiros, e o tipo de caractere, que armazena as
palavras.
4. Ao iniciar a construção de um algoritmo, o desenvolvedor deverá analisar
inicialmente quais os dados deverão ser inseridos pelo usuário, a fim de que
sejam definidas as variáveis e, se for o caso, as constantes que serão
utilizadas pelo algoritmo na execução das instruções, sendo que estas
informações deverão ser declaradas no início do algoritmo. Descreva os
principais tipos primitivos de dados numéricos que podem ser utilizados na
construção de algoritmos e seus principais operadores aritméticos
Resposta Esperada:
O tipo Inteiro receberá valores numéricos sem a presença de casas
decimais, é o conjunto de números inteiros conhecidos pela regra
matemática. Exemplo: - 2, 3, 1520. *O tipo Real receberá valores
numéricos com a presença de casas decimais, podendo também
receber valores inteiros.Exemplo: 1.5, 3, 1520.22 *Os operadores
aritméticos binários são: * ( multiplicação ), / ( divisão ), %( modulo ), + (
soma), - (subtração). *Os operadores aritméticos unários são: +
(positivo) e - (negativo), ++ (incremento) - (decremento).
5. Na construção de um algoritmo, o desenvolvedor poderá chegar a uma
encruzilhada na qual terá que verificar qual caminho tomar. Essa
decisão será baseada na análise de uma estrutura de seleção, que definirá o
caminho após a análise de uma condição que retornará um valor verdadeiro
ou falso. Com base nisso, desenvolva um algoritmo fazendo uso da estrutura
de seleção SE - ENTÃO. O usuário deverá informar a sua idade, e o
algoritmo deverá verificar se a idade é igual ou superior a dezoito anos. Se o
resultado for verdadeiro, deverá ser exibida a mensagem "PODE OBTER A
CARTEIRA DE HABILITAÇÃO", senão deverá ser exibida a mensagem
"NÃO PODE OBTER A CARTEIRA DE HABILITAÇÃO". Defina o nome do
algoritmo como Verifica_CNH. Conforme imagem a seguir:
algoritmo "Verifica_CNH" var Idade: INTEIRO inicio ESCREVAL ("Digite
sua idade: ") LEIA (Idade) SE Idade >= 18 ENTAO
ESCREVAL ("PODE OBTER A CARTEIRA DE HABILITAÇÃO") SENAO
ESCREVAL ("NÃO PODE OBTER A CARTEIRA DE
HABILITAÇÃO") FIMSE fimalgoritmo
6. Para construir adequadamente um algoritmo, algumas análises são
necessárias, por exemplo, quais dados serão inseridos pelos usuários e seus
respectivos tipos. Isso é importante para o processo de definição das
variáveis que armazenarão as informações. Também é importante
pensar se o programa vai precisar usar as constantes, que são um tipo
específico de variável que já tem o valor predefinido na área de
declaração das variáveis que serão usadas durante a execução do
programa. Desenvolva o início de um algoritmo de nome AVALIACAO.
Declare duas variáveis: NOME_ALUNO e NOTA_ALUNO. Use como
constante a variável PESO, atribuindo a ela o valor 7.
Resposta Esperada:
Algoritmo AVALIACAO; Constantes peso = 7; Variáveis NOME_ALUNO :
caractere; NOTA_ALUNO : real
7. Com a popularização de linguagens como Java e C#, e sua forte adoção
no mercado de TI, é comum nos depararmos com debates sobre as
diferenças entre linguagens interpretadas e linguagens compiladas. Disserte
sobre as linguagens de programação compilada.
Resposta Esperada:
Uma das disciplinas de maior dificuldade, segundo os alunos durante o
curso de sistema, é a disciplina de estrutura de dados. Compreender
como um conjunto de instruções traduz outro conjunto de instruções
em um programa pode não ser uma tarefa simples. Por isso, na primeira
fase da disciplina, somos convidados a conhecer os dois processos da
estrutura de dados, a compilação e a interpretação. Elas são as duas
maneiras que um programa tem para traduzir um código.
Neste processo, um computador precisa identificar e interpretar
códigos e linguagens. Após esta sequência de processos de
interpretação, o computador realizará a execução das tarefas
solicitadas. Para entender o processo de compilação, podemos fazer
uma analogia com 1 tradutor, que pega um texto em uma determinada
língua e traduz para outro. Nos programas, a tradução é feita para um
código-fonte da máquina.
8. Com a popularização de linguagens como Java e C#, e sua forte adoção
no mercado de TI, é comum nos depararmos com debates sobre as
diferenças entre linguagens interpretadas e linguagens compiladas. Disserte
sobre as linguagens de programação interpretada.
Resposta Esperada:
Compreender como um conjunto de instruções traduz outro conjunto de instruções
em um programa pode não ser uma tarefa simples. Por isso, na primeira fase da
disciplina, somos convidados a conhecer os dois processos da estrutura de dados,
a compilação e a interpretação. Elas são as duas maneiras que um programa tem
para traduzir um código. Diferente dos programas compilados, na técnica
de interpretação, um programa é convertido em outro, dinamicamente,
ou seja, toda vez que uma execução for necessária, o código-fonte será
traduzido para uma linguagem que possa ser executada, direta ou
indiretamente, pelo sistema operacional. Esses tipos de programas
possuem uma execução mais rápida e possuem maior dinamicidade e
podem ser utilizados em vários sistemas operacionais, possuem maior
portabilidade. Em contrapartida, eles perdem no desempenho, pois seu
desempenho na execução dos códigos para a linguagem da máquina é
inferior aos programas compilados.
9. A linguagem de programação Java oferece vários mecanismos para a criação
de novos tipos de dados a partir de tipos que já existem. Um desses mecanismos é
o que permite a construção de vetores e matrizes, utilizados normalmente para
definir estruturas em que existe a necessidade de armazenamento de mais de um
objeto do mesmo tipo. Entretanto, a utilização destas estruturas traz algumas
limitações, como a necessidade de se conhecer quantos objetos devem ser
armazenados. As listas encadeadas atuam de forma a eliminar esta limitação,
permitindo a adição de novos objetos enquanto houver espaço n a memória da
JVM (Java Virtual Machine). Crie uma classechamada Aluno, contendo os
atributos: matrícula do tipo inteiro e nome do tipo String, além de um atributo que
fornecerá a estrutura para o funcionamento de uma lista encadeada. Obs.: os
getters e os setters do nome e da matrícula podem ser ignorados para fins de
simplicidade.
Resposta Esperada: publi c
class Aluno { pr ivate int
matricula; private String
nome; privat e Aluno
proximoAluno;
public Aluno g etProximoAluno() {
return proximoAluno ;
}
public void setProx imoAluno (Aluno proximoAluno) {
this.proximoAluno = proximoAluno;
}
}
10. A utilização de subprogramas é uma prática para desenvolvimento de
software que, com o passar d o tempo, foi adotada em larga escala pelas
linguagens de programação. Linguagens modernas, como Java, C #, Phyton,
Ruby, Scala, PHP, entre outras, utilizam a estratégia de divisão e m
subprogramas para determinar o funcionamento dos softwares escritos nas
mesmas. Considerando o que foi exposto, disserte sobre as principais
vantagens da utilização de funções/métodos na escrita de software.
Resposta Esperada:
Os subprogramas auxiliam a dividir o problema a ser resolvido em partes
menores, reduzindo proporcionalmente a sua complexidade. Através de sua
utilização, é possível determinar funcionalidades específicas para cada
subprograma, o que auxilia a correção de bugs no código fonte. Da mesma
forma, se cada subprograma possui uma função específica, o trabalho de
manutenção do código também se torna mais fácil, visto que, caso uma nova
funcionalidade seja desejada, em geral bastaria adicionar um novo método
ou função.
11. Um professor deseja saber qual a melhor de três notas de seus alunos.
Para isso , escreva um algoritmo que solicite e armazene três notas. O
algoritmo deverá calcular e apresentar uma mensagem com a maior nota. O
código a seguir possui incongruências, analise-o e reescreva-o corretamente.
12. Na linguagem de programação Java, os vetores e as matrizes são
normalmente utilizados para definir estruturas onde existe a necessidade de
armazenamento de mais de um objeto do mesmo tipo. Entretanto, a
utilização destas estruturas traz algumas limitações, como, por exemplo, a
necessidade de se conhecer quantos objetos devem ser armazenados. As
listas encadeadas atuam de forma a eliminar esta limitação, permitindo a
adição de novos objetos enquanto houver espaço na memória da JVM (Java
Virtual Machine). Tendo em vista o que foi exposto, crie uma classe chamada
Aluno, contendo os atributos matrícula do tipo inteiro e nome do tipo String,
além de um atributo que fornecerá a estrutura para o funcionamento de uma
lista encadeada. Obs.: os getters e setters do nome e da matrícula podem
ser ignorados para fins de simplicidade.
Resposta Esperada:
13. Na resolução de um problema por meio de um programa, a primeira
providência é conceber um algoritmo adequado. A eficiência de um algoritmo
qualquer está intimamente relacionada à disposição, na memória, dos dados
que são tratados pelo programa. Por exemplo, se frequentemente
enfrentamos o problema de descobrir os números de telefones de nossos
conhecidos, é conveniente dispor de uma relação de números, organizada
em uma agenda. Se a organização for feita por ordem alfabética, a agenda
de fato ajuda. Se, porém, organizássemos nossa agenda pela ordem de
altura das pessoas, com raras exceções, a agenda se tornaria difícil de
manusear. As estruturas de dados são formas de distribuir e relacionar os
dados disponíveis, de modo a tornar mais eficientes os algoritmos que
manipulam esses dados. Disserte sobre a importância da estrutura de dados
na organização e composição dos aplicativos computacionais.
Resposta Esperada:
Uma vez que procedimentos são, efetivamente, processadores de
dados, a eficiência de um procedimento está muito associada à forma
como seus dados são organizados. A estrutura de dados utiliza
diversos mecanismos de organização de dados para atender aos
diferentes requisitos de processamento. As estruturas de dados
definem a organização, métodos de acesso e opções de processamento
para a informação manipulada pelo programa.
14. O collections framework do Java possui alguns tipos que podem ser
comparados com arrays, porém estes possuem mais recursos, eficiência e
vantagens em relação ao array ou vetor normal. Além disso, o collections
framework permite ordenar os objetos através de algum critério desejado,
bastando implementá-lo. Um exemplo deste tipo de ordenação seria por
nome, utilizando-se o atributo nome de uma classe Pessoa. Para
desenvolver a comparação, deve ser feita a implementação da interface
Comparable na classe desejada, além do método "compareTo". Neste
contexto, desenvolva uma classe qualquer, na linguagem de programação
Java, que realize a ordenação de uma lista de objetos através da interface
Comparable. Apresente as duas classes criadas, uma com a implementação
da interface Comparable, e a outra com um exemplo de execução da
ordenação de uma lista do objeto do tipo da classe com implementação
Comparable.
Resposta Esperada:
O acadêmico deve desenvolver uma classe com a interface
Comparable, como a classe Carro implements Comparable <Carro> a
seguir exemplificada, na qual deve ter obrigatoriamente o método
"compareTo". Além disso, deve ser desenvolvida uma segunda classe,
conforme exemplo "ExemploComparable", para instanciar a classe
anterior (Comparable), como nas linhas 9 a 12, adicionando-a à lista
(lista.add), linhas 16 a 20, e então invocar o método sort
("Collections.sort(lista)").
15. Triângulo é uma figura geométrica formada por três retas que se
encontram duas a duas e não passam pelo mesmo ponto, formando três
lados e três ângulos. Para construir um triângulo, não podemos utilizar
qualquer medida, tem que seguir a condição de existência, ou seja, é
necessário que a medida de qualquer um dos lados seja menor que a soma
das medidas dos outros dois e maior que o valor absoluto da diferença entre
essas medidas. Quanto aos lados, o triângulo pode ser: Equilátero, Isósceles
ou Escaleno. Baseado no conceito desses triângulos, faça um algoritmo que
leia três valores que representam os três lados de um triângulo e verifique: ?
Se o triângulo é válido. ? Se é um triângulo equilátero, isósceles ou escaleno.
Propriedades de um triângulo. ? A soma de dois lados não pode ser menor
que a do terceiro lado (ou o comprimento de cada lado deve ser menor que a
soma dos outros dois lados). ? Equilátero: três lados iguais. ? Isósceles: dois
lados iguais. ? Escaleno: três lados diferentes.
Resposta Esperada:
Algoritmo Triangulo;
Var
lado1, lado2 , lado3 : real
Inicio
Escreva('Digite o lado 1: ');
Leia(lado1);
Escreva('Digite o lado 2: ');
Leia(lado2);
Escreva('Digite o lado 3: ');
Leia(lado3);
se (lado1+lado2<lado3)
OU (lado2+lado3<lado1)
OU (lado1+lado3<lado2) entao
begin
Escreva('O triângulo não é válido.')
senao se (lado1=lado2)
E (lado2=lado3) entao
begin
Escreval('O triângulo é equilátero')
Senao Se (lado1<>lado2)
E (lado2<>lado3)
E (lado1<>lado3) entao
begin
Escreval('O triangulo é escaleno')
screval('O triangulo é escaleno')
Senão
Escreva('O triângulo é isósceles');
Fim;
Fim;
Fim;
fim;
16. As linguagens de programação possuem como característica um
conjunto de palavras reservadas, que não podem ser usadas e m outros
contextos. Essas palavras - chave são aquelas palavras ou identificadores
ue têm um significado implícito e relevante para a linguagem de
programação, pois são reservadas para usos específicos da gramática da
linguagem de programação. Disserte sobre as diferenças entre palavras
reservadas usadas na linguagem C e o conceito das variáveis.
Resposta Esperada:
A linguagem C possu i 32 palavras reservadas, que não podem ser
utilizadas como variáveis. As variáveis podem ser qualquer outra pa
lavra diferente das reservadas. S ão as palavras que o d esenvolvedor
da linguagem utiliza para executar comandos/instrução e, por isso, não
podem ser usadas para outros fins, que não os que previamente
definido. Por exemp lo a palavra IF, que e mmuitas linguagens é
reservado por fazer parte da sintaxe do comando.
17. Na programação orientada a objetos, é bastante comum o uso de
estruturas que permitam oarmazenamento de um conjunto de objetos para
uso posterior. Uma das maneiras de resolver este problema é através de
matrizes e vetores que, embora sejam bastante eficientes no
armazenamento de objetos,apresentam dificuldades na recuperação dos
mesmos. A api de collections da plataforma Java procura disponibilizar uma
alternativa para utilização neste tipo de situação. Disserte sobre as
estruturas disponíveis ArrayList e HashMap e suas principais
diferenças.
Resposta Esperada:
ArrayList - tipo de estrutura semelhante a uma matriz. Permite a
colocação de qualquer tipo de objetos, aceitando duplicatas e
ordenação. Objetos podem ser referenciados através do índice e a
ordem dos elementos é exatamente a mesma da inserção. HashMap -
tipo de estrutura que relaciona um objeto- chave a um objeto valor, o
que é benéfico para a busca de elementos. Tanto a chave quanto o valor
são object, o que permite que se coloque qualquer tipo de dados para a
chave e o valor. A ordem não necessariamente é a mesma da inserção,
pois os objetos são inseridos em uma espécie de pool e recuperados
de acordo com a sua chave. A estrutura aceita duplicatas, desde que
referenciadas por índices diferentes. Em contrapartida, não podem
existir índices repetidos.
18. Uma das dificuldades de se implementar uma lista encadeada, ao invés
de utilizar implementações prontas, é a necessidade de se controlar as
estruturas que dão sustentação à própria lista de maneira
programática.Considerando uma lista encadeada, que contenha 6 objetos do
tipo String, avalie o efeito da execução do método a seguir sobre esta lista,
dissertando sobre suas possíveis consequências para a mesma.
Resposta Esperada:
Ao executarmos este método, inicialmente criamos um novo No
contendo a String vinda como parâmetro. O segundo passo,
demonstrado na linha 14, é criar um nó que referencie o nó que
atualmente é o segundo nó da lista. Na linha 14, referenciamos o nó
recém criado no próximo do primeiro elemento da lista. Ao encerrar a
execução do método,acabamos com duas listas encadeadas, uma delas
contendo o primeiro elemento da lista anterior, que agora referencia
como próximo o nó recém criado. Os demais elementos da lista anterior
continuam interligados, sem,entretanto, existir referência para o
primeiro deles, pois a mesma não foi salva.
19. A recursividade é um recurso interessante e, às vezes, necessário para a
resolução de problemascomputacionais através de linguagens de
programação. A busca em árvores, por exemplo,depende da recursividade
para trazer resultados de forma otimizada. Entretanto, existemcenários em
que a recursividade não é interessante, pois o volume de operações internas
de controle por parte do sistema operacional ou máquina virtual pode tornar
o desempenho da operação pior do que se a mesma fosse realizada sem
lógica recursiva. Com vistas ao que foi exposto, disserte sobre o
funcionamento de funções recursivas e escreva um método recursivo
na linguagem de programação Java.
Resposta Esperada:
A recursividade consiste na chamada de um método por ele mesmo
para resolver determinado problema computacional, tornando o código
mais enxuto do que se o problema fosse resolvido sem essa estratégia.
Com uma chamada recursiva, uma pilha de execução é normalmente
montada na memória do computador, pois a execução do método é
interrompida no momento em que ele chama a si mesmo. Uma vez que
essa execução interna chegue novamente na chamada, oprocesso se
repete até que alguma condição de encerramento seja atingida. Deve-se
tomar cuidado com métodos recursivos que não possuem condição de
parada, pois os mesmos podem causar um estouro de memória.
int calcular(int valor){
int retorno =1;
if (valor!=0)
retorno = valor * calcular(valor-1);
return retorno;
}
20. A linguagem de programação Java, sendo programação orientada a
objetos, possui recursos que facilitam e melhoram a legibilidade do
código-fonte, como as coleções. As coleções são compostas de alguns tipos
de listas,como Hashmap e Hashset. Disserte sobre as coleções e os tipos
de listas Hashmap e Hashset.
Resposta esperada
Coleções podem ser entendidas como um array melhorado, isto é, este
framework possui algumas vantagens com relação ao array, dentre as
quais: não exige o número total de elementos antes de criá-los e, além
disso,pode-se buscar um elemento na lista sem saber o seu índice.
Neste sentido, coleção pode ser definida comoum vetor dinâmico, o
qual possui diversos métodos utilitários. Um Hashmap é uma coleção
do tipo mapa,que permite pesquisar um elemento na lista sem ter que
percorrer todos os elementos como no ArrayList, oque acarreta
desempenho. O Hashmap utiliza um objeto-chave e um objeto-valor,
aceitando qualquer tipo dedado. O Hashset é parecido com os
conjuntos da matemática, porém não aceita valores duplicados e,
alémdisso, a ordem de leitura dos elementos pode não ser a mesma da
inserção. A vantagem de utilizar-se umhashset é a velocidade para
encontrar um elemento.
21. Para executar uma tarefa qualquer, um computador precisa receber
instruções precisas sobre o que fazer.Uma sequência adequada de
instruções de computador, para a realização de uma determinada tarefa, se
constitui num programa de computador. Uma linguagem de programação é
um conjunto de ferramentas, regras de sintaxe e símbolos ou códigos que
nos permitem escrever programas de computador, destinados a instruir o
computador para a realização de suas tarefas. Dois métodos destacam-se no
sentido de compreender o programa: compilação e interpretação. Disserte
acerca das diferenças dos métodos citados.
Resposta esperada Compilação é o processo de tradução de um
programa escrito em linguagem de alto nível para código em linguagem
de máquina. Durante a compilação, o código-fonte é analisado (análise
léxica, sintática e semântica), é gerado um código intermediário e são
construídas tabelas de símbolos, alocam-se as áreas de memória para
variáveis e atribui-se os registradores a serem utilizados, e é finalmente
gerado o código-objeto em linguagem binária de máquina. Na
interpretação, o programa fonte é traduzido e executado instrução a
instrução, de modo interativo. O interpretador traduz cada instrução
para uma representação interna e interpreta-a simulando o
funcionamento do processador. A interpretação é um processo mais
lento que a compilação.
A classe CountOccurrence escrita na linguagem Java tem por objetivo
localizar e contar quantas ocorrências de um determinado valor existem em
um conjunto predeterminado de valores, retornando a quantidade de vezes
que um determinado valor se repete no conjunto. public class
CountOccurrence { public boolean hasValue(int searchValue, int[] array, int
i) { if (i >= array.length) return false; if (array[i] ==
searchValue) return true; else return
hasValue(searchValue, array, i + 1); } public int count(int countValue,
int[] array, int i) { if (!hasValue(countValue, array, i) '' i >= array.length)
return 0; int c = 0; if (array[i] == countValue) c++;
c += count(countValue, array, i+1);
return c; } public static void main(String[] args) { int[] array =
{2, 3, 5, 6, 9, 7, 8, 8, 9}; CountOccurrence co = new CountOccurrence();
System.out.println(co.count(5, array, 0)); } } Considerando o requisito
proposto e o código apresentado, avalie as asserções a seguir e a relação
proposta entre elas: I- Para que o algoritmo funcione corretamente, deve-se
alterar a linha 21, de c += count( countValue, array, i ); para c +=
count(countValue, array, i + 1);
PORQUEII- Da forma como o código está escrito, o código não compilará por
estar chamando o mesmo método dentro dele indefinidamente. Assinale a
alternativa CORRETA:
A A primeira asserção é uma proposição falsa, e a segunda,uma proposição
verdadeira.
B A primeira asserção é uma proposição verdadeira, e a segunda, uma
proposição falsa.
C As duas asserções são proposições falsas.
D As duas asserções são proposições verdadeiras, mas a segunda não é
uma justificativa correta da primeira.
Os proprietários de um teatro necessitam de uma ferramenta de software
para reserva de lugares. O desenvolvedor contratado verificou que as
poltronas disponíveis para reserva são referenciadas pelo número da fila (a
partir do número 1) e pelo número da cadeira (a partir do número 1) em cada
fila, em uma representação matricial em que as linhas e colunas da matriz
correspondem, respectivamente, às filas e às colunas de cadeiras. Embora o
contexto seja o da organização matricial - N filas de cadeiras (linhas), cada
uma contendo M cadeiras (colunas) -, a solução a ser implementada utilizará
uma estrutura linear unidimensional (vetor), sendo, portanto, necessária uma
conversão entre o lugar referenciado (número f da fila, número c da cadeira)
e a posição real na estrutura de armazenamento (posição p no vetor). Na
situação apresentada, considere que a referida matriz seja armazenada no
vetor segundo sua sequência de linhas, da primeira para a última, e, em
cada linha, da primeira coluna para a última, e que a primeira posição no
vetor tenha índice 0. Nessa situação, a posição p da poltrona do teatro
localizada à fila de número f e à coluna de número c, é igual a:
c + f × M

Continue navegando