Ficha 06 · Avaliação integrada · teste-tipo
- Mobilizar os conceitos do pensamento computacional
- Construir algoritmos completos a partir de enunciados
- Aplicar pseudocódigo e fluxograma
- Identificar e corrigir erros
- Justificar escolhas de design algorítmico
Instruções gerais. Esta ficha de avaliação tem 5 grupos, num total de 200 pontos. Responda às questões pela ordem que preferir, mas identifique sempre a numeração. O tempo recomendado é de 90 minutos. Pode usar a folha em branco em anexo para rascunhos.
Grupo I · Conceitos (40 pontos)
Exercício 1 · Verdadeiro ou Falso (10 pts)
Indique a veracidade (V/F) e justifique cada afirmação em uma frase curta:
1.1 Um algoritmo deve sempre produzir o mesmo resultado para a mesma entrada. ___ (2 pts)
1.2 O pseudocódigo é uma linguagem de programação. ___ (2 pts)
1.3 O símbolo do losango no fluxograma representa um cálculo. ___ (2 pts)
1.4 Inicializar um acumulador-produto a zero é correcto. ___ (2 pts)
1.5 A divisão 7 MOD 3 dá 2. ___ (2 pts)
1.1 V — propriedade do determinismo.
1.2 F — não é executável por uma máquina; é uma notação semi-formal.
1.3 F — o losango representa uma decisão (pergunta com resposta binária). Cálculo é o rectângulo.
1.4 F — qualquer produto subsequente daria 0. Deve ser inicializado a 1.
1.5 F — 7 MOD 3 = 1 (resto da divisão). 7 DIV 3 = 2 (parte inteira).
Exercício 2 · Correspondência (15 pts)
Faça corresponder cada padrão à inicialização típica:
| Padrão | Inicialização | |
|---|---|---|
| A. Contador | 1. Valor especial fora do domínio | |
| B. Acumulador-soma | 2. Primeiro elemento da sequência | |
| C. Acumulador-produto | 3. ← 0 |
|
| D. Máximo / Mínimo | 4. ← 0 |
|
| E. Sentinela | 5. ← 1 |
A — , B — , C — , D — , E — ___
A — 3 (Contador inicia a 0) B — 4 (Soma inicia a 0) C — 5 (Produto inicia a 1) D — 2 (Máximo/mínimo iniciam com o primeiro elemento) E — 1 (Sentinela é um valor especial)
Exercício 3 · Definir conceitos (15 pts)
Defina, em uma ou duas frases, cada um dos seguintes conceitos:
a) Algoritmo
b) Estrutura repetitiva pré-teste
c) Ciclo infinito
a) Algoritmo: sequência finita, ordenada e não-ambígua de instruções que resolve um problema ou executa uma tarefa em tempo finito.
b) Estrutura repetitiva pré-teste: ciclo que avalia a condição antes de executar o bloco (ENQUANTO…FAÇA). Se a condição for inicialmente falsa, o bloco nunca é executado.
c) Ciclo infinito: iteração cuja condição de paragem nunca se torna falsa, fazendo com que o algoritmo nunca termine, violando a propriedade da finitude.
Grupo II · Avaliar expressões (20 pontos)
Exercício 4 · (20 pts)
Considere a = 8, b = 3, c = "Aulify". Indique o resultado de cada expressão:
| # | Expressão | Resultado |
|---|---|---|
| 4.1 | a + b * 2 |
|
| 4.2 | a DIV b |
|
| 4.3 | a MOD b |
|
| 4.4 | a / b (real) |
|
| 4.5 | (a + b) > 10 E (a * b) > 20 |
|
| 4.6 | NÃO (a < b) |
|
| 4.7 | b ^ 3 |
|
| 4.8 | (a = 8) OU (c = "Outro") |
| # | Expressão | Resultado |
|---|---|---|
| 4.1 | a + b * 2 |
14 (8 + 6) |
| 4.2 | a DIV b |
2 |
| 4.3 | a MOD b |
2 |
| 4.4 | a / b |
2.666… |
| 4.5 | (a + b) > 10 E (a * b) > 20 |
V (11>10 e 24>20) |
| 4.6 | NÃO (a < b) |
V (a≥b é verdadeiro) |
| 4.7 | b ^ 3 |
27 |
| 4.8 | (a = 8) OU (c = "Outro") |
V (basta a primeira ser V) |
Grupo III · Trace e depuração (40 pontos)
Exercício 5 · Trace table (20 pts)
Considere o algoritmo:
LER n
total ← 0
i ← 0
ENQUANTO i < n FAÇA
i ← i + 1
SE i MOD 2 = 0 ENTÃO
total ← total + i
FIM SE
FIM ENQUANTO
ESCREVER total
Para n = 6, complete a tabela:
| Iteração | i (após incremento) |
i MOD 2 = 0 |
total |
|---|---|---|---|
| 1 | 1 | F | 0 |
| 2 | 2 | V | |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | 6 |
Saída: ____
O que faz este algoritmo? ________
| Iteração | i |
Cond | total |
|---|---|---|---|
| 1 | 1 | F | 0 |
| 2 | 2 | V | 2 |
| 3 | 3 | F | 2 |
| 4 | 4 | V | 6 |
| 5 | 5 | F | 6 |
| 6 | 6 | V | 12 |
Saída: 12
Função: soma os números pares entre 1 e n. Para n = 6: 2 + 4 + 6 = 12.
Exercício 6 · Encontrar o erro (20 pts)
O algoritmo seguinte é suposto contar quantas notas de uma turma são positivas (≥ 10). Identifique dois erros e proponha a versão corrigida.
LER n
positivas ← 1
PARA i DE 1 ATÉ n FAÇA
LER nota
SE nota > 10 ENTÃO
positivas ← positivas + 1
FIM SE
FIM PARA
ESCREVER positivas
Erros:
-
Inicialização errada.
positivas ← 1deveria serpositivas ← 0— caso contrário a contagem fica sempre 1 a mais do que devia. -
Condição errada.
nota > 10exclui as notas iguais a 10, que são positivas. Deve sernota >= 10.
Versão corrigida:
LER n
positivas ← 0
PARA i DE 1 ATÉ n FAÇA
LER nota
SE nota >= 10 ENTÃO
positivas ← positivas + 1
FIM SE
FIM PARA
ESCREVER positivas
Grupo IV · Construir algoritmos (60 pontos)
Exercício 7 · Algoritmo com selecção (20 pts)
Escreva um algoritmo em pseudocódigo que leia o preço de uma compra e a categoria do cliente ("Premium" ou "Regular") e calcule o valor final a pagar, aplicando:
- Premium: 15 % de desconto.
- Regular: 5 % de desconto se a compra for superior a 50 €, 0 % caso contrário.
INICIO
LER preco
LER categoria
SE categoria = "Premium" ENTÃO
desconto ← preco * 0.15
SENÃO SE categoria = "Regular" E preco > 50 ENTÃO
desconto ← preco * 0.05
SENÃO
desconto ← 0
FIM SE
total ← preco - desconto
ESCREVER "Desconto: ", desconto
ESCREVER "Total a pagar: ", total
FIM
Aceitável: estrutura SE encadeada com três casos. Validação adicional (categoria ser uma das duas opções) seria um plus.
Exercício 8 · Algoritmo com ciclo e padrão (20 pts)
Escreva um algoritmo que leia n temperaturas (reais) e calcule e mostre:
- a média;
- a temperatura máxima registada;
- o número de dias frios (temperatura < 10 °C).
INICIO
LER n
SE n ≤ 0 ENTÃO
ESCREVER "n deve ser positivo"
SAIR
FIM SE
LER primeira
soma ← primeira
maxima ← primeira
frios ← 0
SE primeira < 10 ENTÃO frios ← 1 FIM SE
PARA i DE 2 ATÉ n FAÇA
LER temp
soma ← soma + temp
SE temp > maxima ENTÃO maxima ← temp FIM SE
SE temp < 10 ENTÃO frios ← frios + 1 FIM SE
FIM PARA
media ← soma / n
ESCREVER "Média: ", media
ESCREVER "Máxima: ", maxima
ESCREVER "Dias frios: ", frios, " em ", n
FIM
Padrões combinados: acumulador-soma, máximo, contador condicional — todos numa só passagem.
Exercício 9 · Algoritmo com sentinela (20 pts)
Numa portagem, regista-se o valor pago por cada veículo. Quando termina o turno, o operador insere −1 como sentinela.
Escreva um algoritmo que:
- Leia os valores até aparecer
−1; - Indique o número de veículos;
- Indique a receita total;
- Indique a receita média por veículo (trate o caso de zero veículos).
INICIO
contador ← 0
total ← 0
ESCREVER "Insira valor (-1 para terminar):"
LER valor
ENQUANTO valor ≠ -1 FAÇA
contador ← contador + 1
total ← total + valor
LER valor
FIM ENQUANTO
ESCREVER "Veículos: ", contador
ESCREVER "Receita total: ", total
SE contador > 0 ENTÃO
media ← total / contador
ESCREVER "Receita média: ", media
SENÃO
ESCREVER "Sem veículos registados"
FIM SE
FIM
Grupo V · Representação (40 pontos)
Exercício 10 · Conversão (20 pts)
Considere o pseudocódigo:
INICIO
LER x
SE x > 0 ENTÃO
ESCREVER "Positivo"
SENÃO SE x < 0 ENTÃO
ESCREVER "Negativo"
SENÃO
ESCREVER "Zero"
FIM SE
FIM
Desenhe o fluxograma equivalente no espaço abaixo.
Descrição do fluxograma: - Terminal «INÍCIO» → seta para baixo. - Paralelogramo «LER x» → seta. - Losango «x > 0 ?»: - V → Paralelogramo «ESCREVER 'Positivo'» → converge para o fim. - F → Losango «x < 0 ?»: - V → Paralelogramo «ESCREVER 'Negativo'». - F → Paralelogramo «ESCREVER 'Zero'». - Todas as três saídas convergem para uma seta única. - Terminal «FIM».
Exercício 11 · Justificar escolha de representação (10 pts)
Numa equipa de desenvolvimento, vai produzir documentação técnica de um algoritmo com 80 instruções. Justifique, em 3-4 linhas, se usaria fluxograma ou pseudocódigo e porquê.
Pseudocódigo. Para 80 instruções, um fluxograma torna-se rapidamente ilegível: setas que se cruzam, símbolos pequenos, dificuldade em ver o fluxo global. O pseudocódigo permite indentação clara, é mais compacto, e é fácil de versionar em sistemas como Git. Reservaria fluxogramas para sub-secções específicas onde o aspecto visual realmente ajude (por exemplo, o ramo principal de decisão).
Exercício 12 · Conversão para programação real (10 pts)
Indique como traduziria as seguintes instruções de pseudocódigo para Python:
| Pseudocódigo | Python |
|---|---|
LER nome |
|
ESCREVER "Olá, ", nome |
|
idade ← 17 |
|
SE idade >= 18 ENTÃO |
|
PARA i DE 1 ATÉ 10 FAÇA |
| Pseudocódigo | Python |
|---|---|
LER nome |
nome = input("Nome: ") |
ESCREVER "Olá, ", nome |
print(f"Olá, {nome}") |
idade ← 17 |
idade = 17 |
SE idade >= 18 ENTÃO |
if idade >= 18: |
PARA i DE 1 ATÉ 10 FAÇA |
for i in range(1, 11): |
Notas: Python usa = para atribuição (não ←), indentação para delimitar blocos (não palavras-chave FIM SE), e range(1, 11) exclui o limite superior (daí o 11).
FIM DA FICHA · BOM TRABALHO