

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Considere o seguinte algoritmo.
1) Criar uma lista de arquivos para download.
2) Iniciar múltiplas threads para baixar os arquivos em paralelo.
3) Cada thread faz o download de um arquivo da lista.
4) Ao final de cada download, atualizar a lista de arquivos marcando que o download foi efetuado.
5) Exibir uma mensagem informando que todos os downloads foram concluídos.
Assinale a alternativa com o algoritmo corrigido para evitar a condição de corrida, sem abrir mão do paradigma de programação concorrente.
1) Criar uma lista de arquivos para download.
2) Fazer o download de cada arquivo, sequencialmente.
3) Exibir uma mensagem informando que todos os downloads foram concluídos.
1) Criar uma lista de arquivos para download.
2) Inicializar um mutex (exclusão mútua) para controlar o acesso à lista de arquivos.
3) Iniciar múltiplas threads para baixar os arquivos em paralelo.
4) Cada thread adquire o mutex (exclusão mútua) antes de acessar a lista, seleciona um arquivo disponível e libera o mutex (exclusão mútua).
5) Cada thread faz o download de um arquivo da lista.
6) Após o download, a thread adquire o mutex (exclusão mútua) novamente e atualiza a lista, marcando que o download foi efetuado, e então libera o mutex (exclusão mútua).
7) Exibir uma mensagem informando que todos os downloads foram concluídos.
1) Criar uma lista de arquivos para download.
2) Verificar se existe conexão com a Internet.
3) Iniciar múltiplas threads para baixar os arquivos em paralelo.
4) Cada thread faz o download de um arquivo da lista.
5) Ao final de cada download, atualizar a lista de arquivos marcando que o download foi efetuado.
6) Exibir uma mensagem informando que todos os downloads foram concluídos.
1) Criar uma lista de arquivos para download.
2) Iniciar múltiplas threads para baixar os arquivos em paralelo.
3) Verificar se o arquivo existe.
4) Cada thread faz o download de um arquivo da lista.
5) Ao final de cada download, atualizar a lista de arquivos marcando que o download foi efetuado.
6) Exibir uma mensagem informando que todos os downloads foram concluídos.
1) Criar uma lista de arquivos para download.
2) Iniciar múltiplas threads para baixar os arquivos em paralelo.
3) Verificar se o existe espaço disponível para o download.
4) Cada thread faz o download de um arquivo da lista.
5) Ao final de cada download, atualizar a lista de arquivos marcando que o download foi efetuado.
6) Exibir uma mensagem informando que todos os downloads foram concluídos.
Analise o algoritmo abaixo, escrito no software VisuAlg 3.0:
algoritmo "prefeitura"
var
A, B: inteiro
inicio
A := 10
para B de 1 ate A passo 2 faca
se B < A entao
escreva("X")
senao
escreva("O")
fimse
fimpara
fimalgoritmo
O que será impresso a partir da execução do algoritmo?
XXXXXXXXXO
OOOOOOOOX
XXXXO
OOOOX
XXXXX
É 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):
Algoritmo de programação dinâmica.
Algoritmo recursivo.
Algoritmo backtracking.
Algoritmo de força bruta.
Algoritmo de divisão e conquista.
Considere o pseudo-código de uma função que rearranja um array de números, indexado a partir de zero, recebido como parâmetro, de modo que os números sejam dispostos em ordem decrescente.
1 Function Ordena (L)
2 trocou = 1
3 While (trocou == 1)
4 trocou = 0
5 For i = 0 To Length(L)-1 Step 1
6 If L[i] < L[i+1] Then
7 temp = L[i]
8 L[i] = L[i+1]
9 L[i+1] = temp
10 trocou = 1
11 End If
12 End For
13 End While
14 Return 0
15End Function
Com relação à lógica de programação aqui empregada, é possível que haja erros nesse código.
Com o auxílio da numeração das linhas, assinale o diagnóstico correto sobre a lógica dos comandos.
A linha 10 deve ser deletada.
Na linha 2, a variável “trocou” deve receber o valor 0.
Na linha 5, o valor “-1” deve ser substituído por “-2”.
Na linha 6, o comparador “<” deve ser substituído por “>”.
Não há falhas no código.
Um algoritmo, apresentado a seguir, foi elaborado na forma de uma pseudolinguagem (Português Estruturado).
Início
Inteiro: k, m, n, i;
k ← 1;
m ← k + 1;
n ← k + m - 1;
Para i de 3 até 6 faça
[
k ← k + 1;
Se (m > n)
Então
[
k ← k + 1;
m ← n;
n ← k;
]
Senão
[
k ← k + 2;
n ← m;
m ← k;
]
]
k ← m + n;
Fim.
Assinale a alternativa que apresenta o valor recebido pela variável k ao final da execução desse algoritmo.
16
17
14
15
13
Considere o algoritmo K-Means. Suponha os seguintes pontos: x1=(1,2,5); x2=(3,4,2); x3=(9,5,3); x4=(7,6,1); x5=(2,3,5); x6=(8,7,2). Escolha x1 e x4 como centros iniciais.
Assinale a opção que apresenta corretamente os pontos em que seriam formados os grupos após a primeira iteração e quais seriam os novos centros.
Grupo 1: {x1, x3, x5}, Grupo 2: {x2, x4, x6}. Centros: c1= (4,3,4), c2 = (6,5,1).
Grupo 1: {x1, x2}, Grupo 2: {x3, x4}, Grupo 3: {x5, x6}. Centros: c1=(2,3,3), c2 = (8,5,2) , c3 = (5,5,3).
Grupo 1: {x1, x2, x5}, Grupo 2: {x3, x4, x6}. Centros: c1= (2,3,4), c2 = (8,6,2).
Grupo 1: {x1, x2, x3}, Grupo 2: {x4, x5, x6}. Centros: c1= (4,3,3), c2 = (5,5,2).
Grupo 1: {x2, x3, x5}, Grupo 2: {x1, x4, x6}. Centros: c1= (4,4,3), c2 = (5,5,2).
Considere o algoritmo a seguir:
var x, y, z: inteiro
início
para x ← 1 até 10 passo 1 faça
para y ← 1 até 10 passo 1 faça
z ← x * y;
exiba(z)
fim_para
exiba(y)
fim_para
fim
Ao ser executado em condições ideais, o penúltimo valor exibido da variável z e o valor exibido da variável y serão, respectivamente,
100 e 10.
100 e 11.
80 e 10.
90 e 11.
90 e 10.
Qual é o operador lógico que representa a negação em muitas linguagens de programação?
&&
||
!
==
++
let pilha = [30, 50, 60, 10, 9];
let removerDaPilha = 30;
function removerDaPilha( item) {
const index = pilha.indexOf(item);
if (index !== -1) {
pilha.splice(index, 1);
return “Item removido com sucesso"
}
return "Item não pode ser removido"
}
console.log(removerDaPilha(50));
Com base no bloco de código acima, qual será o retorno no console da aplicação quando o código for executado?
Item removido com sucesso
Uncaught SyntaxError
[ 30, 50, 60, 10, 9 ]
Item não pode ser removido
[ 30, 60, 10, 9 ]
Antônio é técnico em laboratório e precisa escolher um mecanismo de busca para trabalhar com controle de estoques. São algoritmos de busca possíveis para utilização no seu laboratório, EXCETO:
pesquisa sequencial.
pesquisa binária.
busca por interpolação.
hashing.
quicksort.
Em linguagens interpretadas, um artifício muito comum é a utilização de um operador chamado null safety. A sua função é dar a segurança ao programa de que certo valor, ao ser acessado pelo programa, não será lido com valor nulo ou indefinido. Qual é este símbolo?
| |
? ?
! =
!
%
Analise o seguinte código apresentado na forma de uma pseudolinguagem (Português Estruturado).

O valor atribuído à variável aux ao final da execução desse código é:
1
3
0
4
2
O programa a seguir está expresso na forma de uma pseudolinguagem (português estruturado), apresentando a lógica de um algoritmo.
Início
Inteiro: a1, a2, x, i;
a1 ← 1;
a2 ← 2;
x ← 0;
Para i de 1 até 4 faça
[
Se (a1 < a2)
Então
[
x ← a1;
a1 ← a2;
a2 ← x;
]
Senão
[
a1 ← a1 - 1;
a2 ← a2 + 1;
]
]
x ← a1 + a2;
Fim.
Ao final da execução desse algoritmo, o valor da variável x será:
0
1
2
3
4
Analise o programa a seguir, apresentado na forma de uma pseudolinguagem (Português Estruturado).
Início
Inteiro: r, s, t, i;
r ← 0;
s ← 0;
Para i de 1 até 4 faça
[
Se ((r+s) > 0)
Então
[
r ← r+i;
s ← s+1;
t ← i;
]
Senão
[
s ← 1;
]
]
r ← r + s - t;
Fim.
O valor recebido pela variável r ao final da execução desse programa é:
6
7
8
9
10
Assinale a opção que contém apenas exemplos de algoritmos de ordenação que utilizam o método de ordenação por troca.
insertion sort e selection sort
quick sort e merge sort
bubble sort e quick sort
insertion sort e merge sort
bubble sort e selection sort
Qual o conceito de fluxogramas?
É uma técnica de desenvolvimento de algoritmos que descreve um conjunto de instruções lógicas para se alcançar um objetivo, usando narrativas.
Ê uma linguagem de programação que permite criar algoritmos facilmente.
É uma técnica de desenvolvimento de algoritmos que descreve um conjunto de instruções lógicas para se alcançar um objetivo, usando símbolos gráficos.
É uma linguagem de programação baseada em símbolos gráficos.
É uma técnica de desenvolvimento de algoritmos que descreve um conjunto de instruções lógicas usando símbolos gráficos, usando uma linguagem de programação.
Assinale a alternativa que apresenta uma estrutura de dados onde cada nó possui um elemento com informações, um ponteiro para seu próximo elemento e um ponteiro para seu elemento anterior.
Lista circular.
Matriz bidimensional.
Vetor.
Registro.
Lista duplamente ligada.
Analise as assertivas abaixo sobre tabelas de dispersão, também conhecidas como tabelas hash:
I. A complexidade de busca em uma tabela hash com uma função hash e tamanho adequados é, em média, O(1).
II. Uma tabela hash não é adequada para implementar um dicionário, já que não suporta o tipo string.
III. Uma tabela hash mantém os dados em ordem para acelerar a busca.
Quais estão corretas?
Apenas I.
Apenas III.
Apenas I e II.
Apenas II e III.
I, II e III.
Considere as informações de entrada e saída a seguir de um algoritmo Heap:
Entrada: 1 2 3
Saída: 1 2 3
2 1 3
3 1 2
1 3 2
2 3 1
3 2 1
Pautando-se nessas informações, analise as assertivas e assinale a alternativa correta.
I. O algoritmo heap gerou cada permutação a partir da anterior, trocando um único elemento enquanto outros elementos não são perturbados.
II. Para n números, é preciso O(n!) complexidade de tempo, pois há n! Permutações.
III. No exemplo, temos 6 permutações totais, ou seja, N! (3! (3 dígitos decimais) = 6).
IV. Em um heap as permutações podem variar de acordo com quantidade de objetos.
Apenas I e III estão corretas.
Apenas I e IV estão corretas.
Apenas I, III e IV estão corretas.
Todas estão corretas.
Avalie o algoritmo abaixo, escrito no software VisuAlg 3.0.
algoritmo "professor"
var
var_1, var_2, var_3: inteiro
inicio
var_1 <- 5
var_2 <- 2
enquanto var_1 > 0 faça
var_3 <- var_1 - var_2
se var_3 < 0 entao
var_1 <- var_1 - 2
fimse
var_2 <- var_2 + 3
fimenquanto
fimalgoritmo
Ao final da execução do algoritmo acima, qual será o valor da variável “var_3”?
11
3
0
-8
-13