SOBRE

LightBlog
Responsive Ads Here

segunda-feira, 26 de janeiro de 2015

#17 Struct no Arduino

Tipo Abstrato de Dados (TAD), também conhecida como struct, é uma estrutura de dados, onde diversos tipos de dados fazem partes dela. Por exemplo, pode ser criada uma struct nomeada “aluno”, que pode conter uma variável do tipo char para representar o nome do aluno, um vetor do tipo float para armazenar as notas do aluno, uma variável do tipo int para armazenar a idade do aluno, entre outras, não possuindo um máximo de variáveis em um TAD.
A declaração de uma TAD é diferente da declaração de uma variável, pois é preciso declarar quais variáveis estarão dentro da TAD, por exemplo:

struct dadosAlunos{

    char nome[30];

    int  idade;

    float notas[5];

};

Esta declaração deve ser feita antes do “void setup” e “void loop”, pois quando declarada uma função do tipo “dadosAlunos” é preciso que esta TAD já esteja pré-definida. Para utilização dessa TAD no “void loop” é preciso declarar uma variável do tipo “dadosAlunos”:
struct dadosAlunos Alunos;

A partir de agora é possível utilizar todas as variáveis que a struct “Alunos” possuí. Para acessar as variáveis da struct “Alunos” é muito simples, por exemplo:

Alunos.idade = 5;

Ou acessando um vetor dentro da struct:
Alunos.notas[0] = 7.5; 

Neste próximo exemplo será feito um programa onde será declarada a struct “Alunos”, serão adicionados valores a esta estrutura e, após isso, mostrados no monitor serial.

#include <string.h>

struct dadosAlunos{

    String nome;

    float notas[5];

};

void setup()

{

 Serial.begin(9600);

}

void loop()

{

 struct dadosAlunos Alunos;

 Alunos.nome =  "Joao Paulo";

 Alunos.idade = 5;

 Alunos.notas[0] = 5;

 Alunos.notas[1] = 6;

 Alunos.notas[2] = 8;

 Alunos.notas[3] = 7.5;

 Alunos.notas[4] = 10;

 Serial.print ("Nome Aluno: ");

 Serial.println (Alunos.nome);

 Serial.print ("Idade Aluno: ");

 Serial.println (Alunos.idade);

 Serial.println ("Notas Aluno: ");

 Serial.println (Alunos.notas[0]);

 Serial.println (Alunos.notas[1]);

 Serial.println (Alunos.notas[2]);

 Serial.println (Alunos.notas[3]);

 Serial.println (Alunos.notas[4]);

}


Perceba que ao invés de utilizar um vetor de char foi declarada uma varíavel do tipo String. Esta TAD já é pré-definida na biblioteca string.h, porém não é somente uma struct  e sim uma Classe, mas deixamos isso para outro post. Após a execução deste código o resultado é ilustrado na Figura abaixo.