Structures


Structures

All programs try to map the world of humans to world of computers. Structures are used to create customize data that clearly represents the world of humans. In the code below, the structure person is defined in the header file. Once the structure has been defined, it is possible to create a variable of type Person as shown in the source file.
Todos los programas tratan de mapear el mundo de los humanos al mundo de las computadoras. Las estructuras son usadas para crear datos personalizados que representen en forma clara el mundo de los humanos. En el código de abajo, la estructura persona es definida en el archivo de encabezado. Una vez que la estructura ha sido definida, es posible crear una variable del tipo Person como se ilustra en el archivo fuente.

Program.h
#pragma once //______________________________________ Program.h
#include "resource.h"

class Program: public Win::Dialog
{
public:
     Program()
     {
     }
     ~Program()
     {
     }
     struct Person
     {
          wstring name;
          double weight;
          double height;
          int age;
     };
protected:
     ...
};

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     Person person;
     person.name = L"Peter Smith";
     person.weight = 120.5; // pounds
     person.height = 5.0; // feet
     person.age = 22;
}

Tip
While designing a program, first consider what structures can be used to make your code easy to read. Observe that in an array, all elements must be of the same data type; while each element of a structure may be of a different data type.
Mientras diseñe un programa, primero considere que estructuras pueden usarse para hacer su código fácil de leer. Observe que en un arreglo, todos los elementos deben ser del mismo tipo de datos; mientras que cada elemento de una estructura puede ser de un tipo diferente de datos.

Problem 1
Compute the output of the following program.
Calcule la salida del programa siguiente.

Program.h
#pragma once //______________________________________ Program.h
#include "resource.h"

class Program: public Win::Dialog
{
public:
     Program()
     {
     }
     ~Program()
     {
     }
     struct Student
     {
          wstring firstName;
          wstring lastName;
          int age;
          bool speaksSpanish;
          bool speaksEnglish;
     };
protected:
     ...
};

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring text;
     Student student;

     student.firstName = L"Alma";
     student.lastName =L"Smith";
     student.age=27;
     student.speaksSpanish=false;
     student.speaksEnglish=true;
     Sys::Format(text,
           L"First name: %s\r\nLast name: %s\r\nAge: %d",      
           student.firstName.c_str(), student.lastName.c_str(), student.age);
     this->MessageBox(text, L"Student Information", MB_OK);
}

A Pointer to a Structure

It is possible to create a pointer to point to a structure. When using pointers, you must use the arrow operator instead of the dot operator as shown in the code below.
Es posible crear un puntero para apuntar a una estructura. Cuando use punteros, usted debe usar el operador de flecha en lugar del operador de punto como se muestra en el código de abajo.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     wstring text;
     Student student;

     student.firstName = L"Alma";
     student.lastName =L"Smith";
     student.age=27;
     //
     Student * pstudent = &student;
     pstudent->speaksEnglish = true;
     pstudent->speaksSpanish = false;
}


Tip
When a structure is used as a parameter to call a function, a copy of the structured is passed to the function. This means that any change in the structure inside the function will not affect the original structure from where the function was called. However, passing structures to a function implies a lot of work to the processor because it has to copy all data of the structure. To improve the performance, it is possible to pass a pointer or a reference to the structure.
Cuando una estructura se usa como un argumento de una función, una copia de la estructura se pasa a la función. Esto quiere decir que cualquier cambio en la estructura hecho dentro de la función no afectara la estructura original que se uso para llamar la función. Sin embargo, pasar estructuras a una función implica un gran trabajo para el procesador al copiar todos los datos de la estructura. Para mejorar el desempeño, se puede pasar un puntero o una referencia en lugar de la estructura.

Tip
It is possible to store complex data by using the STL and the structures. For instance, the list of the students of a university can be declared as

list<student> student;
Es posible almacenar datos complejos usando la STL y las estructuras. Por ejemplo, la lista de los estudiantes de una universidad puede ser declarada como

list<student> student;

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home