SlideShare une entreprise Scribd logo
1  sur  24
ESTRUTURAS
Profª Ms. Engª Elaine Cecília Gatto
Curso de Bacharelado em Engenharia de Computação
Universidade do Sagrado CoraçãO – USC
Bauru/SP
Estruturas: conceito/definição
• São coleções de variáveis relacionadas agrupadas sob um
único nome.
• Podem conter variáveis de muitos tipos de dados diferentes.
• São usadas para declarar registros a serem armazenados em
arquivo.
• Estruturas de dados mais complexas: listas, filas, pilhas e
árvores.
• Ponteiros e estruturas facilitam a formação dessas estruturas.
• Tipos de dados derivados (e não primitivos)
Declarações de Estruturas
• Declaração de uma estrutura:
struct card {
char * face;
char *suit;
};
• STRUCT é a palavra chave para estrutura;
• TAG DE ESTRUTURA: neste caso é a palavra CARD. A Tag de
Estrutura é usada para declarar variáveis desse tipo de
estrutura, é o identificador deste tipo de estrutura.
• As variáveis dentro da estrutura chamam-se MEMBROS.
• Não esquecer do ponto e vírgula ao final da declaração!
Declarações de Estruturas
• Obs.: dois tipos de estruturas diferentes podem ter membros
com o mesmo nome;
• Vetores e matrizes tem um único tipo. Exemplo um vetor de
reais ou uma matriz de inteiros.
• Estruturas podem ter vários tipos de dados diferentes.
Exemplo:
struct funcionario {
char nome[20];
char sobrenome[20];
int idade;
char sexo;
double salario;
};
Estrutura Autorreferenciada
• É uma estrutura que contém um membro que é um ponteiro
para o mesmo tipo de estrutura. São usadas para criar listas
interligadas. Exemplo:
struct funcionario2 {
char nome[20];
char sobrenome[20];
int idade;
char sexo;
double salario;
struct funcionario2 *ePtr; //estrutura autorreferenciada
}
Declarações de variáveis de
tipos de estrutura
• Declarações de estruturas não criam espaço na memória;
• Declarações de estruturas criam um novo tipo de dado;
• Esse novo tipo de dado é usado para declarar variáveis que então
ocupam espaço na memória;
• Exemplo:
struct card aCard, deck[52], *carPtr;
OU
struct card {
char *face;
char *suit;
} aCard, deck[52], *carPtr;
• aCard: é uma variável do tipo struct card;
• deck: é um vetor com 52 posições do tipo struct card;
• carPtr: é um ponteiro para struct card;
Nomes para tags de estruturas
• O nome para a tag de estrutura é opcional;
• Entretanto, sempre forneça um nome, é uma prática
recomendada;
• Escolha um nome significativo para a tag de estrutura. Isto
ajuda a tornar o programa mais legível e melhor
documentado.
• Se uma declaração de estrutura não tiver um nome para a tag
de estrutura, as variáveis do tipo da estrutura só poderão ser
declaradas na declaração da estrutura, e não em uma
declaração separada.
Operações que podem ser
realizadas nas estruturas
• Operações válidas:
• Atribuição de variáveis da estrutura a variáveis da estrutura de
mesmo tipo;
• Coleta de endereço de uma variável de estrutura (operador
&);
• Acesso aos membros de uma variável de estrutura;
• Uso do operador sizeof para determinar o tamanho de uma
variável de estrutura.
• NÃO PODEMOS:
• Comparar estruturas usando == e !=
Inicialização de estruturas
• Parecido com vetores e matrizes. Exemplo:
struct card aCard = {“Três”, “Copas”};
• Inicializa o membro da estrutura FACE com o valor TRÊS e o
membro SUIT com o valor COPAS.
• Atenção: se o número de inicializadores na lista for menor que
os membros na estrutura, os membros restantes serão
automaticamente inicializados em zero, ou NULL se o membro
for um ponteiro.
Acesso a membros da
estrutura
• Dois operadores são usados para acessar os membro de uma
estrutura:
• Operador de membro de estrutura ou operador de ponto ( . )
– é um ponto de fato!
• Operador de ponteiro de estrutura ou operador de seta (  )
– é uma seta de fato!
• Exemplo 1: printf(“%s”, aCard.suit);
• Exemplo 2: printf(“%s”, cardPtr->suit);
• Ambos imprimem na tela o conteúdo de SUIT;
Acesso a membros da
estrutura
/* Usando operadores de membro da estrutura e deponteiro da
estrutura */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
/* Declaração da estrutura da carta */
struct card {
char *face; //ponteiro
char * suit; //ponteiro
}; //fim da estrutura
Acesso a membros da
estrutura
int main(void){
struct card aCard; //declaração de variável
struct card *cardPtr; //declaração de ponteiro
//coloca strings em aCard
aCard.face = “Ás”;
aCard.suit = “Espadas”;
//atribui o endereço de aCard a cardPtr
cardPtr = &aCard;
printf(“ %s%s%s n %s%s%s n %s%s%s n ”,
aCard.face, “ de ”, aCard.suit,
cardPtr->face, “ de ”, cardPtr->suit,
(*cardPtr).face, “ de ”, (*cardPtr).suit);
return 0; //conclusão bem sucedida
}
Uso de estruturas com funções
• As estruturas podem ser passadas a funções ao:
• Passar membros da estrutura individuais;
• Passar uma estrutura inteira;
• Passar um ponteiro para uma estrutura;

• Quando as estruturas ou membros individuais da estrutura
são passados a uma função, eles são passados por valor;
• Os membros das estruturas passados por valor não podem
ser modificados pela função utilizada;
• Para passar uma estrutura por referência:
• Passe o endereço da variável da estrutura;
Uso de estruturas com funções
•
•
•
•

Um array pode ser passado por valor usando uma estrutura;
Para isto faça:
Crie uma estrutura que tenha o array como membro;
Estruturas são passadas por valor, de modo que o array
também é passado por valor;

• ERRO LÓGICO: supor que estruturas como arrays sejam
passadas automaticamente por referência e tentar modificar
os valores da estrutura passadas por valor na função utilizada;
• DICA: passar estruturas por referência é mais eficiente do que
passar estruturas por valor;
TYPEDEF
• TYPEDEF: oferece um mecanismo de criação de sinônimos
para tipos de dados previamente definidos;
• Usado para definir um tipo da estrutura, de modo que a tag da
estrutura não é necessária;
• Exemplo 1: typedef struct card Card;
• Exemplo 2:
typedef struct {
char *face;
char *suit;
} Card;
TYPEDEF
• A declaração anterior cria o tipo de estrutura Card sem a
necessidade de uma instrução typedef separada. Agora Card
pode ser usado para declarar variáveis do tipo struct card.
Card deck[52];
• Criar um novo nome com TYPEDEF não cria um novo tipo;
• Typedef simplesmente cria um novo nome de tipo, que pode
ser usado como um alias par aum nome de tipo existente;
• Use TYPEDEF para ajudar a tornar o seu programa mais
portável;
• Também pode ser usado para criar alias para os tipos de
dados básicos.
Exemplo 1
/* Cria uma estrutura para armazenar dados de um aluno */
#include <stdio.h>
#include <stdlib.h>
struct aluno {
int nmat; //número da matrícula
float nota[3]; //notas
float media; //média
};
Exemplo 1
int main () {
struct Aluno Jose; //declara uma variável do tipo struct
Jose.nmat = 456;
Jose.nota[0] = 7.5;
Jose.nota[1] = 5.2;
Jose.nota[2] = 8.4;
Jose.media = (Jose.nota[0] + Jose.nota[1] + Jose.nota[2])
/ 3.0;
printf(“Matrícula: %d n ”, Jose.nmat);
printf(“Média: %2f n ”, Jose.media);
system(“Pause”);
return 0;
}
Exemplo 2
/* estruturas aninhadas */
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int dia;
char mes[10];
int ano;
} Data;
typedef struct {
int pecas;
float preço
Data diavenda;
} Venda;
Exemplo 2
int main () {
static Venda A = {20, 110.0, {7, “novembro”, 2001}};
printf(“Peças: %d n”, A.pecas);
printf(“Preço: %d n”, A.preco);
printf(“Data: %d de %s de %d n”, A.diavenda.dia,
A.diavenda.mes, A.diavenda.ano);
system(“PAUSE”);
return 0;
}
Exemplo 3
/* Mostra a passagem de estruturas para funções por valor.
Mostra uma função que retorna uma estrutura */
#include <stdio.h>
#include <stdlib.h>
typedef struct Venda {
int pecas;
float preco;
} Venda;
Venda TotalVendas(Venda C, Venda D); //protótipo
Exemplo 3
int main () {
Venda A, B, Total;
printf(“ Venda A n ========== n”);
printf(“ Insira o número de peças”);
scanf(“%d”, &A.pecas);
printf(“ Insira o preço”);
scanf(“%d”, &A.preco);
printf(“ Venda B n ========== n”);
printf(“ Insira o número de peças”);
scanf(“%d”, &B.pecas);
printf(“ Insira o preço”);
scanf(“%d”, &B.preco);
Exemplo 3
//estruturas como argumento e retorno
Total = TotalVendas(A, B);
printf(“ n n Venda Total n ===========”);
printf(“ n Total de Peças %d.”, Total.pecas);
printf(“ n Preço Total: %.2f n”, Total.preco);
system(“PAUSE”);
return 0;
}
Venda TotalVendas(Venda C, Venda D) {
Venda T;
T.Pecas = C.pecas + D.pecas;
T.Preco = C.preco + D.preco;
Return T;
}
Exercícios
1. Forneça a definição para uma estrutura ESTOQUE que
contém um array de caracteres nomePeca[30], o inteiro
numPeca, o preço em ponto flutuante, o inteiro quantidade
e o inteiro pedido.
2. Forneça a definição para uma estrutura chamada endereço,
que contém os arrays de caracteres rua[25], cidade[20],
estado[2] e cep[8].
3. Forneça a definição para uma estrutura aluno que contém
os arrays nome[15] e sobrenome[15] e a variável endResid
do tipo struct endereço do exercício 2.

Contenu connexe

Tendances

Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em pptAndrei Bastos
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Karoline Tavares
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Introdução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresIntrodução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresMauro Pereira
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01thomasdacosta
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaLeinylson Fontinele
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaAdriano Teixeira de Souza
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosElaine Cecília Gatto
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação João Piedade
 
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Leinylson Fontinele
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 

Tendances (20)

Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Estrutura de Dados - Ponteiros
Estrutura de Dados - PonteirosEstrutura de Dados - Ponteiros
Estrutura de Dados - Ponteiros
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Introdução à Arquitetura de Computadores
Introdução à Arquitetura de ComputadoresIntrodução à Arquitetura de Computadores
Introdução à Arquitetura de Computadores
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memória
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de Algoritmos
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 

En vedette

Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic lilianakhjhjhjh
 
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
 
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
 
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
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
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
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
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
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basicDaniel Carrara
 

En vedette (20)

Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Funções em C
Funções em CFunções em C
Funções em C
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
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
 
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
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Linguagem C - Uniões
Linguagem C - UniõesLinguagem C - Uniões
Linguagem C - Uniões
 
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
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
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
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basic
 

Similaire à Linguagem C - Estruturas

Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06thomasdacosta
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03thomasdacosta
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em CElaine Cecília Gatto
 
Angular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopAngular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopGDGFoz
 
Java Desktop
Java DesktopJava Desktop
Java Desktopciceroclc
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIMario Guedes
 
Unidade4.1 Oracle Or
Unidade4.1 Oracle OrUnidade4.1 Oracle Or
Unidade4.1 Oracle OrUFU
 
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Denis L Presciliano
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Saulo Arruda
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 

Similaire à Linguagem C - Estruturas (20)

Aula 7 pc - estrutura
Aula 7   pc - estruturaAula 7   pc - estrutura
Aula 7 pc - estrutura
 
Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06
 
Ed1
Ed1Ed1
Ed1
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Angular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopAngular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & Desktop
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
 
Unidade4.1 Oracle Or
Unidade4.1 Oracle OrUnidade4.1 Oracle Or
Unidade4.1 Oracle Or
 
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2
 
Algoritmos - Aula 16 - Registros
Algoritmos - Aula 16 - RegistrosAlgoritmos - Aula 16 - Registros
Algoritmos - Aula 16 - Registros
 
Unidade05
Unidade05Unidade05
Unidade05
 
Java sintaxe
Java sintaxeJava sintaxe
Java sintaxe
 
Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Programação C - Aula 2
Programação C - Aula 2Programação C - Aula 2
Programação C - Aula 2
 
Sql
SqlSql
Sql
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 

Plus 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
 

Plus 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
 

Dernier

Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfEyshilaKelly1
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
Lírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxLírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxfabiolalopesmartins1
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfmirandadudu08
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 

Dernier (20)

Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdf
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Lírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxLírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptx
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdf
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 

Linguagem C - Estruturas

  • 1. ESTRUTURAS Profª Ms. Engª Elaine Cecília Gatto Curso de Bacharelado em Engenharia de Computação Universidade do Sagrado CoraçãO – USC Bauru/SP
  • 2. Estruturas: conceito/definição • São coleções de variáveis relacionadas agrupadas sob um único nome. • Podem conter variáveis de muitos tipos de dados diferentes. • São usadas para declarar registros a serem armazenados em arquivo. • Estruturas de dados mais complexas: listas, filas, pilhas e árvores. • Ponteiros e estruturas facilitam a formação dessas estruturas. • Tipos de dados derivados (e não primitivos)
  • 3. Declarações de Estruturas • Declaração de uma estrutura: struct card { char * face; char *suit; }; • STRUCT é a palavra chave para estrutura; • TAG DE ESTRUTURA: neste caso é a palavra CARD. A Tag de Estrutura é usada para declarar variáveis desse tipo de estrutura, é o identificador deste tipo de estrutura. • As variáveis dentro da estrutura chamam-se MEMBROS. • Não esquecer do ponto e vírgula ao final da declaração!
  • 4. Declarações de Estruturas • Obs.: dois tipos de estruturas diferentes podem ter membros com o mesmo nome; • Vetores e matrizes tem um único tipo. Exemplo um vetor de reais ou uma matriz de inteiros. • Estruturas podem ter vários tipos de dados diferentes. Exemplo: struct funcionario { char nome[20]; char sobrenome[20]; int idade; char sexo; double salario; };
  • 5. Estrutura Autorreferenciada • É uma estrutura que contém um membro que é um ponteiro para o mesmo tipo de estrutura. São usadas para criar listas interligadas. Exemplo: struct funcionario2 { char nome[20]; char sobrenome[20]; int idade; char sexo; double salario; struct funcionario2 *ePtr; //estrutura autorreferenciada }
  • 6. Declarações de variáveis de tipos de estrutura • Declarações de estruturas não criam espaço na memória; • Declarações de estruturas criam um novo tipo de dado; • Esse novo tipo de dado é usado para declarar variáveis que então ocupam espaço na memória; • Exemplo: struct card aCard, deck[52], *carPtr; OU struct card { char *face; char *suit; } aCard, deck[52], *carPtr; • aCard: é uma variável do tipo struct card; • deck: é um vetor com 52 posições do tipo struct card; • carPtr: é um ponteiro para struct card;
  • 7. Nomes para tags de estruturas • O nome para a tag de estrutura é opcional; • Entretanto, sempre forneça um nome, é uma prática recomendada; • Escolha um nome significativo para a tag de estrutura. Isto ajuda a tornar o programa mais legível e melhor documentado. • Se uma declaração de estrutura não tiver um nome para a tag de estrutura, as variáveis do tipo da estrutura só poderão ser declaradas na declaração da estrutura, e não em uma declaração separada.
  • 8. Operações que podem ser realizadas nas estruturas • Operações válidas: • Atribuição de variáveis da estrutura a variáveis da estrutura de mesmo tipo; • Coleta de endereço de uma variável de estrutura (operador &); • Acesso aos membros de uma variável de estrutura; • Uso do operador sizeof para determinar o tamanho de uma variável de estrutura. • NÃO PODEMOS: • Comparar estruturas usando == e !=
  • 9. Inicialização de estruturas • Parecido com vetores e matrizes. Exemplo: struct card aCard = {“Três”, “Copas”}; • Inicializa o membro da estrutura FACE com o valor TRÊS e o membro SUIT com o valor COPAS. • Atenção: se o número de inicializadores na lista for menor que os membros na estrutura, os membros restantes serão automaticamente inicializados em zero, ou NULL se o membro for um ponteiro.
  • 10. Acesso a membros da estrutura • Dois operadores são usados para acessar os membro de uma estrutura: • Operador de membro de estrutura ou operador de ponto ( . ) – é um ponto de fato! • Operador de ponteiro de estrutura ou operador de seta (  ) – é uma seta de fato! • Exemplo 1: printf(“%s”, aCard.suit); • Exemplo 2: printf(“%s”, cardPtr->suit); • Ambos imprimem na tela o conteúdo de SUIT;
  • 11. Acesso a membros da estrutura /* Usando operadores de membro da estrutura e deponteiro da estrutura */ #include <stdio.h> #include <conio.h> #include <stdlib.h> /* Declaração da estrutura da carta */ struct card { char *face; //ponteiro char * suit; //ponteiro }; //fim da estrutura
  • 12. Acesso a membros da estrutura int main(void){ struct card aCard; //declaração de variável struct card *cardPtr; //declaração de ponteiro //coloca strings em aCard aCard.face = “Ás”; aCard.suit = “Espadas”; //atribui o endereço de aCard a cardPtr cardPtr = &aCard; printf(“ %s%s%s n %s%s%s n %s%s%s n ”, aCard.face, “ de ”, aCard.suit, cardPtr->face, “ de ”, cardPtr->suit, (*cardPtr).face, “ de ”, (*cardPtr).suit); return 0; //conclusão bem sucedida }
  • 13. Uso de estruturas com funções • As estruturas podem ser passadas a funções ao: • Passar membros da estrutura individuais; • Passar uma estrutura inteira; • Passar um ponteiro para uma estrutura; • Quando as estruturas ou membros individuais da estrutura são passados a uma função, eles são passados por valor; • Os membros das estruturas passados por valor não podem ser modificados pela função utilizada; • Para passar uma estrutura por referência: • Passe o endereço da variável da estrutura;
  • 14. Uso de estruturas com funções • • • • Um array pode ser passado por valor usando uma estrutura; Para isto faça: Crie uma estrutura que tenha o array como membro; Estruturas são passadas por valor, de modo que o array também é passado por valor; • ERRO LÓGICO: supor que estruturas como arrays sejam passadas automaticamente por referência e tentar modificar os valores da estrutura passadas por valor na função utilizada; • DICA: passar estruturas por referência é mais eficiente do que passar estruturas por valor;
  • 15. TYPEDEF • TYPEDEF: oferece um mecanismo de criação de sinônimos para tipos de dados previamente definidos; • Usado para definir um tipo da estrutura, de modo que a tag da estrutura não é necessária; • Exemplo 1: typedef struct card Card; • Exemplo 2: typedef struct { char *face; char *suit; } Card;
  • 16. TYPEDEF • A declaração anterior cria o tipo de estrutura Card sem a necessidade de uma instrução typedef separada. Agora Card pode ser usado para declarar variáveis do tipo struct card. Card deck[52]; • Criar um novo nome com TYPEDEF não cria um novo tipo; • Typedef simplesmente cria um novo nome de tipo, que pode ser usado como um alias par aum nome de tipo existente; • Use TYPEDEF para ajudar a tornar o seu programa mais portável; • Também pode ser usado para criar alias para os tipos de dados básicos.
  • 17. Exemplo 1 /* Cria uma estrutura para armazenar dados de um aluno */ #include <stdio.h> #include <stdlib.h> struct aluno { int nmat; //número da matrícula float nota[3]; //notas float media; //média };
  • 18. Exemplo 1 int main () { struct Aluno Jose; //declara uma variável do tipo struct Jose.nmat = 456; Jose.nota[0] = 7.5; Jose.nota[1] = 5.2; Jose.nota[2] = 8.4; Jose.media = (Jose.nota[0] + Jose.nota[1] + Jose.nota[2]) / 3.0; printf(“Matrícula: %d n ”, Jose.nmat); printf(“Média: %2f n ”, Jose.media); system(“Pause”); return 0; }
  • 19. Exemplo 2 /* estruturas aninhadas */ #include <stdio.h> #include <stdlib.h> typedef struct { int dia; char mes[10]; int ano; } Data; typedef struct { int pecas; float preço Data diavenda; } Venda;
  • 20. Exemplo 2 int main () { static Venda A = {20, 110.0, {7, “novembro”, 2001}}; printf(“Peças: %d n”, A.pecas); printf(“Preço: %d n”, A.preco); printf(“Data: %d de %s de %d n”, A.diavenda.dia, A.diavenda.mes, A.diavenda.ano); system(“PAUSE”); return 0; }
  • 21. Exemplo 3 /* Mostra a passagem de estruturas para funções por valor. Mostra uma função que retorna uma estrutura */ #include <stdio.h> #include <stdlib.h> typedef struct Venda { int pecas; float preco; } Venda; Venda TotalVendas(Venda C, Venda D); //protótipo
  • 22. Exemplo 3 int main () { Venda A, B, Total; printf(“ Venda A n ========== n”); printf(“ Insira o número de peças”); scanf(“%d”, &A.pecas); printf(“ Insira o preço”); scanf(“%d”, &A.preco); printf(“ Venda B n ========== n”); printf(“ Insira o número de peças”); scanf(“%d”, &B.pecas); printf(“ Insira o preço”); scanf(“%d”, &B.preco);
  • 23. Exemplo 3 //estruturas como argumento e retorno Total = TotalVendas(A, B); printf(“ n n Venda Total n ===========”); printf(“ n Total de Peças %d.”, Total.pecas); printf(“ n Preço Total: %.2f n”, Total.preco); system(“PAUSE”); return 0; } Venda TotalVendas(Venda C, Venda D) { Venda T; T.Pecas = C.pecas + D.pecas; T.Preco = C.preco + D.preco; Return T; }
  • 24. Exercícios 1. Forneça a definição para uma estrutura ESTOQUE que contém um array de caracteres nomePeca[30], o inteiro numPeca, o preço em ponto flutuante, o inteiro quantidade e o inteiro pedido. 2. Forneça a definição para uma estrutura chamada endereço, que contém os arrays de caracteres rua[25], cidade[20], estado[2] e cep[8]. 3. Forneça a definição para uma estrutura aluno que contém os arrays nome[15] e sobrenome[15] e a variável endResid do tipo struct endereço do exercício 2.