Analise o pseudocódigo abaixo e responda as seguintes questões. Faça uso da tabela para ir registrando os possíveis valores de cada variável presente no programa (
pontos).
programa
{
funcao inicio()
{
inteiro k = 19
inteiro a = 1
inteiro b, x
enquanto (k >= a)
{
b = a / 2
se (b * 2 != k)
{
a = a + 2
}
senao
{
a = a + 3
}
k = k - 2
x = a % 6
escreva((x * 2) - 1, "\n") //Saída
}
}
}
programa
{
funcao inicio()
{
inteiro k = 19
inteiro a = 1
inteiro b, x
enquanto (k >= a)
{
b = a / 2
se (b * 2 != k)
{
a = a + 2
}
senao
{
a = a + 3
}
k = k - 2
x = a % 6
escreva((x * 2) - 1, "\n") //Saída
}
}
}
# iteração | k | a | b | x | saída |
---|---|---|---|---|---|
1 | |||||
2 | |||||
3 | |||||
1.a - Determine os valores que serão impressos na saída do programa até a terceira (
) iteração. (
ponto)
1.b - Qual é o número máximo de repetições que o programa consegue rodar assumindo esses valores e
? (0,75 ponto)
1.c - Entendendo as diferenças entre as estruturas de repetição, qual seria a complexidade de substituir o uso do enquanto pelo para no caso anterior. ( ponto)
1.b - Qual é o número máximo de repetições que o programa consegue rodar assumindo esses valores
1.c - Entendendo as diferenças entre as estruturas de repetição, qual seria a complexidade de substituir o uso do enquanto pelo para no caso anterior. (
Passo 1
O enunciado apresenta um programa que inicia com
e
, e dentro de um laço
enquanto (k >= a)
atualiza as variáveis assim:- calcula
, - testa se
para incrementar em 2 ou em 3, - decrementa
em 2, - calcula
e imprime .
Precisamos simular iterações para (a) os três primeiros valores de saída, (b) descobrir quantas repetições até parar e (c) comentar a complexidade caso trocássemosenquanto
porpara
.
Passo 2
Iteração 1 (início com
,
):
Passo 3
Iteração 2 (início com
,
):
Passo 4
Iteração 3 (início com
,
):
Passo 5
Para saber quantas vezes o laço roda até
, note que em cada iteração
diminui de 2 e
aumenta de 2 (sempre cai no ramo “se”). Assim as sequências são
e o laço pára quando
. Isso dá 5 iterações.
Passo 6
Substituir .
enquanto
por para
não altera a lógica nem o número de passos — continuamos fazendo um passo por iteração. Logo a complexidade de tempo é linear no número de iterações, isto é
Resposta
1.a
1.b iterações
1.c
1.b
1.c