Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.

Slides:



Advertisements
Apresentações semelhantes
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Advertisements

Nivelamento de C: Tipos Estruturados de Dados
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Programação II Estruturas de Dados Aula 01
Programação II Estruturas de Dados
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Alocação Dinâmica de Memória
Programação II Estruturas, uniões e enumerações
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
LPG - I: Alocação Dinâmica de Memória - Ponteiros
LPG-I: Tipos Complexos - Estruturas
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo Programação II Estruturas Professora: Norminda Luiza.
Universidade de Brasília
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Linguagem C.
Matrizes e Funções - Continuação
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
Ponteiros.
Escola Secundária c/ 3º CEB da Batalha
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Curso de Nivelamento LCG
Definição de Tipos Estruturas e Ponteiros
INTELIGÊNCIA ARTIFICIAL
CADEIA DE CARACTERES (Strings)
TAD Pilha com Alocação Dinâmica de Memória
Implementação de FILAS com Alocação Dinâmica
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
PROGRAMAÇÃO I PONTEIROS.
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Estruturas de Dados Aula 5: Matrizes
Introdução à Programação Orientada a Objetos com Java Paulo Borba Centro de Informática Universidade Federal de Pernambuco Programação Imperativa (e Ponteiros.
Linguagem de Programação
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Estruturas de Dados Aula 11: TAD Pilha
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
Estruturas de Dados Aula 17: Estruturas Genéricas
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Estruturas de Dados Aula 15: Árvores
Estruturas de Dados Aula 6: Cadeias de Caracteres
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Prof. Alessandro Gonçalves
Programação de Computadores I – Arquivos
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Programação de Computadores I – Ponteiros Profa. Mercedes Gonzales Márquez.
Profa. Maria Augusta Constante Puget
Ponteiros em C Prof. Kariston Pereira
Linguaguem de Programação II
Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C”
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
INF1007: Programação 2 5 – Tipos Estruturados
FUNDAMENTO DE PROGRAMAÇÃO PROF. WELLINGTON FRANCO
UNIDADE 7 Tipos estruturados
Fundamentos de Programação 1
Transcrição da apresentação:

Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014

Tipos Estruturados Permite estruturar dados complexos, nos quais as informações são compostas por diversos campos Tipo estrutura –Agrupa diversas variáveis dentro de um contexto struct ponto { float x float y; }; Declaração da variável do tipo ponto: struct ponto p; p.x = 10.0; p.y = 5.0;

Ponteiros para estruturas struct ponto *pp; Para acessar os campos (*pp).x = 12.0; De maneira simplificada pp->x = 12.0; Para acessar o endereço de um campo &pp->x

Passagem de estruturas para funções A estrutura inteira é copiada para pilha void imprime (struct ponto p) { printf(“O ponto fornecido foi: (%.2f, %.2f)\n”, p.x, p.y); } Apenas o ponteiro é copiado para pilha (-->recomendado) void imprime (struct ponto* pp) { printf(“O ponto fornecido foi: (%.2f, %.2f)\n”, pp->x, pp->y); }

Passagem de estruturas para funções Exemplo para ler coordenadas do ponto –Precisamos usa ponteiro! void captura (struct ponto* pp) { printf (“Digite as coordenadas do ponto (x, y): “); scanf (“%f %f”, &pp->x, &pp->y); } int main () { struct ponto p; captura (&p); imprime (&p); return 0; }

Alocação Dinâmica de estruturas Podemos alocar estruturas em tempo de execução do programa struct ponto* p; p = (struct ponto*) malloc (sizeof (struct ponto)); Para acessar as coordenadas:... p->x = 12.0;...

Definição de novos tipos Podemos criar nomes de tipos em C typedef float Real; –Real pode ser usado como mnemônico de float – typedef unsigned char Uchar; typedef unsigned char byte; typedef int* Pint; typedef float Vetor[4]; Podemos declarar as seguintes variáveis: Vetor v;... v[0] = 3;...

Definição de novos tipos Podemos definir nomes para tipos estruturados struct ponto { float x; float y; } typedef struct ponto Ponto; typedef struct ponto *PPonto; typedef struct ponto Ponto, *PPonto; Podemos definir as variáveis: Ponto p; PPonto pp;

Aninhamento de estruturas Campos de uma estrutura podem ser outras estruturas previamente definidas Exemplo: função que calcula distância entre pontos float distancia (Ponto* p, Ponto* q) { float d = sqrt ((q->x-p->x)*(q->x-p->x) + (q->y-p- >y)*(q->y-p->y)); return d; }

Aninhamento de estruturas Podemos representar um círculo como struct circulo { float x, y; //centro do círculo float r; //raio } Como já temos o tipo Ponto definido: struct circulo { Ponto p; float r; } typedef struct circulo Circulo;

Aninhamento de estruturas Para implementar uma função que determinar se um dado ponto está dentro de um círculo –Podemos usar a função da distância, visto que usamos o tipo ponto na definição do círculo int interior (Circulo* c, Ponto* p) { float d = distancia (&c->p, p); return (d r); }

Exemplo: Função como campo de estrutura #define STRLEN 200 typedef char str[STRLEN+1]; typedef enum {FALSE = 0, TRUE = 1} boolean; // Keywords typedef enum {GO=0, STOP=1, LEFT=2, RIGHT=3} key; typedef struct keywords{ key k; char *keystr; void (*action)(const key, const char *, const char*); } Keywords;

Exemplo: Função como campo de estrutura static void left( const key k, const char *keystr, const char *maisinfo ){ fprintf(stdout,"left> key=%d keystr=%s maisinfo=%s\n", key, keystr, maisinfo ); }... Keywords keyword[] = { { GO, "go", go }, { STOP, "stop", stop }, { LEFT, "left", left }, { RIGHT, "right", right }, { (key)0, NULL, NULL }// Marcador de final };... key k; void (*acao)(const key k, const char*, const char*); k = LEFT; maisinfo = "bla bla bla !!!"; acao = keyword[k].action; acao( k, keyword[k].keystr, maisinfo );

Tipo União Localização de memória compartilhada por diferentes variáveis –Podem ser de tipos diferentes –São usadas para armazenar valores heterogêneos em um mesmo espaço de memória –Um único elemento da união pode estar armazenado! union exemplo { int i; char c; } Para declarar a variável: –union exemplo v; Para acessar os elementos (“.” ou “->”): –v.i = 10 ou v.c = ‘x’;