22
UDESC - Prof. Juliano Mai a 1 Matrizes

UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

Embed Size (px)

Citation preview

Page 1: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 1

Matrizes

Page 2: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 2

Índice

Seção 1 – Definições Seção 2 – Matrizes

Unidimensionais Seção 3 – Matrizes

Multidimensionais

Page 3: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 3

DefiniçõesSeção 1

Conceito

Page 4: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 4

Conceito

Uma matriz é uma coleção de variáveis do mesmo tipo que é referenciada por um nome comum.

Um elemento de uma matriz é acessado por meio de um índice.

Em C, todas as matrizes consistem em posições contíguas na memória.

Page 5: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 5

Matrizes UnidimensionaisSeção 2

Introdução Indexação Vetores Argumentos para Funções Parâmetros de Funções Strings Funções de Manipulação de Strings

Page 6: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 6

Introdução Matrizes unidimensionais, mais conhecidas

como vetores ou ARRAYs, são amplamente utilizadas em programação. Tratam-se de matrizes com uma única dimensão.

A declaração geral de vetores em C é: tipo de dado nome[tamanho]; int numeros[30]; Os colchetes determinam que a variável é

uma matriz, e o número entre os mesmo determina seu tamanho.

Obs.: Em C, toda matriz tem 0 (zero) como o índice do seu primeiro elemento.

Page 7: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 7

Indexação Vetores

Page 8: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 8

Argumentos para Funções Matrizes não suportam passagem

por valor; apenas passagem por referência.

Na passagem da matriz para uma função utiliza-se apenas seu nome, sem índices:

int vet[10]; ... func(vet);

Page 9: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 9

Parâmetros de Funções Quando uma função recebe um vetor

como parâmetro formal, a mesma pode ser definida de três formas:

Como ponteiro: void funcao(int *vet){ Como matriz dimensionada: void funcao(int vet[10]){ Como matriz não dimensionada: void funcao(int vet[]){

Page 10: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 10

Strings Strings são conjuntos de caracteres. É o

uso mais comum de vetores em C. Cria o efeito de um novo tipo de dado, destinado a armazenar palavras.

Obs.: Strings são terminadas por um nulo (\0). Por isso, é necessário declará-las sempre com uma posição a mais do que se necessita:

char palavra[31]; // armazenas palavras de até 30 caracteres.

Page 11: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 11

Strings Uma vez que strings são vetores de

caracteres e não um tipo de dado primitivo, existem algumas restrições a operadores relacionais.

char palavra[21];...palavra = “teste”; // incorreto!if(palavra == “teste”){ // incorreto!Obs.: Utiliza-se aspas duplas no tratamento de

strings, e não aspas simples como em char.

Page 12: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 12

Funções Manipulação de Strings

Para superar estas limitações, existem funções padrões para manipulação de strings, pertencentes a biblioteca string.h

As mais utilizadas são: strcpy() strlen() strcmp() strcat()

Page 13: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 13

strcpy() / strlen()

strcpy(s1,s2); Copia a string s2 em s1. Substitui o operador =, utilizado

pelos outros tipos de dados. strlen(s1); Retorna o tamanho de s1.

Page 14: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 14

strcmp() / strcat() strcmp(s1,s2); Compara s1 e s2 retornando: 0 se s1 e s2 são iguais; Menor que 0, se s1 < s2; Maior que 0, se s1 > s2. Substitui o operador ==, utilizado pelos

outros tipos de dados. strcat(s1,s2); Concatena s2 ao final de s1.

Page 15: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 15

Matrizes MultidimensionaisSeção 3

Introdução Indexação Matrizes Bidimensionais Parâmetros para Funções Matrizes de strings Inicialização de Matrizes

Page 16: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 16

Introdução C suporta matrizes multidimensionais. A exemplo dos vetores, são utilizados

colchetes para indicar as dimensões: int matriz[5][5] // Matriz 5 X 5 float dados[3][3][3] // Matriz 3 X 3 X 3 Não é comum a utilização de matrizes de

três ou mais dimensões devido à quantidade de memória de que elas necessitam.

Page 17: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 17

Indexação Matrizes Bidimensionais

Page 18: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 18

Parâmetros de Funções

Quando uma matriz multidimensional é usada como parâmetro de função, não é necessário definir sua primeira dimensão. Desta forma, ambas as definições abaixo são válidas:

void func(int mat[10][10]){ void func(int mat[][10]){

Page 19: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 19

Matrizes de strings É muito comum, em programação, a

utilização de vetores de strings. Em C, para se criar um vetor de strings,

usa-se uma matriz bidimensional de char. O tamanho do índice esquerdo indica o

número de strings e o tamanho do índice direito o comprimento de cada string. Ex.:

char nomes[10][41];

Page 20: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 20

Leitura de Matrizes de strings#include<stdio.h>#include<conio.h>#include<string.h>#define SIZE 10

int main(){ char lista_nomes[SIZE][31]; int cont; for(cont=0; cont<SIZE; cont++){ printf("INFORME O %i NOME: ", cont+1); gets(lista_nomes[cont]); // mais comun //scanf("%s", &lista_nomes[cont]); ou scanf("%s", &lista_nomes[cont][0]); } puts(“\n** NOMES INFORMADOS **"); for(cont=0; cont<SIZE; cont++) printf("\n%s ", lista_nomes[cont]); getch();}

Page 21: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 21

Inicialização de Matrizes

C permite a inicialização de matrizes no momento de sua definição, da mesma forma que variáveis simples. Ex.:

int numeros[5] = {0,1,2,3,4}; char nome[8] = “EXEMPLO”; float reais[2][2] = {0,0,0,0};

Page 22: UDESC - Prof. Juliano Maia1 Matrizes. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Definições Seção 2 – Matrizes Unidimensionais Seção 3 – Matrizes Multidimensionais

UDESC - Prof. Juliano Maia 22

Dúvidas?

?