Buscar

Aula23 Estruturas2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Ti d d dTi d d d CCTipos de dadosTipos de dados CC
9 char 
9 int 
• simples
• estruturados
int 
9 float
9 doubleestruturados double9 ponteiros *
9 arranjos
9 estruturas 
9 arquivos
9 enumeraçõesç
Passagem de parâmetros tipo estruturaPassagem de parâmetros tipo estrutura
É• É indicado na declaração do parâmetro se ele 
é do tipo struct ou o typedef correspondente
typedef struct {
int dia, mes, ano;
} DATA; 
typedef struct pessoa { 
char nome[100];
int idade;
Passagem por VALOR! 
int idade;
DATA nasc; 
} PESSOA;
id t (PESSOA ) // id t ( t t )void mostrar (PESSOA x) // ou void mostrar (struct pessoa x)
{ 
printf ("Nome : %s\n", x.nome);
printf ("Idade : %d\n\n", x.idade);
i tf ("D t N %d/%d/%d\ " di )printf ("Data Nasc : %d/%d/%d\n", x.nasc.dia, x.nasc.mes, x.nasc.ano);
};
int main () 
{{ 
PESSOA p = {"Joao",23, {23, 9, 1964}};
mostrar (p); 
} 
Passagem de parâmetros por referência Passagem de parâmetros por referência 
• Para alterar o valor da variável deve ser • Para alterar o valor da variável, deve ser 
passado o endereço
typedef struct {int dia mes ano;} DATA;typedef struct {int dia,mes,ano;} DATA; 
typedef struct pessoa { 
char nome[100];[ ];
int idade;
float salario;
DATA nasc; 
Passagem por REFERÊNCIA! 
} PESSOA;
void ler (PESSOA *x) {
printf ("Nome : %s\n" (*x) nome);printf ( Nome : %s\n , ( x).nome);
printf ("Idade : %d\n\n", (*x).idade);
printf ("Data Nasc : %d/%d/%d\n", (*x).nasc.dia, (*x).nasc.mes, (*x).nasc.ano); 
};};
int main () {
PESSOA p;
ler(&p);
mostrar (p); } 
Precedência de Operadores Precedência de Operadores pp
(PESSOA p) (PESSOA *ptr) (PESSOA *ptr) ( E p)
Para leitura 
 ( )
(PESSOA ptr) 
Para leitura 
( E p )
Para leitura 
( (* ) )gets (p.nome) gets (*ptr.nome)gets( (*ptr).nome )
Operador Ponto tem maior precedência do que o Ponteiro
Compilador vai interpretar como *(ptr.Nome) , mas ptr 
não é do tipo estrutura. ERRO!!
Operador seta:Operador seta: -->>pp
• Utilizado em funções com parâmetro do tipo Ut l zado em funções com parâmetro do t po 
estrutura, onde ponteiros devem ser utilizados.
• Indica o acesso a um campo de uma estrutura por p p
meio de um ponteiro para esta estrutura.
• Escrever aluno-> media é o mesmo que escrever q
(*aluno).media.
• O parênteses é necessário porque o ● (ponto ) tem O parênteses é necessário porque o ● (ponto ) tem 
prioridade maior que o *.
Atenção: a notação com o operador seta é a de Atenção a notação com o operador seta é a de 
uso mais frequente.
ExercícioExercício
 f lh í• Ver folha de exercícios
ExercícioExercício
Defina em C um novo tipo denominadoDefina em C um novo tipo denominado
Passagem, conforme layout do bilhete de 
passagem de ônibus mostrado abaixo.passag m ôn us mostra o a a o.
Viação VIAJE BEMViação VIAJE BEM
Cod. Empresa: ______ Nome do Passageiro: _________________
O i D ti Origem: ___________ Destino: _____________
Data: ___/___/___ Horário: ____:____
Assento:___________ Valor do bilhete: ______________ .
// struct como parâmetro: precisa ser global!!!
typedef struct {typedef struct {
int dia, mes, ano;
} DATA ;
typedef struct {
int hora, min;,
} HORARIO; 
typedef structyp
{
int cod;
char nome_p[20];_p[ ]
char origem[20], destino[20];
DATA data_b;
HORARIO horario_b;_
int assento;
float valor; 
} BILHETE;}
ExercícioExercício
A partir da estrutura definida no item 1 A partir da estrutura definida no item 1, 
implemente as funções ler_bilhete e 
mostrar bilhete, que permitem, respectivamente, _ , q p , p ,
ler e mostrar todos os dados relativos a um 
determinado bilhete.
Observe que as funções devem receber a 
estrutura bilhete como parâmetro, o que implica o 
s d t i suso de ponteiros.
struct data
{
int dia, mes, ano;
};
// função que efetua a leitura dos dados de uma passagem:
void ler_bilhete (BILHETE *bilhete )
{
i f ("C d d E ")
}
struct horario
{
int hora, min;
};
 bilhprintf ("Cod. da Empresa: ");
scanf ("%d", &bilhete->cod); 
fflush(stdin);
printf ("Nome do Passageiro: ");
struct est_bilhete
{
int cod;
char nome_p[20];
h i [20] d tiprintf ( Nome do Passageiro: );gets ((*bilhete).nome_p);
printf ("Origem: ");
gets (bilhete->origem);
i tf ("D ti ")
char origem[20], destino
struct data data_b;
struct horario horario_b
int assento;
float valor; printf ("Destino: ");
gets (bilhete->destino);
printf ("Data do Bilhete (dd mm aa): ");
scanf ("%d%d%d", &bilhete->data b.dia, &bilhete->data b.mes, 
float valor; 
} BILHETE;
f ( , _ , _ ,
&bilhete->data_b.ano);
printf ("Horario do Bilhete (hh mm): ");
scanf ("%d%d", &(*bilhete).horario_b.hora, &bilhete->horario_b.min);
printf ("Assento: ");printf ( Assento: );
scanf ("%d", &bilhete->assento);
printf ("Valor do Bilhete: ");
scanf ("%f", &bilhete->valor);( )
}
struct data
{
int dia, mes, ano;
};
struct horariostruct horario
{
int hora, min;
};
struct est_bilhete
{
// função que efetua a impressão dos dados de uma passagem:
void mostra_bilhete ( BILHETE *bilhete )
{
{
int cod;
char nome_p[20];
char origem[20], destino
struct data data_b;
{
printf ("\nCod. da Empresa: %d", bilhete->cod);
printf ("\nNome do Passageiro: %s",bilhete->nome_p);
printf ("\nOrigem: %s " bilhete->origem);
struct horario horario_b;
int assento;
float valor; 
} BILHETE;
printf ( \nOrigem: %s ,bilhete->origem);
printf ("\nDestino: %s ",bilhete->destino);
printf ("\nData do Bilhete: %d/%d/%d", bilhete->data_b.dia,
bilhete->data_b.mes, bilhete->data_b.ano);_ , _ )
printf ("\nHorario do Bilhete: %d:%d hs.", bilhete->horario_b.hora, 
bilhete->horario_b.min);
printf ("\nAssento: %d", bilhete->assento);
i tf ("\ V l d Bilh t R$ % 2f \ \ " bilh t l )printf ("\nValor do Bilhete: R$ %.2f \n\n", bilhete->valor);
}
/* Name: viajebem.cpp Author: Cida Souto.
Date: 20/05/08 00:07 Description: definir tip
bilhete de passagem de onibus. */
#include <stdio.h>
// t t â t i l b l!!!// struct como parâmetro: precisa ser global!!!
typedef struct data
{
int dia, mes, ano;
}DATA ;
// programa principal:
int main( )
{ 
BILHETE ss m;
}DATA ;
typedef struct horario
{
int hora, min;
}HORA;
d f b lhBILHETE passagem;
ler_bilhete(&passagem);
mostra_bilhete(&passagem);
return 0;
typedef struct est_bilhete
{
int cod;
char nome_p[20];
char origem[20] destino[20];return 0;
}
char origem[20], destino[20];
DATA data_b;
HORARIO horario_b;
int assento;
float valor; float valor; 
} BILHETE ;
void ler_bilhete (BILHETE *bilhete )
.....
void mostra_bilhete (BILHETE *bilhete )
......
int main ( )int main ( )
{
} // fim de main

Outros materiais