Prévia do material em texto
Algoritmos O que e um algoritmo? a) Um conjunto de instrucoes que define uma tarefa a ser realizada por um computador. b) Um tipo de codigo de programacao. c) Uma linguagem de programacao especifica para maquinas. d) Um programa que executa tarefas repetitivas. Resposta correta: a) Um algoritmo e um conjunto de instrucoes ou passos bem definidos que sao seguidos para realizar uma tarefa especifica. Ele pode ser implementado em diversas linguagens de programacao e e a base para a criacao de programas de computador. Qual das alternativas abaixo e uma caracteristica essencial de um algoritmo? a) Ele deve ser codificado em uma linguagem especifica. b) Ele deve produzir um resultado, independentemente das entradas. c) Ele deve ser claro, finito e terminar em um numero determinado de passos. d) Ele deve ser escrito apenas em pseudocodigo. Resposta correta: c) Um algoritmo deve ser claro, finito e sempre terminar apos um numero determinado de passos. Essa caracteristica garante que o algoritmo seja executavel e que sempre produza um resultado. Qual e a diferenca entre um algoritmo e um programa de computador? a) Um algoritmo e uma forma de representacao de um programa, mas nao realiza nenhuma acao concreta. b) Um programa e a implementacao de um algoritmo em uma linguagem de programacao especifica. c) Um algoritmo e um tipo de software, enquanto um programa e um algoritmo. d) Nao ha diferenca, ambos sao a mesma coisa. Resposta correta: b) Um programa e a implementacao de um algoritmo em uma linguagem de programacao especifica, utilizando comandos que o computador pode entender e executar. O algoritmo, por outro lado, e a solucao teorica para um problema, que pode ser implementada de diversas formas. O que significa a complexidade de um algoritmo? a) O tempo e o espaco necessarios para executar o algoritmo. b) A dificuldade de entender o algoritmo. c) A quantidade de linhas de codigo no algoritmo. d) O numero de passos necessarios para criar o algoritmo. Resposta correta: a) A complexidade de um algoritmo refere-se ao tempo e ao espaco necessarios para executa-lo, geralmente expressos em termos de entrada. Isso e importante para avaliar a eficiencia de um algoritmo. Qual e o objetivo principal de se analisar a complexidade de um algoritmo? a) Para verificar se o algoritmo esta livre de erros. b) Para determinar se o algoritmo funciona corretamente. c) Para avaliar a quantidade de recursos (tempo e memoria) necessarios para executar o algoritmo. d) Para saber qual linguagem de programacao e mais eficiente. Resposta correta: c) O objetivo principal da analise de complexidade de um algoritmo e avaliar a quantidade de recursos, como tempo e memoria, que ele consome em relacao ao tamanho da entrada, ajudando a identificar se ele e eficiente ou nao. Em qual situacao o algoritmo de ordenacao "Bubble Sort" e mais eficiente? a) Quando a lista a ser ordenada esta em ordem crescente. b) Quando a lista a ser ordenada esta em ordem decrescente. c) Quando o tamanho da lista e muito grande. d) Quando a lista contem elementos de tipos de dados diferentes. Resposta correta: a) O algoritmo "Bubble Sort" e mais eficiente quando a lista a ser ordenada ja esta quase ordenada, ou seja, esta em ordem crescente, pois ele realiza menos trocas e comparacoes em tal cenario. Qual e a caracteristica principal do algoritmo "Merge Sort"? a) Ele e um algoritmo de ordenacao simples e de facil implementacao. b) Ele usa a tecnica de divisao e conquista para ordenar os elementos. c) Ele realiza trocas diretas entre os elementos. d) Ele possui um desempenho muito ruim em listas pequenas. Resposta correta: b) O "Merge Sort" e um algoritmo de ordenacao eficiente que utiliza a tecnica de divisao e conquista. Ele divide a lista em sublistas menores, ordena essas sublistas e depois as combina para obter a lista final ordenada. Qual e a principal vantagem do algoritmo de busca binaria em relacao a busca linear? a) A busca binaria funciona melhor com listas pequenas. b) A busca binaria so pode ser aplicada em listas ordenadas e e mais eficiente. c) A busca binaria nao e afetada pela ordem dos elementos na lista. d) A busca binaria e mais simples de implementar. Resposta correta: b) A busca binaria e mais eficiente do que a busca linear porque ela reduz pela metade o numero de elementos a serem verificados a cada comparacao. Porem, ela so pode ser aplicada em listas ordenadas. O que caracteriza o algoritmo "Quick Sort"? a) Ele e um algoritmo de ordenacao baseado em insercoes sucessivas. b) Ele utiliza a tecnica de divisao e conquista, mas de forma mais eficiente que o Merge Sort. c) Ele funciona bem para listas pequenas, mas nao e eficiente para listas grandes. d) Ele e um algoritmo de ordenacao estavel. Resposta correta: b) O "Quick Sort" e um algoritmo de ordenacao eficiente baseado na tecnica de divisao e conquista. Ele escolhe um "pivo" e organiza os elementos ao redor desse pivo de maneira recursiva. Comparado ao "Merge Sort", ele e geralmente mais rapido em listas grandes. O que e um "algoritmo guloso" (greedy algorithm)? a) Um algoritmo que sempre escolhe a melhor solucao local em cada passo, na esperanca de que isso leve a solucao otima global. b) Um algoritmo que tenta explorar todas as possibilidades antes de tomar uma decisao. c) Um algoritmo que e baseado em recursao e divide o problema em subproblemas menores. d) Um algoritmo que sempre toma a decisao mais arriscada em cada passo. Resposta correta: a) Um algoritmo guloso faz escolhas locais otimas em cada etapa, na esperanca de que essas escolhas levem a solucao otima global. No entanto, nem sempre ele garante a melhor solucao, especialmente em problemas complexos. O que e a tecnica de "programacao dinamica" (dynamic programming)? a) E uma tecnica que divide um problema em subproblemas menores e resolve cada um deles de forma independente. b) E uma tecnica de otimizacao que resolve problemas utilizando a memoria para armazenar resultados de subproblemas ja resolvidos. c) E um metodo que encontra a solucao otima sem precisar de nenhum tipo de subproblema. d) E um algoritmo que resolve problemas de forma recursiva e nao reutiliza resultados anteriores. Resposta correta: b) A programacao dinamica e uma tecnica usada para resolver problemas de otimizacao, dividindo o problema em subproblemas menores e armazenando as solucoes desses subproblemas para evitar recomputacoes, economizando tempo. O que caracteriza um algoritmo recursivo? a) Ele repete uma serie de operacoes em uma sequencia de passos. b) Ele resolve um problema dividindo-o em subproblemas semelhantes e resolve cada subproblema de forma independente. c) Ele executa um conjunto fixo de operacoes. d) Ele chama a si mesmo durante a execucao para resolver subproblemas. Resposta correta: d) Um algoritmo recursivo chama a si mesmo para resolver subproblemas, repetindo esse processo ate atingir uma condicao de parada, que e o caso base. Isso e util para resolver problemas que podem ser quebrados em partes menores e semelhantes. Qual e a principal desvantagem de um algoritmo recursivo em comparacao a um iterativo? a) Ele nao pode ser utilizado para resolver problemas grandes. b) Ele pode consumir mais memoria devido a pilha de chamadas. c) Ele e mais lento em todos os casos. d) Ele nao e adequado para algoritmos de ordenacao. Resposta correta: b) A principal desvantagem dos algoritmos recursivos e o consumo maior de memoria devido a pilha de chamadas, especialmente em problemas com muitas iteracoes recursivas. Isso pode levar ao estouro da pilha (stack overflow) em casos extremos. O que e um algoritmo de "busca em profundidade" (Depth First Search - DFS)? a) Um algoritmo que explora todos os vizinhos de um no antes de passar para o proximo nivel. b) Um algoritmo que explora um caminho ate o final antes de voltar e explorar outros caminhos. c) Um algoritmo que busca a solucao mais rapida para um problema. d)Um algoritmo que usa filas para explorar os nos do grafo. Resposta correta: b) O algoritmo de busca em profundidade (DFS) explora um caminho do grafo ate o final antes de retroceder e explorar outros caminhos. Ele e util em problemas de grafos e arvores. Qual e a principal diferenca entre a busca em largura (BFS) e a busca em profundidade (DFS)? a) A BFS explora os nos mais distantes primeiro, enquanto a DFS explora os nos mais proximos primeiro. b) A BFS utiliza uma fila, enquanto a DFS utiliza uma pilha.