SlideShare uma empresa Scribd logo
1 de 24
UNIÕES
Profª Ms. Engª Elaine Cecília Gatto
Curso de Bacharelado em Engenharia de Computação
Universidade do Sagrado CoraçãO – USC
Bauru/SP
Uniões
• Uma união é um tipo de dado derivado com membros que
compartilham o mesmo espaço de armazenamento.
• Para diferentes situações em um programa, algumas variáveis
podem não ser relevantes, mas outras variáveis o são, de
modo que uma união compartilha o espaço em vez de
desperdiçar armazenamento em variáveis que não são mais
usadas.
• Os membros de uma união podem ser de qualquer tipo de
dado.
Uniões
• O número de bytes usados para armazenar uma união precisa
ser, pelo menos, o suficiente para manter o maior membro.
• Na maior parte dos casos, as uniões contêm dois ou mais tipos
de dados.
• Apenas um membro e, portanto, um tipo de dado, pode ser
referenciado a cada vez.
• É de responsabilidade do programador garantir que os dados
em uma união sejam referenciados com o tipo apropriado.
UNIÕES
• Estruturas são
relacionadas.

usadas

para

armazenar

informações

• Quando você cria uma estrutura o programa armaneza espaço
em memória suficiente para conter todos os dados daquela
estrutura.
• No entanto, algumas vezes você pode querer usar apenas um
dado de cada estrutura.
UNIÕES
• Por exemplo: numa estrutura que indica horas trabalhadas
(para funcionários de escritório) e produção (para empregados
que ganham por comissão) você vai utilizar apenas um dado
da estrutura, ou ele é funcionário de escritório ou de produção.
• Utilizando o operador union você faz com que o programa
armazene espaço suficiente para o maior dado, pois somente
será armazenado um. Com isso você economiza bastante
recurso de memória.
UNIÕES
union inteiro Flutuante {
int i; double d;
};
• Sabemos que um número inteiro (int) possui o tamanho 4
• Sabemos que o um número de precisão dupla (double) ocupa
8 bits
• Para poder acomodar qualquer um dos dois valores
declarados, a união vai reservar 8 bits.
• Num dado momento, apenas um dos números poderá ser
armazenado, nunca os dois juntos.
• Uma união funciona mais ou menos como um rascunho
ocupando um número fixo de bits na memória
UNIÕES
• Uniões empacotam estruturas. Como?
• Em um determinado programa criamos várias estruturas
ligeiramente diferentes que nunca serão usadas
simultaneamente.
• No momento em que são definidas e recebem valores, cada
uma delas ocupará determinado espaço na memória.
• Quando estivermos usado cada uma delas, uma grande área
da memória estará alocada, mas apenas uma pequena
porção, referente à estrutura em uso no momento, estará
sendo utilizada.
UNIÕES
• A união reserva um espaço correspondente à maior estrutura
da lista
• O resultado é que se troca a soma dos espaços necessários
para cada estrutura, pelo espaço necessário para a maior
delas.
• Cada vez que quisermos trabalhar com uma das estruturas,
podemos copiar a mesma para a união, porque temos a
certeza de que haverá espaço suficiente para contê-la.
• Uniões são uma forma prática e elegante de economizar
memória!
UNIÕES
• Estruturas são excelentes para manter a ordem e tornarem o
código fonte legível.
• Estruturas são práticas, rápidas e eficientes
• São utilizadas com frequência em aplicativos e sistemas
operacionais que dependam de desempenho e de
confiabilidade.
• As uniões, por sua vez, garantem um melhor aproveitamento
da memória.
Declarações de Uniões
• Uma união é declarada com a palavra-chave union no mesmo
formato de uma estrutura.
union numero {
int x;
double y;
}
• A declaração acima indica que número é um tipo union com
os membros int x e double y.
• A declaração da união normalmente é colocada no cabeçalho
e incluída em todos os arquivos-fonte que usam o tipo união.
Declarações de Uniões
• Assim como a declaração de struct, uma declaração de union
simplesmente cria um novo tipo.
• Colocar uma declaração de union ou struct fora de uma
função não cria uma variável global.

• Uma union é o meio pelo qual um pedaço de memória é
tratado ora como uma variável de um certo tipo, ora como
outra variável de outro tipo.
• Uniões podem ser usadas para poupar memória.
• Uma struct aloca um espaço diferente de memória para cada
membro.
Operações que podem ser
realizadas em uniões
• As operações que podem ser realizadas em uma união são as
seguintes:
• Atribuição de uma união a outra união do mesmo tipo;
• Coleta do endereço (&) de uma variável de união;
• Acesso dos membros da união usando o operador de membro
da estrutura e o operador de ponteiro da estrutura;
• As uniões não podem ser comparadas com os operadores == e !=
pelos mesmos motivos pelos quais as estruturas não podem ser
comparadas.
Inicialização de uniões em
declarações
• Em uma declaração, uma união pode ser inicializada com um valor
do mesmo tipo que o primeiro membro da união.
• Por exemplo, com a união anterior, a declaração
union número valor = { 10 };
• é uma inicialização válida de uma variável de união valor, pois a
união é inicializada com um int
Demonstração de Uniões
• O programa a seguir usa a variável VALUE do tipo UNION
NUMBER para exibir o valor armazenado na união como um
INT e um DOUBLE.
• A saída do programa depende da implementação.

• A saída do programa mostra que a representação interna de
um valor DOUBLE pode ser muito diferente da representação
de INT.
• Uniões são tipos de dados que armazenam um único membro
por vez.
• Os membros de uma union representam os diversos tipos de
dados que ela pode conter.
Demonstração de Uniões
#include <stdio.h>
union number{
int x;
double y;
};
int main(void) {
union number value; //declara a variável de union
//coloca um inteiro na union
value.x = 100;
printf( “ %s n %s n %s n %d n n %s n %f n”,
“Coloca um valor no membro inteiro”,
“e mostra os dois membros.”,
“int:”, value.x,
“double:”, value.y);
Demonstração de Uniões
// coloca um double na mesma union
value.x = 100.0;
printf( “ %s n %s n %s n %d n n %s n %f n”,
“Coloca um valor no membro de ponto flutuante”,

“e mostra os dois membros.”,
“int:”, value.x,
“double:”, value.y);
return 0;
}
Constantes de Enumeração
• Essa enumeração cria um novo tipo, em que os identificadores
são definidos como os inteiros de 0 a 11, respectivamente.
• Para numerar os meses de 1 a 12, use a seguinte enumeração:
enum months {
jan = 1, fev, mar, abr, mai, jun, jul, ago, set, out, nov,
dez; }
• Como o primeiro valor nessa enumeração é explicitamente
definido como 1, os valores restantes serão incrementados a
partir de 1 resultando nos valores de 0 a 11.
Constantes de Enumeração
• Uma enumeração, introduzida pela palavra-chave enum, é um
conjunto de constantes de enumeração inteiras,
representadas por identificadores.
• Os valores em um enum começam com zero, a menos que
haja outras especificações, e são incrementados por 1.
• Exemplo:
enum months {
jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez
};
Constantes de Enumeração
• Os identificadores em uma enumeração precisam ser
exlusivos.
• O valor de cada constante em uma enumeração pode ser
definido explicitamente pela declaração que atribui um valor
ao identificador.
• Vários membros de uma enumeração podem ter o mesmo
valor constante.
• Tipos enumerados são usados quando conhecemos o
conjunto de valores que uma variável pode assumir.
• A variável desse tipo é sempre INT.
Constantes de Enumeração
#include <stdio.h>
enum months {
JAN = 1, FEV, MAR, ABR, MAI, JUN, JUL, AGO, SET, OUT, NOV, DEZ
};
int main(void) {
//pode conter qualquer um dos 12 meses
enum months month;

"Julho",

//inicializa array de ponteiros
const char *monthName[] = {"", "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
"Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};
//loop pelos meses
for( month=JAN; month <= DEZ; month++){
printf(" %2d %11s n", month, monthName[month]);
fflush(stdout);
}
return 0;

}
Constantes de Enumeração
Função ATOI() e ATOF()
• Função atoi():
• Recebe o endereço de uma string como argumento e o
converte para um valor inteiro.
• Caso a string não contenha um número válido, ela retornará
zero.
• Espaços em branco iniciais são ignorados.
• Função atof():
• Recebe o endereço de uma string como um argumento e o
converte em um valor double.
• Caso a string não contenha um número válido, ela retornará
zero.
• Espaços em branco iniciais são ignorados.
Função EXIT()
• Permite o término imediato do programa e passa o controle
ao sistema operacional.
• A função exit() finaliza o programa.
• O seu argumento é um número inteiro que é retornado ao
sistema operacional e pode ser acessado por meio do
subcomando ERRORLEVEL de um programa .BAT.
• O arquivo .BAT pode conter uma linha como IF ERRORLEVER 1
GOTO ERR1, o que provoca uma mudança de operação,
dependendo do valor de retorno indicado pelo término do
programa.
• O zero costuma ser usado para indicar o término normal do
programa.
Exercícios

Mais conteúdo relacionado

Mais procurados

Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Leinylson Fontinele
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 
Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em javaManoel Afonso
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Introdução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresIntrodução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresMauro Pereira
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)Márcio Rizzatto
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Aula 11 - Vetores unidimensionais - parte 1
Aula 11 - Vetores unidimensionais - parte 1Aula 11 - Vetores unidimensionais - parte 1
Aula 11 - Vetores unidimensionais - parte 1Pacc UAB
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresWillians Miyabara
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosjulianaveregue
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 

Mais procurados (20)

Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em java
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Introdução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresIntrodução à Arquitetura de Computadores
Introdução à Arquitetura de Computadores
 
Linguagem C - Operadores bit a bit
Linguagem C - Operadores bit a bitLinguagem C - Operadores bit a bit
Linguagem C - Operadores bit a bit
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Aula 11 - Vetores unidimensionais - parte 1
Aula 11 - Vetores unidimensionais - parte 1Aula 11 - Vetores unidimensionais - parte 1
Aula 11 - Vetores unidimensionais - parte 1
 
Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dados
 
Diagrama de blocos
Diagrama de blocosDiagrama de blocos
Diagrama de blocos
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Aula 6 - Cardinalidade
Aula 6 - CardinalidadeAula 6 - Cardinalidade
Aula 6 - Cardinalidade
 
Aula 06 - Sistema Binário
Aula 06 - Sistema BinárioAula 06 - Sistema Binário
Aula 06 - Sistema Binário
 
Aula 4 - Introducão a algoritmos
Aula 4 - Introducão a algoritmosAula 4 - Introducão a algoritmos
Aula 4 - Introducão a algoritmos
 

Destaque

C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPAlmir Neto
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDSPablo Silva
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic lilianakhjhjhjh
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloelliando dias
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrênciaPablo Silva
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basicDaniel Carrara
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmosPablo Silva
 
Algoritmos em c #1
Algoritmos em c #1Algoritmos em c #1
Algoritmos em c #1Stark2009
 

Destaque (20)

C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
Recursividade
RecursividadeRecursividade
Recursividade
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
 
Funções em C
Funções em CFunções em C
Funções em C
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basic
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 
Algoritmos em c #1
Algoritmos em c #1Algoritmos em c #1
Algoritmos em c #1
 

Semelhante a Linguagem C - Uniões

Semelhante a Linguagem C - Uniões (14)

Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
Aula 7 pc - estrutura
Aula 7   pc - estruturaAula 7   pc - estrutura
Aula 7 pc - estrutura
 
Unidade05
Unidade05Unidade05
Unidade05
 
Tecnicas programacao i_c_p5
Tecnicas programacao i_c_p5Tecnicas programacao i_c_p5
Tecnicas programacao i_c_p5
 
Ud3
Ud3Ud3
Ud3
 
(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos
 
Cap05
Cap05Cap05
Cap05
 
Cap05
Cap05Cap05
Cap05
 
Cap05
Cap05Cap05
Cap05
 
módulo 6 - dados_estruturados LP.pptx
módulo 6 - dados_estruturados LP.pptxmódulo 6 - dados_estruturados LP.pptx
módulo 6 - dados_estruturados LP.pptx
 
Matrizes e Vetores para programação
Matrizes e Vetores para programaçãoMatrizes e Vetores para programação
Matrizes e Vetores para programação
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03
 
Fascículo1java
Fascículo1javaFascículo1java
Fascículo1java
 
Curso De Algoritmo Aula 10
Curso De Algoritmo   Aula 10Curso De Algoritmo   Aula 10
Curso De Algoritmo Aula 10
 

Mais de Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaElaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaElaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCElaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxElaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarElaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesElaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationElaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfElaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoElaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsElaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoElaine Cecília Gatto
 

Mais de Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Último

Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Atividades sobre Coordenadas Geográficas
Atividades sobre Coordenadas GeográficasAtividades sobre Coordenadas Geográficas
Atividades sobre Coordenadas Geográficasprofcamilamanz
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptxPLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptxSamiraMiresVieiradeM
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaronaldojacademico
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfFernandaMota99
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 

Último (20)

Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Atividades sobre Coordenadas Geográficas
Atividades sobre Coordenadas GeográficasAtividades sobre Coordenadas Geográficas
Atividades sobre Coordenadas Geográficas
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptxPLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
PLANOS E EIXOS DO CORPO HUMANO.educacao física pptx
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riqueza
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdf
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 

Linguagem C - Uniões

  • 1. UNIÕES Profª Ms. Engª Elaine Cecília Gatto Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado CoraçãO – USC Bauru/SP
  • 2. Uniões • Uma união é um tipo de dado derivado com membros que compartilham o mesmo espaço de armazenamento. • Para diferentes situações em um programa, algumas variáveis podem não ser relevantes, mas outras variáveis o são, de modo que uma união compartilha o espaço em vez de desperdiçar armazenamento em variáveis que não são mais usadas. • Os membros de uma união podem ser de qualquer tipo de dado.
  • 3. Uniões • O número de bytes usados para armazenar uma união precisa ser, pelo menos, o suficiente para manter o maior membro. • Na maior parte dos casos, as uniões contêm dois ou mais tipos de dados. • Apenas um membro e, portanto, um tipo de dado, pode ser referenciado a cada vez. • É de responsabilidade do programador garantir que os dados em uma união sejam referenciados com o tipo apropriado.
  • 4. UNIÕES • Estruturas são relacionadas. usadas para armazenar informações • Quando você cria uma estrutura o programa armaneza espaço em memória suficiente para conter todos os dados daquela estrutura. • No entanto, algumas vezes você pode querer usar apenas um dado de cada estrutura.
  • 5. UNIÕES • Por exemplo: numa estrutura que indica horas trabalhadas (para funcionários de escritório) e produção (para empregados que ganham por comissão) você vai utilizar apenas um dado da estrutura, ou ele é funcionário de escritório ou de produção. • Utilizando o operador union você faz com que o programa armazene espaço suficiente para o maior dado, pois somente será armazenado um. Com isso você economiza bastante recurso de memória.
  • 6. UNIÕES union inteiro Flutuante { int i; double d; }; • Sabemos que um número inteiro (int) possui o tamanho 4 • Sabemos que o um número de precisão dupla (double) ocupa 8 bits • Para poder acomodar qualquer um dos dois valores declarados, a união vai reservar 8 bits. • Num dado momento, apenas um dos números poderá ser armazenado, nunca os dois juntos. • Uma união funciona mais ou menos como um rascunho ocupando um número fixo de bits na memória
  • 7. UNIÕES • Uniões empacotam estruturas. Como? • Em um determinado programa criamos várias estruturas ligeiramente diferentes que nunca serão usadas simultaneamente. • No momento em que são definidas e recebem valores, cada uma delas ocupará determinado espaço na memória. • Quando estivermos usado cada uma delas, uma grande área da memória estará alocada, mas apenas uma pequena porção, referente à estrutura em uso no momento, estará sendo utilizada.
  • 8. UNIÕES • A união reserva um espaço correspondente à maior estrutura da lista • O resultado é que se troca a soma dos espaços necessários para cada estrutura, pelo espaço necessário para a maior delas. • Cada vez que quisermos trabalhar com uma das estruturas, podemos copiar a mesma para a união, porque temos a certeza de que haverá espaço suficiente para contê-la. • Uniões são uma forma prática e elegante de economizar memória!
  • 9. UNIÕES • Estruturas são excelentes para manter a ordem e tornarem o código fonte legível. • Estruturas são práticas, rápidas e eficientes • São utilizadas com frequência em aplicativos e sistemas operacionais que dependam de desempenho e de confiabilidade. • As uniões, por sua vez, garantem um melhor aproveitamento da memória.
  • 10. Declarações de Uniões • Uma união é declarada com a palavra-chave union no mesmo formato de uma estrutura. union numero { int x; double y; } • A declaração acima indica que número é um tipo union com os membros int x e double y. • A declaração da união normalmente é colocada no cabeçalho e incluída em todos os arquivos-fonte que usam o tipo união.
  • 11. Declarações de Uniões • Assim como a declaração de struct, uma declaração de union simplesmente cria um novo tipo. • Colocar uma declaração de union ou struct fora de uma função não cria uma variável global. • Uma union é o meio pelo qual um pedaço de memória é tratado ora como uma variável de um certo tipo, ora como outra variável de outro tipo. • Uniões podem ser usadas para poupar memória. • Uma struct aloca um espaço diferente de memória para cada membro.
  • 12. Operações que podem ser realizadas em uniões • As operações que podem ser realizadas em uma união são as seguintes: • Atribuição de uma união a outra união do mesmo tipo; • Coleta do endereço (&) de uma variável de união; • Acesso dos membros da união usando o operador de membro da estrutura e o operador de ponteiro da estrutura; • As uniões não podem ser comparadas com os operadores == e != pelos mesmos motivos pelos quais as estruturas não podem ser comparadas.
  • 13. Inicialização de uniões em declarações • Em uma declaração, uma união pode ser inicializada com um valor do mesmo tipo que o primeiro membro da união. • Por exemplo, com a união anterior, a declaração union número valor = { 10 }; • é uma inicialização válida de uma variável de união valor, pois a união é inicializada com um int
  • 14. Demonstração de Uniões • O programa a seguir usa a variável VALUE do tipo UNION NUMBER para exibir o valor armazenado na união como um INT e um DOUBLE. • A saída do programa depende da implementação. • A saída do programa mostra que a representação interna de um valor DOUBLE pode ser muito diferente da representação de INT. • Uniões são tipos de dados que armazenam um único membro por vez. • Os membros de uma union representam os diversos tipos de dados que ela pode conter.
  • 15. Demonstração de Uniões #include <stdio.h> union number{ int x; double y; }; int main(void) { union number value; //declara a variável de union //coloca um inteiro na union value.x = 100; printf( “ %s n %s n %s n %d n n %s n %f n”, “Coloca um valor no membro inteiro”, “e mostra os dois membros.”, “int:”, value.x, “double:”, value.y);
  • 16. Demonstração de Uniões // coloca um double na mesma union value.x = 100.0; printf( “ %s n %s n %s n %d n n %s n %f n”, “Coloca um valor no membro de ponto flutuante”, “e mostra os dois membros.”, “int:”, value.x, “double:”, value.y); return 0; }
  • 17. Constantes de Enumeração • Essa enumeração cria um novo tipo, em que os identificadores são definidos como os inteiros de 0 a 11, respectivamente. • Para numerar os meses de 1 a 12, use a seguinte enumeração: enum months { jan = 1, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez; } • Como o primeiro valor nessa enumeração é explicitamente definido como 1, os valores restantes serão incrementados a partir de 1 resultando nos valores de 0 a 11.
  • 18. Constantes de Enumeração • Uma enumeração, introduzida pela palavra-chave enum, é um conjunto de constantes de enumeração inteiras, representadas por identificadores. • Os valores em um enum começam com zero, a menos que haja outras especificações, e são incrementados por 1. • Exemplo: enum months { jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez };
  • 19. Constantes de Enumeração • Os identificadores em uma enumeração precisam ser exlusivos. • O valor de cada constante em uma enumeração pode ser definido explicitamente pela declaração que atribui um valor ao identificador. • Vários membros de uma enumeração podem ter o mesmo valor constante. • Tipos enumerados são usados quando conhecemos o conjunto de valores que uma variável pode assumir. • A variável desse tipo é sempre INT.
  • 20. Constantes de Enumeração #include <stdio.h> enum months { JAN = 1, FEV, MAR, ABR, MAI, JUN, JUL, AGO, SET, OUT, NOV, DEZ }; int main(void) { //pode conter qualquer um dos 12 meses enum months month; "Julho", //inicializa array de ponteiros const char *monthName[] = {"", "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; //loop pelos meses for( month=JAN; month <= DEZ; month++){ printf(" %2d %11s n", month, monthName[month]); fflush(stdout); } return 0; }
  • 22. Função ATOI() e ATOF() • Função atoi(): • Recebe o endereço de uma string como argumento e o converte para um valor inteiro. • Caso a string não contenha um número válido, ela retornará zero. • Espaços em branco iniciais são ignorados. • Função atof(): • Recebe o endereço de uma string como um argumento e o converte em um valor double. • Caso a string não contenha um número válido, ela retornará zero. • Espaços em branco iniciais são ignorados.
  • 23. Função EXIT() • Permite o término imediato do programa e passa o controle ao sistema operacional. • A função exit() finaliza o programa. • O seu argumento é um número inteiro que é retornado ao sistema operacional e pode ser acessado por meio do subcomando ERRORLEVEL de um programa .BAT. • O arquivo .BAT pode conter uma linha como IF ERRORLEVER 1 GOTO ERR1, o que provoca uma mudança de operação, dependendo do valor de retorno indicado pelo término do programa. • O zero costuma ser usado para indicar o término normal do programa.