Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Tamanho: px
Começar a partir da página:

Download "Computadores Digitais 2. Prof. Rodrigo de Souza Couto"

Transcrição

1 Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista

2 Aula de Hoje Vetores e alocação dinâmica Vetores Alocação dinâmica Vetores locais e funções

3 ATENÇÃO Esta apresentação foi baseada nos seguinte trabalhos: Notas de aula do Prof. Marco Casanova da PUC-Rio Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus, 2004

4 Parte 1 Programação (linguagem C) Vetores e alocação dinâmica

5 Motivação /*Cálculo da média de n números reais */ #include <stdio.h> int main(void) { int i; int n; float med = 0.0f; scanf ( %d, &n); for (i = 0 ; i < n ; i++ ) { float v; scanf ( %f, &v); med = med + v; med = med / n; σ n i=0 med = printf ( Valor da media = %f \n, med); return 0; n xi E a variância? var = σ i=0 n (xi med) 2 n

6 Motivação /*Cálculo da média de n números reais */ #include <stdio.h> int main(void) { int i; int n; float med = 0.0f; scanf ( %d, &n); for (i = 0 ; i < n ; i++ ) { float v; scanf ( %f, &v); med = med + v; med = med / n; σ n i=0 med = printf ( Valor da media = %f \n, med); return 0; n xi É necessário armazenar os valores de entrada para posterior cálculo da variância! var = σ i=0 n (xi med) 2 n

7 Motivação /*Cálculo da média de n números reais */ #include <stdio.h> int main(void) { int i; int n; float med = 0.0f; scanf ( %d, &n); for (i = 0 ; i < n ; i++ ) { float v; scanf ( %f, &v); med = med + v; med = med / n; σ n i=0 med = printf ( Valor da media = %f \n, med); return 0; n xi Como armazenar n valores em uma variável em C? var = σ i=0 n (xi med) 2 n

8 Vetores Forma mais simples de estruturar um conjunto de dados Alocação estática de memória Exemplo: Vetor de inteiros com 5 elementos int v[5]; Espaço de memória contínuo e reservado que armazena 5 valores inteiros Tamanho: 20 bytes v xxxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxxx

9 Vetores Vetores também podem ser iniciados com conteúdo Exemplo: Vetor de inteiros com 5 elementos inicializados int v[5] = {5, 10, 15, 20, 25; ou int v[] = {5, 10, 15, 20, 25; v xxxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxxx

10 Acesso aos elementos de Vetores Indexação da variável do vetor Índice indicado por colchetes Primeiro índice é 0 Último índice é o tamanho do vetor menos 1 Exemplo Variável a recebe a primeira posição do vetor Segunda posição do vetor recebe 50 int v[5]; int a; a = v[0]; v[1] = 50; a = v[5]; ERRADO!! Invasão de memória! O comportamento do programa nesse caso é desconhecido!

11 Exemplo de Problema

12 /*Cálculo da variância de 10 números reais */ #include <stdio.h> #define NR_AMOSTRAS 10 int main(void) { float v[nr_amostras]; float med,var; int i; /*Leitura dos valores*/ for (i = 0 ; i < NR_AMOSTRAS ; i++ ) scanf ( %f, &v[i]); /*Calculo da media*/ med = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) med = med + v[i]; med = med / NR_AMOSTRAS; /*Calculo da variancia*/ var = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) var += (v[i]-med)*(v[i]-med); var = var / NR_AMOSTRAS; printf ( Media = %f Variancia %f \n, med, var); return 0;

13 /*Cálculo da variância de 10 números reais */ #include <stdio.h> #define NR_AMOSTRAS 10 int main(void) { float v[nr_amostras]; float med,var; int i; Boa prática: Tamanhos de /*Leitura dos valores*/ vetores definidos por for (i = 0 ; i < NR_AMOSTRAS ; i++ ) macros scanf ( %f, &v[i]); /*Calculo da media*/ med = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) med = med + v[i]; med = med / NR_AMOSTRAS; /*Calculo da variancia*/ var = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) var += (v[i]-med)*(v[i]-med); var = var / NR_AMOSTRAS; printf ( Media = %f Variancia %f \n, med, var); return 0;

14 /*Cálculo da variância de 10 números reais */ #include <stdio.h> #define NR_AMOSTRAS 10 int main(void) { float v[nr_amostras]; float med,var; int i; /*Leitura dos valores*/ for (i = 0 ; i < NR_AMOSTRAS ; i++ ) scanf recebe o endereço scanf ( %f, &v[i]); de cada elemento do vetor /*Calculo da media*/ med = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) med = med + v[i]; med = med / NR_AMOSTRAS; /*Calculo da variancia*/ var = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) var += (v[i]-med)*(v[i]-med); var = var / NR_AMOSTRAS; printf ( Media = %f Variancia %f \n, med, var); return 0;

15 /*Cálculo da variância de 10 números reais */ #include <stdio.h> #define NR_AMOSTRAS 10 int main(void) { float v[nr_amostras]; float med,var; int i; /*Leitura dos valores*/ for (i = 0 ; i < NR_AMOSTRAS ; i++ ) scanf ( %f, &v[i]); /*Calculo da media*/ med = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) med = med + v[i]; med = med / NR_AMOSTRAS; /*Calculo da variancia*/ var = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) var += (v[i]-med)*(v[i]-med); var = var / NR_AMOSTRAS; σ n i=0 med = printf ( Media = %f Variancia %f \n, med, var); return 0; n xi

16 /*Cálculo da variância de 10 números reais */ #include <stdio.h> #define NR_AMOSTRAS 10 int main(void) { float v[nr_amostras]; float med,var; int i; /*Leitura dos valores*/ for (i = 0 ; i < NR_AMOSTRAS ; i++ ) scanf ( %f, &v[i]); /*Calculo da media*/ med = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) med = med + v[i]; med = med / NR_AMOSTRAS; /*Calculo da variancia*/ var = 0.0f; for (i = 0 ; i < NR_AMOSTRAS ; i++ ) var += (v[i]-med)*(v[i]-med); var = var / NR_AMOSTRAS; var = σ i=0 n (xi med) 2 n printf ( Media = %f Variancia %f \n, med, var); return 0;

17 Vetores e Ponteiros Nome do vetor aponta para o endereço inicial C permite aritmética de ponteiros Exemplo int v[5]; v é um ponteiro para a primeira posição do vetor &v[i] equivale a (v+i) *(v+i) equivale a v[i] v+4 v+3 v+2 v+1 v xxxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxxx

18 Passagem de vetores para funções Passagem do endereço da primeira posição do vetor Nome do vetor Função deve ter parâmetro do tipo ponteiro para armazenar o endereço passar um vetor para uma função é equivalente a passar o endereço inicial do vetor Elementos do vetor não são copiados para a função Argumento copiado é apenas o endereço para o primeiro elemento Função pode modificar o vetor

19 Passagem de vetores para funções /*Cálculo da variância de 10 números reais */ #include <stdio.h> #define NR_AMOSTRAS 10 float media(int n, float *v); float variancia(int n, float *v, float m); int main(void) { float v[nr_amostras]; float med,var; int i; /*Leitura dos valores*/ for (i = 0 ; i < NR_AMOSTRAS ; i++ ) scanf ( %f, &v[i]); med = media(nr_amostras,v); var = variancia(nr_amostras,v,med); printf ( Media = %f Variancia %f \n, med, var); return 0;

20 Passagem de vetores para funções float media(int n, float *v){ int i; float s = 0.0f; for (i = 0 ; i < n ; i++ ) s += v[i]; return s/n; float variancia(int n, float *v, float m){ int i; float s = 0.0f; for (i = 0 ; i < n ; i++ ) s += (v[i]-m)*(v[i]-m); return s/n;

21 Passagem de vetores para funções #include <stdio.h> void incr_vetor(int n, int *v); int main(void) { int a[] = {1,3,5; incr_vetor(3,a); printf ( %d %d %d \n, a[0], a[1], a[2]); return 0; void incr_vetor(int n, int *v){ int i; for (i = 0 ; i < n ; i++ ) v[i]++; Qual é a saída desse programa?

22 Passagem de vetores para funções #include <stdio.h> void incr_vetor(int n, int *v); int main(void) { int a[] = {1,3,5; incr_vetor(3,a); printf ( %d %d %d \n, a[0], a[1], a[2]); return 0; void incr_vetor(int n, int *v){ int i; for (i = 0 ; i < n ; i++ ) v[i]++; 2 4 6

23 Uso da Memória Sistema operacional reserva área da memória para o programa Código do programa Variáveis globais e estáticas Memória alocada dinamicamente Pilha de execução Espaço para um vetor, como estudado anteriormente, é fixo É necessário conhecer de antemão o tamanho necessário Memória Livre Código do Programa Variáveis Globais e Estáticas Memória Alocada Dinamicamente Pilha de Execução (Variáveis Locais)

24 Alocação Dinâmica Espaço da memória é requisitado em tempo de execução Mais flexível que o uso de vetores estaticamente alocados Espaço permanece reservado até que seja explicitamente liberado Depois de liberado, espaço estará disponibilizado para outros usos e não pode mais ser acessado Espaço alocado e não liberado explicitamente será automaticamente liberado no final da execução

25 Alocação Dinâmica Funções da stdlib.h Função sizeof Retorna o número de bytes ocupados por um tipo Função malloc Recebe como parâmetro o número de bytes que deseja alocar Retorna um ponteiro genérico para o endereço inicial da áre de memória alocada, se tiver espaço livre Ponteiro tipo void, mas pode ser convertido automaticamente Retorna um endereço nulo, se não houver espaço livre Representado pelo símbolo NULL

26 Alocação Dinâmica Função free Libera espaço alocado

27 Alocação Dinâmica: Exemplo Exemplo Alocação dinâmica de um vetor de inteiros com 10 elementos malloc retorna o endereço da área alocada para armazenar valores inteiros Ponteiro de inteiro recebe endereço inicial do espaço alocado int *v; v = (int *) malloc(10*sizeof(int)); Número de bytes a serem alocados

28 Alocação Dinâmica: Exemplo Exemplo Alocação dinâmica de um vetor de inteiros com 10 elementos malloc retorna o endereço da área alocada para armazenar valores inteiros Ponteiro de inteiro recebe endereço inicial do espaço alocado int *v; v = (int *) malloc(10*sizeof(int)); Apesar de a linguagem C converter automaticamente, geralmente especifica-se explicitamente a conversão

29 Declaração int *v; Abre-se espaço na pilha para o ponteiro Comando v = (int *) malloc(10*sizeof(int)); Reserva espaço e atribui endereço inicial à variável v Código do Programa Código do Programa Variáveis Globais e Estáticas Memória Livre Variáveis Globais e Estáticas 40 Bytes Memória Livre v v 504

30 Alocação Dinâmica: Exemplo v armazena endereço inicial de uma área contínua da memória suficiente para armazenar 10 valores inteiros v pode ser tratado como vetor alocado estaticamente v aponta para o início da área alocada v[0] acessa o espaço do primeiro elemento v[1] acessa o espaço do segundo elemento... até v[9] int *v; v = (int *) malloc(10*sizeof(int)); v[2] = 1;

31 Alocação Dinâmica: Exemplo Tratamento de erro após chamada a malloc Imprime mensagem de erro Aborta o programa com a função exit Função da stdlib.h... int *v; v = (int *) malloc(10*sizeof(int)); if (v == NULL){ printf ( Memoria insuficiente\n ); exit(1); /* Retorna 1 para o S.O. */...

32 Alocação Dinâmica: Função free Recebe como parâmetro o ponteiro da memória a ser liberada A função free deve receber um endereço de memória que tenha sido alocado dinamicamente free(v);

33 /*Cálculo da variância de n números reais */ #include <stdio.h> #include <stdlib.h> float media(int n, float *v); float variancia(int n, float *v, float m); int main(void) { int i,n; float *v; float med, var; scanf ( %d, &n); v = (float *) malloc(n*sizeof(float)); if (v == NULL){ printf ( Memoria insuficiente\n ); return 1;/* Retorna 1 para o S.O. */ for (i = 0 ; i < n ; i++ ) scanf ( %f, &v[i]); med = media(n,v); var = variancia(n,v,med); Recebe do usuário o número de amostras printf ( Media = %f Variancia %f \n, med, var); free(v); return 0;

34 /*Cálculo da variância de n números reais */ #include <stdio.h> #include <stdlib.h> float media(int n, float *v); float variancia(int n, float *v, float m); int main(void) { Aloca e teste se alocação foi int i,n; realizada float *v; float med, var; scanf ( %d, &n); v = (float *) malloc(n*sizeof(float)); if (v == NULL){ printf ( Memoria insuficiente\n ); return 1;/* Retorna 1 para o S.O. */ for (i = 0 ; i < n ; i++ ) scanf ( %f, &v[i]); med = media(n,v); var = variancia(n,v,med); printf ( Media = %f Variancia %f \n, med, var); free(v); return 0;

35 /*Cálculo da variância de n números reais */ #include <stdio.h> #include <stdlib.h> float media(int n, float *v); float variancia(int n, float *v, float m); int main(void) { int i,n; float *v; float med, var; scanf ( %d, &n); v = (float *) malloc(n*sizeof(float)); if (v == NULL){ printf ( Memoria insuficiente\n ); return 1;/* Retorna 1 para o S.O. */ for (i = 0 ; i < n ; i++ ) scanf ( %f, &v[i]); med = media(n,v); var = variancia(n,v,med); Lê valores e calcula as medidas printf ( Media = %f Variancia %f \n, med, var); free(v); return 0;

36 /*Cálculo da variância de n números reais */ #include <stdio.h> #include <stdlib.h> float media(int n, float *v); float variancia(int n, float *v, float m); int main(void) { int i,n; float *v; float med, var; scanf ( %d, &n); v = (float *) malloc(n*sizeof(float)); if (v == NULL){ printf ( Memoria insuficiente\n ); return 1;/* Retorna 1 para o S.O. */ for (i = 0 ; i < n ; i++ ) scanf ( %f, &v[i]); med = media(n,v); var = variancia(n,v,med); printf ( Media = %f Variancia %f \n, med, var); free(v); Libera a memória return 0;

37 Vetores Locais e Funções Área de memória de uma variável local Só existe enquanto a função que declara estiver sendo executada Requer cuidado ao utilizar vetores locais dentro de funções Exemplo Produto vetorial de 2 vetores u e v em 3D, representados pelas três componentes x, y, z u v = {u y v z v y u z, u z v x v z u x, u x v y v x u y

38 Exemplo de produto vetorial float* prod_vetorial (float *u, float *v){ float p[3]; p[0] = u[1]*v[2] v[1]*u[2]; p[1] = u[2]*v[0] v[2]*u[0]; p[2] = u[0]*v[1] v[0]*u[1]; return p; Qual é o problema desse código?

39 Exemplo de produto vetorial float* prod_vetorial (float *u, float *v){ float p[3]; p[0] = u[1]*v[2] v[1]*u[2]; p[1] = u[2]*v[0] v[2]*u[0]; p[2] = u[0]*v[1] v[0]*u[1]; return p; Código do Programa Variáveis Globais e Estáticas Memória Alocada Dinamicamente A variável p é declarada localmente. Assim, área de memória deixa de existir quando a função terminar. Memória Livre Pilha de Execução (Variáveis Locais)

40 Exemplo de produto vetorial float* prod_vetorial (float *u, float *v){ float *p = (float*) malloc(3*sizeof(float)); p[0] = u[1]*v[2] v[1]*u[2]; p[1] = u[2]*v[0] v[2]*u[0]; p[2] = u[0]*v[1] v[0]*u[1]; return p; Uma solução: Alocação dinâmica! Área alocada dinamicamente não deixa de existir! Função retorna endereço dessa área alocada. Área alocada dinamicamente só deixa de existir após o uso da função free. Memória Livre Código do Programa Variáveis Globais e Estáticas Memória Alocada Dinamicamente Pilha de Execução (Variáveis Locais)

41 Exemplo de produto vetorial float* prod_vetorial (float *u, float *v, float *p){ p[0] = u[1]*v[2] v[1]*u[2]; p[1] = u[2]*v[0] v[2]*u[0]; p[2] = u[0]*v[1] v[0]*u[1]; return p; Outra solução (mais adequada): Função já recebe o vetor p e a função chamadora é responsável pela sua criação.

42 Alocação Estática versus Dinâmica Alocação estática de vetor É necessário saber de antemão a dimensão máxima do vetor Variável que representa o vetor armazena endereço ocupado pelo primeiro elemento do vetor Vetor declarado dentro do corpo de uma função não pode ser usado fora do corpo da função #define N 10 int v[n]

43 Alocação Estática versus Dinâmica Alocação dinâmica de vetor Dimensão do vetor pode ser definida em tempo de execução Variável do tipo ponteiro recebe o valor do endereço do primeiro elemento do vetor Área de memória ocupada pelo vetor permanece válida até que seja explicitamente liberada (função free) Vetor alocado dentro do corpo de uma função pode ser usado fora do corpo da função, enquanto estiver alocado int v;... v = (int*) malloc(n*sizeof(int))

44 Alocação Estática versus Função realloc Dinâmica Permite realocar um vetor preservando o conteúdo dos elementos, que permanecem válidos após a realocação Exemplo m representa a nova dimensão do vetor int v;... v = (int*) malloc(n*sizeof(int)) v = (int*) realloc(v,m*sizeof(int))

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

Módulo 5 Vetores e Alocação Dinâmica Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

Leia mais

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 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

Leia mais

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

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

Leia mais

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

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 04 Alocação Dinâmica Edirlei Soares de Lima Vetores - Declaração e Inicialização Declaração de um vetor: int meu_vetor[10]; Reserva um espaço de memória

Leia mais

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

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

5. Vetores e alocação dinâmica

5. Vetores e alocação dinâmica 5. Vetores e alocação dinâmica W. Celes e J. L. Rangel 5.1. Vetores A forma mais simples de estruturarmos um conjunto de dados é por meio de vetores. Como a maioria das linguagens de programação, C permite

Leia mais

Alocação Dinâmica em C

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

Leia mais

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento

Leia mais

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

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

Leia mais

Métodos Computacionais. Vetores e Matrizes Dinâmicas

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

Leia mais

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. 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

Leia mais

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger Alocação Estática e Dinâmica Prof. M.Sc. Mariella Berger http://www.inf.ufes.br/~mberger mberger@inf.ufes.br mariellaberger@gmail.com Alocação Estática Estratégia de alocação de memória na qual toda a

Leia mais

Programação de Computadores II. Cap. 5 Vetores

Programação de Computadores II. Cap. 5 Vetores Programação de Computadores II Cap. 5 Vetores Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

Leia mais

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

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 Referências Programação de Computadores II Cap. 6 Matrizes Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo 6 Matrizes Livro: Waldemar

Leia mais

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. 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,

Leia mais

Alocação Dinâmica. Introdução à Computação

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

Leia mais

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

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

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Matrizes Alocação estática versus dinâmica Vetores bidimensionais matrizes Matrizes dinâmicas ATENÇÃO

Leia mais

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

Estruturas de Dados. Módulo 6 Matrizes. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 6 Matrizes 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)

Leia mais

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

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais

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

1/34 GESTÃO DINÂMICA DE MEMÓRIA 1/34 GESTÃO DINÂMICA DE MEMÓRIA Memória Estática 2/34 Memória Estática Exemplo #include main() { int V[300], N; do{ printf ( N =? ); scanf ( %d, &N); while ((N < 0) (N > 300); for (i = 0; i

Leia mais

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Estruturas de Dados. Profa. Juliana Pinheiro Campos Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória

Leia mais

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 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

Leia mais

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

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

Leia mais

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

Programação Computacional Aula 16: Alocação Dinâmica de Memória Programação Computacional Aula 16: Alocação Dinâmica de Memória Profa. Madeleine Medrano madeleine@icte.uftm.edu.br Definição Sempre que escrevemos um programa, é preciso reservar espaço para as informações

Leia mais

Programação de Computadores II. Cap. 4 Funções

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.:

Leia mais

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

Estrutura de Dados. Aula 07 Alocação Dinâmica Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).

Leia mais

Exercícios Capítulos 5 e 6

Exercícios Capítulos 5 e 6 Estruturas de Dados Exercícios Capítulos e 6 6//6 (c) Dept. Informática - PUC-Rio Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus () Capítulo

Leia mais

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

Leia mais

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o

Leia mais

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Tipos Estruturados Tipo estrutura Definição de novos tipos Aninhamento de Estruturas Vetores de estruturas

Leia mais

SSC304 Introdução à Programação Para Engenharias. Alocação Dinâmica. GE4 Bio

SSC304 Introdução à Programação Para Engenharias. Alocação Dinâmica. GE4 Bio Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias GE4 Bio GE4Bio Grupo de Estudos em Sinais Biológicos Prof.Dr.

Leia mais

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. 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

Leia mais

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 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

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122

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

Leia mais

LINGUAGEM C: ALOCAÇÃO DINÂMICA

LINGUAGEM C: ALOCAÇÃO DINÂMICA LINGUAGEM C: ALOCAÇÃO DINÂMICA Prof. André Backes DEFINIÇÃO Sempre que escrevemos um programa, é preciso reservar espaço para as informações que serão processadas. Para isso utilizamos as variáveis Uma

Leia mais

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo Introdução à Ciência da Computação I Alocação Dinâmica Prof. Claudio Fabiano Motta Toledo Sumário Funções para alocação de memória Ponteiros para ponteiros 8/12/16 2 Funções para alocação de memória malloc(),

Leia mais

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

Alocação Dinâmica de Memória. Programação II Alocação Dinâmica de Memória Programação II Alocação dinâmica Uso da memória Uso de variáveis globais (e estáticas): Espaço reservado para uma variável global existe enquanto o programa estiver sendo executado.

Leia mais

Introdução à Programação

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

Leia mais

Reinaldo Gomes Alocação Dinâmica

Reinaldo Gomes Alocação Dinâmica Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente

Leia mais

Revisão: Ponteiros e Alocação Dinámica

Revisão: Ponteiros e Alocação Dinámica Instituto de C Revisão: Ponteiros e Alocação Dinámica Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Vetores Exemplos de manipulação

Leia mais

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

Ponteiros em C. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Ponteiros em C Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Operações sobre Ponteiros Exemplos Ponteiros e Funções Alocação Dinâmica em C UDESC - Rui J. Tramontin Jr.

Leia mais

Estruturas Dinâmicas - Ponteiros

Estruturas Dinâmicas - Ponteiros SSC0800 - ICC1 Teórica Introdução à Ciência da Computação I Estruturas Dinâmicas - Ponteiros Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br Sumário Ponteiros Ponteiros e Vetores Funções para alocação

Leia mais

Aula 24 Ponteiros, vetores e structs

Aula 24 Ponteiros, vetores e structs Programação Aula 24 Ponteiros, vetores e structs Prof. Laura Silva de Assis Engenharia de Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis

Leia mais

Algoritmos e Estruturas de dados

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

Leia mais

Ponteiros de Variáveis

Ponteiros de Variáveis Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II Slides cedidos por Karina Mochetti 2018.1 Exercício Aula Passada Faça uma função que recebe uma matriz n m representada por ponteiros e desaloque toda a memória usada por

Leia mais

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

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática

Leia mais

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

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

Leia mais

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 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)

Leia mais

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 - 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

Leia mais

Ponteiros e Alocação de Memória

Ponteiros e Alocação de Memória Algoritmos e Estrutura de Dados I Ponteiros e Alocação de Memória Prof. Paulo Henrique Pisani fevereiro/2019 Memória Podemos entender a memória como um grande vetor de bytes devidamente endereçados: 0x1051

Leia mais

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 4 Tipos Estruturados 10/23/09 (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Tipo estrutura Definição de novos tipos Aninhamento de estruturas Vetores de estruturas Vetores

Leia mais

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

Modulo 12: alocação dinâmica de memória PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro porque e como utilizar a alocação dinâmica funções: malloc (

Leia mais

Aula 25: Alocação Dinâmica

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

Leia mais

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

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

Leia mais

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 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

Leia mais

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

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta Algoritmos e Estruturas de Dados Prof. Marcelo Zorzan Profa. Melissa Zanatta Assuntos da Aula Alocação de Memória Alocação estática de memória Alocação dinâmica de memória Malloc, Calloc, Free, Realloc

Leia mais

Estruturas dinâmicas Ponteiros

Estruturas dinâmicas Ponteiros SSC0102 LABORATÓRIO DE INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO I Estruturas dinâmicas Ponteiros Prof. Claudio Fabiano Motta Toledo SUMÁRIO Ponteiros e Vetores Funções para alocação de memória PONTEIROS Declaração

Leia mais

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA 787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode

Leia mais

Estruturas de Dados. Módulo 2 Expressões. 9/8/2005 (c) Marco A. Casanova - PUC-Rio 1

Estruturas de Dados. Módulo 2 Expressões. 9/8/2005 (c) Marco A. Casanova - PUC-Rio 1 Estruturas de Dados Módulo 2 Expressões 9/8/25 (c) Marco A. Casanova - PUC-Rio Avisos O ciclo básico alterou o horário da P2: a P2 de ED será em 2/5, das 9h às h, e não das h às 3h, como no programa original

Leia mais

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Programação de Computadores II. Cap. 7 Cadeias de Caracteres Programação de Computadores II Cap. 7 Cadeias de Caracteres Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais

Leia mais

Módulo 8 Tipos Estruturados

Módulo 8 Tipos Estruturados Estruturas de Dados Módulo 8 Tipos Estruturados 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

Leia mais

Métodos Computacionais. Tipos Estruturados

Métodos Computacionais. Tipos Estruturados Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também

Leia mais

Ponteiros. Baseado nos slides do Prof. Mauro.

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

Leia mais

- Mapa de memória de um processo - Ponteiros

- 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

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II 2019.1 Endereço e Ponteiro Endereço Ao colocarmos o símbolo & temos o endereço daquela variável. Ponteiro Ao colocarmos o símbolo * temos o valor da variável armazenada num

Leia mais

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 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

Leia mais

Introdução a Programação de Jogos

Introdução a Programação de Jogos Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Gerenciamento de Memória Copyright 2014 IFRN Agenda Introdução Alocação dinâmica Funções malloc free calloc realloc

Leia mais

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2 Programação de Computadores II Cap. 7 Cadeias de Caracteres 1/2 Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 03 - 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

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 08 Vetor de Ponteiros Edirlei Soares de Lima Vetor de Cadeia de Caracteres Um vetor de cadeia de caracteres pode ser alocado de duas formas: Alocação

Leia mais

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

Matrizes. Estruturas de Dados Aula 5: Matrizes. Vetor declaração estática. Vetor declaração dinâmica Matrizes Estruturas de Dados Aula 5: Matrizes 22/03/2010 Conjuntos bidimensionais declarados estaticamente float mat[4][3]; Declaração de um vetor (estática ou dinâmica?) int v[10] int *v; v = (int*) malloc

Leia mais

Módulo 7 Cadeias de Caracteres

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

Leia mais

Programação. Cap. 12 Gestão de Memória Dinâmica

Programação. Cap. 12 Gestão de Memória Dinâmica Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 12 Gestão de Memória Dinâmica Sumário : Utilização de memória Alocação

Leia mais

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

Estruturas de Dados Aula 5: Matrizes 23/03/2011 Estruturas de Dados Aula 5: Matrizes 23/03/2011 Matrizes Conjuntos bidimensionais declarados estaticamente float mat[4][3]; Declaração de um vetor (estática ou dinâmica?) int v[10] int *v; v = (int*) malloc

Leia mais

ponteiros INF Programação I Prof. Roberto Azevedo

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

Leia mais

3. Linguagem de Programação C

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

Leia mais

Tipos Abstratos de Dados. Estrutura de Dados

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:

Leia mais

Estruturas de Dados Aula 5: Matrizes

Estruturas de Dados Aula 5: Matrizes Estruturas de Dados Aula 5: Matrizes Matrizes Conjuntos bidimensionais declarados estaticamente float mat[4][3]; Declaração de um vetor (estática ou dinâmica?) int v[10] int *v; v = (int*) malloc (n*sizeof(int));

Leia mais

Curso de Programação C em Ambientes Linux Aula 05

Curso de Programação C em Ambientes Linux Aula 05 Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática

Leia mais

O que é um apontador em C (type pointer in C)?

O que é um apontador em C (type pointer in C)? O que é um apontador em C (type pointer in C)? Um apontador é uma variável que contém um endereço de outra variável. int x = 10;//variável inteira iniciada com o valor 10 int *px = &x;//variável apontadora

Leia mais

Ponteiros. prof. Fabrício Olivetti de França

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

Leia mais

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1 INF1007: Programação 2 0 Revisão 06/08/2015 (c) Dept. de Informática - PUC-Rio 1 Tópicos Principais Variáveis e Constantes Operadores e Expressões Entrada e Saída Tomada de Decisão Construção com laços

Leia mais

Estrutura de dados 1. Ponteiros

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

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 07 Vetor de Ponteiros Edirlei Soares de Lima Vetor de Cadeia de Caracteres Vetores de cadeias de caracteres. Exemplo: char alunos[50][81]; Função para

Leia mais

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica.

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica. Alocação de Memória Todo programa precisa utilizar memória para ser executado. Quando um programa inicia sua execução, ele começa a solicitar memória ao sistema operacional, ou seja, faz a alocação de

Leia mais

Professor: Jó Ueyama Estagiário PAE: Heitor Freitas

Professor: Jó Ueyama Estagiário PAE: Heitor Freitas Alocação Dinâmica de Memória Professor: Jó Ueyama Estagiário PAE: Heitor Freitas Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo SSC 300 - Linguagem de Programação e Aplicações

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Programação Estruturada Prof. Rodrigo Hausen  Organização e Gerenciamento de Memória Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];

Leia mais

Laboratório de Programação II

Laboratório de Programação II Laboratório de Programação II Aula 08 Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br Na aula passada vimos... Na aula passada vimos... 07 Entradas e saídas padronizadas;

Leia mais

Laboratório de Introdução à Ciência da Computação I

Laboratório de Introdução à Ciência da Computação I Laboratório de Introdução à Ciência da Computação I Aula 12 Alocação dinâmica de memória Professor: Jó Ueyama Estagiária PAE: Aurea Soriano slide 1 Funções para alocação de memória malloc(), calloc(),

Leia mais

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 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

Leia mais

Ponteiros & tabelas (cont.) K&R: Capítulo 5

Ponteiros & tabelas (cont.) K&R: Capítulo 5 Ponteiros & tabelas (cont.) K&R: Capítulo 5 Sinopse da aula de hoje Pointers in a nutshell & alocação dinâmica de memória Estruturas, funções e apontadores Estruturas auto-referenciadas Exemplo de aplicação:

Leia mais