Vetores e matrizes. Introdução à programação de computadores Linguagem C: Vetores e matrizes 6. Vetores. Vetores: declaração

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

Download "Vetores e matrizes. Introdução à programação de computadores Linguagem C: Vetores e matrizes 6. Vetores. Vetores: declaração"

Transcrição

1 Vetores e matrizes Vetores e matrizes são tipos de dados derivados disponíveis em todas as linguagens São utilizados para armazenar conjuntos de informações de um mesmo tipo (conjunto homogêneo), por exemplo: medidas de temperaturas ambiente diárias, temperaturas[numdias]; Introdução à programação de computadores Linguagem C: Vetores e matrizes 6 Eduardo Garcia bidu@lncc.br Pós-graduação em modelagem computacional Laboratório Nacional de Computação Científica Petrópolis verão 2012 Seus elementos são variáveis de tipos primitivos ou derivados Seu processamento é realizado utilizando alguma estrutura de repetição que permite percorrer os seus elementos para realizar um operação comum a todos Vetores Vetores: declaração Vetores são estruturas const int NUMELEML=6; int lista[numeleml]; unidimensionais Seus elementos ocupam posições lista 0640 consecutivas na memória Na declaração e no acesso aos lista[0] elementos é utilizado o operador [] 3232 Na declaração, dentro dos lista[1] colchetes coloca-se o número de 3264 lista[2] elementos 3296 Use sempre uma variável para designar o número de elementos do vetor, ela será utilizada é vários locais do programa lista[3] lista[4] 3328 lista[5] 3360 No exemplo ao lado, lista é o nome da variável do tipo vetor de int com 6 elementos Cada elemento é uma variável do tipo primitivo int O acesso aos elementos é feito usando o nome da variável e um inteiro positivo dentro de colchetes (índice do elemento) O primeiro elemento do vetor possui índice 0 const int NUMELEML=6; int lista[numeleml]; lista 0640 lista[0] lista[1] 3232 lista[2] 3264 lista[3] 3296 lista[4] 3328 lista[5] 3360

2 Vetores: declaração Vetores int lista[]={6,5,4,3,2,1; int numeleml=sizeof(lista)/sizeof(int); Neste exemplo o vetor foi declarado e inicializado na declaração O vetor assume o tamanho do conjunto utilizado na inicialização sizeof: função que retorna o número de bytes de uma variável ou de um tipo lista 0640 lista[0] 6 lista[1] lista[2] lista[3] lista[4] lista[5] Vetores e matrizes São úteis para gerenciar conjuntos Operações comuns: incluir, excluir, procurar algum, ordenar segundo algum critério, procurar o maior, procurar o menor, separar um sub-grupo, unir dois grupos Dado um conjunto de números inteiros armazenados em um arquivo, ler cada um e dizer se é par ou impar é trivial. Porém se for necessário fazer uma lista dos pares e outra dos impares, o mais conveniente é colocá-los em uma estrutura de dados, por exemplo, um vetor, e processá-los posteriormente int lista[]={6,5,4,3,2,1; int numeleml=sizeof(lista)/sizeof(int); lista sem os colchetes contém o endereço do primeiro elemento do vetor, ou seja, lista[0] é lista[1] é lista[2] é lista[5] é a + a + a + a + variável na posição: 0*sizeof(int) variável na posição: 1*sizeof(int) variável na posição: 2*sizeof(int) variável na posição: 5*sizeof(int) lista 0640 lista[0] 6 lista[1] lista[2] lista[3] lista[4] lista[5] Vetores e matrizes: um exemplo Lista de inteiros 1. const int NUMELEML=50; 2. int lista[numeleml]; 3. print( lendo %d valores inteiros\n, NUMELEML); for (int i=0; i<numeleml; i++){ scanf( %d,&lista[i]); printf( valor lido: %d\n, lista[i]); printf( \n pares \n ); for (int i=0;<numeleml, i++){ if(lista[i]%2==0) printf( %d,,lista[i]); printf( \n impares \n ); 13. for (int i=0;i<numeleml, i++){ 1 if(lista[i]%2!=0) printf( %d,,lista[i]); 1

3 Alocação de memória Alocação de memória pode ser feita de duas maneiras: estática e dinâmica Na alocação estática a memória necessária ao vetor é conhecida no momento da compilação Na alocação dinâmica a memória necessária ao vetor é conhecida no momento da execução Na alocação dinâmica de memória é necessário usar uma função: malloc e um novo tipo derivado chamado de ponteiro que contém um endereço, e neste caso endereço do início da região de memória alocada dinamicamente Alocação de memória: estática 1. int const NUMELEMVB=5; 2. float vb[numelemvb]; 3. print( informe %d valores reais\n, NUMELEMVB); for (int i=0; i<numelemvb; i++){ scanf( %f,&vb[i]); printf( valor lido: %f\n,vb[i]); float somatotal=0.0; for (int i=numelemvb-1;i>=0, i--){ somatotal=somatotal+vb[i]; float media = somatotal/numelemvb; 13. printf( média aritmetica =%f\n,media); Alocação estática de memória: forma de alocação de memória em que o número de elementos do vetor é conhecido durante a compilação (linha 2) Alocação de memória: estática 1. int const NUMELEMVB=5; 2. float vb[numelemvb]; 3. print( informe %d valores reais\n, NUMELEMVB); for (int i=0; i<numelemvb; i++){ scanf( %f,&vb[i]); printf( valor lido: %f\n,vb[i]); float somatotal=0.0; for (int i=numelemvb-1;i>=0, i--){ somatotal=somatotal+vb[i]; float media = somatotal/numelemvb; 13. printf( média aritmetica =%f\n,media); Alocação estática de memória: forma de alocação de memória em que o número de elementos do vetor é conhecido durante a compilação (linha 2) Alocação de memória: dinâmica 1. int numelemvb; 2. float* vb; // ponteiro de memória do tipo float 3. printf( informe o num de val reais que serao lidos \n ) scanf( %d,&numelemvb); vb = (float*) malloc (numelemvb*sizeof(float)); if(vb==null) { printf( memória insuficiente\n ); exit(1); Na linha 2, está declarada uma variável do tipo ponteiro para float (float *) que conterá o endereço de memória do primeiro elemento do vetor (linha 5) malloc: função de alocação dinâmica de memória do C

4 Alocação de memória: dinâmica 1. int numelemvb; 2. float *vb; 3. printf( informe o numero de val que serao lidos \n ) scanf( %d,&numelemvb); vb = (float*) malloc (numelemvb*sizeof(float)); if(vb==null) { printf( memória insuficiente\n ); exit(1); malloc: recebe como argumento o número total de bytes necessário para o armazenamento do vetor malloc: retorna um endereço de memória onde é o inicio da memória alocada. O tipo do endereço de retorno é void* e é necessário fazer uma conversão para o tipo desejado Linha 6 : verifica se a alocação foi realizada com sucesso Existe muita semelhança entre vetores alocados estaticamente e dinamicamente: Os elementos ocupam posições adjacentes na memória A forma de acessar os elementos: nome[indice] As semelhanças são os aspectos mais explorados, porém não devemos esquecer as diferenças, elas são em maior número O tamanho de vetor com alocação estática tem que ser definido antes da compilação. O tamanho tem que ser válido para todas as situações: problemas grandes e pequenos Alocação de memória: dinâmica for (int i=0; i<numelemvb; i++){ 11. scanf( %f,&vb[i]) 12. printf( valor lido: %f\n,vb[i]); float somatotal=0.0; 1 for (int i=numelemvb-1;i>=0, i--){ 1 somatotal=somatotal+vb[i]; 1 1 float media = somatotal/numelemvb; 1 printf( média aritmetica =%f\n,media); 20. free(vb); Não há diferença na maneira de utilização de vetores alocados estaticamente Linha 20: ao final da utilização do vetor deve-se fazer a desalocação da memória usando o comando free(vb) As áreas de memória alocadas dinamicamente são mais livres: são chamadas de unnamed. Não estão intimamente ligadas ao ponteiro usado para acessá-las Se o ponteiro muda de valor, passa a conter outro endereço de memória (linha 8), a área anteriormente acessível por ele (linha 4) fica perdida. O que acontece com o comando: free(vb) 1. int numelemvb; 2. float *vb, vc[]={3.2,0,5,1.4,2.7; 3. scanf( %d,&numelemvb); vb = (float*) malloc (numelemvb*sizeof(float)); if(vb==null) {// conteudo nulo para ponteiros printf( memória insuficiente\n );exit(1); vb=vc; // vb aponta para outra area de memória vc

5 A região de memória ocupada pelos vetores alocados estática ou automaticamente é chamada pilha (stack) A região de memória ocupada pelos vetores alocados dinamicamente usando malloc é chamada de heap, local com menos restrições (pág. 65) Uma região de memória alocada usando malloc só é desalocada usando o comando free Para o vetor alocado estaticamente a função sizeof retorna o numero de bytes considerando todos os elementos, e pode ser utilizado no cálculo do número de elementos do vetor vc como na linha 3 do código abaixo: 20 bytes / 4 bytes = 5 elementos Para o ponteiro vb o sizeof retorna número de bytes para esta variável escalar: 4 bytes 1. int numelemvb, numelemvc; 2. float *vb, vc[]={3.2,0,5,1.4,2.7; 3. const int numelemvc = sizeof(vc)/sizeof(float); scanf( %d,&numelemvb); vb = (float*) malloc (numelemvb*sizeof(float)); Vetores estáticos criados dentro de funções são automaticamente desalocados ao final da execução da função Não há definição absoluta, que valha para todas situações, do que seja melhor: estático ou dinâmico Um ponteiro pode conter o endereço de um vetor e operar com seus elementos. O inverso não é permitido Linha 1: declara vetor vb alocado estaticamente Linha 1: declara vc, um ponteiro para int Linha 4: ponteiro vc recebe endereço do início do vetor vb Linha 6: acesso aos elementos do vetor vb através do ponteiro vc; 1. int vb[]={5,3,4,1,8,9,2,6, *vc; 2. const int numelemvb = sizeof(vb)/sizeof(int); 3. long soma=0; vc = vb; for (int i=0; i< numelemvb; i++){ soma = soma + vc[i];

6 Operações comuns: procurar o maior elemento Operações comuns: procurar elemento 1. int vb[]={5,3,1,4,8,9,2,6, procurado=8; 2. int numelemvb=sizeof(vb)/sizeof(int); 3. printf( lista dos elementos \n ); for (int i=0; i<numelemvb; i++){ for (int i=0; i<numelemvb; i++){ if(vb[i]==procurado) { 11. printf( achei %d na posicao:%d\n,procurado,i); float vb[]={1,3.2,3,1.4,5,6,2.7,8; 2. const int numelemvb=sizeof(vb)/sizeof(float); 3. float maior = vb[0]; Guarda o for (int i=1; i<numelemvb; i++){ valor do if(vb[i]>maior) maior = vb[i]; maior printf( maior valor = %f \n, maior); 1. float vb[]={1,3.2,3,1.4,5,6,2.7,8; 2. const int numelemvb=sizeof(vb)/sizeof(float); Guarda o 3. int indmaior = 0; índice do for (int i=1; i<numelemvb; i++){ maior if(vb[i]>vb[indmaior]) indmaior = i; printf( maior valor=%f, posicao:%d\n, vb[indmaior], indmaior); Operações comuns: procurar elemento Este exemplo fica mais fácil com inteiros e caractere, pois comparar a igualdade de dois reais é uma operação delicada Operações comuns: procurar elemento 1. char nome[]="coisinha bonitinha do pai"; 2. char proc = i ; 3. printf("%s\n", nome); for (int i=0; nome[i]!='\0'; i++){ if(nome[i]==proc){ printf("achei, em %d \n", i); // fim do if // fim do for Linha 4: o controle do fim da repetição é através do caractere \0, que sinaliza o fim da string Pode ser feito comparando o contador com o número de caracteres da string obtido pela função strlen:linha 4 strlen: considera o \0 na contagem do número de elementos da string 1. char nome[]="coisinha bonitinha do pai"; 2. char proc = i ; 3. printf("%s\n", nome); for (int i=0; i<strlen(nome); i++){ if(nome[i]==proc){ printf("achei, em %d \n", i); // fim do if // fim do for

7 Operações comuns: procurar sub-string 1. char nome[]="coisinha bonitinha do pai"; 2. char proc[] ="inha"; 3. int j,k; printf("%s\n", nome); for (int i=0; nome[i]!='\0'; i++){ j = 0; k = i; while( nome[k]==proc[j] && proc[j]!= \0 ){ j++; k++; // fim do while if(j==strlen(proc)){ 11. printf("achei, em %d, %s\n", i, &nome[i]); 12. // fim do if 13. // fim do for Operações comuns: ordenar elementos 1. float vb[]={3.2,0,5,1.4,2.7, tmp; 2. int numelemvb=sizeof(vb)/sizeof(int), indmenor; 3. printf( elementos em posicoes originais \n ); for (int i=0; i<numelemvb; i++) for (int i=0; i<numelemvb; i++){ indmenor = i; for (int j=i; j<numelemvb; j++){ if(vb[j]<vb[indmenor]) indmenor = j; // fim do for j 11. tmp = vb[i]; 12. vb[i] = vb[indmenor]; 13. vb[indmenor] = tmp; 1 // fim do for i 1 printf( elementos ordenados \n ); 1 for (int i=0; i<numelemvb; i++) 1 Operações comuns: inverter a ordem 1. float vb[]={3.2,0,5,1.4,2.7, tmp; 2. int numelemvb=sizeof(vb)/sizeof(int); 3. printf( elementos em posicoes originais \n ); for (int i=0; i<numelemvb; i++){ // fim do for for (int i=0; i<numelemvb/2; i++){ tmp = vb[i]; vb[i] = vb[numelemvb-i-1]; vb[numelemvb-i-1] = tmp; 11. // fim do for 12. printf( elementos em posicoes invertidas \n ); 13. for (int i=0; i<numelemvb; i++) 1 Matrizes Matrizes são estruturas para armazenar conjuntos bidimensionais ou multidimensionais Matrizes bidimensionais possuem representação espacial divididas em linhas e colunas, por exemplo: conjunto das medidas de temperaturas ambiente diárias em 5 horários distintos: temperaturas[numdias][nummedicoes]; Elementos acessíveis através do nome da variável mais índices indicando linha e coluna Podem ser alocadas estática ou dinamicamente Não é trivial a sua utilização

8 Declaração: alocação estática No exemplo ao lado ocorre uma declaração de matriz estática bidimensional com 2 linhas e 3 colunas Foram alocados 6 posições contíguas de memória para variáveis do tipo float Note a ordem de armazenamento: primeiro os elementos da primeira linha, depois os elementos da segunda linha. É dito então que a linguagem C faz o armazenamento por linhas Declaração: alocação estática int const NLMB=2,NCMB=3; float mb[nlmb][ncmb]; mb mb[0][0] 6400 mb[0][1] 6432 mb[0][2] 6464 mb[1][0] 6496 mb[1][1] 6528 mb[1][2] 6560 Declaração: ponteiro e alocação dinâmica Alocação dinâmica de matrizes não é trivial Linha2: declara-se um ponteiro para ponteiro Linha 5: Aloca-se dinamicamente um vetor de ponteiros Linhas 6 e 7: Para cada elemento deste vetor associa-se um vetor de elementos do tipo float 1. integer:: nlmb, ncmb; 2. float **mb; 3. printf( informe o num. de linhas e colunas\n ); scanf( %d %d,&nlmb,&ncmb); mb = (float**) malloc (nlmb*sizeof(float*)); for (int i = 0; i < nlmb; i++) mb[i] = (float*) malloc (ncmb*sizeof(float)); De maneira análoga, no exemplo ao lado ocorre uma declaração de matriz estática bidimensional com 2 linhas e 3 colunas em Fortran Note a ordem de armazenamento: primeiro os elementos da primeira coluna, depois os elementos da segunda coluna. É dito então que Fortran faz o armazenamento por colunas Os índices começam por 1 integer:: NLMB=2,NCMB=3 real :: mb(nlmb,ncmb); 0768 mb(1,1) 6400 mb(2,1) 6432 mb(1,2) 6464 mb(2,2) 6496 mb(1,3) 6528 mb(2,3) 6560 Declaração: ponteiro e alocação dinâmica Na alocação dinâmica de matriz os elementos em uma linha estão contíguos na memória O último de uma linha não é contíguo ao primeiro da linha seguinte experimento de alocacao de memoria de matrizes num. linhas: 2, num. colunas:3 enderecos de elementos da matriz mb, dinamica , , , , , , enderecos de elementos da matriz ma, estatica , , , , , ,

9 Declaração: ponteiro e alocação dinâmica #include <stdio.h> #include <stdlib.h> int main() { int nlmb=2, ncmb=3; float **mb; printf("exp. de alocacao de memoria de matrizes \n"); mb = (float**) malloc (nlmb*sizeof(float*)); for (int i = 0; i < nlmb; i++){ mb[i] = (float*) malloc (ncmb*sizeof(float)); // fim do for i // dinamica e automatica, na pilha, area continua float ma[nlmb][ncmb]; Operações comuns: multiplicação de matriz por vetor int main() { const int nlma=3, ncma=3; printf("experimento com matrizes \n"); float ma[nlma][ncma]={{3.,0.,0.,{0.,3.,0.,{0.,0.,3.; float va[]={1.5,3.5,2.5; int nva = sizeof(va)/sizeof(float); float vb[nva]; for (int i = 0; i < nlma; i++){ vb[i] = 0.0; // fundamental inicializar elementos de vb for (int j = 0; j < ncma; j++){ vb[i]= vb[i]+ ma[i][j]*va[j]; printf(" elementos do vetor vb = ma * va\n"); for (int i = 0; i < nva; i++){ printf("%f ", vb[i]); printf(" \n"); // fim do main Declaração: ponteiro e alocação dinâmica printf("num. linhas:%d, num. colunas:%d\n",nlmb,ncmb); printf(" enderecos de elem. da matriz mb, dinamica\n"); for (int i = 0; i < nlmb; i++){ for (int j = 0; j < ncmb; j++){ printf(" %d, \n", &mb[i][j]); // fim do for j // fim do for i printf(" enderecos de elem. da matriz ma, estatica\n"); for (int i = 0; i < nlmb; i++){ for (int j = 0; j < ncmb; j++){ printf(" %d, \n", &ma[i][j]); // fim do for j // fim do for i Funções Funções são trechos de programas acessíveis através de um nome e que se comunicam com outros trechos de programas por 3 formas distintas: lista de argumentos, valor de retorno e variáveis globais. A chamada de função também causa um desvio no fluxo do programa Funções recursivas implementam repetições sem utilização de estruturas de repetição Veremos mais adiante como declarar, definir e utilizá-las

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

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

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

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

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

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

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 Vetores e alocação dinâmica Vetores Alocação dinâmica Vetores locais e funções ATENÇÃO Esta apresentação

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

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

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

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

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

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

Aula 06 Introdução à Programação Matrizes

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

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

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

Programação: Vetores

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

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

Aula 8 - Matrizes e Strings

Aula 8 - Matrizes e Strings Programação I Aula 8 - e Prof. Laura Silva de Assis Engenharia da Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis 2n o semestre - 2015 1

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

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

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

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

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

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

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

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

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

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

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

LINGUAGEM C: ARRAY: VETORES E MATRIZES

LINGUAGEM C: ARRAY: VETORES E MATRIZES LINGUAGEM C: ARRAY: VETORES E MATRIZES Prof. André Backes POR QUE USAR ARRAY? As variáveis declaradas até agora são capazes de armazenar um único valor por vez. Sempre que tentamos armazenar um novo valor

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

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

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

Programação Procedimental GBC /1 Prof. Renan Cattelan Prática 10. Estruturas e alocação dinâmica

Programação Procedimental GBC /1 Prof. Renan Cattelan  Prática 10. Estruturas e alocação dinâmica Programação Procedimental GBC014 2015/1 Prof. Renan Cattelan www.facom.ufu.br/~renan Prática 10 Estruturas e alocação dinâmica Exercício Crie um programa para armazenar uma agenda de contatos pessoais

Leia mais

11a. Aula Ponteiros e Vetores

11a. Aula Ponteiros e Vetores 11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer

Leia mais

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná

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

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

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

Linguagem C Ponteiros

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

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

Introdução à Computação

Introdução à Computação Introdução à Computação Linguagem C Professor: André de Carvalho Aula de hoje Introdução Tipos compostos Tipo enumeração Conclusão Tipos compostos A Linguagem C permite criar tipos de dados definíveis

Leia mais

Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C

Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C 2015/1 Programação Básica de Computadores (INF 09325) Archimedes Detoni www.inf.ufes.br/~archimedesdetoni archimedesdetoni@inf.ufes.br

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

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

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

Ponteiros e Tabelas. K&R: Capítulo 5 Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes

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 e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

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

- 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

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

Linguagem C: Ponteiros - Alocação Dinâmica Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Ponteiros Alocação Dinâmica de Memória 2 3 4 Organização Ponteiros Alocação

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

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

Leia mais

Vetores. e o programa deverá ler os valores separadamente:

Vetores. e o programa deverá ler os valores separadamente: Vetores Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos (do mesmo tipo). Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos.

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

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

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 7 Vetores ou Matrizes Unidimensionais Matrices Multidimencionais Susana M Iglesias 1 INTRODUÇÃO Um vetor geralmente é associado a uma lista ou conjunto de elementos similares,

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

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

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.

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

Ponteiros. Introdução

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

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

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

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

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

ALOCAÇÃO DINÂMICA DE MEMORIA Lista 10. A linguagem C/C++ possui recursos para alocação dinâmica de memoria. ALOCAÇÃO DINÂMICA DE MEMORIA Lista 10 A linguagem C/C++ possui recursos para alocação dinâmica de memoria. As funções que trabalham com alocação de memoria se encontram na biblioteca void *calloc(int

Leia mais

MC-102 Aula 19 Ponteiros II

MC-102 Aula 19 Ponteiros II MC-102 Aula 19 Ponteiros II Instituto de Computação Unicamp 20 de Outubro de 2016 Roteiro 1 Ponteiros e Alocação Dinâmica 2 Exemplo de Alocação Dinâmica de Vetores 3 Erros Comuns ao Usar Alocação Dinâmica

Leia mais

Ponteiros. Ponteiros. Ponteiros. Ponteiros. Ponteiros. Introdução a Programação. Profa. Roseli Romero

Ponteiros. Ponteiros. Ponteiros. Ponteiros. Ponteiros. Introdução a Programação. Profa. Roseli Romero ICMC USP 1.semestre/2009 Introdução a Programação e vetores em C Profa. Roseli Romero um é uma variável que contém o endereço um dado declaração: * indica que a variável é um tipo_dado *nome_; int x; int

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

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

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

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.2. Estrutura de Programas e Representação

Leia mais

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

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

Leia mais

Vetores são estruturas indexadas utilizadas para armazenar dados de um mesmo tipo: int, char, float ou double. Oexemploaseguirédeumvetordeinteiros:

Vetores são estruturas indexadas utilizadas para armazenar dados de um mesmo tipo: int, char, float ou double. Oexemploaseguirédeumvetordeinteiros: 18 Vetores Ronaldo F. Hashimoto e Carlos H. Morimoto Nessa aula vamos introduzir o tipo vetor. Aofinaldessaaulavocêdeverásaber: Descrever o que são vetores na linguagem C. Declarar vetores. Como acessar

Leia mais

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Introdução à Computação II 5952011 1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 1.1. Revisão

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

MCTA028 Programação Estruturada Aula 09: - Ponteiros (parte 2)

MCTA028 Programação Estruturada Aula 09: - Ponteiros (parte 2) MCTA028 Programação Estruturada Aula 09: - Ponteiros (parte 2) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 3Q-2017 1 Sobre funções ( uma ideia ) 2 Qual função é mais eficiente? 3 1995 2015 4 Qual

Leia mais

Plano de Aula Segunda-feira Tarde 13/10/2014 Objetivo: Introduzir o conceito de alocação dinâmica na memória e registros / structs.

Plano de Aula Segunda-feira Tarde 13/10/2014 Objetivo: Introduzir o conceito de alocação dinâmica na memória e registros / structs. Instituto Federal de Santa Catarina - Câmpus Chapecó Ensino Médio Integrado em Informática - Módulo IV Unidade Curricular: Programação Estruturada Professora: Lara Popov Zambiasi Bazzi Oberderfer Plano

Leia mais

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013 Estrutura de Dados Cadeia de Caracteres Roberto Araujo Ago/2013 Estrutura de Dados O que é uma estrutura de dados? É um arranjo pré-definido de um ou mais pedaços de dados Ex: Ex: Os carateres 'u', 'v',

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

Programação Imperativa. Lição n.º 16 A pilha de execução

Programação Imperativa. Lição n.º 16 A pilha de execução Programação Imperativa Lição n.º 16 A pilha de execução A pilha de execução Registos de execução. Arrays locais. Caso da alocação dinâmica. Segmento de dados. 11/17/16 Programação Imperativa 2 A pilha

Leia mais

MCTA028 Programação Estruturada Aula 09: - Ponteiros (parte 2)

MCTA028 Programação Estruturada Aula 09: - Ponteiros (parte 2) MCTA028 Programação Estruturada Aula 09: - Ponteiros (parte 2) Prof. João Henrique Kleinschmidt Material elaborado pelo prof. Jesús P. Mena-Chalco 3Q-2018 Sobre funções ( uma ideia ) Qual função é mais

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Linguagem C Aula de hoje Introdução Vetores (revisão) Relacionamento entre vetores e ponteiros Professor: André de Carvalho Definição: coleção de valores de dados individuais com

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

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

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos

Leia mais

Arranjos. David Déharbe

Arranjos. David Déharbe Arranjos. David Déharbe 1 1 Roteiro da aula Exercícios motivadores para arranjos; Motivação; Definição; Arranjos em C; Arranjos e ponteiros; Exemplos. 2 2 Exercícios. Escreva um programa que lê cinco números

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: variáveis compostas homogêneas: Arrays Strings

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: variáveis compostas homogêneas: Arrays Strings Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: variáveis compostas homogêneas: Arrays Strings Prof. Renato Pimentel 1 Relembrando: Comando while em C Exemplo: criar um programa

Leia mais

Algoritmos e Programação

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;

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

Linguagem de Programação I. Aula 08 Linguagem C: Arrays

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

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

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

Leia mais

Mais sobre Ponteiros em C

Mais sobre Ponteiros em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Mais sobre Ponteiros em C Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO

Leia mais