• Nenhum resultado encontrado

Aula 14032012TiposEstruturados com C

N/A
N/A
Protected

Academic year: 2021

Share "Aula 14032012TiposEstruturados com C"

Copied!
18
0
0

Texto

(1)

Tipos Estruturados

Paulo Cesar Lopes Email: paulo_cesar_lopes@yahoo.com

(2)

• Bibliografia • Tipos Estruturados – Conceitos e Características – Os Registros e os Arquivos • Registros – Conceito e Características – Vantagens e Benefícios. – Um exemplo simples

– Sintaxe e definição (Portugol e C/C++)

– Definição e Manipulação

– Conjunto de Registros

– Registro de Registro

– Exercícios

(3)

Bibliografia

MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo. Algoritmos: lógica para desenvolvimento de programação de computadores. 17.ed. São Paulo: Érica, 2005.

ASCENCIO, Ana Fernanda Gomes; VENERUCHI, Edilene Aparecida.

Fundamentos de programação de computadores: algoritmos, C/C++ e C/C++.

São Paulo: Prentice Hall, 2002.

FERRARI, Fabricio; CECHINEL, Cristian; Apostila de Introdução a Algoritmos e Estrutura de Dados. Universidade Federal do Pampa. Disponível em

http://www.dcc.ufam.edu.br/david/dmdocuments/Introducao-a-algoritmos.pdf

FORBELLONE, A. L.. Lógica de Programação 3ª ed. São Paulo: Prentice Hall, 2005.

• Apontamentos das aulas de Introdução a Linguagem C/C++ do Colégio São Gonçalo. Disponível em

http://www.csgnet.org/documentosONLINE/apontamentos/C/C++/C/C++2_p4.pdf Referências

(4)

Tipos Estruturados

CONCEITO

As estruturas de dados estruturados possuem as seguintes características:

Os tipos estruturados permitem fazer por meio de uma simples referência a manipulação de um conjunto de informações (um único identificador).

Existem dois tipos estruturados:

1.os homogêneos que são um conjunto de informações de um mesmo tipo, como os vetores em VISUALG, e em C/C++ os arrays unidimensional e

multidimensional;

2.os heterogêneos que são conjuntos de variáveis não necessariamente de um mesmo tipo, tais como: registros(structs) e arquivos (files) no C/C++.

(5)

Registros

CONCEITO

São estruturas de dados heterogêneas e evidentemente compostas, que agregam estruturas de dados mais simples e com as seguintes

características:

•É sempre composto por campos

•Contém um número fixo e determinado de campos

•Cada campo funciona como uma variável mais simples e primitiva;

•Os campos formam estruturas chamadas de REGISTROS que podem ser

manipulados sem a especificação individual dos campos para algumas operações, ou quando necessário permite a manipulação de um determinado campo.

•Os registros podem ser agregados em estruturas mais complexas chamadas de

vetores de registros (acessados por meio de listas ou filas) e arquivos.

(6)

Registros

CONCEITO

A utilização dos registros:

•Facilita na arquitetura dos dados e na elaboração de algoritmos mais complexos

que serão implementados em uma linguagem que suporte tais estruturas.

•Permite a associação de campos de diferentes tipos mais simples;

•Permite a associação de variáveis que possuam algum tipo de vínculo lógico; •Facilita no armazenamento de dados em diferentes dispositivos de

armazenamento;

•Facilita na implementação de estruturas dinâmicas em memória principal RAM; •Facilita os processos e procedimentos para acessar dados/ informações

complexas.

(7)

Registros

As informações de um aluno dentro da Universidade/Faculdade:

•Matrícula •Nome •Pai e Mãe •CPF •CI •Nascimento •Naturalidade •Endereço

•Instituição Ensino Médio •Data de Matrícula

•Desempenho Acadêmico

(8)

Registros

Tipo Id do Registro = Registro

Tipo primitivo Fim registro

Id do Campo

1

1 : : ;

Definição: tipo Ficha = registro

nome: string matricula: inteiro nota1: real nota2: real fimregistro Sintaxe e Definição

(9)

Registros Definição e Manipulação Definição e Manipulação

Var i, j : inteiro

aluno : ficha

Em algum momento podemos precisar de todas as informações contidas em um registro, e outras apenas a informação contida em apenas um campo do registro. Manipulação Genérica todo o registro: leia(aluno) escreva(aluno) Manipulação Específica apenas um campo: leia(aluno.nota1) escreva(aluno.nota1)

(10)

Registros Definição e Manipulação Definição e Manipulação

Os registros também podem conter tipos compostos homogêneos e heterogêneos.

Definição: tipo Ficha = registro

nome: string matricula: inteiro

notas: vetor[1..2] de real fimregistro

(11)

Registros Definição e Manipulação Definição e Manipulação

Var i, j : inteiro

aluno : ficha

Manipulação Específica

Estrutura condicional considerando apenas um campo:

se aluno.nota[1] >= 6 então

escreva(“Nota acima da média”) fimse

Manipulação Específica

Estrutura Vetorial Bidimensional:

se aluno.pagamento[1,11] = verdadeiro então

escreva(“Pagamento da 11º. Mensalidade OK”) fimse

(12)

#include <stdio.h> #include <stdlib.h> #include <string.h> main() {

struct ALUNOS { // Definição de um registro. char NOME[30];

int MATRI;

char ENDER[50]; }; // FIM REGISTRO

// Inicializando todos os campos do registro.

struct ALUNOS Aluno = {"PC",1000,"R. MILIONARIOS, 200 apt 301"};

REGISTROS EM C

printf("Nome do aluno: %s \n",Aluno.NOME); // Apresentando o registro printf("Matricula: %d \n",Aluno.MATRI);

printf("Endereço: %s \n",Aluno.ENDER);

strcpy(Aluno.NOME, "Paulo Cesar"); // Substituindo cada campo campo Aluno.MATRI = 2000;

strcpy(Aluno.ENDER, "R. BILIONARIOS, 2000000 "); printf("Nome do aluno: %s \n",Aluno.NOME);

printf("Matricula: %d \n",Aluno.MATRI); printf("Endereço: %s \n",Aluno.ENDER); system("pause");

(13)

Conjunto de Registros Definição e Manipulação

Definição: tipo Ficha = registro

nome: string matricula: inteiro

notas: vetor[1..2] de real fimregistro

Um vetor de registros.

Var i, j : inteiro

(14)

#include <stdio.h> #include <stdlib.h> #include <string.h> main() {

struct ALUNOS { // Registro Alunos char NOME[30];

int MATRI; int N1; int N2;

}; // Fim registro Alunos

struct ALUNOS Aluno[3]; // Vetor de Registro

VETOR de REGISTROS EM C

printf("\n Nome do aluno: \n"); // Preenche o registro

gets(Aluno[1].NOME); // Preenche Nome - Posição 1 do Vetor printf("\n Matricula: \n");

scanf("%d",&Aluno[1].MATRI);

printf("\n Entre com a 1.o NOTA \n"); scanf("%d",&Aluno[1].N1);

printf("\n Entre com a 2.o NOTA \n"); scanf("%d",&Aluno[1].N2);

printf("Nome do aluno: %s \n",Aluno[1].NOME); // Apresenta printf("Matricula: %d \n",Aluno[1].MATRI); // posição 1

printf("NOTA1: %d \n",Aluno[1].N1); // do vetor.

printf("NOTA2: %d \n",Aluno[1].N2); // Primeiro registro system("pause");

(15)

Registros de Registros Definição e Manipulação

Ex: Escreva(´Estado: ´, cadastro.ende.rua);

Os registros também podem conter registros.

Definição: tipo ENDER = registro

Rua:string Num:inteiro fimregistro

tipo Ficha = registro

nome: string matricula: inteiro

notas: vetor[1..2] de real Ende : ENDER

fimregistro

Var i, j : inteiro

(16)

#include <stdio.h> #include <stdlib.h> #include <string.h> main() { struct ALUNOS { char NOME[30]; int MATRI; struct NOTAS { int N1; int N2; } N; };

struct ALUNOS Aluno[3];

REGISTROS de REGISTROS EM C

printf("\n Nome do aluno: \n"); // Preenche o registro

gets(Aluno[1].NOME); // Preenche Nome - Posição 1 do Vetor printf("\n Matricula: \n");

scanf("%d",&Aluno[1].MATRI);

printf("\n Entre com a 1.o NOTA \n"); scanf("%d",&Aluno[1].N.N1);

printf("\n Entre com a 2.o NOTA \n"); scanf("%d",&Aluno[1].N.N2);

printf("Nome do aluno: %s \n",Aluno[1].NOME); // Apresenta printf("Matricula: %d \n",Aluno[1].MATRI); // posição 1

printf("NOTA1: %d \n",Aluno[1].N.N1); // do vetor.

printf("NOTA2: %d \n",Aluno[1].N.N2); // Primeiro registro system("pause");

(17)

#include <stdio.h> #include <stdlib.h> #include <string.h> main() { struct ALUNOS { char NOME[30]; int MATRI; struct NOTAS { int N1; int N2; } N; };

struct ALUNOS Aluno[3];

TRABALHO PRÁTICO

printf("\n Nome do aluno: \n"); // Preenche o registro

gets(Aluno[1].NOME); // Preenche Nome - Posição 1 do Vetor printf("\n Matricula: \n");

scanf("%d",&Aluno[1].MATRI);

printf("\n Entre com a 1.o NOTA \n"); scanf("%d",&Aluno[1].N.N1);

printf("\n Entre com a 2.o NOTA \n"); scanf("%d",&Aluno[1].N.N2);

printf("Nome do aluno: %s \n",Aluno[1].NOME); // Apresenta printf("Matricula: %d \n",Aluno[1].MATRI); // posição 1

printf("NOTA1: %d \n",Aluno[1].N.N1); // do vetor.

printf("NOTA2: %d \n",Aluno[1].N.N2); // Primeiro registro system("pause");

(18)

Dúvidas e Comentários

Referências

Documentos relacionados

relativizou os processos que ocorrem na puberdade e adolescência, dando maior importância ao estudo da idade adulta e velhice. D) Em detrimento da importância da

Para o controlo de qualidade, o controlo padrão (em duplicado) e o controlo negativo devem ser feitos a cada execução de teste.. Se ambas as medições

Juventudes e Ensino de Sociologia: um diálogo...| Raphaella Gonçalves Teixeira | Adelson Dias de Oliveira 18 Frente às narrativas apresentas e as conjecturas construídas no

Os estudos iniciais em escala de bancada foram realizados com um minério de ferro de baixo teor e mostraram que é possível obter um concentrado com 66% Fe e uma

Neste caso, embora possam existir nestes locais, forrageiras de alta qualidade, como o capim-de-capivara (Hymenachne amplexicaulis), a disponibilidade de recursos forrageiros vai

Quando contratados, conforme valores dispostos no Anexo I, converter dados para uso pelos aplicativos, instalar os aplicativos objeto deste contrato, treinar os servidores

Enquanto os artigos científicos focam em desenvolver novas técnicas fazendo uso de diferentes enzimas, diferentes reações bioquímicas, diferentes sistemas de ancoragem para

no máximo 12 equipes preservando sempre a mesma forma de disputa, cada equipe poderá inscrever 12 atletas e mais três da comissão técnica, sendo que a idade mininima é 17 anos