Partilhar: WhatsApp
aulify
UC UC00245 · T. Desenv. Software, T. Multimédia, T. Inform. Gestão

Ficha 02 · Variáveis, expressões e estruturas alternativas

Tipos de dados · atribuição · operadores · estrutura SE-ENTÃO-SENÃO
Versão · Aluno
Tempo · 60 minutos
Cotação · 100 pontos
Aluno(a)
Turma
Data
Objectivos da ficha

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
(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:

  1. Leia o nome de um aluno;
  2. Leia três notas (Escrita, Oral, Prática);
  3. Calcule a média ponderada (50% Escrita + 20% Oral + 30% Prática);
  4. 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.