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

Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

  • Upload
    lehuong

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

Informática para Ciências e Engenharias

2013/14

Teórica 7

Page 2: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

2

Na aula de hoje... Controlo de execução

• ciclos condicionais while … end

• Exemplos• raiz quadrada while

• histograma while e matrizes

• fórmula química while e strings

Processamento de strings• comparação

• decompor URL findstr

Page 3: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

3

«Algoritmo» 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

Page 4: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

4

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

Page 5: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

5

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

Page 6: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

6

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 condicional

Page 7: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

7

Controlo da execução

Controlo de execução• sequência

• ciclos for … end

• condições if … elseif … else … end• valores e operadores booleanos

• ciclos condicionais while … end

Page 8: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

8

Ciclo condicional: while

Executa o bloco de instruções enquanto a condição for verdadeira (não for 0)

while condicao......

end

Page 9: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

9

Ciclo condicional: while

Exemplo: dividir x por dois até ter um número menor que 5 (enquanto >=5)

while x>=5x=x/2;

end

Page 10: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

10

Exemplo 1: cálculo da raiz quadrada

Page 11: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

11

Exemplo 1, raiz quadrada

Calcular raiz quadrada • método babilónico

http://en.wikipedia.org/wiki/Methods_of_computing_square_roots

Page 12: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

12

Exemplo 1, raiz quadrada

Calcular raiz quadrada • método babilónico

• quando parar?• infinito não é prático

• |xn-x

n+1| pequeno

• quão pequeno?

Page 13: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

13

Exemplo 1, raiz quadrada

Calcular raiz quadrada • método babilónico

• quando parar?• infinito não é prático

• |xn-x

n+1| pequeno

• quão pequeno?

• argumento com precisão

Page 14: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

14

Exemplo 1, raiz quadrada

Calcular raiz quadrada, assinatura function x=raiz(S,prec)

Page 15: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

15

Exemplo 1: raiz (babilónico)

Page 16: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

16

Exemplo 1: raiz (babilónico)

Primeira estimativa (x1)

metade de xPrimeiro x

2

média entre x1 e x/x

1

Precisamos de ambos para acondição do while

Page 17: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

17

Exemplo 1: raiz (babilónico)

Enquanto os dois valoresforem demasiado diferentes: guardamos o corrente calculamos o próximo (nas mesmas duas variáveis)4

Page 18: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

18

Exemplo 1: raiz (babilónico)

Quando o ciclo terminar, devolvemos o x corrente

.

Page 19: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

19

Exemplo 1: raiz (babilónico)octave:22> help raiz`raiz' is a function from the file ...

raiz(S,prec) calcula a raiz quadrada de S a uma precisao determinada por prec

octave:23> raiz(4,0.001)ans = 2octave:24> raiz(9,0.001)ans = 3.0000octave:25> raiz(17,0.001)ans = 4.1231octave:26> ans^2ans = 17.000

Page 20: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

20

Exemplo 1: raiz (babilónico)

octave:27> raiz(297,0.001)x = 75.250x = 39.598x = 23.549x = 18.081x = 17.254x = 17.234x = 17.234ans = 17.234octave:28> ans^2ans = 297.00

• Outro teste:• tiramos o ; das linhas x = ...

Raiz

Page 21: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

21

Exemplo 2: presenças (histograma)

Page 22: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

22

Exemplo 2: contar presenças

Numa matriz temos o registo de presenças dos 30 alunos de um turno prático• o número do aluno e o

número da aula

50014 1 50016 1 50019 1 ... 50014 4 50016 4 50019 4 50023 4 ... 50035 5 50049 5 50051 5 ...

Page 23: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

23

Exemplo 2: contar presenças

Queremos obter• uma matriz com as

presenças dos alunos

50027 9 50028 10 50030 10 ... 50071 8 50077 10 50081 12 50084 10 50086 11 50090 11 50099 9 ...

Page 24: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

24

Exemplo 2: contar presenças

Perceber o problema• Temos de contar as ocorrências de cada

aluno na primeira coluna da matriz de entrada

• O resultado será um histograma dos alunos, agrupado pelo número

Page 25: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

25

Exemplo 2: contar presenças

Generalizar o problema• Resolve-se este problema, e outros

semelhantes, com uma função que calcule o histograma• basta calcular o histograma da primeira coluna da

matriz de entrada

Page 26: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

26

Exemplo 2: contar presenças

Conceber o algoritmo• Queremos uma matriz com n linhas e 2

colunas:• elemento e número de ocorrências

• pode começar a zeros

• Para cada elemento do vector de entrada• verificar se já existe na matriz do histograma

• se existe somar uma ocorrência nessa linha

• se não existe acrescentar uma linha com uma ocorrência desse elemento

Page 27: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

27

Exemplo 2: contar presenças

Conceber o algoritmo

50014 50016 50014 50016 50019 50023

50014 1 0 0 0 0 0 0 0 0 0 0

Page 28: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

28

Exemplo 2: contar presenças

Conceber o algoritmo

50014 50016 50014 50016 50019 50023

50014 1 50016 1 0 0 0 0 0 0 0 0

Page 29: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

29

Exemplo 2: contar presenças

Conceber o algoritmo

50014 50016 50014 50016 50019 50023

50014 2 50016 1 0 0 0 0 0 0 0 0

Page 30: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

30

Exemplo 2: contar presenças

Conceber o algoritmo

50014 50016 50014 50016 50019 50023

50014 2 50016 2 0 0 0 0 0 0 0 0

Page 31: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

31

Exemplo 2: contar presenças

Conceber o algoritmo

50014 50016 50014 50016 50019 50023

50014 2 50016 2 50019 1 0 0 0 0 0 0

Page 32: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

32

Exemplo 2: contar presenças

Conceber o algoritmo

50014 50016 50014 50016 50019 50023

50014 2 50016 2 50019 1 50023 1 0 0 0 0

Page 33: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

33

Exemplo 2: contar presenças

Conceber o algoritmo

50014 50016 50014 50016 50019 50023

50014 2 50016 2 50019 1 50023 1

Page 34: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

34

Exemplo 2: contar presenças

Conceber o algoritmo• Tarefas:

• obter a posição na primeira coluna do histograma, ou zero se não existe

• generalizando: pesquisar elemento num vector

• criar o histograma, usando a função de pesquisar

Page 35: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

35

Exemplo 2: contar presenças

Assinaturas:function pos=pesquisa(vector,elemento)

function hist=histograma(sequencia)

Page 36: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

36

Exemplo 2: contar presenças

Page 37: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

37

Exemplo 2: contar presenças

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

Page 38: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

38

Exemplo 2: contar presenças

Se não saímos do vector é porque encontrámos, caso contrário devolvemos 0.

Mas isto parece complicar desnecessariamente.

Podemos criar uma versão mais simples, pensando ao contrário.

Page 39: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

39

Exemplo 2: contar presenças

Se começarmos do fim e formos decrementando a posição, fica automaticamente no 0 quando não encontra.

A única diferença é que devolve a posição do último elemento. Podemos avisar isso na documentação.

Page 40: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

40

Exemplo 2: contar presenças

Moral da história: nem sempre a primeira implementação é a melhor...

Page 41: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

41

Exemplo 2: contar presenças

Testar a função:

octave:15> help pesquisa`pesquisa' is a function from the file ...

pesquisa(vector,elemento) devolve a posicao do ultimo elemento no vector, ou 0 se nao existe

octave:16> pesquisa([1,2,3],2)ans = 2octave:17> pesquisa([1,2,3],4)ans = 0

Page 42: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

42

Exemplo 2: contar presenças

Page 43: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

43

Exemplo 2: contar presenças

Criamos a matriz do histograma, toda a zeros (basta depois somar 1 a cada ocorrência)ultimaLinha indica a última linha que contém uma entrada (a partir daí a matriz está vazia)

Page 44: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

44

Exemplo 2: contar presenças

Para cada elemento da sequencia vamos pedir a posição na primeira coluna

Page 45: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

45

Exemplo 2: contar presenças

Se ainda não existe (pesquisa devolveu 0), então vamos acrescentar uma linha ao histograma e marcar lá o elemento na primeira coluna.Vamos apontar a linha para essa linha também.

Page 46: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

46

Exemplo 2: contar presenças

Assim garantimos que, em qualquer dos casos, linha está a apontar para a linha certa. Basta então somar 1 na segunda coluna (porque a matriz começa a 0).

Page 47: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

47

Exemplo 2: contar presenças

No final amputamos o que não interessa da matriz do histograma, guardando só até à última linha.

Page 48: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

48

Exemplo 2: contar presenças

Testar:octave:19> histograma([1,2,1,2,1,2,4,5,4])ans = 1 3 2 3 4 2 5 1

octave:20> help histograma ... hist = histograma( sequencia ) Devolve o histograma da sequencia numa matriz com uma linha por cada elemento diferente da sequencia, e nas colunas o elemento e o numero de ocorrencias.

Page 49: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

49

Exemplo 2: contar presenças

Resolver o problema

octave:21> presencas=histograma(aulas(:,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 ...

Page 50: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

50

Exemplo 3: fórmula química

Page 51: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

51

Exemplo 3: fórmula química

Decompor uma fórmula química (string):• e.g. CH3COOC6H4COOH

Numa tabela de caracteres com os elementos diferentes (vector coluna):

C

H

O

Simplificação: assumimos que os símbolos químicos presentes têm apenas uma letra.

Page 52: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

52

Exemplo 3: fórmula química

1º passo: perceber o que se pede• identificar cada elemento

• elemento é uma letra

• o que não é letra não é elemento

• (assumimos só um carácter)

• acrescentar à tabela• mas só se não existe

• a tabela será um vector coluna de caracteres

Page 53: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

53

Exemplo 3: fórmula química

2º passo: decompor o problema• Para cada carácter na fórmula

• verificar se é elemento

• se for, verificar se já está na tabela

• se não está, acrescentar

Page 54: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

54

Exemplo 3: fórmula química

3º passo: algoritmo e assinaturas• verificar se está na tabela

• já está feita:

function pos = pesquisa(vector,elemento)

• tanto faz se o vector é string ou não, horizontal ou vertical. A função pesquisa não distingue isso

• criar a tabelafunction tabela = elementos(formula)

Page 55: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

55

Exemplo 3: fórmula química

A tabela começa vazia e vamos percorrer a fórmula.

Page 56: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

56

Exemplo 3: fórmula química

Para cada carácter da fórmula, se for maiúscula e não estiver na tabela, acrescenta-se numa nova linha.

Page 57: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

57

Exemplo 3: fórmula química

Testar e aplicar ao nosso problemaoctave:70> elementos('CH4')ans =CHoctave:71> elementos('H3PO4')ans =HPOoctave:72> elementos('CH3COOC6H4COOH')ans =CHO

Page 58: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

58

processar strings

Page 59: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

59

Processar strings

Na próxima aula vamos ver como ler e escrever ficheiros• vamos precisar de processar strings para

separar o seu conteúdo quando for mais complexo do que o str2num processa

Page 60: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

60

Exemplo 4: comparar strings

Vamos comparar 2 strings• função strcmp já faz isto

• mas nós queremos considerar que ? conta como igual a qualquer carácter

octave:30> compara('abc','a?c')ans = 1octave:31> compara('abc','a?d')ans = 0octave:32> compara('abc','???')ans = 1

Page 61: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

61

Exemplo 4: comparar strings

Assinatura da função:

function igual=compara(s1,s2)

Page 62: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

62

Exemplo 4: comparar strings

Page 63: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

63

Exemplo 4: comparar strings

Se as strings têm o mesmo comprimento, vale a pena compará-las.Caso contrário, então é falso que sejam iguais.

Page 64: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

64

Exemplo 4: comparar strings

Avançamos do primeiro carácter enquanto não ultrapassámos o fim do vector e os elementos são iguais ou algum é um ?

Page 65: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

65

Exemplo 4: comparar strings

As strings são iguais se o ciclo while acabou por ultrapassarmos o fim do vector.Nota: o operador > devolve true ou false

Page 66: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

66

Exemplo 4: comparar strings

Teste

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

Page 67: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

67

Exemplo 5: decompor URL

Page 68: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

68

Exemplo 5: decompor URL

Queremos decompor um URL• e.g. http://ssdi.di.fct.unl.pt/ice/b/index.html

• nestes componentes• protocolo: http

• máquina: ssdi.di.fct.unl.pt

• caminho: ice/b

• ficheiro: index.html

Page 69: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

69

Exemplo 5: decompor URL

Queremos decompor um URL• e.g. http://ssdi.di.fct.unl.pt/ice/b/index.html

• nestes componentes• protocolo: http

• máquina: ssdi.di.fct.unl.pt

• caminho: ice/b

• ficheiro: index.html

• Função útil: findstr

Page 70: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

70

Exemplo 5: decompor URL

findstr:

octave:23> findstr('aaaaxaaaxaaa','x')ans = 5 9

octave:24> findstr('x','aaaaxaaaxaaa')ans = 5 9

octave:25> findstr('axa','aaaaxyaaxaaa')ans = 8

Page 71: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

71

Exemplo 5: decompor URL

Page 72: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

72

Exemplo 5: decompor URL

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

Page 73: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

73

Exemplo 5: decompor URL

O protocolo é a parte do início à primeira barra menos 2 caracteres

http://ssdi.di.fct.unl.pt/ice/b/index.html

Page 74: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

74

Exemplo 5: decompor URL

A máquina está especificada na parte a seguir à segunda barra até antes da terceira.

http://ssdi.di.fct.unl.pt/ice/b/index.html

Page 75: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

75

Exemplo 5: decompor URL

O caminho começa a seguir à terceira barra e acaba antes da última.Nota: poderia incluir a última barra também..

http://ssdi.di.fct.unl.pt/ice/b/index.html

Page 76: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

76

Exemplo 5: decompor URL

O ficheiro começa a seguir à última barra e acaba no final do URL

http://ssdi.di.fct.unl.pt/ice/b/index.html

Page 77: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

77

Exemplo 5: decompor URL

Teste

octave:39> [protocolo,maquina,caminho,ficheiro]= ...> decompoeurl('http://ssdi.di.fct.unl.pt/ice/b/index.html')protocolo = httpmaquina = ssdi.di.fct.unl.ptcaminho = ice/bficheiro = index.html

Page 78: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

78

Resumindo...

Page 79: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

79

Resumo

while• ciclo 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 (islower, ischar, isalpha, ...)

Page 80: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

80

Exemplo: 1º Teste 2012/13

> F('http://www.abc.edu/geology/tectonics.html', '/')

Page 81: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

81

Teste

> F('http://www.abc.edu/geology/tectonics.html', '/')ans = tectonics.html

Page 82: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

82

Para estudar esta aula

Tentar fazer os exemplos• e alterações ao código

Consultar o manual Octave• while, 10.3

• funções para caracteres, 5.7

Page 83: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

83

Cálculo da massa molecular O que já sabemos fazer

• operações e variáveis (números e strings)

• decompor problemas• funções, scripts, código fonte

• manipular vectores e matrizes • números e texto

• controlar a execução• sequência, condições (if … elseif … else)

• ciclos for se sabemos quantas vezes iterar

• ciclos while se sabemos a condição

Page 84: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T07.pdf · 2 Na aula de hoje... Controlo de execução • ciclos condicionais while …

84

Dúvidas