Ponteiros. podem aumentar/diminuir de tamanho como listas encadeadas, árvores, etc. memória. sua vez armazena um valor
|
|
- Ana Clara Capistrano
- 5 Há anos
- Visualizações:
Transcrição
1 Ponteiros! Usado para criar e manipular estrutura de dados que podem aumentar/diminuir de tamanho como listas encadeadas, árvores, etc.! Conceitos Básicos:! ponteiro=> variável que armazena um endereço de memória.! variável=> contem um valor! ponteiro=> contem o endereço de uma variável que por sua vez armazena um valor! variável=> diretamente referencia um valor! ponteiro=> indiretamente referencia um valor Programação de Computadores 185
2 ! Como as variáveis, os ponteiros devem ser declarados antes do seu uso: int *ptcont, cont; nessa declaração temos: " ptcont-> ponteiro para uma posição de memória que armazena um inteiro. Em outras palavras, o conteúdo da posição de memória chamada ptcont, é o endereço de uma posição de memória que armazena um inteiro. " cont -> posição de memória que armazena um inteiro int *pty, *ptx; " duas posições de memória que armazenam um endereço de memória onde será armazenado um inteiro. Programação de Computadores 186
3 Programação de Computadores 187! ponteiros podem ser iniciados quando declarados ou por uma comando de atribuição. Valores possíveis: 0, NULL ou um endereço. (NULL é uma constante simbólica definida em iostream.h) NULL e 0 são equivalentes-> 0 é mais usado.! Operadores:! & -> operador unário de endereço. Quando aplicado retorna o endereço do operando.exemplo:... int y = 5; y 5 int *pty; pty = &y; atribui a pty o endereço da variável y... pty
4 // usando os operadores & e * #include <iostream.h> void main( ) { int a; int *ponta; // ponta é um ponteiro para uma posição de memória // que armazena um inteiro a = 7; ponta = &a; cout<< Endereço de memória onde está armazenada a variável a: <<&a<<endl<< Valor de ponta é:"<<ponta<<endl<<endl <<"O valor da variável a é:"<<a<<endl <<"O valor de *ponta é:"<<*ponta<<endl<<endl << * e & são complementares um do outro"<<endl <<"&*ponta="<<&*ponta<<endl<<"*&ponta= <<*&ponta <<endl; Programação de Computadores 188
5 Endereço de memória onde está armazenado a variável a:0x603f293a Valor de ponta é:0x603f293a O valor da variável a é:7 O valor de *ponta é:7 * e & são complementares um do outro &*ponta =0x603f293a *&ponta =0x603f293a Programação de Computadores 189
6 ! Arranjo de Ponteiros! int a[10]; declara um arranjo de 10 posições! se não conhecemos antecipadamente o tamanho do problema, podemos deixar que o usuário indique o tamanho desejado na hora da execução. #include <iostream.h> #include <assert.h> void main( ) { int *arranjo, tamanho; cout<<"entre com o tamanho do arranjo:"; cin>>tamanho; arranjo = new int[tamanho]; assert(arranjo!=0); cout<<endl<<"entre agora com os elementos do arranjo:"; for (int i=0; i<tamanho;i++) cin>>arranjo[i]; cout<<endl<<"arranjo montado:"<<endl; for (int i=0;i<tamanho;i++) cout<<" "<<arranjo[i]; Programação de Computadores 190
7 #include <assert.h> void assert(int test); Descrição: Testa uma condição e aborta a execução se o teste falhar. É uma macro. Quando falha, além de abortar o programa emite uma mensagem indicando o teste que falhou, o nome do arquivo onde foi feito o teste e o número da linha dentro do arquivo Programação de Computadores 191
8 Programação de Computadores 192! Podemos fazer a mesma alocação para matrizes. float **matriz; int nro_linhas, nro_colunas; cout<<"entre com o nro de linhas da matriz:"; cin>>nro_linhas; matriz= new float* [nro_linhas]; assert(matriz!=0); cout<<"entre agora com o nro de colunas da matriz:"; cin>>nro_colunas; for (int i=0;i<nro_linhas;i++) { matriz[i]= new float[nro_colunas]; assert(matriz[i]!=0);
9 ! matriz= new float* [nro_linhas];! se nro_linhas =3 matriz for (int i=0; i<nro_linhas;i++) matriz[i]=new float [nro_colunas]; //se nro_colunas=3 matriz Programação de Computadores 193
10 ! Matriz Triangular só os elementos que tem i j float **matriang; int ordem; cin>>ordem; matriang = new float*[ordem]; assert(matriang!=0); for (int i=0; i<ordem;i++) { matriang[i] = new float [i+1]; assert(matriang[i]!=0); Programação de Computadores 194
11 Programação de Computadores 195! Fazer a alocação para matriz triangular superior.! char *cad[4]={ ouro, copas, paus, espada ; cad[0] cad[1] cad[2] cad[3] O C P E U R O \0 O A S U 4 P A S \0 P S \0 A D 5 6 A \0 TAMANHOS DIFERENTES PARA AS COLUNAS
12 ! Simulando embaralhar e distribuir cartas=> baralho tem 52 cartas, 13 cartas de cada naipe. Podemos imaginar o baralho como sendo um arranjo de 4 linhas correspondendo aos naipes e 13 colunas correspondendo a numeração das cartas. cartas copas ouro paus espada AS rei valete dama cartas[2][12] representa o Rei de paus Programação de Computadores 196
13 ! A simulação do embaralhamento das cartas pode ser feita usando o seguinte método.! O arranjo cartas é iniciado com 0.! Aleatoriamente é escolhida uma linha(0-3) e uma coluna(0-12)! O número 1 é inserido na posição cartas[linha][coluna] para indicar que na distribuição essa será a primeira carta.! O mesmo processo é feito com os números 2,3,4,, 52. Se uma posição selecionada já tiver aparecido em outra rodada, ela é ignorada e outra linha e coluna é selecionada.! Quando todo o arranjo tiver sido preenchido, as cartas serão distribuídas. PS: Um programa escrito usando esse algoritmo pode rodar indefinidamente. Pq? Programação de Computadores 197
14 ! Depois de embaralhado, quando formos proceder a distribuição temos que ter uma forma de traduzir cartas[linha] [coluna] para o texto equivalente ao significado da carta. Por exemplo, se cartas[2][12]=1 temos que distribuir a carta Rei de Ouro.! Uma maneira simples é criar um arranjo de ponteiros para caracteres naipe[4], colocando na posição naipe[0]= copas, naipe[1]= ouro, naipe[2]= paus e naipe[3]= espada. Uma vez determinada a linha, basta ir no arranjo naipe na linha selecionada e imprimir o conteúdo.! O mesmo pode ser feito com o valor das cartas. Criamos um arranjo de ponteiros para caracteres valor[13], sendo que valor[0]= As, valor[1]= dois,, valor[10]= Valete, valor[11]= Dama e valor[12]= Rei. Programação de Computadores 198
15 ! Vamos usar a metodologia de desenvolvimento chamada de refinamentos sucessivos.! Embaralhe e distribua as 52 cartas! inicie o arranjo cartas! inicie o arranjo valor! inicie o arranjo naipe! embaralhe as cartas! distribua as cartas! Embaralhe as cartas pode ser expandida para:! para cada uma das 52 cartas faça { linha#número aleatório entre 0 e 4 ; coluna#número aleatório entre 0 e 12; enquanto cartas[linha][coluna] 0 faça { linha#número aleatório entre 0 e 4 ; coluna#número aleatório entre 0 e 12; carta[linha][coluna]# número da carta Programação de Computadores 199
16 ! Distribua as cartas para cada uma das 52 cartas faça { procura pela posição cartas[linha][coluna]=valor da carta; imprime valor[coluna] seguido da cadeia de seguido de naipe[linha]; Programação de Computadores 200
17 #include <iostream.h> #include <iomanip.h> #include <stdlib.h> #include <time.h> void embaralha(int[][13]); void distribui(int[][13], char*[ ], char*[ ]) ; void main( ) { char *naipe[]={"copas","ouro","paus","espada"; char *valor[ ]={"As","dois","tres","quatro","cinco","seis","sete","oito", "nove","dez","valete","dama","rei"; int cartas[4][13]={0; srand(time(null)); embaralha(cartas); distribui(cartas,valor,naipe); Programação de Computadores 201
18 void embaralha(int baralho[ ][13]) { int linha,coluna; for (int carta=1;carta<=52;carta++) { linha = rand()% 4; coluna = rand( ) % 13; while (baralho[linha][coluna]!=0) { linha = rand( ) % 4; coluna = rand( ) % 13; baralho[linha][coluna] = carta ; void distribui(int baralho[ ][13], char* face[ ], char *naipe[ ]) { for (int carta = 1; carta<=52; carta++) for (int linha=0; linha<=3; linha++) for (int coluna=0; coluna<=12; coluna++) if (baralho[linha][coluna] == carta) cout<<setw(5)<<setiosflags(ios::right)<<face[coluna] <<" de "<<setw(8)<<setiosflags(ios::left)<<naipe[linha] << (carta%3==0?'\n':'\t'); Programação de Computadores 202
19 ! Ponteiro para funções=> contem o endereço da função na memória.! Vimos que o nome de um arranjo é também o endereço na memória do primeiro elemento do arranjo! Nome de uma função => é o endereço onde inicia o código que realiza as tarefas da função.! Ponteiro para função:! podem ser passados para outras funções! pode ser retornado de uma função! armazenado em arranjos! atribuído a outros ponteiros para funções. Programação de Computadores 203
20 #include <iostream.h> #include <iomanip.h> void ordena(int [ ], const int, int(*)(int,int)); int ascendente(const int,const int); int descendente(const int, const int); void main( ) { const int tamanho=10; int ordem,cont, a[tamanho]={2,6,4,8,10,12,89,68,45,37; cout<<"entre com o valor 1 se a ordenação for crescente"<<endl <<"Entre com o valor 2 para ordenação decrescente"<<endl; cin>>ordem; cout<<endl<<"dados na ordem original"<<endl; for (cont=0;cont<tamanho;cont++) cout<<setw(4)<<a[cont]; if (ordem==1) { ordena(a, tamanho,ascendente); cout<<endl<<"elementos em ordem crescente"<<endl; else { ordena(a, tamanho, descendente); cout<<endl<<"elementos em ordem decrescente"<<endl; for (cont=0;cont<tamanho;cont++) cout<<setw(4)<<a[cont]; cout<<endl; Programação de Computadores 204
21 void ordena(int a[ ], const int tam, int(*compare)(int,int)) { int aux; ; int posicao; for (int i=0; i<tam-1; i++) { aux = a[i]; posicao = i; for (int j=i+1; j<tam;j++) if ((*compare)(aux,a[j])) { aux= a[j]; posicao =j; if (posicao!= i) { a[posicao] = a[i]; a[i] = aux; int ascendente(const int a, const int b) { return b<a; int descendente(const int a, const int b) { return b>a; Programação de Computadores 205
22 ! Funções: ordena, ascendente e descendente! ordena=> recebe um ponteiro para uma função que pode ser ascendente ou descendente, junto com o arranjo e seu tamanho.! Programa pergunta ao usuário o tipo de ordenação desejado. Se for ascendente (tipo 1) o ponteiro para a função ascendente é passado para a função ordena.! int(*) (int,int) => diz para a função ordena esperar 1 parâmetro que é 1 ponteiro para uma função que tem como parâmetro dois inteiros.! No programa o código (if (*compare)(aux,a[j])) é equivalente a if (compare(aux,a[j]). PQ?! Nome da função é um ponteiro para a mesma Programação de Computadores 206
23 Programação de Computadores 207! Maior uso de ponteiros para função: Sistemas orientados a menu.! Usuário seleciona um opção a partir de um menu. Cada opção é executada por uma função diferente.! Os ponteiros para cada função são armazenados num arranjo de ponteiros para função. A escolha do usuário é usada como índice para o arranjo e o ponteiro armazenado na posição usado para chamar a função correspondente.
24 #include <iostream.h> void funcao1(int); void funcao2(int); void funcao3(int); void main( ) f é um arranjo de 3 posição sendo que cada uma delas é um ponteiro para uma função que recebe como argumento um inteiro e retorna void. O arranjo é iniciado com o nome da função correspondente { void (*f[3])(int)={funcao1,funcao2,funcao3; int escolha; cout<<"entre com o valor entre 1 e 3, 0 para terminar:"; cin>>escolha; while (escolha>=1 && escolha<=3) { f[escolha-1](escolha); // seleciona o ponteiro na posição //escolhida do arranjo cout<<"entre com um valor entre 1 e 3, 0 para terminar:"; cin>>escolha; cout<<"você entrou com o valor 0, portanto encerrando o programa"<<endl; Programação de Computadores 208
25 void funcao1(int a) { cout<<"você entrou com o valor "<<a<<" então a função 1 foi chamada"<<endl<<endl; void funcao2(int a) { cout<<"você entrou com o valor "<<a<<" então a função 2 foi chamada"<<endl<<endl; void funcao3(int a) { cout<<"você entrou com o valor "<<a<<" então a função 3 foi chamada"<<endl<<endl; Programação de Computadores 209
Aula 24: Ponteiros e Alocação Dinâmica
Aula 24: Ponteiros e Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aula anterior Memória Ponteiro Utilização
Ponteiros. Baseado nos slides do Prof. Mauro.
Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar
ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa
ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 04 Prof. Thomás da Costa thomascosta@aedu.com O que é: Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões,
Template de classe. class vetor { int *arranjo; int limite; public: vetor(int=100); int & operator[ ](int n); };
Template de classe! Idéia é semelhante ao template de função! Usando a classe vetor que foi desenvolvida anteriormente: class vetor { int *arranjo; int limite; public: vetor(int=100); int & operator[ ](int
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Introdução à Programação
Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 13 Estruturas Tipo complexo de dados que agrupa dados de tipos diferentes (simples ou complexos) Adequados para manipular diversas
Estrutura de dados 1. Ponteiros
Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem
CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Ordenação Revisão para a prova
CURSO BÁSICO DE PROGRAMAÇÃO AULA 16 Ordenação Revisão para a prova Algoritmos de Ordenação São algoritmos que organizam uma sequência (por exemplo, os elementos de um vetor) em ordem crescente ou decrescente.
Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica
Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros
Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ
Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando
Introdução aos caracteres e processamento de cadeias.! caracteres são blocos fundamentais de programas em
Introdução aos caracteres e processamento de cadeias.! caracteres são blocos fundamentais de programas em C++.! Programa: composto de seqüência de caracteres que quando agrupadas tem um significado, ou
Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Linguagem de Programação I. Aula 08 Linguagem C: Arrays
Linguagem de Programação I Aula 08 Linguagem C: Arrays Da Aula Anterior Tipos de dados básicos em C Modificadores de tipo Declaração de Variáveis Operadores em C Estruturas de Controle Nesta Aula Arrays
Ponteiros. Introdução
Ponteiros Introdução Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma outra variável na
ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória
ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos
Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros
Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II Ponteiros Profa.: Simone Ceolin Slides (Prof.Tiago Rios da Rocha) Primeiro Semestre 2011 Sumário
INF 1620 P1-13/09/02 Questão 1 Nome:
INF 1620 P1-13/09/02 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$
Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi
Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Baseado nos slides do Prof. Guillermo Cámara-Chávez Aulas anteriores Vetores Matrizes Cadeias
TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO
TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO Ponteiros Definição Variável: área de memória que armazena dados de um certo tipo. Na memória, toda variável possui um endereço. Um Ponteiro é uma variável especial
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
Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os
Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto
Ponteiros e alocação dinâmica de memória Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Ponteiros Ponteiros e vetores Passagem por cópia e por referência Alocação
3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.6. Ponteiros 3.6.1. Introdução 3.6.2. Uso
Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio
Algoritmos e Estruturas de dados
Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores
Princípios de Desenvolvimento de Algoritmos MAC122
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória Motivação: Nossos programas pré-fixavam o número de variáveis a serem utilizadas. No caso
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
Exercícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,
Fundamentos de Programação
Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação
CMP Técnicas de Programação 2 a Lista de Exercícios - Passagem de parâmetros por referência e ponteiros Max Gontijo de Oliveira
CMP1048 - Técnicas de Programação 2 a Lista de Exercícios - Passagem de parâmetros por referência e ponteiros Max Gontijo de Oliveira 1. Considere um programa em C++ que tenha duas variáveis declaradas
Aula 26: Estruturas heterogêneas
Aula 26: Estruturas heterogêneas Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória Ponteiro Utilização
Aula 10 Comandos de Repetição
Aula 10 Comandos de Repetição Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br 1 Introdução Em certas situações é necessária
Introdução a Programação. Ponteiros e Passagem de Argumentos por Referência
Introdução a Programação Ponteiros e Passagem de Argumentos por Referência Tópicos da Aula Hoje aprenderemos a manipular endereços de memória ou ponteiros Variáveis e Endereços Conceito de Ponteiro Operadores
Introdução à linguagem C++
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas
Alocação Dinâmica. Introdução à Computação
Alocação Dinâmica Introdução à Computação Alocação de memória Uso da memória: uso de variáveis globais (e está>cas): O espaço reservado para uma variável global existe enquanto o programa es>ver sendo
Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
Programação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Programação de Computadores II. Cap. 5 Alocação Dinâmica
Programação de Computadores II Cap. 5 Alocação Dinâmica Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais
Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.
Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);
7. Vetores e Matrizes
7. Vetores e Matrizes Site: BAC004 at http://bac004.wikidot.com Source page: 7. Vetores e Matrizes at http://bac004.wikidot.com/vetoresmatrizes Fold Table of Contents 7.1 Vetores 7.1.1 Declaração de vetores
Alocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
prim = A ; prim = &A[0];
57 12 - MAIS SOBRE APONTADOR 12.1 - Ponteiros e arrays Em C, ponteiros e matrizes são tratados de maneira semelhante. 12.1.1 - Nome O nome é um ponteiro, ou seja, aponta (contém o endereço) para o primeiro
Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa
Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 4 Funções 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Funções em Linguagem C Parte II
Slides inicialmente preparados pelo Prof. Dr. Claudio Fabiano Motta Toledo Funções em Linguagem C Parte II Profa. Dra. Elisa Yumi Nakagawa 1. Semestre 2017 Sumário Introdução a Ponteiros Escopo de Variáveis
Aula 17: Ponteiros e Alocação Dinâmica em C
Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores
Curso de Programação C em Ambientes Linux Aula 04
Curso de Programação C em Ambientes Linux Aula 04 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo
Programação de Computadores II. Cap. 4 Funções
Programação de Computadores II Cap. 4 Funções Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:
Conhecendo a Linguagem de Programação C
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Conhecendo a Linguagem de Programação C DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Como
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURA DE REPETIÇÃO Prof. Dr. Daniel Caetano 2013-2 Objetivos Entender o que é uma estrutura de repetição Compreender como implementar as repetições Capacitar para
Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
Computadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Vetores e alocação dinâmica Vetores Alocação dinâmica Vetores locais e funções ATENÇÃO Esta apresentação
Estruturas Dinâmicas - Ponteiros Parte I
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Estruturas Dinâmicas - Ponteiros Parte I Prof. Vanderlei Bonato: vbonato@icmc.usp.br Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br
Tipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Introdução à Programação
Programação de Computadores Introdução à Programação Prof. Helton Fábio de Matos hfmatos@dcc.ufmg.br Agenda Algoritmo & Programa Variáveis Declaração de tipos Comando de entrada ou de leitura Comando de
Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros
Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função
INF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 2 Alocação Dinâmica 17/02/2014 (c) Dept. Informática - PUC-Rio 1 Tópicos Alocação dinâmica Vetores locais e funções 17/02/2014 (c) Dept. Informática - PUC-Rio 2 Alocação Dinâmica
Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
Linguagem C ponteiros
Linguagem C ponteiros IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C... Vetores Matrizes Funções Recursão Registros Aula
//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void
//conteúdo do arquivo Matriz.h class Matriz private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void setnumerodecolunas(int); int getnumerodelinhas(); int getnumerodecolunas();
Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0
P4 Programação II 2012.2 Departamento de Informática/PUC- Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente
Computação 2. Aula 7. Profª. Fabiany Ponteiros
Computação 2 Aula 7 Ponteiros Profª. Fabiany fabianyl@utfpr.edu.br O que são Ponteiros? Um ponteiro é uma variável que contém um endereço de memória. Este endereço é normalmente a posição de uma outra
Linguagem C: Introdução
Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais
- Mapa de memória de um processo - Ponteiros
1 MCTA028 Programação Estruturada - Mapa de memória de um processo - Ponteiros Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 2 Alocação de
ponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
Programação C/C++ Slide 5 Nielsen Castelo Damasceno
Programação C/C++ Slide 5 Nielsen Castelo Damasceno Programação estruturada Programação estruturada Programação estruturada Programação estruturada Programação estruturada vetores vetores vetores vetores
Módulo 7 Cadeias de Caracteres
Estruturas de Dados Módulo 7 Cadeias de Caracteres 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando
Revisão para Prova 2. Mirella M. Moro
Revisão para Prova 2 Mirella M. Moro 2 Roteiro 1. Estruturas de decisão 2. Estruturas de repetição 3. Funções 4. Vetores 5. Matrizes 6. Ponteiros 7. Alocação dinâmica 3 1. Estruturas decisão if (condição)
INF 1620 P3-02/07/02 Questão 1 Nome:
INF 1620 P3-02/07/02 Questão 1 Considere um arquivo texto que contém os nomes e as notas dos alunos de uma disciplina. As informações de cada aluno ocupam duas linhas do arquivo: a primeira linha contém
Ponteiros. Introdução e Alocação Dinâmica
Ponteiros Introdução e Alocação Dinâmica Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma
Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva
Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br Matrizes Uma matriz é uma variável capaz de armazenar vários dados de
ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa
ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 06 Prof. Thomás da Costa thomascosta@aedu.com Vamos ver o PEA : PEA Estrutura de Dados Antes de iniciar a aula, vamos mostrar o andamento do PEA. Vou mostrar as
CCO 016 / COM 110 Fundamentos de Programação
CCO 016 / COM 110 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 05 Entrada de dados Leia scanf Entrada dos dados Entrada de dados compreende a operação
INF 1620 P3-27/11/04 Questão 1 Nome:
INF 1620 P3-27/11/04 Questão 1 Considere um arquivo texto com as notas dos alunos de uma disciplina. Os dados de cada aluno são armazenados em duas linhas do arquivo: uma com o seu nome (cadeia com até
Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto
Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis
A sintaxe para se declarar uma variável do tipo ponteiro é dada por:
Pense duas vezes e faça uma vez. Provérbio Chinês. PONTEIROS Um ponteiro nada mais é que uma variável capaz de armazenar um número hexadecimal que corresponde a um endereço de memória de outra variável.
ALOCAÇÃO DINÂMICA DE MEMÓRIA
INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador
PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco
PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo
Linguagem C Ponteiros
Linguagem C Ponteiros Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior Janeiro de 2018 Unidade 14 Linguagem C - Ponteiros 1/24 Identificadores e Endereços
Aula 9 Agregado Heterogêneo Ponteiro. prof Leticia Winkler
Aula 9 Agregado Heterogêneo Ponteiro prof Leticia Winkler 1 Prof. Leticia Winkler 2 Agregado Heterogêneo Também conhecido como registro; É uma coleção de campos que podem ser referenciados pelo mesmo nome.
Decisões e Repetições
Decisões e Repetições! Decidir se uma seção de código deve ser executada ou não ou o número de vezes que uma repetição deve ser executada, depende do resultado de certas expressões => verdadeiro ou falso
Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto
Aula 28: Arquivos de texto
Aula 28: Arquivos de texto Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Baseado nos slides de Guillermo Cámara-Chávez Aulas anteriores Memória Ponteiro Utilização
Subprogramas. Prof. Carlos Lopes
Subprogramas Prof. Carlos Lopes Motivação Escreva um programa C capaz de calcular a combinação de n valores tomados p a p. Para realizar este cálculo, você deverá utilizar a seguinte fórmula: C n n! p
Aula 25: Alocação Dinâmica
Aula 25: Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas de memórias heterogêneas
Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória
Ponteiros - Parte I Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente
Introdução à Programação
Introdução à Programação Aula 08 Ponteiros Edirlei Soares de Lima Endereço de uma Variável Toda variável definida em um programa ocupa uma área de memória; A cada área de memória
Programação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 8 Matrizes como argumento de funções O nome de uma matriz (sem os colchetes) representa o endereço onde a matriz está armazenada. Ao passar o
LISTA DE EXERCÍCIOS 2
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO DE CIÊNCIA DA COMPUTAÇÃO PROGRAMAÇÃO DE COMPUTADORES 1. TIPOS COMPOSTOS DE DADOS LISTA DE EXERCÍCIOS 2 1. Considerando as declarações abaixo, responda dizendo
Linguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de
Ponteiros. prof. Fabrício Olivetti de França
Ponteiros prof. Fabrício Olivetti de França Anteriormente em prog. estrut. Vimos que as variáveis representando arrays em C armazenam apenas um apontador para o endereço de memória contendo os valores
Aula 06 Introdução à Programação Matrizes
Aula 06 Introdução à Programação Matrizes Prof. Gustavo Callou gustavo.callou@ufrpe.br gcallou@gmail.com Roteiro Matrizes Unidimensionais (Vetor) Bidimensionais String Exercícios Gustavo Callou DEINFO/UFRPE
Linguagem de Programação C++
O que acontecerá se um programa driver para a classe Matriz efetuasse a seguinte sequência de instruções: #include "Matriz.h" int main() char opcao; switch (opcao) case 1: } 201 } int l, c; cout
Métodos Computacionais. Vetores e Matrizes Dinâmicas
Métodos Computacionais Vetores e Matrizes Dinâmicas Vetores Um programa para o cálculo da média Média m n i= = 1 n x i Variância v n i= = 1 ( x i n m) 2 A forma mais simples de estruturar um conjunto de
Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná
em C Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Uma matriz é uma coleção de variáveis do mesmo tipo que é referenciada por um nome comum; Em C todas as matrizes consistem
Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon
Algoritmos e Programação Linguagem C Procedimentos e Funções Eliane Pozzebon Procedimentos e Funções Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento
DAS5102 Fundamentos da Estrutura da Informação
Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa
CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra
CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Revisão Tipos escalares primitivos Tipos constituídos de uma linguagem Ponteiros Alocação estática versus