Estruturas Heterogêneas C++

Programação C++

Começar. É Gratuito
ou inscrever-se com seu endereço de e-mail
Estruturas Heterogêneas C++ por Mind Map: Estruturas Heterogêneas C++

1. Declaração de uma Variável do Tipo definido por uma estrutura.

1.1. 1° Método (Estrutura Global) A declaração da variável é feita depois da definição. Se a definição for global, a declaração acontece em cada função.

1.1.1. Imagem

1.1.1.1. Imagem

1.1.1.2. Imagem

1.1.1.3. Para acessar as variáveis da Estrutura Global. 1)Declara na função MAIN() o nomeDaEstrutura com as representações dos membros da estrutura. 2)coordenadas a, b; 3)Depois desta declaração(coordenadas a, b;) cria um link a estrutura global, podemos acessar os membros da struct desta forma: a.x a.y b.x b.y Um membro da estrutura pode ser acessado usando o operador membro da estruturas(.), chamado operador ponto, colocado entre o nome da variável estrutura e o nome do membro.

1.1.1.3.1. Imagem

1.2. 2° Método(Estrutura Local) A declaração da variável é feita junta com a definição.

1.2.1. Imagem

1.2.1.1. struct  prod {   char nomeProd[21];   float valor; }produto1={“martelo”, 35.90}, produto2={“furadeira”, 256.75};

1.2.1.1.1. #include <iostream> #include <cstdlib> using namespace std; int main() { struct prod { char nomeProd[21]; float valor; }produto1 = {"martelo", 35.90}, produto2 = {"furadeira", 256.75}; cout << "\nNome do Produto 1: "<<produto1.nomeProd<<"\t"<<produto1.valor; cout << "\nNome do Produto 2: "<<produto2.nomeProd<<"\t"<<produto2.valor; cout<<"\n\n"; system("pause"); return 0; } C:\Users\Eduardo\.clion10\system\cmake\generated\97f055c8\97f055c8\Debug\untitled3.exe Nome do Produto 1: martelo 35.90 Nome do Produto 2: furadeira 256.75 sh: pause: command not found Process finished with exit code 0

1.2.1.2. Imagem

1.2.1.2.1. #include <iostream> #include <cstdlib> using namespace std; int main() { struct prod { char nomeProd[21]; float valor; }produto1, produto2; cout <<"\nNome do primeiro produto: "; cin.getline(produto1.nomeProd, 21); cout <<"\nValor: "; cin >> produto1.valor; cin.get(); cout <<"\nNome do segundo produto: "; cin.getline(produto2.nomeProd, 21); cout <<"\nValor: "; cin >> produto2.valor; cin.get(); cout <<"\nNome do Produto 1"<<"\t"<<"Valor"<<"\t"<<"Nome do Produto 2"<<"\t"<<"Valor"; cout <<"\n"<<produto1.nomeProd<<"\t"<<produto1.valor<<"\t"<<produto2.nomeProd<<"\t"<<produto2.valor; cout<<"\n\n"; system("pause"); return 0; } Nome do primeiro produto: Sapato Valor: 100 Nome do segundo produto: Chinelo Valor: 50 Nome do Produto 1 Valor Nome do Produto 2 Valor Sapato 100 Chinelo 50 Pressione qualquer tecla para continuar. . .

1.3. 3° Método(Estrutura Anônima) Essa estrutura NÃO tem identificador ao lado da palavra struct. Todas as variáveis precisarão ser declaradas na definição.

1.3.1. Imagem

1.4. Identificador o nome que damos a estrutura == nomedaEstrutura

2. Definições Básicas

2.1. Já estudamos as estruturas de dados homogêneas, Matrizes, que eram capazes de armazenar grandes volumes de dados desde que FOSSEM DO MESMO TIPO.

2.1.1. Com a introdução da estrutura de dados heterogênas (struct) podemos manipular tipos de dados diferentes em conjunto, tipos char, int, float ao mesmo tempo. Em algumas linguagens são conhecidas como registros. O struct é uma palavra chave derivada da linguagem C, e não possui seu equivalente em Java, algo semelhante no pensamento semântica, seria uma classe, mas não igual. No entanto, uma vez que as classes Java tem de ser instanciado (ao contrário de estruturas em c)

2.2. Definição Podemos definir uma estrutura como sendo um conjunto de elementos, geralmente agrupadas sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes, outras estruturas e até funções. Por essa definição, podemos concluir que uma estrutura pode ser formada por elementos de tipos de dados diferentes. Cada elemento da estrutura é chamado de membro ou campo.

2.2.1. Imagem

2.2.1.1. A definição termina com um ;  porque é um comando. É bom ressaltar que nenhuma variável foi declara

2.3. Quando definimos uma estrutura, o nome dado a estrutura se torna um TIPO, igual como usa um int, float, double, char. Com este nome poderá declarar variáveis, inclusive arrays(matrizes). E nem é necessário usar a palavra STRUCT antes, só o nome dado.

2.3.1. Uma estrutura pode ser definida dentro de uma função e então, dizemos que ela é uma estrutura local. Se definida antes da MAIN() dizemos que ela é um estrutura global.

2.3.1.1. Estrutura Global

2.3.1.2. Estrutura Local

2.3.2. Imagem

3. 1°, 2°, 3° Métodos

3.1. 1° Método

3.2. 2º Método

3.3. 3° Método

3.3.1. Imagem

4. ARRAYS de Estruturas

4.1. 1. Em Algoritmos, array um conjunto de variáveis, todas do mesmo tipo. Um array de estruturas, é um conjuntos de variáveis de tipos diferentes.

4.2. 2. 1° Método

4.2.1. Imagem 1° Método

4.3. 3. 2° Método

5. Tamanho do Array strlen() Semelhante Lenght em java. Você poderá refazer o trecho que exibe uma letra em cada linha, usando a função strlen() da biblioteca cstring. Preferimos controlar usando o terminador \0.

6. Você terá que usar a função toupper() da biblioteca cctype para converter para maiúscula a primeira letra da primeira palavra. Observe a linha 36 do código fonte. cout << "Digite a Variável 1: "; cin.getline(vari1[0].vetor, 21); vari1[0].vetor[0]=toupper(vari1[0].vetor[0]);

7. Exemplos

7.1. #include <iostream> #include <stdlib.h> #include <cstring> #include <cctype> using namespace std; int main() { struct prod { char vetor[21]; } vari1[2]; cout << "Digite a Variável 1: "; cin.getline(vari1[0].vetor, 21); cout << "Digite a Variável 2: "; cin.getline(vari1[1].vetor, 21); cout << "\n"; for (int i = 0; i < strlen(vari1[0].vetor); ++i) { cout << "\n" << vari1[0].vetor[i]; } cout << "\n"; for (int j = 0; j < strlen(vari1[1].vetor); ++j) { cout << "\n" << vari1[1].vetor[j]; } cout << "\n"; system("pause"); return 0; } C:\Users\Eduardo\.clion10\system\cmake\generated\97f055cc\97f055cc\Debug\untitled7.exe Digite a Variável 1: lua Digite a Variável 2: sol l u a s o l sh: pause: command not found Process finished with exit code 0

7.1.1. #include <iostream> #include <stdlib.h> #include <cstring> using namespace std; int main() { struct prod { char vetor[21]; } vari1[2]; cout << "Digite a Variável 1: "; cin.getline(vari1[0].vetor, 21); vari1[0].vetor[0]=toupper(vari1[0].vetor[0]); cout << "Digite a Variável 2: "; cin.getline(vari1[1].vetor, 21); cout << "\n"; for (int i = 0; i < strlen(vari1[0].vetor); ++i) { cout << "\n" << vari1[0].vetor[i]; } cout << "\n"; for (int j = 0; j < strlen(vari1[1].vetor); ++j) { cout << "\n" << vari1[1].vetor[j]; } cout << "\n"; system("pause"); return 0; } C:\Users\Eduardo\.clion10\system\cmake\generated\97f055cc\97f055cc\Debug\untitled7.exe Digite a Variável 1: eduardo Digite a Variável 2: lua E d u a r d o l u a sh: pause: command not found Process finished with exit code 0

7.2. Imagem

7.2.1. Imagem

8. Estruturas Aninhadas

8.1. Definimos estruturas que podem ser membros de várias estruturas.

8.1.1. Imagem

8.1.2. Imagem

8.1.3. Imagem

8.1.3.1. Imagem

9. Estruturas com Funções

9.1. Passagem por Valor Da mesma forma que passamos o conteúdo de uma variável simples ou de um elemento do vetor, podemos passar um membro(campo) de uma estrutura.

9.1.1. Passagem por valor #include <iostream> #include <stdlib.h> using namespace std; struct cad { float a, b, c, d; }; float maior2(float n1, float n2); int main() { cad numeros = {23, 89, 13, 63}; cout << "\nNumeros da estrutura"; cout << "\n" << numeros.a << "\t" << numeros.b << "\t" << numeros.c << "\t" << numeros.d; cout << "\n\nO maior dos quatros"; cout << "\n\t" << maior2(maior2(numeros.a, numeros.b), maior2(numeros.c, numeros.d)); cout << "\n\n"; system("pause"); return 0; } float maior2(float n1, float n2) { if (n1 > n2) return n1; else return n2; } C:\Users\Eduardo\.clion10\system\cmake\generated\97f055ce\97f055ce\Debug\untitled9.exe sh: pause: command not found Numeros da estrutura 23 89 13 63 O maior dos quatros 89 Process finished with exit code 0

9.2. Passagem por Referência Pode-se dizer que a passagem por referência é uma forma disfarçada de ponteiro. SAAD, Joel(2003, p.112)

9.2.1. #include <iostream> #include <stdlib.h> using namespace std; struct cad { char nome[31]; int idade; }; void idade2020(int &); int main() { cad atleta = {"Joao Renato", 21}; cout << "\nAntes da Chamada de Função"; cout << "\nNome do Atleta: " << atleta.nome << "\tIdade em 2010: " << atleta.idade; idade2020(atleta.idade); cout << "\nDepois da Chamada da Funcao"; cout << "\nNome do Atleta: " << atleta.nome << "\tIdade em 2010: " << atleta.idade; cout << "\n\n"; system("pause"); return 0; } void idade2020(int &id) { id = id + 10; } C:\Users\Eduardo\.clion10\system\cmake\generated\661a632a\661a632a\Debug\untitled10.exe Antes da Chamada de Função Nome do Atleta: Joao Renato Idade em 2010: 21 Depois da Chamada da Funcao Nome do Atleta: Joao Renato Idade em 2010: 31 sh: pause: command not found Process finished with exit code 0

10. Passagen de um membro que é um Vetor passagem por Endereço

10.1. Arrays = São endereços na memória principal. Ficam entre parênteses as suas posições e informam o deslocamento em relação ao endereço base. A passagem de um membro que é um vetor se dá de mesma forma que fizemos com os arrys unidimensionais.

10.2. Imagem