Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 3.

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
INFORMAÇÕES COMPLEMENTARES
A busca das mulheres para alcançar seu espaço dentro das organizações
Material pedagógico Multiplicar x 5 Clica!
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Métodos, Parâmetros, Argumentos e Contratos
Operadores e Funções do LINGO
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal.
1 INQUÉRITOS PEDAGÓGICOS 2º Semestre 2003/2004 ANÁLISE GERAL DOS RESULTADOS OBTIDOS 1.Nº de RESPOSTAS ao inquérito 2003/2004 = (42,8%) 2.Comparação.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 12.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 11.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 9.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 4.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 10.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 6.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 13.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 9.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 4.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 6.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 10.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 7.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 10.
Introdução aos Computadores e à Programação DI-FCT-UNL-2005/2006 Introdução 1.1 Octave Cadeias e ficheiros.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 2.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 2.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 11.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 5.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 4.
11 de Maio de 2006Listas e Ordenação1 Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2005/2006.
Excel Profa. Cristina M. Nunes.
Campus Curitiba Departamento Acadêmico de Matemática Angela Olandoski Barboza UTFPR – Damat.
Curso de ADMINISTRAÇÃO
Relações Adriano Joaquim de O Cruz ©2002 NCE/UFRJ
EXPRESSÕES ARITMÉTICAS
EXPRESSÕES ARITMÉTICAS
FUNÇÃO MODULAR.
Aula 4 Nomes, Vinculações, Tipos e Escopos
EXEMPLOS DE ESTRUTURAS PROTENDIDAS
Provas de Concursos Anteriores
Renda até 2 SM.
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
MECÂNICA - ESTÁTICA Cabos Cap. 7.
(CESPE/ Técnico Judiciário do TRT 17ª Região/ES) O Superior Tribunal de Justiça entende que o candidato aprovado em concurso público dentro do limite.
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
1 CENTRO DE DESENVOLVIMENTO E PLANEJAMENTO REGIONAL – 2006 P Ó S-GRADUA Ç ÃO EM ECONOMIA Microeconomia I Prof.: Edson Domingues Cap í tulo II: Escolha.
CATÁLOGO GÉIA PÁG. 1 GÉIA PÁG. 2 HESTIA PÁG. 3.
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Funções Universidade Federal de Ouro Preto - UFOP
Lemas (Sudkamp)  .
Coordenação Geral de Ensino da Faculdade
Projeto Marcas que Eu Gosto 1 PROJETO MARCAS QUE EU GOSTO Estudos Quantitativo de Consumidores Janeiro / 2005.
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Programação de Computadores
C ORROPIOS, C ARDINCHAS E C ÃES G RANDES O LIVRO de José Paixão em imagens – com pistas de leitura propostas por por www.joraga.net.
Estatística Aula 9 – 28/02/2011.
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Olhe fixamente para a Bruxa Nariguda
Máquina de Turing Universal
AM020C A interface entre Meio Ambiente, Sociedade e Economia Indicadores de produtividade e empregabilidade da agricultura do Brasil. Aluna Andressa Santos.
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004
Transcrição da apresentação:

Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 3

Ludwig Krippahl, Revisão: Funções function res=soma(a,b) res=a+b endfunction Declaração da função

Ludwig Krippahl, Revisão: Funções function res=soma(a,b) res=a+b endfunction Nome da função E nome do ficheiro: soma.m

Ludwig Krippahl, Revisão: Funções function res=soma(a,b) res=a+b endfunction Argumentos da função.

Ludwig Krippahl, Revisão: Funções function res=soma(a,b) res=a+b endfunction Nome da variável (na função) com o valor a devolver

Ludwig Krippahl, Revisão: Funções function res=soma(a,b) res=a+b endfunction a e b contém cópias dos valores dados. Todas as variáveis são locais (só existem na função).

Ludwig Krippahl, Revisão: Funções function res=soma(a,b) res=a+b; endfunction O ; silencia os cálculos intermédios. É útil omitir durante o desenvolvimento.

Ludwig Krippahl, Aulas práticas Antes de perguntar: help nome_da_função consultar o manual experimentar

Ludwig Krippahl, Controlo da execução 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

Ludwig Krippahl, Controlo da execução 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

Ludwig Krippahl, Controlo da execução 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 Condição

Ludwig Krippahl, Controlo da execução 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 Ciclo

Ludwig Krippahl, Na aula de hoje... Comparações (Booleanos) Condições (if...then...else Ciclo condicional (while) Ciclo for e break.

Ludwig Krippahl, Comparações Igual == (ATT: um igual, =, é atribuição) Maior, menor, ou igual >, =, <= Negação ! Diferente !=

Ludwig Krippahl, Booleanos e comparações Booleano (verdadeiro ou falso), exemplos: octave:34> 1==2 ans = 0 octave:35> 1==1 ans = 1 octave:36> [1,2,3]==[3,2,1] ans = 0 1 0(compara cada elemento) octave:37> "paulo"=="paula" ans = (compara cada elemento)

Ludwig Krippahl, Booleanos Booleano (verdadeiro ou falso), 0 é falso. Tudo o resto é verdadeiro Constantes já definidas no Octave: octave:38> true true = 1 octave:39> false false = 0

Ludwig Krippahl, Comparar strings Strings são vectores de caracteres. abc==abd ans= abc==abde *erro* (não têm o mesmo tamanho)

Ludwig Krippahl, Comparar strings para comparar strings usar função strcmp(s1,s2) strcmp(ab,abc) ans = 0

Ludwig Krippahl, Operadores Booleanos (e, ou) &e |ou Curto-circuito: (só avalia o necessário) &&A && B, se A falso não faz B ||A II B, se A verdadeiro, não faz B

Ludwig Krippahl, Controlo condicional: if Executa o bloco de instruções se a expressão for diferente de 0 (0 é falso) if expressão... else... endif

Ludwig Krippahl, Controlo condicional: if Exemplo: se x<25 soma y if x<25 x=x+y; endif

Ludwig Krippahl, Controlo condicional: if Exemplo: se x e y diferentes de 25, soma y if x!=25 & y!=25 x=x+y; endif

Ludwig Krippahl, Controlo condicional: if Exemplo: se s não é vazia e se o primeiro caracter é A if !strcmp(s,) && s(1)==A... endif Importante não verificar a segunda parte se s for vazia (dá erro...): && em vez de &

Ludwig Krippahl, Ciclo condicional: while Executa o bloco de instruções enquanto a expressão for diferente de 0 while expressão... endwhile

Ludwig Krippahl, Ciclo condicional: while Exemplo: dividir x por dois até ter um número menor que 5 (enquanto >=5) while x>=5 x=x/2; endwhile

Ludwig Krippahl, Ciclo for Executa o bloco de instruções uma vez para cada valor da variável. for var = vector... endfor

Ludwig Krippahl, Ciclo for Exemplo: somar a x os números 3, 5, e 8. for f = [3, 5, 8] x=x+f endfor

Ludwig Krippahl, Ciclo for Exemplo: fazer algo 10 vezes: for f = 1:10 alguma coisa endfor

Ludwig Krippahl, Ciclo for Exemplo: Substituir todos os caracteres de s por * for f = 1:length(s) s(f) = *; endfor Nota: não é preciso usar o contador dentro do ciclo.

Ludwig Krippahl, Problema Decompor uma fórmula química (string): e.g. CH3COOH Numa tabela com os seus elementos (matriz): C H O

Ludwig Krippahl, º passo: perceber como fazer Percorrer a fórmula CH3COOH Identificar o que é elemento

Ludwig Krippahl, º passo: perceber como fazer Percorrer a fórmula CH3COOH E o que não é elemento (assumir que elemento só tem um caracter)

Ludwig Krippahl, º passo: perceber como fazer Criar a lista C, H, C, O, O, H

Ludwig Krippahl, º passo: perceber como fazer Criar a lista C, H, C, O, O, H Mas pôr só se não estiver já na lista

Ludwig Krippahl, º passo: dividir o problema em problemas mais simples Precisamos de 2 coisas: Tirar o primeiro elemento da fórmula Acrescentar à tabela se não estiver lá.

Ludwig Krippahl, Tirar o primeiro elemento Uma função que: Recebe a fórmula Devolve o primeiro elemento e o resto da fórmula

Ludwig Krippahl, Tirar o primeiro elemento Uma função que: Recebe a fórmula Devolve o primeiro elemento e o resto da fórmula: CH3COOH

Ludwig Krippahl, Tirar o primeiro elemento Uma função que: Recebe a fórmula Devolve o primeiro elemento e o resto da fórmula Podemos usar várias vezes H3COOH

Ludwig Krippahl, Tirar o primeiro elemento Uma função que: Recebe a fórmula Devolve o primeiro elemento e o resto da fórmula Podemos usar várias vezes 3COOH COOH

Ludwig Krippahl, Tirar o primeiro elemento Uma função que: Recebe a fórmula Devolve o primeiro elemento e o resto da fórmula Podemos usar várias vezes OOH

Ludwig Krippahl, Função: vários valores Como declarar a função (Manual, 11.2) function [v1, v2, v3]=nome(arg1, arg2)..... endfunction

Ludwig Krippahl, Função: vários valores Exemplo function [s,p]=sumprod(a,b) s=a+b; p=a*b; endfunction

Ludwig Krippahl, Função [el, resto]=umelem(s) Aqui também várias coisas: Tirar os números no inicio, se necessário: 3COOH Guardar em el o primeiro caracter, se houver. Guardar em resto os outros, se houver.

Ludwig Krippahl, Função [el, resto]=umelem(s) 1: Tirar os números no inicio, se necessário: Enquanto s não for vazio e s(1) for um dígito: s = s(2:length(s)). Não vazio: !strcmp(s,) é algarismo: função isdigit (c)

Ludwig Krippahl, Função [el, resto]=umelem(s) 1: Tirar os números no inicio, se necessário: Enquanto s não for vazio e s(1) for um dígito: s = s(2:length(s)). Enquanto: while condição.... endwhile

Ludwig Krippahl, Função [el, resto]=umelem(s) 2: Guardar em el o primeiro caracter, se houver Só serve para elementos com 1 caracter. Comentar isso no código (%). Se, então, caso contrário: if condição.... else.... endif

Ludwig Krippahl, Função [el, resto]=umelem(s) 3: Guardar o resto se houver mais caracteres em s ou seja, se length(s) > 1 Se, então, caso contrário: if condição.... else.... endif

Ludwig Krippahl, Função [el, resto]=umelem(s) Testar: octave:22> [e,r]=umelem("CH3COOH") e = C r = H3COOH octave:23> [e1,r]=umelem(r) e1 = H r = 3COOH octave:24> [e1,r]=umelem(r) e1 = C r = OOH octave:25>

Ludwig Krippahl, Função [el, resto]=umelem(s) Entra aqui [e, resto] = umelem(resto)

Ludwig Krippahl, Função [el, resto]=umelem(s) Entra aqui [e, resto] = umelem(resto) Sai aqui o novo fragmento

Ludwig Krippahl, º passo: partir em mais simples Precisamos de 2 coisas: Tirar o primeiro elemento da fórmula Acrescentar à tabela se não estiver lá.

Ludwig Krippahl, Acrescentar à lista Uma função que: Recebe o elemento e a tabela Acrescenta se não estiver Podemos usar várias vezes C, C

Ludwig Krippahl, Acrescentar à lista Uma função que: Recebe o elemento e a tabela Acrescenta se não estiver Podemos usar várias vezes H, C C H

Ludwig Krippahl, Acrescentar à lista Uma função que: Recebe o elemento e a tabela Acrescenta se não estiver Podemos usar várias vezes C, [C;H] Já está, não faz nada C H

Ludwig Krippahl, Função tabela=addelem(el,tabela) Também várias coisas: Se tabela vazia, fica logo el Caso contrário, ver se há el na tabela. Se não há, acrescenta no fim

Ludwig Krippahl, Função tabela=addelem(el,tabela) Se tabela vazia, fica logo el if strcmp(tabela,)... else endif

Ludwig Krippahl, Função tabela=addelem(el,tabela) Caso contrário, ver se há na tabela Assumir que não há (usar variável = false) Percorrer todas as linhas Se encontra, afinal há, pára de procurar. for f=1:rows(tabela)... if... break endfor

Ludwig Krippahl, Função tabela=separaelems(s) Já temos as peças, agora é juntar Inicializar a tabela a vazio. Enquanto s não for vazio Tirar o primeiro elemento com umelem Guardar na tabela com addelem (se houver) while !strcmp(s,)... endwhile

Ludwig Krippahl, Nesta aula Os detalhes (if, for, etc..) são para ir praticando. O importante desta aula é o método: Perceber o problema e conceber o algoritmo Se é complicado, dividir em partes mais simples Fazer o mesmo com as partes mais simples até ter partes triviais.

Ludwig Krippahl, Dividir para conquistar separaelem umelem tirar os dígitos guardar o el, se algum guardar o resto, se existe addelem se tabela vazia, basta pôr caso contrário, procura, e põe se não está lá

Ludwig Krippahl, Dividir para conquistar separaelem Enquanto fórmula não vazia (while) Retirar um elemento (umelem) Acrescentar à tabela (addelem) A nova fórmula é o que sobra

Ludwig Krippahl, Dúvidas