Вы находитесь на странице: 1из 19

Programao I Linguagem C Estruturas

Tiago Cajahyba

Baseado no material de Hernane Borges de Barros Pereira

ltima atualizao: 17 de agosto de 2011

Sumrio

Estruturas Referncias (alguns comentrios sobre)

Tipos especiais
Vetores e Matrizes

Variveis indexadas de quaisquer tipos primitivos ou especiais

Cadeia de caracteres ou Strings

Seqncia Especiais (Construdos) Registro


Conjunto de dados como um arranjo nico (i.e. campos relacionados), onde cada componente pode ser de um tipo diferente

Referncia
Estruturas de dados dinmicas: E.g. listas encadeadas, rvores binrias, etc.

Constantes Tipos Especiais Estruturas e variveis 09/00

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)

Campos bsicos de uma agenda:


Nome:

Telefone:
E-mail: Endereo: Data de Nascimento:

Celular:

Estruturas Tipos especiais 02/08

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

Estruturas Tipos especiais 03/08

Registros (4/8)

Uso:

Operador . Especifica o campo do registro <Nome da varivel>.<Campo>


E.g.:
... Pessoal.Nome = 123 de Oliveira 4; Pessoal.Telefone = (071) 4567-8910; ... Escreva(Nome: , Pessoal.Nome); Escreva(Telefone: , Pessoal.Telefone); ...

Estruturas Tipos especiais 04/08

Registros (5/8)
Exemplo da agenda

Em Linguagem C:

Tipo estrutura
struct <etiqueta> { <tipo> <varivel>; <tipo> <varivel>; ... };

struct { int int int };

Data

Dia; Mes; Ano;

Campos

struct Agenda { char Nome[20]; char Endereco[50]; char Telefone[15]; char Celular[15]; char Email[30]; struct Data DataNascimento; };

Estruturas Tipos especiais 05/08

Registros (6/8)

Declarao de uma varivel do tipo registro:


struct { int int int }; Data Dia; Mes; Ano; ... main() { struct Agenda Pessoal; ... }

struct Agenda { char Nome[20]; char Endereco[50]; char Telefone[15]; char Celular[15]; char Email[30]; struct Data DataNascimento; };

E para 100 contatos? Como seria?

Estruturas Tipos especiais 06/08

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; }

Celes, Cerqueira e Rangel (2004)

Estruturas Tipos especiais 07/08

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.

Estruturas Tipos especiais 08/08

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

Tabela ASCII Estendida

Digresso 02/02