21
Algoritmo e Estrutura de Dados I Aulas 13 – Variáveis Compostas Multidimensionais Márcia Marra [email protected]

Algoritmo e Estrutura de Dados I Aulas 13 – Variáveis Compostas Multidimensionais Márcia Marra [email protected]

Embed Size (px)

Citation preview

Algoritmo e Estrutura de Dados I

Aulas 13 – Variáveis CompostasMultidimensionais

Márcia [email protected]

2

Variáveis Compostas Multidimensionais

• Conjunto de dados referenciado por um mesmo nome e que necessita de

mais de um índice para ter os seus elementos individualizados.

ESCANINHO

1 2 3 4

1

2

3

4

3

Variáveis Compostas Multidimensionais

• O primeiro índice representa a linha e o segundo a coluna– ESCANINHO [3,2]

• Terceira linha e segunda coluna.

• Quando a variável composta é tridimensional, o terceiro índice pode ser encarado como o número da variável que está sendo referenciado com os dois primeiros índices.

4

Declaraçãodeclare lista_de_identificadores [li1:ls1,...,lin:lsn] tonde:

– declare: palavra chave– lista de identificadores: nomes associados às

variáveis que se deseja declarar– li1:ls1, ..., lin:lsn: são os limites dos intervalos de

variação dos índices da variável, onde cada par de limites está associado a um índice.

– t: tipo dos componentes da variável (numérico, literal, lógico)

5

Exemplos de variáveis

• Exemplos:– declare LIVRO [1:4,1:6] numérico– declare NOTAS [1:55, 1:10] numérico– declare EXEMPLO [1:15, 1:15] numérico– declare PARALELEPIPEDO[1:6, 1:4, 1:6]

numérico– declare MULTI[1:4, 1:7, 1:8] numérico

6

Exemplo 1

• Na matemática é comum o uso de matrizes de números.

• Dada uma matriz 4 x 4, escrever um algoritmo para ler a matriz e escreve-la após ter multiplicado os elementos da diagonal principal por uma constante k.

7

Exemplo 1

AlgoritmoDefina o tipo das variáveisleia A[1,1] ... A[4,4]leia KCalcule o produto da diagonal principal por K

escreva A[1,1] ... A[4,4]

Fim Algoritmo

8

Refinamentos sucessivos do exemplo 1

Ref. Calcule o produto da diagonal principal por k I ← 1 repita

se I > 4então interrompa

fim se A[I,I] ← A[I,I] x K I ← I + 1 fim repitaFim Ref. Ref. Defina o tipo das variáveis

declare A[1:4,1:4] numéricodeclare I, K numérico

Fim Ref

9

Exemplo 1 completoAlgoritmo

declare A[1:4,1:4] numéricodeclare I, K numéricoleia A[1,1] ... A[4,4]leia KI ← 1

repita se I > 4

então interrompa fim se A[I,I] ← A[I,I] x K I ← I + 1 fim repita

escreva A[1,1] ... A[4,4]Fim Algoritmo

10

Exemplo 2

• O produto de duas matrizes A e B só é possível se o número de colunas da matriz A for igual ao número de linhas da matriz B.

• Desta forma, se A é uma matriz m x n e B é uma matriz n x p, a multiplicação será possível e o produto será uma matriz C de tamanho m x p.

11

Exemplo 2• O produto matricial pode ser muito útil em várias

aplicações.• Uma certa fábrica produziu dois tipos de motores M1 e

M2 nos meses janeiro a dezembro e o número de motores produzidos foi registrado na tabela abaixo:

30 205 10... ...18 25

M1 M2

Jan

Fev

...

Dez

12

Exemplo 2

• O setor de controle de vendas tem uma tabela do custo e do lucro (em unidades monetárias) obtidos em cada motor.

10 3

15 2

Custo Lucro

M1

M2

13

Exemplo 2

• Para saber o custo e o lucro nos meses de janeiro a dezembro, basta que seja realizado o produto matricial das duas tabelas

30 205 10... ...18 25

Jan

Fev

...

Dez

M1 M2

10 315 2

Custo Lucro

M1

M2

30 X 10 +20 X 155 X 10 +10 X 15

Custo Lucro

Jan

Fev

...

Dez

14

Exemplo 2

• Fazer um algoritmo que, a partir da produção mensal de motores M1 e M2 e seus respectivos custos e lucros, calcule o custo e o lucro em cada um dos meses e o custo e lucro anuais.

15

Exemplo 2

AlgoritmoDeclare as variáveisleia PRODUCAO[1,1]...PRODUCAO[12,2]leia VALORES[1,1]...VALORES[2,2]Calcule o custo e lucro mensaisCalcule o custo e o lucro anuaisEscreva os resultados obtidos

Fim Algoritmo

16

Refinamentos sucessivosRef. Calcule o custo e o lucro mensais

I ← 1repita se I > 12

então interrompa fim se J ← 1 repita

se J > 2 então interrompafim seCLM[I,J] ← 0K ← 1repita se K > 2

então interrompa fim se CLM[I,J] ← CLM[I,J] + PRODUCAO[I,K] x VALORES[K,J] K ← K + 1fim repitaJ ← J + 1

fim repita I ← I + 1fim repita

Fim Ref

17

Refinamentos sucessivosRef. Calcule o custo e o lucro anuais

J ← 1repita

se J > 2 então interrompafim seCLA[J] ← 0I ← 1repita se I > 12

então interrompa fim se CLA[J] ← CLA[J] + CLM[I,J] I ← I + 1fim repitaJ ← J + 1

fim repitaFim Ref

18

Refinamentos sucessivos

Ref. Escreva os resultados obtidosescreva CLM[1,1]...CLM[12,2]escreva CLA[1]...CLA[2]

Fim Ref.

Ref. Declare as variáveisdeclare PRODUCAO, {producao mensal de cada motor}

CLM[1:12,1:2], {custo e lucro mensais dos motores}

VALORES[1:2,1:2], {custo e lucro de cada motor}

CLA[1:2] {custo e lucro anuais dos motores} numérico

declare I, J, K numéricoFim Ref.

19

Exemplo 2 completoAlgoritmodeclare PRODUCAO,{producao mensal de cada motor}

CLM[1,12:1,2], {custo e lucro mensais dos motores}

VALORES[1:2,1:2], {custo e lucro de cada motor}

CLA[1:2] {custo e lucro anuais dos motores}

numéricodeclare I, J, K numérico

20

Exemplo 2 completo{ Cálculo do custo e lucro mensais} I ← 1

repita se I > 12

então interrompa fim se J ← 1 repita

se J > 2 então interrompafim seCLM[I,J] ← 0K ← 1repita se K > 2

então interrompa fim se CLM[I,J] ← CLM[I,J] + PRODUCAO[I,K] x VALORES[K,J] K ← K + 1fim repitaJ ← J + 1

fim repita I ← I + 1fim repita

21

Exemplo 2 completo{ Cálculo do custo e lucro anuais} J ← 1

repitase J > 2 então interrompafim seCLA[J] ← 0I ← 1repita se I > 12

então interrompa fim se CLA[J] ← CLA[J] + CLM[I,J] I ← I + 1fim repitaJ ← J + 1

fim repita { Escrita dos resultados obtidos } escreva CLM[1,1]...CLM[12,2]

escreva CLA[1]...CLA[2]Fim Algoritmo