07- Apresentacao Vetores Matrizes-Visual C#
Embed Size (px)
Transcript of 07- Apresentacao Vetores Matrizes-Visual C#

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

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

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

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

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

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

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

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

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

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

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

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

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

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

15
� Exemplo
Matriz 29
� Exemplo
Matriz 30
emails.GetLength(0) e emails[0].Length são iguais

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 >>

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

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

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

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

21
� Length, Rank, GetLength(dimensao)
Dimensões de arrays 41
� Length, Rank, GetLength(dimensao)
Dimensões de arrays 42

22
Programação Visual C#
Matrizes
Vetores e Matrizes

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];

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

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");
}

26
Produto Matrizes
Produto de Matrizes

27
Listar Elementos
Listar Elementos na Matrizes

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