A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

MC102 - Algoritmos e Programação de Computadores 12ª Aula - Matrizes Amanda Meincke Melo Instituto de Computação/Unicamp 1º Sem/2005.

Apresentações semelhantes


Apresentação em tema: "MC102 - Algoritmos e Programação de Computadores 12ª Aula - Matrizes Amanda Meincke Melo Instituto de Computação/Unicamp 1º Sem/2005."— Transcrição da apresentação:

1 MC102 - Algoritmos e Programação de Computadores 12ª Aula - Matrizes Amanda Meincke Melo Instituto de Computação/Unicamp 1º Sem/2005

2 15/04/20052/34 Roteiro zVetores (Exemplos) zMatrizes zLeituras Complementares

3 15/04/20053/34 Vetores zO que estes programas fazem? (em papel)

4 15/04/20054/34 Matrizes zEstrutura bastante conhecida zUma Definição em Álgebra Linear: Uma matriz é um agrupamento retangular de números. Os números neste agrupamento são chamados entradas da matriz. (Howard e Rorres, 2001:41)

5 15/04/20055/34 1º Exemplo Prático :-) zVocê precisa organizar melhor seu tempo para conseguir estudar todas as disciplinas da faculdade e não ficar sobrecarregado(a) no período de provas. Para ajudá-lo(a) nesta tarefa, um amigo sugeriu que você contabilize as horas que tem dedicado para estudar cada disciplina (fora da sala de aula) em uma grade Disciplina X Dia da Semana.

6 15/04/20056/34 Disciplina X Dia da Semana

7 15/04/20057/34 zOrganizada a grade, seu amigo o questionou: yQual o dia da semana em que você está mais sobrecarregado? yQual o dia da semana em que você está menos sobrecarregado? yEm média, quantas horas você tem estudado por dia? yE nos finais de semana? yQuantas horas por semana você tem dedicado para estudar cada disciplina?

8 15/04/20058/34 yPara qual disciplina você tem dedicado mais tempo de estudo? Quanto tempo? yPara qual disciplina você dedicado menos tempo de estudo? Quanto tempo? y... yTem sobrado tempo para você conseguir dormir, pelo menos, 6 horas por dia? yTem sobrado tempo para algum lazer? yFinalmente, como você tem utilizado seu tempo?

9 15/04/20059/34 zSó com este exemplo já dá para perceber o potencial de modelar um problema utilizando matrizes zExistem outros tantos no mundo real!

10 15/04/200510/34 zPesquisa de Campo (Exemplo 4/Aula 11) ySeu programa o(a) ajuda a tabular os seguintes dados, relacionados a cada entrevistado xSexo xIdade xAltura xPeso 2º Exemplo Prático

11 15/04/200511/34 Entrevistados X Dados

12 15/04/200512/34 zSeu programa também o(a) ajuda a obter as seguintes informações: yTotal de entrevistados yDados de um determinado entrevistado yDados do entrevistado mais jovem yDados do entrevistado mais velho ySe existem entrevistados menores de idade ySe existem entrevistados com 60 anos ou mais

13 15/04/200513/34 yNúmero de mulheres entrevistadas yNúmero de homens entrevistados yAltura média das mulheres yAltura média dos homens yAltura média dos entrevistados yPeso médio das mulheres yPeso médio dos homens yPeso médio dos entrevistados y...

14 15/04/200514/34 Outro Exemplo zRealizar operação com Matrizes yIdentificar se duas matrizes são iguais ySomar e subtrair matrizes yMultiplicar uma matriz por um escalar yCalcular a combinação linear de matrizes yMultiplicar duas matrizes yDeterminar se um produto entre matrizes está definido yParticionar matrizes y...

15 15/04/200515/34 Matrizes em programação zTipo de dado usado para representar uma certa quantidade de dados na memória de tipo homogêneo (de mesmo tipo), utilizando o mesmo identificador zUm vetor, por exemplo, pode ser considerado um tipo de dado matriz, entretanto, unidimensional

16 15/04/200516/34 Matrizes zVeremos yComo este tipo de dado representa a memória yComo este tipo de dado é representado pela linguagem C yComo acessar cada elemento de uma matriz de forma precisa

17 15/04/200517/34 Representação da Memória zCada elemento de uma matriz fica disposto seqüencialmente na memória (alocação seqüencial), entretanto, para facilitar o entendimento podemos representá-la visualmente de outra maneira zA próxima transparência ilustra uma matriz bidimensional mxn, que nos ajudará a entender como a linguagem C trata este tipo de dado

18 15/04/200518/34 Representação da linguagem C para uma Matriz Bidimensional mxn n-1 | | | |... | m-1...

19 15/04/200519/34 Exemplo 1 zVamos resolver parte do 2º Exemplo Prático para entender como manipular matrizes com a linguagem C zOs dados precisam ser de tipo homogêneo yPara começar: que tipo você escolheria para representar as informações (idade, sexo, altura, peso) dos entrevistado?

20 15/04/200520/34 Declaração Sintaxe C para declaração de uma matriz: tipo identificador[numero de linhas][numero de colunas]; Sintaxe C para declaração de uma matriz: tipo identificador[numero de linhas][numero de colunas]; Na declaração de uma matriz bidimensional, o número de linhas e o número de colunas devem ser uma constante inteira! #include int main () { int e = 0; //Auxilia a fazer referência a um entrevistado int d = 0; //Auxilia a fazer referência aos dados de um entrevistado int entrevistados[50][4]; /* declaração de uma matriz bidimensional de 50 linhas e 4 colunas: as linhas representam os entrevistados (ex. entrevistados[0], entrevistados[1],..., entrevistados[49]), enquanto que as colunas representam cada dado de um entrevistado: (entrevistados[e][0] é seu sexo: 0 para sexo feminino e 1 para sexo masculino; entrevistados[e][1] é sua idade: um inteiro maior que zero; entrevistados[e][2] é sua altura em centímetros: um inteiro maior que zero; entrevistas[e][3] é o peso em gramas: um inteiro maior que zero */ /* Código do restante do programa */ return 0; }

21 15/04/200521/34 Declaração (uso de constante) #include #define N_LINHAS 50 //número máximo de entrevistados #define N_COLUNAS 4 int main () { int e = 0; int d = 0; int entrevistados[N_LINHAS][N_COLUNAS]; /* Código do restante do programa */ return 0; } O número de linhas e o número de colunas de uma matriz bidimensional podem ser dados por uma constante inteira definida.

22 15/04/200522/34 Cuidado! #include int main () { int e = 0; int d = 0; int n_linhas = 50, n_colunas = 4; int entrevistados[n_linhas][n_colunas]; /* Código do restante do programa */ return 0; } Na declaração, o valor inteiro para indicar o número de linhas ou colunas de um vetor não pode estar em uma variável.

23 15/04/200523/34 Referência a uma Entrada zExiste uma sintaxe na linguagem C para acesso a uma entrada de uma matriz zPara nosso exemplo yentrevistados[0][0] //Sexo do 1º entrevistado yentrevistados[0][1] //Idade do 1º entrevistado yentrevistados[0][2] //Altura do 1º entrevistado yentrevistados[0][3] //Peso do 1º entrevistado y... yentrevistados[49][3] /*Peso do 50º entrevistado, se for o caso*/

24 15/04/200524/34 Referência a uma Entrada zPodemos usar uma variável inteira para indicar o índice de uma matriz. Exemplo: yentrevistados[e][0] //Sexo do entrevistado e yentrevistados[e][1] //Idade do entrevistado e yentrevistados[e][2] //Altura do entrevistado e yentrevistados[e][3] //Peso do entrevistado e yentrevistados[e][d] /*Dado do entrevistado e: se d for 0, indica o sexo; se d for 1, indica a idade; se d for 2, é a altura; se d for 3, indica o peso*/ Como e e d são variáveis, precisam ser declaradas Também devem conter valores válidos no momento em que forem utilizadas para indexar a matriz Como e e d são variáveis, precisam ser declaradas Também devem conter valores válidos no momento em que forem utilizadas para indexar a matriz

25 15/04/200525/34 Referência a uma Entrada zTambém podemos utilizar expressões que resultem em um número inteiro válido. Exemplo: yentrevistados[0][N_COLUNAS - 1] /* Peso do primeiro entrevistado */ yentrevistados[e][d++] Consideremos que: N_COLUNAS é uma constante inteira que representa número de colunas da matriz e e d são variáveis do tipo inteiro Consideremos que: N_COLUNAS é uma constante inteira que representa número de colunas da matriz e e d são variáveis do tipo inteiro

26 15/04/200526/34 Cuidado! zOs índices de uma matriz devem variar entre 0 (zero) e o número de linhas menos 1 (um), e 0 (zero) e o número de colunas menos 1 (um) zAo acessar valores inválidos seu programa pode ser finalizado pelo Sistema Operacional zVoltando ao nosso exemplo...

27 15/04/200527/34 Referência a uma Entrada Sintaxe C para referenciar um elemento: identificador[índice][outro índice]; Sintaxe C para referenciar um elemento: identificador[índice][outro índice]; #include #define N_LINHAS 50 //número máximo de entrevistados #define N_COLUNAS 4 int main () { int e = 0; int d = 0; int entrevistados[N_LINHAS][N_COLUNAS]; /* O programa deve: - ler os dados, organizando-os na matriz - viabilizar as pesquisas sobre os dados */ return 0; }

28 15/04/200528/34 Pequeno Desafio... zE se você também quisesse guardar o nome dos entrevistados?

29 15/04/200529/34 Inicialização de Matrizes zAssim como em variáveis e vetores, podemos atribuir um valor inicial a uma matriz no momento de sua criação zExemplo: int grade[6][7] = { 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0 };

30 15/04/200530/34 Exemplo 2 zOperação com matrizes yCálculo da Matriz Transposta yAdição de Matrizes yMultiplicação de Matrizes

31 15/04/200531/34 Matrizes Multidimensionais zExemplos de declaração: yint C[3][3][3]; yfloat H[4][4][4][4]; zExemplos de acesso a um elemento: yC[0][0][0] yC[2][2][2] yC[i][j][k] yC[i][j][MAX_K-1] yH[0][0][0][0] yH[3][3][3][3] Consideremos que: i, j e k são variáveis do tipo inteiro MAX_K é uma constante inteira o número máximo de elementos da dimensão K Consideremos que: i, j e k são variáveis do tipo inteiro MAX_K é uma constante inteira o número máximo de elementos da dimensão K

32 15/04/200532/34 Dica para o Laboratório 06 zA tarefa de Laboratório 06 está baseada no 2º Exemplo Prático yAdapte o programa da aula para obter também as seguintes informações: xExiste um entrevistado com idade x? xHá quantas mulheres com altura entre 1,60m e 1,80m (exclusive)? Qual a idade e o peso de cada uma delas? xQual o peso médio dos homens com mais de 60 anos?

33 15/04/200533/34 Leitura Complementar zC Completo e Total (3ª edição) yCapítulo 4 (disponível no Xerox)

34 15/04/200534/34 Referência zHoward, A.; Rorres C. Álgebra Linear com Aplicações (trad. Claus Ivo Doering), 8ª edição, Bookman, Porto Alegre, 2001, 572p.


Carregar ppt "MC102 - Algoritmos e Programação de Computadores 12ª Aula - Matrizes Amanda Meincke Melo Instituto de Computação/Unicamp 1º Sem/2005."

Apresentações semelhantes


Anúncios Google