Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... ·...

of 15 /15
Linguagem de Programação Aula 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

Transcript of Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... ·...

Page 1: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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

Page 2: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

Variáveis que guardam mais de um valor

Page 3: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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;

Page 4: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

Variável estruturada com valores homogêneos

Aluno

1 2 3 4 5

Marta Saulo Rodrigo Fabiane Elton

Page 5: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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

Page 6: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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

Page 7: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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)

Page 8: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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

Page 9: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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

Page 10: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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.

Page 11: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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]

Page 12: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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.

Page 13: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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.

Page 14: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

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.

Page 15: Linguagem de Programação - cafw.ufsm.brbruno/disciplinas/ling_programacao/slides/aula9... · Matrizes •Matrizes são vetores com duas dimensões; •Uma matriz é uma tabela (composta

Exercícios para fixação

http://www.cafw.ufsm.br/~bruno/disciplinas/ling_programacao/exercicios/lista9.html