Aula 6 - DEECC - Universidade Federal do Ceará

Propaganda
Curso de Programação em C++
Universidade Federal do Ceará
Departamento de Engenharia Estrutural e
Construção Civil
Prof: Evandro Parente Junior
Monitor: Renato Peixoto
Abril/2007
Vetores e matrizes

Matrizes:



Array bidimensional (dois índices).
Corresponde ao conceito matemático de
matriz, com linhas e colunas.
O primeiro índice indica a linha e o
segundo a coluna.
// Declaração de uma matriz com 5 linhas e 20 colunas.
double matDouble[5][20];
2
Vetores e matrizes

Matrizes
Supondo que 2 materiais e 3 características de cada um deles
estejam armazenadas em uma matriz bidimensional, a
representação seria a seguinte:
Características
Material 1
0
1
Material 2
0
1
2
Neste caso, para referenciar ao material 1 e sua característica 3
devemos usar nomeMatriz[0][2].
3
Vetores e matrizes

Arrays multidimensionais:
Declaração
tipo identificador[tamanho1][tamanho2]…[tamanhon];
// Declaração de uma matriz de inteiros com 3 dimensões
int matInt[10][50][30] ;
// Declaração de uma matriz de floats com 4 dimensões
float matFloat[100][100][20][6] ;
4
Matrizes
#include <iostream>
using namespace std;
int main(void)
{
int A[2][3]={2,3,4,5,2,0};
int B[2][3]={0,23,2,4,0,6};
int C[2][3];
// Soma as matrizes.
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++) C[i][j] = A[i][j] + B[i][j];
// Imprime o resultado.
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++) cout << C[i][j] << "
cout << "\n";
}
";
return(0);
}
5
Apontadores (ponteiros)

São variáveis que armazenam endereços de
memória.

“Apontam” para o endereço de outras
variáveis.

Sintaxe:



int *p;
// p é um ponteiro para inteiro
double *x; // x é um ponteiro para double
Operadores associados:


&  retorna o endereço de uma variável.
*  retorna o conteúdo de um endereço de
memória.
6
Apontadores (ponteiros)
#include <iostream>
using namespace std;
int main(void)
{
int a = 10;
// cria uma variável inteira a
int *p;
// cria um ponteiro para inteiro
cout << "Valor inicial de a: " << a << "\n";
p = &a;
*p = 8;
// faz apontar para a
// altera o contéudo do endereço apontado por p
cout << "Valor do ponteiro p: " << p << "\n";
cout << "Conteudo do endereco apontado por p: " << *p << "\n";
cout << "Valor final de a: " << a << "\n";
return(0);
}
Valor inicial de a: 10
Valor do ponteiro p: 0x22ff74
Conteudo do endereco apontado por p: 8
Valor final de a: 8
7
Apontadores (ponteiros)

Operações aritméticas:

Igualdade



p1 = p2
// p1 aponta para o mesmo endereço de p2
*p1 = *p2 // copia o conteúdo de p2 para p1
Incremento e decremento




Usandos para percorrer arrays.
p++; // p = p + sizeof(tipo_de_p)
p--; // p = p - sizeof(tipo_de_p)
Na prática p++ faz p apontar para o próximo elemento
do array.
8
Apontadores (ponteiros)

Aplicações mais importantes:



Alocação dinâmica de memória.
Passagem de parâmetros para funções.
Alocação dinâmica de memória:


Utilizada quando as dimensões de um array
são conhecidas apenas durante a execução.
Criação de estruturas de dados mais
complexas:


Pilhas, filas, listas, árvores, ...
Utilização de classes (herança/polimorfismo).
9
Download