Questões de Concurso
Sobre algoritmos em algoritmos e estrutura de dados
Foram encontradas 2.344 questões
Uma equipe de desenvolvimento está revisando trechos de código de um sistema interno responsável pelo controle de requisições administrativas. Durante a análise técnica, foram discutidos aspectos relacionados à construção de algoritmos, estrutura de decisão, repetição, modularização e análise de complexidade.
Com base em fundamentos de desenvolvimento de sistemas e lógica de programação, analise as assertivas a seguir e assinale V (verdadeiro) ou F (falso):
(__) Um algoritmo pode ser descrito em linguagem natural estruturada, pseudocódigo ou fluxograma, desde que represente uma sequência finita e ordenada de passos para resolução de um problema.
(__) A utilização de estruturas de repetição, como "para" ou "enquanto", elimina a necessidade de estruturas condicionais dentro do mesmo bloco lógico.
(__) A modularização de um sistema tende a favorecer manutenção e reutilização de código, especialmente quando há definição clara de responsabilidades entre funções ou métodos.
(__) Um algoritmo cuja complexidade de tempo é O(n²), quando o número de operações executadas cresce proporcionalmente a n2, necessariamente apresentará desempenho inadequado para qualquer volume de dados.
(__) Na lógica de programação, variáveis são utilizadas para armazenar valores que podem ser modificados durante a execução do algoritmo.
(__) A validação de entradas de dados contribui para reduzir falhas decorrentes de estados inesperados no fluxo de execução.
Assinale a alternativa que possui a sequência correta de V (verdadeiro) e F (falso) de cima para baixo:
( ) A notação empregada para representar o melhor caso de um determinado algoritmo é Ω (Omega).
( ) A notação empregada para representar o pior caso em casos gerais de um determinado algoritmo é Θ (Theta).
( ) O(1) – tempo de execução constante, que não varia conforme o tamanho da entrada do algoritmo.
( ) Quanto à complexidade de tempo, O(n) – tempo quadrático, cresce proporcionalmente ao tamanho da entrada.
O método de ordenação conhecido por merge sort é usualmente implementado de maneira recursiva e realiza o ordenamento basicamente separando o vetor de dados em análise em duas partes, até que haja a comparação de apenas dois elementos para se verificar se há a necessidade de troca da posição. Depois, também de maneira recursiva, esses elementos vão sendo novamente reagrupados até que o vetor seja retornado na ordem ascendente ou descendente, conforme o interesse, como esquematizado na figura a seguir.

Considerando o trecho de código a seguir e o vetor B=[10, 9, 8, 7, 6, 5, 4, 3, 2, 1], é correto afirmar que, no print(A) da linha 7 com o ordenamento ascendente do vetor B, a resposta da sua saída será:

Considere a função abaixo:

Assinale a alternativa que apresenta de forma correta o resultado de “calcular(5)”.
1. “O algoritmo __________ percorre repetidamente o vetor, comparando elementos adjacentes e realizando trocas sempre que eles se encontram fora de ordem, até que nenhuma troca adicional seja necessária.”
2. “No método __________, cada novo elemento é inserido na posição adequada dentro da porção já ordenada do vetor, promovendo deslocamentos sucessivos dos elementos maiores.”
3. “O algoritmo __________ caracteriza-se por selecionar, a cada iteração, o menor elemento da região ainda não ordenada e posicioná-lo no início dessa região.”
4. “A técnica conhecida como __________ baseia-se na escolha de um elemento de referência, a partir do qual os demais elementos são reorganizados em dois grupos, menores e maiores, repetindo-se o processo nas subdivisões resultantes.”
5. “O procedimento __________ divide o vetor em partes menores, ordena essas partes separadamente e, em seguida, combina os resultados em uma única sequência ordenada.”
Assinale a alternativa que completa, corretamente, as afirmativas anteriores.
Após executar as quatro primeiras iterações do laço externo (i = 1, 2, 3 e 4), assinale a alternativa que identifica corretamente:
• O método de ordenação implementado; e
• O estado do array ao final de i = 4
Considere o algoritmo abaixo desenvolvido segundo a sintaxe utilizada no VisuAlg 3.0:
Algoritmo "Concurso"
Var
i, j, y : inteiro
x : logico
Inicio
y <- 0
para i de 2 até 10 faça
x <- verdadeiro
para j de 2 até (i div 2) faça
se i mod j = 0 então
x <- falso
fimse
fimpara
se x então
y <- y + i
fimse
fimpara
escreva(y)
Fimalgoritmo
Qual o valor mostrado na saída deste algoritmo?
I. O cálculo de rota mais curta em redes complexas utiliza predominantemente o algoritmo de Dijkstra ou suas variações, como o A* (A-star).
II. Em aplicações logísticas, o geoprocessamento elimina completamente a necessidade de dados históricos de tráfego, pois os algoritmos de roteamento utilizam apenas a distância geométrica entre os pontos de origem e destino.
III. A análise de "Isócronas" permite visualizar em um mapa todas as áreas que podem ser alcançadas a partir de um ponto em um determinado intervalo de tempo (ex.: 15 minutos).
A sequência correta é
função buscaBinaria(vetor [], valor) inferior ← 0 superior ← N - 1 enquanto inferior <= superior { comando faltante se vetor[índice] == valor retornar índice senão se vetor[índice] < valor inferior ← índice + 1 senão superior ← índice - 1 } retornar -1
O algoritmo trabalha com valores do tipo inteiro e o vetor tem N elementos ordenados de forma crescente, com o índice do primeiro elemento sendo zero. O algoritmo retorna o valor do índice do vetor que contém o valor pesquisado, ou retorna -1, se o valor não for encontrado no vetor. Qual linha deve substituir o comando faltante no algoritmo para que ele implemente corretamente a busca binária?
Assinale a alternativa que descreve corretamente esses dois conceitos.