10 exercícios de algoritmos para iniciantes com respostas: Domine a Lógica da Programação
10 exercícios de algoritmos com respostas detalhadas para te guiar passo a passo!
#Índice
Na imagem, temos um coelhinho que deverá seguir um determinado caminho para chegar até as três cenouras. Devemos informar ao coelho qual caminho correto ele deverá seguir, de forma que ela não morra comido por um jacaré, uma cobra ou um tigre e que nem morra perfurado pelos espinhos dos cactos.
Para simplificar o exercício, os comandos seguidos pelo coelho são somente os dois abaixo:
- Adiante (avança uma posição)
- Girar (rotaciona o corpo na mesma posição)
Com base no enunciado acima, assinale a opção que melhor representa o algoritmo das direções que o coelho seguirá até que ele chegue nas cenouras.
Portugol é uma pseudolinguagem(forma genérica de escrever um algoritmo) que permite ao leitor desenvolver algoritmos estruturados em português de forma relativamente mais simples e intuitiva, independentemente de linguagem de programação. O Portugol não é uma linguagem de programação, mas pode ser vistou como um método para facilitar o ensino de lógica de programação e algoritmos.
A torre de hanói é um quebra cabeça composto por três hastes e somente três discos de tamanhos diferentes. A torre pode ter vários discos, mas para este exercício foram usados somente três discos (D1, D2, D3).
O quebra cabeça começa com os discos empilhados em ordem crescente na haste 'HA', e podem se mover entre as outras hastes, mas somente um disco por vez pode ser movido.
Marque a alternativa que descreve o algoritmo dos movimentos entre os discos e hastes, de forma que os três disco sejam empilhados na haste 'HC' em ordem crescente.
Um algoritmo é uma sequência finita de ações executáveis que visam obter uma solução para um determinado tipo de problema. Um algoritmo não necessariamente representa um programa de computador, e sim os passos necessários para realizar uma tarefa. A implementação de um algoritmo pode ser feita por um computador, por algum outro tipo de autômato(mecanismo que se opera de maneira automática) ou mesmo por um ser humano, como ao fazer uma receita de bolo.
João quer comer um macarrão instantâneo, mas para preparar o macarrão ele precisará seguir o passo a passo do algoritmo descrito no modo de preparo no verso da embalagem.
Qual das alternativas abaixo melhor representa o modo de preparo de um macarrão instantâneo ?
- 1. Coloque o macarrão e deixe cozinhar por 3 minutos.
- 2. Acenda o fogão a 100º
- 3. Apague o fogo e adicione o tempero em pó.
- 4. Misture bem e coloque em um prato para comer.
- 5. Ferva 300 ml de água em uma panela.
- 6. Mexa um pouco para soltar o macarrão.
- 1. Apague o fogo e adicione o tempero em pó.
- 2. Ferva 300 ml de água em uma panela.
- 3. Coloque o macarrão e deixe cozinhar por 3 minutos.
- 4. Mexa um pouco para soltar o macarrão.
- 5. Misture bem e coloque em um prato para comer.
- 6. Acenda o fogão a 100º
- 1. Misture bem e coloque em um prato para comer.
- 2. Acenda o fogão a 100º
- 3. Coloque o macarrão e deixe cozinhar por 3 minutos.
- 4. Mexa um pouco para soltar o macarrão.
- 5. Apague o fogo e adicione o tempero em pó.
- 6. Ferva 300 ml de água em uma panela.
- 1. Acenda o fogão a 100º
- 2. Apague o fogo e adicione o tempero em pó.
- 3. Coloque o macarrão e deixe cozinhar por 3 minutos.
- 4. Ferva 300 ml de água em uma panela.
- 5. Misture bem e coloque em um prato para comer.
- 6. Mexa um pouco para soltar o macarrão.
- 1. Acenda o fogão a 100º
- 2. Ferva 300 ml de água em uma panela.
- 3. Coloque o macarrão e deixe cozinhar por 3 minutos.
- 4. Mexa um pouco para soltar o macarrão.
- 5. Apague o fogo e adicione o tempero em pó.
- 6. Misture bem e coloque em um prato para comer.
Quando se diz que um algoritmo é recursivo, estamos o categorizando pela sua implementação. Um algoritmo é recursivo quando ele é auto-referenciado, ou seja, invoca a si mesmo repetidamente até que certa condição seja satisfeita.
Sobre algoritmos, analise as afirmativas abaixo e dê valores Verdadeiro (V) ou Falso (F).
- ( ) São procedimentos precisos, não ambíguos, eficientes e corretos.
- ( ) Um algoritmo representa os passos necessários para realização de uma tarefa.
- ( ) São representados somente por fluxogramas.
Assinale a alternativa que apresenta a sequência correta de cima para baixo.
A eficiência de um algoritmo é estudado pela análise de complexidade assintótica de algoritmos. O objetivo da análise de complexidade é predizer o tempo de execução do algoritmo e/ou o seu consumo de memória, ignorando qualquer implementação de linguagens específicas ou hardwares, ou seja, o estudo da taxa de crescimento conforme a entrada de dados.
O algoritmo a seguir foi elaborado na forma de uma pseudolinguagem.
Início
[
Inteiro: a1, a2, a3, i, j;
a1 ← 8;
a2 ← 5;
a3 ← 10;
Para i de 1 até 3 faça
[
Para j de 2 até 4 faça
[
a3 ← a3 + 2*a2 – a1;
]
a1 ← a1 – 1;
]
Imprima a3;
]
Fim.
Ao final da execução desse código, o valor impresso para a3 será:
Os algoritmos de ordenação são instruções que recebem um array ou lista como entrada e os organizam conforme uma ordem específica. A ordenação de um conjunto de elementos reflete na eficiência e complexidade da resolução de um problema, como uma busca de um determinado elemento em um conjunto de dados.
Um algoritmo é uma forma de organizar a sua lógica, a solução para o problema que está sendo solucionado. Normalmente, um algoritmo é uma sequência de passos, em ordem e sem ambiguidade, que deve ser seguida para resolver um problema. Considerando o tema, tipos de algoritmos e conceitos de softwares, analise as alternativas e assinale a que apresenta o tipo de algoritmo que mais se aproxima da definição: “É uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve, de forma a ser entendido por qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação e também é conhecido como portugol”.
Algoritmos Evolutivos são algoritmos baseados em uma gama de mecanismos da evolução biológica e serviram para originar conceitos um pouco mais recentes, como o dos Algoritmos Genéticos. Um algoritmo genético é uma técnica de busca utilizada na ciência da computação e em investigação operacional para achar soluções aproximadas em problemas de otimização e busca. Algoritmos genéticos são uma classe particular de algoritmos evolutivos que usam técnicas inspiradas pela biologia evolutiva como hereditariedade, mutação, seleção natural e recombinação.
Uma das propriedades que caracterizam os algoritmos é a:
Um algoritmo probabilístico utiliza probabilidade para solução de um problema. O algoritmo utiliza bits aleatórios como um guia para o seu comportamento e dada uma mesma sequência de entrada, não necessariamente leva a um mesmo estado final.
Considere a sub-rotina abaixo:
- 1. Programa
- 2. Declare X, Y e Z numérico
- 3. Leia X
- 4. Leia Y
- 5. Z:= (X + Y) x Y
- 6. Escreva Z
- 7. Fim programa
Analisando o programa acima, e supondo que o valor fornecido para “X” na terceira linha seja 3 e o valor fornecido para Y na quarta linha seja 4, pode-se afirmar que o valor da variável “Z” na sexta linha é:
O algoritmo de Euclides, um dos mais antigos algoritmos ainda em uso, é um método simples e eficiente de encontrar o máximo divisor comum(MDC) entre dois números inteiros diferentes de zero. A ideia no Algoritmo de Euclides é o calculo do MDC de forma recursiva, usando o resto da divisão como entrada para o próximo passo, ou seja, 'MDC(a,b) = MDC(b,r)' onde 'r' é o resto da divisão de 'a' por 'b'.
Um pirata escondeu seu tesouro em uma ilha deserta, e para localizá-lo ele irá se guiar pelo mapa e pelas direções definidas na rosa dos ventos.
De acordo com a imagem abaixo, qual a opção que melhor indica o caminho que o pirata deverá seguir para chegar ao tesouro em segurança ?
Observação: Somente para fins didáticos neste exercício sobre algoritmos, imagine que em cada direção o pirata irá andar somente 100 passos.
Imagine que em uma determinada fase do jogo Overcooked, o cliente fez o pedido do prato 'fish and chips'(peixe e fritas é um prato típico da culinária do Reino Unido) e que na cozinha se encontram dois chefs para preparar o pedido. Cada chef irá preparar uma parte da receita, ou seja, paralelamente um chef fará o peixe e o outro fará as fritas, que ao final do preparo serão unidas. Para executar a tarefa, o restaurante possui duas cozinhas com tudo que eles precisam para fazer a receita.
Início;
Array tarefasDoChefPedro[];
Array tarefasDaChefMaria[];
tarefasDoChefPedro.adicionar(
. . . 1 . . .
);
tarefasDaChefMaria.adicionar(
. . . 2 . . .
);
Prato fishAndChips = executarEmParalelo(
tarefasDoPedro,
tarefasDaMaria
).juntar();
Entregador.iFood.entregar(fishAndChips );
Fim;
De acordo com o algoritmo acima, um array armazenará a sequência de tarefas do chef Pedro que preparará o peixe, enquanto que o segundo array armazenará a sequência de tarefas da chef Maria, responsável por fazer as fritas. Marque a opção que melhor descreve quais serão as tarefas que preenchem a lacuna . . . 1 . . . das tarefas de Pedro e qual melhor preenche a lacuna . . . 2 . . . das tarefas de Maria.
- . . . 1 . . .
- pegarPeixeNaDespensa(),
- pegarBatatasNaDespensa(),
- limparPeixeECortar(),
- descascarBatatasECortar(),
- temperarEEmpanarPeixe(),
- fritarPeixe()
- fritarBatatas()
- . . . 2 . . .
- . . . 1 . . .
- pegarPeixeNaDespensa(),
- limparPeixeECortar(),
- temperarEEmpanarPeixe(),
- fritarPeixe()
- . . . 2 . . .
- pegarBatatasNaDespensa(),
- descascarBatatasECortar(),
- fritarBatatas()
- . . . 1 . . .
- pegarBatatasNaDespensa(),
- descascarBatatasECortar(),
- fritarBatatas()
- . . . 2 . . .
- pegarPeixeNaDespensa(),
- limparPeixeECortar(),
- temperarEEmpanarPeixe(),
- fritarPeixe()
- . . . 1 . . .
- pegarPeixeNaDespensa(),
- pegarBatatasNaDespensa(),
- limparPeixeECortar(),
- temperarEEmpanarPeixe(),
- fritarPeixe()
- . . . 2 . . .
- descascarBatatasECortar(),
- fritarBatatas()
O mundo não vai se lembrar do que você diz, mas certamente não vai esquecer o que você fez