75
Informática para Ciências e Engenharias 2013/14 Teórica 4

Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

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-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

Informática para Ciências e Engenharias

2013/14

Teórica 4

Page 2: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

2

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

• condições if … elseif … else … end• operadores relacionais e lógicos

• Matrizes• criação e percursos em matrizes

• vectores e matrizes

• Exemplos• fórmula resolvente if … elseif … else

• cromatograma, GC if e for

• pauta de ICE for, if e matrizes

Page 3: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

3

Controlo da execução

Sequência• instruções executadas por ordem

function• podemos passar a execução para um bloco

autónomo

for• repetir um número de vezes

Page 4: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

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

condição

Executar um bloco de código conforme a condição

Page 5: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

5

Operadores Booleanos (logical)

Igual • == (Atenção: um igual, =, é atribuição)

Maior, menor, … ou igual • > < >= <=

Negação • ~

Diferente• ~=

Page 6: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

6

Booleanos e comparações Booleano (logical): verdadeiro ou falso octave:34> 1==2ans = 0octave:35> 1==1ans = 1octave: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)

Page 7: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

7

Booleanos Booleano (logical),

• 0 é falso.

• 1 é verdadeiro (ou tudo o que não for zero) Constantes já definidas em MATLAB:

octave:34> true

ans = 1

octave:35> false

ans = 0

octave:36> ~true

ans = 0

octave:37> ~false

ans = 1

Page 8: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

8

Comparar vectores (inc. strings)octave:28> 'abc'=='acc'

ans =

1 0 1

octave:29> 'abcd'=='acc'

error: … nonconformant arguments (op1 is 1x4, op2 is 1x3)

octave:29> [1 2 3] == [1 3 3]

ans =

1 0 1

octave:30> [1 2 3 4] == [1 3 3]

error: … nonconformant arguments (op1 is 1x4, op2 is 1x3)

Vectores são comparados elemento a elemento e têm de ter a mesma dimensão

Page 9: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

9

Comparar stringsoctave:30> strcmp('abcd','acc')

ans = 0

octave:31> strcmp('abcd','abcd')

ans = 1

Especificamente com strings pode-se usar strcmp para saber se são iguais (devolve 1) ou diferentes (devolve 0).

Page 10: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

10

Controlo condicional: if

Executa o corpo do if se a expressão for diferente de 0 (0 é falso)• Versão mais simples:

if expressão(corpo)

end

Page 11: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

11

Controlo condicional: if

Exemplo: se x<25 soma 5

if x<25x=x+5;

end

octave:38> x=12;octave:39> if x<25> x=x+5;> endoctave:40> xx = 17octave:41> x=80;octave:42> if x<25> x=x+5;> endoctave:43> xx = 80

Page 12: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

12

Operadores “e” e “ou”

Conjunção &&• A && B (A e B)

• Se A for falso B já não é avaliado

Disjunção ||• A || B (A ou B)

• Se A for verdadeiro B já não é avaliado

Page 13: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

13

Controlo condicional: if

Exemplo: se x e y diferentes de 25, soma y

if x~=25 && y~=25x=x+y;

end

Page 14: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

14

Controlo condicional: if

Exemplo: se x ou y forem 25 e nenhum for 5, soma y a x

if (x==25 || y==25) && x~=5 && y~=5

x=x+y;

end

Page 15: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

15

Controlo condicional: if

Exemplo: se s não é vazia e se o primeiro carácter é A

if ~strcmp(s,'') && s(1)=='A'

(corpo)

end• a negação ~ tem precedência

• a conjunção && faz “curto circuito”

Importante não verificar a segunda parte se s for vazia (dá erro...)

Page 16: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

16

Controlo condicional: if

Exemplo: não aceder fora do vectorif pos>=1 && pos<=length(v) && …

v(pos)>5

(corpo)

end• a conjunção && faz “curto circuito”

Importante não pedir v(pos) se pos<1 ou > length(v)

Page 17: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

17

Controlo condicional: if

Dois ramos mutuamente exclusivos e um deles obrigatório

if condicao

(bloco 1)

else

(bloco 2)

end

Page 18: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

18

Controlo condicional: if

Dois ramos mutuamente exclusivosif condicao1

(bloco 1)

elseif condicao2

(bloco 2)

end

Page 19: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

19

Controlo condicional: if

Dois ramos mutuamente exclusivosif condicao1

(bloco 1)

elseif condicao2

(bloco 2)

end

Uma só palavra: elseif

Se for else if começa um novo bloco if dentro do bloco else

Page 20: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

20

Controlo condicional: if

forma mais geralif condicao1

elseif condicao2

(elseif condicao3, 4, 5, …)

else

end

Page 21: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

21

Exemplo 1: fórmula resolvente

Page 22: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

22

Exemplo 1: fórmula resolvente

octave:5> rs=resolvente(-1,3,4)rs = -1 4

octave:6> -rs(1)^2+3*rs(1)+4ans = 0octave:7> -rs(2)^2+3*rs(2)+4ans = 0

teste:y = -x2+3x+4

Page 23: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

23

Exemplo 2: conteúdo GC

No ADN, a fracção de GC• determina a temperatura de desnaturação

• (C e G formam 3 pontes de H)

• varia conforme a espécie

• é maior em regiões que codificam proteínas

• ...

Page 24: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

24

Exemplo 2: conteúdo GC

Problema:• dada uma sequência de ADN numa string

• adnSeq=['ACAAGATGCCATTGTCCCCCGGC...

• determinar a fracção de GCfunction fracGC=fraccaogc(sequencia)

Page 25: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

25

Exemplo 2: conteúdo GC

Algoritmo:function fracGC=fraccaogc(sequencia)

• Contar G

• Contar C

• fracGC= total / comprimento da sequência

Page 26: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

26

Exemplo 2: conteúdo GC

Algoritmo:function fracGC=fraccaogc(sequencia)

• Sub problema: como contar?• vamos criar outra função

• pode ser genérica: contar ocorrências de um elemento num vector

function tot=conta(vector,elemento)

Page 27: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

27

Exemplo 2: conteúdo GC

Contagens, somas, etc:Inicializar a variávelDepois acumular os valores pretendidos (para contagem, somar 1 a cada ocorrência)

octave:38> conta([1,2,3,2,3],2)ans = 2octave:39> conta('abcea','a')ans = 2octave:40> conta('ACTG','C')ans = 1

Page 28: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

28

Ciclo for: índice ou elemento?

for f=1:length(vector) if vector(f)==elemento … endend

for f=vector if f==elemento … endend

Se precisamos de saber a posição (índice) de cada elemento no vector, criamos um vector novo 1:length(...)

Se só queremos os valores dos elementos do vector e não precisamos dos índices, podemos fazer a variável do ciclo percorrer directamente o vector.

Page 29: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

29

Exemplo 2: conteúdo GC

Algoritmo:function fracGC=fraccaogc(sequencia)

• Já temos a função para contar• (implementada e testada)

totG = conta(sequencia,'G')

totC = conta(sequencia,'C')

fracGC= (totG+totC) / length(sequencia)

Page 30: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

30

Exemplo 2: conteúdo GC

octave:44> fraccaogc('ATCG')ans = 0.50000octave:45> fraccaogc('ATCGCG')ans = 0.66667

GC

Page 31: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

31

Exemplo 3: cromatografia

Temos um vector com um cromatograma:

Page 32: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

32

Exemplo 3: cromatografia

Queremos as posições dos picos• onde é maior que os elementos adjacentes.

Page 33: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

33

Exemplo 3: cromatografia

Algoritmo• receber o cromatograma, devolver picos

function picos=encontrapicos(cromatograma)

• para cada elemento do segundo ao penúltimo do cromatograma• se maior que anterior e maior que seguinte

• acrescentar a picos

Page 34: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

34

Exemplo 3: cromatografia

Page 35: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

35

Exemplo 3: cromatografia

Permite mudar de linha a meio de uma instrução. Pode tornar mais legível uma expressão complexa

Page 36: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

36

Exemplo 3: cromatografia

Uma forma de acrescentar elementos ao vector. Exige redimensionar o vector a cada inserção, mas neste caso é um problema menor.

Page 37: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

37

Exemplo 3: cromatografia

Testar:

plot(cromatograma)picos=encontrapicos(cromatograma)hold onfor f=picos plot([f,f],[cromatograma(f)-1,cromatograma(f)+1],'r');end

cromatograma

Page 38: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

38

Matrizes

Page 39: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

39

Matrizes

Uma matriz é uma estrutura de dados que guarda um número pré-definido de dados do mesmo tipo (tal como um vector).

Uma matriz corresponde a uma sequência de posições de memória (tal como um vector). Essas posições de memória estão agrupadas como numa tabela com L linhas e C colunas.

Page 40: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

40

Matrizes

Criar matrizes• Indicar cada elemento, separando por vírgula

ou espaço os da mesma linha, e por ; as linhas• (em MATLAB um vector é uma matriz com 1 linha

ou 1 coluna)octave:8> m=[1,2,3;4,5,6]m =

1 2 3 4 5 6

Page 41: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

41

Matrizes

Criar matrizes• Compondo matrizes ou vectores

octave:9> m2=[m;7:9]m2 = 1 2 3 4 5 6 7 8 9

octave:10> m3=[m2,(1:3)']m3 = 1 2 3 1 4 5 6 2 7 8 9 3

Page 42: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

42

Matrizes

Criar matrizes• com funções zeros, ones, rand, etc.

octave:12> m4=rand(2,3)m4 = 0.65181 0.86373 0.87949 0.64315 0.57989 0.41006

octave:13> m5=ones(3,5)m5 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Page 43: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

43

Matrizes

Acede-se a uma posição da matriz indicando os índices, inteiros positivos, da linha e coluna.• matriz(linhas,colunas)

Desta forma podemos ler ou alterar os valores guardados na matriz

Page 44: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

44

Matrizes

Podemos aceder a partes da matriz indicando• matrix(vector das linhas, vector das colunas)

octave:53> mat(1:3,2)ans =

2 5 8

mat =

1 2 3 4 5 6 7 8 9

Page 45: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

45

Matrizes

Podemos aceder a partes da matriz indicando• matrix(vector das linhas, vector das colunas)

• : indica tudooctave:54> mat(2:3,:)ans =

4 5 6 7 8 9

mat =

1 2 3 4 5 6 7 8 9

Page 46: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

46

Matrizes

Podemos aceder a partes da matriz indicando• matrix(vector das linhas, vector das colunas)

• a ordem importaoctave:56> mat([1,3],[3,1])ans =

3 1 9 7

mat =

1 2 3 4 5 6 7 8 9

mat =

1 2 3 4 5 6 7 8 9

Page 47: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

47

Matrizes

Compor matrizes numa maior• se encaixarem

octave:31> C = [A,B]C = 1 2 5 6 3 4 7 8

octave:32> D = [A;B]

D = 1 2 3 4 5 6 7 8

octave:29> A = [1,2;3,4]A = 1 2 3 4

octave:30> B = [5,6;7,8]B = 5 6 7 8

Page 48: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

48

Matrizes

Também com strings• no Matlab as strings na

matriz têm de ter o mesmo comprimento

• no Octave as mais pequenas são preenchidas com espaços no fim

• cada célula é um carácter

octave:38> s = 'abc's = abcoctave:39> t = 'def't = defoctave:40> u = 'ghi'u = ghioctave:41> M = [s;t;u]M =

abcdefghi

octave:42> N = [s,t,u]N = abcdefghioctave:43>

matrizes

Page 49: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

49

Exemplo 4 : pauta de ICE Objectivo

• A partir da uma tabela com os números e as avaliações dos testes e trabalhos, gerar a pauta da com o número e nota final de cada aluno de ICE

Page 50: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

50

Exemplo 4 : pauta de ICE Perceber bem o problema

• dados de entrada numa tabela (matriz) com as notas dos vários elementos de avaliação • (Número, P1, P2, T1 e T2)

60133 3.3 1.6 7.4 7.060136 4.9 3.0 4.8 10.460137 11.3 14.9 14.8 3.960145 6.3 16.4 16.3 6.860148 8.0 11.7 17.0 5.960157 8.4 2.1 16.6 4.660161 0.1 12.4 10.6 5.460166 15.3 7.6 18.0 14.360175 12.1 10.0 8.0 6.1

...

Page 51: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

51

Exemplo 4 : pauta de ICE Perceber bem o problema

• dados de entrada numa tabela (matriz) com as notas dos vários elementos de avaliação

• resultado: uma pauta indicando• sem frequência (-1)

• nota (0 a 20) 60133 -1 60136 -1 60137 10 60145 11 60148 10 60157 -1 60161 7 ...

Page 52: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

52

Exemplo 4 : pauta de ICE Critérios a implementar

• frequência• P1≥9.5 ou P2≥9.5 se não tem, -1

• nota mínima na componente TP• CompTP = 0.4*T1 + 0.6*T2 arredondada a 0.1

• CompTP ≥ 8.5 se não, NF = CompTP arredondada

• nota final• CompL = 0.5* P1 + 0.5*P2 arredondada a 0.1

• Nota Final = 0.4*CompL + 0.6*CompTP arredondada

Page 53: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

53

Exemplo 4 : pauta de ICE Estrutura do programa

• função principalfunction pauta = calculapauta(notas)

• recebe a matriz com as notas

• calcula a nota de cada aluno

• podemos remeter isto para outra função

• devolve a pauta com o número na primeira coluna e a nota na segunda

Page 54: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

54

Exemplo 4 : pauta de ICE Estrutura do programa

• função principalfunction pauta = calculapauta(notas)

• cálculo da nota de cada alunofunction nota = calculanota(notas)

• recebe um vector com [P1, P2, T1, T2]

• calcula CompTP e CompL

• arredondar às décimas, fazemos noutra função

• devolve -1 se não obteve frequência, CompTP arredondada se não teve nota mínima nesta, ou a média ponderada de CompTP e CompL arredondada.

Page 55: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

55

Exemplo 4 : pauta de ICE Generalizar

• nas notas não podemos generalizar• regras fixas de avaliação

• mas podemos fazer o programa independente do número de alunos

• e podemos criar uma função de arredondamento mais genérica do que só às décimasfunction res=arredonda(valor,casasDec)

• algoritmo: multiplicar por 10casasDec, arredondar, dividir novamente

Page 56: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

56

Exemplo 4 : pauta de ICE

octave:23> arredonda(pi,4)ans = 3.1416octave:24> arredonda(pi,3)ans = 3.1420octave:25> arredonda(pi,2)ans = 3.1400octave:26> arredonda(pi,1)ans = 3.1000octave:27> arredonda(pi,0)ans = 3

Page 57: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

57

Exemplo 4 : pauta de ICE Algoritmo para calcular a nota

• é preciso receber P1, P2, T1 e T2

• é preciso devolver um número inteirofunction nota = calculanota(notas)

• vamos implementar• porque já sabemos a assinatura

• e já temos a função arredonda, usada por esta

• caso contrário não vale a pena começar a implementar

• depois, testar antes de continuar o programa

Page 58: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

58

Exemplo 4 : pauta de ICE

Page 59: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

59

Exemplo 4 : pauta de ICEVariáveis auxiliares que tornam mais claras as condições

Page 60: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

60

Exemplo 4 : pauta de ICE

Condições por ordem de prioridade:primeiro verifica se não tem frequênciadepois, se não tem nota mínimae só se tem frequência e nota mínima é que usa a nota provisória para a nota final.

Page 61: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

61

Exemplo 4 : pauta de ICE

Testar

octave:2> calculanota([9, 11, 9, 15])ans = 12octave:3> calculanota([9, 9, 9, 15])ans = -1octave:4> calculanota([20, 20, 7, 7])ans = 7

Page 62: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

62

Exemplo 4 : pauta de ICE Algoritmo para gerar a pauta

• criar matriz de saída• 2 colunas, tantas linhas quanto tem a de entrada

• para cada linha da matriz de entrada• copiar número de aluno para a primeira coluna da matriz

de saída, na linha correspondente

• calcular a nota e copiar para a segunda coluna da matriz de saída, na linha correspondente

Page 63: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

63

Exemplo 4 : pauta de ICEfunction pauta = calculapauta(notas)

• criar matriz de saída• usar zeros, pois sabemos quantos alunos e 2 colunas

• percorrer cada linha da matriz de entrada• ciclo for, de 1 ao número de linhas (alunos)

• copiar número de aluno e nota• trivial, basta copiar o valor na primeira coluna em cada

linha

• calcular a nota• usamos a função que já criámos

Page 64: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

64

Exemplo 4 : pauta de ICE

A função size devolve a dimensão indicada (1 para linhas, 2 para colunas)ou ambas se só dermos a matriz

size

Page 65: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

65

Exemplo 4 : pauta de ICE

Cria a pauta com tantas linhas quantastem a matriz das notas, e duas colunas.

Page 66: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

66

Exemplo 4 : pauta de ICE

A variável aluno vai tomar todos os valores de 1 ao número de linhas da matriz notas

Page 67: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

67

Exemplo 4 : pauta de ICE

Copia para a pauta, na linha correspondente a este aluno, o número e a nota calculada.

Page 68: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

68

Exemplo 4 : pauta de ICE

octave:6> calculapauta(notas)ans =

60133 -1 60136 -1 60137 8 60145 11 60148 10 60157 -1 60161 8 60166 14 60175 7 60182 -1 60184 11 ...

Aluno P1 P2 T1 T2 60133 3.3 1.6 7.4 7.060136 4.9 3.0 4.8 10.460137 11.3 14.9 14.8 3.960145 6.3 16.4 16.3 6.860148 8.0 11.7 17.0 5.960157 8.4 2.1 16.6 4.660161 0.1 12.4 10.6 5.460166 15.3 7.6 18.0 14.360175 12.1 10.0 8.0 6.160182 7.2 5.2 0.6 6.260184 8.5 18.8 11.0 8.0...

Page 69: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

69

Exercício

Page 70: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

70

O máximo da matriz

Queremos uma função que• Recebe uma matriz

• Devolve o valor máximo e as coordenadas desse valor:

function [vMax,lMax,cMax]=maximo(mat)

Page 71: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

71

Resumindo

Controlar a execução• sequência

• condições if … elseif … else

• ciclo for • se sabemos quantas iterações (vector, matriz …)

Page 72: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

72

Resumindo

Controlar a execução Operadores de comparação e booleanos

• nota == não é o mesmo que =

• strings• há várias funções para testar caracteres

• isupper, islower, ischar, isdigit, etc...

• comparar strings com strcmp

Page 73: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

73

Resumindo

Controlar a execução Operadores de comparação e booleanos Matrizes

• como criar • zeros, ones, enumerando elementos, compondo

• como aceder a elementos ou partes• M(:,2) M([1,2,3],[5,4,2]) M(1:3,4:8)

• como percorrer• size(M) for

Page 74: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

74

Para estudar esta aula

Physical Modeling in MATLAB• Capítulo 4

Consultar o manual Octave• if, 10.1

• funções para caracteres e strings, 5.7

Page 75: Informática para Ciências e Engenharias 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T04.pdf · 3 Controlo da execução Sequência •instruções executadas por ordem function

75

Dúvidas