Você está na página 1de 123

ESTRUTURA de DADOS

Aula 3 – Agrupando dados e criando novos tipos


ESTRUTURA DE DADOS

Atenção aos Temas Principais dessa Aula

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Conteúdo Programático desta aula


 Compreender  o uso da estruturas heterogêneas definidas pelo

programador ;
 Definir e declarar estruturas heterogêneas localmente e
globalmente;
 Identificar que tipos de elementos podem ser membros de uma
estrutura;
 Implementar programas usando estruturas;
 Construir funções usando estruturas heterogêneas ;
  
AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3
ESTRUTURA DE DADOS

Direto ao Assunto

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Conceito de struct

Uma estrutura(struct) é um conjunto de elementos, na


maioria das vezes de tipos diferentes, podendo ser
variáveis simples, matrizes, outras estruturas e até
funções.

Cada elemento da estrutura é chamado de membro ou


campo.

O agrupamento desses elementos segue uma lógica


definida pelo programador. A esse conjunto, é associado
um nome.

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

DEFININDO a struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

3 membros
(campos)

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct data

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct data
{

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct data
{
int dia, mes, ano;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct data
{
int dia, mes, ano;
}

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct data
{
int dia, mes, ano;
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

2 membros
(campos)

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct produto

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct produto
{

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct produto
{
char nomeProd[21];

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct produto
{
char nomeProd[21];
float valor;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct produto
{
char nomeProd[21];
float valor;
}

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Exemplo de struct

Definindo

struct produto
{
char nomeProd[21];
float valor;
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Até aqui ficou fácil, mas se


partíssemos de um momento
anterior a esse, não seria melhor?

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

OK! Vamos apresentar algumas


fichas e faremos a definição a partir
delas.

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Ficha 1

Nome da struct:
Quantos membros?
Todos do mesmo tipo?
Qual(is) o(s) tipo(s) presente(s)?

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Ficha 1

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) presente(s)? char/ float/ long long int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 1

struct

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) char/ float/ long long
presente(s)? int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 1

struct paciente

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) char/ float/ long long
presente(s)? int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 1

struct paciente
{

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) char/ float/ long long
presente(s)? int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 1

struct paciente
{
char nomePac[31], classif[21];

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) char/ float/ long long
presente(s)? int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 1

struct paciente
{
char nomePac[31], classif[21];
float alt, peso, IMC;

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) char/ float/ long long
presente(s)? int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 1

struct paciente
{
char nomePac[31], classif[21];
float alt, peso, IMC;
long long int tel;

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) char/ float/ long long
presente(s)? int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 1

struct paciente
{
char nomePac[31], classif[21];
float alt, peso, IMC;
long long int tel;
}

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) char/ float/ long long
presente(s)? int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 1

struct paciente
{
char nomePac[31], classif[21];
float alt, peso, IMC;
long long int tel;
};

Nome da struct: paciente


Quantos membros? 6
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) char/ float/ long long
presente(s)? int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Ficha 2

Nome da struct:
Quantos membros?
Todos do mesmo tipo?
Qual(is) o(s) tipo(s) presente(s)?

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Ficha 2

Nome da struct: aluno


Quantos membros? 9
Todos do mesmo tipo? Não
Qual(is) o(s) tipo(s) presente(s)? char/long long int/ float/
int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct aluno

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct aluno
{

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct aluno
{
char nomeAl[31], disc[21];

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct aluno
{
char nomeAl[31], disc[21];
long long int matric, tel;

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct aluno
{
char nomeAl[31], disc[21];
long long int matric, tel;
float AV1, AV2, AV3, Media;

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct aluno
{
char nomeAl[31], disc[21];
long long int matric, tel;
float AV1, AV2, AV3, Media;
int turma;

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct aluno
{
char nomeAl[31], disc[21];
long long int matric, tel;
float AV1, AV2, AV3, Media;
int turma;
}

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo Ficha 2

struct aluno
{
char nomeAl[31], disc[21];
long long int matric, tel;
float AV1, AV2, AV3, Media;
int turma;
};

Nome da struct: aluno


Quantos membros? 9

Todos do mesmo tipo? Não

Qual(is) o(s) tipo(s) char/long long int/


presente(s)? float/ int

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Onde se define uma estrutura?

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Onde se define uma estrutura?

Antes de
todas as Funções

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Onde se define uma estrutura?

Antes de
todas as Funções

GLOBAL

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Onde se define uma estrutura?

Antes de Dentro de uma


todas as Funções função

GLOBAL

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Onde se define uma estrutura?

Antes de Dentro de uma


todas as Funções função

GLOBAL LOCAL

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Como se declara uma variável com


o tipo definido por uma estrutura?

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

DEFININDO e DECLARANDO depois

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando com tipo definido pela struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando com tipo definido pela struct

struct data
{
int dia, mes, ano;
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando com tipo definido pela struct

struct data
{
int dia, mes, ano;
};

data entrada, saida;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

DEFININDO / DECLARANDO

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando junto com a definição da struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando junto com a definição da struct

struct produto
{
char nomeProd[21];
float valor;
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando junto com a definição da struct

struct produto
{
char nomeProd[21];
float valor;
} prod1, prod2;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

DEFININDO e DECLARANDO Anônima

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando, obrigatoriamente, na definição - struct Anônima

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando, obrigatoriamente, na definição - struct Anônima

struct
{
float a, b, c;
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando, obrigatoriamente, na definição - struct Anônima

struct
{
float a, b, c;
} figura1, figura2;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ACESSANDO um MEMBRO da struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ACESSANDO um MEMBRO da struct

struct data
{
int dia, mes, ano;
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ACESSANDO um MEMBRO da struct

struct data
{
int dia, mes, ano;
};

data entrada;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ACESSANDO um MEMBRO da struct

struct data ...entrada.dia...


{
int dia, mes, ano;
};

data entrada;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ACESSANDO um MEMBRO da struct

struct data ...entrada.dia...


{
int dia, mes, ano;
...entrada.mes...
};

data entrada;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ACESSANDO um MEMBRO da struct

struct data ...entrada.dia...


{
int dia, mes, ano;
...entrada.mes...
};

...entrada.ano...
data entrada;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct na declaração

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct na declaração

struct produto
{
char nomeProd[21];
float valor;
} prod1;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct na declaração

struct produto
{
char nomeProd[21];
float valor;
} prod1={"Ar condicionado", 790.00};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct na declaração

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct na declaração

struct produto
{
char nomeProd[21];
float valor;
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct na declaração

struct produto
{
char nomeProd[21];
float valor;
};

data prod1={"Ar condicionado", 790.00};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct através do teclado

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct através do teclado

struct aluno
{
char nomeAl[31], disc[21];
long long int matric, tel;
float AV1, AV2, AV3, Media;
int turma;
} aluno1;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct através do teclado

struct aluno
{
char nomeAl[31], disc[21];
long long int matric, tel;
float AV1, AV2, AV3, Media;
int turma;
} aluno1;

cin>>aluno1.AV1;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ATRIBUINDO valor a um MEMBRO da struct através do teclado

struct aluno
{
char nomeAl[31], disc[21];
long long int matric, tel;
float AV1, AV2, AV3, Media;
int turma;
} aluno1;

cin>>aluno1.AV1; cin.getline(aluno1.nomeAl, 31);

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Array de struct

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando um array de struct

Um array de estruturas pode ser declarado da mesma


forma que uma estrutura simples.

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando um array de struct

Um array de estruturas pode ser declarado da mesma


forma que uma estrutura simples.

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Declarando um array de struct

Um array de estruturas pode ser declarado da mesma


forma que uma estrutura simples.

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct e declarando um array

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct e declarando um array

struct saude
{
float peso, altura, IMC;
} atletas[500];

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct e declarando um array

struct saude
{
float peso, altura, IMC;
} atletas[500];

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct e declarando um array

A
C
struct saude E
{ S
float peso, altura, IMC; S
} atletas[500]; A
N
D
O

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct e declarando um array

A
C
struct saude E
{ S
float peso, altura, IMC; S
} atletas[500]; A
N
D
.
...atletas[0] peso... O

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct e declarando um array

A
C
struct saude E
{ S
float altura, peso, IMC; S
} atletas[500]; A
N
D
O

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS

struct data
{
int dia, mes, ano;
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS

struct data
{
int dia, mes, ano;
};

struct saude
{
float peso, altura, IMC;
data niver;
} atleta;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS

struct data
{
int dia, mes, ano;
};

struct saude
{
float peso, altura, IMC;
data niver;
} atleta;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS

struct data ACESSANDO


{
int dia, mes, ano;
};

struct saude
{
float peso, altura, IMC;
data niver;
} atleta;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS

struct data ACESSANDO


{
int dia, mes, ano;
};

struct saude
{
float peso, altura, IMC;
data niver;
} atleta; .
...atleta peso...

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS

struct data ACESSANDO


{
int dia, mes, ano;
};

struct saude
{
float peso, altura, IMC;
data niver;
} atleta; .
...atleta peso...

...atleta.niver.dia...
AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3
ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS

struct data ACESSANDO


{
int dia, mes, ano;
};

struct saude
{
float altura, peso, IMC;
data niver;
} atleta;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS - array

struct data ACESSANDO


{
int dia, mes, ano;
};

struct saude
{
float altura, peso, IMC;
data niver;
} atletas[500];

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS - array

struct data ACESSANDO


{
int dia, mes, ano;
};

struct saude
{
float altura, peso, IMC;
data niver;
} atletas[500];

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS - array

struct data ACESSANDO


{
int dia, mes, ano;
};

struct saude
{
float altura, peso, IMC;
data niver;
} atletas[500]; .
...atletas[0] peso...

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS - array

struct data ACESSANDO


{
int dia, mes, ano;
};

struct saude
{
float altura, peso, IMC;
data niver;
} atletas[500]; .
...atletas[0] peso...
...atletas[0].niver.dia...
AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3
ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS - array

struct data
A
{
C
int dia, mes, ano;
}; E
S
S
struct saude A
{ N
float altura, peso, IMC; D
data niver;
O
} atletas[500];

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Definindo a struct, usando estruturas ANINHADAS - array

struct data
A
{
C
int dia, mes, ano;
}; E
S
S
struct saude A
{ N
float altura, peso, IMC; D
data niver;
O
} atletas[500];

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

ESTRUTURAS e FUNÇÕES
Passagem por VALOR
Passagem por REFERÊNCIA &

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

#include <iostream>
#include <cstdlib>
Passagem por VALOR
using namespace std;
float mediaPond(float, float);
int main()
{
struct
{ float prova, trab; } notas;
cout<<"\nDigite nota da prova: ";cin>>notas.prova;
cout<<"\nDigite nota do trabalho: ";cin>>notas.trab;
cout<<"\nMedia : "<<mediaPond(notas.prova, notas.trab);
cout<<"\n\n";
system("pause");
}

float mediaPond(float p, float t)


{ return (p*6+ t*4)/10; }
AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3
ESTRUTURA DE DADOS

#include <iostream>
#include <cstdlib> Passagem por REFERÊNCIA &
using namespace std;
void alteraNota(float &);
int main()
{
struct
{ float prova, trab; } notas;
cout<<"\nDigite nota da prova: ";
cin>>notas.prova;
alteraNota(notas.prova);
cout<<"\nNota Alterada: "<<notas.prova<<"\tGostou?";
cout<<"\n\n";
system("pause");
}
void alteraNota(float &p)
{ p=10;}
AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3
ESTRUTURA DE DADOS

Analisando
Estrutura como parâmetro
Estrutura como retorno

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Refazendo o exemplo de
passagem por VALOR, usando
Estrutura como parâmetro

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

#include <iostream>
#include <cstdlib>
Estrutura como parâmetro
using namespace std;
struct notas
{ float prova, trab;};
float mediaPond(notas n);
int main()
{
notas aluno;
cout<<"\nDigite nota da prova: ";cin>>aluno.prova;
cout<<"\nDigite nota do trabalho: ";cin>>aluno.trab;
cout<<"\nMedia ponderada: "<<mediaPond(aluno);
cout<<"\n\n";
system("pause");
}
float mediaPond(notas n)
{ return (n.prova*6+ n.trab*4)/10;}
AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3
ESTRUTURA DE DADOS

Usando Estrutura como parâmetro


e
Estrutura como retorno

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

#include <iostream>
#include <cstdlib> Estrutura como parâmetro
#include <cstring>
#include <cctype>
using namespace std;
struct cad
{
char nome[31];
int idade;
};
void maiuscula(char func[]);
cad Entrada();
void Exibe( cad funcfunc );
int main() parâmetro
{
cad funcionario;
funcionario = Entrada();
Exibe(funcionario);
system("pause"); return(0);
}
AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3
ESTRUTURA DE DADOS

#include <iostream>
#include <cstdlib> Estrutura como retorno
#include <cstring>
#include <cctype>
using namespace std;
struct cad
{
char nome[31];
int idade;
}; retorno
void maiuscula(char func[]);
cad Entrada();
void Exibe(cad func);
int main()
{
cad funcionario;
funcionario = Entrada();
Exibe(funcionario);
system("pause"); return(0);
}
AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3
ESTRUTURA DE DADOS

cad Entrada()
{ Estrutura como retorno
cad temp;
char lixo[100];
cout << "\nNome do funcionario ate 30 caracteres: ";
cin.getline(lixo,100);
while(strlen(lixo)>30)
{
cout<<"\nNome muito extenso\n";
cout << "\nNome do funcionario até 30 caracteres: ";
cin.getline(lixo,100);
}
strcpy(temp.nome,lixo);
maiuscula(temp.nome);
cout << "\nDigite idade: ";
cin >> temp.idade;
return temp;
}

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Estrutura como parâmetro

void Exibe(cad func)


{
cout<<"\n\n\n"<<func.nome<<"\t"<<func.idade;
cout<<"\n\n";
}

void maiuscula(char func[])


{
int x;
for(x=0; func[x] !='\0'; x++)
func[x]=toupper(func[x]);
}

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Função como membro de Estrutura

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

#include <iostream>
#include <cstdlib>
using namespace std;

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

struct manipulaNumeros
{
int contaAlgarismos(long long int num)
{
int cont=0;num=abs(num);
if(num==0) return 1;
while(num>0)
{ cont++; num/=10; }
return cont;
}
void quocresto(int a, int b)
{
int aux;
if(a<=0 || b<=0)
{ cout<<"\nSem resultados\n";return;}
if(a<b) {aux=a; a=b; b=aux;}
cout<<"\nQuociente: "<<a/b<<"\nResto: "<<a%b;
}
};

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

int main()
{
long long int n; int n1,n2;
manipulaNumeros num;
cout<<"\nDigite um numero inteiro: ";
cin>>n;
cout<<"\nTotal de Algarismos: "<<num.contaAlgarismos(n);
cout<<"\n\nDigite um numero inteiro: ";
cin>>n1;
cout<<"\nDigite outro numero inteiro: ";
cin>>n2;
num.quocresto(n1,n2);
cout<<"\n\n";
system("pause");
}

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3


ESTRUTURA DE DADOS

Resumindo

AGRUPANDO DADOS E CRIANDO NOVOS TIPOS– Aula3