12.º anoPercurso edumaterial
O que vais aprender
- Usar variáveis e tipos adequados ao problema antes de programar.
Compreender
O tipo de um dado depende do que ele representa e das operações previstas. «08» identifica uma sala e precisa de conservar o zero inicial; 8 lugares é uma quantidade que se pode somar ou subtrair. Se ambos forem tratados como números, perde-se parte do código. Se ambos forem tratados como texto, uma soma de lotações deixa de ter o significado pretendido.
O texto «08» conserva o zero inicial, que pode ser necessário num código de sala; o número 8 representa uma quantidade sobre a qual faz sentido somar ou comparar. Converter sem pensar pode destruir informação. Se o programa apresentar «08» no ecrã, deve guardar um identificador textual; se calcular lugares disponíveis, precisa de inteiro não negativo e validação da entrada. A frase «Tudo o que contém algarismos deve converter-se automaticamente em número.» ultrapassa aquilo que foi demonstrado. Para a corrigir, é necessário definir tipo, valores admissíveis e operação pretendida antes da implementação. A decisão resulta da comparação entre o dado, o conceito e a condição que ficou por testar.
Um código de sala pode conter algarismos sem representar quantidade: o zero inicial em «08» é parte da sua identidade. Se for convertido no inteiro 8, perde-se a forma original e confundem-se duas operações: procurar a sala e somar lugares. Uma implementação declararia código como texto e lotação como inteiro não negativo. O teste útil não é apenas ver se o programa aceita «08», mas confirmar que o devolve sem remover o zero e que só calcula com a lotação.
Exemplo resolvido
No registo de salas da teoria, compara os identificadores de texto «08» e «8» e a lotação numérica 8. Que validação evita confundir nome e quantidade?
- Guardo «08» e «8» como sequências de caracteres; a primeira conserva um zero inicial que a distingue da segunda.
- Guardo a lotação 8 como inteiro para permitir somas de lugares, não de códigos.
- No teste, comparo os dois códigos como texto e somo apenas as lotações numéricas quando necessário.
«08» e «8» são códigos distintos; a quantidade 8 é um inteiro usado em cálculos.
Atenção ao erro
Tudo o que contém algarismos deve converter-se automaticamente em número.

Verifica agora
Por que o código «08» deve permanecer texto enquanto 8 lugares pode ser inteiro?
Ver solução explicada
Resposta: «08» é identificador e perderia o zero inicial na conversão; 8 lugares representa quantidade usada em cálculos.
Relaciona tipo com significado e operação, não com aparência.
Um colega toma a seguinte conclusão como demonstrada: «Tudo o que contém algarismos deve converter-se automaticamente em número.». Localiza o salto e corrige a frase.
Ver solução explicada
Resposta: A conclusão excede o recorte. O código é identificador textual; o número de lugares admite operações aritméticas. Somar dois códigos não produz lugares, enquanto somar lotações tem significado definido.
Refuta a inferência com uma condição concreta do caso.
Acrescenta-se a sala «09» com 12 lugares. Que tipo usarias para cada novo campo e qual soma é válida?
Ver solução explicada
Resposta: Guardaria «09» como texto e 12 como inteiro; poderia somar 8 + 12 = 20 lugares, mas não somar os códigos «08» e «09» como lotações.
Preserva zeros de identificação e calcula apenas com quantidades.
Especifica um teste de entrada e saída que revelaria a conversão indevida de um código de sala.
Ver solução explicada
Resposta: Entrada: código «08» e lotação 8. Saída esperada: código mostrado exatamente como «08» e lotação numérica 8; exibir «8» como código denunciaria perda do zero inicial.
Define valor de entrada e resultado observável para cada tipo.
Alinhamento curricular e fontes
- Introdução à programação, linguagens de programação, página 5. Objetivo oficial parafraseado: Usar variáveis e tipos adequados ao problema antes de programar.. O exemplo, a sequência e os exercícios são editoriais. · Aprendizagens Essenciais · aplicacoes-informaticas-b · 12-ano

