Professional Documents
Culture Documents
Linguagens de Programação: Braga - Eac - PL
Linguagens de Programação: Braga - Eac - PL
Programação
BRAGA_EAC_PL
Matrizes
• Crie uma aplicação que receba do utilizador as notas de 2 alunos, a português, matemática e história.
Pretende-se mostrar no ecrã as médias por disciplina e por aluno. Use uma matriz para guardar os
valores das notas e um array unidimensional para guardar o nome dos alunos. Todos os cálculos deverão
ser efetuados com base nos valores guardados na matriz.
Solução
Registos
• Os arrays são efetivamente muito úteis, já que permitem guardar e tratar vários valores do mesmo tipo
de dados, usando apenas uma única variável em que, a única coisa que altera para se aceder a cada
valor, é o índice onde esse valor vive. Os arrays multidimensionais ou matrizes estendem essa
característica, permitindo que possam ser guardados (também por cada índice) vários valores que
representam várias dimensões do mesmo elemento do conjunto.
• No entanto, o uso de arrays de tipos primitivos acarreta limitações muito grandes no que respeita ao tipo
de dados a serem tratados, ou seja, não resolve, por exemplo, o problema de se guardar numa única
matriz o nome e a nota do aluno, pois ou o array é do tipo string ou do tipo int e nunca dos dois em
simultâneo
• 1000 alunos em que, num primeiro momento se considerou ser melhor a implementação num array de
inteiros e não em 1000 variáveis distintas, e que num segundo momento se verificou que se podiam
guardar várias notas por aluno usando para isso duas dimensões de um array (array bidimensional),
imagine-se agora que se pretende adicionar informação a cada aluno como a data de nascimento, nome,
idade, etc. O facto das dimensões de um array serem obrigatoriamente do mesmo tipo de dados, faz
com que não seja possível resolver este problema apenas com um array usando várias dimensões para
esse efeito.
• O conceito de registo (ou struct) resolve este problema. Um registo é um tipo de dados estruturado que
é do tipo que queiramos que seja. Dito de outra forma, o programador é que define o tipo de dados do
registo da forma que mais lhe convier, ou seja, é personalizável.
• Entenda-se um registo como um impresso (como aqueles que são usados em instituições publicas,
escolas ou empresas) composto por vários campos onde devem ser preenchidos dados de diferentes
tipos. Por exemplo, podemos imaginar um registo (impresso) com os seguintes campos: nome
(string), morada (string), idade(int), dataNascimento (DateTime), notaMatematica (float),
notaHistoria(float), cumpriuServicoMilitar (bool), etc.
PROBLEMA
• Crie uma aplicação que solicite o nome, morada, localidade, idade, nota de matemática, nota de
português e nota de inglês de um aluno e guarde a informação numa variável registo (struct). A aplicação
deve terminar mostrando no ecrã um formulário (similar ao apresentado na imagem seguinte) com os
dados de cada campo do registo.