Informática para Ciências e Engenharias...
Transcript of Informática para Ciências e Engenharias...
![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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/1.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/2.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/3.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/4.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/5.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/6.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/7.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/8.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/9.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/10.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/11.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/12.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/13.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/14.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/15.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/16.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/17.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/18.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/19.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/20.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/21.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/22.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/23.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/24.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/25.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/26.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/27.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/28.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/29.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/30.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/31.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/32.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/33.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/34.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/35.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/36.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/37.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/38.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/39.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/40.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/41.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/42.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/43.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/44.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/45.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/46.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/47.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/48.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/49.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/50.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/51.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/52.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/53.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/54.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/55.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/56.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/57.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/58.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/59.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/60.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/61.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/62.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/63.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/64.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/65.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/66.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/67.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/68.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/69.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/70.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/71.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/72.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/73.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/74.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052922/5c252fdf09d3f2e82a8b69e4/html5/thumbnails/75.jpg)
75
Dúvidas