1 / 31

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013. Capítulo VII Variáveis Indexadas Numéricas. Classificação das variáveis:. Escalares. Homogêneas – Variáveis Indexadas (arrays – em inglês). Variáveis. Estruturadas. Heterogêneas – Estruturas (structs – em inglês).

Download Presentation

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CES-10 INTRODUÇÃO À COMPUTAÇÃOAulas Práticas – 2013 Capítulo VII Variáveis Indexadas Numéricas

  2. Classificação das variáveis: Escalares Homogêneas – Variáveis Indexadas (arrays – em inglês) Variáveis Estruturadas Heterogêneas – Estruturas (structs – em inglês)

  3. A declaração em C int A[9]; reserva na memória espaço contíguo de 9 inteiros para os 9 elementos da variável A: • Então, A é uma variável indexada de 9 elementos do tipo int • Em C, os índices de toda variável indexada são numerados a partir de 0 (zero) A[0], A[1],A[2], A[3], A[4], A[5], A[6], A[7], A[8]

  4. A variável A da declaração anterior tem apenas um índice • Por essa razão ela é denominada variável indexada unidimensional ou matriz unidimensional ou simplesmente vetor • Supondo que o conteúdo dos elementos da variável A seja: A[0] = 35 A[1] = 14 A[2] = 7 A[3] = 87 A[4] = 2 A[5] = 21 A[6] = 14 A[7] = 63 A[8] = 16 • Então, esta variável pode ter a seguinte representação gráfica: A

  5. Variáveis indexadas podem ser multidimensionais • Por exemplo, pelas declarações em C int M[7][10]; float X[4][8][5]; M é uma variável indexada bidimensional ou matriz bidimensional ou simplesmente matriz de 7 linhas por 10 colunas de elementos do tipo int X é uma matriz tridimensional de 4 x 8 x 5 elementos do tipo float

  6. M • Seja a seguinte representação gráfica da matriz M(7x10) de elementos do tipo int: • Nesta representação, por exemplo, M[0][9] = 81; M[3][5] = -108; M[1][8] = -83;

  7. Programa 7.1: Vetor de 10 elementos nulos #include <stdio.h> #include <conio.h> void main () { int i, V[10] = {0}; printf ("Vetor de 10 elementos nulos: "); printf ("\n\nDigite algo: "); getch (); printf ("\n\n"); for (i = 0; i <= 9; i++) printf ("%4d", V[i]); printf ("\n\nDigite algo para encerrar: "); getch (); } i varia de 0 a 9, escrevendo na mesma linha os valores de: V[0], V[1], ... , V[9] 0 0 0 0 0 1 2 9 Copiar, salvar e executar V

  8. Programa 7.2: Vetor de n elementos nulos #include <stdio.h> #include <conio.h> void main () { int i, n, V[10]; printf ("Vetor de n elementos nulos:\n"); do { printf ("\nDigite n (<= 10): "); scanf ("%d", &n); } while (n < 1 || n > 10); for (i = 0; i <= n-1; i++) V[i] = 0; printf ("\n"); for (i = 0; i <= n-1; i++) printf ("%4d", V[i]); printf ("\n\nDigite algo para encerrar: "); getch (); } 0 0 0 0 1 n-1 9 V Copiar, salvar e executar

  9. Programa 7.3: Vetor de n elementos 5 #include <stdio.h> #include <conio.h> void main () { int i, n, V[10]; printf ("Vetor de n elementos nulos:\n"); do { printf ("\nDigite n (<= 10): "); scanf ("%d", &n); } while (n < 1 || n > 10); for (i = 0; i <= n-1; i++) V[i] = 5; printf ("\n"); for (i = 0; i <= n-1; i++) printf ("%4d", V[i]); printf ("\n\nDigite algo para encerrar: "); getch (); } 5 5 5 0 1 n-1 9 V Copiar, salvar e executar

  10. Programa 7.4: Leitura e escrita de vetor #include <stdio.h> #include <conio.h> void main () { int i, n, V[10]; printf ("Leitura e escrita de vetor\n\n"); do { printf ("\nDigite o n.o de elementos (<= 10): "); scanf ("%d", &n); } while (n < 1 || n > 10); printf ("\n\n"); for (i = 0; i <= n-1; i++) { printf ("Elemento %d: ", i); scanf ("%d", &V[i]); } printf ("\n\nVetor V:\n\n"); for (i = 0; i <= n-1; i++) printf ("%4d", V[i]); printf ("\n\nDigite algo para encerrar: "); getch (); } 0 1 n-1 9 V Copiar, salvar e executar

  11. Para i = 0 j varia de 0 a 9, escrevendo na mesma linha os valores de: A[0][0], A[0][1], ... , A[0][9] Depois o cursor do vídeo vai para a linha seguinte Para i = 1 j varia de 0 a 9, escrevendo na mesma linha os valores de: A[1][0], A[1][1], ... , A[1][9] Depois o cursor do vídeo vai para a linha seguinte Para i = 2 j varia de 0 a 9, escrevendo na mesma linha os valores de: A[2][0], A[2][1], ... , A[2][9] Depois o cursor do vídeo vai para a linha seguinte E assim por diante, para i = 9 j varia de 0 a 9, escrevendo na mesma linha os valores de: A[9][0], A[9][1], ... , A[9][9] Programa 7.5: Matriz 10 x 10 nula #include <stdio.h> #include <conio.h> void main () { int A[10][10] = {0}, i, j; printf ("Matriz quadrada 10x10 nula: "); printf ("\n\nDigite algo: "); getch (); printf ("\n\n"); for (i = 0; i <= 9; i++) { for (j = 0; j <= 9; j++) printf ("%4d", A[i][j]); printf ("\n"); } printf ("\n\nDigite algo para encerrar: "); getch (); } 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 9 0 1 2 Copiar, salvar e executar 9 A

  12. Programa 7.6: Matriz m x n nula #include <stdio.h> #include <conio.h> void main () { int A[10][10], i, j, m, n; printf ("Matriz m x n nula:\n"); do { printf ("\nDigite m e n (<= 10): "); scanf ("%d%d", &m, &n); } while (m < 1 || m > 10 || n < 1 || n > 10); for (i = 0; i <= m-1; i++) for (j = 0; j <= n-1; j++) A[i][j] = 0; printf ("\n"); for (i = 0; i <= m-1; i++) { for (j = 0; j <= n-1; j++) printf ("%4d", A[i][j]); printf ("\n"); } printf ("\n\nDigite algo para encerrar: "); getch (); } Copiar, salvar e executar 0 0 0 0 0 0 0 1 n-1 9 0 1 0 0 0 A m-1 9

  13. Copiar, salvar e executar Programa 7.7: Matriz n x n diagonal #include <stdio.h> #include <conio.h> void main () { int A[10][10], i, j, n; printf ("Matriz n x n diagonal:\n"); do { printf ("\nDigite n (<= 10): "); scanf ("%d", &n); } while (n < 1 || n > 10); for (i = 0; i <= n-1; i++) for (j = 0; j <= n-1; j++) A[i][j] = 0; for (i = 0; i <= n-1; i++) A[i][i] = 7; printf ("\n"); for (i = 0; i <= n-1; i++) { for (j = 0; j <= n-1; j++) printf ("%4d", A[i][j]); printf ("\n\n"); } printf ("\n\nDigite algo para encerrar: "); getch (); } 7 0 0 7 0 0 0 1 n-1 9 0 1 0 0 7 A m-1 9

  14. Exercício 7.1: Colocar o número 27 na diagonal, na primeira e última linha e na primeira e última coluna • Exemplo: Matriz n x n moldura: Digite n (<= 10): 7 27 27 27 27 27 27 27 27 27 0 0 0 0 27 27 0 27 0 0 0 27 27 0 0 27 0 0 27 27 0 0 0 27 0 27 27 0 0 0 0 27 27 27 27 27 27 27 27 27

  15. Exercício 7.2: Colocar o número 82 da diagonal principal para baixo, obtendo uma matriz triangular inferior • Exemplo: Matriz n x n triangular inferior: Digite n (<= 10): 6 82 0 0 0 0 0 82 82 0 0 0 0 82 82 82 0 0 0 82 82 82 82 0 0 82 82 82 82 82 0 82 82 82 82 82 82

  16. Triangulo de Pascal: Dimensao (<= 10): 8 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 Triangulo de Pascal: Dimensao (<= 10): 7 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 Exercício 7.3: Obter um triangulo de Pascal • Exemplos: Os elementos acima da diagonal principal não são inicializados nem escritos Os elementos abaixo da diagonal principal, exceto os da 1ª coluna, são dados por: A[i][j] = A[i-1][j-1] + A[i-1][j] Os elementos da 1ª coluna e da diagonal principal são iguais a 1

  17. Programa 7.8: Leitura e escrita de matriz #include <stdio.h> #include <conio.h> void main () { int A[10][10], m, n, i, j; printf ("Leitura e escrita de matriz\n\n"); do { printf ("\nDimensoes m e n (<= 10): "); scanf ("%d%d", &m, &n); } while (m < 1 || m > 10 || n < 1 || n > 10); printf ("\n\n"); for (i = 0; i <= m-1; i++) { printf ("%d elementos da linha %d: ", n, i); for (j = 0; j <= n-1; j++) scanf ("%d", &A[i][j]); } printf ("\n\nMatriz A:\n\n"); for (i = 0; i <= m-1; i++) { for (j = 0; j <= n-1; j++) printf ("%4d", A[i][j]); printf ("\n\n"); } printf ("\n\nDigite algo para encerrar: "); getch (); } Copiar, salvar e executar

  18. Programa 7.9: Leitura e escrita de matriz quadrada #include <stdio.h> #include <conio.h> void main () { int A[10][10], n, i, j; printf ("Leitura e escrita de matriz quadrada\n\n"); do { printf ("\nDimensao n (<= 10): "); scanf ("%d", &n); } while (n < 1 || n > 10); printf ("\n\n"); for (i = 0; i <= n-1; i++) { printf ("%d elementos da linha %d: ", n, i); for (j = 0; j <= n-1; j++) scanf ("%d", &A[i][j]); } printf ("\n\nMatriz A:\n\n"); for (i = 0; i <= n-1; i++) { for (j = 0; j <= n-1; j++) printf ("%4d", A[i][j]); printf ("\n\n"); } printf ("\n\nDigite algo para encerrar: "); getch (); } Copiar, salvar e executar

  19. Exercício 7.4: Aumentar o Programa 7.9 para montar e escrever um vetor de números inteiros contendo o valor absoluto do maior elemento em valor absoluto de cada linha da matriz A • Exemplo: seja a seguinte matriz 5x5 de entrada: -17 21 2 -8 -57 -1 64 -272 791 7 -100 14 17 33 -10 0 2 55 87 0 81 21 2 0 27

  20. Saída para a matriz quadrada anterior de entrada: Matriz A: Elementos Maior -------------------------------------------------------- Lin 0: -17 21 2 -8 -57 57 Lin 1: -1 64 -272 791 7 791 Lin 2: -100 14 17 33 -10 100 Lin 3: 0 2 55 87 0 87 Lin 4: 81 21 2 0 27 81 --------------------------------------------------------

  21. Exercício 7.5: Aumentar o programa do Exercício 7.4 para montar e escrever um vetor de números reais contendo a raiz quadrada dos módulos dos elementos da diagonal principal da matriz A • Exemplo: Saída para a matriz quadrada anterior de entrada: Matriz A: Elementos Maior -------------------------------------------------------- Lin 0: -17 21 2 -8 -57 57 Lin 1: -1 64 -272 791 7 791 Lin 2: -100 14 17 33 -10 100 Lin 3: 0 2 55 87 0 87 Lin 4: 81 21 2 0 27 81 -------------------------------------------------------- RaizQ: 4.12 8.00 4.12 9.33 5.20

  22. Exercício 7.6: Aumentar o programa do Exercício 7.5 para montar e escrever um vetor de números reais contendo a média aritmética dos elementos de cada coluna da matriz A • Exemplo: Saída para a matriz quadrada anterior de entrada: Matriz A: Elementos Maior -------------------------------------------------------- Lin 0: -17 21 2 -8 -57 57 Lin 1: -1 64 -272 791 7 791 Lin 2: -100 14 17 33 -10 100 Lin 3: 0 2 55 87 0 87 Lin 4: 81 21 2 0 27 81 -------------------------------------------------------- RaizQ: 4.12 8.00 4.12 9.33 5.20 Media: -7.40 24.40 -39.20 180.60 -6.60

  23. Exercício 7.7: Aumentar o programa do Exercício 7.6 para montar e escrever um vetor de números reais contendo o desvio padrão dos elementos de cada linha da matriz A • Exemplo: Saída para a matriz quadrada anterior de entrada: Matriz A: Elementos Maior Desvio ------------------------------------------------------------------ Lin 0: -17 21 2 -8 -57 57 25.89 Lin 1: -1 64 -272 791 7 791 356.21 Lin 2: -100 14 17 33 -10 100 47.44 Lin 3: 0 2 55 87 0 87 35.92 Lin 4: 81 21 2 0 27 81 29.34 ------------------------------------------------------------------ RaizQ: 4.12 8.00 4.12 9.33 5.20 Media: -7.40 24.40 -39.20 180.60 -6.60

  24. Exercício 7.7: Aumentar o programa do Exercício 7.6 para montar um vetor de números reais contendo o desvio padrão dos elementos de cada linha da matriz A • Fórmula do desvio padrão S dos elementos de um vetor V de n elementos: • Vmediaé a média aritmética dos n elementos de V

  25. Exercício 7.8: Aumentar o programa do Exercício 7.7 para montar e escrever outra matriz B de inteiros e de dimensões iguais às da matriz A, contendo os elementos de destaque da matriz A • Um elemento de destaque numa matriz é um elemento tal que seu valor absoluto é maior que os valores absolutos de todos os seus vizinhos • Os elementos da matriz que não pertencem nem à sua primeira nem à sua última linha ou coluna têm 8 vizinhos • Os elementos da primeira e última linha e coluna têm menos de 8 vizinhos

  26. Exemplo: seja a matriz quadrada anterior • Os vizinhos de A[1][3] são: A[0][2], A[0][3], A[0][4], A[1][2], A[1][4], A[2][2], A[2][3], A[2][4] • A[1][3] = 791 é um elemento de destaque

  27. Exemplo: seja a matriz quadrada anterior • Os vizinhos de A[2][0] são A[1][0], A[1][1], A[2][1], A[3][0], A[3][1] • A[2][0] = -100 é um elemento de destaque

  28. Exemplo: seja a matriz quadrada anterior • Os vizinhos de A[4][4]) são = A[3][3], A[3][4], A[4][3] • A[4][4] = 27 não é um elemento de destaque

  29. Exemplo: seja a matriz quadrada anterior • Seus elementos de destaque Se A[i][j] for elemento de destaque B[i][j] = A[i][j] Senão B[i][j] = 0 Para montar a matriz B

  30. Exercício 7.9: Alterar o programa do Exercício 7.8 para fazer a leitura da matriz e sua escrita usando arquivos em disco • Isto será visto em aulas teóricas • No Lab 7, o programa deverá fazer a leitura da matriz e sua escrita usando arquivos em disco • Neste caso, como não haverá interação com o operador, a leitura de dados não precisa ser amigável, mas a tela de execução deve • Exibir um título e • Indicar os arquivos onde se encontram a matriz de entrada e os resultados (ver próximo slide)

More Related