Estruturas. AED 2003/2004 p.1/65

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

Download "Estruturas. AED 2003/2004 p.1/65"

Transcrição

1 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

2 Introdução As estruturas permitem definir estruturas de dados sofisticadas, as quais possibilitam a agregação de diferentes tipos de declarações Exemplo: struct point int x; int y; É possível declararar variáveis do tipo estrutura struct point x, z; É possível manipular os campos de variáveis do tipo estrutura x.x = 1; x.y = 2; z.x = 10; z.y = 20; AED 2003/2004 p.2/65

3 AED 2003/2004 p.3/65 Operações sobre Estruturas Declaração: struct point int x; int y; Introduz um novo tipo de dados Definição: struct point z; Define a variável z como uma estrutura do tipo struct point Inicialização: tipo nome = valores struct point z = 100, 200 ;

4 Operações sobre Estruturas Manipulação: nome-estrutura.membro z.x = 125; z.y = 500; Estruturas podem incluir estruturas: struct rect struct point a, b; ; struct rect p;... p.a.x = 25; p.b.y = 32; Operações válidas: cópia, atribuição como entidade, acesso ao endereço ou acesso aos seus membros Cópia e atribuição incluem passagem de parâmetros para funções e retorno de valores de funções Estruturas não podem ser comparadas AED 2003/2004 p.4/65

5 AED 2003/2004 p.5/65 Estruturas e Funções Funções podem retornar estruturas: struct point makepoint(int x, int y) struct point temp; temp.x = x; temp.y = y; return temp; Função retorna cópia da estrutura temp

6 AED 2003/2004 p.6/65 Estruturas e Funções Passagem de estruturas como parâmetros é feita por valor: struct point addpoint(struct point p1, struct point p2) p1.x += p2.x; p1.y += p2.y; return p1; Chamada addpoint(pa, pb) não altera valores da estrutura pa

7 AED 2003/2004 p.7/65 Estruturas, Funções e Ponteiros Passagem de estruturas grandes como parâmetros é ineficiente Utilizam-se normalmente ponteiros para estruturas: struct point origin, *pp; pp = &origin; printf( Origem: (%d, %d)\n, (*pp).x, (*pp).y); Notação (*pointer).struct-member pode ser substituída por pointer->struct-member struct point origin, *pp; pp = &origin; printf( Origem: (%d, %d)\n, pp->x, pp->y);

8 AED 2003/2004 p.8/65 Vectores de Estruturas Permitem representar conjuntos de dados agregados: struct key char *word; /* palavra-chave */ int count; /* # ocorrências de palavra-chave */ keytab[nkeys]; /* Vector de estruturas */ ou, struct key char *word; /* palavra-chave */ int count; /* # ocorrências de palavra-chave */ ; struct key keytab[nkeys]; /* Vector de estruturas */

9 AED 2003/2004 p.9/65 Vectores de Estruturas Inicialização: struct key char *word; /* palavra-chave */ int count; /* # ocorrências de palavra-chave */ keytab[] = auto, 0, break, 0, case, 0,... ; Chavetas interiores desnecessárias na inicialização de estruturas compostas apenas por variáveis simples ou strings

10 AED 2003/2004 p.10/65 Contador de Palavras Chave Escrever um programa em C que conta o número de ocorrências de cada palavra-chave da linguagem C #include <stdio.h> #include <ctype.h> #include <string.h> struct key char *word; /* palavra-chave */ int count; /* # ocorrências de palavra-chave */ keytab[] = "auto", 0, "break", 0,... ; #define NKEYS 24 #define MAXWORD 100 int getword(char *, int); int binsearch(char *, struct key *, int);

11 AED 2003/2004 p.11/65 Contador de Palavras Chave main() /* count "C" keywords */ int n; char word[maxword]; while (getword(word, MAXWORD)!= EOF) if (isalpha(word[0])) if((n = binsearch(word, keytab, NKEYS)) >= 0) keytab[n].count++; for (n=0; n < NKEYS; n++) if (keytab[n].count > 0) printf("%4d %s\n", keytab[n].count, keytab[n].word);

12 AED 2003/2004 p.12/65 Contador de Palavras Chave /* find word in tab[0]...tab[n-1] */ int binsearch(char *word, struct key tab[], int n) int low, high, mid, cond; low = 0; high = n - 1; while (low <= high) mid = (low+high) / 2; if((cond = strcmp(word, tab[mid].word)) < 0) high = mid - 1; else if (cond > 0) low = mid + 1; else return mid; return -1;

13 Contador de Palavras Chave int getword(char *word, int lim) /* get next word from input */ int c; char *w = word; while (isspace(c = getc(stdin))) ; if (c!= EOF) *w++ = c; if (!isalpha(c)) *w = \0 ; return c; for (; --lim > 0; w++) if (!isalnum(*w = getc(stdin))) ungetc(*w, stdin); break; *w = \0 ; return word[0]; AED 2003/2004 p.13/65

14 Apontadores para Estruturas Escrever um programa em C que conta o número de ocorrências de cada palavra-chave da linguagem C, utilizando apontadores para estruturas #include <stdio.h> #include <ctype.h> #include <string.h> struct key char *word; /* palavra-chave */ int count; /* # ocorrências de palavra-chave */ keytab[] = "auto", 0, "break", 0,... ; #define NKEYS 24 #define MAXWORD 100 int getword(char *, int); struct key *binsearch(char *, struct key *, int); AED 2003/2004 p.14/65

15 AED 2003/2004 p.15/65 Apontadores para Estruturas main() /* count "C" keywords */ char word[maxword]; struct key *p; while (getword(word, MAXWORD)!= EOF) if (isalpha(word[0])) if((p = binsearch(word, keytab, NKEYS))!= NULL) p->count++; for (p=keytab; p < keytab+nkeys; p++) if (p->count > 0) printf("%4d %s\n", p->count, p->word);

16 AED 2003/2004 p.16/65 Apontadores para Estruturas /* find word in tab[0]...tab[n-1] */ struct key *binsearch(char *word, struct key tab[], int n) int cond; struct key *low = &tab[0]; struct key *high = &tab[n]; /* valid address */ struct key *mid; while (low < high) mid = low + (high-low) / 2; /* cannot add pointers, just subtract */ if((cond = strcmp(word, mid->word)) < 0) high = mid; else if (cond > 0) low = mid + 1; else return mid; return NULL;

17 Apontadores para Estruturas int getword(char *word, int lim) /* get next word from input */ int c; char *w = word; while (isspace(c = getc(stdin))) ; if (c!= EOF) *w++ = c; if (!isalpha(c)) *w = \0 ; return c; for (; --lim > 0; w++) if (!isalnum(*w = getc(stdin))) ungetc(*w, stdin); break; *w = \0 ; return word[0]; AED 2003/2004 p.17/65

18 AED 2003/2004 p.18/65 Operações Válidas com Ponteiros Recapitular: Atribuições entre ponteiros do mesmo tipo Somar inteiro a ponteiro Subtrair inteiro a ponteiro Subtrair dois ponteiros (num mesmo vector) Comparar dois ponteiros (num mesmo vector) Atribuição e comparação com 0

19 AED 2003/2004 p.19/65 Estruturas Auto-Referenciadas As estruturas auto-referenciadas permitem criar estruturas de dados dinâmicas, utilizando ponteiros: listas (simplesmente e duplamente ligadas), árvores, tabelas de dispersão, etc. Um exemplo: Implementar pilha de valores inteiros utilizando ponteiros e estruturas

20 AED 2003/2004 p.20/65 istack.h extern void init(); extern int is_empty(); extern void push(int value); extern int pop();

21 AED 2003/2004 p.21/65 istack.c #include <stdio.h> #include <stdlib.h> struct iitem int value; struct iitem *next; ; static struct iitem *top = NULL; static struct iitem *alloc_item() return (struct iitem *) malloc(sizeof(struct iitem)); void init() top = NULL; int is_empty() return top == NULL;

22 AED 2003/2004 p.22/65 istack.c void push(int value) struct iitem *nitem = alloc_item(); nitem->value = value; nitem->next = top; top = nitem; int pop() if (!is_empty()) int rvalue = top->value; struct iitem *ptmp = top; top = top->next; free(ptmp); return rvalue; return -1;

23 AED 2003/2004 p.23/65 Typedef O typedef permite associar um nome com um tipo de dados já existente typedef int Inteiro; main() Inteiro myint;... É usual utilizar typedef na manipulação de estruturas auto-referenciadas struct iitem int value; struct iitem *prev; struct iitem *next; ; typedef struct iitem IntItem; typedef IntItem* IntItemPtr;

24 AED 2003/2004 p.24/65 iqueue2.h extern int init(); extern int is_empty(); extern void push(int value); extern int pop(); extern void unshift(int value); extern int shift();

25 AED 2003/2004 p.25/65 iqueue2.c #include <stdio.h> #include <stdlib.h> struct iitem int value; struct iitem *prev; struct iitem *next; ; typedef struct iitem IntItem; typedef IntItem* IntItemPtr; static IntItemPtr topptr = NULL; static IntItemPtr botptr = NULL; static IntItemPtr alloc_item() return (struct iitem *) malloc(sizeof(struct iitem)); void init() topptr = NULL; botptr = NULL; int is_empty() return topptr == NULL;

26 AED 2003/2004 p.26/65 iqueue2.c void push(int value) IntItemPtr nitem = alloc_item(); nitem->value = value; nitem->prev = topptr; nitem->next = NULL; if (topptr) topptr->next = nitem; else botptr = nitem; topptr = nitem;

27 AED 2003/2004 p.27/65 iqueue2.c int pop() int rvalue; IntItemPtr ptmp; if (is_empty()) return -1; rvalue = topptr->value; ptmp = topptr; topptr = topptr->prev; if (topptr) topptr->next = NULL; else botptr = NULL; free(ptmp); return rvalue;

28 AED 2003/2004 p.28/65 iqueue2.c void unshift(int value) IntItemPtr nitem = alloc_item(); nitem->value = value; nitem->next = botptr; nitem->prev = NULL; if (botptr) botptr->prev = nitem; else topptr = nitem; botptr = nitem;

29 AED 2003/2004 p.29/65 iqueue2.c int shift() int rvalue; IntItemPtr; if (is_empty()) return -1; rvalue = botptr->value; ptmp = botptr; botptr = botptr->next; if (botptr) botptr->prev = NULL; else topptr = NULL; free(ptmp); return rvalue;

30 AED 2003/2004 p.30/65 Tabelas de Dispersão I Permitem manter conjuntos de palavras Operações: lookup(char*) insert(char*) delete(char*) Exemplo simples, para ilustrar utilizações de listas com tabelas

31 AED 2003/2004 p.31/65 Tabela de Símbolos symtab.h extern void init(); extern char *lookup(char *word); extern char *insert(char *word); extern char *delete(char *word);

32 AED 2003/2004 p.32/65 Tabela de Símbolos symtab.c #include <string.h> #include <stdlib.h> #define TABDIM 101 struct witem char *word; struct witem *next; ; typedef struct witem WORDITEM; typedef WORDITEM* WORDITEMPTR; static WORDITEMPTR *symtab = NULL;

33 AED 2003/2004 p.33/65 symtab.c #define HBASE 31 static unsigned hashvalue(char *word) unsigned hval = 0; for(hval=0; *word;) hval = *(word++) + HBASE * hval; return hval % TABDIM; void init() WORDITEMPTR *px; symtab = (WORDITEMPTR*) malloc(tabdim*sizeof(worditemptr)); for(px=symtab; px<symtab+tabdim; px++) *px = NULL;

34 AED 2003/2004 p.34/65 symtab.c char *lookup(char *word) int whval = hashvalue(word), comp; WORDITEMPTR px = symtab[whval]; for (; px && (comp = strcmp(px->word, word)) < 0; px = px->next) ; if (px &&!comp) return px->word; return NULL;

35 AED 2003/2004 p.35/65 symtab.c char *insert(char *word) int whval = hashvalue(word), comp; char *nword = NULL; WORDITEMPTR px = symtab[whval], py = px, pw; for (; px && (comp = strcmp(px->word, word)) < 0; py = px, px = px->next) ; if (!px comp) nword = (char*) malloc(strlen(word)+1); strcpy(nword, word); pw = (WORDITEMPTR) malloc(sizeof(worditem)); pw->word = nword; pw->next = px; if (px == py) symtab[whval] = pw; else py->next = pw; return nword;

36 AED 2003/2004 p.36/65 symtab.c char *delete(char *word) int whval = hashvalue(word), comp; char *rword = NULL; WORDITEMPTR px = symtab[whval], py = px; for (; px && (comp = strcmp(px->word, word)) < 0; py = px, px = px->next) ; if (px &&!comp) rword = px->word; if (px == py) symtab[whval] = px->next; else py->next = px->next; free(px); return rword;

37 AED 2003/2004 p.37/65 ADTs Tipos de Dados Abstractos Permitem ocultar detalhes de implementação das estruturas de dados Permitem reutilizar código ADTs de primeira classe: Permitem utilizar réplicas do mesmo ADT

38 AED 2003/2004 p.38/65 item.h #ifndef ItemDef #define ItemDef typedef int Item; #endif

39 AED 2003/2004 p.39/65 queue.h #ifndef QueueDef #define QueueDef #include "item.h" #define T Queue_T typedef struct T *T; extern T Queue_new(); extern int Queue_empty(T queue); extern void Queue_queue(T queue, Item item); extern Item Queue_dequeue(T queue); #undef T #endif

40 struct Queue_T QElem put; QElem get; ; AED 2003/2004 p.40/65 queue.c #include <stdlib.h> #include <assert.h> #define NEW(p) ((p) = malloc((long)sizeof *(p))) #define DEL(p) free(p); #include "item.h" #include "queue.h" typedef struct QElem Item item; struct QElem *next; * QElem;

41 AED 2003/2004 p.41/65 queue.c (Cont.) Queue_T Queue_new() Queue_T newq; NEW(newq); return newq; void Queue_queue(Queue_T queue, Item item) QElem nitem; NEW(nitem); nitem->item = item; nitem->next = NULL; if (queue->put) queue->put->next = nitem; else queue->get = nitem; queue->put = nitem;

42 queue.c (Cont.) Item Queue_dequeue(Queue_T queue) Item ritem; QElem ptmp; assert(!queue_empty(queue)); ritem = queue->get->item; ptmp = queue->get; queue->get = queue->get->next; if (!queue->get) queue->put = NULL; DEL(ptmp); return ritem; int Queue_empty(Queue_T queue) return queue->get == NULL; AED 2003/2004 p.42/65

43 Exemplos Adicionais AED 2003/2004 p.43/65

44 AED 2003/2004 p.44/65 Estruturas Auto-Referenciadas Um exemplo: Implementar fila de valores inteiros utilizando ponteiros e estruturas

45 AED 2003/2004 p.45/65 iqueue.h extern void init(); extern int is_empty(); extern void queue(int value); extern int dequeue();

46 AED 2003/2004 p.46/65 iqueue.c #include <stdio.h> #include <stdlib.h> struct iitem int value; struct iitem *next; ; static struct iitem *putptr = NULL; static struct iitem *getptr = NULL; static struct iitem *alloc_item() return (struct iitem *) malloc(sizeof(struct iitem)); void init() putptr = NULL; getptr = NULL; int is_empty() return getptr == NULL;

47 void queue(int value) struct iitem *nitem = alloc_item(); nitem->value = value; nitem->next = NULL; if (putptr) putptr->next = nitem; else getptr = nitem; putptr = nitem; int dequeue() int rvalue; struct iitem *ptmp; if (is_empty()) return -1; rvalue = getptr->value; ptmp = getptr; getptr = getptr->next; if (!getptr) putptr = NULL; free(ptmp); return rvalue; AED 2003/2004 p.47/65 iqueue.c

48 AED 2003/2004 p.48/65 Estruturas Auto-Referenciadas Um exemplo: Implementar fila generalizada de valores inteiros utilizando ponteiros e estruturas Operações: push(int), pop(), unshift(int), shift()

49 AED 2003/2004 p.49/65 iqueue2.h extern int init(); extern int is_empty(); extern void push(int value); extern int pop(); extern void unshift(int value); extern int shift();

50 AED 2003/2004 p.50/65 iqueue2.c #include <stdio.h> #include <stdlib.h> struct iitem int value; struct iitem *prev; struct iitem *next; ; static struct iitem *topptr = NULL; static struct iitem *botptr = NULL; static struct iitem *alloc_item() return (struct iitem *) malloc(sizeof(struct iitem)); void init() topptr = NULL; botptr = NULL; int is_empty() return topptr == NULL;

51 AED 2003/2004 p.51/65 iqueue2.c void push(int value) struct iitem *nitem = alloc_item(); nitem->value = value; if (topptr) topptr->next = nitem; else botptr = nitem; nitem->prev = topptr; nitem->next = NULL; topptr = nitem;

52 AED 2003/2004 p.52/65 iqueue2.c int pop() int rvalue; struct iitem *ptmp; if (is_empty()) return -1; rvalue = topptr->value; ptmp = topptr; topptr = topptr->prev; if (topptr) topptr->next = NULL; else botptr = NULL; free(ptmp); return rvalue;

53 AED 2003/2004 p.53/65 iqueue2.c void unshift(int value) struct iitem *nitem = alloc_item(); nitem->value = value; if (botptr) botptr->prev = nitem; else topptr = nitem; nitem->next = botptr; nitem->prev = NULL; botptr = nitem;

54 AED 2003/2004 p.54/65 iqueue2.c int shift() int rvalue; struct iitem *ptmp; if (is_empty()) return -1; rvalue = botptr->value; ptmp = botptr; botptr = botptr->next; if (botptr) botptr->prev = NULL; else topptr = NULL; free(ptmp); return rvalue;

55 AED 2003/2004 p.55/65 Tabelas Dinâmicas II Um exemplo: Implementar fila generalizada de valores inteiros utilizando uma tabela dinâmica Operações: push(int), pop(), unshift(int), shift()

56 AED 2003/2004 p.56/65 iqueue.c #include <stdio.h> #include <stdlib.h> #define INITQUEUESIZE 5 static int *iqueue; static int *queue_top; static int queue_dim; static int *topptr = NULL; static int *botptr = NULL;

57 AED 2003/2004 p.57/65 iqueue.c static int is_full() return topptr == botptr-1 (botptr == iqueue && topptr == queue_top-1); void init() iqueue = (int*) malloc(initqueuesize * sizeof(int)); topptr = iqueue; botptr = iqueue; queue_dim = INITQUEUESIZE; queue_top = iqueue+queue_dim; int is_empty() return topptr == botptr;

58 AED 2003/2004 p.58/65 iqueue.c static void increase_queue_size() int *pa, *pb; int *ptmp = iqueue, *ptmptop = queue_top; int prev_dim = queue_dim; queue_dim = 2 * queue_dim; iqueue = (int*) malloc(queue_dim * sizeof(int)); queue_top = iqueue + queue_dim; for (pa=botptr, pb=iqueue; pa!= topptr; ) *(pb++) = *(pa++); if (pa == ptmptop) pa = ptmp; botptr = iqueue; topptr = iqueue + prev_dim - 1; free(ptmp);

59 AED 2003/2004 p.59/65 iqueue.c void push(int value) if (is_full()) increase_queue_size(); *(topptr++) = value; if (topptr == queue_top) topptr = iqueue; int pop() int rvalue; if (is_empty()) return -1; if (topptr == iqueue) topptr = queue_top; rvalue = *(--topptr); return rvalue;

60 AED 2003/2004 p.60/65 iqueue.c void unshift(int value) if (is_full()) increase_queue_size(); if (botptr == iqueue) botptr = queue_top; *(--botptr) = value; int shift() int rvalue; if (is_empty()) return -1; rvalue = *(botptr++); if (botptr == queue_top) botptr = iqueue; return rvalue;

61 AED 2003/2004 p.61/65 Exemplos Adicionais Lista de inteiros simplesmente ligada: Inserção (ordenada) de elemento Remoção de elemento #include <stdlib.h> struct iitem int value; struct iitem *next; ; typedef struct iitem IntItem; typedef IntItem* IntItemPtr; static IntItemPtr first = NULL; static IntItemPtr alloc_item() return (IntItemPtr) malloc(sizeof(intitem)); void init() first = NULL;

62 AED 2003/2004 p.62/65 Inserção Ordenada de Elemento int insert(int value) IntItemPtr px, py, nitem; for (px = first, py = px; px; py = px, px = px->next) if (px->value > value) break; else if (px->value == value) return 0; /* no duplicates */ nitem = alloc_item(); nitem->value = value; nitem->next = px; if (px == first) first = nitem; else py->next = nitem; return 1;

63 AED 2003/2004 p.63/65 Remoção de Elemento int delete(int value) IntItemPtr px, py; for (px = first, py = px; px; py = px, px = px->next) if (px->value == value) if (px == first) first = first->next; else py->next = px->next; free(px); return 1; return 0;

64 AED 2003/2004 p.64/65 Escrever Lista de Inteiros void print_list() IntItemPtr px; printf("[ "); for (px = first; px; px = px->next) printf("%d ", px->value); printf("]\n");

65 AED 2003/2004 p.65/65 Utilização de Filas Múltiplas Permite utilizar número arbitrário de filas Filas trabalham sobre tipo Item, dependente da aplicação

Apoio à Realização do 2º Projecto. AED 2003/2004 p.1/21

Apoio à Realização do 2º Projecto. AED 2003/2004 p.1/21 Apoio à Realização do 2º Projecto AED 2003/2004 p.1/21 AED 2003/2004 p.2/21 Funcionalidade Extra Contar funções lógicas com repetição Utilizar representação única para cada função lógica Independente da

Leia mais

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

Estruturas de dados elementares

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

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

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany fabianyl@utfpr.edu.br ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)

Programaçã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 mais

Tipos abstratos de dados; pilhas e filas

Tipos abstratos de dados; pilhas e filas 1 Tipos abstratos de dados; pilhas e filas Além do Sedgewick (sempre leiam o Sedgewick), veja http://www.ime.usp.br/~pf/algoritmos/aulas/pilha.html http://www.ime.usp.br/~pf/algoritmos/aulas/fila.html

Leia mais

Melhores momentos AULA 14

Melhores momentos AULA 14 Melhores momentos AULA 14 Filas Fonte: http://justoutsidetheboxcartoon.com/ PF 5.1 http://www.ime.usp.br/ pf/algoritmos/aulas/la.html Filas Uma la (=queue) é uma lista dinâmica em que todas as inserções

Leia mais

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes? Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros

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

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

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

Atividade de laboratório listas encadeadas simples

Atividade de laboratório listas encadeadas simples Atividade de laboratório listas encadeadas simples 1. Estrutura básica Uma lista encadeada simples é uma estrutura de dados composta de uma seqüência de estruturas elementares chamadas nós. Cada nó contém

Leia mais

ADTs (Abstract Data Types): Motivação

ADTs (Abstract Data Types): Motivação ADTs (Abstract Data Types): Motivação Mesmas estruturas são usadas com vários tipos de dados Listas Pilhas Amontoado FIFOs Inteiros Reais Strings Estruturas O procedimento para inserir um inteiro, real,

Leia mais

Linguagem C. Ponteiros. Alex Vidigal Bastos.

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

Linguagem C Ficheiros Compilação Separada

Linguagem C Ficheiros Compilação Separada Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir

Leia mais

Básico: estrutura de programa, sintaxe Interface com linha de comando

Bá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 mais

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler

Leia mais

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

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 Apontadores O que é um apontador? Variável que contém

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

Introdução a Programação. Tipos Estruturados de Dados

Introdução a Programação. Tipos Estruturados de Dados Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados

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

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados

INSTITUTO 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 2 o Teste A - 2 de Julho de 2007 Duração: 2h - O teste é sem consulta. - Para cada questão

Leia mais

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000 #include #include #include #define maxdiscos 1000 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 1ª versão int main() { DISCO listadiscos[maxdiscos];

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

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados

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

Manipulação de Arquivos Exercício/Exemplo:

Manipulação de Arquivos Exercício/Exemplo: Manipulação de Arquivos Exercício/Exemplo: Com o que vimos até o momento sobre manipulação de arquivos. Construa um função em C que possua a capacidade de escrever um inteiro em um arquivo binário. Escreva

Leia mais

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

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2002/2003 2 o Semestre Repescagem do 2 o Teste (A) 18 de Julho de 2003 Duração: 2h - O teste é sem consulta. - Para cada questão

Leia mais

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

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Rotinas, Modos e Tipos de Passagem de Parâmetros

Rotinas, Modos e Tipos de Passagem de Parâmetros Linguagens de Programação Rotinas, Modos e Tipos de Passagem de Parâmetros Carlos Bazilio carlosbazilio@id.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Chamada de Rotinas Rotina f Rotina g(w) g (k) Passagem

Leia mais

Ponteiros e Tabelas. AED 2003/2004 p.1/37

Ponteiros e Tabelas. AED 2003/2004 p.1/37 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

Leia mais

Controlo de Execução. K&R: Capitulo 3

Controlo de Execução. K&R: Capitulo 3 Controlo de Execução K&R: Capitulo 3 IAED, 2009/2010 Controlo de Execução Instruções e Blocos if else-if switch Ciclos: Instruçõeswhile e for Instruçãodo-while break e continue goto e labels 2 IAED, 2009/2010

Leia mais

Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos Lista: conceito, representação e algoritmos SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Problema Imaginem a situação da automação de uma biblioteca Todos os livros devem ser cadastrados

Leia mais

Apontadores/ponteiros

Apontadores/ponteiros Apontadores/ponteiros 1 Apontadores/ponteiros 1. Um ponteiro pode ser manipulado como sendo um vetor. #include int v[5] = { 10, 20, 30, 40, 50 ; int p, i; p = v; for (i = 1; i < 5; i++) printf

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

Estruturas de dados compostas

Estruturas de dados compostas 1 Estruturas de dados compostas Vimos estruturas lineares simples : Vetores, listas ligadas, strings Consideramos agora estruturas compostas : Vetores de vetores (em particular, matrizes), vetores de listas

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Linguagem C Arquivos Seqüências ou de Texto. Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO 1 Arquivo de Escrita 1 fopen ( nome.txt", "w" ); fputc ( caracter, arquivo); 2 #include

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

Listas Lineares Ordenadas

Listas Lineares Ordenadas Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre

Leia mais

Estruturas Compostas Parte II

Estruturas Compostas Parte II Estruturas Compostas Parte II Filas e Pilhas Leonardo Tórtoro Pereira Slides fortemente baseados no material do professor Ricardo Farias: http://www.cos.ufrj.br/~rfarias/cos121/ Pilhas Pilhas Também conhecida

Leia mais

Linguagens de Programação. Rotinas, Modos e Tipos de Passagem de Parâmetros. Carlos Bazilio

Linguagens de Programação. Rotinas, Modos e Tipos de Passagem de Parâmetros. Carlos Bazilio Linguagens de Programação Rotinas, Modos e Tipos de Passagem de Parâmetros Carlos Bazilio bazilio@ic.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Passagem de Parâmetros Os parâmetros são um canal de

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 13 Estruturas Tipo complexo de dados que agrupa dados de tipos diferentes (simples ou complexos) Adequados para manipular diversas

Leia mais

EXERCÍCIO DE SONDAGEM TURMA 02 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota

EXERCÍCIO DE SONDAGEM TURMA 02 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Departamento de Sistemas e Computação Disciplina: Técnicas de Programação Prof.: José Eustáquio Rangel de Queiroz EXERCÍCIO

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Complexidade dos sistemas de software Estrutura Decomposição Abstração Hierarquia Projeto de sistemas complexos

Leia mais

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico

Leia mais

Instituto Superior Técnico Algoritmos e Estruturas de Dados

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

Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados I Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin (daniel.martin@ufabc.edu.br) Aula 8 Aplicação de Fila Calcular a distância entre pessoas no Facebook Aplicação de Fila Calcular a distância entre

Leia mais

Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada

Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada Lista Duplamente Encadeada Interface 1/13 dlist_init void dlist_init(dlist *list, void (*destroy)(void *data)); Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada Rômulo Silva de Oliveira Departamento

Leia mais

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de

Leia mais

Estruturas. struct são coleções de dados heterogêneos agrupados em uma mesma estrutura de dados. Ex: armazenar as coordenadas (x,y) de um ponto:

Estruturas. struct são coleções de dados heterogêneos agrupados em uma mesma estrutura de dados. Ex: armazenar as coordenadas (x,y) de um ponto: Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Estruturas Profa Rosana Braga 1 Estruturas struct são coleções de dados heterogêneos agrupados em uma mesma estrutura

Leia mais

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados

Instituto 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 2004/2005 2 o Semestre 1 o Teste A - 30 de Abril de 2005 Duração: 2h - O teste é sem consulta. - Para cada questão

Leia mais

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais

Leia mais

Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados I Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin (daniel.martin@ufabc.edu.br) Aula 6 Modularização Método que consiste em organizar programas grandes em pequenas partes (módulos) Cada módulo tem

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

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2002/2003 2 o Semestre 2 o Teste A 9 de Junho de 2003 Duração: 2h - O teste é sem consulta. - Para cada questão com escolha múltipla

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

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

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

FUNÇÕ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 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

void push(int i){ if (num<max) vet[num++]=i; else { printf(">>> Erro: overflow na pilha!!!\n"); printf("%d nao foi empilhado!!!

void push(int i){ if (num<max) vet[num++]=i; else { printf(>>> Erro: overflow na pilha!!!\n); printf(%d nao foi empilhado!!! Estruturas de Dados Lista 2: soluções J. L. Rangel 1. Suponha que uma pilha é representada através de um vetor vet e de um inteiro num. As declarações podem ser #define MAX 100 int vet[max], num; Escreva

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa

Leia mais

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem

Leia mais

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE PILHAS E FILAS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos PILHAS E FILAS São tipos especiais de listas com disciplina restrita de acesso Acesso Consulta Inserção Remoção Disciplina

Leia mais

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02 Programação 1 Atribuição, operadores aritméticos, entrada de dados Técnico em Eletrônica Semestre 5 02 Armazenando na memória tipo de variável #include #include main() { int ano; Declaração

Leia mais

EXERCÍCIO DE SONDAGEM SEMESTRE DATAS: 21/06/2016 (TURMAS 01 E 02) Matrícula Nome Nota

EXERCÍCIO DE SONDAGEM SEMESTRE DATAS: 21/06/2016 (TURMAS 01 E 02) Matrícula Nome Nota Professor de INTRODUÇÃO À PROGRAMAÇÃO Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Departamento de Sistemas e Computação Disciplina: Técnicas de Programação Prof.:

Leia mais

Métodos Computacionais. Listas Encadeadas

Métodos Computacionais. Listas Encadeadas Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente

Leia mais

Módulo 18 - Tabelas de Dispersão. Referências

Módulo 18 - Tabelas de Dispersão. Referências Estruturas de Dados Módulo 18 - Tabelas de Dispersão 7/6/2006 (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

EPs 1 e 2. EP2: veja. EP1: veja

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

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

Linguagem C (repetição)

Linguagem C (repetição) Linguagem C (repetição) André Tavares da Silva andre.silva@udesc.br Exercício Escrever um programa que conte (mostre na tela) os números de 1 a 100. Comandos aprendidos até o momento: printf, scanf, getchar,

Leia mais

Caracteres e Cadeias de Caracteres

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

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 06 Tipos Estruturados Edirlei Soares de Lima Dados Compostos Até agora somente utilizamos tipos de dados simples: char, int, float, double. Muitas vezes

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Introdução à Programação em C (II)

Introduçã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 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

Algoritmos e Estruturas de Dados: Tabela de Dispersão com Encadeamento

Algoritmos e Estruturas de Dados: Tabela de Dispersão com Encadeamento Algoritmos e Estruturas de Dados: Tabela de Dispersão com Encadeamento Rômulo Silva de Oliveira Departamento de Automação e Sistemas DAS UFSC romulo@das.ufsc.br http://www.das.ufsc.br/~romulo Maio/011

Leia mais

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

Ponteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista Ponteiros SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências

Leia mais

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 09 Estruturas

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 09 Estruturas Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre T. 09 Estruturas 1 Sumário: 2 Taxonomia de tipos de dados Tipos de Dados void Tipos Simples Tipos Compostos Tipos Numéricos

Leia mais

J. L. Rangel 1. provar que uma árvore binária de altura h tem, no mínimo, h+1 nós, e, no máximo, 2 h+1 1.

J. L. Rangel 1. provar que uma árvore binária de altura h tem, no mínimo, h+1 nós, e, no máximo, 2 h+1 1. Estruturas de Dados Algumas Respostas da Lista 3. J. L. Rangel 1. provar que uma árvore binária de altura h tem, no mínimo, h+1 nós, e, no máximo, 2 h+1 1. (número mínimo) Se a árvore tem altura h, deve

Leia mais

Introdução à Programação em C Input / Output

Introduçã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 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

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

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares!

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares! Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares! 28/9/, 30/9/ e 5/10/2010 Representação/Implementação: Encadeada dinâmica Exercícios Lista Simplesmente

Leia mais

Programação Estruturada

Programaçã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 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