Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 VETORES E MATRIZES UNIDADE 4 PROFESSOR: EDILSON LIMA ALGORITMOS E PROGRAMAÇÃO EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 4 VETORES E MATRIZES 4.1 Vetores 4.2 Matrizes ROTEIRO ROTEIRO PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 É uma técnica de programação que permitirá trabalhar com o agrupamento de várias informações dentro de uma mesma variável, sendo essa variável do mesmo tipo e por essa razão podemos chamar de estrutura de dados homogêneos. A utilização deste tipo de estrutura de dados recebe diversos nomes, como: variáveis indexadas, variáveis compostas, variáveis subscritas, arranjos, vetores, matrizes, tabelas em memória ou arrays (do inglês). As matrizes (tabelas em memória) são tipos de dados que podem ser “construídos” à medida que se fazem necessários, pois não é sempre que os tipos básicos (real, inteiro, caractere e lógico) e/ou variáveis simples são suficientes para representar a estrutura de dados utilizada em um programa. ROTEIRO 4 VETORES E MATRIZES PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 Vetores ou Matrizes de uma Dimensão Vetor pode também ser denominado por matrizes unidimensionais e caracteriza-se por ser definida uma única variável dimensionada com um determinado tamanho. Os nomes dados as matrizes seguem as mesmas regras de nomes utilizados para indicar as variáveis simples. A manipulação de uma matriz tipo vetor é utilizada uma única instrução de looping (enquanto, para ou repita). Para ter uma ideia de como utilizar matrizes em uma determinada situação, considere o seguinte problema: “Calcular e apresentar a média geral de uma turma de 8 alunos. A tabela seguinte mostra esse cenário. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA TABELA 1: REPRESENTAÇÃO DE UM VETOR EM UMA TABELA. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 Para utilizar matrizes, será definida a instrução conjunto que indicará em postuguês estruturado a utilização de uma matriz, tendo como sintaxe: VARIÁVEL : conjunto [<dimensão>] de <tipo de dado> Onde: <dimensão> será a indicação dos valores inicial e final do tamanho do vetor; <tipo de dado> se o vetor em questão irá utilizar valores reais, inteiros, lógicos ou caracteres. Na linguagem C: tipo VARIÁVEL [<dimensão>]; A seguir um Portugol onde efetua a leitura das notas de 8 alunos, cálculo da média e a sua apresentação do vetor. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 Na linguagem C tipo VARIÁVEL [<dimensão>]; Onde: <dimensão> será a indicação dos valores inicial e final do tamanho do vetor; <tipo de dado> se o vetor em questão irá utilizar valores reais, inteiros, lógicos ou caracteres. A seguir um Portugol onde efetua a leitura das notas de 8 alunos, cálculo da média e a sua apresentação do vetor. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 programa MEDIA_TURMA var MD [8] : real; SOMA, MEDIA : real; I : inteiro; inicio SOMA = 0; para I de 0 até 7 passo 1 faça leia (MD[I]); SOMA = SOMA + MD[I]; fim para; MEDIA = SOMA / 8; escreva (“Media = “, MEDIA); fim. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 Em C o portugol fica: //programa MEDIA_TURMA #include <stdio.h> #include <stdlib.h> float MD [8]; float SOMA, MEDIA; int I; main (){ SOMA = 0; for(I = 0; I <= 7; I++){ printf("Digite a %i. nota: ",I+1); scanf("%f", &MD[I]); SOMA = SOMA + MD[I]; } MEDIA = SOMA / 8; printf("Media = %.2f\n\n",MEDIA); system("pause"); return 0; } ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 Em uma matriz não podemos confundir o índice com o elemento. O índice é o endereço de alocação de uma unidade da matriz, enquanto elemento é o conteúdo armazenado em um determinado endereço. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA TABELA 2: Índice e elemento de uma matriz, Coluna Média */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 A seguir um programa que ler e escreve 8 notas de alunos. programa MEDIA_TURMA var MD [5] : real; SOMA, MEDIA : real; I : inteiro; inicio SOMA = 0; para i de 0 até 4 passo 1 faça leia (MD[I]); SOMA = SOMA + MD[I]; fim para; MEDIA = SOMA / 5; para I de 0 até 4 passo 1 faça escreva (MD[I]); fim para; escreva (“Media = “, MEDIA); fim. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 //programa MEDIA_TURMA #include <stdio.h> #include <stdlib.h> float MD [5]; float SOMA, MEDIA; int I; main (){ SOMA = 0; for(I = 0; I <= 4; I++){ printf("Digite a %i. nota: ",I+1); scanf("%f", &MD[I]); SOMA = SOMA + MD[I]; } MEDIA = SOMA / 5; for(I = 0; I <= 4; I++){ printf("%i. nota: %.2f\n",I+1, MD[I]); } printf("Media = %.2f\n\n",MEDIA); system("pause"); return 0; } ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 O exemplo a seguir efetua a leitura de dez elementos de uma matriz A, o objetivo é construir uma matriz B de mesmo tipo, observando a seguinte lei de formação: se o valor do índice for par, o valor deverá ser multiplicado por 5, se for ímpar devera ser somado com 5. Ao final mostrar o conteúdo da matriz B. Como resolver: Iniciar o contador de índice, variável I como 0 em um contador até 9; Ler os 10 valores, um a um; Verificar se o índice é par se sim multiplicar por 5, se não somar 5. Criar a matriz B; Apresentar os conteúdos das duas matrizes. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 Programa INDICE_PAR_OU_IMPAR; var A[10], B[10]: inteiro; I, R: inteiro; Inicio para I de 0 até 9 passo 1 faça leia A[I]; fim para; para I de 0 até 9 passo 1 faça R = (I div 2); se (R = 0) então B[I] = A[I] * 5; senão B[I] = A[I] + 5; fim se; fim para; para I de 0 até 9 passo 1 faça escreva B[I]; fim para; fim. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 //Programa INDICE_PAR_OU_IMPAR; #include <stdio.h> #include <stdlib.h> int A[9], B[9], I, R; main(){ for(I = 0; I <= 9; I++){ printf("Digite o %i. numero: ",I+1); scanf("%i", &A[I]); } for(I = 0; I <= 9; I++){ R = I%2; if(R == 0){ B[I] = A[I] * 5; } else { B[I] = A[I] + 5; } } printf("\n\nO VETOR B E\n\n"); for(I = 0; I <= 9; I++){ printf("%i. numero: %i %i\n",I+1, A[I],B[I]); } system("pause"); return 0; } ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Desenvolver um programa que efetue a leitura de cinco elementos de uma matriz A do tipo vetor. No final apresente o total da soma de todos os elementos que sejam ímpares. Como resolver: Iniciar o contador de índice, variável I como 0 em um contador até 4; Ler os 5 valores, um a um; Verificar se o elemento é impar; se sim efetuar a soma dos elementos; Apresentar o total somado de todos os elementos ímpares da matriz. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 Programa ELEMENTO_IMPAR; var A [5]: inteiro; R, I, SOMA: inteiro; Inicio SOMA = 0; para I de 0 até 4 passo 1 faça leia A[I]; fim para; para I de 0 até 4 passo 1 faça R = (A[I] div 2); se (R = 1) então SOMA = SOMA + A[I]; fim se; fim para; escreva SOMA; fim. ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 //Programa ELEMENTO_IMPAR; #include <stdio.h> #include <stdlib.h> int A[5], I, R, SOMA; main(){ SOMA = 0; for(I = 0; I <= 4; I++){ printf("Digite o %i. numero: ",I+1); scanf("%i", &A[I]); } for(I = 0; I <= 4; I++){ R = A[I]%2; if(R == 1){ SOMA = SOMA + A[I]; } } printf("\n\nA SOMA DOS VALOR E %i \n\n", SOMA); system("pause"); return 0; } ROTEIRO 4.1 Vetores PROFESSOR: EDILSON LIMA */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Classificação dos elementos de uma matriz Colocar em ordem crescente 5 valores numéricos armazenados numa matriz A e apresentá-los. Como resolver: Iniciar o contador de índice, variável I como 0 em um contador até 4; Ler os 5 valores, um a um; Verificar se o elemento seguinte é maior que o elemento atual; Apresentar o vetor em ordem crescente. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Programa ORDENA_VETOR var N [5]: inteiro; I, J, X: inteiro; inicio para I de 0 até 4 passo 1 faça leia (N[I]); fim para; para I de 0 até 3 passo 1 faça para J de I + 1 até 4 passo 1 faça se (N[I] > N[J]) então X = N[I]; N[I] = N[J]; N[J] = X; fim se; fim para; fim para; para I de 0 até 4 passo 1 faça escreva (N[I]); fim para; fim. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA //Programa ORDENA_VETOR; #include <stdio.h> #include <stdlib.h> int N[5], I, J, X; main(){ for(I = 0; I <= 4; I++){ printf("Digite o %i. numero: ",I+1); scanf("%i", &N[I]); } for(I = 0; I <= 3; I++){ for(J = I+1; J <= 4; J++){ if(N[I] > N[J]){ X = N[I]; N[I] = N[J]; N[J] = X; } } } printf("\n\nO VETOR ORDENADO \n\n"); for(I = 0; I <= 4; I++){ printf("%i\n",N[I]); } system("pause"); return 0; } */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA MÉTODO DE PESQUISA EM UMA MATRIZ Pesquisa sequencial Consiste em efetuar a busca da informação a partir do primeiro elemento sequencialmente até o último. Este método é lento, porém eficiente nos casos em que a matriz encontra-se com seus elementos desordenados. Pesquisa binária Este método de pesquisa é em média mais rápida, porém exige que a matriz esteja previamente classificada, pois este método divide a lista em duas partes e procura saber se a informação a ser pesquisada está acima ou abaixo da linha de divisão. Se estiver acima, por exemplo, toda a metade abaixo é desprezada. Em seguida, se a informação não foi encontrada, é novamente dividida em duas, e pergunta se aquela informação está acima ou abaixo, e assim vai sendo executada até encontrar ou não a informação pesquisada. Pelo fato de ir dividindo sempre em duas partes o volume de dados é que o método recebe a denominação de pesquisa binária. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA A seguir um exemplo utilizando Pesquisa sequencial onde o programa dar entrada de 10 nomes e a apresentação desses nomes que venham a ser solicitados durante a fase de pesquisa. Consiste em efetuar a busca da informação a partir do primeiro elemento sequencialmente até o último. Este método é lento, porém eficiente nos casos em que a matriz encontra-se com seus elementos desordenados. Como resolver: Iniciar o contador de índice, variável I como 0 em um contador até 9; Criar um looping que efetue a pesquisa enquanto o usuário assim desejar. Durante a fase de pesquisa, deverá ser solicitada a informação a ser pesquisada. Essa informação deverá ser comparada com o primeiro elemento; sendo igual mostra, caso contrário avança para o próximo. Se não achar em toda a lista, informar que não existe o elemento pesquisado; se existir deverá mostrá-lo; Encerrar a pesquisa quando desejado. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Programa PESQUISA_SEQUENCIAL var NOME [5]: caractere; I: inteiro; PESQ, RESP : caractere; ACHA: lógico; inicio para I de 0 até 4 passo 1 faça leia (NOME [I]); fim para; RESP = “SIM”; enquanto (RESP = “SIM”) faça escreva “Entre com o nome a ser pesquisado: “; leia PESQ; I = 0; ACHA = falso; */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA enquanto (I <= 4) e (ACHA = falso) faça se (PESQ = NOME[I]) então ACHA = verdadeiro; se não I = I + 1; fim se; fim enquanto; se (ACHA = verdadeiro) então escreva (PESQ, “ foi localizado na posição ”, I); se não escreva (PESQ, “ não foi localizado”); fim se; escreva (“Deseja continuar? “); leia (RESP); fim enquanto; fim. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA //Programa PESQUISA_SEQUENCIAL; #include <stdio.h> #include <stdlib.h> #include <string.h> char NOME[5][100]; int I; char PESQ[100], RESP, ACHA; main(){ for(I = 0; I <= 4; I++){ printf("Digite o %i. nome: ",I+1); gets (NOME[I]); } RESP = 'S'; while(RESP == 'S' || RESP == 's'){ printf("Entre com o nome a ser pesquisado: "); fflush (stdin); gets(PESQ); */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA I = 0; ACHA = 'F'; while((I <= 4) && (ACHA == 'F')){ if(strcmp(PESQ, NOME[I]) == 0){ ACHA = 'V'; } else { I++; } } if(ACHA == 'V'){ printf("%s foi localizado na posicao %i\n\n", PESQ, I+1); } else { printf("%s nao foi localizado\n\n", PESQ); } printf("Deseja continuar (S/N)?"); scanf("%s", &RESP); } system("pause"); return 0; } */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Agora um exemplo utilizando Pesquisa binária, para esse exemplo iremos utilizar o problema anterior onde o algoritmo lê 10 nomes e a apresentação somente de nomes que venham a ser solicitadas pelo usuário durante a execução do programa. Como resolver: Iniciar o contador de índice, variável I como 0 em um contador até 9; Criar um looping que efetue a pesquisa enquanto o usuário assim desejar. Durante a fase de pesquisa, deverá ser solicitada a informação a ser pesquisada. Essa informação deverá ser comparada utilizando-se o método de pesquisa binária. Sendo igual mostra, caso contrário avança para o próximo. Se não achar em toda a lista, informar que não existe o elemento pesquisado; se existir deverá mostrá-lo; Encerrar a pesquisa quando desejado. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Programa PESQUISA_BINÁRIA var NOME [5]: caractere; I, X, J , COMECO, MEIO, FINAL : inteiro; PESQ, RESP: caractere; ACHA: lógico; inicio para I de 0 até 4 passo 1 faça leia (NOME [I]); fim para; //ordenação para I de 0 até 3 passo 1 faça para J de I + 1 até 4 passo 1 faça se (NOME[I] > NOME[J]) então X = NOME[I]; NOME[I] = NOME[J] ; NOME[J] = X; fim se; fim para; fim para; */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA //treco de pesquisa RESP = “SIM”; enquanto (RESP = “SIM”) faça escreva “Entre com o nome a ser pesquisado: “; leia PESQ; COMECO = 0; FINAL = 4; ACHA = falso; enquanto (COMECO <= FINAL) e (ACHA = falso) faça MEIO = (COMECO + FINAL) / 2; se (PESQ = NOME[MEIO]) então ACHA = verdadeiro; se não se (PESQ < NOME[MEIO]) então FINAL = MEIO -1; se não COMECO = MEIO + 1; fim se; fim se; fim enquanto; */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA se (ACHA = verdadeiro) então escreva (PESQ, “ foi localizado na posição ”, MEIO); se não escreva (PESQ, “ não foi localizado”); fim se; escreva (“Deseja continuar? “); leia (RESP); fim enquanto; fim. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA O exemplo na linguagem C. //Programa PESQUISA_BINARIA; #include <stdio.h> #include <stdlib.h> #include <string.h> char NOME[10][100]; int I, J, COMECO, MEIO, FINAL; char PESQ[100], RESP, ACHA; char X[100]; main(){ for(I = 0; I <= 9; I++){ printf("Digite o %i. nome: ",I+1); gets (NOME[I]); } //ordenação for(I = 0; I <= 8; I++){ for(J = I+1; J <= 9; J++){ if(strcmp(NOME[I], NOME[J]) > 0){ strcpy(X, NOME[I]); strcpy(NOME[I], NOME[J]); strcpy(NOME[J], X); } } } */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA //treco de pesquisa RESP = 'S'; while(RESP == 'S' || RESP == 's'){ printf("Entre com o nome a ser pesquisado: "); fflush (stdin); gets(PESQ); COMECO = 0; FINAL = 9; ACHA = 'F'; while((COMECO <= FINAL) && (ACHA == 'F')){ MEIO = (COMECO + FINAL) / 2; if(strcmp(PESQ, NOME[MEIO]) == 0){ ACHA = 'V'; } else { if(strcmp(PESQ, NOME[MEIO]) < 0){ FINAL = MEIO -1; } else { COMECO = MEIO + 1; } } } */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA if(ACHA == 'V'){ printf("%s foi localizado na posicao %i\n\n", PESQ, MEIO); } else { printf("%s nao foi localizado\n\n", PESQ); } printf("Deseja continuar (S/N)?"); scanf("%s", &RESP); } system("pause"); return 0; } */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Matrizes com mais de uma dimensão Também conhecida como matrizes bidimensionais ou arranjos (arrays) as matrizes com mais de uma dimensão tem variáveis no sentido horizontal e vertical. Uma matriz de duas dimensões deverá ser controlada com dois looping de três dimensões deverá ser controlado por três loopings e assim por diante. Em matrizes de mais de uma dimensão os seus elementos são também manipulados de forma individualizada, sendo a referência feita sempre por meio de dois índices: o primeiro para indicar a linha e o segundo para indicar a coluna. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Operações básicas com matrizes de duas dimensão Uma matriz de duas dimensões está sempre fazendo menção a linhas e colunas e é representada por seu nome e seu tamanho (dimensão) entre colchetes. Desta forma é uma matriz de duas dimenções. TABELA [0..8, 0..4] ou TABELA [9, 5] Onde: TABELA -> nome o nome da matriz; 0..8 -> quantidade de linhas; 0..4 -> quantidade de colunas; No exemplo acima quer dizer que podemos armazenar até 45 elementos. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA Como exemplo temos: leia um valor numérico X e uma matriz A 4x2, elabore um algoritmo que calcule e exiba uma outra matriz B que deverá conter cada elemento da matriz A dividido pelo valor numérico X. Para resolver este problema, vamos criar uma tabela com 10 linha [0..9] para guardar pessoas e 5 colunas [0..4] para guardar dados pessoais. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA //algoritmo "Calcula Matriz B" var A, B: vetor[0..3,0..1]: inteiro X real I, J: inteiro inicio leia(X) para I de 0 ate 3 faca para J de 0 ate 1 faca leia(A[I, J]); B[I, J] = A[I, J]/X; fim para; fim para; para I de 0 ate 3 faca para J de 0 ate 1 faca escreva( B[I, J]); fim para; fim para; Fim. */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA NOSSO EXEMPLO DESENVOLVIDO NA LINGUAGEM C //algoritmo "Calcula Matriz B" #include <stdio.h> #include <stdlib.h> #include <string.h> int A[4][2]; int B[4][2]; int X, I, J; */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ROTEIRO 4.2 Matrizes PROFESSOR: EDILSON LIMA main(){ printf("Digite o valor de X: "); scanf("%i",&X); printf("ELEMENTOS DA MATRIZ A \n\n"); for(I = 0; I <= 3; I++){ for(J = 0; J < 2; J++){ printf("digite o elemento da linha %i coluna %i: ",I, J); scanf("%i",&A[I][J]); B[I][J] = A[I][J]/X; } } printf("\n\nELEMENTOS DA MATRIZ B (elemento da matriz A dividido pelo valor numérico X) \n\n"); for(I = 0; I <= 3; I++){ for(J = 0; J < 2; J++){ printf("elementos da matriz B [%i, %i]........: %i \n",I, J, B[I][J]); } } system("pause"); return 0; } */41 EDILSON LIMA UM SERVIÇO WEB DE ACESSO A UM SISTEMA DE GERENCIAMENTO DE AUXÍLIO A PESQUISA - PATRONAGE * / 22 ARAÚJO, Everton C. Algoritmos: fundamento e prática. Capítulo 6 – Estrutura de Dados Homogêneas I; Capítulo 7 – Aplicações Práticas do Uso de Matrizes do Tipo Vetor; e Capítulo 8 – Estrutura de Dados Homogêneas II. VICTORINA, VIVIANE, MIZRANE. Treinamento em Linguagem C: curso completo. Capítulo 7 – Matrizes e Strings; Capítulo 1 – Introdução e Capítulo – Funções. ROTEIRO Bibliografia PROFESSOR: EDILSON LIMA */41
Compartilhar