• Nenhum resultado encontrado

FísicaComputacional5b.pdf

N/A
N/A
Protected

Academic year: 2019

Share "FísicaComputacional5b.pdf"

Copied!
30
0
0

Texto

(1)

Física Computacional

2011-2

I N T R O D U Ç Ã O À L Ó G I C A D E P R O G R A M A Ç Ã O

P R O F . L U Í S F E R N A N D O D E O L I V E I R A

UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO INSTITUTO DE FÍSICA ARMANDO DIAS TAVARES

(2)

Estrutura de Dados

 Outra estrutura de dados importante é a estrutura

heterogênea ou registro de dados.

 Um registro de dados funciona como um cadastro.  Ele reúne (agrupa) diferentes tipos de variáveis

numa única estrutura.

 Por isso é chamada de heterogênea.

 Imagine o cadastro de um funcionário:

 Nome, nascimento, identidade, endereço, admissão e função.

 Cada informação no cadastro possui uma natureza

distinta.

(3)

Estrutura de Dados

 Nome, endereço e função são literais.

 Nascimento e identidade envolvem números.

 Diferente de outras unidades de informação básicas,

o registro precisa ser definido.

 Precisa de um identificador.

 Neste caso, poderia ser funcionário:

defina funcionário registro (nome[30] literal, identidade

numérico, endereço[40] literal)

(4)

Estrutura de Dados

 Depois, podemos declarar variáveis como registro:

declare cadastro registro funcionário

 O registro é composto por campos.

 No exemplo, nome[30] é um campo, endereço[40] é

outro campo.

 Os campos são “as variáveis” dentro do registro.

 Logo, para atribuir um dado à variável de registro, é

necessário indicar qual o campo está sendo acessado:

cadastro.nome  “Antônio da Silva”

(5)

Estrutura de Dados

 A definição de um registro funciona como a definição

de tipo de dado.

 Logo, é possível criar-se vetores e matrizes de

registros:

defina funcionário registro (

nome[30] literal endereço[40] literal função[30] literal sexo literal

)

declare cadastro[100] registro funcionário

(6)

Estrutura de Dados

 O acesso a um elemento do vetor (matriz) é o que já

se conhece:

cadastro[1].nome  “José da Silva” cadastro[10].função  “motorista” cadastro[6].sexo  „M‟

cadastro[80].endereço  “Rua 2, Casa 4, Juquinha, AL” ler cadastro[4].nome

escrever cadastro[10].função

(7)

Estrutura de Dados

 Exemplo:

algoritmo

defina funcionário registro ( nome[100] literal,

endereço[100] literal, função[30] literal

)

declare cadastro[100] registro funcionário declare i, N numéricos

escreva “Entre com o número de funcionários:”

leia N

{continua}

(8)

Estrutura de Dados

para i de 1 até N, fazer

escreva “Entre com o nome do funcionário[”, i, “]:”

leia cadastro[i].nome

escreva “Entre com o endereço:”

leia cadastro[i].endereço escreva “Entre com função:”

leia cadastro[i].função fim para

para i de N até 1 passo -1, fazer

escreva cadastro[i].nome, cadastro[i].endereço, cadastro[i].função fim para

fim algoritmo

(9)

Estrutura de Dados

 Exemplo, calcular a força resultante de um sistema

de forças.

 O vetor força é representado por suas componentes x e y.

 A soma vetorial das componentes gera a magnitude da força.

 A soma de vários vetores força corresponde à soma das componentes de cada força em cada eixo X e Y.

 O elemento força pode ser descrito como uma estrutura de dado heterogênea chamada força (registro) que contém dois campos: fx e fy.

 Como um sistema de forças possui pelo menos dois vetores

força, parece natural usarmos uma lista indexada de registros

força.

(10)

Estrutura de Dados

 A soma vetorial então é a soma de cada campo fx e fy de cada registro força[i] presente na lista indexada:

resultante.fx = força[i].fx, para i de 1 até N

resultante.fy = força[i].fy, para i de 1 até N

onde N é o número de vetores força do sistema e resultante é um registro idêntico ao registro força.

 Então, primeiro, devemos definir um registro chamado vetor:

defina vetor registro (fx numérico, fy numérico)

 Depois, declaramos a lista de registros do tipo vetor com um número máximo de elementos e a resultante:

declare força[100], resultante registro vetor

(11)

Estrutura de Dados

 Podemos solicitar ao usuário o número de vetores que compõem o sistema:

ler N

 E realizar o somatório de vetores.

para i de 1 até N, fazer

 resultante.fx = resultante.fx + força[i].fx  resultante.fy = resultante.fy + força[i].fy

fim para

 A saída apresenta cada uma das componentes da força resultante:

escrever resultante.fx, resultante.fy  Vamos ao algoritmo mais pomposo:

(12)

Estrutura de Dados

algoritmo

definir vetor registro ( fx numérico

fy numérico )

declarar força[100] registro vetor {lista de forças} declarar resultante registro vetor {força resultante} declarar i numérico {contador}

declarar N numérico {total de forças do usuário} {usuário define total de vetores de força}

escrever “Entre total de vetores”

ler N

{continua}

(13)

Estrutura de Dados

para i de 1 até N, fazer {entrada de dados}

escrever “Entre com componentes x e y do vetor ”,i

ler força[i].fx, força[i].fy fim para

resultante.fx  0 {zerando a componente fx} resultante.fy  0 {zerando a componente fy} para i de 1 até N, fazer {somatório das forças}

resultante.fx = resultante.fx + força[i].fx resultante.fy = resultante.fy + força[i].fy fim para

escrever “As componentes da força resultante são: x = ”,

resultante.fx, “e y = ”, resultante.fy fim algoritmo

(14)

Arquivos

 Além da entrada padrão (teclado) e saída padrão

(tela), um outro elemento de entrada e saída disponível nos algoritmos é o ARQUIVO.

 Um arquivo pode ser visto como uma coleção de

registros disponível de forma sequencial, isto é, os registros estão armazenados um após o outro.

 Por uma questão de organização, um arquivo pode

ser FORMATADO, isto é, os registros estão armazenados de forma padronizada.

(15)

Arquivos

 Então, um arquivo formatado significa dados

organizados de forma padronizada:

 campo 1 do registro 1

 campo 2 do registro 1

 ...

 campo n do registro 1

 campo 1 do registro 2

 campo 2 do registro 2

 ...

 campo n do registro 2

 ...

(16)

Arquivos

 O final do arquivo é marcado com um código

chamado “fim de arquivo” ou „fda‟, que pode ser um caractere especial da tabela ASCII.

 Um arquivo precisa ser referenciado dentro do

algoritmo através de um identificador e a

organização dos dados precisa ser informado também.

 declare [nome do arquivo] arquivo de [registro]

 Exemplo:

 declare entrada.dados arquivo de vetor

(17)

Arquivos

 Esta declaração apenas apresenta o arquivo de dados

e referencia a sua organização.

 Ela não é suficiente para qualquer tipo de operação

como, por exemplo, leitura e escrita.

 Para ler ou escrever em um arquivo, precisamos

abri-lo primeiro, como um livro.

 E se o arquivo foi aberto, ele precisa ser fechado

também.

(18)

Arquivos

 Então, para abrir um arquivo, depois de tê-lo

referenciado (declarado), usamos o comando abrir:

 abrir [nome do arquivo]

 Ao abrirmos um arquivo, desejamos, normalmente,

ler ou escrever nele.

 Então, é necessário também informar a ação:

 abrir [nome do arquivo] para [ação]

 Exemplos:

 abrir entrada.dados para leitura

 abrir saída.dados para escrita

(19)

Arquivos

 Desta forma, sabemos que o arquivo entrada.dados

será usado para leitura e saída.dados para escrita.

 Para fechar um arquivo, basta usarmos o comando

fechar seguido do nome do arquivo que será fechado:

 fechar [nome do arquivo]

 Exemplos:

 fechar entrada.dados

 fechar saída.dados

 Como mencionado antes, os dados em um arquivo

estão organizados de forma sequencial.

(20)

Arquivos

 Então, ao ler um arquivo recém aberto, estamos

lendo o primeiro registro dele.

 O comando de leitura de um arquivo aberto é

idêntico ao comando de leitura ler, mas deve ser seguido do nome do arquivo:

 ler [nome do arquivo]

 E como o arquivo é uma sequência de registros,

precisamos informa o nome do registro também:

 ler [nome do arquivo].[registro]

 Observe que entre o nome do arquivo e o registro

existe um ponto.

(21)

Arquivos

 Para escrita, o comando segue o mesmo modelo da

escrita:

 escrever [nome do arquivo]

 Novamente, os dados que serão escritos devem estar

na forma de registro:

 escrever [nome do arquivo].[registro]

 Observe o ponto entre o nome do arquivo e o

registro.

 Vejamos um exemplo:

(22)

Arquivos

algoritmo

defina vetor registro (fx, fy numérico)

declare entrada.dados arquivo de vetor

declare saída.dados arquivo de vetor

declare força registro vetor

abrir entrada.dados para leitura

abrir saída.dados para escrita

ler entrada.dados.força

escrever saída.dados.força

fechar entrada.dados

fechar saída.dados

fim algoritmo

(23)

Arquivos

 Outro exemplo:

 Um professor deseja calcular a média dos testes, provas e

atividades de laboratório para produzir o resultado final, isto é, se o aluno será aprovado ou reprovado.

 O algoritmo para isso já foi desenvolvido nas aulas anteriores.

 Deseja-se, agora, inserir a facilidade de entrar com os dados na forma de arquivo.

 A primeira coisa é padronizar um formato para os dados no arquivo. Uma sugestão inicial é:

 nome do aluno, notas das 3 provas, notas dos 3 testes, notas das 7

atividades e nota da prova final.

(24)

Arquivos

 Exemplo:

João da Silva 7,0 3,0 6,5 8,0 7,0 2,0 10,0 10,0 10,0 9,0 8,0 8,0 0,0 5,0 Pedro 5,0 5,5 8,0 10,0 9,0 3,0 9,0 9,0 9,0 9,0 9,0 9,0 9,0 8,0

José 8,0 9,5 5,0 5,0 8,0 7,0 10,0 9,5 7,0 8,0 8,0 9,0 10,0 7,5 Rosa 5,5 7,5 2,0 10,0 9,5 7,5 10,0 10,0 9,0 9,0 9,0 9,0 9,0 8,0

Silvana 5,0 9,5 9,0 5,0 10,0 10,0 10,0 9,5 10,0 10,0 10,0 10,0 7,0 8,5

 A partir desta organização do arquivo de dados, podemos elaborar a forma do registro que conterá estes dados:

 defina dados registro (nome[30] literal, prova[3] numérico,

teste[3] numérico, atividade[7] numérico, final numérico )

(25)

Arquivos

 declare aluno[100] registro dados

 O nome do arquivo de entrada poderia ser “notas_turma1.txt”.  Logo, é possível declarar-se no algoritmo o arquivo, sua

abertura e seu fechamento:

 declare notas_turma1.txt arquivo de dados

 abrir notas_turma1.txt para leitura  fechar notas_turma1.txt

 Vejamos o algoritmo completo:

(26)

Arquivos

algoritmo

{declaração da variáveis e constantes}

declare mpro numérico {média das provas}

declare mtes numérico {média dos testes}

declare matv numérico {média das atividades}

declare mpar numérico {média parcial}

declare mf numérico {média final}

declare i, j numérico {contadores}

defina dados registro (nome[30] literal, prova[3] numérico, teste[3]

numérico, atividade[7] numérico, final numérico )

declare aluno[100] registro dados

declare notas_turma1.txt arquivo de dados

(27)

Arquivos

abrir notas_turma1.txt para leitura

escreva “Entre com o total de alunos:”

leia N

{leitura dos dados no arquivo}

para i de 1 até N, fazer

leia notas_turma1.txt.aluno[i]

{calcular média das provas}

mpro  0

para j de 1 até 3, fazer {média das provas} mpro  mpro+aluno[i].prova[j]

fim para

mpro  mpro/3

{continua}

(28)

Arquivos

{calcular média dos testes}

mtes  0

para j de 1 até 3, fazer {média dos testes} mtes  mtes+aluno[i].teste[j]

fim para

mtes  mtes/3

{calcular média das atividades}

matv  0

para j de 1 até 7, fazer {média das atividades} matv  matv+aluno[i].atividade[j]

fim para

matv  matv/7 {continua}

(29)

Arquivos

{calcular média parcial}

mpar  (3*mpro+2*(mtes+matv))/7 {média parcial} {avaliar a situação do aluno...}

se (mpar>=7), então {aprovação direta}

escreva “Média: ”, mpar, “ Situação: Aprovado”

senão se (mpar<4), então {reprovação direta}

escreva “Média: ”, mpar, “ Situação: Reprovado”

senão {caso a ser estudado...}

mf  0,5*(mpar+aluno[i].final)

se (mf>=5), então {aprovado em média final} escreva “Média: ”, mf, “ Situação: Aprovado”

senão {reprovado em média final} {continua}

(30)

Arquivos

escreva “Média: ”, mf, “ Situação: Reprovado”

fim se

fim se fim para

fechar notas_turma1.txt

fim algoritmo

Referências

Documentos relacionados

De uma forma geral, os resultados deste estudo demonstraram que (i) tanto destrímanos como sinistrómanos obtiveram melhores resultados quan- do o estímulo se deslocava no plano

Qualquer divulgação, utilização, disseminação ou reprodução (total ou parcial) desta mensagem ou das informações nela contidas é proibida e estará sujeita às penas da

Este trabalho tem como objetivo verificar a viabilidade econômica finan- ceira da autoprodução direta e interligada, elaborando uma comparação entre uma usina hidrelétrica

Um alarme sonoro/visual de alta prioridade será ativado sempre que a pressão nCPAP for maior que o limite de pressão das vias aéreas durante 3 segundos. O alarme será desativado

Paradoxalmente, diante desta evidência, os escolares relataram que o Sistema de Frequência Modulada não está sendo usado com frequência no ambiente escolar, mesmo

O trabalho centrou-se na determinação dos factores de interacção entre o hélice e o veículo Submarino Autónomo – MAYA, na condição de auto – propulsão através

(UEPG PR) Sobre as características do composto 2,2-dimetilpropano, assinale o que for correto. A cadeia principal é saturada com três átomos de carbono. Apresenta cadeia carbônica

(UEPG PR) Sobre as características do composto 2,2 dimetilpropano, assinale o que for correto. A cadeia principal é saturada com três átomos de carbono. Apresenta cadeia