désiré nguessan programação ii estruturas de dados [email protected]

21
Désiré NGuessan Programação II Programação II Estruturas de Dados Estruturas de Dados [email protected]

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Programação II Programação II Estruturas de DadosEstruturas de Dados

[email protected]

Page 2: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

–Alem dos tipos primitivos podemos agrupar sob um único nome um conjunto de tipos de dados não similares

–Este agrupamento significa definir uma nova estrutura conhecida também como registro (prog antiga).

–Definir um tipo de dados significa informar ao compilador seu:

–Nome

–Tamanho e

–Forma como deve ser armazenado e recuperado da memória

Page 3: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

• A definição de uma estrutura não cria nenhuma variável, somente informa ao computador as características de um novo tipo de dados

• Não há nenhuma reserva de memória

• struct indica que um novo tipo de dados está sendo definido

• O nome do novo tipo é struct <etiqueta>

Page 4: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

•Sintaxe

struct <etiqueta> {

// membros

};

Page 5: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

•Exemplo

struct aluno {

// membros

int mat;

float nota[3];

float media;

};

Page 6: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

–Declarando uma variável do tipo Definido:

struct aluno A ;

•Declara uma variável do nome A do tipo struct aluno

•Esta declaração reserva espaço de memória suficiente para armazenar todos os membros da estrutura

Page 7: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

•Combinando declarações

struct aluno {

int mat;

float nota[3]

float media;

} jose; // cria uma variavel jose do tipo aluno

Page 8: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

–Novo nome para os tipos existentes: typedef

•O comando typedef não produz um novo tipo, cria apenas novo nome ou sinônimo para o tipo existente

•Sintaxe:

typedef <tipo Existente> Sinônimo;

Page 9: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

–Exemplos

• typedef char BYTE; // cria o sinônimo BYTE

• typedef int INTEIRO;// cria o sinônimo INTEIRO

• typedef struct aluno ALUNO;// cria sinônimo ALUNO

Page 10: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

–Acessando os Membros da estrutura:

•Uma vez criada a variável estrutura, seus membros podem ser acessados por meio do operador ponto

•Exemplo:

–ALUNO A;

–A.mat = 456;

Page 11: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

–Ponteiro para estruturas:

•Da mesma forma que podemos declarar variável do tipo estrutura

– struct aluno A;

• Podemos também declarar variável do tipo ponteiro para estrutura

– struct aluno *A;

Page 12: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

–Acessando os Membros da estrutura do tipo ponteiro:

•Podemos acessar os membros da estrutura indiretamente por meio do seu ponteiro:

•Exemplo:

– (*A).mat = 456;

ou

– A->mat = 456;

Page 13: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

–Criar uma estrutura para armazenar dados de um aluno ?

Page 14: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

#include <stdio.h>#include <stdlib.h>/* Cria uma estrutura para armazenar dados de um aluno */struct aluno{ int nmat; float nota[3]; float media; };

Page 15: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dadosint main(int argc, char *argv[]){ struct aluno A; // declara uma variavel de tipo struct Aluno

A.nmat = 456; A.nota[0] = 7.6;

A.nota[1] = 5.2; A.nota[2] = 8.3;

A.media = (A.nota[0] +A.nota[1]+A.nota[2])/3; printf("Matricula: %d Media: %.2f\n", A.nmat, A.media); system("PAUSE"); return 0;}

Page 16: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

Usando typedef com structstruct aluno{ int nmat; float nota[3]; float media; };typedef struct aluno Aluno;Aluno Jose; // declara uma variavel do tipo aluno

Page 17: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

Usando typedef com structtypedef struct // não é informada a etiqueta{ int nmat; float nota[3]; float media; } aluno ;aluno Jose; // declara uma variavel do tipo aluno

Page 18: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

Passagem de Estruturas para Funções

void imprime (struct aluno A) { printf(“media = %.2f”, A.media); }

void imprime (struct aluno *A) { printf(“media = %.2f”, A->media); }

Page 19: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

Passagem de Estruturas para Funções

int main (void) { struct aluno *A; imprime(&A); }

Page 20: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de Dados

Alocação dinâmica de estruturasint main (void) { struct Aluno *A; A= (struct Aluno*) malloc (sizeof(struct Aluno )) ;

}

Page 21: Désiré NGuessan Programação II Estruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR

Désiré NGuessan

Tipos de DadosTipos de DadosInicializando Estruturas

struct Data { int dia; char mes[10]; int ano; } natal = {25, “dezembro”,2009} , aniversario = {29, “março”, 1996};