Ponteiros e Tabelas. AED 2003/2004 p.1/37
|
|
- Ana Sofia Guterres Rosa
- 6 Há anos
- Visualizações:
Transcrição
1 AED 2003/2004 p.1/37 Ponteiros e Tabelas Endereços e ponteiros Ponteiros e argumentos de funções Ponteiros e tabelas Aritmética de endereços Ponteiros para caracteres Tabelas de ponteiros e ponteiros para ponteiros Tabelas multi-dimensionais Inicialização de tabelas de ponteiros Argumentos da linha de comandos Ponteiros para funções
2 AED 2003/2004 p.2/37 Ponteiros e Endereços Um ponteiro representa um endereço de memória O operador unário & aplicado a x representa o endereço de x #include <stdio.h> main () int y,x=3; int *px = &x; y = *px; *px = 0; printf("%d %d\n",x,y);
3 AED 2003/2004 p.3/37 Utilização de Ponteiros *px pode ser usado em vez de x A declaração int *xpto() significa que xpto() retorna um ponteiro para um inteiro A declaração void abcd(char *) significa que a função abcd aceita como argumento um ponteiro para caracteres A prioridade de & e * é superior à dos operadores aritméticos y = *px + 1 funciona como esperado ++*px incrementa o valor de x (*px)++ (os parênteses são necessários)
4 AED 2003/2004 p.4/37 Passagem de Parâmetros para Funções Em C, os parâmetros são passados por valor swap(int a, int b) int aux; aux = a; a = b; b = aux; Não funciona como pretendido
5 AED 2003/2004 p.5/37 Passagem de Parâmetros por Referência Passagem por referência consegue-se enviando os endereços swap(int *a, int *b) int aux; aux = *a; *a = *b; *b = aux; Chamada deverá ser swap(&x, &y)
6 /* getint: get next integer from input into *pn */ int getint(int *pn) int c, sign; while (isspace(c = getch())) ; /* skip white space */ if (!isdigit(c) && c!= EOF && c!= + && c!= - ) ungetch(c); /* it is not a number */ return 0; sign = (c == - )? -1 : 1; if (c == + c == - ) c = getch(); for (*pn = 0; isdigit(c); c = getch()) *pn = 10 * *pn + (c - 0 ); *pn *= sign; if (c!= EOF) ungetch(c); return c; AED 2003/2004 p.6/37 Leitura de um Inteiro #include <ctype.h> #include <stdio.h> int getch(void); void ungetch(int);
7 AED 2003/2004 p.7/37 Ponteiros e Tabelas Em C, existe uma relação entre ponteiros e tabelas int a[10]; int *pa; int x; int i = 3; pa = &a[0]; /* pa fica a apontar para a[0] */ x = *pa; /* Copia o conteúdo de a[0] para x */ x = *(pa+1); /* Copia para x o conteúdo de a[1] */ x = *(pa+i); /* Copia para x o conteúdo de a[i] */ strlen( Hello world ); /* string constant */ strlen(arr); /* char array[100] */ strlen(ptr); /* char *ptr */
8 AED 2003/2004 p.8/37 Exemplo /* strlen: return length of string s */ int strlen(char *s) int n; for (n = 0; *s!= \0 ; s++) n++; return n;
9 AED 2003/2004 p.9/37 Representação do Endereço Zero Ponteiro especial para representar zero. int *y; y = NULL;... if (!y) /* problem handling code */...
10 AED 2003/2004 p.10/37 Ponteiros e Tabelas Nos argumentos de uma função, a declaração int *p; declara o mesmo que int p[]; A declaração int p[100]; declara uma tabela com 100 inteiros; A declaração int *p não aloca qualquer espaço; A função malloc(int size) aloca um espaço de dimensão size A declaração int *p = malloc(100*sizeof(int)); é equivalente a int p[100]; O espaço pode ser libertado com a chamada free(p);
11 AED 2003/2004 p.11/37 Ponteiros para Caracteres Uma constante do tipo string "Hello world" é uma tabela de caracteres char *pmessage; pmessage = "Hello world"; /* Copia apenas os ponteiros */ As declarações char amessage[] = "Hello world"; char *pmessage = "Hello world"; São diferentes. Porquê?
12 AED 2003/2004 p.12/37 Ponteiros para Caracteres /* strcpy: copy t to s; array subscript version */ void strcpy(char *s, char *t) int i; i = 0; while ((s[i] = t[i])!= \0 ) i++; /* strcpy: copy t to s; pointer version */ void strcpy(char *s, char *t) while ((*s = *t)!= \0 ) s++; t++;
13 AED 2003/2004 p.13/37 Strcpy: Versão 3 /* strcpy: copy t to s; pointer version 2 */ void strcpy(char *s, char *t) while ((*s++ = *t++));
14 AED 2003/2004 p.14/37 Mais Funções para Strings /* strcmp: return <0 if s<t, 0 if s==t, >0 if s>t */ int strcmp(char *s, char *t) for ( ; *s == *t; s++, t++) if (*s == 0) return 0; return *s - *t;
15 AED 2003/2004 p.15/37 Aritmética de Endereços Operações válidas sobre ponteiros: Adição/subtração de inteiro: p1 + k; p1 - k; Subtração de ponteiros (numa mesma tabela): p1 - p2; Atribuição de 0 ou de ponteiro: p1 = 0; p1 = p2; Comparação com 0 ou com ponteiro: p1 == 0; p1 == p2;
16 AED 2003/2004 p.16/37 Tabelas de Ponteiros Exemplo: ordenação de cadeias de caracteres Usa-se mesmo algoritmo que para ordenação de inteiros Evita-se copiar strings usando tabelas de ponteiros int i; /* Representa uma tabela de ponteiros para caracteres */ char *lineptr[maxlines]; readlines(lineptr,maxlines); for (i=0; i< MAXLINES; i++) printf("linha %d é %s\n",i,lineptr[i]);
17 AED 2003/2004 p.17/37 Ler e Guardar Linhas /* readlines: lê linhas de entrada */ int readlines(char *lineptr[], int maxlines) int len, nlines; char *p, line[maxlen]; nlines = 0; while ((len = getline(line, MAXLEN)) > 0) if (nlines >= maxlines (p = malloc(len)) == NULL) return -1; else line[len-1] = \0 ; /* delete newline */ strcpy(p, line); lineptr[nlines++] = p; return nlines;
18 Ler, Ordenar e Imprimir linhas #include <stdio.h> #include <string.h> #define MAXLINES 5000 char *lineptr[maxlines]; /* Tabela de ponteiros */ int readlines(char *lineptr[], int nlines); void writelines(char *lineptr[], int nlines); void qsort(char *lineptr[], int left, int right); main() int nlines; if((nlines = readlines(lineptr, MAXLINES)) >= 0) qsort(lineptr, 0, nlines-1); writelines(lineptr, nlines); return 0; else printf("error: input too big to sort\n"); return 1; AED 2003/2004 p.18/37
19 AED 2003/2004 p.19/37 Quicksort para Strings void qsort(char *v[], int left, int right) int i, last; void swap(char *v[], int i, int j); if(left >= right) return; swap(v, left, (left + right)/2); last = left; for(i = left+1; i <= right; i++) if(strcmp(v[i], v[left]) < 0) swap(v, ++last, i); swap(v, left, last); qsort(v, left, last-1); qsort(v, last+1, right);
20 AED 2003/2004 p.20/37 Troca e Impressão de Linhas /* swap: swap v[i] and v[j] */ void swap(char *v[], int i, int j) char *tmp; tmp = v[i]; v[i] = v[j]; v[j] = tmp; void writelines(char *lineptr[], int nlines) int i; for(i=0; i<nlines; i++) printf("%s\n", lineptr[i]);
21 AED 2003/2004 p.21/37 Tabelas Multi-Dimensionais A declaração int x[nrows][ncols] declara uma matriz É equivalente a int *x[nrows] Elemento na linha i e coluna j é x[i][j] int x[nrows][ncols] aloca o espaço NROWS*NCOLS int *x[nrows] aloca o espaço para NROWS ponteiros Na prática, ponteiros para tabelas são mais usados Qualquer número de dimensões pode ser usado Primeira dimensão pode não ser especificada
22 AED 2003/2004 p.22/37 Inicialização de Tabelas de Ponteiros /* month_name: devolve nome do i-ésimo mês */ char *month_name(int n) /* Inicializa tabela de ponteiros */ static char *name[] = "Illegal month", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ; return (n < 1 n > 12)? name[0] : name[n];
23 AED 2003/2004 p.23/37 Argumentos da Linha de Comandos argv[0] é o nome do programa argv[i] é i-ésimo argumento Programa "echo" echo hello world gera hello world main(int argc, char *argv[]) int i; for(i=1; i<argc; i++) printf("%s ",argv[i]); printf("\n"); return 0;
24 AED 2003/2004 p.24/37 Ponteiros para Funções É possível declarar ponteiros para funções Uma função pode ser passada como argumento para outra /* Função qsort genérica */ void qsort(char *v[],int left, int right, int (*comp)(char *, char *);... if ((*comp)(v[i],v[j]))... /* Uso da função qsort */ char *lineptr[maxlines]; /* Tabela de ponteiros */ int strcmp(char *, char *);... qsort(lineptr, 0, nlines-1, strcmp); /*Função strcmp como argumento*/
25 AED 2003/2004 p.25/37 Multiplicação de Matrizes #include <stdlib.h> #define MATDIM 500 int mata[matdim][matdim], matb[matdim][matdim], matc[matdim][matdim]; void init() int i, j; for (i=0; i<matdim; ++i) for (j=0; j<matdim; ++j) mata[i][j] = i+j; matb[i][j] = i-j; void prod() /* função para multiplicar matrizes A e B */ (cont.)
26 AED 2003/2004 p.26/37 Multiplicação de Matrizes int sum() int i, j, sum = 0; for (i=0; i<matdim; ++i) for (j=0; j<matdim; ++j) sum += matc[i][j]; return sum; main() init(); prod(); printf("soma: %d\n", sum());
27 AED 2003/2004 p.27/37 Versão 1 void prod() int i, j, k; for (i=0; i<matdim; ++i) for (j=0; j<matdim; ++j) matc[i][j] = 0; for (k=0; k<matdim; ++k) matc[i][j] += mata[i][k] * matb[k][j];
28 void init() int i, j; for (i=0; i<matdim; ++i) for (j=0; j<matdim; ++j) mata[i][j] = i+j; matb[j][i] = i-j; void prod() int i, j, k; for (i=0; i<matdim; ++i) for (j=0; j<matdim; ++j) int *pc = &(matc[i][j]); int *pa = &(mata[i][0]); int *pb = &(matb[j][0]); *pc = 0; for (k=0; k<matdim; ++k) *pc += *(pa++) * *(pb++); AED 2003/2004 p.28/37 Versão 2 Utilização da Transposta
29 AED 2003/2004 p.29/37 Versão 3 Optimizar Acessos void prod() int i, j, k, t; int *pa, *pb; for (i=0; i<matdim; ++i) for (j=0; j<matdim; ++j) pa = mata[i]; pb = matb[j]; t = 0; for (k=0; k<matdim; ++k) t += *(pa++) * *(pb++); matc[i][j] = t;
30 AED 2003/2004 p.30/37 Versão 4 Comparar Ponteiros void prod() int i, j, k, t; int *pa, *pb, *pf; for (i=0; i<matdim; ++i) for (j=0; j<matdim; ++j) pa = &(mata[i][0]); pb = &(matb[j][0]); pf = pa + MATDIM; t = 0; for (; pa<pf; ) t += *(pa++) * *(pb++); matc[i][j] = t;
31 AED 2003/2004 p.31/37 Tempos de Execução Versão 1: 1.65s Versão 2: 0.61s Versão 3: 0.38s Versão 4: 0.35s
32 AED 2003/2004 p.32/37 Stack de Inteiros com Tabela Dinâmica Utilizar tabela dinâmica para implementar stack de valores inteiros com tamanho arbitrário
33 AED 2003/2004 p.33/37 istack.h extern void st_init(); extern void st_push(int value); extern int st_pop(); extern int st_is_empty();
34 istack.c Versão 1 #include <stdlib.h> #define MAXVALUE 5 static int *st_value; static int st_top; static int st_max; static void increase_stack_size() int i, *ptmp = st_value, *pa, *pb, *pf; st_max = 2 * st_max; st_value = (int*) malloc(st_max * sizeof(int)); for (pa=ptmp, pb=st_value, pf=st_value+st_top; pb<=pf; ) *(pb++) = *(pa++); free(ptmp); (cont.) AED 2003/2004 p.34/37
35 AED 2003/2004 p.35/37 istack.c Versão 1 void st_init() st_top = -1; st_max = MAXVALUE; st_value = (int*) malloc(st_max*sizeof(int)); void st_push(int value) if (st_top >= st_max-1) increase_stack_size(); st_value[++st_top] = value; int st_pop() if (!st_is_empty()) return st_value[st_top--]; return -1; int st_is_empty() return st_top == -1;
36 AED 2003/2004 p.36/37 istack.c Versão 2 #include <stdlib.h> #define MAXVALUE 5 static int *st_value; static int *st_sup; static int st_max; static void increase_stack_size() int i, *ptmp = st_value, *pa, *pb; int diff = st_sup - st_value; st_max = 2 * st_max; st_value = (int*) malloc(st_max * sizeof(int)); for (pa=ptmp, pb=st_value; pa<st_sup; ) *(pb++) = *(pa++); free(ptmp); st_sup = st_value + diff;
37 istack.c Versão 2 void st_init() st_max = MAXVALUE; st_value = (int*) malloc(st_max*sizeof(int)); st_sup = st_value; void st_push(int value) if (st_sup == st_value+st_max) increase_stack_size(); *(st_sup++) = value; int st_pop() if (!st_is_empty()) return *(--st_sup); return -1; int st_is_empty() return st_sup == st_value; AED 2003/2004 p.37/37
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 maisPonteiros 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 maisPonteiros 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 maisO 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 maisPonteiros & 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 maisEstruturas 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 maisEstruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo
Estruturas K&R: Capitulo 6 Estruturas Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo 2 1 Motivação Definir uma representação agregada na linguagem C para manipular
Leia maisprim = A ; prim = &A[0];
57 12 - MAIS SOBRE APONTADOR 12.1 - Ponteiros e arrays Em C, ponteiros e matrizes são tratados de maneira semelhante. 12.1.1 - Nome O nome é um ponteiro, ou seja, aponta (contém o endereço) para o primeiro
Leia maisEPs 1 e 2. EP2: veja. EP1: veja
1 EPs 1 e 2 EP2: veja http://www.ime.usp.br/~fabricio/ep2/ep2.pdf EP1: veja http://www.ime.usp.br/~yoshi/2006ii/mac122a/eps/ep1/wc.pdf http://www.ime.usp.br/~pf/cweb/ http://www.ime.usp.br/~pf/algoritmos/apend/util.html
Leia maisMó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 maisAula 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 maisProgramação Estruturada
Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros
Leia maisBásico: estrutura de programa, sintaxe Interface com linha de comando
Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências
Leia maisComputaçã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 maisPonteiros. um ponteiro é uma variável que contém o endereço um dado declaração: * indica que a variável é um ponteiro. Ex: tipo_dado *nome_ponteiro;
Ponteiros um ponteiro é uma variável que contém o endereço um dado declaração: * indica que a variável é um ponteiro Ex: tipo_dado *nome_ponteiro; /* compilador sabe que pi é ponteiro */ /* pi é um ponteiro
Leia maisEstruturas de Dados Aula 6: Cadeias de 28/03/2010
Estruturas de Dados Aula 6: Cadeias de Caracteres 28/03/2010 Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis
Leia maisEstruturas de Dados Aula 6: Cadeias de Caracteres
Estruturas de Dados Aula 6: Cadeias de Caracteres Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis Códigos
Leia maisLinguagem C (continuação)
Linguagem C (continuação) Funções, arrays e ponteiros Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João
Leia maisCaracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos
Caracteres Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos Exemplo: Tabela ASCII Alguns alfabetos precisam de maior
Leia maisStrings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.
Introdução Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos. 1 definições Uma string é uma sequência, um conjunto, ou uma cadeia de caracteres.
Leia maisCadeias de Caracteres (Strings)
INF1005: Programação 1 Cadeias de Caracteres (Strings) 02/05/10 (c) Paula Rodrigues 1 Tópicos Caracteres Cadeias de caracteres Leitura de caracteres e cadeias de caracteres Funções que manipulam cadeias
Leia maisINSTITUTO 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 - Strings! Copyright 2014 IFRN Agenda O tipo char Tabela ASCII Strings Leitura Biblioteca string.h A função main
Leia maisPonteiros - 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 maisAula 20 - Ponteiros. Prof. Laura Silva de Assis. Engenharia de Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca
Programação Aula 20 - Ponteiros 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 2 o semestre -
Leia maisListas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {
Listas (cont.) K&R: Capitulo 6 Lista Simplesmente Ligada Conjunto de nós head NULL Cada nó contém Informação útil Ponteiro para o próimo nó typedef struct node Item item; struct node *net; *link; Item
Leia maisINSTITUTO 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 - Ponteiros Copyright 2014 IFRN Agenda Memória Ponteiros Aritmética de ponteiros Arrays/strings Parâmetros de função
Leia maisPonteiros. 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 maisCaracteres e Cadeias de Caracteres
Caracteres e Cadeias de Caracteres INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 caracteres e cadeias de caracteres tópicos caracteres cadeias de caracteres (strings) vetor
Leia maisINSTITUTO 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 maisFUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara
Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos
Leia maisHello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento
Hello World Linguagem C printf("hello world!\n"); main é a função principal, a execução do programa começa por ela printf é uma função usada para enviar dados para o vídeo Palavras Reservadas auto double
Leia maisIntroduçã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 maisIntroduçã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 maisPonteiros. 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 maisFunções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná
em C Linguagem de Programação Estruturada I Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Sumário Funções: Conceitos; Forma Geral das funções; Regras de Escopo; Argumentos
Leia maisMais 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 maisPonteiros 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 maisEstruturas 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 maisALGORITMOS 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 maisLinguagem C. Ponteiros. Alex Vidigal Bastos.
Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro
Leia maisIntrodução a Programação. Ponteiros e Passagem de Argumentos por Referência
Introdução a Programação Ponteiros e Passagem de Argumentos por Referência Tópicos da Aula Hoje aprenderemos a manipular endereços de memória ou ponteiros Variáveis e Endereços Conceito de Ponteiro Operadores
Leia maisA 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 maisINF 1005 Programação I
INF 1005 Programação I Aula 12 Cadeia de Caracteres (Strings) Edirlei Soares de Lima Caracteres Até o momento nós somente utilizamos variáveis que armazenam números (int, float ou
Leia maisInstituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados
Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados Ano Lectivo de 2006/2007 2 o Semestre 1 o Teste A - 12 de Abril de 2007 Duração: 2h - O teste é sem consulta. - Para cada questão
Leia maisInstituto Superior Técnico Algoritmos e Estruturas de Dados
Instituto Superior Técnico Algoritmos e Estruturas de Dados Ano Lectivo de 2005/2006 2 o Semestre 1 o Teste A - 8 de Abril de 2006 Duração: 2h - O teste é sem consulta. - Para cada questão com escolha
Leia maisPonteiros. 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 maisPonteiros. 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 maisCurso 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 maisComputação Informática
Computação Informática Linguagem C Matrizes em C Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO 1 Estrutura de Dados Homogênea matrizes Uma matriz computacional é um váriável composta capaz de armazenar uma
Leia maisPonteiros 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 maisProgramaçã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 maisPonteiros 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 maisIntrodução à Programação em C Input / Output
Introdução à Programação em C Input / Output Resumo Aula Anterior Programa começa com função main() Sintaxe para definição de funções Definição de variáveis e atribuições Estruturas de controlo if-then
Leia maisESTRUTURAS COMPOSTAS
ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR Clique para adicionar texto Profa. Dra. Elisa Yumi Nakagawa 1. Semestre de 2017 Slides inicialmente preparados pela Profa. Rosely Sanches
Leia mais3. 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.5. Vetores 3.5.1. Vetores 3.5.2. Strings 3.5.3.
Leia maisAED 2002/2003 p.1/19. Tipos Abstractos. Necessidade de tipos de dados abstractos Objectos Pilhas FIFOs e filas
AED 2002/2003 p.1/19 Tipos Abstractos Necessidade de tipos de dados abstractos Objectos Pilhas FIFOs e filas AED 2002/2003 p.2/19 Tipos Abstractos de Dados (ADT) Mesmas estruturas (Pilhas, FIFOs, Listas)
Leia maisLinguagem de Programação C. Ponteiros
Cristiano Lehrer Conceitos Básicos (1/3) char ch; RAM 100 101 102... 5000 5001 5002... ch ch = 'A'; RAM ch A 100 101 102... 5000 5001 5002... char *; RAM ch A 100 101 102... 5000 5001 5002... = &ch; ch
Leia maisMétodos Computacionais. Strings (Vetor de Caracteres)
Métodos Computacionais Strings (Vetor de Caracteres) Em C, o tipo char : Caracteres é usado para representar caracteres pode armazenar valores inteiros (em 1 byte), representando assim, 256 valores distintos
Leia maisINSTITUTO 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 - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem
Leia maisPonteiros. Introdução e Alocação Dinâmica
Ponteiros Introdução e Alocação Dinâmica Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma
Leia maisFunções em Linguagem C Parte II
Slides inicialmente preparados pelo Prof. Dr. Claudio Fabiano Motta Toledo Funções em Linguagem C Parte II Profa. Dra. Elisa Yumi Nakagawa 1. Semestre 2017 Sumário Introdução a Ponteiros Escopo de Variáveis
Leia maisUniversidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Estruturas em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Estruturas em C 1 Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO DA AULA
Leia maisLinguagem 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 maisIntrodução à Programação em C (II)
Introdução à Programação em C (II) Resumo Streams de Texto Leitura e escrita de caracteres Caracteres como números inteiros Exemplos Cópia de Ficheiros Contagem de Caracteres Contagem de Linhas Contagem
Leia maisMatrizes 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 maisPonteiros 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 maisProgramação Estruturada Prof. Rodrigo Hausen Ponteiros e Passagem de Parâmetros
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Ponteiros e Passagem de Parâmetros 1 AULA PASSADA - ponteiros Uma declaração tal como: tipo *nome; Declara um ponteiro: referência
Leia maisVetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes
Strings Leitura e exibição Biblioteca string.h Operações com Strings Matrizes Definição de Acesso Operações com Matrizes Utilidade da String Facilidade de manipulação de um grande conjunto de caracteres
Leia maisIntrodução a Programação. Strings (Vetor de Caracteres)
Introdução a Programação Strings (Vetor de Caracteres) Tópicos da Aula Hoje aprenderemos a manipular vetores de caracteres (Strings) Caracteres em C Entrada/Saída de caracteres Funções que manipulam caracteres
Leia maisIntrodução a Computação
Introdução a Computação Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Programação Programa é um algoritmo escrito em uma linguagem de programação. Existem diversas linguagens
Leia maisUniversidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Material preparado pela profa Silvana Maria Affonso de Lara
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação FUNÇÕES EM C 1 Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO DA AULA Definição
Leia maisEstrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses
1 3 Estrutura de dados 2 Ponteiro Ponteiro 2 O ponteiro é um tipo de dado como int, char ou float. A diferença do ponteiro ponteiro guardará um endereço de memória. Por meio deste endereço pode-se acessar
Leia maisProgramação Imperativa. Lição n.º 17 Cadeias de carateres
Programação Imperativa Lição n.º 17 Cadeias de carateres Cadeias de carateres Conceitos básicos. Técnicas elementares. Arrays de cadeias de carateres. 11/20/16 Programação Imperativa 2 Cadeias de carateres
Leia maisAula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU
Aula 9 Oficina de Programação Strings Profa. Elaine Faria UFU - 2017 String Cadeia de caracteres (ou String) É uma seqüência de letras e símbolos, na qual os símbolos podem ser espaços em branco, dígitos
Leia maisProgramação de Computadores II
Programação de Computadores II 2017.2 Relembrando... Linguagem C Relembrando... Linguagem C Declaração básica de um programa Relembrando... Linguagem C Declaração básica de um programa include Relembrando...
Leia maisDeclarando e Utilizando Ponteiros. Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável;
Declarando e Utilizando Ponteiros Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável; É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar
Leia mais1 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 maisComputação eletrônica:
Computação eletrônica: Gurvan Huiban ghuiban@cin.ufpe.br Plano de aula 1 Vetores unidimensionais 2 Vetores multidimensionais 3 Vetores e funções 4 Cadeia de caracteres Vetores unidimensionais 1 Vetores
Leia maisBruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
Leia maisAlocaçã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 maisProgramação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Agregados de Dados Heterogêneos (structs) 1 AGREGADO HOMOGÊNEO Um agregado homogêneo de dados é um conjunto de dados que são necessariamente
Leia maisESTRUTURAS COMPOSTAS VETOR
ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR slides desenvolvidos pela Profa. Rosely Sanches 2 ESTRUTURAS COMPOSTAS Pode-se organizar tipos simples em tipos mais complexos formando as
Leia maisExercí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 maisDisciplina de Algoritmos e Programação
Disciplina de Algoritmos e Programação Último Conteúdo Estruturas de condição Estrutura condicional simples Utilização da estrutura de condição if com expressões lógicas simples Utilização do comando if
Leia maisApêndice B. Cadeias de Caracteres (Strings)
Apêndice B. Cadeias de Caracteres (Strings) Até agora, quando desejávamos indicar o número de elementos existentes em um vetor qualquer, utilizávamos uma variável inteira, digamos tam, para armazenar tal
Leia maisBruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
Leia maisIntroduçã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 maisExercícios sobre textos; Alocação dinâmica.
s sobre textos; Alocação dinâmica. David Deharbe 1 1 s Escreva uma sub-rotina, chamada strchr, que recebe um string s (= o endereço onde está guardado um texto), um caracter c e retorna o endereço da primeira
Leia maisLÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO
LÓGICA DE PROGRAMAÇÃO PROFª. M.Sc. JULIANA H Q BENACCHIO Primeiro programa em C #include int main() { int num1, num2, result; scanf("%d",&num1); scanf("%d",&num2); result = num1 + num2; printf("%d",
Leia maisRecuperação P1 de Estrutura de Dados
Recuperação P1 de Estrutura de Dados Sigla _IED001_ TURMA: A PERÍODO: MAT ( ) NOT ( ) DISCIPLINA:_Estrutura de Dados DATA: / / Argumente com fundamentando as questões da avaliação indicando porque a questão
Leia maisEstruturas. AED 2003/2004 p.1/65
AED 2003/2004 p.1/65 Estruturas Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Apontadores para Estruturas Estruturas Auto-Referenciadas Typedef Exemplos Tópicos: Unions e Bit-Fields
Leia maisPermite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.
222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao
Leia maisProgramação 11543: Engenharia Informática 6619: Tecnologias e Sistemas de Informação. Cap. 8 Endereçamento de Memória Endereçamento de Memória
Programação 11543: Engenharia Informática 6619: Tecnologias e Sistemas de Informação Cap. 8 Endereçamento de Memória Endereçamento de Memória Sumário: O que nós já sabemos sobre endereçadores (ou apontadores
Leia maisLinguagens 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 maisTipos 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 maisEstruturas de dados elementares
AED 2002/2003 p.1/31 Estruturas de dados elementares Tipos básicos Estruturas Tabelas Listas Amontoados AED 2002/2003 p.2/31 Tipos básicos Inteiros Reais Caracteres Ponteiros short a1; int a2; long a3;
Leia maisEstruturas 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 maisIntrodução. Ponteiros
Introdução O correto entendimento e uso de ponteiros é crítico para um programador C. Há três razões para isso: 1. Ponteiros fornecem os meios pelos quais as funções podem modificar seus argumentos; 2.
Leia mais