Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouWilian Topete Alterado mais de 10 anos atrás
1
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3
2
Ludwig Krippahl, 2007 2 Na aula de hoje... Comparações (Booleanos) Controlo condicional if...then...else While Ciclo for, e break.
3
Ludwig Krippahl, 2007 3 Comparações Igual == Maior, menor, ou igual >, =, <= Negação ! Diferente !=
4
Ludwig Krippahl, 2007 4 Booleanos 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 = 1 1 1 1 0(compara cada elemento)
5
Ludwig Krippahl, 2007 5 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
6
Ludwig Krippahl, 2007 6 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
7
Ludwig Krippahl, 2007 7 Controlo condicional: if Executa o bloco de instruções se a expressão for diferente de 0 (0 é falso) if expressão... else... endif
8
Ludwig Krippahl, 2007 8 Controlo condicional: if Exemplo: se x<25 soma y if x<25 x=x+y; endif
9
Ludwig Krippahl, 2007 9 Controlo condicional: if Exemplo: se x e y diferentes de 25, soma y if x!=25 & y!=25 x=x+y; endif
10
Ludwig Krippahl, 2007 10 Controlo condicional: if Exemplo: se s não é vazia e se o primeiro caracter é A if s!= && s(1)==A... endif Importante não verificar a segunda parte se s for vazia (dá erro...): && em vez de &
11
Ludwig Krippahl, 2007 11 Ciclo condicional: while Executa o bloco de instruções enquanto a expressão for diferente de 0 while expressão... endwhile
12
Ludwig Krippahl, 2007 12 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
13
Ludwig Krippahl, 2007 13 Ciclo for Executa o bloco de instruções uma vez para cada valor da variável. for variável = vector... endfor
14
Ludwig Krippahl, 2007 14 Ciclo for Exemplo: somar a x os números 3, 5, e 8. for f = [3, 5, 8] x=x+f endfor
15
Ludwig Krippahl, 2007 15 Ciclo for Exemplo: fazer algo 10 vezes: for f = 1:10 alguma coisa endfor
16
Ludwig Krippahl, 2007 16 Ciclo for Exemplo: Substituir todos os caracteres de s por * for f = 1:length(s) s(f) = *; endfor
17
Ludwig Krippahl, 2007 17 Problema Decompor uma fórmula química (string): e.g. CH3COOH Numa tabela com os seus elementos (matriz): C H O
18
Ludwig Krippahl, 2007 18 1º passo: perceber como fazer Percorrer a fórmula CH3COOH Identificar o que é elemento
19
Ludwig Krippahl, 2007 19 1º passo: perceber como fazer Percorrer a fórmula CH3COOH E o que não é elemento
20
Ludwig Krippahl, 2007 20 1º passo: perceber como fazer Criar a lista C, H, C, O, O, H
21
Ludwig Krippahl, 2007 21 1º passo: perceber como fazer Criar a lista C, H, C, O, O, H Mas pôr só se não estiver já na lista
22
Ludwig Krippahl, 2007 22 2º 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á.
23
Ludwig Krippahl, 2007 23 Tirar o primeiro elemento Uma função que: Recebe a fórmula Devolve o primeiro elemento e o resto da fórmula
24
Ludwig Krippahl, 2007 24 Tirar o primeiro elemento Uma função que: Recebe a fórmula Devolve o primeiro elemento e o resto da fórmula: CH3COOH
25
Ludwig Krippahl, 2007 25 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
26
Ludwig Krippahl, 2007 26 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
27
Ludwig Krippahl, 2007 27 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
28
Ludwig Krippahl, 2007 28 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.
29
Ludwig Krippahl, 2007 29 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: s != é digit: função isdigit
30
Ludwig Krippahl, 2007 30 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
31
Ludwig Krippahl, 2007 31 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
32
Ludwig Krippahl, 2007 32 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
33
Ludwig Krippahl, 2007 33 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>
34
Ludwig Krippahl, 2007 34 Função [el, resto]=umelem(s) Entra aqui [e, resto] = umelem(resto)
35
Ludwig Krippahl, 2007 35 Função [el, resto]=umelem(s) Entra aqui [e, resto] = umelem(resto) Sai aqui o novo fragmento
36
Ludwig Krippahl, 2007 36 1º passo: partir em mais simples Precisamos de 2 coisas: Tirar o primeiro elemento da fórmula Acrescentar à tabela se não estiver lá.
37
Ludwig Krippahl, 2007 37 Acrescentar à lista Uma função que: Recebe o elemento e a tabela Acrescenta se não estiver Podemos usar várias vezes C, C
38
Ludwig Krippahl, 2007 38 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
39
Ludwig Krippahl, 2007 39 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
40
Ludwig Krippahl, 2007 40 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
41
Ludwig Krippahl, 2007 41 Função tabela=addelem(el,tabela) Se tabela vazia, fica logo el if tabela==... else endif
42
Ludwig Krippahl, 2007 42 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... breakInterrompe um ciclo (for ou while) endfor
43
Ludwig Krippahl, 2007 43 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 s!=... endwhile
44
Ludwig Krippahl, 2007 44 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.
45
Ludwig Krippahl, 2007 45 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á
46
Ludwig Krippahl, 2007 46 Dúvidas
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.