O documento descreve exemplos de implementação de registros em diferentes linguagens de programação para representar dados como:
1) Dados pessoais como nome, endereço, data de nascimento etc;
2) Exemplos de registros para livros, produtos, clientes e funcionários;
3) As linguagens abordadas são Pascal, C, Java e PHP.
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
Cap13 - Respostas dos Exercícios Propostos Livro Algoritmos e Programação de Computadores Autores JR., Dilermando
1. página: 1
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
C A P Í T U L O 1 3 - R e g i s t r o s
Exercício 1 – Verifique que outros atributos você poderia incluir!
A. VisuaAlg
A linguagem VisuAlg não possui implementação de registros.
B. Pascal
type
data = record
dia: integer;
mes: integer;
ano: integer;
end;
C. C
struct data {
int dia;
int mês;
2. página: 2
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
int ano;
};
D. Java
public class Data
{
public int dia;
public int mes;
public int ano;
//Método construtor, não é estritamente necessário
//mas facilita inicialização do objeto
Data()
{
this.dia = 1;
this.mes = 1;
this.ano = 1900;
}
//Método construtor, não é estritamente necessário
//mas facilita inicialização do objeto
Data(int d, int m, int a)
{
this.dia = d;
this.mes = m;
this.ano = a
}
}
E. PHP
A linguagem PHP é fracamente tipada, ou seja, o tipo da variável é definido em tempo de execução de
acordo com que lhe é atribuído.
A linguagem PHP prove classes no lugar de estruturas, sendo altamente similares.
class data {
public $dia;
public $mês;
public $ano;
};
Exercício 2 - Verifique que outros atributos você poderia incluir!
3. página: 3
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
A. VisuaAlg
A linguagem VisuAlg não possui implementação de registros.
B. Pascal
type
amigos = record
nome: string;
logradouro: string;
numero: integer;
complemento: string;
cidade: string;
estado: string;
pais: string;
nascimento: data;
telef: string;
celular: string;
end;
type
alunos = record
RA: string;
nome: string;
logradouro: string;
numero: integer;
complemento: string;
cidade: string;
estado: string;
pais: string;
nascimento: data;
char telef[13];
char celular[13];
curso: string;
ano_ingresso: integer;
end;
type
clientes = record
nome: string;
logradouro: string;
numero: integer;
complemento: string;
cidade: string;
estado: string;
pais: string;
4. página: 4
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
nascimento: data;
char telef[13];
char celular[13];
cpf:string;
end;
type
funcionarios = record
nome: string;
logradouro: string;
numero: integer;
complemento: string;
cidade: string;
estado: string;
pais: string;
nascimento: data;
char telef[13];
char celular[13];
cpf:string;
cargo: string;
salario: real;
end;
C. C
struct amigos {
char nome[30];
char logradouro[40];
int numero;
char complemento[10];
char cidade[20];
char estado[2];
char pais[15];
struct data nascimento;
char telef[13];
char celular[13];
};
struct alunos {
char RA[10];
char nome[30];
char logradouro[40];
int numero;
char complemento[10];
char cidade[20];
char estado[2];
char pais[15];
struct data nascimento;
5. página: 5
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
char telef[13];
char celular[13];
char curso[15];
int ano_ingresso;
};
struct clientes {
char nome[30];
char logradouro[40];
int numero;
char complemento[10];
char cidade[20];
char estado[2];
char pais[15];
struct data nascimento;
char telef[13];
char celular[13];
char cpf[11];
};
struct funcionarios {
char nome[30];
char logradouro[40];
int numero;
char complemento[10];
char cidade[20];
char estado[2];
char pais[15];
struct data nascimento;
char telef[13];
char celular[13];
char cpf[11];
char cargo[15];
float slario;
};
D. Java
public class Amigos
{
public String nome;
public String logradouro;
public int numero;
public String complemento;
public String cidade;
public String estado;
6. página: 6
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
public String pais;
public Data nascimento;
public String telefone;
public String celular;
//Sempre é necessário iniciar o objeto Data para que
// não haja erros durante a execução
Amigos()
{
this.nascimento = new Data();
}
//O construtor a seguir não é necessário mas facilita
// a inicialização do objeto
Amigos(String nome, String logradouro, int numero,
String complemento, String cidade,
String estado, String pais, Data nascimento,
String telefone, String celular)
{
this.nome = nome;
this.logradouro = logradouro;
this.numero = numero;
this.complemento = complemento;
this.cidade = cidade;
this.estado = estado;
this.pais = pais;
//Cria um novo objeto Data
this.nascimento = new Data();
//Copia o conteúdo do objeto fornecido para o
//novo objeto
this.nascimento.dia = nascimento.dia;
this.nascimento.mes = nascimento.mes;
this.nascimento.ano = nascimento.ano;
this.telefone = telefone;
this.celular = celular;
}
}
public class Alunos
{
public String RA;
public String nome;
7. página: 7
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
public String logradouro;
public int numero;
public String complemento;
public String cidade;
public String estado;
public String pais;
public Data nascimento;
public String telefone;
public String celular;
public String curso;
public int ano_ingresso;
//Sempre é necessário iniciar o objeto Data para que
//não haja erros durante a execução
Alunos()
{
this.nascimento = new Data();
}
//O construtor a seguir não é necessário mas facilita
// a inicialização do objeto
Alunos(String RA, String nome, String logradouro,
int numero, String complemento, String cidade,
String estado, String pais, Data nascimento, String telefone,
String celular, String curso, int ano_ingresso)
{
this.RA = RA;
this.nome = nome;
this.logradouro = logradouro;
this.numero = numero;
this.complemento = complemento;
this.cidade = cidade;
this.estado = estado;
this.pais = pais;
//Cria um novo objeto Data
this.nascimento = new Data();
//Copia o conteúdo do objeto fornecido para o
//novo objeto
this.nascimento.dia = nascimento.dia;
this.nascimento.mes = nascimento.mes;
this.nascimento.ano = nascimento.ano;
this.telefone = telefone;
8. página: 8
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
this.celular = celular;
this.curso = curso;
this.ano_ingresso = ano_ingresso;
}
}
public class Cliente
{
public String nome;
public String logradouro;
public int numero;
public String complemento;
public String cidade;
public String estado;
public String pais;
public String telefone;
public String celular;
public String cpf;
public Data nascimento;
//Sempre é necessário iniciar o objeto Data para que //não haja
erros durante a execução
Cliente()
{
this.nascimento = new Data();
}
//O construtor a seguir não é necessário mas facilita
// a inicialização do objeto
Cliente(String nome, String logradouro, int numero,
String complemento, String cidade,
String estado, String pais, String telefone,
String celular, String cpf, Data nascimento)
{
this.nome = nome;
this.logradouro = logradouro;
this.numero = numero;
this.complemento = complemento;
this.cidade = cidade;
this.estado = estado;
this.pais = pais;
9. página: 9
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
this.telefone = telefone;
this.celular = celular;
this.cpf = cpf;
//Cria um novo objeto Data
this.nascimento = new Data();
//Copia o conteúdo do objeto fornecido para o
//novo objeto
this.nascimento.dia = nascimento.dia;
this.nascimento.mes = nascimento.mes;
this.nascimento.ano = nascimento.ano;
}
}
public class Funcionarios
{
public String nome;
public String logradouro;
public int numero;
public String complemento;
public String cidade;
public String estado;
public String pais;
public String telefone;
public String celular;
public String cpf;
public String cargo;
public float salario;
public Data nascimento;
//Sempre é necessário iniciar o objeto Data para que
//não haja erros durante a execução
Funcionarios()
{
this.nascimento = new Data();
}
//O construtor a seguir não é necessário mas facilita
// a inicialização do objeto
Funcionarios(String nome, String logradouro,
int numero, String complemento, String cidade, String estado,
String pais, String telefone,
10. página: 10
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
String celular, String cpf, String cargo,
float salario, Data nascimento)
{
this.nome = nome;
this.logradouro = logradouro;
this.numero = numero;
this.complemento = complemento;
this.cidade = cidade;
this.estado = estado;
this.pais = pais;
this.telefone = telefone;
this.celular = celular;
this.cpf = cpf;
this.cargo = cargo;
this.salario = salario;
//Cria um novo objeto Data
this.nascimento = new Data();
//Copia o conteúdo do objeto fornecido para o
//novo objeto
this.nascimento.dia = nascimento.dia;
this.nascimento.mes = nascimento.mes;
this.nascimento.ano = nascimento.ano;
}
}
E. PHP
A linguagem PHP é fracamente tipada, ou seja, o tipo da variável é definido em tempo de execução de
acordo com que lhe é atribuído.
Strings em php não precisam de definição de tamanho.
Como a linguagem PHP prove classes no lugar de estruturas, é necessário efetuar a instanciação de uma
classe dentro da outra como pode ser visto abaixo na variável nascimento dentro de cada classe.
class amigos {
public $nome;
public $logradouro;
public $numero;
public $complemento;
public $cidade;
public $estado;
public $pais;
public $nascimento;
11. página: 11
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
public $telef;
public $celular;
public $curso;
public $ano_ingresso;
public function __construct() {
$this->nascimento = new data();
}
};
class alunos {
public $RA;
public $nome;
public $logradouro;
public $numero;
public $complemento;
public $cidade;
public $estado;
public $pais;
public $nascimento;
public $telef;
public $celular;
public function __construct() {
$this->nascimento = new data();
}
};
class clientes {
public $nome;
public $logradouro;
public $numero;
public $complemento;
public $cidade;
public $estado;
public $pais;
public $nascimento;
public $telef;
public $celular;
public $cpf;
public function __construct() {
$this->nascimento = new data();
}
};
class funcionarios {
public $nome;
12. página: 12
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
public $logradouro;
public $numero;
public $complemento;
public $cidade;
public $estado;
public $pais;
public $nascimento;
public $telef;
public $celular;
public $cpf;
public $cargo;
public $salario;
public function __construct() {
$this->nascimento = new data();
}
};
Exercício 3 - Verifique que outros atributos você poderia incluir!
A. VisuaAlg
A linguagem VisuAlg não possui implementação de registros.
B. Pascal
type
livros = record
titulo: string;
autores: string;
editora: string;
ano: integer;
isbn: string;
preco:real;
quantidade: integer;
end;
type
produtos = record
codigo: integer;
nome: string;
descricao: string;
tipo: integer;
cod_fabricante: integer;
preco:real;
quantidade: integer;
13. página: 13
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
end;
C. C
struct livros {
char titulo[30];
char autores[50];
char editora[20];
int ano;
char isbn [20];
float preco;
int quantidade;
};
struct produtos {
int código;
char nome[30];
char descricao[40];
int tipo;
int cod_fabricante;
float preco;
int quantidade;
};
D. Java
public class Livros
{
public String titulo;
public String autores;
public String editora;
public int ano;
public String isbn;
public float preco;
public int quantidade;
//O construtor a seguir não é necessário mas facilita
//a inicialização do objeto
Livros(String titulo, String autores, String editora,
int ano, String isbn, float preco,
int quantidade)
{
this.titulo = titulo;
14. página: 14
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
this.autores = autores;
this.editora = editora;
this.ano = ano;
this.isbn = isbn;
this.preco = preco;
this.quantidade = quantidade;
}
}
public class Produtos
{
public int codigo;
public String nome;
public String descricao;
public int tipo;
public int cod_fabricante;
public float preco;
public int quantidade;
//O construtor a seguir não é necessário, mas
//facilita a inicialização do objeto
Produtos(int codigo, String nome, String descricao,
int tipo, int cod_fabricante, float preco,
int quantidade)
{
this.codigo = codigo;
this.nome = nome;
this.descricao = descricao;
this.tipo = tipo;
this.cod_fabricante = cod_fabricante;
this.preco = preco;
this.quantidade = quantidade;
}
}
E. PHP
A linguagem PHP é fracamente tipada, ou seja, o tipo da variável é definido em tempo de execução de
acordo com que lhe é atribuído.
Strings em php não precisam de definição de tamanho.
15. página: 15
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
class livros {
public $titulo;
public $autores;
public $editora;
public $ano;
public $isbn;
public $preco;
public $quantidade;
};
class produtos {
public $código;
public $nome;
public $descricao;
public $tipo;
public $cod_fabricante;
public $preco;
public $quantidade;
};
Exercício 4
A. VisuaAlg
A linguagem VisuAlg não possui implementação de registros.
B. Pascal
function idade(nasc:data, hoje:data);
var
id:integer;
begin
id:=hoje.ano-nasc.ano;
if (id<=0) then idade:=0;
else if (hoje.mes>nasc.mes) then idade:=id;
else if (hoje.mes=nasc.mes) then
if (hoje.dia>=nasc.dia) then idade:=id;
else idade:=id-1;
end;
procedure aniversario(M:integer,ncli:integer);
{Considero ncli sendo o numero de clientes,
M o mês desejado e
cli o vetor global com os clientes. }
var
i:integer;
16. página: 16
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
begin
for i:=1 to ncli do
if (cli[i].nascimento.mes=M) then
writeln(cli[i].nome);
end;
C. C
int idade (strict data nasc, struct data hoje)
{
int id;
id=hoje.ano–nasc.ano;
if (id<=0) return(0);
if (hoje.mes>nasc.mes) return(id);
if (hoje.mes==nasc.mes)
if (hoje.dia>=nasc.dia) return(id);
return(id-1);
}
void aniversario (int M, int ncli,struct clientes cli[]);
{
//Considero ncli sendo o numero de clientes
// e M o mês desejado
for(int i=0;i<ncli;i++)
if (cli[i].nascimento.mes==M)
printf(“Cliente:%sn”,cli[i].nome);
}
D. Java
//Dentro da classe Data já declarada
public class Data
{
public int dia;
public int mes;
public int ano;
//Método construtor, não é estritamente necessário
//mas facilita inicialização do objeto
Data()
{
this.dia = 1;
this.mes = 1;
this.ano = 1900;
}
17. página: 17
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
Data(int d, int m, int a)
{
this.dia = d;
this.mes = m;
this.ano = a
}
//Dentro da própria classe Data poderia existir um
//método para isso
public int idade(Data hoje)
{
int idade = hoje.ano - this.ano
if(idade < 0)
{
return 0;
}
if( hoje.mes < this.mes)
{
return idade-1;
}
if( hoje.mes == this.mes && hoje.dia < this.dia)
{
return idade-1;
}
return idade;
}
}
//Primeira versão do aniversário
public class Agenda
{
public static void aniversarios(int m, int ncli,
Cliente clientes[])
{
//Considerando m o mes desejado, ncli o numero
//de clientes e clientes o vetor com os clientes
int i;
18. página: 18
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
for(i = 0; i < ncli; i++)
{
if(clientes[i].nascimento.mes == m)
{
System.out.println( "Cliente: " +
clientes[i].nome );
}
}
}
}
//Segunda versão do aniversário
public class Agenda
{
Cliente clientes[];
int ncli;
//Caso não tenha se passado nada
//faz uma agenda com 100 clientes
Agenda()
{
this.clientes = new Cliente[100];
this.ncli = 100;
}
//Se não cria uam agenda com o tamanho passado
Agenda(int n)
{
this.clientes = new Cliente[n];
this.ncli = n;
}
public void aniversarios(int m)
{
//Considerando m o mes desejado, ncli o numero
//de clientes e clientes o vetor com os clientes
int i;
for(i = 0; i < this.ncli ; i++)
{
if(this.clientes[i].nascimento.mes == m)
{
19. página: 19
Resposta dos Exercícios Propostos
Livro: Algoritmo e Programação de Computadores
Autores: Dilermando Piva Junior, Gilberto Shigueo Nakamiti, Angela de Mendonça
Engelbrecht e Francisco Bianchi.
Editora Campus / Elsevier, 2012.
System.out.println( "Cliente: " +
this.clientes[i].nome );
}
}
}
}
E. PHP
function idade (data $nascimento, data $data_atual){
$idade = $data_atual->ano-$nascimento->ano;
if($idade<=0) return 0;
if($data_atual->mes > $nascimento->mes ) return $idade;
if($data_atual->mes == $nascimento->mes )
if($data_atual->dia >= $nascimento->dia ) return $idade;
return $idade-1;
}
Adoto $clientes como um array que contém objetos da classe cliente
function aniversario ($m, $ncli, $clientes) {
for ($i = 0; $i < $ncli; $i++){
if($clientes[$i]->nascimento->mês == $m)
print("Cliente: " . $clientes[$i]->nome . "n");
}
}