Informática para Ciências e Engenharias (B) 2015/16. Teórica 9

Documentos relacionados
Informática para Ciências e Engenharias 2014/15. Teórica 9

Informática para Ciências e Engenharias 2012/13. Teórica 9

Informática para Ciências e Engenharias (B) 2015/16. Teórica 5

Informática para Ciências e Engenharias (B) 2015/16. Teórica 3

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 8. Pedro Barahona 2016 / 17

Informática para Ciências e Engenharias (B) 2015/16. Teórica 8

Informática para Ciências e Engenharias (B) 2016/17. Teórica 3

Informática para Ciências e Engenharias (B) 2015/16. Teórica 4

Informática para Ciências e Engenharias (B) 2015/16. Teórica 11

Informática para Ciências e Engenharias 2013/14. Teórica 7

Informática para Ciências e Engenharias 2014/15. Teórica 7

Informática para Ciências e Engenharias (B) 2015/16. Teórica 10

Informática para Ciências e Engenharias (B) 2015/16. Teórica 2

Informática para Ciências e Engenharias (B) 2016/17. Teórica 2

Informática para Ciências e Engenharias 2013/14. Teórica 3

ANÁLISE COMPLEXA E EQUAÇÕES DIFERENCIAIS TESTE 2A - 15 DE JUNHO DE DAS 11H. Apresente e justifique todos os cálculos. dy dt = y t t ; y(1) = 1.

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 10. Pedro Barahona 2016 / 17

Na figura abaixo, a balança está em equilíbrio e as três melancias têm o mesmo peso. Nessas condições, qual é o peso (em kg) de cada melancia?

Informática para Ciências e Engenharias (B) 2015/16. Teórica 1

Informática para Ciências e Engenharias (B) 2015/16. Teórica 6

Informática para Ciências e Engenharias 2014/15. Teórica 4

Um dos conceitos mais utilizados em Matemática

Computação e Linguagem de Programação

A linguagem matemática

ANÁLISE MATEMÁTICA IV FICHA SUPLEMENTAR 5 EQUAÇÕES DIFERENCIAIS PARCIAIS E TRANSFORMADA DE LAPLACE

Informática para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 10. Pedro Barahona 2018 / 19

Podemos utilizar o cálculo do determinante para nos auxiliar a encontrar a inversa de uma matriz, como veremos à seguir.

A linguagem matemática

Informática para Ciências e Engenharias (B) 2016/17. Teórica 9

Informática para Ciências e Engenharias (B) 2016/17. Teórica 1

Triângulos. O triângulo é uma figura geométrica muito. Para pensar. Nossa aula

O triângulo é uma figura geométrica muito. Você já sabe que o triângulo é uma figura geométrica de:

Informática para Ciências e Engenharias (B) 2016/17. Teórica 10

Informática para Ciências e Engenharias (B) 2015/16. Teórica 7

Plantas e mapas. Na Aula 17, aprendemos o conceito de semelhança

10 a Aula - Operadores de Molde ( Casting ). Atribuição de Memória. Ponteiros. Enumerados. Mestrado em Engenharia Física Tecnológica

Na natureza nada se cria, nada se perde, tudo se transforma

Análise matricial de estruturas não-lineares usando o Método de Newton.

Você já percebeu que os gráficos são cada vez. Relatórios de empresas Análises governamentais Relatórios de pesquisas Balanços financeiros

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 8. Pedro Barahona 2016 / 17

Operando com potências

1.a) Qual a diferença entre uma linguagem de programação de alto nível e uma linguagem de programação de baixo nível?

As combinações. combinatória que envolviam o princípio multiplicativo e as permutações.

Computação e Programação

Método dos Deslocamentos

Operando com potências

Recordando operações

Triângulos especiais

14 - Dados Estruturados

Computação e Linguagem de Programação

Programação em MATLAB

Recordando operações

Calculando engrenagens cilíndricas

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

TÉCNICO DE INFORMÁTICA - SISTEMAS

Num determinado jogo de fichas, os valores

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

Do que são formados os átomos?

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos INSTRUÇÕES DE CONTROLO ÍNDICE. Nuno Mamede

Breve resolução do e-fólio B

1/24 FICHEIROS DE TEXTO

Vamos entender a reação química com átomos e moléculas

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17

Computação e Programação Exame Resolvido 1ª Época

Sist. Lin. I. Sistemas Lineares Introdução Definições Geometria Resolução Equivalência Eliminação de Gauss Após Escalonamento. Sist. Lin.

Informática para Ciências e Engenharias 2014/15. Teórica 8

MATLAB. Sumário. Tópicos Avançados. 1. Estruturas 2. Células. J. R. Caldas Pinto, J. M. da Costa Sousa 357

9 Proposta de dimensionamento de elementos de concreto armado à flexão simples em situação de incêndio

A Análise de Causa Raiz pode ser uma das ferramentas mais importantes que sua organização pode ter nas mãos.

Calculando áreas. Após terem sido furadas, qual delas possui maior área?

Calculando áreas. Após terem sido furadas, qual delas possui maior área?

8.5 Cálculo de indutância e densidade de energia magnética

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

LINGUAGEM C: PONTEIROS

Aplicação do Teorema de Pitágoras

Computação e Programação

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

Computação e Programação

Introdução ao MatLab Gráficos e manipulação de dados

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Informática para Ciências e Engenharias 2012/13. Teórica 10

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

Arrays. int idade1; int idade2; int idade3; int idade4; int[] idades;

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

Ácido sulfúrico na estrela-d alva?

Informática para as Ciências e Engenharias - 2º semestre 2016/2017

FUNÇÃO SE. = SE ([condição]; [valor se verdadeiro]; [valor se falso]). A condição pode ser efetuada usando sinais matemáticos comparativos:

Problema 2 (1 valor) M = [50:2:248 ; 249:-2:51] Problema 3 (1 valor)

VIGAS HIPERESTÁTICAS - EQUAÇÃO DOS 3 MOMENTOS

Num determinado jogo de fichas, os valores

Perfis Importantes no Scrum

Organização de Arquivos. Leandro C. Cintra M.C.F. de Oliveira Thiago A. S. Pardo Cristina D. A. Ciferri

Transcrição:

Informática para Ciências e Engenharias (B) 2015/16 Teórica 9

Na aua de hoje Estruturas e vectores de estruturas. Cácuo da massa moecuar Cácuo da fracção de um resíduo em sequências de proteínas

Estruturas Estruturas

Estruturas Vectores e matrizes guardam vaores de um só tipo. Uma estrutura contém campos que podem ser de tipos diferentes incuindo estrutura Sintaxe: variave.campo

Estruturas Exempo: octave:3> prato.nome="fietes"; octave:4> prato.preco=12.5; octave:5> prato.pedidos=[10,2,3,5,9,5,9]; octave:6> prato prato = scaar structure containing the fieds: nome = fietes preco = 12.500 pedidos = 10 2 3 5 9 5 9

Estruturas prato = nome = fietes preco = 12.500 pedidos = 10 2 3 5 9 5 9 Estrutura guardada na variáve prato

Estruturas prato = nome = fietes preco = 12.500 pedidos = 10 2 3 5 9 5 9 Vaores dos campos

Estruturas Recapituando variave.campo1 = va1 variave.campo2 = va2 variave.campo3 = va3 etc... Cada campo pode ter um vaor de tipo diferente, incuindo ser outra estrutura.

Estruturas Estruturas de estruturas octave:7> ciente.nome="vitor Meirees"; octave:8> ciente.prato=prato ciente = scaar structure containing the fieds: nome = Vitor Meirees prato = scaar structure containing the fieds: nome = fietes preco = 12.500 pedidos = 10 2 3 5 9 5 9

Estruturas Não podemos criar vectores de estruturas se os campos tiverem nomes diferentes octave:20> x.campo1=[1,2,3] x = campo1 = 1 2 3 octave:21> y.campo2=[1,2,3] y = campo2 = 1 2 3 octave:22> vec2=[x,y] error: orderfieds: structs must have same fieds up to order error: cat: fied names mismatch in concatenating structs

Estruturas Em gera, um vector de estruturas funciona como quaquer vector octave:31> for f=1:10 octave:33> vec2(4:end).quant > vec2(f).nome=['x',int2str(f)]; ans = 8 > vec2(f).quant=f*2; ans = 10 > end ans = 12 ans = 14 ans = 16 ans = 18 octave:32> vec2(1) ans = 20 ans = nome = x1 quant = 2 octave:34> ength(vec2) ans = 10

Estruturas Um vector de estruturas funciona como quaquer vector No entanto o probema de pré-dimensionar não é tão sério Quanto poderia parecer assumindo que a dimensão dos eementos pode ser variáve O vector em si Não guarda os vaores dos campos Guarda apenas os endereços de memória onde estão guardados os vaores dos campos,

Estruturas Exempo: vec2.nome for f=1:10 vec2(f).nome=['x',int2str(f)]; vec2(f).quant=f*2; end 102 130 160 198 102... 130... 160... 198 'x1' 'x2' 'x3' 'x4'

Estruturas Ainda assim, podemos pré-dimensionar atribuindo vaores ao útimo eemento do vector: octave:35> vecp(100).campo1=[] vecp = 1x100 struct array containing the fieds: campo1 octave:36> vecp(100).campo2=[] vecp = 1x100 struct array containing the fieds: campo1 campo2

Massa Moecuar Exempo 1: Massa Moecuar

Massa Moecuar Objectivo: programa que recebe uma fórmua química; e devove a massa moecuar octave:37> massamo('chc3') ans = 119.38

Massa Moecuar Dados: Ficheiro com as massas atómicas: massas.txt --------------------- Ac;227 Ag;107.8682 A;26.9815386 Am;243 Ar;39.948 As;74.9216 At;210 Au;196.966569...

Massa Moecuar Probemas principais: Ler o ficheiro com as massas e guardar os vaores em memória (vector de estruturas) Interpretar a fórmua para determinar o número de átomos de cada eemento e.g. C3 são 3 átomos de C (vector de estruturas) Encontrar a massa dado o símboo químico Cacuar o tota

Massa Moecuar Ler o ficheiro com as massas e organizar esses dados num vector de estruturas com símboo químico e massa atómica: function eementos=emassas(nomefich)

Massa Moecuar Decompor a fórmua química num vector de estruturas com o símboo químico e o número de átomos de cada eemento: function eementos=emassas(nomefich) function atoms=decompor(formua)

Massa Moecuar Encontrar a massa dado o símboo químico e o vector de estruturas com as massas todas: function eementos=emassas(nomefich) function atoms=decompor(formua) function massa=massae(simbq, eementos)

Massa Moecuar Juntar tudo na função que resove o nosso probema: ê as massas decompõe a fórmua soma as massas atómicas mutipicadas peo número de átomos de cada eemento function m=massamo(formua) function eementos=emassas(nomefich) function atoms=decompor(formua) function massa=massae(simbq, eementos)

Massa Moecuar Se ago correr ma devovemos o vector vazio

Massa Moecuar Ler cada inha e encontrar a posição do separador ;

Massa Moecuar Acrescentar uma estrutura ao vector com os dois campos (convertendo a massa em número)

Massa Moecuar Testar octave:39> es=emassas('massas.txt') es = 1x117 struct array containing the fieds: simbq massa octave:40> es(1) ans = simbq = Ac massa = 227 octave:41> es(2) ans = simbq = Ag massa = 107.87

Massa Moecuar Decompor a fórmua química: function atoms = decompor(formua) Identificar a posição do próximo eemento começa por maiúscua Converter o eemento corrente, que acaba antes do próximo, numa estrutura com símboo químico e quantidade.

Massa Moecuar Decompor a fórmua química: function atoms = decompor(formua) Exempo Corrente Próximo CaC2 atom = simbq = Ca numero = 1

Massa Moecuar Decompor a fórmua química: function atoms = decompor(formua) Exempo CaC2 Corrente atom = simbq = C numero = 2 Próximo

Massa Moecuar Decompor a fórmua química: function atoms = decompor(formua) Requer encontrar a posição da próxima maiúscua (ou ength+1 se não há mais) começando da posição dada, function ix=proxima(formua,ix) e converter em estrutura function atomo=converte(parteformua)

Massa Moecuar Encontrar a posição da próxima maiúscua (ou ength+1 se não há mais) começando da posição dada

Massa Moecuar Testar octave:7> proxima('cac2',1) ans = 1 octave:8> proxima('cac2',2) ans = 3 octave:9> proxima('cac2',4) ans = 6 octave:10>

Massa Moecuar Peo menos uma etra sem número.

Massa Moecuar A seguir procuramos etra(s) minúscua(s) (ex Ununpentium Uup) ou números

Massa Moecuar Finamente, se não há nada no número, então a quantidade é um.

Massa Moecuar Testar octave:11> atom=converte('ca') atom = simbq = Ca numero = 1 octave:12> atom=converte('c2') atom = simbq = C numero = 2

Massa Moecuar Começamos com o vector vazio e procuramos a maiúscua a partir do início da fórmua para o caso de haver vaores anómaos.

Massa Moecuar Enquanto não sairmos do fina da fórmua, vamos procurar o eemento seguinte (a posição da próxima maiúscua) e converter o fragmento desde o carácter corrente ao carácter anterior ao seguinte.

Massa Moecuar Avançamos na fórmua iguaando o corrente à posição seguinte.

Massa Moecuar Testar octave:14> atoms=decompor('cac2') atoms = 1x2 struct array containing the fieds: simbq numero octave:15> atoms(1) ans = simbq = Ca numero = 1

Massa Moecuar Para juntar tudo só fata massae function m=massamo(formua) function eementos=emassas(nomefich) function atoms=decompor(formua) function massa=massae(simbq, eementos)

Massa Moecuar

Massa Moecuar Percorremos o vector de estruturas com as massas até encontrar um com eemento com o mesmo símboo químico.

Massa Moecuar Percorrer do fim para o princípio tem a (pequena) vantagem de não estar sempre a perguntar o comprimento do vector. Mas também se podia fazer o cico a começar em 1 e ix<=ength(...)

Massa Moecuar Se encontra devove a massa. Caso contrário devove zero.

Massa Moecuar Testar octave:17> eementos=emassas('massas.txt'); octave:18> massae('c',eementos) ans = 35.453 octave:19> massae('zn',eementos) ans = 65.409 octave:20> Importante: seria má ideia que a função massae esse o ficheiro porque isso obrigaria a er o ficheiro várias vezes. É mehor er só uma vez e fornecer os vaores como argumento

Massa Moecuar Podemos agora estruturar a função massamo usando as funções mais simpes já desenvovidas e testadas. function m=massamo(formua) function eementos=emassas(nomefich) function atoms=decompor(formua) function massa=massae(simbq, eementos)

Massa Moecuar Lê as massas atómicas para o vector de estruturas com simbq e massa para cada eemento

Massa Moecuar Decompõe a fórmua num vector de estruturas com simbq e número

Massa Moecuar Cacua a massa tota somando o produto da massa de cada átomo peo seu número em cada parte da fórmua.

Massa Moecuar Testar octave:20> massamo('ch3cooh') ans = 60.052 octave:21> massamo('caco3') ans = 100.09 octave:22> massamo('c7h5n3o6') ans = 227.13 octave:23>

FASTA Exempo 2: Sequência de Proteínas

FASTA O formato FASTA é muito usado para guardar sequências A inha que começa com > é o nome O resto é a sequência >NP_061820.1_Homo_sapiens MGDVEKGKKIFIMKCSQCHTVEKGGKHKTGPNLHGLFGRKTGQAPGYS YTAANKNKGIIWGEDTLMEYLENPKKYIPGTKMIFVGIKKKEERADLI AYLKKATNE >XP_002803395.1_Macaca_muatta MGDVEKGKKIFIMKCSQCHTVEKGGKHKTGPNLHGLFGRKTGQAPGYS YTAANKNKGITWGEDTLMEYLENPKKYIPGTKMIFVGIKKKEERADLI AYLKKATNE

FASTA Pretendemos Ler o ficheiro e guardar os dados Nome e sequência para cada sequência Cacuar a fracção de um resíduo numa sequência Juntar tudo para gerar o reatório function sequencias=efasta(ficheiro)

FASTA Agoritmo Lemos o ficheiro, uma inha de cada vez Mantemos uma estrutura com nome e sequência Se a inha começa por > é uma nova sequência Se emos uma sequência antes, acrescentar ao resutado Atribuir o nome, impar a sequência No fim, não esquecer de acrescentar a útima function sequencias=efasta(ficheiro)

Massa Moecuar Iniciaizar variáveis e abrir o ficheiro

Massa Moecuar Ler o ficheiro, inha a inha, até ao fim

Massa Moecuar Se é uma nova sequência

Massa Moecuar Acrescentar ao resutado a anterior, se houver aguma

Massa Moecuar Guardar o nome na corrente e impar a sequência

Massa Moecuar Se não é uma sequência nova, juntar à sequência corrente

Massa Moecuar se houver uma útima acrescentar essa útima, e fechar o ficheiro

FASTA Testar octave:24> seqs=efasta('cytochromes.fa') seqs = 1x15 struct array containing the fieds: nome sequencia

FASTA Testar octave:25> seqs(1) ans = scaar structure containing the fieds: nome = NP_061820.1_Homo_sapiens sequencia = MGDVEKGKKIFIMKCSQCHTVEKGGKHKTGPNLHGLFGRKTGQAPGYSYTAANKN KGIIWGEDTLMEYLENPKKYIPGTKMIFVGIKKKEERADLIAYLKKATNE

FASTA

FASTA Testar octave:30> fracresiduo('aakk','k') ans = 0.50000 Octave:31> fracresiduo('akkk','k') ans = 0.75000 octave:32>

FASTA

FASTA Testar octave-3.6.4.exe:32> escrevereatorio('cytochromes.fa','l') NP_061820.1_Homo_sapiens contem 0.06% de L XP_002803395.1_Macaca_muatta contem 0.06% de L AEP27210.1_Papio_hamadryas contem 0.06% de L XP_003914483.1_Papio_anubis contem 0.07% de L XP_003919830.1_Saimiri_boiviensis_boiviensis contem 0.06% de L XP_002760914.1_Caithrix_jacchus contem 0.05% de L AEP27227.1_Cacajao_rubicundus contem 0.05% de L AEP27233.1_Lemur_catta contem 0.06% de L XP_004091919.1_Nomascus_eucogenys contem 0.06% de L BAC40143.1_Mus_muscuus contem 0.06% de L EAW72790.1_Homo_sapiens contem 0.06% de L NP_001039526.1_Bos_taurus contem 0.06% de L AEP27241.1_Nycticebus_coucang contem 0.06% de L EHB17946.1_Heterocephaus_gaber contem 0.07% de L XP_002720254.1_Oryctoagus_cunicuus contem 0.09% de L

Resumindo Estruturas: Servem para organizar dados heterogéneos Podem ser agrupadas em vectores, desde que tenham os mesmos campos. Nota: Normamente é mehor er todos os dados para um vector de estruturas e depois processar essa informação.

Para estudar a aua de hoje Para consutar: Manua do Octave, Secção 6.1

Dúvidas?