28
1 Programação II Vetores e Matrizes Linguagem C# Estruturas de dados compostas

07- Apresentacao Vetores Matrizes-Visual C#

Embed Size (px)

Citation preview

Page 1: 07- Apresentacao Vetores Matrizes-Visual C#

1

Programação II

Vetores e Matrizes

Linguagem C#

Estruturas de dados

compostas

Page 2: 07- Apresentacao Vetores Matrizes-Visual C#

2

� Variáveis simples e variáveis compostas

� Vetor ou Array uni-dimensional

� Matriz ou Array bi-dimensional

� Array multidimensional

� Array de arrays

� Dimensões de arrays

Roteiro: 3

� Variável (tipo) simples

– Funciona como uma caixa que permite armazenar apenas um valor

– O conteúdo da variável vais sendo alterado ao longo da execução do

programa

– Ao longo da execução do programa, os valores que a variável vai

contendo têm de ser todos do mesmo tipo (i.e., o tipo de dados da variável)

– As operações que podem ser efetuadas sobre uma variável são:

• Declaração

• Atribuição

• Utilização

Exemplos:

int variavel;

int outra_variavel;

variavel = 5;

outra_variavel = variavel;

Variáveis simples e variáveis compostas 4

5variavel

Page 3: 07- Apresentacao Vetores Matrizes-Visual C#

3

� Array

– Um array é uma estrutura de dados que possibilita o armazenamento

de vários valores homogêneos.

– Cada valor armazenado numa unidade do array, é correspondido por

um índice que indica a sua posição

– Um array pode ser uni-dimensional – Vetor ou bi-dimensional -

MATRIZ

– Se um vetor tem N elementos, os índices dos seus elementos vão

variar entre 0 e N-1

– A Dimensão de um ARRAY é FIXA e não alterável

Variáveis simples e variáveis compostas 5

� Array

– Array uni-dimensional – Vetor de dimensão n+1

– Array bi-dimensional – MATRIZ

Variáveis simples e variáveis compostas 6

Page 4: 07- Apresentacao Vetores Matrizes-Visual C#

4

� Variável (tipo) composta

– São construídas a partir do agrupamento de variáveis simples

– Uma variável composta tem um nome que representa um conjunto de variáveis simples

– Numa variável composta, as operações são efetuadas sobre os seus elementos, ou seja, as variáveis simples

– Se uma variável composta resulta da junção de variáveis simples do

mesmo tipo, temos um Vetor ou ARRAY

– Se uma variável composta resulta da junção de variáveis simples de tipos diferentes, temos um registro

Variáveis simples e variáveis compostas 7

5int 8 10 12

5int

1.2double

“palavra”string

� Vetor ou Array uni-dimensional

Declaração: tipoDados[] nomeArray;

– tipoDados = tipo de dados dos elementos do array

Ativação: nomeArray = new tipoDados[dimensão];

– tipoDados = tipo de dados dos elementos do array

– new = comando que cria o array (em memória)

Declaração :

tipoDados[] nomeArray = new tipoDados[dimensão];

– tipoDados = tipo de dados dos elementos do array

– new = comando que cria o array (em memória)

Vetor 8

Page 5: 07- Apresentacao Vetores Matrizes-Visual C#

5

� Vetor ou Array uni-dimensional

Declaração, ativação e atribuição de valores:

tipoDados[] nomeArray = {v1, v2, …,vn};

– tipoDados = tipo de dados dos elementos do array

– v1 a vn são os valores do array, têm de ser do tipoDados

– O array tem dimensão n (nº de valores entre {})

Exemplo: array de 10 inteiros

int[] VetorInteiros = {1,3,4,6,1,2,5,8,4,2};

Vetor 9

� Vetor ou Array uni-dimensional

– Tendo declarado a variável int[] v, esta pode ser associada a

qualquer Vetor de inteiros

Exemplo:...

int[] v10 = new int[10];

int[] v20 = new int[20];

int i = x+10/16;

int[] v;

...

switch(i) {

case 10: v = v10; break;

case 20: v = v20; break;

default: v = new int[i]; break;

}

...

Vetor 10

Page 6: 07- Apresentacao Vetores Matrizes-Visual C#

6

� Operadores e operações

Tamanho do Array

nomeArray.Length;

Inserir valor no Array

nomeArray[posicao]= valor;

Usar valor do Array

int i = nomeArray[posicao];

Vetor 11

� Exemplos

Vetor 12

Page 7: 07- Apresentacao Vetores Matrizes-Visual C#

7

� Exemplos

Vetor 13

� Exemplo índice fora da dimensão do Array

Vetor 14

...

int[] f = new int[10];

f[0] = 0; f[1] = 1;

for( int i = 2; i < 10; i++ )

f[i] = f[i-1]+f[i-2];

...

...

int[] f = new int[10];

f[0] = 0; f[1] = 1;

for( int i = 2; i <= 10; i++ )

f[i] = f[i-1]+f[i-2];

...

Excepção:

IndexOutOfRangeException

f[10] não existe

Page 8: 07- Apresentacao Vetores Matrizes-Visual C#

8

Matrizes Definição

Mat Fis Qui

João 7,0 5,0 6,0

Maria 9,0 4,0 5,0

Chama-se matriz a uma tabela de números dispostos em linhas e

colunas

=

549

657A

Matriz Quadrada: número de linhas = números de colunas

Matrizes Classificação

Matriz Retangular : número de linhas é diferente do

números de colunas

( )0214 −

04

12

Page 9: 07- Apresentacao Vetores Matrizes-Visual C#

9

Matrizes Notação

Dada uma matriz A denotaremos cada elemento da matriz A por aijij

onde i é o número da linha e j é o número da coluna desse

elemento.

=

3231

2221

1211

aa

aa

aa

A

Matrizes Igualdade de Duas Matrizes

Dadas duas matrizes A e B do mesmo tipo, dizemos que A = B se

somente se os seus elementos são respectivamente iguais.

Simbolicamente, sendo A e B matrizes do tipo mx n, temos:

A = B <=> aij=bij

Page 10: 07- Apresentacao Vetores Matrizes-Visual C#

10

Matrizes Tipos de Matrizes

Matriz Transposta

Dada uma matriz A do tipo m x n chama-se transposta de A,

a matriz At obtida a partir de A, onde as linhas de linhas de A

serão as colunas de At e vice-versa

=

201

435A

=

24

03

15t

A

Observe que A é uma matriz do tipo 2 x 3, enquanto que At é

do tipo 3 x 2. Observe também que todo elemento aij de A

será o elemento aji de At .

Matrizes Tipos de Matrizes

Matriz Nula

Chama-se matriz nula a matriz na qual todos os seus

elementos são iguais a zero.

=

000

0000

Page 11: 07- Apresentacao Vetores Matrizes-Visual C#

11

Matrizes Operações com Matrizes

Adição

Para adicionarmos duas matrizes A e B basta que elas sejam

do mesmo tipo. Isto é, elas devem ter o mesmo número de

linhas e o mesmo número de colunas.

Define-se a adição A + B = C como sendo formada pelos

elementos cij= aij + bij

Exemplo:

=+

−=

−=

212

1113

231

061

423

152BABA

Matrizes Operações com Matrizes

Subtração

Para subtrairmos duas matrizes A e B basta que elas sejam

do mesmo tipo. Isto é, elas devem ter o mesmo número de

linhas e o mesmo número de colunas.

Define-se a subtração A - B = C como sendo formada pelos

elementos cij= aij - bij

Exemplo:

=−

−=

=

51

24

32

10

52

23

41

32

51

BABA

Page 12: 07- Apresentacao Vetores Matrizes-Visual C#

12

Matrizes Operações com Matrizes

Multiplicação

Dada duas matrizes A do tipo m x n e B do tipo n x p,

chama-se produto da matriz A pela matriz B que se

indica C = A . B a matriz m x p definida por

Cij=ai1.b1j + ai2.b2j + ai3.b3j + ... + ain.bnj

Observações:

1. O produto de duas matrizes existe se e somente se o

número de colunas da matriz A for igual ao número de

linhas da matriz B.

2. Se as matrizes A e B são do tipo m x n e n x p

respectivamente, então o produto C = A . B existe e é

uma matriz do tipo m x p,

Matrizes Operações com Matrizes

Multiplicação

Exemplo:

Dadas as matrizes

=

++

++

++

==

=

=

2422

13

1412

4.51.42.53.4

4.01.12.03.1

4.31.22.33.2

.

42

13

54

01

32

BAC

BeA

Page 13: 07- Apresentacao Vetores Matrizes-Visual C#

13

Matrizes Operações com matrizes

Produto de número por uma Matriz

Definimos o produto de um número por uma matriz m x n como

sendo uma matriz m x n formada pelos produtos do número dado

por cada um dos elementos da matriz dada.

MULTIPLICAÇÃO POR 3

=

=

1590

1236.3

530

412

A

A

Exemplo

� Matriz ou Array bi-dimensional

Declaração:

tipoDados[,] nomeArray = new tipoDados[linhas,colunas];

Exemplos:

int[,] valores = new int[3,4];

//array multidimensional com 3 linhas e 4 colunas

int [,] valores = {{2,3},{3,4}};

//array multidimensional com 2 linhas e 2 colunas

Matriz 26

Page 14: 07- Apresentacao Vetores Matrizes-Visual C#

14

� Exemplo – soma dos elementos de uma matriz

...

int soma = 0;

int[,] tab = new int[10,9];

for(int i = 0; i < 10; i++)

{

for(int j = 0; j < 9; j++)

{

soma = soma + tab[i,j];

}

}

...

Matriz 27

� Exemplo – preencher matriz com valores (i*j)

...

int[,] tab = new int[10,9];

for(int i = 0; i < 10; i++)

{

for(int j = 0; j < 9; j++)

{

tab[i,j] = i*j;

}

}

...

Matriz 28

Page 15: 07- Apresentacao Vetores Matrizes-Visual C#

15

� Exemplo

Matriz 29

� Exemplo

Matriz 30

emails.GetLength(0) e emails[0].Length são iguais

Page 16: 07- Apresentacao Vetores Matrizes-Visual C#

16

� Array multidimensional

Declaração:

tipoDados[,,,] nomeArray = new tipoDados[dim1,dim2,dim3,dim4]

Exemplo:

int [,,,] muitasDimensoes = new int[2,3,4,5];

//array multidimensional de dimensão 4

Array multidimensional 31

� Jagged Array – array de arrays de diferentes tamanhos

- Não é uma matriz mas sim um arrays de arrays

- Caso particular de um array multidimensional. Tratam-se de

arrays com múltiplas dimensões de

Declaração:

tipoDados[][] nomeArray = new tipoDados[dim][]

int[][] vals = new int[3][];

vals[0] = new int[2];

vals[1] = new int[3];

vals[2] = new int[4];

Array de arrays 32

colu

nas

Linha >>

Page 17: 07- Apresentacao Vetores Matrizes-Visual C#

17

� Jagged Array – array de arrays de diferentes tamanhos

Array de arrays 33

� Jagged Array – array de arrays de diferentes tamanhos

Array de arrays 34

Page 18: 07- Apresentacao Vetores Matrizes-Visual C#

18

� Jagged Array – array de arrays de diferentes tamanhos

Array de arrays 35

� Jagged Array – array de arrays de diferentes tamanhos

public static void Main(string[] args){

int[][] p = new int[10][];

for(int i = 0; i < 10; i++)

p[i] = new int[i+1];

for(int i = 0; i < 10; i++){

p[i][0] = 1;

p[i][i] = 1;

for(int j = 1; j < i; j++)

p[i][j] = p[i-1][j-1]+p[i-1][j];

}

}

Array de arrays 36

Page 19: 07- Apresentacao Vetores Matrizes-Visual C#

19

� Jagged Array – array de arrays de diferentes tamanhos

public static void Main(string[] args){

int[] dias_mes = {

31,29,31,30,31,30,

31,31,30,31,30,31

};

float[][] gastos = new float[12][];

for(int m = 0; m < 12; m++) {

gastos[m] = new float[dias_mes[m]];

for(int d = 0; d < dias_mes[m]; d++)

gastos[m][d] = 0.0F;

}

}

Array de arrays 37

� Jagged Array – array de arrays de diferentes tamanhos

– Qualquer Vetor em C# tem a propriedade Length que inidica o

número de elementos.

– Esta propriedade pode ser usada pelo programa

...

for(int m = 0; m < dias_mes.Length; m++){

gastos[m] = new float[dias_mes[m]];

for(int d = 0; d < gastos[m].Length; d++)

gastos[m][d] = 0.0F;

}

...

Array de arrays 38

Page 20: 07- Apresentacao Vetores Matrizes-Visual C#

20

� Length, Rank, GetLength(dimensao)

– Estas propriedades permitem obter informação acerca do tamanho e

número de elementos dos Arrays independentemente de serem uni, bi,

multidimensionais, ou ainda, serem arrays de arrays (jagged arrays)

– Número total de elementos na tabela:

nomeTabela.Length

– Número total de dimensões na tabela:

nomeTabela.Rank

– Número de elementos na dimensão dim

nomeTabela.GetLength(dim)

Dimensões de arrays 39

� Length, Rank, GetLength(dimensao)

Dimensões de arrays 40

Page 21: 07- Apresentacao Vetores Matrizes-Visual C#

21

� Length, Rank, GetLength(dimensao)

Dimensões de arrays 41

� Length, Rank, GetLength(dimensao)

Dimensões de arrays 42

Page 22: 07- Apresentacao Vetores Matrizes-Visual C#

22

Programação Visual C#

Matrizes

Vetores e Matrizes

Page 23: 07- Apresentacao Vetores Matrizes-Visual C#

23

Exemplos Array

� int[] array = new int[5];

� string[] stringArray = new string[6];

� int[] array1 = new int[] { 1, 3, 5, 7, 9 };

� int[] array2 = { 1, 3, 5, 7, 9 };

� string[] weekDays2 = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

� int[] array3;

� array3 = new int[] { 1, 3, 5, 7, 9 }; // OK

� array3 = {1, 3, 5, 7, 9}; // Error

Matrizes Multidimensionais

� int[,] array = new int[4, 2];

� int[, ,] array1 = new int[4, 2, 3];

� int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

� int[,] array5;

� array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

� int elementValue = array5[2, 1];

Page 24: 07- Apresentacao Vetores Matrizes-Visual C#

24

Percorre Matrizes com foreach

int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };

foreach (int i in numbers) {

System.Console.Write("{0} ", i); }

// Output: 4 5 6 1 2 3 -2 -1 0

int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55

} };

int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } };

foreach (int i in numbers2D) {

System.Console.Write("{0} ", i); }

// Output: 9 99 3 33 5 55

Array Multidimensional

Page 25: 07- Apresentacao Vetores Matrizes-Visual C#

25

public partial class Form1 : Form

{

int[] vetor = new int[5];

int i=0;

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

if (vetor.Length>i)

{

vetor[i] = Convert.ToInt32(textBox1.Text);textBox2.AppendText(Convert.ToString(vetor[i]));i++;

textBox1.Clear();}

else

{

MessageBox.Show("final do vetor....");}

}

}

MessageBox

{

MessageBox.Show("FINAL DO VETOR", "Mensagem do Título");

}

Page 26: 07- Apresentacao Vetores Matrizes-Visual C#

26

Produto Matrizes

Produto de Matrizes

Page 27: 07- Apresentacao Vetores Matrizes-Visual C#

27

Listar Elementos

Listar Elementos na Matrizes

Page 28: 07- Apresentacao Vetores Matrizes-Visual C#

28

Ref.: António José Videira Tavares/Ipca