Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
*
Curso de Programação em C++
Aula 06
Gerhard Saboia
Agradecimentos ao Prof: Evandro Parente Junior
*
*
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];
*
*
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:
Material 1
Material 2
Características
Neste caso, para referenciar ao material 1 e sua característica 3 devemos usar nomeMatriz[0][2].
0
1
0
1
2
*
*
Arrays multidimensionais:
Vetores e matrizes
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] ;
*
*
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);
}
*
*
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.
*
*
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; // faz apontar para a
*p = 8; // 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
*
*
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.
*
*
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).