Programação de Computadores I – Ponteiros Profa. Mercedes Gonzales Márquez.

Slides:



Advertisements
Apresentações semelhantes
Marco Antonio Montebello Júnior
Advertisements

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Alocação Dinâmida de Memória
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.
Alocação Dinâmica de Memória
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Ponteiros em C.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade de Brasília
Ponteiros em Linguagem C
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Fundamentos de Programação 1
Ponteiros.
Escola Secundária c/ 3º CEB da Batalha
Listas Encadeadas.
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Alocação Dinâmica de Memória Professor Mário Dantas
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte IX
Definição de Tipos Estruturas e Ponteiros
INTELIGÊNCIA ARTIFICIAL
Alocação Dinâmica de Memória
Implementação de FILAS com Alocação Dinâmica
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
PROGRAMAÇÃO I PONTEIROS.
Alocação Dinâmica de Memória
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Prof. Ricardo Santos PONTEIROS
Estruturas de Dados Aula 5: Matrizes
Algoritmos e Estruturas de Dados I – Ponteiros
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
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.
Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Algoritmos e Estruturas de Dados
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
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Prof. Alessandro Gonçalves
Programação de Computadores I – Arquivos
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Leandro Almeida  As declarações abaixo alocam memória para diversas variáveis.  A alocação é estática, pois acontece antes que o programa.
Ponteiros em C Prof. Kariston Pereira
Linguaguem de Programação II
Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Linguagem de Programação
ponteiros Estrutura de Dados Prof. André Cypriano M. Costa
Programação de Computadores I – Arquivos Profa. Mercedes Gonzales Márquez.
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.
Alocação Dinâmica de Memória e Tipo Abstrato de Dados Cristiano Arbex Valle Vinicius Fernandes dos Santos
Programação de Computadores I – Ponteiros
Programação de Computadores I – Ponteiros
Transcrição da apresentação:

Programação de Computadores I – Ponteiros Profa. Mercedes Gonzales Márquez

Ponteiros - Manipulação Declaração: * int *p; float *q; O operador unário & captura o endereço de um objeto. p = &x; O operador unário * é um operador de indireção: quando aplicado a um apontador, acessa o conteúdo do objeto apontado. x = *p;

Ponteiros - Manipulação vet aponta para vet[0] (vet[0]==*vet) e - vet+1 aponta para vet[1] e *(vet+1) refere-se ao conteúdo de vet[1] – vet+i aponta para vet[i] e *(vet+i) refere-se ao conteúdo de vet[i] int vet[4];

Ponteiros - Manipulação int vet[4]; int *pa; pa = &vet[0]; pa vet Se pa aponta para vet[0], então: - pa+1 aponta para vet[1] e pa+i aponta para vet[i].

Ponteiros - Manipulação Exemplo int x=3, y=5, *p=&x, *q=&y, *r; double z; Expressão Valor p==&x1 **&p3 r=&zerro 7**p/*q+711 *(&y)*=*p15

Ponteiros Exemplo O que será impresso pelo programa abaixo considerando que os valores lidos nas variáveis x e y sejam 2 e 5,respectivamente?

Ponteiros Exemplo O que será impresso pelo programa abaixo considerando que os valores lidos nas variáveis x e y sejam 2 e 5,respectivamente?

Ponteiros Exemplo O que faz o trecho de programa abaixo?

Ponteiros para registros Ao criarmos uma variável de um tipo struct, esta e armazenada na memoria como qualquer outra variável, e portanto possui um endereço. Exemplo #include typedef struct { double x; double y; } Coordenada; int main(){ Coordenada c1, c2, *c3; c3 = &c1;......

Ponteiros para registros Para acessarmos os campos de uma variavel struct via um ponteiro, podemos utilizar o operador * juntamente com o operador. como de costume: Coordenada c1, *c3; c3 = &c1; (*c3).x = 1.5; (*c3).y = 1.5; Em C também podemos usar o operador -> para acessar campos de uma estrutura via um ponteiro. Podemos obter o mesmo resultado do exemplo anterior: Coordenada c1, *c3; c3 = &c1; c3->x = 1.5; c3->y = 1.5;

Ponteiros para registros Resumindo: Para acessar campos de estruturas via ponteiros use um dos dois: ponteiroEstrutura->campo (*ponteiroEstrutura).campo Exercício 1: Vamos criar as seguinte funcões: void leCoordenada3D(Coordenada3d *f);: lê dados de uma ponto no espaço tridimensional com coordenadas (x,y,z) passada como ponteiro. (Por quê como ponteiro?) void imprimeCoordenada3D(Coordenada3d f); Imprime coordenadas de um ponto. O programa principal que requeira a leitura de 5 pontos no espaço tridimensional.

Alocação dinámica função malloc – Parâmetro: tamanho desejado, em bytes – Resultado: apontador para espaço na memória Programa int *p; p = (int*)malloc(4); *p = 5; printf("%d", *p);

Alocação dinámica função free: – Parâmetro: endereço já alocado – Resultado: libera a área alocada Programa int *p; p = (int*)malloc(4); *p = 5; free(p);

Alocação dinámica função sizeof: sizeof(variavel) – Retorna quantidade de memória ocupada pela variável sizeof(tipo) – Retorna quantidade de memória ocupada por uma variável com este tipo. VETOR DINÂMICO Calcular tamanho do vetor com sizeof Reservar memória com malloc Acessar elementos com [ ] ou ponteiros Liberar memória do vetor com free

Alocação dinámica Exemplo: int *v; int tamanho; scanf(“%d”, &tamanho); v = (int*)malloc(sizeof(int)*tamanho); v[1] = v[2] + v[3]; *(v+1) = *(v+2) + *(v+3); free(v); Exercício 2. O exercício 1 pedia para ingressar 5 pontos do espaço tridimensional, agora considere um vetor de pontos de tamanho dinâmico.

Exercícios Exercício 3. O que será impresso pelo programa abaixo: #include Typedef struct{ int x; int y; } T; void f1(T *a){ f2(&(a->x)); f2(&(a->y)); } void f2(int *b){ *b = 2*(*b); } int main(){ T a, b, *c, *d; c = &a; a.x = 2; a.y = 4; b.x = 2; b.y = 2; d = c; f1(d); b = *d; printf("x: %d --- y: %d\n",b.x,b.y); } 7. Escreva

Exercícios int main(){ T a, b, *c, *d; c = &a; a.x = 2; a.y = 4; b.x = 2; b.y = 2; d = c; f1(d); b = *d; printf("x: %d --- y: %d\n",b.x,b.y); }

Exercícios int main(){ T a, b, *c, *d; c = &a; a.x = 2; a.y = 4; b.x = 2; b.y = 2; d = c; f1(d); b = *d; printf("x: %d --- y: %d\n",b.x,b.y); }