1 Aula 4 Ponteiros. 2003/2004 Programação Orientada para Objectos 2 Instâncias de um programa C++ int i = 10; Nome: i Tipo: int Valor: 10.

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 10 Criado por Frederick H. Colclough, Colorado Technical University Ponteiros e Vetores.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Sistemas operacionais
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Désiré NGuessan Programação II Estruturas de Dados
Vamos abordar o exemplo
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Ponteiros em C.
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Modos de endereçamento
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Ponteiros.
Escola Secundária c/ 3º CEB da Batalha
As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!
1 Aula 5 Instâncias dinâmicas. 2003/2004 Programação Orientada para Objectos 2 Instâncias… int j = 20; int f() { int const i = 10; // … } Constante automática.
Matrizes clássicas e vectores em C++
Aula 7 Instrução de iteração while. 2003/2004 Introdução à Programação 2 passo [G][G] [¬G][¬G] Início da actividade Fim da actividade Actividade Transição.
2002/2003 Programação Orientada para Objectos 1 Aula 7 - Herança Herança pública: relação é um. A relação tem um. A relação é composto por um. Ponteiros,
Aula 11 Tipos Abstractos de Dados II. 2003/2004 Introdução à Programação 2 Estrutura global do programa #include using namespace std; int mdc(int const.
Aula 10 Tipos Abstractos de Dados I. 2003/2004 Introdução à Programação 2 Flashback Lembram-se da Aula 4?
1 Aula 3 Listas e iteradores (cont.). 2003/2004 Programação Orientada para Objectos 2 ListaDeInt : interface class ListaDeInt { public: typedef int Item;
Aula 8 Polimorfismo.
Metodologia de Dijkstra para desenvolvimento de ciclos
Programação Baseada em Objectos Desenho de TAD
Aula 6 Instruções de selecção e instruções condicionais.
1 Aula 7 Herança. 2003/2004 Programação Orientada para Objectos 2 Conceitos fundamentais: Herança Polimorfismo Ligação dinâmica.
1 Aula 6 Classes que reservam recursos externos. 2003/2004 Programação Orientada para Objectos 2 PilhaDeInt : interface /** Representa pilhas de int.
Sobrecarga de nomes de rotinas Rotinas recursivas Invocação de rotinas
Aula 9 Fases do desenvolvimento de software UML Diagramas de classes
2002/2003 Programação Orientada para Objectos 1 Aula 5 Memória livre e instâncias dinâmicas Criação de instâncias dinâmicas Destruição de instâncias dinâmicas.
2002/2003 Programação Orientada para Objectos 1 Aula 4 Memória, unidade básica de memória e conceito de endereço Ponteiros Relação de ponteiros com matrizes.
2002/2003 Programação Orientada para Objectos 1 Aula 3 Utilização de listas Melhorando a implementação das listas e iteradores Reflexão sobre interfaces.
Aula 2 Listas e iteradores.
Listas Encadeadas.
Apontadores ou Ponteiros
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Aula prática 12 Listas Encadeadas
Ponteiros Variáveis do tipo “ponteiro” armazenam endereços de memória
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Tipos básicos de variáveis em C++.
1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa.
Linguagem de Programação II Parte IX
Definição de Tipos Estruturas e Ponteiros
PROGRAMAÇÃO I PONTEIROS.
Professor Mário Dantas
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Estruturas de Dados Aula 5: Matrizes
Programação em C++ Compiladores
Agenda Modos de Endereçamento.
1.
Processamento de dados na UCP e memória UCP
Programação orientada a objectos em C++
2002/2003 Programação Orientada para Objectos 1 Aula 6 Classes que reservam recursos externos Problemas comuns Construtores e destrutores Construção por.
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída.
1 Alocação Dinâmica Quando se declara arrays o tamanho deve ser fixo e definido primeiramente –Alocação estática Pode-se alocar dinamicamente o espaço.
2002/2003 Programação Orientada para Objectos 1 Aula 2 Noção de lista e de iterador Operações com listas e iteradores Classes embutidas.
Variáveis X Memória Automação Industrial Informática Básica Profa. Ms. Viviane Guimarães Ribeiro Prof. João Sanches Prof. Ms. Rodrigo de Maio Almeida.
Joaquim José Hangalo  Podemos entender a memória do computador como um conjunto de células que armazenam informações.  Cada célula.
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
De 19 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes
1 Programação em C Aula Considere que um banco armazena em arquivo as seguintes informações de seus clientes: número da conta (int), nome do cliente.
Linguagem de Programação
Fundamentos de Programação 1
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Transcrição da apresentação:

1 Aula 4 Ponteiros

2003/2004 Programação Orientada para Objectos 2 Instâncias de um programa C++ int i = 10; Nome: i Tipo: int Valor: 10

2003/2004 Programação Orientada para Objectos 3 O que é a memória? Sequência de bytes com números sucessivos Números são endereços Bytes são a unidade básica de memória e têm 8 bits Também denominados de octetos.

2003/2004 Programação Orientada para Objectos 4 Memória 10 i : int

2003/2004 Programação Orientada para Objectos 5 Ponteiros Guardam endereços de variáveis Ponteiro para int: int* p; Contém lixo! p guarda o endereço de um int.

2003/2004 Programação Orientada para Objectos 6 Operações com ponteiros Operador endereço ( & ): int* p = &i; 10 i : int p : int*

2003/2004 Programação Orientada para Objectos 7 Operações com ponteiros Operador endereço ( & ): int* p = &i; Operador conteúdo ( * ): cout << *p << endl; *p = 20; 10

2003/2004 Programação Orientada para Objectos 8 Memória 20 i : int p : int*

2003/2004 Programação Orientada para Objectos 9 Contextos… int i = 10; int& j = i; int* p = &i; int k = *p; Define uma referência para um int. Define um ponteiro para um int. Operador que devolve o endereço de i. Operador que devolve o conteúdo de p.

2003/2004 Programação Orientada para Objectos 10 Ponteiros e matrizes int m[5] = {6, 7, 8, 9, 10}; int* p = &m[0]; p = p + 1; *p = 20;

2003/2004 Programação Orientada para Objectos 11 Memória m[0]: int 7 m[1]: int 8 m[2]: int 9 m[3]: int 10 m[4]: int 20 p: int*

2003/2004 Programação Orientada para Objectos 12 Ponteiros e matrizes int m[5] = {6, 7, 8, 9, 10}; int* p = &m[0]; p = p + 1; *p = 20;

2003/2004 Programação Orientada para Objectos 13 Memória m[0]: int 7 m[1]: int 8 m[2]: int 9 m[3]: int 10 m[4]: int 24 p: int*

2003/2004 Programação Orientada para Objectos 14 Ponteiros e matrizes int m[5] = {6, 7, 8, 9, 10}; int* p = &m[0]; p = p + 1; *p = 20;

2003/2004 Programação Orientada para Objectos 15 Memória m[0]: int 20 m[1]: int 8 m[2]: int 9 m[3]: int 10 m[4]: int 24 p: int*

2003/2004 Programação Orientada para Objectos 16 Indexação de matrizes X[I] é o mesmo que *(X + I) int m[5]; m[2] = 10; é interpretado como int m[5]; *(m + 2) = 10;

2003/2004 Programação Orientada para Objectos 17 Matrizes em expressões Se uma matriz ocorrer numa expressão é convertida num ponteiro para o primeiro elemento: int m[5]; int* p = m; É o mesmo que int m[5]; int* p = &m[0];

2003/2004 Programação Orientada para Objectos 18 Matrizes como argumento (I) int soma(int const m[], int n) { int soma = 0; for(int i = 0; i != n; ++i) soma += m[i]; return soma; } int main() { int matriz[] = {2, 4, 6, 8}; cout << soma(matriz, 4) << endl; }

2003/2004 Programação Orientada para Objectos 19 Matrizes como argumento (II) cout << soma(matriz, 4) << endl; é o mesmo que cout << soma(&matriz[0], 4) << endl; ou ainda int* p = matriz; // ou &matriz[0] cout << soma(p, 4) << endl;

2003/2004 Programação Orientada para Objectos 20 Matrizes como argumento (III) int soma(int const m[], int n); é o mesmo que int soma(int const* m, int n);

2003/2004 Programação Orientada para Objectos 21 Matrizes como argumento (IV) int soma(int const* m, int n) { int soma = 0; for(int i = 0; i != n; ++i) soma += m[i]; return soma; } int main() { int matriz[] = {2, 4, 6, 8}; cout << soma(matriz, 4) << endl; }

2003/2004 Programação Orientada para Objectos 22 Matrizes multidimensionais int m[3][2]; int (*p)[2] = m; ++p; p[0][0] = 10; 10 m: int[3][2]

2003/2004 Programação Orientada para Objectos 23 Aluno class Aluno { public: Aluno(string const& nome =, int número = 0); string const& nome() const; int número() const; private: string nome_; int número_; }; Aluno::Aluno(string const& nome, int const número) : nome_(nome), número_(número) {} string const& Aluno::nome() const { return nome_; } int Aluno::número() const { return número_; }

2003/2004 Programação Orientada para Objectos 24 Ponteiros e classes (I) int main() { Aluno a(Xico, 12345); Aluno* p = &a; cout << (*p).nome() << endl << (*p).número() << endl; }

2003/2004 Programação Orientada para Objectos 25 Ponteiros e classes (II) Em vez de cout << (*p).nome() << endl << (*p).número() << endl; usar abreviaura cout nome() << endl número() << endl;

2003/2004 Programação Orientada para Objectos 26 Aula 4: Sumário Instâncias de um programa C++: Memória Unidade básica de memória Endereço Ponteiros Definição Inicialização Acesso indirecto a variáveis Símbolos * e & em declarações e expressões Relação com matrizes Relação com classes