Вы находитесь на странице: 1из 20

Tipos Estruturados

Prof. Éverton Santi


Tipos básicos c/c++
• Cinco tipos básicos
• char
• int
• float
• double
• Void

• Esses tipos são o bastante?


Estruturas ou agregações são...
...coleções de variáveis relacionadas, agrupadas sob um único nome.
Uso de estruturas
• Estruturas permitem modelar de forma mais natural determinados
tipos de problemas;
• Permitem ao programador criar um novo tipo de variável.

Pergunta: Existe na linguagem C++ um tipo de variável específico para


se representar uma pessoa?
Resposta: depende de como se quer representar uma pessoa.
Exemplos
• Tipo de variável para representar um ponto no espaço;
• Tipo de variável para representar uma pessoa;
• Tipo de variável para representar a leitura dos dados de um sensor
em um determinado horário;

Quais tipos de entidades (mundo real ou não) não podem ser


representados de forma direta por uma única variável (ou array) de
tipo nativo em linguagem C/C++?
Declaração de estruturas
• Sintaxe:
struct <tag_da_estrutura>
{
<tipo_campo_1> nome_campo_1;
<tipo_campo_2> nome_campo_2;
.
.
.
<tipo_campo_n> nome_campo_n;
};
• struct: palavra reservada para definir uma estrutura;
• Tag_da_estrutura: nome dado ao novo tipo de variável que está sendo definido;
• Declaração dos campos da estrutura (dados que descrevem a entidade que se quer
representar). Quaisquer tipos de variáveis podem ser utilizadas como campos, bem como
em qualquer quantidade.
Exemplo 1
• Crie um tipo estruturado para representar uma medição de
temperatura em um sensor, considerando-se que este registro
contém a temperatura observada e o código de identificação do
sensor.
Exemplo 1
• Tipo estruturado para representar uma medição de temperatura em
um sensor, considerando-se que este registro contém a temperatura
observada e o código de identificação do sensor.

struct Sensor
{
int cod;
float temperatura;
};
Importante
• A definição da estrutura deve ser feita antes de seu uso;
• Recomenda-se fazer a definição logo após as diretivas para o pré-processador ou o
comando using namespace std:

#include <iostream>
using namespace std;
struct Sensor{
int cod;
float temperatura;
};

int main(){
//seu programa aqui
return 0;
}
Declaração de variáveis de tipos de estruturas
• A definição de uma estrutura não reserva memória, apenas define um
novo tipo de dado;
• É necessário declarar uma variável deste tipo;
Exemplo
• Criar um programa em linguagem C/C++ no qual se declaram duas
variáveis que permitem armazenar as informações de medição de
temperatura em dois sensores;
Resposta
#include <iostream> s1 s2
using namespace std; cod cod
struct Sensor
{
int cod; temperatura temperatura
float temperatura;
};
int main()
{
struct Sensor s1;
Variáveis s1 e s2 correspondem a
struct Sensor s2; diferentes espaços na memória.
return 0;
}
Inicialização de estruturas
#include <iostream>
using namespace std;
struct Sensor
{
int cod;
float temperatura;
};
int main()
{
struct Sensor s1 = {1235, 98.6};
struct Sensor s2 = {1236, 115.9};
return 0;
}
Acesso aos membros de uma estrutura com o
operador “ponto” (.)
#include <iostream> //Atribuições
using namespace std; s2.cod = 1236;
//Definição da estrutura s2.temperatura = 115.9;
struct Sensor{ //Acesso aos dados
int cod; cout << "Sensor " << s1.cod << " " <<
s1.temperatura << endl;
float temperatura;
}; cout << "Sensor " << s2.cod << " " <<
s2.temperatura << endl;
int main(){
return 0;
//Declarações de variáveis
}
struct Sensor s1 = {1235, 98.6};
struct Sensor s2;
Exercício
• Crie um programa em Linguagem C/C++ no qual o usuário informa os
dados de dois sensores de temperatura. Em seguida, seu programa
deverá informar qual destes dois sensores registra a maior
temperatura.
Estruturas aninhadas
• Problema: representar os dados de medição de um sensor
considerando incluir a data e o horário em que a medição foi
realizada.
#include <iostream> cin >> s.cod_identificacao;

using namespace std; cin >> s.temperatura;

struct Data{ cout << "informe data (dd mm aa): ";

int dia, mes, ano; cin >> s.data.dia;

}; cin >> s.data.mes;

struct Horario{ cin >> s.data.ano;

int hora, minuto, segundo; cout << "Informe horario (hh mm ss): ";

}; cin >> s.horario.hora;

struct Sensor{ cin >> s.horario.minuto;

int cod_identificacao; cin >> s.horario.segundo;

float temperatura; cout << "sensor " << s.cod_identificacao << " " << s.temperatura << " graus C"
<< endl;
struct Data data;
cout << "data: " << s.data.dia << "/" << s.data.mes << "/" << s.data.ano <<
struct Horario horario;
endl;;
};
cout << "horario: " << s.horario.hora << ":" << s.horario.minuto << ":" <<
int main(){ s.horario.segundo;

struct Sensor s; return 0;

cout << "Informe cod. sensor e temp.: "; }


Arrays de tipos estruturados
• Em um array de um tipo de dado primitivo, todos os elementos são
daquele tipo primitivo;
• Em um array de um tipo estruturado, cada elemento do vetor contém
todos os campos deste tipo estruturado;

Array de inteiros

0 1 2 … 98 99

Array de Sensores

0 1 2 … 98 99
Sintaxe para declaração de array de
estruturas
<tag_da_estrutura> nome_array[capacidade];

Ex:
struct Sensor s[4], ms[10] [10];

cod cod cod cod

temperatura temperatura temperatura temperatura

0 1 2 3
Exemplo
• Crie um programa no qual são cadastradas 𝑛 pessoas. Os dados de
cada pessoa são:
• Nome;
• Idade;
• Salário.
• Mostre quantas pessoas entre 25 e 30 anos recebem acima de R$
2.500,00;
• Mostre qual a média salarial, considerando todas as pessoas;