Algoritmos e Estruturas de Dados I

Aula 10: Variáveis Subscritas

Variáveis simples são inadequadas quando é necessário guardar muitos valores simultaneamente na memória.

Exemplo: Imprimir 3 números na ordem inversa em que foram lidos:

program inverte;
var x, y, z: integer;
begin
  read(x, y, z);
  write(z, y, x);
end.

Variáveis Subscritas

a.k.a. arranjos, vetores, array

variável simples variável subscrita

x w[1]

y w[2]

z w[3]

Índice (subscrito) Æ constante, variável, expressão

Exemplo

program exemplo;
var i: integer;
    w: array [1 .. 3] of integer;
begin
  w[1] := 5;
  w[2] := 1;
  w[3] := 3;
  i := 2;
  write(w[i]);
  write(w[i+1]);
  write(w[w[i]]);
end.

Resultado: 1 3 5

Programa Inverte

program inverte100;
var i: integer;
    w: array [1..100] of integer;
begin
  for i := 1 to 100 do
    readln(w[i]);
  for i := 100 downto 1 do
    writeln(w[i]);
end.

Acima da Média

Observações

É possível resolver o problema sem vetores ?

Sim: leitura repetida do arquivo. Contudo:

Quantos São Bons ?

Mas bom mesmo é o programador...

program maior_nota_2;
var numero, nota, max, n, i: integer;
    aluno: array [1..50] of integer;
begin
  max := -1; n := 0;
  while not eof do begin
    readln(numero, nota);
    if nota > max then begin
      max := nota;
      n := 1;
      aluno[1] := numero;
    end
    else if nota = max then begin
      n := n + 1;
      aluno[n] := numero;
    end;
  end;
  writeln(`Maior nota: `, max);
  for i := 1 to n do
    writeln(`Aluno: `, numero);
end.

Vetores de n Dimensões

Exemplo:

Três Dimensões

Salario de funcionários por:

func[l, i, e]: funcionario que trabalha em l, com idade i e escolaridade e.