Programar em C/Estruturas: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Albmont (discussão | contribs)
Reversão de edições por IP (que incluem vandalismo)
Linha 4:
== Structures ==
 
As estruturasstuctures permitem com que possamos ter variáveis de várias tipologias aglomeradas sob o mesmo nome. E esse mesmo nome vai passar a ser uma nova tipologia de dados tal como o int ou float.
 
Mas o uso disto é que podemos ter valores que tenham alguma relação lógica, por exemplo guardar um int de idade e um string de nome. Isto pode ser atributos de uma pessoa. Ou seja podemos empacotar várias variáveis de várias tipologias com o objectivo de representar o mundo real e dar um nome a essas variáveis todas.
Linha 10:
Ao fazer isto criámos uma tipologia de dados da mesma forma como fazemos em relação ao int ou ao float.
 
== Declarar uma estrutura ==
A sintaxe é:
 
struct tipo_um<identificador> {
<tipo> campo_um ;
<tipo> campo_dois ;
};
} tipo_dois , tipo_outro ;
 
Aqui ao palavra reservadatipo struct indica que vamos definircriar novosuma tiposestrutura. .
O nome ou identificador pode ser alunos,familia,etc . (têm de ser válidos identifiers)
Não esquecer o ponto e vírgula “;” no fim da declaração.
Campo_um e Campo_dois são variáveis membro – member variables – ou campo da estrutura. Podemos ter também funções membro.
Estamos a criar novas tipologias de dados.
<b>Primeiro Método :</b><br>
 
struct tipo_dadosminha_estrutura {
int campo_um variavel_um ;
int campo_dois ;
char *campo_ultimo fruta[40] ;
.} };
 
Aqui o identificador é "tipo_dados" dentro dessa estrutura temos três campos .<br>
Agora podemos usar esse tipo para definir variáveis.<br>
struct tipo_dados nova_variável ;
 
Para ter acesso aos campos definidos dentro da estrutura utilizamos um operador de seleção de membro "."(um ponto).
nova_variavel.campo_um ;
 
==Inicializar os campos==
nova_variavel.campo_um = 10 ;
nova_variavel.campo_dois = 2 ;
nova_variavel.campo_ultimo = "etc";
 
Durante a inicialização da variável:
Se faltar alguma inicialização o campo sera inicializado a 0 (zero).
struct tipo_dados nova_variavel = {10,2,"etc"} ;
 
Algumas novidades do C99, nomear os campos durante a inicialização .
 
struct tipo_dados nova_variavel = {.campo_um =10, .campo_dois = 2, .campo_ultimo = "etc" } ;
 
Um exemplo mais interessante <br>
Definimos duas estrutura e criamos uma nova variável do tipo t_dois dentro da segunda .
typedef struct { int a ; } t_dois;
 
typedef struct { int b ; t_dois var_v ; } tipo_um;
 
Inicializar a variável var .<br>
 
tipo_um var = {
.b = 1,
.var_v = {
.a = 2,
} ,
};
 
Aqui o identificador do tipo "struct" é "tipo_dadosminha_estrutura" dentro dessa estrutura temos três campos .<br>o ultimo é
"fruta"<br>
Agora podemos usar esse tipo "struct" para definir variáveis.<br>
struct minha_estrutura nova_estructura ;
 
Para ter acesso aos camposmembros definidos dentro da estrutura utilizamos um operador de seleçãoseleçao de membro "."(um ponto).
nova_estrutura.fruta[0] ;
Nos da o primeiro caracter da palavra contida dentro do membro "fruta".
 
== Matriz (uma maneira de ver a coisa) ==
Linha 96 ⟶ 70:
Podemos declarar os objectos ao de duas formas:
* Ao mesmo tempo que declaramos a estrutura
struct Produtoproduct {
int weight;
..
float price;
} laranja apple, banana, peramelon;
* Ou como uma variável normal
struct Produto{product
{
..
}
int main(){
{
produto laranja , banana, pera;
product apple, banana, melon;
}
 
E até podemos declarar um array delas
ProdutoPerson p[20];
 
'''Pergunta''': como é que é feito exactamente os objectos
Linha 115 ⟶ 92:
 
Se tivermos apenas um objecto (ou variável da estrutura) não é necessário darmos o nome da estrutura
typedef struct {
char item[40]; // name of item
...
double cost; // cost
} novo_tipo ;
double retail; // retail price
 
int on_hand; // amount on hand
int lead_time; // number of days before resupply
} temp;
 
'''Pergunta''': neste caso como é que chamamos o objecto fora da declaração da estrutura?
 
'''Pergunta''': como objectos podemos ter o quê?
Linha 126 ⟶ 107:
e ponteiros? ter ponteiros apontar para onde? para outro objecto. sim pode fazer sentido.
e funções? não isto não me parece que faça sentido.
e estruturas?
 
 
 
 
== Inicializar e aceder aos membros em C++ ==
== Aceder as variáveis membro das estruturas ==
 
Agora queremos dar valores a cada uma das pessoas, queremos dar o nome e a altura, para isso faríamos;
p1.name = “Tiago”
p1.name =1,9
 
Exemplo C++ :
 
Se quiséssemos imprimir o valor guardado
Linha 150 ⟶ 130:
 
 
Exemplo C++ :
#include <iostream>
#include <string>
Linha 185 ⟶ 166:
 
 
=== Iniciar uma estrutura C++ ===
 
Podemos iniciar uma estrutura de 2 maneiras: