Algoritmo e Estrutura de Dados I Aulas 13 – Variáveis Compostas Multidimensionais Márcia Marra [email protected] Variáveis Compostas Multidimensionais • Conjunto de dados referenciado por um mesmo nome e que necessita de mais de um índice ESCANINHO para ter os seus 1 2 3 1 elementos individualizados. 4 2 3 4 2 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. 3 Declaração declare lista_de_identificadores [li1:ls1,...,lin:lsn] t onde: – 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) 4 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 5 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. 6 Exemplo 1 Algoritmo Defina o tipo das variáveis leia A[1,1] ... A[4,4] leia K Calcule o produto da diagonal principal por K escreva A[1,1] ... A[4,4] Fim Algoritmo 7 Refinamentos sucessivos do exemplo 1 Ref. Calcule o produto da diagonal principal por k I ← 1 repita se I > 4 então interrompa fim se A[I,I] ← A[I,I] x K I ← I + 1 fim repita Fim Ref. Ref. Defina o tipo das variáveis declare A[1:4,1:4] numérico declare I, K numérico Fim Ref 8 Exemplo 1 completo Algoritmo declare A[1:4,1:4] numérico declare I, K numérico leia A[1,1] ... A[4,4] leia K I ← 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 9 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. 10 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: M1 M2 Jan 30 20 Fev 5 10 ... ... ... Dez 18 25 11 Exemplo 2 • O setor de controle de vendas tem uma tabela do custo e do lucro (em unidades monetárias) obtidos em cada motor. M1 M2 Custo Lucro 10 3 15 2 12 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 Custo M1 Jan Fev ... Dez 30 5 ... 18 Lucro M2 20 10 ... 25 Jan Custo Lucro M1 10 3 M2 15 2 Fev 30 X 10 + 20 X 15 5 X 10 + 10 X 15 ... Dez 13 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. 14 Exemplo 2 Algoritmo Declare as variáveis leia PRODUCAO[1,1]...PRODUCAO[12,2] leia VALORES[1,1]...VALORES[2,2] Calcule o custo e lucro mensais Calcule o custo e o lucro anuais Escreva os resultados obtidos Fim Algoritmo 15 Refinamentos sucessivos Ref. Calcule o custo e o lucro mensais I ← 1 repita se I > 12 então interrompa fim se J ← 1 repita se J > 2 então interrompa fim se CLM[I,J] ← 0 K ← 1 repita se K > 2 então interrompa fim se CLM[I,J] ← CLM[I,J] + PRODUCAO[I,K] x VALORES[K,J] K ← K + 1 fim repita J ← J + 1 fim repita I ← I + 1 fim repita Fim Ref 16 Refinamentos sucessivos Ref. Calcule o custo e o lucro anuais J ← 1 repita se J > 2 então interrompa fim se CLA[J] ← 0 I ← 1 repita se I > 12 então interrompa fim se CLA[J] ← CLA[J] + CLM[I,J] I ← I + 1 fim repita J ← J + 1 fim repita Fim Ref 17 Refinamentos sucessivos Ref. Escreva os resultados obtidos escreva CLM[1,1]...CLM[12,2] escreva CLA[1]...CLA[2] Fim Ref. Ref. Declare as variáveis declare 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érico Fim Ref. 18 Exemplo 2 completo Algoritmo declare 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érico 19 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 interrompa fim se CLM[I,J] ← 0 K ← 1 repita se K > 2 então interrompa fim se CLM[I,J] ← CLM[I,J] + PRODUCAO[I,K] x VALORES[K,J] K ← K + 1 fim repita J ← J + 1 fim repita I ← I + 1 fim repita 20 Exemplo 2 completo { Cálculo do custo e lucro anuais} J ← 1 repita se J > 2 então interrompa fim se CLA[J] ← 0 I ← 1 repita se I > 12 então interrompa fim se CLA[J] ← CLA[J] + CLM[I,J] I ← I + 1 fim repita J ← J + 1 fim repita { Escrita dos resultados obtidos } escreva CLM[1,1]...CLM[12,2] escreva CLA[1]...CLA[2] Fim Algoritmo 21