Manipulando Structs

Teoria Completa

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

Apesar de já estarmos um pouco familiarizados com o conceito de struct, nesse tópico nós iremos conversar mais um pouquinho sobre assunto. Porém, dessa vez iremos aprender sobre a manipulação de registros em um programa.

Então, sem perder tempo vamos nessa!

Acessando elementos em uma struct

Uma coisa é certa, antes de nós acessarmos qualquer elemento em uma struct, nós devemos ter uma struct. É justamente por esse motivo que devemos nos contextualizar, para isso vamos considerar executado o seguinte trecho de código:

Com isso, nós acabamos de definir uma estrutura paciente com os campos idade, massa e altura. Posteriormente, um tipo inf_paciente é gerado a partir da struct paciente através do comando typedef (aquele mesmo que nós já vimos). Por fim, um vetor denominado pacientes é alocado com 50 posições.

Ao extrair todas essas informações, podemos criar um ambiente!

Imagine que esse é o programa de um consultório médico que armazena as informações básicas de seus 50 pacientes em um vetor com dados do tipo struct paciente.

Certo, mas até agora só falamos de conceitos já vistos. Vamos entrar em caminhos obscuros agora, o que o programa deveria fazer se um médico solicitasse a massa do primeiro paciente armazenado?

De forma simples, o programa deveria realizar a impressão dessa informação na tela do médico. Para que isso ocorra, o seguinte código deverá ser executado:

Calma, é só isso?

Sim! Basta colocarmos um ponto e o nome do campo que desejamos acessar logo em seguida do nome da variável em que a struct está sendo manipulada, nesse caso a primeira posição do vetor pacientes.

De maneira geral, nós podemos escrever o acesso a um elemento de uma struct da seguinte forma:

Mamão com açúcar, fala sério.

Inserindo elementos em uma struct

Legal, nós já sabemos acessar os campos de uma struct, também sabemos que os campos de uma struct são apenas a união de diversas outras variáveis. A partir disso, para inserir um elemento em uma struct basta nos lembrarmos da inserção padrão em uma variável em conjunto com o acesso a uma struct, em código as coisas ficariam da seguinte forma:

Onde nós acabamos de inserir no paciente de índice 0 as seguintes informações: idade igual a 19 anos, massa de 80,5 Kg e altura de 1,6 metros.

De maneira geral, nós podemos escrever a inserção de dados em uma determinada struct da seguinte forma:

É muito parecido com a maneira com que nós estamos acostumados a atribuir valores, a grande diferença está na especificação do campo que o dado será inserido.

Typedef e structs

A utilização do typedef na definição de structs é uma prática muito comum, pois quando definimos um registro temos a tendência de utilizar essa estrutura na declaração de inúmeras variáveis e não somente em uma. Por esse motivo, “criar” um tipo para a referenciação de uma struct é muito útil e extremamente simples.

Dá uma olhada na imagem a seguir:

Utilizando essa estrutura como base, podemos escrever uma maneira geral de redefinição de tipo para structs da seguinte forma:

Nós temos uma última missão para cumprir, resolver os exercícios de fixação sobre structs para ficarmos craques!

Nem vem! Ela é bem possível sim, te encontro na página aqui do lado.

Expandir

Exercício Resolvido #1

Universidade Federal de Uberlândia – UFU, Lista de exercícios – structs, André Backes, pp. 01 – Exercício 02.

Implemente um programa que leia o nome, a idade e o endereço de uma pessoa e armazene esses dados em uma estrutura.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Nós iremos começar o desenvolvimento do nosso programa definindo o seu escopo.

Onde além da comum função main, também devemos declarar um registro chamado i n f P e s s o a i s com os campos n o m e , i d a d e e e n d e r e c o que será responsável por ser uma estrutura base.

Passo 2

Com o escopo definido, podemos agora declarar a variável que nos auxiliará nesse desenvolvimento.

Nesse caso, será apenas uma variável x do tipo p e s s o a , que nada mais é do que o tipo do registro anteriormente definido.

Passo 3

Por fim, basta realizarmos as leituras dos dados de entrada.

Esses dados, por sua vez, devem ser armazenados nos seus respectivos campos da variável x , são eles: n o m e , i d a d e e e n d e r e c o já que a estrutura base dessa variável é o registro i n f P e s s o a i s .

Resposta

Exercício Resolvido #2

Universidade Federal de Uberlândia – UFU, Lista de exercícios – structs, André Backes, pp. 01 – Adaptação do exercício 05.

Crie uma estrutura que represente o plano R 3 e utilize ela para implementar um programa que realiza a soma de dois vetores.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Como a grande maioria das vezes, vamos iniciar o nosso programa definindo o seu escopo.

Junto com ele temos o registro que será responsável pela representação do R 3 , que basicamente é uma estrutura com três variáveis do tipo float, são elas: x , y e z .

Passo 2

Tendo o registro já definido, podemos iniciar a declaração das variáveis que irão nos ajudar nesse programa.

Informações sobre as declarações:

  • v 1 e v 2 são variáveis do tipo v e t o r que serão responsáveis por armazenar os elementos dos vetores que serão inseridos como entradas do programa;
  • v S o m a é uma variável, também do tipo v e t o r , que será responsável por armazenar os vetor resultante entre a soma de v 1 e v 2 .

Passo 3

Com as variáveis declaradas, nós podemos requisitar as entradas ao usuário do programa.

Essas entradas nada mais são do que os dois vetores que serão somados.

Passo 4

A lógica do programa consiste em atribuir a cada campo da estrutura v S o m a a soma dos respectivos elementos desse campo das estruturas v 1 e v 2 .

Passo 5

Por fim, só nos resta imprimir o vetor resultante da soma entre v 1 e v 2 , que nesse caso é v S o m a .

Resposta

Exercício Resolvido #3

Universidade Federal de Uberlândia – UFU, Lista de exercícios – structs, André Backes, pp. 01 – Adaptação do exercício 03.

Construa uma estrutura a l u n o com número de matrícula e curso. Leia do usuário os dados de 5 alunos, armazene em um vetor dessa estrutura e imprima os dados na tela.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Começaremos esse programa pelo seu escopo.

Observe que declaramos uma estrutura i n f A l u n o com os campos m a t r i c u l a e c u r s o e em seguida utilizamos o comando typedef para apelidar essa estrutura apenas de a l u n o .

Passo 2

Já que nós já temos o escopo desse programa, podemos agora declarar as variáveis que serão essenciais para o funcionamento dele.

Aqui está algumas informações sobre elas:

  • i é uma variável contadora;
  • t u r m a é um vetor de estruturas do tipo a l u n o com cinco posições.

Passo 3

Em relação a lógica do programa, a primeira coisa que nós temos que fazer é realizar a leitura dos dados dos cinco alunos.

Para isso, utilizaremos um laço de repetição for que terá cinco loops e em cada um deles preenchera os campos m a t r i c u l o e c u r s o de uma das posições do vetor t u r m a .

Passo 4

Por fim, basta percorrermos o vetor t u r m a imprimindo cada um dos campos das diferentes estruturas que estão alocadas em suas cinco posições.

Resposta

Exercício Resolvido #4

Universidade Federal de Uberlândia – UFU, Lista de exercícios – structs, André Backes, pp. 01 – Adaptação do exercício 09.

Faça um programa que resolva a operação de soma entre números complexos. Para isso, leia dois números complexos compostos por uma parte real e uma parte imaginária e imprima a soma entre eles na tela.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Iremos começar o desenvolvimento desse programa definindo o seu escopo.