Escolar Documentos
Profissional Documentos
Cultura Documentos
Registros
Linguagens de Programação
Matriz vs Registro
▪ Matriz ●
Registro
– Conjunto de elementos de – Conjunto de elementos de tipos
mesmo tipo potencialmente diferentes
Matriz vs Registro
▪ Matriz ●
Registro
– Valores acessados por – Valores acessados por campos.
índices – Cada campo possuim um
identificador próprio.
Empregado
notas[5] = 8.5
id
nome
notas 8.5
34
idade
0 1 2 3 4 5 ... 28 29 salário
departamento
Empregado.idade = 34
Matriz vs Registro
▪ Matriz ●
Registro
– Valores acessados por – Valores acessados por campos.
índices – Cada campo possuim um
identificador próprio.
Números de nível
Definição de Registros
▪ Registros também são chamadas de Estruturas
▪ Registros apareceram primeiro em COBOL e PL/I
REGISTRO_EMPREGADO :
record
NOME_EMPREGADO :
record
PRIMEIRO : STRING (1..20);
MEIO : STRING(1..10);
ULTIMO : STRING(1..20);
end record;
TAXA_HORARIA : FLOAT;
end record;
Definição de Registros
▪ Registros também são chamadas de Estruturas
▪ Registros apareceram primeiro em COBOL e PL/I
class Empregado{
struct Empregado{ private:
struct Nome{ Nome nomeEmpregado;
char primeiro[20]; protected:
char meio[10]; float taxaHoraria;
char ultimo[20]; public:
} nomeEmpregado; Empregado();
float taxaHoraria; void setNome(char* nome);
}; void setTaxaHoraria(float taxa);
};
●
● Classes
Classesnão
nãosão
sãoapenas
apenas“estruturas
“estruturascom
comfunções”
funções”
●
● Podem limitar acesso a componentes
Podem limitar acesso a componentes
●
● Implementam
Implementamherança
herançaeepoliomorfismo
poliomorfismo
●
● Etc...
Etc...
Referência a Campos do Registro
▪ Em geral
– Notação de ponto (.)
– Estruturas mais externas às mais internas (esquerda → direita)
struct Empregado{
int id;
struct Nome{ struct Empregado A;
char primeiro[20];
char meio[10]; printf("Identidade: ");
char ultimo[20]; scanf("%d",&A.id);
} nomeEmpregado; printf("Primeiro nome: ");
float taxaHoraria;
}; scanf("%s",A.nomeEmpregado.primeiro);
Referência a Campos do Registro
▪ Em geral
– Notação de ponto (.)
– Estruturas mais externas às mais internas (esquerda → direita)
AA linguagem
linguagem CC possui
possui um
um operador
operador seta
seta (->)
(->)
quando
quando oo campo
campo está
está sendo
sendo referenciado
referenciado através
através
de
deum
umponteiro
ponteiropra
prauma
umaestrutura.
estrutura.
struct Empregado{
int id;
struct Nome{ struct Empregado A;
char primeiro[20]; struct Empregado *B = &A;
char meio[10];
char ultimo[20]; printf("Identidade: ");
} nomeEmpregado; scanf("%d",&B->id);
float taxaHoraria;
}; printf("Primeiro nome: ");
scanf("%s",B->nomeEmpregado.primeiro);
Referência a Campos do Registro
▪ Em geral
– Notação de ponto (.)
– Estruturas mais externas às mais internas (esquerda → direita)
type aniversario
character nome*10
character mes*10
integer*1 dia
end type aniversario
type (aniversario) :: carlos
carlos = aniversario('Carlos','Fevereiro',29)
write(*,*) carlos%nome, carlos%mes Fortran
Fortranusa
usaoooperador
operador%
%
Referência a Campos do Registro
▪ Em geral
– Notação de ponto (.)
– Estruturas mais externas às mais internas (esquerda → direita)
01 REGISTRO-EMPREGADO. COBOL
COBOLusa usaum
umoperador
operadorchamado
chamadoOFOF
02 NOME-EMPREGADO. para
para acessar
acessar estruturas,
estruturas, das
das mais
mais
05 PRIMEIRO PICTURE IS X(20). internas
internasàs
àsmais
maisexternas.
externas.
05 MEIO PICTURE IS X(10).
05 ULTIMO PICTURE IS X(20).
02 TAXA-HORARIA PICTURE IS 99V99.
type writeln(A.nome.primeiro);
empregado = record end.
id : integer;
nome : nomeEmpregado;
end; Pascal
Pascalpermite
permitecriar
criarum
umbloco
blocoqualificando
qualificando
referência
referência implícita
implícita aos
aos campos
campos de
de uma
uma
var estrutura.
estrutura.
A : empregado;
Referência a Campos do Registro
▪ Em geral
– Notação de ponto (.)
– Estruturas mais externas às mais internas (esquerda → direita)
struct Nome{ A B
char primeiro[20]; Primeiro: “Maria” Primeiro: “Maria”
char meio[10]; Meio: “Antonieta” Meio: “Antonieta”
char ultimo[20];
} nomeEmpregado; Ultimo: “Alcantara” Ultimo: “Alcantara”
struct Nome A, B;
…
B = A;
Operações sobre Registros
▪ Atribuição
– Geralmente as duas estruturas devem ser iguais
– C realiza a cópia de memória entre registros
struct Nome{ A B
char *primeiro; Primeiro: Primeiro:
char *meio; Meio: Meio:
char *ultimo;
} nomeEmpregado; Ultimo: Ultimo:
struct Nome A, B;
…
B = A; “Maria” “Antonieta” “Alcantara”
Operações sobre Registros
▪ Atribuição
– Geralmente as duas estruturas devem ser iguais
– C realiza a cópia de memória entre registros
struct Nome{ A B
char *primeiro; Primeiro: Primeiro:
char *meio; Meio: Meio:
char *ultimo;
} nomeEmpregado; Ultimo: Ultimo:
struct Nome A, B;
…
B = A; “Maria” “Antonieta” “Alcantara”
Operações sobre Registros
▪ Atribuição
– Geralmente as duas estruturas devem ser iguais
– COBOL pode copiar apenas os campos correspondentes, mesmo
entre estruturas diferentes
01 INPUT-RECORD. 01 OUTPUT-RECORD.
02 NAME. 02 NAME.
05 FIRST PICTURE IS X(20). 05 LAST PICTURE IS X(20).
05 LAST PICTURE IS X(20). 05 FIRST PICTURE IS X(20).
02 HOURLY-RATE PICTURE IS 99V99. 02 EMPLOYEE-NUMBER PICTURE IS 99.
02 EMPLOYEE-NUMBER PICTURE IS 99. 02 NET-PAY PICTURE IS 99V99.