algoritmo e estrutura de dados i aulas 13 – variáveis compostas multidimensionais márcia marra...
TRANSCRIPT
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