Buscar

4 VETORES E MATRIZES

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[10], B[10], 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

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais