#include<iostream> using namespace std; main(){ int i=20; int *p; p=&i; cout << "Valor da variável: " << *p << endl; }

Documentos relacionados
Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Aula 24: Ponteiros e Alocação Dinâmica

1 Exercícios com ponteiros

INF 1007 Programação II

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Introdução à Programação C

Alocação Dinâmica de Memória. Programação II

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Alocação Dinâmica em C

Módulo 5 Vetores e Alocação Dinâmica

INF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1

Aula 17: Ponteiros e Alocação Dinâmica em C

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

MC-102 Aula 19 Ponteiros II

Matrizes. Estruturas de Dados Aula 5: Matrizes. Vetor declaração estática. Vetor declaração dinâmica

1/34 GESTÃO DINÂMICA DE MEMÓRIA

Programação Computacional Aula 16: Alocação Dinâmica de Memória

Estruturas de Dados Aula 5: Matrizes 23/03/2011

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Estruturas de Dados Aula 5: Matrizes

1 Exercícios com ponteiros

LINGUAGEM C: ALOCAÇÃO DINÂMICA

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Explicação do programa:

Programação de Computadores II. Cap. 5 Alocação Dinâmica

Ponteiros de Variáveis

ALOCAÇÃO DINÂMICA DE MEMORIA Lista 10. A linguagem C/C++ possui recursos para alocação dinâmica de memoria.

5. Vetores e alocação dinâmica

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011

Linguagem C: Ponteiros - Alocação Dinâmica

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores

Ponteiros em C. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi

Ponteiros e Alocação Dinâmica. Prof. Péricles Miranda

Ponteiros, ponteiros e vetores e alocação dinâmica de memória

DAS5102 Fundamentos da Estrutura da Informação

Alocação dinâmica de Memória

INF 1620 P1-16/09/06 Questão 1 Nome:

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Aula 27: Estruturas heterogêneas e alocação dinâmica

INF 1620 P1-17/09/05 Questão 1 Nome:

Estruturas de Dados. Módulo 6 Matrizes. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estrutura de Dados. Aula 07 Alocação Dinâmica

Modulo 12: alocação dinâmica de memória

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Ponteiros. Embora o programador não tenha acesso ao endereço de uma variável, existem algumas situações onde é necessário a utilização deste endereço.

SSC304 Introdução à Programação Para Engenharias. Ponteiros. GE4 Bio

Computação 2. Aula 7. Profª. Fabiany Ponteiros

Laboratório de Programação II

Alocação Dinâmica de Memória

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Aula 18: Funções em C

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF029 Laboratório de Programação Aula 03: Ponteiros

Professora Jeane Melo

Métodos Computacionais. Vetores e Matrizes Dinâmicas

Princípios de Desenvolvimento de Algoritmos MAC122

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Gilberto A. S. Segundo. 24 de agosto de 2011

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

Aula 26: Estruturas heterogêneas

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Programação científica C++

Programação Estruturada Prof. Rodrigo Hausen Ponteiros e Passagem de Parâmetros

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Aula 25: Alocação Dinâmica

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

LINGUAGEM C: PONTEIROS

Ponteiro. Ponteiro. Objetivo. Compreender a definição e dominar a implementação de ponteiros em C.

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

A sintaxe para se declarar uma variável do tipo ponteiro é dada por:

Subprogramas. Prof. Carlos Lopes

Ponteiros e Tabelas. K&R: Capítulo 5

Algoritmos e Programação

Aula 9 Agregado Heterogêneo Ponteiro. prof Leticia Winkler

Ponteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

As bibliotecas iostream e cstdlib permitem a utilização de diversos comandos de entrada e saída e funções básicas.

Programação I Funções. Prof. Carlos Alberto

INF 1620 P4-06/12/02 Questão 1 Nome:

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA AMBIENTE DE PROGRAMAÇÃO. Prof. Dr. Daniel Caetano

Referências. Programação de Computadores II. Cap. 6 Matrizes. Tópicos. Alocação Estática versus Dinâmica. Alocação Estática versus Dinâmica

Algoritmos e Estruturas de Dados I (DCC/003) Funções

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

Material sobre Funções AEDS 1

ou, se quisermos criar uma constante simbólica para a dimensão:

Transcrição:

Aula 2 Ponteiros Ponteiros são um tipo de variável que aponta para outra, ou seja, um ponteiro guarda o endereço de memória de uma variável. No exemplo abaixo, observe que: (i) a variável p é do tipo ponteiro (não é do tipo inteiro); (ii) o símbolo & indica o endereço de memória da variável, e; (iii) para acessar o valor de uma variável apontada por um ponteiro, usamos asterisco * antes da variável ponteiro. int i=20; int *p; p=&i; cout << "Valor da variável: " << *p << endl; Malloc e Free Utilizando ponteiros, podemos declarar um vetor e seu tipo e somente depois de ler uma informação do usuário, alocar o espaço do vetor na memória. Para isso, utilizamos o comando malloc. Para liberar o espaço ocupado em memória que havia sido alocado usando malloc, utilizamos o comando free. Exemplo: #include<stdlib.h> // malloc, free int *ra; float *notas; int n; int i; cout << "Entre com o total de alunos: "; cin >> n; ra = (int *) malloc(n * sizeof(int)); // aloca n posições notas = (float *) malloc(n * sizeof(float));//aloca n posições for (int j=0; j<n; j++){ cout << endl << "Entre com o RA: "; cin >> ra[j]; cout << endl << "Entre com a nota: "; cin >> notas[j];

for (int j=0; j<n; j++){ cout << "O aluno de RA "<< ra[j] << " tem nota " << notas[j] << endl; free(ra); // libera memória ocupada pelo vetor ra free(notas); // libera memória ocupada pelo vetor notas Aritmética de Ponteiros Um vetor pode ser acessado como um ponteiro. Assim, a primeira posição de um vetor é a mesma coisa que um ponteiro que aponta para esse vetor. Isso porque um ponteiro só pode apontar para a primeira posição de um vetor. Usando a aritmética de ponteiros podemos adicionar (ou subtrair) x unidades de um ponteiro para que o ponteiro se mova para mais (ou menos) x unidades, onde a unidade é o tamanho do tipo de dados para o qual ele aponta. Isso significa que, para um vetor V e um ponteiro p que aponta para V, temos V[0]==*(p); V[1]==*(p+1); V[2]==*(p+2); : : Exemplo: int V[50]; int *pont; pont=v;// não precisa "&" pq vetores já são representados como ponteiro para 1a posição for (int i=0; i<15; i++){ V[i]=i+10; cout << "A 1a nota é: " << V[0] << endl; // Imprime 10 cout << "A 1a nota é: " << *pont << endl; // Imprime 10 cout << "A 10a nota é: " << V[9] << endl; // Imprime 19 cout << "A 10a nota é: " << *(pont+9) << endl; // Imprime 19

Métodos Variáveis locais e globais: variáveis locais são acessíveis somente dentro do método no qual são declaradas. Variáveis globais são acessíveis em qualquer parte do programa; A função main(): é a função principal de um programa em C/C++. Todo programa deve ter a função main(), caso contrário o compilador reclama e não gera o executável. Um programa começa executando a função main() e termina quando esta função termina. Dois tipos de métodos: (1) Com retorno: realizam processamento e devolvem uma informação. Exemplo: int fatorial(int n){ int fat=1; for(int i=2; i<=n; i++) fat=fat*i; return fat; (2) Sem retorno: realizam tarefas e operações sem devolver uma informação. Exemplo: void fatorial(int n){ int fat=1; for(int i=2; i<=n; i++) fat=fat*i; cout << "(Sem retorno) - Fatorial de " << n << " é " << fat << endl; Duas formas de passar parâmetros: (1) Por valor: os valores das variáveis de entrada de uma função são copiados para ela. As duas funções acima passam o parâmetro n por valor; (2) Por referência: o endereço na memória das variáveis é passado como parâmetro para a função que pode modificar o valor da variável. Exemplo: // variáveis globais int exemplo_var_global=0; void troca(float *a, float *b) { float temp; temp = *a;

*a = *b; *b = temp; float a=10.5, b=17.1; cout << "Antes: a=" << a << " b=" << b << endl; troca(&a,&b); cout << "Depois: a=" << a << " b=" << b << endl; Protótipo de Função É uma técnica muito utilizada em programas C e C++, na qual as funções são declaradas antes de serem definidas. Exemplo: //criando o protótipo de 4 funções int somar (int x, int y); int subtrair (int x, int y); int n, m, Som, Sub; cout << "Digite o 1o valor: "; cin >> n; cout << "Digite o 2o valor: "; cin >> m; //chamando todas as funções Som = somar (n, m); Sub = subtrair (n, m); cout << n << " + " << m << " = " << Som << endl; cout << n << " - " << m << " = " << Sub << endl; //As funções int somar (int x, int y){ return x+y; int subtrair (int x, int y){ return x-y;

Utilizando bibliotecas em C Algumas funções úteis de biblioteca: Nome da Função Utilidade Biblioteca abs(n) Retorna o valor absoluto de n math.h ceil(n) Retorna a função teto de n math.h cos(n) Calcula coseno de n math.h floor(n) Retorna a função piso de n math.h pow(n,m) Calcula n elevado a m math.h random(n) Retorna um número aleatório entre 0 e n-1 stdlib.h sin(n) Calcula seno de n math.h sqrt(n) Calcula raiz quadrada de n math.h tan(n) Calcula tangente de n math.h tolower(n) Converte o caractere n para minúsculo ctype.h toupper(n) Converte o caractere n para maiúsculo ctype.h Exercício. Para uma lista estática (vetor), implemente os métodos das três operações básicas: (a) inserção; (b) remoção, e; (c) busca. Observações: As operações de inserção e remoção devem ter dois métodos diferentes cada, um para listas ordenadas e outro para listas não ordenadas; Para a operação de busca devem ser implementadas duas funções recursivas: (1) uma busca sequencial (para lista não ordenada) e (2) uma busca binária (para lista ordenada).