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

Documentos relacionados
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?

A linguagem matemática

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

A linguagem matemática

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

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

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

Num determinado jogo de fichas, os valores

Projeção ortográfica de sólidos geométricos

Um dos conceitos mais utilizados em Matemática

O círculo e o número p

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

Recordando operações

Recordando operações

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

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

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

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:

Num determinado jogo de fichas, os valores

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

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

Método dos Deslocamentos

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

Pedro Vasconcelos DCC/FCUP. Programação Funcional 8 a Aula Listas infinitas

5 Tudo que sobe, desce

A função f(x) = x é a função modular, cujo gráfico. A função g(x) = 1 - x é a função f(x) transformada.

Um Método para o Cálculo da Inversa de Matrizes Simétricas e Positivas Definidas em Bloco

Pesquisa: operação elementar

Detecção de Infração em faixa de pedestres sem semáforos utilizando visão computacional e redes neurais

Programação em MATLAB

XXVII Olimpíada Brasileira de Matemática GABARITO Segunda Fase

Prática X PÊNDULO SIMPLES

XXXV OLIMPÍADA PAULISTA DE MATEMÁTICA Prova da Primeira Fase (13 de agosto de 2011) Nível (6 o e 7 o anos do Ensino Fundamental)

Aplicação do Teorema de Pitágoras

Professores: Elson Rodrigues Marcelo Almeida Gabriel Carvalho Paulo Luiz Ramos

TÉCNICO DE INFORMÁTICA - SISTEMAS

Perfis Importantes no Scrum

Complexidade de Algoritmos. Edson Prestes

Emerson Marcos Furtado

PROCESSOS DE CARGA E DESCARGA DE UNIDADES FLUTUANTES DE PRODUÇÃO ARMAZENAMENTO E TRANSFERÊNCIA DE PETRÓLEO. Ricardo Saldanha da Gama da Câmara e Souza

LINGUAGEM C: COMANDOS DE REPETIÇÃO

Sistema Operacional Unidade 11.2 Shell Script: estruturas condicionais. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Introdução à Programação / Programação I

Aula 5: Conversões Entre Bases Numéricas

Introdução à Programação

Calculando engrenagens cilíndricas

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

Programação Universidade da Beira Interior Departamento de Informática 2007/08

6. Pesquisa e Ordenação

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 33

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes

Fundamentos da Dinâmica da Produção

Nesta aula... Iteração indefinida. 1 Decisões em Python. 2 Funções lógicas. 3 Recursão. 4 Iteração. 5 Ciclo for ou while?

a) Defina uma função para obter o máximo entre dois números

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

LISTA DE EXERCÍCIOS - ro. 02

Árvore Binária de Busca Ótima

Produto : Microsiga Protheus SIGAGFE, Gestão de Frete Embarcador 11.8

ENTECA 2003 IV ENCONTRO TECNOLÓGICO DA ENGENHARIA CIVIL E ARQUITETURA

Leandro Lima Rasmussen

Exercícios - Factorial

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Equacionando problemas - I

Introdução ao Scilab

Capítulo 4 - Equações Não-Lineares

Como construir um compilador utilizando ferramentas Java

Capítulo 04. Erros de arredondamento e Truncamento (Parcial)

Variáveis Tipos de Dados. APROG (Civil) Aula 2

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

Comandos de Repetição

BCC Introdu c ao ` a Programa c ao Portugol Guillermo C amara-ch avez UFOP 1/35

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Camada de Transporte

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

Computação e Programação

INSTITUTO SUPERIOR TÉCNICO UNIVERSIDADE TÉCNICA DE LISBOA. Guia do ensaio de laboratório para as disciplinas:

Aula 4B. Lógica e Algoritmos. Profª. Fabiany

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

Para cada programa, por mais simples que seja, comece sempre por esboçar a solução desenhando um fluxograma.

Processamento da Informação Estruturas de seleção simples e composta

Capítulo V : A Linguagem Pascal Um Tipo Estruturado de Dados: o array 18. Para limite de n até 2 (* passagens de 1 até (n-1) *)

8 Como conhecer a qualidade do ar?

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

Análise de complexidade

Modelagem Matemática e Simulação Computacional da Dinâmica de um Robô SCARA

Compiladores - Gramáticas

4 DEFINIÇÃO DA GEOMETRIA, MALHA E PARÂMETROS DA SIMULAÇÃO

TRIGONOMETRIA. Aula 2. Trigonometria no Triângulo Retângulo Professor Luciano Nóbrega. 1º Bimestre. Maria Auxiliadora

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Módulo de Progressões Aritméticas. Exercícios de PA. 1 a série E.M. Professores Tiago Miranda e Cleber Assis

Guia de operação para 3283

Working 03 : Conceitos Básicos II

Fluxogramas. Leandro Tonietto ago-09

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Linguagem de Maquina II. Visão Geral

Transcrição:

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

Na aua de hoje Controo de execução cicos condicionais whie end Exempos raiz quadrada whie Histograma whie e matrizes fórmua química whie e strings Processamento de strings comparação decompor URL findstr

«Agoritmo» da torrada Pegar no pão Se faca na bancada, Pegar na faca caso contrário Ir buscar faca à gaveta Cortar fatia, Pôr na torradeira, Ligar Enquanto não está pronta Esperar Sequência

«Agoritmo» da torrada Pegar no pão Se faca na bancada, Pegar na faca caso contrário Ir buscar faca à gaveta Cortar fatia, Pôr na torradeira, Ligar Enquanto não está pronta Esperar Condicão

«Agoritmo» da torrada Pegar no pão Se faca na bancada, Pegar na faca caso contrário Ir buscar faca à gaveta Cortar fatia, Pôr na torradeira, Ligar Enquanto não está pronta Esperar Cico Condiciona

Controo de execução Controo de execução Sequência Cicos for end condições if eseif ese end vaores e operadores booeanos cicos condicionais whie end

Cico condiciona: whie Executa um boco de instruções (o corpo do whie) enquanto a condição for verdadeira (não for 0 - zero) whie condição... (corpo)... end

Cico condiciona: whie Exempo: dividir x por dois até se obter um vaor menor que 5 (enquanto >=5) whie x >= 5 end x = x/2;

Raiz Quadrada Exempo 1: cácuo da raiz quadrada

Raiz Quadrada Método babiónico Ideias base 1. Se x é aproximação de s 1/2 então s/x é uma aproximação peo outro ado. Seja s = 100 e s 1/2 = 10. Se 5 = 100 1/2-5 < 10 então 100/5 = 20 = 100 1/2 + 10 > 10 Se 20 = 100 1/2 + 10 > 10 então 100/20 = 5 = 100 1/2-5 < 10 5 10 20

Raiz Quadrada Método babiónico 2. Se y é uma aproximação de s 1/2 e x também x s/y s/x. Seja s = 100 e s 1/2 = 10. y s/x então Se 5 < 8 < 20 então 5 < 100/8 = 12.5 < 20 Se 5 < 12.5 < 20 então 5 < 100/12.5 = 8 < 20 5 8 10 12.5 20

Raiz Quadrada Método babiónico 3. Dada uma aproximação x 0, pode obter-se uma mehor aproximação peo vaor médio do intervao x 0... s/x 0. x 1 = (x 0 + s/x 0 ) /2 Se x 0 = 5 < 10 < 20 então (5+20)/2 = x 1 = 12.5 donde 5 < 8 < 10 < 12.5 < 20 5 10 12.5 20... e mehorar essa aproximação em sucessivas iterações x 2 = (x 1 + s/x 1 ) /2, x 3 = (x 2 + s/x 2 ) /2,...

Raiz Quadrada Método babiónico Exempo: raiz(8100) i x n s/x n x n +s/x n (x n +s/x n )/2 1 4050.00000 2.00000 4052.00000 2026.00000 2 2026.00000 3.99803 2029.99803 1014.99901 3 1014.99901 7.98030 1022.97932 511.48966 4 511.48966 15.83610 527.32576 263.66288 5 263.66288 30.72105 294.38393 147.19196 6 147.19196 55.03018 202.22214 101.11107 7 101.11107 80.10992 181.22099 90.61050 8 90.61050 89.39362 180.00411 90.00206 9 90.00206 89.99794 180.00000 90.00000

Raiz Quadrada Agoritmo (Método babiónico) Começar com uma aproximação x 0 Enquanto??? No fina temos http://en.wikipedia.org/wiki/methods_of_computing_square_roots

Raiz Quadrada Agoritmo (Método babiónico) Quando parar? infinito não é prático Aternativa: quando x n -(x n +1) for pequeno Quão pequeno? Possibiidade: estabeecer a precisão pretendida

Raiz Quadrada Cacuar raiz quadrada, assinatura function x=raiz(s,prec)

Raiz Quadrada Cacuar raiz quadrada function x=raiz(s,prec) Primeira estimativa: x 1 metade de x Segunda estimativa: x 2 média entre x 1 e s/x 1 Precisamos de ambos para a condição do whie

Raiz Quadrada Cacuar raiz quadrada function x=raiz(s,prec) Enquanto os dois vaores forem muito diferentes: guardamos o corrente; e cacuamos o próximo Nota: reutiizam-se as mesmas duas variáveis

Raiz Quadrada Cacuar raiz quadrada function x=raiz(s,prec) Quando o cico terminar, retorna-se a útima aproximação obtida.

Raiz Quadrada octave:22> hep raiz `raiz' is a function from the fie... raiz(s,prec) cacua a raiz quadrada de S a uma precisao determinada por prec octave:23> raiz(4,0.001) ans = 2 octave:24> raiz(9,0.001) ans = 3.0000 octave:25> raiz(17,0.001) ans = 4.1231 octave:26> ans^2 ans = 17.000

Raiz Quadrada Outro teste: Retirando-se os ; das inhas que cacuam os vaores sucessivos de x, pode observar-se a evoução das sucessivas aproximações octave:27> raiz(297,0.001) x = 75.250 x = 39.598 x = 23.549 x = 18.081 x = 17.254 x = 17.234 x = 17.234 ans = 17.234 octave:28> ans^2 ans = 297.00

Histograma Exempo 2: contar presenças (histograma)

Histograma Numa matriz temos o registo de presenças dos 30 aunos de um turno prático Couna 1: o número do auno Couna 2: o número da aua 50014 1 50016 1 50019 1... 50014 4 50016 4 50019 4 50023 4... 50035 5 50049 5 50051 5...

Histograma Pretende-se obter um histograma das presenças dos aunos, i.e. uma matriz com as presenças dos aunos Couna 1: o número do auno Couna 2: o número de presenças 50027 9 50028 10 50030 10... 50071 8 50077 10 50081 12 50084 10 50086 11 50090 11 50099 9...

Histograma Perceber o probema Temos de contar as ocorrências de cada auno na primeira couna da matriz de entrada O resutado será um histograma dos aunos, agrupado peo número

Histograma Generaizar o probema Resove-se este probema, e outros semehantes, com uma função que cacue o histograma basta cacuar o histograma da primeira couna da matriz de entrada

Histograma Conceber o agoritmo Queremos uma matriz com n inhas e 2 counas: eemento e número de ocorrências pode começar a zeros Para cada eemento do vector de entrada verificar se já existe na matriz do histograma se existe somar uma ocorrência nessa inha se não existe acrescentar uma inha com uma ocorrência desse eemento

Histograma Conceber o agoritmo 50014 50016 50014 50016 50019 50023 50014 1 0 0 0 0 0 0 0 0 0 0

Histograma Conceber o agoritmo 50014 50016 50014 50016 50019 50023 50014 1 50016 1 0 0 0 0 0 0 0 0

Histograma Conceber o agoritmo 50014 50016 50014 50016 50019 50023 50014 2 50016 1 0 0 0 0 0 0 0 0

Histograma Conceber o agoritmo 50014 50016 50014 50016 50019 50023 50014 2 50016 2 0 0 0 0 0 0 0 0

Histograma Conceber o agoritmo 50014 50016 50014 50016 50019 50023 50014 2 50016 2 50019 1 0 0 0 0 0 0

Histograma Conceber o agoritmo 50014 50016 50014 50016 50019 50023 50014 2 50016 2 50019 1 50023 1 0 0 0 0

Histograma Conceber o agoritmo 50014 50016 50014 50016 50019 50023 50014 2 50016 2 50019 1 50023 1

Histograma Conceber o agoritmo Tarefas: obter a posição na primeira couna do histograma, ou zero se não existe generaizando: pesquisar eemento num vector criar o histograma, usando a função de pesquisar

Histograma Assinaturas: function pos=pesquisa(vector,eemento) function hist=histograma(sequencia)

Histograma

Histograma Começando do primeiro, enquanto não encontramos nem saímos do vector vamos incrementando posição.

Histograma Se não saímos do vector é porque encontrámos, caso contrário devovemos 0. Mas isto parece compicar desnecessariamente. Podemos criar uma versão mais simpes, pensando ao contrário.

Histograma Se começarmos do fim e formos decrementando a posição, fica automaticamente no 0 quando não encontra. A única diferença é que devove a posição do útimo eemento. Podemos avisar isso na documentação.

Histograma Mora da história: nem sempre a primeira impementação é a mehor...

Histograma Testar a função: octave:15> hep pesquisa `pesquisa' is a function from the fie... pesquisa(vector,eemento) devove a posicao do utimo eemento no vector, ou 0 se nao existe octave:16> pesquisa([1,2,3],2) ans = 2 octave:17> pesquisa([1,2,3],4) ans = 0

Histograma Podemos agora passar para a outra função: function hist=histograma(sequencia)

Histograma Podemos agora passar para a outra função: function hist=histograma(sequencia)

Histograma Podemos agora passar para a outra função: function hist=histograma(sequencia) Cria-se s a matriz do histograma, toda a zeros basta depois somar 1 a cada ocorrência A variáve utimalinha indica a útima inha que contém uma entrada a partir daí a matriz está vazia;

Histograma Podemos agora passar para a outra função: function hist=histograma(sequencia) Para cada eemento da sequencia vamos pedir a posição na primeira couna

Histograma Podemos agora passar para a outra função: function hist=histograma(sequencia) Se ainda não existe (pesquisa devoveu 0), então vamos acrescentar uma inha ao histograma e marcar á o eemento na primeira couna. Vamos apontar a inha para essa inha também.

Histograma Podemos agora passar para a outra função: function hist=histograma(sequencia) Assim garantimos que, em quaquer dos casos, inha está a apontar para a inha certa. Basta então somar 1 na segunda couna (porque a matriz começa a 0).

Histograma Podemos agora passar para a outra função: function hist=histograma(sequencia) No fina amputamos o que não interessa da matriz do histograma, guardando só até à útima inha.

Histograma Testar: octave:19> histograma([1,2,1,2,1,2,4,5,4]) ans = 1 3 2 3 4 2 5 1 octave:20> hep histograma... hist = histograma( sequencia ) Devove o histograma da sequencia numa matriz com uma inha por cada eemento diferente da sequencia, e nas counas o eemento e o numero de ocorrencias.

Histograma Resover o probema: octave:21> presencas=histograma(auas(:,1)) presencas = 50014 10 50016 10 50019 11 50023 9 50035 9 50049 10... 50014 1 50016 1 50019 1... 50014 4 50016 4 50019 4 50023 4... 50035 5 50049 5 50051 5...

Fórmua Química Exempo 3: fórmua química

Fórmua Química Probema: Identificar os eementos de uma fórmua química (string): e.g. CH3COOC6H4COOH Decompor a fórmua, coocando numa tabea de caracteres (vector couna) os diferentes eementos nea referidos. C H O... Simpificação: assumimos que os símboos químicos presentes têm apenas uma etra:

Fórmua Química 1º passo: perceber o que se pede identificar cada eemento eemento é uma etra o que não é etra não é eemento (assumimos eementos com um só um carácter) acrescentar à tabea mas só se não existe a tabea será um vector couna de caracteres

Fórmua Química 2º passo: decompor o probema Para cada carácter na fórmua verificar se é eemento se for, verificar se já está na tabea se não está, acrescentar

Fórmua Química 3º passo: agoritmo e assinaturas verificar se está na tabea já está feita: function pos = pesquisa(vector,eemento) tanto faz se o vector é string ou não, horizonta ou vertica, pois a função pesquisa é suficientemente gera para tratar todas essas situações usar essa função para criar a tabea function tabea = eementos(formua)

Fórmua Química A tabea começa vazia...... e vamos percorrer a fórmua para anaisar os seus componentes

Fórmua Química Para cada carácter da fórmua, se for maiúscua e... não estiver na tabea, então acrescenta-se numa nova inha.

Fórmua Química Testar e apicar à fórmua inicia: octave:70> eementos('ch4') ans = C H octave:71> eementos('h3po4') ans = H P O octave:72> eementos('ch3cooc6h4cooh') ans = C H O

Comparar Strings Exempo 4: Comparar strings

Comparar Strings Numa próxima aua vamos ver como er e escrever ficheiros vamos precisar de processar strings para separar o seu conteúdo quando for mais compexo do que o str2num processa

Comparar Strings Vamos comparar 2 strings função strcmp já faz isto mas nós iremos querer considerar que o caracter? conta como igua a quaquer carácter (wid card) octave:30> compara('abc','a?c') ans = 1 octave:31> compara('abc','a?d') ans = 0 octave:32> compara('abc','???') ans = 1 Assinatura da função function igua=compara(s1,s2)

Comparar Strings

Comparar Strings Se as strings têm o mesmo comprimento, vae a pena compará-as. Caso contrário, então é faso que sejam iguais.

Comparar Strings Começa-se no primeiro carácter. Enquanto não utrapassámos o fim do vector; e os caracteres são iguais ou agum é um? Avança-se uma posição

Comparar Strings As strings são iguais se no cico whie se utrapassar o fim do vector. Nota: o operador > devove true ou fase

Comparar Strings Testar: octave:33> compara('xpto','xptt') ans = 0 octave:34> compara('xpto','xpt?') ans = 1 octave:35> compara('xpto','??b?') ans = 0 octave:36> compara('xpto','??t?') ans = 1 octave:37> compara('xp?o','??x?') ans = 1

Decompor URL Exempo 5: decompor um URL

Decompor URL Pretende-se decompor um URL e.g. http://ssdi.di.fct.un.pt/ice/b/index.htm nos seus componentes protocoo: http máquina: ssdi.di.fct.un.pt caminho: ice/b ficheiro: index.htm Função úti: findstr

Decompor URL Função findstr: exempos octave:23> findstr('aaaaxaaaxaaa','x') ans = 5 9 octave:24> findstr('x','aaaaxaaaxaaa') ans = 5 9 octave:25> findstr('axa','aaaaxyaaxaaa') ans = 8

Decompor URL Guardar em barras a posição das barras '/'

Decompor URL O protocoo é a parte do início à primeira barra menos 2 caracteres http://ssdi.di.fct.un.pt/ice/b/index.htm

Decompor URL A máquina está especificada na parte a seguir à segunda barra até antes da terceira. http://ssdi.di.fct.un.pt/ice/b/index.htm

Decompor URL caminho começa a seguir à terceira barra e acaba antes da útima. Nota: poderia incuir a útima barra também.. http://ssdi.di.fct.un.pt/ice/b/index.htm

Decompor URL O ficheiro começa a seguir à útima barra e acaba no fina do URL http://ssdi.di.fct.un.pt/ice/b/index.htm

Comparar Strings Testar: octave:39> [protocoo,maquina,caminho,ficheiro]=... > decompoeur('http://ssdi.di.fct.un.pt/ice/b/index.htm') protocoo = http maquina = ssdi.di.fct.un.pt [caminho = ice/b ficheiro = index.htm

Resumo Resumindo...

Resumo whie cico para repetir instruções enquanto uma condição se verifica para quando não sabemos à partida quantas iterações são necessárias, mas sabemos verificar se é necessário continuar Processamento de strings findstr, isupper (isower, ischar, isapha,...)

Resumo Teste: > F('http://www.abc.edu/geoogy/tectonics.htm', '/') ans = tectonics.htm

Resumo Para estudar esta aua Tentar fazer os exempos e aterações ao código Consutar o manua Octave whie, 10.3 funções para caracteres, 5.7

Resumo O que já sabemos em programação operações e variáveis (números e strings) decompor probemas funções, scripts, código fonte manipuar vectores e matrizes números e texto controar a execução sequência, condições (if eseif ese) cicos for se sabemos quantas vezes iterar cicos whie se sabemos a condição de paragem

Dúvidas?