Buscar

Aula 13

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ECT1203 Linguagem de Programação
2012.1
Prof. Diego Rodrigues de Carvalho
Profa. Idalmis Milián Sardina
Prof. Luiz Eduardo Cunha Leite
Prof. Marconi Câmara Rodrigues
Prof. Marcelo Henrique Ramalho Nobre
Aula 13 – Tipos Estruturados
Universidade Federal do Rio Grande do Norte
Escola de Ciências e Tecnologia
Hora de silenciar o celular
Manter o celular sempre desligado/silencioso quando estiver em sala de aula
Nunca atender o celular em sala de aula
Objetivo da Aula
Mostrar o que são tipos estruturados como funcionam e para que servem.
Esses são os objetivos da aula
Tipos Estruturados
Definição de novos tipos com struct
Elementos do struct
Exemplos
Exercícios
4
Motivação
Muitas vezes precisamos agrupar informações de tipos diferentes sob um mesmo nome.
Tipos Estruturados ou Estruturas de Dados Heterogêneas
Uma estrutura (struct) ou registro em C++ é uma coleção de um ou mais valores (possivelmente de tipos diferentes), agrupados sob um único nome. 
Estruturas constituem um recurso importante para organizar os dados utilizados por um programa graças à possibilidade de tratar um grupo de valores como uma única variável.
Uma estrutura é um tipo de dado cujo formato é definido pelo programador.
6
Definição de tipos estrutura
Elementos individuais de uma estrutura são chamados membros;
Membros podem ter tipos diferentes (primitivo, matriz ou struct);
O nome de uma estrutura agrega vários membros, enquanto os membros, individualmente, devem possuir identificadores únicos;
Como definir um tipo estrutura?
Definição de um tipo estrutura	
Sintaxe:
	struct <Nome da Estrutura>{
		<Tipo> <Identificadores>;
		<Tipo> <Identificadores>;
		...
	} ;
Exemplo:
	struct Data {
		int dia;
		int mes;
		int ano;
	} ;
	Cada identificador 
 define um membro
de uma estrutura
	A estrutura “Data” possui
	3 membros: dia, mês e ano
8
Exemplo de estrutura
	struct contaBancaria{
		char Nome[15];
		int ContaNo[10];
		double saldo;
		Data Niver;
	};
	
struct Estudante{
		char Nome[15];
		int Id;
		char Curso[20];
		char sexo;
	};
A estrutura Estudante 
tem 4 membros
A estrutura contaBancaria
tem uma estrutura simples, 
dois vetores e um tipo 
primitivo como membros
Declarando variáveis do tipo estrutura
Sintaxe: 
<Nome da Estrutura> <Lista de Identificadores>;
Exemplo:
	Estudante std1, std2;
	
std1
std2
Nome
Id		Sexo 
Curso
Nome
Id		Sexo 
Curso
10
Acesso aos elementos 
Chan Tai Man
12345 M
COMP
Os membros de um tipo estrutura são acessados com a utilização do operador ponto(.): 
	<variavel_struct>.<nome_membro>;
Exemplo:
	std1.Id = 12345;
std1.sexo = 'M';
strcpy(std1.Nome, "Chan Tai Man");
strcpy(std1.Curso, "COMP");
cout << “Estamos falando com o(a): ";
switch (std1.sexo){
	case 'F': cout << “Sra. "; break;
	case 'M': cout << “Sr. "; break;
}
cout << std1.Nome << endl;
std1
Nome
Id		Sexo
Curso
Exemplo para:
1-Definir tipo struct;
2- Declarar variável;
3- Usar variável;
(1)
(2)
(3)
Exercício
Distância entre pontos:
Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano, P(x1,y1) e P(x2,y2), escreva a distância entre eles. A fórmula que efetua tal cálculo é: d=sqrt((x2-x1)²+(y2-y1)²).
13
Estruturas aninhadas
Exemplos:
struct ponto{ 
 double x, y;
};
struct linha{
 ponto p1, p2;
};
struct triangulo{ 
 ponto p1, p2, p3;
};
triangulo T;
ponto P;
linha L;
Estruturas aninhadas
	struct linha{
	ponto p1, p2;
};
linha L;
 linha
 p1 p2
x y x y
Estruturas aninhadas
(4, 11)
(2, 7)
(6, 5)
(2, 0)
((8, 3)
Utilizando as estruturas anteriores:
Declare variáveis para representar cada uma das situações da figura ao lado, i. e., ponto, linha, triangulo;
Atribua os valores constantes no gráfico às variáveis criadas no item 1;
(10, 9)
Estruturas aninhadas
(4, 11)
(2, 7)
(6, 5)
(2, 0)
((8, 3)
(10, 9)
	ponto P;
linha L;
triangulo T;
	P.x = 4;
	P.y = 11;
	L.p1.x = 2;
	L.p1.y = 7;
	L.p2.x = 10;
	L.p2.y = 9;
	
	T.p1.x = 2;
	T.p1.y = 0;
	T.p2.x = 6;
	T.p2.y = 5;
	T.p3.x = 8;
	T.p3.y = 3;
(4, 11)
(2, 7)
(6, 5)
(2, 0)
((8, 3)
(10, 9)
Exercício
Controle de Estacionamento:
Crie uma estrutura chamada HORAIO, contendo três membros inteiros: hora, min, seg.
Crie uma estrutura chamada CARRO para armazenar dados dos veículos de um estacionamento. Essa estrutura deve ser capaz de armazenar a placa de um carro, o horário de entrada e o horário de saída do mesmo no estacionamento. Utilize a estrutura do item anterior para armazenar os horários.
Faça um programa que crie uma variável do tipo CARRO, leia do usuário a placa de um veículo e os horários de entrada e saída do mesmo em um estacionamento. Em seguida armazene os valores lidos na variável criada.
19
Vetor de estruturas
Um vetor de tipos primitivos: um tipo de dado em cada posição
Um vetor de estrutura: pode conter diferentes tipos de dados em cada posição do vetor
0 1 2 … 98 99
0 1 2 … 98 99
Vetor de estruturas
Exemplo:
Estudante Classe[100];
strcpy(Classe[98].Nome, "Chan Tai Man");
Classe[98].Id = 12345;
strcpy(Classe[98].Curso, "COMP");
Class[98].Sexo = 'M';
Class[0] = Class[98];
21
. . .
0 1 2 … 98 99
Chan Tai Man
12345 M
COMP
Vetor como membro de estrutura
Exemplo:
struct quadrado{
	ponto vertex[4];
};
quadrado Sq;
Assinalar valores para Sq usando os dados do gráfico. Ver código a seguir.
(4, 3)
(10, 3)
(4, 1)
(10, 1)
x y
x y
x y
x y
Criando um sistema para biblioteca
Defina o tipo livro, utilizando a palavra reservada struct, contendo as seguintes informações:
código, título e número de páginas
Sistema biblioteca
struct livro {
 int id;
 char titulo[50];
 int numero_de_paginas; 
};
int main(void) {
 livro biblioteca[10];
 for (int i=0; i<10; i++) {
 biblioteca[i].id = i; 
 cout<<"Dados do livro ID:<< i <<endl;
 cout<<“-Nome: ”;
 gets(biblioteca[i].titulo);
 cout<<“-Numero de Paginas:”;
 cin>>biblioteca[i].numero_de_paginas;
 } 
 
 for (int i=0; i<10; i++) {
 cout<<"Dados do livro ID:”<< i <<endl;
 cout<<“-Nome:”;
 puts(biblioteca[i].titulo);
 cout<<“-Numero de Paginas:”;
 cout<<biblioteca[i].numero_de_paginas;
 cout<<”\n------------------------\n”;
 } 
}
Sistema biblioteca
Como organizar a biblioteca com estantes, as estantes com prateleiras e as prateleiras com livros ?
Sistema biblioteca
struct livro {
 int id;
 char titulo[50];
 int numero_de_paginas; 
};
struct estante {
 livro prateleiras[5][10]; 
};
struct biblioteca{
 estante estantes[10]; 
};
int main(void) {
 biblioteca zilamamede;
 int i;
 for (i=0; i<10; i++) {
 livro l;
 l.id = i; 
 cout << "Dados do livro ID: “ << i ;
 cout << " - Nome:”;
 cin >> l.titulo;
	 cout << " - Numero de Paginas:";
 cin >> l.numero_de_paginas;
		zilamamede.estantes[0].prateleiras[0][i] = l;
 } 
 
 for (i=0; i<10; i++) {
 livro l;
 l = zilamamede.estantes[0].prateleiras[0][i];
 cout << "Dados do livro ID: “ << i;
 cout << " - Nome: “ << l.titulo;
 cout << " - Numero de Paginas: “ << l.numero_de_paginas;
 cout << “\n------------------------\n";
 } 
 return 0; 
}
Exercício
Agenda telefônica:
Construir um sistema em que o usuário possa cadastrar, alterar, remover, listar e procurar contatos.
29

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando