SlideShare una empresa de Scribd logo
1 de 36
Programação Estruturada II
Aula 03 – Estruturas, Uniões e Enumeração
Prof. Thomás da Costa
thomasdacosta@gmail.com
Anhanguera – 2015.1
Estruturas, Uniões e Enumeração
ESTRUTURAS, UNIÕES E ENUMERAÇÃO
Prof. Thomás da Costa Programação Estruturada II
Estruturas, Uniões e Enumeração
O que é:
É um conjunto de variáveis que representam características de um determinado
domínio ou de um tipo. A estrutura pode definir uma entidade e possui grande
semelhança com registros de banco de dados. O agrupamento de variáveis pode
ser de qualquer tipo, sendo denominado de membro da estrutura.
Estruturas
Prof. Thomás da Costa Programação Estruturada II
Estruturas, Uniões e Enumeração
Exemplo:
Quais são as informações de um Aluno para a Faculdade?
- Nome
- Matrícula
- Série
- Turma
- Curso
No exemplo acima temos a estrutura Aluno que contém as informações ou as
características de um aluno. Muito semelhante a um registro de banco de dados.
Podemos dizer que em uma estrutura, estamos armazenando informações
agrupadas logicamente.
Estruturas
Prof. Thomás da Costa Programação Estruturada II
Estruturas, Uniões e Enumeração
Mais um exemplo:
Quais as informações de um Funcionário para uma Empresa?
- Nome
- Dados Pessoais
- Data de Admissão
- Cargo
- Salário
- Setor/Área de Atuação
Estruturas
Prof. Thomás da Costa Programação Estruturada II
Vamos ver como fazer uma estrutura em
C/C++ !!!
Estruturas, Uniões e Enumeração
Estruturas em C/C++:
Estruturas
Prof. Thomás da Costa Programação Estruturada II
struct aluno
{
char nome[255];
int ra;
int serie;
int turma;
char curso[100];
};
Nome da estrutura
Palavra reservada
que identifica uma
estrutura
Membros da estrutura
Chaves definem o início
e o fim da estrutura
Termina com ponto e
vírgula
Estruturas, Uniões e Enumeração
Memória:
Uma estrutura armazena vários tipos de dados e ocupa a memória de acordo com
a quantidade de membros declarados na estrutura.
Estruturas
Prof. Thomás da Costa Programação Estruturada II
struct aluno
{
char nome[255];
int ra;
int serie;
int turma;
char curso[100];
};
Membro Bytes
char nome[255] 255
int ra 4
int serie 4
int turma 4
char curso[100] 100
TOTAL: 367
Estruturas, Uniões e Enumeração
Uma curiosidade:
Para saber o tamanho de um tipo de dado ou variável usamos o operador sizeof.
Os tamanhos podem variar de computador, compilador e sistema operacional.
Estruturas
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
using namespace std;
int main()
{
cout << "Tam. do CHAR:" << sizeof(char) << endl;
cout << "Tam. do INT:" << sizeof(int) << endl;
cout << "Tam. do DOUBLE:" << sizeof(double) << endl;
cout << "Tam. do FLOAT:" << sizeof(float) << endl;
}
Estruturas, Uniões e Enumeração
Estruturas
Prof. Thomás da Costa Programação Estruturada II
struct aluno
{
char nome[255];
int ra;
int serie;
int turma;
char curso[100];
} aluno_anhanguera;
struct aluno aluno_tecnologia;
aluno aluno_curso;
Declarando uma variável do tipo Estrutura:
Existem 3 formas de declarar uma variável de estrutura:
Estruturas, Uniões e Enumeração
Acessando membros de uma estrutura:
Para acessar um membro de uma estrutura utilizamos o operador ponto (.)
Estruturas
Prof. Thomás da Costa Programação Estruturada II
...
struct aluno
{
char nome[255];
int ra;
int serie;
int turma;
char curso[100];
} aluno_anhanguera;
...
int main()
{
cout << aluno_anhanguera.nome << endl;
}
Acessando um membro
O membro “nome” da estrutura
será impresso na tela
Estruturas, Uniões e Enumeração
Atribuindo valores para membros de uma função:
Estruturas
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
using namespace std;
struct demonstracao
{
char caracter;
double valor1;
float valor2;
int valor3;
} demo;
int main()
{
demo.caracter = 'A';
demo.valor1 = 3.2;
demo.valor2 = 6.7;
demo.valor3 = 45;
cout << demo.caracter << endl;
cout << demo.valor1 << endl;
cout << demo.valor2 << endl;
cout << demo.valor3 << endl;
}
Atribuição de valores
Estruturas, Uniões e Enumeração
Atribuindo valores para membros de uma função:
Estruturas
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
struct demonstracao
{
char string[100];
int vetor_inteiro[10];
double vetor_double[5];
} demo;
int main()
{
strcpy(demo.string, "Valor da String:");
demo.vetor_inteiro[0] = 1;
demo.vetor_inteiro[2] = 2;
demo.vetor_double[4] = 5.6;
cout << demo.string << endl;
cout << demo.vetor_inteiro[0] << endl;
cout << demo.vetor_inteiro[2] << endl;
cout << demo.vetor_double[4] << endl;
}
Vetor de char usar
strcpy
Atribuição de valores
em vetores
Estruturas, Uniões e Enumeração
Atribuindo valores para membros de uma função:
Estruturas
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
struct demonstracao
{
char string[100];
char caracter;
int valor_inteiro;
double valor_double;
} demo;
int main()
{
cout << "Digite o valor da string:" << endl;
gets(demo.string);
cout << "Digite os valores:" << endl;
cin >> demo.caracter >> demo.valor_inteiro
>> demo.valor_double;
cout << "Valores digitados:" << demo.string
<< "," << demo.caracter
<< "," << demo.valor_inteiro
<< "," << demo.valor_double << endl;
}
O cin funciona da mesma forma em
um membro de uma estrutura
O gets funciona da mesma forma em
um membro de uma estrutura
Estruturas, Uniões e Enumeração
Resumo:
- É definida pela palavra struct
- Possuem um nome
- Representa algum domínio, tipo ou uma entidade
- Os tipos de uma estrutura são agrupadas logicamente
- Composta de membros que são tipos de variáveis (int, double, float, char)
- Seus membros são acessados utilizando o ponto (.)
- Para atribuir valores (int, double, char e etc), utilizamos o operador igual (=),
idêntico a atribuição de uma variável
- Utilizamos o strcpy para atribuir um valor para um vetor de char
- Os comandos cin e gets funcionam da mesma forma para os membros de uma
estrutura
- Vetores também são acessado da mesma forma, através de seus índices
Estruturas
Prof. Thomás da Costa Programação Estruturada II
Estruturas, Uniões e Enumeração
Passando membros de uma estrutura como parâmetro:
Estruturas em Funções
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
struct aluno
{
char nome[100];
int ra;
} aluno_tecnologia;
void imprimir_aluno(char *nome, int ra);
int main()
{
cout << "Digite o nome do aluno:";
gets(aluno_tecnologia.nome);
cout << "Digite o RA do aluno:";
cin >> aluno_tecnologia.ra;
imprimir_aluno(aluno_tecnologia.nome,
aluno_tecnologia.ra);
}
void imprimir_aluno(char *nome, int ra)
{
cout << nome << endl;
cout << ra << endl;
}
Passamos os membros como
parâmetro para a função
Estruturas, Uniões e Enumeração
Parâmetros por referência:
Estruturas em Funções
Prof. Thomás da Costa Programação Estruturada II
...
void troca_aluno(char *nome, int &ra);
int main()
{
...
troca_aluno(aluno_tecnologia.nome,
aluno_tecnologia.ra);
cout << aluno_tecnologia.nome;
cout << aluno_tecnologia.ra;
}
void troca_aluno(char *nome, int &ra)
{
strcpy(nome, "Novo Aluno");
ra = 123456;
}
* e o & definem
também, a passagem
por referência.
Trocando os valores
da estrutura
Estruturas, Uniões e Enumeração
Estrutura como parâmetro (Por valor):
Podemos passar uma estrutura inteira como parâmetro de uma função. Os
parâmetros podem ser também por valor ou por referência
Estruturas em Funções
Prof. Thomás da Costa Programação Estruturada II
...
void imprimir_aluno(struct aluno alu);
int main()
{
...
imprimir_aluno(aluno_tecnologia);
}
void imprimir_aluno(struct aluno alu)
{
cout << alu.nome << endl;
cout << alu.ra << endl;
}
Definindo a passagem
de uma estrutura
como parâmetro
Passando a estrutura
A palavra struct não é
obrigatória na passagem
do parâmetro
Estruturas, Uniões e Enumeração
Estrutura como parâmetro (Por referência):
Estruturas em Funções
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
struct aluno
{
char nome[100];
int ra;
};
void ler_aluno(struct aluno &alu);
int main()
{
struct aluno aluno_tecnologia;
ler_aluno(aluno_tecnologia);
cout << aluno_tecnologia.nome << endl;
cout << aluno_tecnologia.ra << endl;
}
void ler_aluno(struct aluno &alu)
{
cout << "Digite o nome do aluno:" << endl;
gets(alu.nome);
cout << "Digite o RA do aluno:" << endl;
cin >> alu.ra;
}
& define, a passagem por
referência.
Estruturas, Uniões e Enumeração
Vetores de Estruturas:
Estruturas
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
struct aluno
{
char nome[100];
int ra;
};
int main()
{
struct aluno alunos[10];
cout << "Digite o nome do 1º aluno:" << endl;
gets(alunos[0].nome);
cout << "Nome do 1º aluno:"
<< alunos[0].nome << endl;
}
Declarando um vetor de
estruturasUtilizamos índices do
vetor para mostrar o
valor de um membro
da estrutura
Estruturas, Uniões e Enumeração
Estruturas dentro de estruturas:
Estruturas
Prof. Thomás da Costa Programação Estruturada II
struct curso
{
char nome_curso[255];
};
struct aluno
{
char nome[100];
int ra;
struct curso cur;
};
int main()
{
...
cout << alu.nome << endl;
cout << alu.cur.nome_curso << endl;
}
Declarando a estrutura
curso dentro de aluno
Mostrando o nome_curso
da estrutura curso
declarada em aluno
Estruturas, Uniões e Enumeração
Prof. Thomás da Costa Programação Estruturada II
Estruturas, Uniões e Enumeração
Exemplo (Média):
Estruturas
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
struct aluno
{
char nome[100];
double nota_b1;
double nota_b2;
};
double media(double nota_b1, double
nota_b2);
int main()
{
struct aluno alu;
cout << "Nota B1:" << endl;
cin >> alu.nota_b1;
cout << "Nota B2:" << endl;
cin >> alu.nota_b2;
cout << "Media:" <<
media(alu.nota_b1, alu.nota_b2);
}
double media(double nota_b1, double nota_b2)
{
return (nota_b1 + nota_b2) / 2;
}
Estruturas, Uniões e Enumeração
Exemplo (Aumentar Salário):
Estruturas
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
struct funcionario
{
char nome[255];
char cargo[255];
double salario;
int idade;
};
void aumentar_salario(double &salario,
int percen);
int main()
{
struct funcionario func;
cout << "Digite o salário:" << endl;
cin >> func.salario;
aumentar_salario(func.salario, 20);
cout << "Novo salário:" << func.salario;
}
void aumentar_salario(double &salario,
int percen)
{
double val = (percen / 100.0);
salario = salario * (1 + val);
}
Todo mundo gosta desse exemplo !!!
Estruturas, Uniões e Enumeração
O que é:
É um tipo de estrutura, aonde os membros compartilham a mesma posição de
memória, criando código portável independente de máquina. Em sua forma geral,
as uniões possuem algumas características das estruturas.
Uniões
Prof. Thomás da Costa Programação Estruturada II
Estruturas, Uniões e Enumeração
Como funciona:
- As uniões utilizam o mesmo espaço de memória para todas as variáveis
- Quando declaradas, o compilador cria um espaço de memória grande o
suficiente para guardar o maior tipo de variável
- Como o espaço é compartilhado entre os membros da união, precisamos nos
preocupar com as informações que estão sendo gravadas
- As uniões possuem algumas características das estruturas
- A forma de acessar os membros e atribuir valores em um união, são iguais aos
mostrados em estruturas
Uniões
Prof. Thomás da Costa Programação Estruturada II
Vamos ver como fazer uma união
em C/C++ !!!
Estruturas, Uniões e Enumeração
Uniões em C/C++:
Uniões
Prof. Thomás da Costa Programação Estruturada II
Nome da união
Palavra reservada
que identifica uma
união Membros da união
Chaves definem o início
e o fim da união
Termina com ponto e
vírgula
union valor
{
int valor_1;
float valor_2;
double valor_3;
char valor_4;
};
Estruturas, Uniões e Enumeração
Memória:
A união tem o tamanho do maior membro declarado, diferente da estrutura que
possui o tamanho equivalente a soma de todos os membros. No exemplo abaixo a
união possui 8 bytes.
Uniões
Prof. Thomás da Costa Programação Estruturada II
union valor
{
int valor_1;
float valor_2;
double valor_3;
char valor_4;
};
Membro Bytes
int valor_1 4
float valor_2 4
double valor_3 8
char valor_4 1
TOTAL: 8
Estruturas, Uniões e Enumeração
Exemplo:
Uniões
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
using namespace std;
union valor_union
{
int valor_1;
float valor_2;
double valor_3;
char valor_4;
} valor;
void imprimir();
int main()
{
cin >> valor.valor_1;
imprimir();
cin >> valor.valor_2;
imprimir();
cin >> valor.valor_3;
imprimir();
cin >> valor.valor_4;
imprimir();
}
void imprimir()
{
cout << "Valores:" << endl;
cout << valor.valor_1 << endl;
cout << valor.valor_2 << endl;
cout << valor.valor_3 << endl;
cout << valor.valor_4 << endl;
}
Estruturas, Uniões e Enumeração
O que é:
É um tipo de dado, que possui um conjunto de números inteiros constantes, que
definem os possíveis valores válidos para a enumeração. Muito semelhante a um
vetor de inteiro.
Enumeração
Prof. Thomás da Costa Programação Estruturada II
Estruturas, Uniões e Enumeração
Vamos pensar:
Quais são as nossas despesas mensais?
- Aluguel
- Faculdade
- Celular
- Internet
- Conta de Água
- Conta de Luz
- Carro
Essas informações definem uma enumeração chamada despesas. Podemos criar
um programa, que efetue o cálculo das despesas mensais, de acordo com o salário
digitado do usuário.
Essa enumeração define um tipo ou uma faixa de tipos constantes que podemos
utilizar no nosso programa.
Enumeração
Prof. Thomás da Costa Programação Estruturada II
Estruturas, Uniões e Enumeração
Vamos pensar:
Quais são as cores de uma caixa de lápis de cor?
- Azul
- Vermelho
- Amarelo
- Verde
- Preto
- Branco
- Laranja
Essas informações definem uma enumeração chamada cores.
Enumeração
Prof. Thomás da Costa Programação Estruturada II
Vamos ver como fazer uma enumeração em C/C++ !!!
Estruturas, Uniões e Enumeração
Enumerações em C/C++:
Enumeração
Prof. Thomás da Costa Programação Estruturada II
Nome do enum
Palavra reservada
que identifica um
enum
Valores inteiros de um enum
Chaves definem o início
e o fim do enum
Termina com ponto e
vírgula
enum despesas
{
ALUGUEL,
FACULDADE,
CELULAR,
INTERNET,
CONTA_AGUA,
CONTA_LUZ
};
Estruturas, Uniões e Enumeração
Exemplo:
Enumeração
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
using namespace std;
enum despesas
{
ALUGUEL,
FACULDADE
};
int main()
{
int valor;
cout << "Digite o tipo da despesa:" << endl;
cin >> valor;
switch (valor) {
case ALUGUEL: {
cout << "Aluguel";
break;
}
case FACULDADE: {
cout << "Faculdade";
break;
}
default: {
cout << "Não encontrado";
break;
}
}
}
No enum os valores dos membros
começam com 0 e segue a sequência
numérica
Estruturas, Uniões e Enumeração
Exemplo:
Vamos modificar o programa feito no laboratório para utilizar enumeração.
(Exercício 4 do nível básico).
Enumeração
Prof. Thomás da Costa Programação Estruturada II
...
enum opcoes
{
INCLUIR = 1,
LISTAR = 2,
SAIR = 0
};
...
if (opcao == INCLUIR)
{
cout << "Digite o produto:" << endl;
cin >> produto;
incluir_produto(produto);
}
if (opcao == LISTAR)
listar_produto();
if (opcao == SAIR)
break;
system("cls");
...
Podemos atribuir valores fixos
para o enum
Estruturas, Uniões e Enumeração
Definição:
Quando precisamos definir novos nomes a determinados tipos de dados,
utilizamos o operador typedef. Não criamos um novo tipo de variável, somente
um “apelido” para um tipo existente.
Tipos definidos pelo Usuário
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <strings.h>
using namespace std;
typedef char valores[100];
int main()
{
valores val;
strcpy(val, "Programação Estruturada II");
cout << "Tipo do usuário:" << val;
}
Estruturas, Uniões e Enumeração
Obrigado !!!
Prof. Thomás da Costa Programação Estruturada II

Más contenido relacionado

La actualidad más candente

Programação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código FonteProgramação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código Fontethomasdacosta
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01thomasdacosta
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completothomasdacosta
 
Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04thomasdacosta
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completothomasdacosta
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Yuri Camelo
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...Manuel Menezes de Sequeira
 
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling C
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling CAlgoritmos - Aula 10 A - Traducao Do Port Est Para Ling C
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling CRodrigo Kiyoshi Saito
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...Manuel Menezes de Sequeira
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01thomasdacosta
 
Exercícios da Aula de LAB 03
Exercícios da Aula de LAB 03Exercícios da Aula de LAB 03
Exercícios da Aula de LAB 03thomasdacosta
 

La actualidad más candente (20)

Programação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código FonteProgramação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código Fonte
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completo
 
Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04
 
Aula 4 | Funções
Aula 4 | Funções Aula 4 | Funções
Aula 4 | Funções
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
Apostila C ANSI
Apostila C ANSIApostila C ANSI
Apostila C ANSI
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling C
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling CAlgoritmos - Aula 10 A - Traducao Do Port Est Para Ling C
Algoritmos - Aula 10 A - Traducao Do Port Est Para Ling C
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
599026
599026599026
599026
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01
 
Exercícios da Aula de LAB 03
Exercícios da Aula de LAB 03Exercícios da Aula de LAB 03
Exercícios da Aula de LAB 03
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 

Destacado

Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02thomasdacosta
 
LAB 03 - Programação Estruturada 2
LAB 03 - Programação Estruturada 2LAB 03 - Programação Estruturada 2
LAB 03 - Programação Estruturada 2thomasdacosta
 
Programação Estruturada 2 - Aula 04
Programação Estruturada 2 - Aula 04Programação Estruturada 2 - Aula 04
Programação Estruturada 2 - Aula 04thomasdacosta
 
Revisão - Funções
Revisão - FunçõesRevisão - Funções
Revisão - Funçõesthomasdacosta
 
LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2thomasdacosta
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05thomasdacosta
 

Destacado (6)

Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02
 
LAB 03 - Programação Estruturada 2
LAB 03 - Programação Estruturada 2LAB 03 - Programação Estruturada 2
LAB 03 - Programação Estruturada 2
 
Programação Estruturada 2 - Aula 04
Programação Estruturada 2 - Aula 04Programação Estruturada 2 - Aula 04
Programação Estruturada 2 - Aula 04
 
Revisão - Funções
Revisão - FunçõesRevisão - Funções
Revisão - Funções
 
LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05
 

Similar a Programação Estruturada 2 - Aula 03

Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03thomasdacosta
 
Programação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código FonteProgramação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código Fontethomasdacosta
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaLeinylson Fontinele
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasdiogoa21
 
04 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.004 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.0César Augusto Pessôa
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)Márcio Rizzatto
 
As Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoAs Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoPaulo Morgado
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 

Similar a Programação Estruturada 2 - Aula 03 (20)

Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Aula 7 pc - estrutura
Aula 7   pc - estruturaAula 7   pc - estrutura
Aula 7 pc - estrutura
 
Programação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código FonteProgramação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código Fonte
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 
Ed1
Ed1Ed1
Ed1
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Algoritmos - Aula 16 - Registros
Algoritmos - Aula 16 - RegistrosAlgoritmos - Aula 16 - Registros
Algoritmos - Aula 16 - Registros
 
9 structs e ponteiros
9   structs e ponteiros9   structs e ponteiros
9 structs e ponteiros
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Estruturas
EstruturasEstruturas
Estruturas
 
04 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.004 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.0
 
Ativ complementar etapa 02
Ativ complementar etapa 02Ativ complementar etapa 02
Ativ complementar etapa 02
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
As Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoAs Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPonto
 
Aula 7
Aula 7 Aula 7
Aula 7
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 

Más de thomasdacosta

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 

Más de thomasdacosta (20)

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 

Programação Estruturada 2 - Aula 03

  • 1. Programação Estruturada II Aula 03 – Estruturas, Uniões e Enumeração Prof. Thomás da Costa thomasdacosta@gmail.com Anhanguera – 2015.1
  • 2. Estruturas, Uniões e Enumeração ESTRUTURAS, UNIÕES E ENUMERAÇÃO Prof. Thomás da Costa Programação Estruturada II
  • 3. Estruturas, Uniões e Enumeração O que é: É um conjunto de variáveis que representam características de um determinado domínio ou de um tipo. A estrutura pode definir uma entidade e possui grande semelhança com registros de banco de dados. O agrupamento de variáveis pode ser de qualquer tipo, sendo denominado de membro da estrutura. Estruturas Prof. Thomás da Costa Programação Estruturada II
  • 4. Estruturas, Uniões e Enumeração Exemplo: Quais são as informações de um Aluno para a Faculdade? - Nome - Matrícula - Série - Turma - Curso No exemplo acima temos a estrutura Aluno que contém as informações ou as características de um aluno. Muito semelhante a um registro de banco de dados. Podemos dizer que em uma estrutura, estamos armazenando informações agrupadas logicamente. Estruturas Prof. Thomás da Costa Programação Estruturada II
  • 5. Estruturas, Uniões e Enumeração Mais um exemplo: Quais as informações de um Funcionário para uma Empresa? - Nome - Dados Pessoais - Data de Admissão - Cargo - Salário - Setor/Área de Atuação Estruturas Prof. Thomás da Costa Programação Estruturada II Vamos ver como fazer uma estrutura em C/C++ !!!
  • 6. Estruturas, Uniões e Enumeração Estruturas em C/C++: Estruturas Prof. Thomás da Costa Programação Estruturada II struct aluno { char nome[255]; int ra; int serie; int turma; char curso[100]; }; Nome da estrutura Palavra reservada que identifica uma estrutura Membros da estrutura Chaves definem o início e o fim da estrutura Termina com ponto e vírgula
  • 7. Estruturas, Uniões e Enumeração Memória: Uma estrutura armazena vários tipos de dados e ocupa a memória de acordo com a quantidade de membros declarados na estrutura. Estruturas Prof. Thomás da Costa Programação Estruturada II struct aluno { char nome[255]; int ra; int serie; int turma; char curso[100]; }; Membro Bytes char nome[255] 255 int ra 4 int serie 4 int turma 4 char curso[100] 100 TOTAL: 367
  • 8. Estruturas, Uniões e Enumeração Uma curiosidade: Para saber o tamanho de um tipo de dado ou variável usamos o operador sizeof. Os tamanhos podem variar de computador, compilador e sistema operacional. Estruturas Prof. Thomás da Costa Programação Estruturada II #include <iostream> using namespace std; int main() { cout << "Tam. do CHAR:" << sizeof(char) << endl; cout << "Tam. do INT:" << sizeof(int) << endl; cout << "Tam. do DOUBLE:" << sizeof(double) << endl; cout << "Tam. do FLOAT:" << sizeof(float) << endl; }
  • 9. Estruturas, Uniões e Enumeração Estruturas Prof. Thomás da Costa Programação Estruturada II struct aluno { char nome[255]; int ra; int serie; int turma; char curso[100]; } aluno_anhanguera; struct aluno aluno_tecnologia; aluno aluno_curso; Declarando uma variável do tipo Estrutura: Existem 3 formas de declarar uma variável de estrutura:
  • 10. Estruturas, Uniões e Enumeração Acessando membros de uma estrutura: Para acessar um membro de uma estrutura utilizamos o operador ponto (.) Estruturas Prof. Thomás da Costa Programação Estruturada II ... struct aluno { char nome[255]; int ra; int serie; int turma; char curso[100]; } aluno_anhanguera; ... int main() { cout << aluno_anhanguera.nome << endl; } Acessando um membro O membro “nome” da estrutura será impresso na tela
  • 11. Estruturas, Uniões e Enumeração Atribuindo valores para membros de uma função: Estruturas Prof. Thomás da Costa Programação Estruturada II #include <iostream> using namespace std; struct demonstracao { char caracter; double valor1; float valor2; int valor3; } demo; int main() { demo.caracter = 'A'; demo.valor1 = 3.2; demo.valor2 = 6.7; demo.valor3 = 45; cout << demo.caracter << endl; cout << demo.valor1 << endl; cout << demo.valor2 << endl; cout << demo.valor3 << endl; } Atribuição de valores
  • 12. Estruturas, Uniões e Enumeração Atribuindo valores para membros de uma função: Estruturas Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; struct demonstracao { char string[100]; int vetor_inteiro[10]; double vetor_double[5]; } demo; int main() { strcpy(demo.string, "Valor da String:"); demo.vetor_inteiro[0] = 1; demo.vetor_inteiro[2] = 2; demo.vetor_double[4] = 5.6; cout << demo.string << endl; cout << demo.vetor_inteiro[0] << endl; cout << demo.vetor_inteiro[2] << endl; cout << demo.vetor_double[4] << endl; } Vetor de char usar strcpy Atribuição de valores em vetores
  • 13. Estruturas, Uniões e Enumeração Atribuindo valores para membros de uma função: Estruturas Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; struct demonstracao { char string[100]; char caracter; int valor_inteiro; double valor_double; } demo; int main() { cout << "Digite o valor da string:" << endl; gets(demo.string); cout << "Digite os valores:" << endl; cin >> demo.caracter >> demo.valor_inteiro >> demo.valor_double; cout << "Valores digitados:" << demo.string << "," << demo.caracter << "," << demo.valor_inteiro << "," << demo.valor_double << endl; } O cin funciona da mesma forma em um membro de uma estrutura O gets funciona da mesma forma em um membro de uma estrutura
  • 14. Estruturas, Uniões e Enumeração Resumo: - É definida pela palavra struct - Possuem um nome - Representa algum domínio, tipo ou uma entidade - Os tipos de uma estrutura são agrupadas logicamente - Composta de membros que são tipos de variáveis (int, double, float, char) - Seus membros são acessados utilizando o ponto (.) - Para atribuir valores (int, double, char e etc), utilizamos o operador igual (=), idêntico a atribuição de uma variável - Utilizamos o strcpy para atribuir um valor para um vetor de char - Os comandos cin e gets funcionam da mesma forma para os membros de uma estrutura - Vetores também são acessado da mesma forma, através de seus índices Estruturas Prof. Thomás da Costa Programação Estruturada II
  • 15. Estruturas, Uniões e Enumeração Passando membros de uma estrutura como parâmetro: Estruturas em Funções Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; struct aluno { char nome[100]; int ra; } aluno_tecnologia; void imprimir_aluno(char *nome, int ra); int main() { cout << "Digite o nome do aluno:"; gets(aluno_tecnologia.nome); cout << "Digite o RA do aluno:"; cin >> aluno_tecnologia.ra; imprimir_aluno(aluno_tecnologia.nome, aluno_tecnologia.ra); } void imprimir_aluno(char *nome, int ra) { cout << nome << endl; cout << ra << endl; } Passamos os membros como parâmetro para a função
  • 16. Estruturas, Uniões e Enumeração Parâmetros por referência: Estruturas em Funções Prof. Thomás da Costa Programação Estruturada II ... void troca_aluno(char *nome, int &ra); int main() { ... troca_aluno(aluno_tecnologia.nome, aluno_tecnologia.ra); cout << aluno_tecnologia.nome; cout << aluno_tecnologia.ra; } void troca_aluno(char *nome, int &ra) { strcpy(nome, "Novo Aluno"); ra = 123456; } * e o & definem também, a passagem por referência. Trocando os valores da estrutura
  • 17. Estruturas, Uniões e Enumeração Estrutura como parâmetro (Por valor): Podemos passar uma estrutura inteira como parâmetro de uma função. Os parâmetros podem ser também por valor ou por referência Estruturas em Funções Prof. Thomás da Costa Programação Estruturada II ... void imprimir_aluno(struct aluno alu); int main() { ... imprimir_aluno(aluno_tecnologia); } void imprimir_aluno(struct aluno alu) { cout << alu.nome << endl; cout << alu.ra << endl; } Definindo a passagem de uma estrutura como parâmetro Passando a estrutura A palavra struct não é obrigatória na passagem do parâmetro
  • 18. Estruturas, Uniões e Enumeração Estrutura como parâmetro (Por referência): Estruturas em Funções Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; struct aluno { char nome[100]; int ra; }; void ler_aluno(struct aluno &alu); int main() { struct aluno aluno_tecnologia; ler_aluno(aluno_tecnologia); cout << aluno_tecnologia.nome << endl; cout << aluno_tecnologia.ra << endl; } void ler_aluno(struct aluno &alu) { cout << "Digite o nome do aluno:" << endl; gets(alu.nome); cout << "Digite o RA do aluno:" << endl; cin >> alu.ra; } & define, a passagem por referência.
  • 19. Estruturas, Uniões e Enumeração Vetores de Estruturas: Estruturas Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; struct aluno { char nome[100]; int ra; }; int main() { struct aluno alunos[10]; cout << "Digite o nome do 1º aluno:" << endl; gets(alunos[0].nome); cout << "Nome do 1º aluno:" << alunos[0].nome << endl; } Declarando um vetor de estruturasUtilizamos índices do vetor para mostrar o valor de um membro da estrutura
  • 20. Estruturas, Uniões e Enumeração Estruturas dentro de estruturas: Estruturas Prof. Thomás da Costa Programação Estruturada II struct curso { char nome_curso[255]; }; struct aluno { char nome[100]; int ra; struct curso cur; }; int main() { ... cout << alu.nome << endl; cout << alu.cur.nome_curso << endl; } Declarando a estrutura curso dentro de aluno Mostrando o nome_curso da estrutura curso declarada em aluno
  • 21. Estruturas, Uniões e Enumeração Prof. Thomás da Costa Programação Estruturada II
  • 22. Estruturas, Uniões e Enumeração Exemplo (Média): Estruturas Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; struct aluno { char nome[100]; double nota_b1; double nota_b2; }; double media(double nota_b1, double nota_b2); int main() { struct aluno alu; cout << "Nota B1:" << endl; cin >> alu.nota_b1; cout << "Nota B2:" << endl; cin >> alu.nota_b2; cout << "Media:" << media(alu.nota_b1, alu.nota_b2); } double media(double nota_b1, double nota_b2) { return (nota_b1 + nota_b2) / 2; }
  • 23. Estruturas, Uniões e Enumeração Exemplo (Aumentar Salário): Estruturas Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; struct funcionario { char nome[255]; char cargo[255]; double salario; int idade; }; void aumentar_salario(double &salario, int percen); int main() { struct funcionario func; cout << "Digite o salário:" << endl; cin >> func.salario; aumentar_salario(func.salario, 20); cout << "Novo salário:" << func.salario; } void aumentar_salario(double &salario, int percen) { double val = (percen / 100.0); salario = salario * (1 + val); } Todo mundo gosta desse exemplo !!!
  • 24. Estruturas, Uniões e Enumeração O que é: É um tipo de estrutura, aonde os membros compartilham a mesma posição de memória, criando código portável independente de máquina. Em sua forma geral, as uniões possuem algumas características das estruturas. Uniões Prof. Thomás da Costa Programação Estruturada II
  • 25. Estruturas, Uniões e Enumeração Como funciona: - As uniões utilizam o mesmo espaço de memória para todas as variáveis - Quando declaradas, o compilador cria um espaço de memória grande o suficiente para guardar o maior tipo de variável - Como o espaço é compartilhado entre os membros da união, precisamos nos preocupar com as informações que estão sendo gravadas - As uniões possuem algumas características das estruturas - A forma de acessar os membros e atribuir valores em um união, são iguais aos mostrados em estruturas Uniões Prof. Thomás da Costa Programação Estruturada II Vamos ver como fazer uma união em C/C++ !!!
  • 26. Estruturas, Uniões e Enumeração Uniões em C/C++: Uniões Prof. Thomás da Costa Programação Estruturada II Nome da união Palavra reservada que identifica uma união Membros da união Chaves definem o início e o fim da união Termina com ponto e vírgula union valor { int valor_1; float valor_2; double valor_3; char valor_4; };
  • 27. Estruturas, Uniões e Enumeração Memória: A união tem o tamanho do maior membro declarado, diferente da estrutura que possui o tamanho equivalente a soma de todos os membros. No exemplo abaixo a união possui 8 bytes. Uniões Prof. Thomás da Costa Programação Estruturada II union valor { int valor_1; float valor_2; double valor_3; char valor_4; }; Membro Bytes int valor_1 4 float valor_2 4 double valor_3 8 char valor_4 1 TOTAL: 8
  • 28. Estruturas, Uniões e Enumeração Exemplo: Uniões Prof. Thomás da Costa Programação Estruturada II #include <iostream> using namespace std; union valor_union { int valor_1; float valor_2; double valor_3; char valor_4; } valor; void imprimir(); int main() { cin >> valor.valor_1; imprimir(); cin >> valor.valor_2; imprimir(); cin >> valor.valor_3; imprimir(); cin >> valor.valor_4; imprimir(); } void imprimir() { cout << "Valores:" << endl; cout << valor.valor_1 << endl; cout << valor.valor_2 << endl; cout << valor.valor_3 << endl; cout << valor.valor_4 << endl; }
  • 29. Estruturas, Uniões e Enumeração O que é: É um tipo de dado, que possui um conjunto de números inteiros constantes, que definem os possíveis valores válidos para a enumeração. Muito semelhante a um vetor de inteiro. Enumeração Prof. Thomás da Costa Programação Estruturada II
  • 30. Estruturas, Uniões e Enumeração Vamos pensar: Quais são as nossas despesas mensais? - Aluguel - Faculdade - Celular - Internet - Conta de Água - Conta de Luz - Carro Essas informações definem uma enumeração chamada despesas. Podemos criar um programa, que efetue o cálculo das despesas mensais, de acordo com o salário digitado do usuário. Essa enumeração define um tipo ou uma faixa de tipos constantes que podemos utilizar no nosso programa. Enumeração Prof. Thomás da Costa Programação Estruturada II
  • 31. Estruturas, Uniões e Enumeração Vamos pensar: Quais são as cores de uma caixa de lápis de cor? - Azul - Vermelho - Amarelo - Verde - Preto - Branco - Laranja Essas informações definem uma enumeração chamada cores. Enumeração Prof. Thomás da Costa Programação Estruturada II Vamos ver como fazer uma enumeração em C/C++ !!!
  • 32. Estruturas, Uniões e Enumeração Enumerações em C/C++: Enumeração Prof. Thomás da Costa Programação Estruturada II Nome do enum Palavra reservada que identifica um enum Valores inteiros de um enum Chaves definem o início e o fim do enum Termina com ponto e vírgula enum despesas { ALUGUEL, FACULDADE, CELULAR, INTERNET, CONTA_AGUA, CONTA_LUZ };
  • 33. Estruturas, Uniões e Enumeração Exemplo: Enumeração Prof. Thomás da Costa Programação Estruturada II #include <iostream> using namespace std; enum despesas { ALUGUEL, FACULDADE }; int main() { int valor; cout << "Digite o tipo da despesa:" << endl; cin >> valor; switch (valor) { case ALUGUEL: { cout << "Aluguel"; break; } case FACULDADE: { cout << "Faculdade"; break; } default: { cout << "Não encontrado"; break; } } } No enum os valores dos membros começam com 0 e segue a sequência numérica
  • 34. Estruturas, Uniões e Enumeração Exemplo: Vamos modificar o programa feito no laboratório para utilizar enumeração. (Exercício 4 do nível básico). Enumeração Prof. Thomás da Costa Programação Estruturada II ... enum opcoes { INCLUIR = 1, LISTAR = 2, SAIR = 0 }; ... if (opcao == INCLUIR) { cout << "Digite o produto:" << endl; cin >> produto; incluir_produto(produto); } if (opcao == LISTAR) listar_produto(); if (opcao == SAIR) break; system("cls"); ... Podemos atribuir valores fixos para o enum
  • 35. Estruturas, Uniões e Enumeração Definição: Quando precisamos definir novos nomes a determinados tipos de dados, utilizamos o operador typedef. Não criamos um novo tipo de variável, somente um “apelido” para um tipo existente. Tipos definidos pelo Usuário Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <strings.h> using namespace std; typedef char valores[100]; int main() { valores val; strcpy(val, "Programação Estruturada II"); cout << "Tipo do usuário:" << val; }
  • 36. Estruturas, Uniões e Enumeração Obrigado !!! Prof. Thomás da Costa Programação Estruturada II