Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... ·...
Embed Size (px)
Transcript of Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... ·...

Linguagem de ProgramaçãoAula 9 – Tipos Estruturados (Parte 2)
Universidade Federal de Santa Maria
Colégio Agrícola de Frederico Westphalen
Curso Técnico em Informática
Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno

Variáveis que guardam mais de um valor

Tipos Estruturados(Revisão)
• Difere de um tipo simples pelo fato de que contém
vários valores ao invés de um só;
• Cada componente de um tipo estruturado, em sua
forma mais básica é um tipo simples;
• Possibilitam otimizar o uso da memória do computador;
• Habilitam o programador para codificar problemas mais
complexos ou sistemas maiores de forma mais
elegante e legível;

Variável estruturada com valores homogêneos
Aluno
1 2 3 4 5
Marta Saulo Rodrigo Fabiane Elton

Vetores
• Vetor é uma forma de declarar uma variável para
guardar nela mais de um valor;
• Uma variável do tipo vetor é uma lista indexada (possui
um índice) de elementos do mesmo tipo (homogênea).
• Exemplo .. um vetor de strings denominado de
“DiasDaSemana”, poderia guardar (de forma indexada)
os seguintes valores:
Índice 1 2 3 4 5 6 7
Valor Dom Seg Ter Qua Qui Sex Sáb

Vetores (cont.)
• Com a utilização de vetores o computador consegue
dispor os bytes que representam os valores das
posições do vetor sequencialmente na memória,
otimizando sua gestão pelo sistema operacional.
• Quando declaramos um vetor precisamos definir seu
tamanho (quantos elementos irão compor o vetor);
• Em função do tamanho do vetor todo o espaço
necessário para armazená-lo é reservado pelo
programa quando o mesmo entra em execução. Cuidado com
vetores muito
grandes

Vetores em Pascal - array
• Em linguagem Pascal, o comando array é utilizado para
definir uma variável estruturada com valores homogêneos
var
DiasDaSemana : array[1..7] of string;
i : integer;
begin
DiasDaSemana[1] := ‘dom’;
DiasDaSemana[2] := ‘seg’;
DiasDaSemana[3] := ‘ter’;
DiasDaSemana[4] := ‘qua’;
DiasDaSemana[5] := ‘qui’;
DiasDaSemana[6] := ‘sex’;
DiasDaSemana[7] := ‘sab’;
for i:=1 to 7 do
writeln(DiasDaSemana[i]);
end.
Vetor de strings com
7 posições (1 ao 7)

Declarando variáveis do tipo array
• A declaração de variáveis array se dá indicando os valores
limites (mínimo e máximo) para o índice;
• O tamanho do array é calculado em função dessa diferença
(quantos valores existem entre o mínimo e o máximo?)
var
MesesDoAno : array[1..12] of string; //vetor de 12 posições
NumerosDeRifa : array[0..99] of integer; //vetor de 100 posições
MaioresSalarios : array[0..9] of real; //vetor de 10 posições
Limites Tipo

Utilizando variáveis do tipo array
• Os colchetes [ ] são utilizados para indexar os elementos
de um vetor:
var
preposicoes : array[0..2] of string;
begin
preposicoes[0] := 'de';
preposicoes[1] := 'da';
preposicoes[2] := 'do';
end.
Um vetor é uma variável com
vários elementos, para acessá-los
individualmente utiliza-se o índice

Passando variáveis do tipo array
para subrotinas
uses crt;
var
numeros : array[1..5] of integer;
procedure mostrarPares(lista : array of integer);
var i : integer;
begin
for i:=0 to 4 do
if (lista[i] mod 2) = 0
writeln(lista[i]);
end;
begin
mostrarPares(numeros);
End.
Atenção
Quando um vetor é passado como
parâmetro para uma subrotina o
seu tamanho não é especificado.
Independentemente de como o
array foi declarado, dentro da
subrotina o limite inferior do índice
é sempre ZERO.

Matrizes
• Matrizes são vetores com duas dimensões;
• Uma matriz é uma tabela (composta por linhas e
colunas), como vetores paralelos.
• Exemplo .. uma tabela para guardar a produção de
iogurte por turno durante a semana ...
Seg Ter Qua Qui Sex
Manhã 8 lts 9 lts 14 lts 21 lts 9 lts
Tarde 12 lts 12 lts 16 lts 21 lts 18 lts
Noite 18 lts 22 lts 7 lts 21 lts 12 lts
5 colunas
3 linhas
Produção[3,5]

Matrizes (cont.)
• Declaração
var producao : array[1..3, 1..5] of integer;
• Utilização
producao[3,4] := 21;
• Passagem por parâmetro
Antes de passar uma matriz como parâmetro faz-se
necessário declará-la como um tipo ... utilizando o comando type.

Passando matrizes como parâmetros
para subprogramastype
TProducao = array[1..3, 1..5] of integer;
procedure mostrarProducao(prod : TProducao);
var lin, col : integer;
begin
for lin:=1 to 3 do
begin
for col:=1 to 5 do
begin
gotoxy(col + 5, lin);
write(prod[lin, col]);
end;
end;
end.
Para passar
uma matriz
como parâmetro
faz-se
necessário
definir um tipo
novo para
representá-la.

Outras dimensões ...
• É possível definir arrays com mais de duas dimensões ...
var cubo: array[0..4, 0..4, 0..4] of byte;
• Outras dimensões também são
válidas, mas não é possível
representá-las graficamente.

Exercícios para fixação
http://www.cafw.ufsm.br/~bruno/disciplinas/ling_programacao/exercicios/lista9.html