Ficha 02 · Variáveis, expressões e estruturas alternativas
- Identificar o tipo de dado mais adequado
- Avaliar expressões aritméticas e lógicas
- Escrever instruções de atribuição e leitura/escrita
- Construir estruturas alternativas em pseudocódigo
Parte I · Tipos de dados
Exercício 1 · Identificar o tipo
Para cada valor, indique o tipo de dado mais adequado (Inteiro, Real, Carácter, Cadeia, Lógico):
| Valor | Tipo |
|---|---|
| Número de irmãos | |
| Salário mensal | |
| NIF | |
| Inicial do nome do meio | |
| Aluno é finalista (sim/não) | |
Código postal 1234-567 |
|
| Altura em metros | |
| Idade em anos completos |
| Valor | Tipo | Justificação |
|---|---|---|
| Número de irmãos | Inteiro | Não há sentido em ter 2,5 irmãos. |
| Salário mensal | Real | Inclui cêntimos. |
| NIF | Cadeia | 9 dígitos; tratá-lo como inteiro perderia significado e nunca se fazem operações aritméticas. |
| Inicial do nome do meio | Carácter | Um único símbolo. |
| Aluno é finalista | Lógico | Verdadeiro / Falso. |
| Código postal | Cadeia | Contém hífen. |
| Altura em metros | Real | 1,72 m, 1,85 m, etc. |
| Idade em anos completos | Inteiro | Anos completos são inteiros. |
Exercício 2 · Constantes e variáveis
Para cada um dos seguintes elementos de um programa de uma escola, classifique como CONSTANTE ou variável:
a) Taxa de IVA aplicável à cantina _ b) Saldo do cartão de aluno _ c) Número máximo de alunos por turma _ d) Nota da última ficha de avaliação _ e) Número de meses no ano _ f) Idade do aluno _
a) CONSTANTE (IVA = 0.23 não muda no programa) b) Variável (muda a cada operação) c) CONSTANTE (MAX_ALUNOS = 28, definido por regulamento) d) Variável (cada aluno tem a sua) e) CONSTANTE (MESES_ANO = 12) f) Variável (depende do aluno e muda com o tempo)
Parte II · Expressões
Exercício 3 · Avaliar expressões aritméticas
Sabendo que a = 7, b = 3, c = 2, avalie cada expressão:
| Expressão | Resultado |
|---|---|
a + b * c |
|
(a + b) * c |
|
a DIV b |
|
a MOD b |
|
a / b (divisão real) |
|
a * c - b |
|
b ^ c |
|
(a + b) / c - 1 |
| Expressão | Resultado | Cálculo |
|---|---|---|
a + b * c |
13 | 7 + (3×2) = 7 + 6 |
(a + b) * c |
20 | 10 × 2 |
a DIV b |
2 | parte inteira de 7/3 |
a MOD b |
1 | resto de 7/3 |
a / b |
2.333… | divisão real |
a * c - b |
11 | 14 − 3 |
b ^ c |
9 | 3² |
(a + b) / c - 1 |
4 | 10/2 − 1 |
Exercício 4 · Avaliar expressões lógicas
Sabendo que idade = 17, tem_carta = Falso, nacionalidade = "PT", indique o valor lógico de cada expressão:
a) idade >= 18 _
b) idade >= 16 E tem_carta _
c) idade >= 16 OU tem_carta _
d) NÃO tem_carta _
e) (idade < 18) E (nacionalidade = "PT") _
f) (idade > 18) OU (nacionalidade = "ES") _
a) Falso (17 < 18) b) Falso (16 ≤ 17 mas tem_carta = Falso, e operador E exige ambos) c) Verdadeiro (16 ≤ 17, basta um Verdadeiro para OU) d) Verdadeiro (NÃO de Falso é Verdadeiro) e) Verdadeiro (ambos: idade<18 verdadeira E nacionalidade="PT" verdadeira) f) Falso (nenhum dos dois é verdadeiro)
Parte III · Atribuição e I/O
Exercício 5 · Traçar valores das variáveis
Considere o seguinte algoritmo:
INICIO
x ← 5
y ← 10
z ← x + y
x ← x * 2
y ← z - x
ESCREVER x, y, z
FIM
Preencha a tabela de execução (trace table) e indique o que é escrito no fim:
| Instrução | x | y | z |
|---|---|---|---|
x ← 5 |
5 | — | — |
y ← 10 |
|||
z ← x + y |
|||
x ← x * 2 |
|||
y ← z - x |
Saída: ESCREVER _, _, ____
| Instrução | x | y | z |
|---|---|---|---|
x ← 5 |
5 | — | — |
y ← 10 |
5 | 10 | — |
z ← x + y |
5 | 10 | 15 |
x ← x * 2 |
10 | 10 | 15 |
y ← z - x |
10 | 5 | 15 |
Saída: ESCREVER 10, 5, 15
Discussão pedagógica: o ponto delicado é a linha y ← z - x — usa o valor actual de x (já 10, após a multiplicação), não o valor original. A ordem das instruções é determinante.
Exercício 6 · Escrever um algoritmo sequencial
Escreva em pseudocódigo um algoritmo que:
- Leia o nome de um aluno;
- Leia três notas (Escrita, Oral, Prática);
- Calcule a média ponderada (50% Escrita + 20% Oral + 30% Prática);
- Escreva uma mensagem do tipo:
«Olá NOME, a sua média é MEDIA».
INICIO
LER nome
LER escrita
LER oral
LER pratica
media ← escrita * 0.5 + oral * 0.2 + pratica * 0.3
ESCREVER "Olá ", nome, ", a sua média é ", media
FIM
Aceitam-se variantes (ordem das leituras, nomes das variáveis, formatação da saída). Avalia-se sobretudo o uso correcto de LER, atribuição com ← e cálculo da média ponderada.
Parte IV · Estrutura alternativa
Exercício 7 · SE simples
Escreva um algoritmo que leia a idade do utilizador e indique se é maior de idade ou menor de idade.
INICIO
LER idade
SE idade >= 18 ENTÃO
ESCREVER "Maior de idade"
SENÃO
ESCREVER "Menor de idade"
FIM SE
FIM
Exercício 8 · SE encadeado
Escreva um algoritmo que leia uma temperatura em graus Celsius e classifique-a segundo a seguinte tabela:
| Temperatura | Classificação |
|---|---|
| < 0 | Glaciar |
| 0 a 14 | Frio |
| 15 a 24 | Ameno |
| 25 a 32 | Quente |
| ≥ 33 | Muito quente |
INICIO
LER temp
SE temp < 0 ENTÃO
ESCREVER "Glaciar"
SENÃO SE temp <= 14 ENTÃO
ESCREVER "Frio"
SENÃO SE temp <= 24 ENTÃO
ESCREVER "Ameno"
SENÃO SE temp <= 32 ENTÃO
ESCREVER "Quente"
SENÃO
ESCREVER "Muito quente"
FIM SE
FIM
Pontos críticos: a ordem dos testes importa — começamos pelo extremo (< 0) e vamos avançando. Note-se que cada SENÃO SE já assume implicitamente que os anteriores falharam.
Exercício 9 · SE com operador lógico
Escreva um algoritmo que leia a idade e a nacionalidade de uma pessoa e indique se pode votar nas eleições portuguesas (idade ≥ 18 E nacionalidade = "PT").
INICIO
LER idade
LER nacionalidade
SE idade >= 18 E nacionalidade = "PT" ENTÃO
ESCREVER "Pode votar"
SENÃO
ESCREVER "Não pode votar"
FIM SE
FIM
Alternativa elegante: podia-se atribuir a uma variável lógica:
pode_votar ← (idade >= 18) E (nacionalidade = "PT")
SE pode_votar ENTÃO ...
Esta segunda forma é melhor quando a condição é reutilizada várias vezes.