Tiago Cajahyba
Sumrio
Tipos especiais
Vetores e Matrizes
Referncia
Estruturas de dados dinmicas: E.g. listas encadeadas, rvores binrias, etc.
Registros (1/8)
Utilizao de campos (i.e. atributos) relacionados Um nico contexto Tipo de dado cujo campos so compostos por um ou mais valores de tipos primitivos ou de outros tipos especiais previamente construdos E.g.:
Imaginemos uma agenda telefnica Ns podemos estrutur-la pelo tipo Registro e cada registro ser de uma pessoa distinta
Estruturas Tipos especiais 01/08
Registros (2/8)
Telefone:
E-mail: Endereo: Data de Nascimento:
Celular:
Registros (3/8)
Declarao:
Em Portugol (Pseudo-Cdigo):
No aloca espao na memria TIPO Agenda :: REG(Nome, Endereo, Telefone, Celular, E-mail: String; DataNascimento: REG(Dia, Mes, Ano: Inteiro)) VAR Pessoal : Agenda Aloca espao Novo tipo j definido na memria
Registros (4/8)
Uso:
Registros (5/8)
Exemplo da agenda
Em Linguagem C:
Tipo estrutura
struct <etiqueta> { <tipo> <varivel>; <tipo> <varivel>; ... };
Data
Campos
struct Agenda { char Nome[20]; char Endereco[50]; char Telefone[15]; char Celular[15]; char Email[30]; struct Data DataNascimento; };
Registros (6/8)
struct Agenda { char Nome[20]; char Endereco[50]; char Telefone[15]; char Celular[15]; char Email[30]; struct Data DataNascimento; };
Registros (7/8)
Vamos analisar o seguinte cdigo...
#include <stdio.h> #include <stdlib.h> struct ponto { float x; float y; };
&p.x &(p.x)
Por que?
int main (void) { struct ponto p; printf(Digite as coordenadas do ponto(x y): ); scanf(%f %f, &p.x, &p.y); printf(O ponto fornecido foi: (%.2f,%.2f)\n, p.x, p.y); system(pause); return 0; }
Registros (8/8)
Problema:
Fazer um algoritmo para cadastrar os funcionrios da Empresa X, utilizando uma estrutura de dados do tipo Registro. Considerar o nmero mximo de funcionrios igual a 100.
Os campos do registro so: Nome (string) CPF (vetor de inteiros) Cargo (string) Data de Admisso (registro de inteiros) Salrio (real) Observao: 1. Deve ser definido o tipo de dado de cada campo; 2. Criticar o CPF digitado.
REFERNCIAS
Bsica
ASCENCIO, A. F. G. & CAMPOS, E. A. V. Fundamentos da programao de computadores Algoritmos, Pascal, C/C++. Pearson Prentice-Hall, 2005 FERRER, H. et al. Algoritmos Estruturados. 3 edio, Rio de Janeiro: LTC, 1999 SHILDT, H. C Completo e Total. So Paulo: Editora Makron Books, 1997 STALLINGS, W. Arquitetura e Organizao de Computadores. 5 edio, Prentice-Hall, 2005 TANENBAUM, A. Organizao Estruturada de Computadores. Rio de Janeiro: LTC, 2001
Referncias 01/05
Complementar (1/4)
AHO, Alfred V.; HOPCROFT, John E. & ULLMAN, Jeffrey D. Data structure and algorithms. Delaware: Addison-Wesley, 1983 CELES, W.; CERQUEIRA; R. F. G. & NETTO, J. L. M. R. Introduo a Estruturas de Dados - com tcnicas de programao em C. Rio de Janeiro: Campus, 2004 CAPPER, D. M. Introducing C++ for scientists, engineers and mathematicians. London: SpringerVerlag, 1994
Referncias 02/05
Complementar (2/4)
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. & STEIN, C. Introduction to Algorithms. 2. Ed. Cidade: The MIT Press and McGraw-Hill, 2001 KERNIGHAN, B. W. C. & RITCHIE, D. M. The C Programming Language - ANSI C. Prentice Hall, 1988 KNUTH, D. E. Art of Computer Programming, Vol.1, Fundamental Algorithms (3rd Ed.), AddisonWesley, 1997
Referncias 03/05
Complementar (3/4)
KORFHAGE, Robert R. Lgica y Algoritmos: Con aplicaciones a las ciencias de la computacin e informacin. Mxico D.F.: Editorial Limusa-Wiley, 1970 SABESTA, Robert. Conceitos de linguagem de programao. Editora Bookman, 2003 SEDGEWICK, R. Algorithms in C++, (3rd Ed.) Boston: Addison-Wesley Publishing Company, 1998 SZWARCFITER, J. L. & MARKENZON, L. Estruturas de Dados e seus Algoritmos. 2nd ed. Rio de Janeiro: LTC, 1994
Referncias 04/05
Complementar (4/4)
TENENBAUM, A. M.; LANGSAM, Y. & AUGENSTEIN, M. J. Estruturas de Dados Usando C. So Paulo: Makron Books do Brasil, 1995 TREMBLAY, J. P. & SORENSON, P.G. An introduction to data structures with applications. 2. Ed. Auckland: McGraw-Hill, 1984 WIRTH, N. Algoritmos e Estruturas de Dados, Rio de Janeiro: Prentice-Hall do Brasil, 1989
Referncias 05/05
Tabela ASCII
Digresso 01/02
Digresso 02/02