Você está na página 1de 28

1

Programao II
Vetores e Matrizes
Linguagem C#
Estruturas de dados
compostas
2
Variveis simples e variveis compostas
Vetor ou Array uni-dimensional
Matriz ou Array bi-dimensional
Array multidimensional
Array de arrays
Dimenses de arrays
Roteiro: 3
Varivel (tipo) simples
Funciona como uma caixa que permite armazenar apenas um valor
O contedo da varivel vais sendo alterado ao longo da execuo do
programa
Ao longo da execuo do programa, os valores que a varivel vai
contendo tm de ser todos do mesmo tipo (i.e., o tipo de dados da
varivel)
As operaes que podem ser efetuadas sobre uma varivel so:
Declarao
Atribuio
Utilizao
Exemplos:
int variavel;
int outra_variavel;
variavel = 5;
outra_variavel = variavel;
Variveis simples e variveis compostas 4
5
variavel
3
Array
Um array uma estrutura de dados que possibilita o armazenamento
de vrios valores homogneos.
Cada valor armazenado numa unidade do array, correspondido por
um ndice que indica a sua posio
Um array pode ser uni-dimensional Vetor ou bi-dimensional -
MATRIZ
Se um vetor tem N elementos, os ndices dos seus elementos vo
variar entre 0 e N-1
A Dimenso de um ARRAY FIXA e no altervel
Variveis simples e variveis compostas 5
Array
Array uni-dimensional Vetor de dimenso n+1
Array bi-dimensional MATRIZ
Variveis simples e variveis compostas 6
4
Varivel (tipo) composta
So construdas a partir do agrupamento de variveis simples
Uma varivel composta tem um nome que representa um conjunto
de variveis simples
Numa varivel composta, as operaes so efetuadas sobre os seus
elementos, ou seja, as variveis simples
Se uma varivel composta resulta da juno de variveis simples do
mesmo tipo, temos um Vetor ou ARRAY
Se uma varivel composta resulta da juno de variveis simples de
tipos diferentes, temos um registro
Variveis simples e variveis compostas 7
5 int 8 10 12
5 int
1.2 double
palavra string
Vetor ou Array uni-dimensional
Declarao: tipoDados[] nomeArray;
tipoDados = tipo de dados dos elementos do array
Ativao: nomeArray = new tipoDados[dimenso];
tipoDados = tipo de dados dos elementos do array
new = comando que cria o array (em memria)
Declarao :
tipoDados[] nomeArray = new tipoDados[dimenso];
tipoDados = tipo de dados dos elementos do array
new = comando que cria o array (em memria)
Vetor 8
5
Vetor ou Array uni-dimensional
Declarao, ativao e atribuio de valores:
tipoDados[] nomeArray = {v1, v2, ,vn};
tipoDados = tipo de dados dos elementos do array
v1 a vn so os valores do array, tm de ser do tipoDados
O array tem dimenso 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 varivel 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 operaes
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 dimenso 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];
...
Excepo:
IndexOutOfRangeException
f[10] no existe
8
Matrizes Definio
Mat Fis Qui
Joo 7,0 5,0 6,0
Maria 9,0 4,0 5,0
Chama-se matriz a uma tabela de nmeros dispostos em linhas e
colunas
|
|

\
|
=
5 4 9
6 5 7
A
Matriz Quadrada: nmero de linhas = nmeros
de colunas
Matrizes Classificao
Matriz Retangular : nmero de linhas diferente do
nmeros de colunas
( ) 0 2 1 4
|
|

\
|

0 4
1 2
9
Matrizes Notao
Dada uma matriz A denotaremos cada elemento da matriz A por aij ij
onde i o nmero da linha e j o nmero da coluna desse
elemento.
(
(
(

=
32 31
22 21
12 11
a a
a a
a a
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 so 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 A
t
obtida a partir de A, onde as linhas de linhas de A
sero as colunas de A
t
e vice-versa
(

=
2 0 1
4 3 5
A
(
(
(

=
2 4
0 3
1 5
t
A
Observe que A uma matriz do tipo 2 x 3, enquanto que A
t

do tipo 3 x 2. Observe tambm que todo elemento aij de A
ser o elemento aji de A
t
.
Matrizes Tipos de Matrizes
Matriz Nula
Chama-se matriz nula a matriz na qual todos os seus
elementos so iguais a zero.
(

=
0 0 0
0 0 0
0
11
Matrizes Operaes com Matrizes
Adio
Para adicionarmos duas matrizes A e B basta que elas sejam
do mesmo tipo. Isto , elas devem ter o mesmo nmero de
linhas e o mesmo nmero de colunas.
Define-se a adio A + B = C como sendo formada pelos
elementos cij= aij + bij
Exemplo:
(

= +
(

=
(

=
2 1 2
1 11 3
2 3 1
0 6 1
4 2 3
1 5 2
B A B A
Matrizes Operaes com Matrizes
Subtrao
Para subtrairmos duas matrizes A e B basta que elas sejam
do mesmo tipo. Isto , elas devem ter o mesmo nmero de
linhas e o mesmo nmero de colunas.
Define-se a subtrao A - B = C como sendo formada pelos
elementos cij= aij - bij
Exemplo:
(
(
(

=
(
(
(

=
(
(
(

=
5 1
2 4
3 2
1 0
5 2
2 3
4 1
3 2
5 1
B A B A
12
Matrizes Operaes com Matrizes
Multiplicao
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
Observaes:
1. O produto de duas matrizes existe se e somente se o
nmero de colunas da matriz A for igual ao nmero de
linhas da matriz B.
2. Se as matrizes A e B so do tipo m x n e n x p
respectivamente, ento o produto C = A . B existe e
uma matriz do tipo m x p,
Matrizes Operaes com Matrizes
Multiplicao
Exemplo:
Dadas as matrizes
(
(
(

=
(
(
(

+ +
+ +
+ +
= =
(

=
(
(
(

=
24 22
1 3
14 12
4 . 5 1 . 4 2 . 5 3 . 4
4 . 0 1 . 1 2 . 0 3 . 1
4 . 3 1 . 2 2 . 3 3 . 2
.
4 2
1 3
5 4
0 1
3 2
B A C
B e A
13
Matrizes Operaes com matrizes
Produto de nmero por uma Matriz
Definimos o produto de um nmero por uma matriz m x n como
sendo uma matriz m x n formada pelos produtos do nmero dado
por cada um dos elementos da matriz dada.
MULTIPLICAO POR 3
(

=
(

=
15 9 0
12 3 6
. 3
5 3 0
4 1 2
A
A
Exemplo
Matriz ou Array bi-dimensional
Declarao:
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 so iguais
16
Array multidimensional
Declarao:
tipoDados[,,,] nomeArray = new tipoDados[dim1,dim2,dim3,dim4]
Exemplo:
int [,,,] muitasDimensoes = new int[2,3,4,5];
//array multidimensional de dimenso 4
Array multidimensional 31
Jagged Array array de arrays de diferentes tamanhos
- No uma matriz mas sim um arrays de arrays
- Caso particular de um array multidimensional. Tratam-se de
arrays com mltiplas dimenses de
Declarao:
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
c
o
l
u
n
a
s
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
nmero 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 informao acerca do tamanho e
nmero de elementos dos Arrays independentemente de serem uni, bi,
multidimensionais, ou ainda, serem arrays de arrays (jagged arrays)
Nmero total de elementos na tabela:
nomeTabela.Length
Nmero total de dimenses na tabela:
nomeTabela.Rank
Nmero de elementos na dimenso dim
nomeTabela.GetLength(dim)
Dimenses de arrays 39
Length, Rank, GetLength(dimensao)
Dimenses de arrays 40
21
Length, Rank, GetLength(dimensao)
Dimenses de arrays 41
Length, Rank, GetLength(dimensao)
Dimenses de arrays 42
22
Programao
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 Ttulo");
}
26
Produto Matrizes
Produto de Matrizes
27
Listar Elementos
Listar Elementos na Matrizes
28
Ref.: Antnio Jos Videira Tavares/Ipca