» Arrays (tabelas): Contexto (1)
Contexto
Definição
Representação
Gráfica
Imagine-se que é necessário efectuar o cálculo da
temperatura média do primeiro trimestre do ano. Com os
conhecimentos apresentados até aqui o programa a
desenvolver seria aproximadamente:
Utilização
Program TempMed(input,output);
TempMed(input,output);
Program
Var
Var
t1,t2,t3 :: real;
real;
t1,t2,t3
tmedia :: real;
real;
tmedia
Begin
Begin
writeln(‘Dê aa temperatura
temperatura de
de Janeiro’);
Janeiro’);
writeln(‘Dê
readln(t1);
readln(t1);
writeln(‘Dê aa temperatura
temperatura de
de Fevereiro’);
Fevereiro’);
writeln(‘Dê
readln(t2);
readln(t2);
writeln(‘Dê aa temperatura
temperatura de
de Março’);
Março’);
writeln(‘Dê
readln(t3);
readln(t3);
tmedia:=(t1+t2+t3)/3;
tmedia:=(t1+t2+t3)/3;
writeln(‘a temperatura
temperatura média
média é:’,
é:’, tmedia)
tmedia)
writeln(‘a
End.
End.
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas): Contexto (2)
Contexto
Definição
Representação
Gráfica
Utilização
Imagine-se agora que se pretende efectuar o mesmo cálculo para
um ano inteiro, ou por exemplo, ao longo de uma década... Seria
necessário declarar 12x10, ou seja, 120 variáveis!!!
E a expressão para cálculo da média teria cerca de 250 caracteres!
Para facilitar este tipo de tarefas e reduzir o esforço de
programação existe o tipo estruturado array (ou tabela).
Definação:
Um array é um conjunto finito de variáveis de um
mesmo tipo referenciadas por um mesmo nome e
diferenciáveis por um índice (que indica a posição
que o elemento ocupa dentro da tabela).
Vantagens:
- Utilização indexada de variáveis;
- Rapidez e facilidade de construção de código;
- Apropriado para a maioria dos problemas.
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas): Definição
A declaração de uma variável array possui a seguinte sintaxe:
Contexto
Var
<ArrayName> : array[index] of <DataType>
Definição
Representação
Gráfica
Utilização
Nome que pretende dar
ao Array. Tal como faz
com qualquer outra
variável não use palavras
reservadas do Pascal
Definição do tipo de
variáveis que vai
ser armazenado na
tabela (e que só
pode ser um tipo de
cada vez)
Dentro de parêntesis
rectos escrevem-se
os índices (valores
que servem para
identificar
inequivocamente os
elementos dentro de
uma tabela)
Mas atenção que as tabelas podem ser:
- unidimensionais;
- bidimensionais;
- tridimensionais.
• Uma tabela pode conter qualquer tipo de elementos, até outras tabelas;
• Uma tabela pode ter tantas dimensões quantas as que se quiserem.
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas):
•
Contexto
34
Definição
Representação
Gráfica
Tabelas unidimensionais:
•
Utilização
8
2
21
76
12
30
43
7
2
41
3
Tabelas tridimensionais:
10
4
1
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
29
Tabelas bidimensionais:
10
4
1
•
2
21
76
12
30
43
7
2
41
3
(c) Alcina Prata & Luís Coelho, 2007
SISSI:
»SISSI:
Arrays
(tabelas):
•
Tabelas unidimensionais:
Var
Contexto
Classif : array [1..5] of Real;
Definição
Representação
Gráfica
34
Utilização
8
2
29
Ex.
2
Classif [2] = 8
•
Tabelas bidimensionais:
Var
Classif : array [1..3, 1..4] of Real;
10
4
1
21
76
12
30
43
7
2
41
3
Ex.
Classif [2,3] = 43
Linha
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
coluna
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas): Definição
Muito Importante:
Contexto
Definição
Representação
Gráfica
A) No exemplo fornecido, em que se pretendem armazenar valores
de temperaturas ao longo de um ano, teremos então:
Var
Temperatura : array [1..12] of Real;
Utilização
• No entanto, embora a notação seguinte seja autorizada, o mais
correcto e menos limitativo será utilizar:
type Temperaturas = array [1..12] of Real;
var contemperaturas : Temperaturas;
B) Para armazenar temperaturas ao longo de uma década é
possível declarar um array bidimensional:
type
Temperatura = array [1..10, 1..12] of real;
Var contemperaturas : Temperaturas;
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas): Representação Gráfica
Alguns exemplos acompanhados da respectiva representação:
Contexto
Definição
Representação
Gráfica
Utilização
...
...
Type
Type AA
AA == array
array [1..10]
[1..10] of
of Integer;
Integer;
Var
Var
AA :: AA;
AA;
Begin
Begin
A[1]:=12;
A[1]:=12;
A[8]:=91;
A[8]:=91;
End.
End.
A
1
2
3
4
5
7
12
4
8
9
10
9
10
91
...
...
Type
Type BB
BB == array
array [1..4,
[1..4, 1..10]
1..10] of
of Integer;
Integer;
Var
Var
BB :: BB;
BB;
B
1
2
3
4
5
Begin
Begin
B[1,8]:=54;
1
7
B[1,8]:=54;
B[3,3]:=32;
B[3,3]:=32;
B[4,7]:=-5;
2
41
B[4,7]:=-5;
{{ …… }}
3
32
End.
End.
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
6
6
7
8
54
89
-5
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas):
•
Exemplos:
Contexto
Definição
Representação
Gráfica
Type TClassif = array [0..20] of integer
TNum = array [‘A’..’F’] of integer;
TLetras = packed array [1..20, 1..50] of char;
Utilização
Var Contclassif : TClassif;
Contnum : TNum;
Contletras : TLetras;
Aqui temos definidos 3 tipos de tabelas:
a) TClassif - com uma dimensão e 21 elementos do tipo inteiro;
b) TNum - com uma dimensão e 6 elementos do tipo inteiro;
c) TLetras - com duas dimensões (20 linhas e 50 colunas) e
portanto com 1000 elementos (20x50) do tipo carácter.
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas): Utilização
Contexto
Definição
Representação
Gráfica
Utilização
O exemplo que tem servido de base para o raciocínio, levaria então
ao desenvolvimento do seguinte programa final:
Program
Program TempMedia(input,output);
TempMedia(input,output);
Type
Type
Temperatura
Temperatura == array[1..120]
array[1..120] of
of real;
real;
Var
Var
Temp
Temp :: Temperatura;
Temperatura;
II
:: integer;
integer;
Media,
Total
Media, Total :: real;
real;
Begin
Begin
{{ Ler
Ler valores
valores das
das temperaturas
temperaturas ee fazer
fazer soma
soma total
total }}
Total:=0;
Total:=0;
For
For I:=1
I:=1 to
to 120
120 do
do begin
begin
write(‘Indique
a
temperatura
write(‘Indique a temperatura ‘,I,’:
‘,I,’: ‘);
‘);
readln(temp[I]);
readln(temp[I]);
Total:=Total+Temp[I];
Total:=Total+Temp[I];
End;
End;
{{ Calcular
Calcular média
média }}
Media:=Total/120;
Media:=Total/120;
{{ Apresentar
Apresentar resultado
resultado }}
Writeln(‘A
Writeln(‘A média
média das
das temperaturas
temperaturas é:
é: ‘,media);
‘,media);
End.
End.
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas): Utilização
Exercícios:
Contexto
Definição
Representação
Gráfica
Utilização
1 - Faça um programa que recolha 10 letras do teclado e no final as
apresente pela ordem contrária (Dica: use apenas uma tabela
unidimensional).
2 - Faça um programa, para turmas de 10 alunos, que escreva o número
dos alunos que tiveram nota superior à média geral da turma (Dica: use
duas tabelas unidimensionais).
No exercício 2 note que:
a) o programa tem de pedir o número do aluno e a respectiva nota e tem
de guardar esses dados de modo a que possam ser associados;
b) quando acaba a inserção de notas o programa calcula então a média
da turma;
c) vai aos dados armazenados (nrº e nota do aluno) e compara cada uma
das notas que lá tem com a média da turma;
d) finalmente, escreve o número dos alunos que tiveram uma nota acima
da média.
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
(c) Alcina Prata & Luís Coelho, 2007
» Arrays (tabelas): Utilização
Exercícios (cont.):
Contexto
Definição
Representação
Gráfica
Utilização
3 – Reformule o exemplo apresentado no acetato 9 de modo a
utilizar uma tabela bidimensional com 10 linhas e 12 colunas.
4 – Faça um programa que aceite do teclado 6 nomes. De
seguida o programa deverá perguntar ao utilizador que nome
deseja pesquisar e responder ‘esse nome foi encontrado’ ou
‘esse nome não foi encontrado’ caso respectivamente o
encontre, ou não, na lista de 6 nomes previamente inseridos. O
programa deverá estar preparado para repetir essa pesquisa
tantas vezes quantas o utilizador pretender (Dica: use uma
tabela unidimensional que armazene dados do tipo string).
Estrutura e Organização de Dados
Gestão de Sistemas de Informação – 1ºAno
(c) Alcina Prata & Luís Coelho, 2007
Download

Arrays (tabelas): Contexto (1)