Ficha 05 · Pseudocódigo, fluxograma e depuração
- Converter entre pseudocódigo e fluxograma
- Construir trace tables
- Identificar e corrigir erros típicos
- Aplicar programação defensiva
Parte I · Pseudocódigo ↔ Fluxograma
Exercício 1 · Identificar símbolos
Indique o nome (e símbolo) que representa cada um destes elementos do fluxograma:
a) Início ou fim do algoritmo. ___
b) Cálculo ou atribuição. ___
c) Decisão (pergunta com resposta V/F). ___
d) Entrada ou saída de dados. ___
e) Direcção do fluxo entre símbolos. ___
Exercício 2 · Converter pseudocódigo em fluxograma
Considere o seguinte algoritmo. Desenhe o fluxograma correspondente no espaço abaixo:
INICIO
LER nota
SE nota >= 10 ENTÃO
ESCREVER "Aprovado"
SENÃO
ESCREVER "Reprovado"
FIM SE
FIM
Exercício 3 · Converter fluxograma em pseudocódigo
Considere um fluxograma com: - Terminal «INÍCIO»; - Paralelogramo «LER n»; - Processo «soma ← 0», «i ← 1»; - Losango «i ≤ n ?»; - Saída V → Processo «soma ← soma + i», «i ← i + 1», volta ao losango. - Saída F → Paralelogramo «ESCREVER soma». - Terminal «FIM».
Escreva o pseudocódigo equivalente.
Parte II · Trace Table
Exercício 4 · Trace table simples
Complete a trace table para o algoritmo abaixo, com entrada n = 6:
LER n
fact ← 1
i ← 1
ENQUANTO i <= n FAÇA
fact ← fact * i
i ← i + 1
FIM ENQUANTO
ESCREVER fact
| Iteração | n |
i (antes do teste) |
Condição i ≤ n |
fact (após operação) |
i (após incremento) |
|---|---|---|---|---|---|
| Inicial | 6 | 1 | V | 1 (1×1) | 2 |
| 2 | 6 | 2 | V | ||
| 3 | 6 | ||||
| 4 | 6 | ||||
| 5 | 6 | ||||
| 6 | 6 | ||||
| 7 | 6 | F | — | — |
Saída: ____
Parte III · Identificar e corrigir erros
Exercício 5 · Encontrar o erro
O algoritmo seguinte é suposto somar os primeiros n números pares. Identifique o(s) erro(s) e corrija:
LER n
soma ← 1 // (a)
PARA i DE 1 ATÉ n FAÇA // (b)
soma ← soma + i // (c)
FIM PARA
ESCREVER soma
Exercício 6 · Detectar ciclo infinito
Indique se cada algoritmo termina. Se não terminar, explique porquê.
(a)
i ← 0
ENQUANTO i < 10 FAÇA
i ← i + 2
FIM ENQUANTO
(b)
i ← 0
ENQUANTO i ≠ 10 FAÇA
i ← i + 3
FIM ENQUANTO
(c)
n ← 100
ENQUANTO n > 0 FAÇA
n ← n - 1
FIM ENQUANTO
Exercício 7 · Programação defensiva
O seguinte algoritmo calcula a média de notas, mas tem várias vulnerabilidades. Identifique-as e proponha melhorias.
LER n
soma ← 0
PARA i DE 1 ATÉ n FAÇA
LER nota
soma ← soma + nota
FIM PARA
media ← soma / n
ESCREVER media
Exercício 8 · Refactoring (legibilidade)
Reescreva o seguinte algoritmo de forma mais legível, mantendo o mesmo comportamento. Justifique pelo menos duas alterações.
INICIO
LER x
LER y
z ← x + y
IF z > 100 THEN
a ← z * 0.1
ESCREVER z - a
ELSE
ESCREVER z
FIM SE
FIM