Prévia do material em texto
6ºAula
Structs
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de:
criar estruturas do tipo struct;
realizar leitura e escrita dos dados da struct;
criar vetores de struct.
Olá, Caros (as) alunos (as)
Nesta aula, vamos estudar o conceito de struct na
linguagem c++, vamos aprender que através dela podemos criar
conjunto de dados, ou seja, vamos poder criar uma estrutura
que armazene vários tipos de variáveis dentro dela.
Bons estudos!
163
Linguagem de programação II 38
1 - Estrutura (Struct)
2 - Como declarar uma struct
3 - typedef
1 - Estrutura (Struct)
Estruturas também são chamadas de agregações, são
coleções de variáveis relacionadas, agrupadas sob um único
nome. Estruturas podem ser variáveis de muitos tipos. A
vantagem desse tipo de estrutura de dados é não precisar
trabalhar de forma individual com cada tipo de variável.
Com ela podemos trabalhar com um grupo de variáveis. Até
agora sempre trabalhamos com tipo de dados separados, ou
seja, tipo char, int .... No entanto, imagine uma estrutura que
conseguisse agrupar um conjunto de tipos de variáveis. Existe
uma estrutura chamada struct, onde é possível agrupar os mais
variados tipos de variáveis nos possibilitando formar um
bloco de informação. (AGUILAR, 2018)
Até agora vimos variáveis, array e ponteiros, no entanto,
cada um tinha sua limitação, ou capacidade ou um tipo
específico. Por exemplo, ao criarmos um vetor ele deve ser do
tipo char, ou de inteiros, ou de floats etc. Ou seja, vetores não
podem ser usados com tipos diferentes.
1.1
Imagine a seguinte situação, precisamos criar um sistema
que armazene todos os dados de clientes de um banco. Como
poderíamos armazenar as idades deles?. Vamos supor que
existem 400 funcionários. Sabemos que não vai declarar
inteiro por inteiro, então vamos declarar um vetor de idades:
int idades[400];
E ainda temos que armazenar os nomes, portanto vamos
reservar 50 caracteres por cada nome de pessoa. Então, temos
um vetor de 400 vetores posições de strings, cada um com 50
caracteres. Ficaria:
char nomes[300][50];
Da mesma forma, teríamos que criar vetores que
armazenasse dados para os outros atributos, como idade,
sexo, credito...
O grande problema desse modelo de programação é
controlar todas essas informações soltas, por exemplo, como
conseguiria encontrar a cliente de nome Maria. Vamos supor
que ela se encontra na posição de número 60 do vetor de
nomes, portanto teríamos que ir para posição 60 de todos os
vetores declarados. Isso tudo é possível, no entanto muito
trabalhoso, para resolver esse tipo de problema existem as
estruturas structs.
1.2 - O que é uma struct em C
Struct, ou estrutura, é um bloco que armazenam diversas
informações de diferentes tipos. Para o exemplo anterior
Seções de estudo
poderíamos criar uma struct para cada funcionário, e dentro
dessa estrutura ter variáveis do tipo string (ome), tipo int
(para idade), tipo float (que armazenam o saldo), etc. E, cada
estrutura teria um nome, que seria algo relacionado com o
cliente. Assim, sempre que quiséssemos um dado de um
funcionário, bastaríamos ter acesso a estrutura dele, e todas
as informações viriam juntas. Na struct podemos definir a
quantidade de elementos que quisermos. E após a utilização
dessa estrutura podemos manipular as milhares de variáveis
dos mais diversos tipos que tenha sido criado dentro dela.
(AGUILAR, 2008)
1.3 - Onde as structs em C++ são
usadas
Structs são usadas quando temos elementos em nossos
programas que precisam fazer uso de vários tipos de variáveis.
Ao utilizarmos uma struct, podemos trabalhar com vários tipos
de informações de uma maneira fácil, rápida e organizada
(DAMAS,2016).
Geralmente utilizamos struct quando trabalhamos
em sistemas que necessitam guardar conteúdos de forma
agrupada, por exemplo, sistemas de estoque de produto,
cadastro de pessoas.
2 - Como utilizar uma struct
2.1 - Como declarar uma struct
Como já vimos, uma struct nada mais é que um conjunto,
ou bloco de variáveis. A declaração de uma struct é bem
parecida com a declaração de uma função, primeiramente
devemos escolher um tipo, nesse caso o tipo deve ser struct,
em seguida o nome da struct, em seguida devemos abrir as
chaves, depois temos o corpo da struct, e por fim, fechar as
chaves seguido do ponto e vírgula.
A sintaxe é a seguinte (AGUILAR, 2008).
struct Nome_de_sua_struct
{
tipos nome_dos_tipos;
};
No corpo da struct somente é possível criar declarações
de variáveis, não existe um limite de quantidade. Como
exemplo vamos declarar uma struct para representar os dados
de um cliente:
struct Cliente
{
int idade;
char *nome;
saldo;
};
No exemplo podemos dizer agora que um cliente possui
idade, nome e saldo.
2.2 - O tipo struct
A palavra-chave struct introduz a declaração de estrutura.
As variáveis declaradas dentro das chaves são conhecidas
164
39
como membros da estrutura. Os membros da estrutura
devem possuir nomes únicos.
Podemos ver as structs como um tipo de dado.
Por exemplo, a declaração de “Cliente”, que foi utilizada
anteriormente, pode ser vista como um novo de tipo de
variável. É uma variável, ou um tipo, que define os Cliente.
Essa abordagem é correta porque agora podemos criar novo
tipo de variável, ou seja, é possível criar e declarar variáveis do
tipo “struct Cliente”. (Deitel, 2008)
struct Cliente cliente1;
struct Cliente cliente2;
struct Cliente cliente3;
Sempre que declaramos uma nova struct do tipo Cliente,
as variáveis dentro da struct são criadas automaticamente, ou
seja, podemos dizer que cada cliente declarado possui um
nome, idade e saldo. Outra maneira de declarar variáveis de
um tipo struct é declarar esses elementos após as chaves na
hora de criar a struct, por exemplo: (DAMAS,2016)
struct Cliente
{
int idade;
char *nome;
salario;
}cliente1, cliente2, cliente3;
2.3 - Como escrever e ler elementos
de uma struct em C
No código anterior, criamos 3 clientes, e todos eles terão
os mesmos elementos internos, com os mesmos nomes:
idade, nome e saldo.
Para diferenciar uma das outras é só char o nome
declarado, por mais que os nomes internos sejam iguais, por
fora são diferentes. Para acessar um elemento de uma struct
podemos acessar ada seguinte Maneira.
Cliente1.idade;
Apenas isso, basta inserir um ponto após o nome que
você escolheu para a struct. Após isso, estamos acessando
normalmente a variável:
Vamos criar uma nova struct para tratar de alunos. Dentro
dessa struct, criaremos uma variável para armazenar o nome
do aluno, e outras para armazenar as notas de Matemática,
Física e a média dessas duas notas. Após definir a struct com
o nome “Alunos” e seus elementos, vamos declarar uma
variáveis do tipo “struct Alunos”. (DEITEL, 2012)
#include
using namespace std;
int main(void)
{
struct Alunos
{
char nome[30];
matematica, , media;
};
struct Alunos aluno;
cout>aluno.nome;
cout>aluno. ;
cout>aluno.matematica;
return 0;
}
No exemplo é realizado a declaração de uma struct local
contendo três atributos de alunos. Verifique que para acessar
as variáveis internas basta acrescentar o ponto na frente
da struct. Podemos visualizar nos exemplos anteriores que
podemos declarar várias variáveis de uma struct previamente
declarada por exemplo: (DAMAS, 2016)
struct Aluno joaozinho;
struct Cliente cliente;
Na programação, o tipo aluno aparece como se fosse um
tipo novo. Assim como o ‘int’, ‘float’ ou ‘char’, é como se
existisse o tipo ‘struct Aluno’ e ‘struct Cliente’. No entanto,
existe uma maneira mais simples de trabalhar com strunct
através do typedef.
3 - Typedef
A palavra reservada typedef nada mais é do que um
atalho em C++ para que possamos nos referir a um
determinado tipo existente com nomes sinônimos. Por
exemplo, com o typedef, em vez de termos que nos referir
como ‘struct Aluno’,poderíamos usar somente ‘Aluno’
para criar structs daquele tipo. Em vez de escrever sempre
‘struct Cliente’, poderíamos escrever apenas ‘Cliente’ e
então declarar várias structs do tipo ‘Cliente’. Embora
possamos criar atalhos com typedef para outros tipos, o
typedef é comumente utilizado com structs. (AGUILAR,
2008)
3.1 - Como declarar tipos com
typedef
A utilização do typedef é bem simples, primeiro vem a
palavra reservada typedef, acompanhada do tipo existente e
nome escolhido para struts.
typedef tipo_existente nome_que_voce_escolheu;
Agora, podemos passar a nos referir ao tipo ‘tipo_existente’
com outro nome, como ‘nome_que_voce_escolheu’. Por
exemplo, utilizando o typedef podemos definir outro nome
para tipos existentes, como é apresentado abaixo.
typedef int meuInteiro;
typedef char* String;
typedef unsigned short int idade;
Baseado no exemplo anterior, agora podemos declarar
um inteiro desta forma:
meuInteiro valor.
O código apresentado não apresenta nenhum erro, e
agora a variável valor pode passar a receber números inteiros.
Outro exemplo é que podemos criar atalhos para inteiro e
ponteiro de char.
165
Linguagem de programação II 40
#include
int main(void)
{
typedef int meuInteiro;
typedef char String[20];
meuInteiro numero = 1;
String nome;
scanf(“%[^\n]s”, nome);
printf(“A variavel do tipo ‘meuInteiro’ eh um int e
vale %d\n”, numero);
printf(“Ja a variavel ‘nome’ eh uma String e armazena
\”%s\”\n”, nome);
return 0;
}
Vimos que é possível utilizar o typedef em variáveis
comuns, assim como é possível utilizar ele na utilização de
struct. Quando utilizarmos o typedef com estruturas, não
podemos declarar variáveis na criação da struct ou seja após
o ponto-e-vírgula. No exemplo abaixo é representado a
utilização fo typedef em uma estrutura do tipo struct.
typedef struct Alunos
{
//código da
//struct
} Aluno;
Após a declaração da struct utilizando o typedef,
podemos criar nosssa variaveis da seguinte maneira.
Aluno joao, maria;
Esse código faz com que possamos
chamar “struct Alunos” apenas por ‘Aluno’.
Note que ‘Aluno’ não é uma variável do tipo struct, é apenas
um atalho, uma maneira mais simples de dizer ‘struct Alunos’.
Outro exemplo de sintaxe de typedef com estruturas é a
seguinte, onde não precisamos criar o nome da struct, apenas
do sinônimo: (DAMAS, 2016)
typedef struct
{
//código da
//struct
} Alunos;
Após a utilização do typedef é possível declarar uma
struct do tipo Alunos, sendo assim, o uso do typedef deixa
mais fácil a declaração de structs. Para exemplificar vamos
criar um coidgo que declare, preencha e acesse elementos de
uma struct.
#include
int main(void)
{
typedef struct
{
char nome[30];
matematica, , media;
} Alunos;
Alunos alunos[DIM];
int count;
for(count = 0 ; count . Acesso em: 23 de ago. de 2018.
Uso de Estruturas de Dados Heterogêneas. Disponível
em: . Acesso em: 23 de ago. de 2018.
Vale a pena acessar
Structs - Typedef e Parâmetros. Disponível em:
.
Acesso em: 23 de ago. de 2018.
Passar e Receber Estruturas à uma Função.
Disponível em: . Acesso em: 23 de ago. de 2018.
Vale a pena assistir
Vale a pena
Minhas anotações
167