algoritmos escher. agenda estruturas heterogêneas; exercícios

28
Algoritmos Escher

Upload: internet

Post on 17-Apr-2015

120 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Algoritmos

Escher

Page 2: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Agenda

• Estruturas Heterogêneas;

• Exercícios.

Page 3: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Conceitos Iniciais

Motivação: Tipos básicos:

Tipos de Dados InteirosTipos de Dados ReaisTipos de Dados Caracteres (String)

Variáveis guardam um só valor. Tipos de Dados Homogêneos

Vetores e Matrizes

Variáveis guardam coleções de objetos de mesmo tipo. Como guardar coleções de tipos diversos?

Page 4: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Conceitos Iniciais

Estruturas Heterogêneas – Estrutura (Struct):

Para armazenar, ou agrupar, informações “relacionadas” que têm tipos diferentes deve-se utilizar variáveis do tipo registro, ou estrutura (struct).

structs armazenam diversos itens de uma só vez;

Isto significa, que numa mesma estrutura de dados, é possível ter diversas variáveis de tipos de dados básicos agrupadas.

Page 5: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Conceitos Iniciais

Estruturas Heterogêneas – Estrutura (Struct):

Contém um número fixo de elementos chamados de campos, ou “membros”;

Os campos podem ser de tipos diferentes (estrutura heterogênea);

Cada campo tem um nome próprio chamado de “identificador de campo”, onde campo = unidade de registro.

Page 6: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Campos x Registros:

Registros - informações do cadastro. Campos - informações do registro.

Os clientes de uma empresanome, endereço, e-mail, cpf, ...

Os assinantes da lista telefônicanome, telefone, endereço

Os alunos da disciplina de Matemáticamatrícula, nome, faltas, notas bimestrais, situação

Page 7: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Contextualizando:

Considere que seja informado o nome de um aluno e suas quatro notas bimestrais que deverão ser agrupadas.

Esquema de um registro (struct) de aluno formado pelos campos: Nome, Primeira Nota, Segunda Nota, Terceira Nota e Quarta Nota.

Cadastro de Notas Escolares

Nome..........:_______________________Primeira Nota.: ________Segunda Nota..: ________Terceira Nota.: ________Quarta Nota...: ________

Page 8: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Sintaxe:

Na linguagem C, os registros (ou structs) devem ser definidos antes das declarações das variáveis, pois é muito

comum ocorrer a necessidade de se declarar uma ou mais variáveis com o tipo de registro definido, conforme a seguinte sintaxe:

Page 9: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - structSintaxe:

// declaração da variável do tipo registro definido,

struct <IdentificadorDoRegistro> <NomeDaVariável>;

IdentificadorDoRegistro: nome do tipo registro definido lista dos tipos e seus campos: relação de tipos e campos do registro.NomeDaVariável: nome da variável declarada a partir do tipo registro definido anteriormente.

// definição do tipo registro, ou seja, definição da struct

struct <IdentificadorDoRegistro>{ <lista dos tipos e seus campos (ou membros)>;};

Page 10: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Campos (ou membros):

struct <IdentificadorDoRegistro>{ <tipo1> <campo1>; <tipo2> <campo2>; ... <tipoN> <campoN>; };

onde:campo1, campo2, ..., campoN: representam os nomes associados a cada campo do registro;tipo1, tipo2, ..., tipoN: representam qualquer um dos tipos básicos ou ‘tipo anteriormente definido’.

Page 11: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Definindo uma struct - Exemplo:

Considere :

Ling. C:

Cadastro de Notas Escolares

Nome..........:_______________________Primeira Nota.: ________Segunda Nota..: ________Terceira Nota.: ________Quarta Nota...: ________

// definição do tipo registro CNotasEscolarstruct CNotasEscolar { char nome[35]; float nota1, nota2; float nota3, nota4;};

Page 12: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Campos (ou membros):

// declaração da variável Aluno declarada a partir do tipo registro CNotasEscolar

struct CNotasEscolar Aluno;

Este exemplo corresponde à definição de um modelo de um registro (CNotasEscolar) e à criação de uma área de memória chamada Aluno, capaz de conter cinco subdivisões, ou campos: nome, nota1, nota2, nota3 e nota4.

Page 13: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Como acessar os Campos (ou membros):

Para utilizar um campo específico do registro, deve-se diferenciar esse campo. Para tal, utiliza-se o caractere “.” (ponto) para estabelecer a separação do nome da variável registro do nome do campo.

struct CNotasEscolar { char nome[35]; float nota1, nota2; float nota3, nota4;};struct CNotasEscolar Aluno;// para acessar nota1 faremos:Aluno.nota1 = 10.0;

Para denotar tipos estruturadosregistro (struct)

ponto

Page 14: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Operações Básicas com Struct:

Do mesmo modo que acontece com variáveis simples, também é possível realizar operações de atribuição (=), leitura (cin) e escrita (cout) com variáveis tipo struct.

struct RgAluno { char nome[35]; float nota1; float nota2;}; struct RgAluno Aluno, NewAluno;

NewAluno = Aluno;

Neste caso o acesso ao registro é feito genericamente, ou seja, todos os campos do registro são envolvidos na operação de atribuição.

Page 15: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Lendo e Escrevendo valor da struct:

cout << "Nota 1o. Bimestre: "; cin >> Aluno.nota1; cout << "Nota 2o. Bimestre: "; cin >> Aluno.nota2;

cout << "\n\n\nNome do Aluno: " << Aluno.nome; cout << "\nNota 1o. Bimestre: " << Aluno.nota1; cout << "\nNota 2o. Bimestre: " << Aluno.nota2;

cout << "Nome do Aluno: "; cin >> Aluno.nome;

Page 16: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas – Exercícios

1. Crie uma estrutura com os campos:– Nome– Endereco– Idade

Leia a estrutura acima definida; Escreva a mensagem “maior de idade” se idade >

18; Escreva os dados da estrutura.

2. Reescreva o programa acima para 5 pessoas;

Page 17: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Campos do registro declarados como vetor:

Para manipular um campo do registro do tipo vetor deve-se obedecer às manipulações próprias de cada estrutura de dados, ou seja:

Aluno.nota[1] = 7.5; cin << Aluno.nota[3];

struct RgAluno { char nome[35]; float nota [4];};struct RgAluno Aluno;

Cadastro de Notas EscolaresNome.: _____________________

0 1 2 3

Nota.:

Page 18: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas – Exercícios

3. Crie uma estrutura conforme RgAluno no slide anterior:

Leia a estrutura; Calcule a média; Escreva os dados da estrutura e mostre a média;.

4. Reescreva o programa acima para 5 pessoas;

Page 19: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Vetor de Registros:

Para controlar as notas de 30 alunos, numerados de 0 até 29 seqüencialmente, basta criar um vetor no qual cada posição é um elemento do tipo registro RgAluno.

cin << Aluno[1].nome; cin << Aluno[i].nota[1];

struct RgAluno { char nome[35]; float nota [4];};struct RgAluno Aluno [30];

Cadastro de Notas EscolaresNome.: _____________________

0 1 2 3

Nota.:

ALUNO [ ? ] 0 1 ...

29

Page 20: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas – Exercícios

5. Reescreva o programa do exercício 04 armazenando os dados das para 5 pessoas em um vetor.– Leia os dados da pessoa, calcule e armazene

a media e ao final imprima os dados das 5 pessoas.

Page 21: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas - struct

Utilizando struct dentro struct : Para cada nível da estrutura utiliza-se o caracter “.”

(ponto).

struct RgData { int dia; int mes; int ano;};

struct RgPessoa { char nome[35]; char sexo; struct RgData DtNascto;};struct RgPessoa Pessoa;

strcpy (Pessoa.nome, “Flavio Marcello"); Pessoa.sexo = ‘M’; Pessoa.DtNascto.dia = 30; Pessoa.DtNascto.mes = 11; Pessoa.DtNascto.ano = 1965;

Page 22: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Estruturas – Exercícios

6. Reescreva o programa do exercício 05 acrescentado a data de nascimento conforme exemplo do slide anterior.– Leia os dados da pessoa, calcule e armazene

a media e ao final imprima os dados das 5 pessoas.

Page 23: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Referências

Lopes, A. & Garcia, G. – Introdução a Programação.

Schildt – C Completo e Total.

Page 24: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

ObrigaObrigadodo

Page 25: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

E Agora???

Exercícios!!!

Page 26: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Exercícios Propostos1. Seja a estrutura para descrever uma agenda de endereços, contendo os

seguintes campos: nome: string de tamanho 30 idade: inteiro telefone: string de tamanho 10

Escrever a definição da estrutura agenda globalmente.Ler UM registro, e logo após escrever os dados lidos.

2. Alterar o programa do exercício anterior para ler 10 registros, imprimir os mesmos.

3. Alterar o o programa do exercício anterior passando para função a struct e quantidade de registro a ser lida. Faça também a impressão utilizando uma função para tal.

Page 27: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

FIFIMM

Page 28: Algoritmos Escher. Agenda Estruturas Heterogêneas; Exercícios

Solução Ex. 01

#include <iostream>using namespace std;

struct agenda { char nome[30]; int idade; char telefone[10];

};

int main(){ struct agenda Dagenda; cout << "\n Digite Nome : "; cin >> Dagenda.nome; cout << "\n Digite Idade : "; cin >> Dagenda.idade; cout << "\n Digite Telefone : "; cin >> Dagenda.telefone;

// A impressão dos dados cout << "\n Nome : " << Dagenda.nome; cout << "\n Endereco : " << Dagenda.idade; cout << "\n Telefone : " << Dagenda.telefone; cout << "\n\n";

//Parada na tela. cout << "\n\nPrograma executado com sucesso. "; getchar(); getchar();

//Sinaliza execucao do program sem problemas return (0);}