informática para ciências e engenharias (b)...

86
Informática para Ciências e Engenharias (B) 2016/17 Teórica 2

Upload: dodang

Post on 12-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Informática para Ciências e Engenharias (B)

2016/17

Teórica 2

Page 2: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Na aula de hoje

l  Decomposição de problemas •  Abstração, generalização e algoritmos

l  Ficheiros e código fonte •  scripts, funções e como escrever código

l  Testes unitários

l  Tipos de erros.

l  Representação de números em binário

l  Ciclo de vida de um programa

15 Março 2017 Programação Estruturada; Funções 2

Page 3: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Problema

l  Calcular pH do ácido benzóico •  C6H5COOH ↔ H+ + C6H5COO-

•  Ka = 6.5 x 10-5 % Constante de Dissociação •  Ci = 0.1 (m/mmol/vol) % Concentração Molar Inicial

l  Como resolver •  sendo x = [H+] = [C6H5COO- ] % Concentração Iónica •  Ka = x2 / (Ci – x) •  x2 + Ka x – Ci Ka = 0 •  pH = - log10(x)

15 Março 2017 Programação Estruturada; Funções 3

Page 4: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar, opção 1

l  Calcular directamente, •  Usando a “Janela de Comandos” do Octave

l  Cálculo de expressões pode utilizar funções pre-definidas •  Raiz quadrada / sqrt, e logaritmo de base 10 / log10

15 Março 2017 Programação Estruturada; Funções 4

>> Ci = 0.01 Ci = 0.010000 >> Ka = 6.5e-5 Ka = 6.5000e-005 >> x = (-Ka + sqrt(Ka^2+4*Ka*Ci))/2 x = 7.7438e-004 >> pH = -log10(x) pH = 3.1110 >>

o valor da concentração tem de ser positivo

Page 5: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar, opção 1

l  Escrever directamente •  Má solução

•  mais difícil de corrigir erros •  temos de escrever tudo cada vez que precisamos

calcular o pH •  só viável com problemas simples

•  quanto maior a lista de instruções mais provável é haver erros e mais difícil é de os identificar

•  impossível de resolver problemas complexos

15 Março 2017 Programação Estruturada; Funções 5

Page 6: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar, opção 2

l  Criar um script •  um script Matlab é um ficheiro contendo código fonte e

gravado com a extensão .m •  Pode ser criado com o Octave/Matlab no modo de “Edição”

•  O editor ajusta as cores das instruções •  Mostra os números de linha (útil para reportar erros)

15 Março 2017 Programação Estruturada; Funções 6

Ci = 0.01 Ka = 6.5e-5 x =(-Ka + sqrt(Ka^2+4*Ka*Ci))/2 pH = -log10(x)

benzoico.m

1 2 3 4

Page 7: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar, opção 2

l  Chamar o script •  Escrever o nome do script (sem o .m)

•  se não existe variável ou função definida, o interpretador procura o ficheiro nome.m

•  tem de estar na pasta de trabalho (ou numa pasta que o interpretador conheça)

•  As instruções são executadas (e ecoadas) como se estivessem a ser dadas pela janela de comandos

15 Março 2017 Programação Estruturada; Funções 7

>> benzoico Ci = 0.010000 Ka = 6.5000e-005 x = 7.7438e-004 pH = 3.1110 >>

Page 8: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar, opção 2

l  Os ecos podem ser eliminados “escondendo” as instruções de atribuição com “;”

15 Março 2017 Programação Estruturada; Funções 8

>> benzoico x = 7.7438e-004 pH = 3.1110 >>

>> benzoico Ci = 0.010000 Ka = 6.5000e-005 x = 7.7438e-004 pH = 3.1110 >>

Ci = 0.01 Ka = 6.5e-5 x =(-Ka + sqrt(Ka^2+4*Ka*Ci))/2 pH = -log10(x)

Ci = 0.01; Ka = 6.5e-5; x =(-Ka + sqrt(Ka^2+4*Ka*Ci))/2 pH = -log10(x)

Page 9: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Ficheiro de Código Fonte

l  Na linguagem MATLAB, um ficheiro .m

•  É interpretado como texto, código fonte

•  Quando o interpretador encontra um identificador verifica •  1º se é uma variável definida •  2º se é uma função já carregada •  3º se há um ficheiro com esse nome e extensão .m

•  Se chega à 3º opção, executa o que está no ficheiro

15 Março 2017 Programação Estruturada; Funções 9

Page 10: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como Implementar, Opção 2

l  Criar um script

•  Vantagens •  mais fácil de executar e de editar •  comentários (mais inteligível) •  fica guardado

•  Problemas •  fica tudo junto

•  variáveis comuns a todo o programa •  diferentes tarefas não são separadas

•  não estruturado e mau para problemas complexos

15 Março 2017 Programação Estruturada; Funções 10

Page 11: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Ficheiros

l  Ficheiro

•  sequência de bits, agrupados em bytes •  1 byte = 8 bits

•  armazenado num suporte persistente •  disco rígido, cartão de memória, CD...

•  associado pelo SO a um identificador único •  caminho e nome

•  C:\My Documents\ICE\teste.m •  ~/ICE/teste.m

15 Março 2017 Programação Estruturada; Funções 11

Page 12: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Ficheiros

l  Tipos de ficheiro

•  todos os ficheiros são sequências de bits •  em ficheiros de “tipo diferente” a sequência é

interpretada de forma diferente

•  Muitas vezes o tipo de ficheiro é identificado pela extensão •  .pdf, .txt, .jpg, .wav, .doc, .mp3 •  associada ao programa que interpreta o ficheiro •  (há excepções, depende do SO e, especialmente, do

programa que usamos como interface)

15 Março 2017 Programação Estruturada; Funções 12

Page 13: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Programação Estruturada

Programação Estruturada

15 Março 2017 Programação Estruturada; Funções 13

Page 14: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Programação Estruturada

l  Decompor o problema em partes autónomas (dividir para conquistar)

•  perceber o problema e todas as tarefas

•  abstrair e generalizar cada tarefa

l  Conceber o algoritmo

•  perceber como resolver cada tarefa

•  perceber como as várias partes encaixam

l  Implementar e testar cada parte

15 Março 2017 Programação Estruturada; Funções 14

Page 15: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Algoritmo

l  Muhammad ibn Mūsā al-Khwārizmī

•  “Compêndio do Cálculo por Completude e Balanço.”

•  “Cálculo com Numerais Hindu”

•  Algoritmi de numero Indorum (sec. XII) •  Algoritmo •  Algarismo

15 Março 2017 Programação Estruturada; Funções 15

Page 16: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Algoritmo

l  Conjunto finito de instruções.

•  No sentido estrito, operações sobre símbolos •  Matemática •  Lógica •  Programas.

•  No sentido lato: •  receitas •  procedimentos de emergência •  etc...

15 Março 2017 Programação Estruturada; Funções 16

Page 17: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

“Algoritmo da torrada”

l  Pegar no pão

l  Se faca na bancada,

•  Pegar na faca

l  Caso contrário

•  Ir buscar faca à gaveta

l  Cortar fatia

l  Pôr na torradeira, ligar

l  Enquanto não está pronta

•  Esperar

15 Março 2017 Programação Estruturada; Funções 17

Page 18: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

“Algoritmo da torrada”

l  Pegar no pão

l  Se faca na bancada,

•  Pegar na faca

l  Caso contrário

•  Ir buscar faca à gaveta

l  Cortar fatia

l  Pôr na torradeira, ligar

l  Enquanto não está pronta

•  Esperar

l  Obter faca

15 Março 2017 Programação Estruturada; Funções 18

Page 19: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

“Algoritmo da torrada”

l  Pegar no pão

l  Obter faca

l  Cortar fatia

l  Pôr na torradeira, ligar

l  Enquanto não está pronta

•  Esperar

l  Se faca na bancada,

•  Pegar na faca

l  Caso contrário

•  Ir buscar faca à gaveta

15 Março 2017 Programação Estruturada; Funções 19

Page 20: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

“Algoritmo da torrada”

l  Pegar no pão

l  Obter faca

l  Cortar fatia

l  Pôr na torradeira, ligar

l  Enquanto não está pronta

•  Esperar l  Torrar

15 Março 2017 Programação Estruturada; Funções 20

Page 21: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

“Algoritmo da torrada”

l  Pegar no pão

l  Obter faca

l  Cortar fatia

l  Pôr na torradeira, ligar

l  Torrar l  Enquanto não está pronta

•  Esperar

15 Março 2017 Programação Estruturada; Funções 21

Page 22: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Programação Estruturada

l  Resolver problemas complexos através de problemas simples

•  um de cada vez

l  Hierarquizar os problemas

•  Abstrair dos detalhes concretos

•  Generalizar soluções

•  Decompor as tarefas e implementar partes •  Testar cada uma

l  Juntar tudo no programa final

15 Março 2017 Programação Estruturada; Funções 22

Page 23: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Programação Estruturada

l  Na linguagem Matlab usada em ICE os problemas, simples ou complexos, são resolvidos através de funções.

l  Para cada problema/função teremos de ter bem presente

•  Quais os dados de entrada do problema

•  Qual o resultado pretendido

l  Ao desenhar uma função esta informação deverá constar da sua assinatura que tem a forma genérica

function nomeResultado = nomeFuncao(parametros)

15 Março 2017 Programação Estruturada; Funções 23

Page 24: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Programação Estruturada

function nomeResultado = nomeFuncao(parametros)

l  Os parâmetros da função são variáveis, separadas por vírgulas

l  A variável nomeResultado, recebe o valor da função

l  Exemplo:

function ph = calculaPH(Ka, Ci)

l  Antes de implementarmos esta função em particular, vamos analisar em mais detalhe vários aspectos a considerar no desenho / implementação de funções.

15 Março 2017 Programação Estruturada; Funções 24

Page 25: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

l  Em Matlab, tal como no caso dos scripts, as funções devem ser definidas em ficheiros texto com a extensão “.m”.

l  No entanto, o nome do ficheiro não é arbitrário e deve ser igual ao nome da função.

l  Os ficheiros, podem ser criados com qualquer editor de texto, nomeadamente com o do interpretador Octave, e começam com a assinatura da função e terminam com a palavra “end”.

15 Março 2017 Programação Estruturada; Funções 25

function ph= calculaPh(Ka, Ci) ...

end

calculaPh.m

Page 26: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

l  Para facilitar a legibilidade e compreensão de uma função é devem ser atribuídos nomes “significativos” quer à função quer às variáveis utilizadas na sua implementação.

l  As funções devem ser comentadas de forma a que o seu objectivo possa ser inspecionado com a instrução help. Isso é feito com a inserção de uma ou mais linhas de comentário imediatamente após a assinatura da função.

15 Março 2017 Programação Estruturada; Funções 26

function ph = calculaPH(Ka, Ci) % calculaph(Ka, Ci) % calcula o pH de um acido fraco monoprotico, dados: % Ka: constante de dissociacao % Ci: concentracao ...

end

Page 27: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

15 Março 2017 Programação Estruturada; Funções 27

function ph = calculaPH(Ka, Ci) % calculaph(Ka, Ci) % calcula o pH de um acido fraco monoprotico, dados: % Ka: constante de dissociacao % Ci: concentracao ...

end >> help calculaPH 'calculaPh' is a function from the file ... calculaph(Ka, Ci) calcula o pH de um acido fraco monoprotico, dados: Ka: constante de dissociacao Ci: concentracao Additional help ... >>

Page 28: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

function ph = calculaPH(Ka, Ci) % ... x = ... % concentracao iónica ph = ... end

Funções

l  A utilização de funções permite o uso de variáveis locais que não se confundem com variáveis com o mesmo nome, mas definidas noutras funções ou na janela de comandos.

l  Há três tipos de variáveis locais usadas numa função, que são criadas quando a função é executada e são destruídas uma vez terminada a sua execução:

l  Parâmetros de entrada

l  Variável resultado

l  Variáveis auxiliares

15 Março 2017 Programação Estruturada; Funções 28

Page 29: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

l  Dentro do bloco function ... end •  As variáveis são locais e estão isoladas •  Não há acesso a variáveis exteriores

l  Permite estruturar o programa … •  separar tarefas sem interferência •  controlar entrada e saída •  garantir que cada parte funciona

l  … e resolver problemas complexos.

l  Vamos analisar em mais detalhe uma função muito simples.

15 Março 2017 Programação Estruturada; Funções 29

Page 30: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

function res = soma(a,b)

res = a+b

end Assinatura da função

15 Março 2017 Programação Estruturada; Funções 30

Page 31: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

function res = soma(a,b)

res = a+b

end l  Nome da variável resultado

•  (na função) •  com o valor a devolver.

l  Operacionalmente:

•  quando chega ao end final, o interpretador devolve uma cópia do valor guardado na variável indicada aqui.

15 Março 2017 Programação Estruturada; Funções 31

Page 32: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

function res = soma(a,b)

res = a+b

end l  Nome da função

•  Para o interpretador encontrar a função o nome da função tem de ser igual ao nome do ficheiro com o código fonte:

15 Março 2017 Programação Estruturada; Funções 32

Page 33: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

function res = soma(a,b)

res = a+b

end l  Parâmetros da função

•  variáveis da função que recebem os argumentos, cujo valor se desconhece na implementação usados na execução.

l  e.g: soma(5,10) •  parâmetros: a, b •  argumentos: 5, 10

15 Março 2017 Programação Estruturada; Funções 33

Page 34: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

function res = soma(a,b)

res = a+b

end

l  Os parâmetros a e b contêm cópias dos argumentos fornecidos à função.

l  Estas variáveis a, b e res só existem dentro da função.

15 Março 2017 Programação Estruturada; Funções 34

Page 35: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

15 Março 2017 Programação Estruturada; Funções 35

function s = soma3(a,b,c) x = a + b s = x + c end

>> soma3(1,3,5) x = 4 s = 9 ans = 9 >> z = soma3(1,3,5) x = 4 s = 9 z = 9 >>

>> z z = 9 >> a error: ’a' undefined near line 1 column 1 >> x error: ’x' undefined near line 1 column 1 >> s error: 's' undefined near line 1 column 1 >>

Page 36: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

15 Março 2017 Programação Estruturada; Funções 36

function x = incrementa(x) x = x + 1 end

>> x = 4 x = 4 >> incrementa(x) x = 5 ans = 5 >> x x = 4 >> clear x >> error: ’x' undefined ...

>> y = 4 y = 4 >> z = incrementa(y) x = 5 z = 5 >> y = incrementa(y) x = 5 y = 5 >> x >> error: ’x' undefined ... >>

Page 37: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

function res = soma(a,b)

res = a+b

end l  Último detalhe:

•  Não queremos ver res no cálculo intermédio

15 Março 2017 Programação Estruturada; Funções 37

>> soma(2,5) res = 7 ans = 7 >>

Page 38: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

function res = soma(a,b)

res = a+b

end l  Último detalhe:

•  Não queremos ver res no cálculo intermédio

•  Usar ;

;

15 Março 2017 Programação Estruturada; Funções 38

>> soma(2,5) ans = 7 >>

>> soma(2,5) res = 7 ans = 7 >>

Page 39: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

l  Recapitulando:

function res = soma(x,y)

•  Os parâmetros da função recebem cópias dos valores dados como argumentos.

•  As variáveis na função estão isoladas • Não vêem nem são vistas fora da função.

•  Só “sai” da função uma cópia do valor da variável indicada na assinatura da função:

15 Março 2017 Programação Estruturada; Funções 39

Page 40: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

l  Nota 1:

•  A variável (ou variáveis) designada para guardar o valor devolvido tem de ter um valor atribuído no final da função.

15 Março 2017 Programação Estruturada; Funções 40

>> x = soma(2,5) warning: soma: some elements in list of return values are undefined x = [](0x0) >>

function res = soma(a,b) s = a + b end

Page 41: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Funções

l  Nota 2:

•  O interpretador verifica primeiro se há uma variável com esse nome:

•  Se fosse ao contrário, um novo ficheiro .m podia estragar um programa já existente.

15 Março 2017 Programação Estruturada; Funções 41

>> soma = 0 soma = 0 >> s = soma(2,5) >> error: A(I,J): row index out of bounds; value 2 out of bound 1 >> clear soma >> s = soma(2,5) >> s = 7 >>

function res = soma(a,b) s = a + b end

Page 42: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Um Problema

l  Calcular pH do ácido benzóico

•  (mas pode ser de outro ácido.)

l  Variáveis (parâmetros do problema)

•  Ka , Ci

l  Passos semelhantes

•  Fórmula resolvente para obter x

•  Calcular logaritmo de base 10 para pH

15 Março 2017 Programação Estruturada; Funções 42

Page 43: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Um Problema

l  Calcular pH do ácido benzóico 0.01M

•  C6H5COOH ↔ H+ + C6H5COO-

•  Ka = 6.5 x 10-5 (constante de dissociação – mais depois)

l  Como resolver

•  sendo x = [H+] = [C6H5COO-]

•  Ka = x2 / (Ci – x)

•  x2 + Ka x – Ci Ka = 0

•  pH = - log10(x)

15 Março 2017 Programação Estruturada; Funções 43

Page 44: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar

l  Compreender totalmente o problema

•  dados de entrada

•  resultado e saída

15 Março 2017 Programação Estruturada; Funções 44

Page 45: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar

l  Compreender totalmente o problema

l  Algoritmo

•  decompor o problema

•  saber como resolver cada parte •  Usar fórmula resolvente para obter x •  Calcular -logaritmo de x

15 Março 2017 Programação Estruturada; Funções 45

Page 46: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar

l  Compreender totalmente o problema

l  Algoritmo

l  Abstrair e generalizar

•  pH para quaisquer valores de Ka e Ci

•  não é só para o ácido benzóico •  a maior raiz de uma equação quadrática com a positivo

•  pode ser útil noutros casos

x2 + Ka x – Ci Ka = 0

15 Março 2017 Programação Estruturada; Funções 46

Page 47: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar

l  Compreender totalmente o problema

l  Algoritmo

l  Abstrair e generalizar

l  Implementação

•  Precisamos das assinaturas •  function x = raizMaior(a,b,c)

•  calcula a maior raiz pela fórmula resolvente •  function pH = calculaPh(Ka,Ci)

•  calcula o pH usando raizmaior

15 Março 2017 Programação Estruturada; Funções 47

Page 48: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar

l  Apesar de ainda não estarem implementadas as funções “auxiliares”, a função calculaPH já pode ser completamente definida.

l  Naturalmente temos de implementar e testar as funções auxiliares, antes de poder testar esta função.

15 Março 2017 Programação Estruturada; Funções 48

function pH = calculaPh(Ka, Ci) % calculaph(Ka, Ci) % calcula o pH de um acido fraco monoprotico, dados: % Ka: constante de dissociacao % Ci: concentracao H = raizMaior(1, ka, -Ka*Ci)

pH = -log10(H) end

x2 + Ka x – Ci Ka = 0

Page 49: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Como implementar

l  A função raizMaior pode ser calculada a partir duma função que devolva as raízes de uma equação do 2º grau.

l  No entanto podemos simplificar esta função, retornado apenas o valor da maior raiz (com o + na fórmula resolvente) e sem nos preocuparmos com os casos de raízes imaginárias.

15 Março 2017 Programação Estruturada; Funções 49

function x = raizMaior(a, b, c) % raizMaior(a, b, c) % calcula a maior raiz da equação de grau 2 % com termos a, b, c d = sqrt(b^2 - 4*a*c)

x = (-b + d)/(2*a) end

Page 50: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testes Unitários

l  É importante testar cada função individualmente

•  é mais fácil diagnosticar e corrigir erros se sabemos onde ocorrem

•  depois da função estar implementada e testada já não precisamos pensar nessa parte do problema

15 Março 2017 Programação Estruturada; Funções 50

Page 51: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testes Unitários

l  Testar casos diferentes

•  pode haver erros de execução em certas condições

•  pode não dar o resultado certo em certos casos

l  Testar casos com resultado conhecido

•  só assim podemos identificar erros lógicos e numéricos, que não produzem mensagens de erro.

15 Março 2017 Programação Estruturada; Funções 51

Page 52: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testar a Função

l  Pensamos num caso com solução conhecida.

•  x2 - 4x + 4 = 0 (a = 1, b = -4, c = 4) •  deve dar x = 2

l  Experimentamos

15 Março 2017 Programação Estruturada; Funções 52

>> raizMaior(1,-4,4) ans = 2 >>

Page 53: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testar a Função

l  Pensamos noutro caso com solução conhecida.

•  x2 = 0 (a = 1, b = 0, c= 0) •  deve dar x = 0

l  Experimentamos este outro caso

l  Experimentamos ...

15 Março 2017 Programação Estruturada; Funções 53

>> raizmaior(1, 0, 0) ans = 0 >>

Page 54: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testar a Função

l  Uma vez testadas as funções auxiliares já se pode testar a função principal.

15 Março 2017 Programação Estruturada; Funções 54

function pH = calculaPh(Ka, Ci) % calculaph(Ka, Ci) % calcula o pH de um acido fraco monoprotico, dados: % Ka: constante de dissociacao % Ci: concentracao H = raizMaior(1, ka, -Ka*Ci)

pH = -log10(H) end >> calculaPh(6.5e-5,0.01) ans = 3.1110 >>

O mesmo resultado que se obteve com o script benzoico

Page 55: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Decomposição de Funções

l  Decompor em funções •  Vantagens

•  Divide o problema em partes menores •  podemos pensar em cada tarefa individualmente

•  Permite testes unitários •  Permite construir programas complexos

•  dentro de function … end o código fica isolado •  Permite reutilizar código

•  e.g. raizMaior pode servir noutros casos •  Permite obter aprovação a ICE...

15 Março 2017 Programação Estruturada; Funções 55

Page 56: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Um Problema Semelhante

l  Fazer a mesma coisa, mas dando •  massa molar, •  massa em solução, •  volume e •  Ka. •  e.g. qual o pH de 0.01g de ácido benzóico em 0.250 dm3?

l  Decompor o problema •  Calcular concentração •  Calcular pH

• esta parte já está feita

15 Março 2017 Programação Estruturada; Funções 56

Page 57: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Um Problema Semelhante

l  pH dada a massa molar, massa em solução, volume e Ka.

•  function x = raizMaior(a,b,c) •  calcula a maior raiz da equação quadrática que dá a

concentração de [H+]

•  function pH = calculaPh(Ka,Ci) •  calcula o pH a partir da constante de dissociação e a

concentração inicial usando raizMaior

•  function pH = phMassVol(mass,vol,massMol,Ka) •  calcula concentração e chama calculaph

15 Março 2017 Programação Estruturada; Funções 57

Page 58: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Um Problema Semelhante

l  pH dada a massa molar, massa em solução, volume e Ka.

15 Março 2017 Programação Estruturada; Funções 58

function pH = phMassVol(mass, vol, massMol, Ka) % phMassVol(mass, vol, massMol, Ka) % calcula o pH de um acido fraco monoprotico, dados: % mass: massa do acido % vol: volume da solucao % massMol: massa molar do acido % Ka: constante de dissociacao Ci = (mass/massMol)/vol; % concentracao molar inicial

pH = calculaPh(Ka, Ci) end

Page 59: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Um Problema Semelhante

l  Podemos igualmente testar esta nova função.

15 Março 2017 Programação Estruturada; Funções 59

>> phmassvol(1.2212,1,122.12,6.5e-5) ans = 3.1110 >> phmassvol(0.01,0.25,122.12,6.5e-5) ans = 3.9319

resultado anterior ✓

function pH = phMassVol(mass, vol, massMol, Ka) % phMassVol(mass, vol, massMol, Ka) % calcula o pH de um acido fraco monoprotico, dados: % mass: massa do acido % vol: volume da solucao % massMol: massa molar do acido % Ka: constante de dissociacao Ci = (mass/massMol)/vol; % concentracao molar inicial

pH = calculaPh(Ka, Ci) end

resultado correcto ✓

Page 60: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testes: quatro tipos de erro

l  Erro de sintaxe

•  na interpretação do código fonte •  parênteses, plicas, operadores em falta, … •  Erros de afectação

>> 6 + * 12 parse error: syntax error >>> 6 + * 12 ^ >> a + 2 = 6 parse error: invalid left hand side of assignment >>> a+2 = 6 ^

15 Março 2017 Programação Estruturada; Funções 60

Page 61: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testes: quatro tipos de erro

l  Erro de execução

•  o programa é interrompido •  variável não definida, •  função não definida, …

15 Março 2017 Programação Estruturada; Funções 61

>> clear x >> y = x + 1 error: 'x' undefined near line 1 column 5 >> x = f(5) error: ‘f' undefined near line 1 column 5 >>

Page 62: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testes: quatro tipos de erro

l  Erro lógico

•  não há mensagem de erro mas o resultado está errado

•  Só podem ser detectados através dos testes (unitários)

15 Março 2017 Programação Estruturada; Funções 62

function x = raizMaior(a, b, c) % raizMaior(a, b, c) d = sqrt(b^2 - 4*a*c)

x = (-b + d)/ 2 % ERRO: falta o a no denominador end

>> raizmaior(1, -4, 4) ans = 2 >> raizmaior(2, -4, 2) ans = 2 >>

•  resultado correcto ?? com a = 1 o erro não se revela •  resultado incorrecto !! ans deveria ser 1

Page 63: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Testes: quatro tipos de erro

l  Erro numérico

•  se resultados das operações aritméticas não são exactos a falta de precisão pode afectar a saída do programa.

•  Especialmente importantes se os cálculos são iterados um número muito grande de vezes

>> x = sin(pi) x = 1.2246e-16 >> 2 - sqrt(2)^2 ans = -4.4409e-16 >>

15 Março 2017 Programação Estruturada; Funções 63

Page 64: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Representação de Inteiros

l  Um número inteiro pode ser representado com uma combinação de bits.

•  em base 2 •  2 bits, 22 possibilidades 00 01 10 11 •  4 bits, 24 possibilidades 0000 0001 … 1111 •  8 bits (1 byte), 28 = 256 possibilidades

•  00000000 … 11111111 em binário •  0 … 255 em decimal

15 Março 2017 Programação Estruturada; Funções 64

Page 65: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Representação de Inteiros

l  Um número inteiro pode ser representado com uma combinação de bits.

•  por omissão, MATLAB usa 32 bits para representar cada número inteiro

•  232 = 4294967296 combinações •  um bit para o sinal •  -2147483648 … 2147483647 intmin intmax

•  NOTA: Cálculos que ultrapassem estes limites “dão erro”

15 Março 2017 Programação Estruturada; Funções 65

Page 66: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Representação de Inteiros

l  32 bits para representar um inteiro

•  Funções (constantes) intmax e intmin

>> intmax ans = 2147483647 >> intmax+10 ans = 2147483647 >> (intmax+10)-intmax ans = 0 >> intmin ans = -2147483648 >> intmin -10 ans = -2147483648

15 Março 2017 Programação Estruturada; Funções 66

???

???

???

Page 67: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Representação de Reais

l  Um número “real” é representado com 64 bits* (vírgula flutuante)

•  Sinal (+, -) : 1 bit

•  Expoente: 11 bits (8)

•  Fracção: 52 bits (23)

•  r = (-1) Sinal × Fracção × 2 Expoente

* Em precisão dupla, por omissão em MATLAB. Em precisão simples são 32 bits.

Sinal Fracção Expoente

15 Março 2017 Programação Estruturada; Funções 67

Page 68: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Representação de Reais

l  Maior valor: •  realmax: ±1.7977 × 10+308

•  ±3.4028 × 1038 em precisão simples

l  Menor valor não nulo •  realmin: ±2.2251 × 10-308

•  ±1.1755 × 10-38 em precisão simples

l  Precisão relativa (épsilon) •  eps: ±2.2204x 10-16

•  ±1.1921 x 10-7 em precisão simples

15 Março 2017 Programação Estruturada; Funções 68

Page 69: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Representação de Reais

l  Precisão relativa (épsilon) •  eps: ±2.2204x 10-16

•  ±1.1921 x 10-7 em precisão simples

l  O menor número que somado a 1 dá um resultado diferente de 1:

>> eps ans = 2.2204e-016 >> (1+eps) - 1 ans = 2.2204e-016 >> eps/2 ans = 1.1102e-16 >> (1+eps/2) - 1 ans = 0

15 Março 2017 Programação Estruturada; Funções 69

???

Page 70: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Representação de Reais

l  Resumindo: •  Todos os dados no computador são sequências de bits. •  A memória é limitada (64 bits para os números), por isso a

precisão é limitada. •  Normalmente não há problema, mas atenção aos

arredondamentos

15 Março 2017 Programação Estruturada; Funções 70

Page 71: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Scripts vs Functions

l  Em ICE os ficheiros de script são opcionais •  ficheiros de código fonte que não definem uma função •  podem ser úteis para testes e desenvolvimento •  são úteis quando utilizam programas

•  reprodutibilidade, •  registo dos argumentos, •  conveniência

l  mas em ICE não vamos pedir (nem querer) que entreguem os vossos programas como scripts. Sempre funções

15 Março 2017 Programação Estruturada; Funções 71

Page 72: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Scripts vs Functions

l  Funções function … end são fundamentais

•  vão precisar delas para tudo em ICE •  exercícios, trabalhos, testes, exame

•  os programas que entregam devem ser executados chamando uma função.

•  isto garante que o programa é independente do que se faça antes ou depois.

•  sem saber escrever funções não se faz praticamente nada em MATLAB...

15 Março 2017 Programação Estruturada; Funções 72

Page 73: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Ciclo de Vida do Código

l  Edição do código fonte •  escrito, guardado em ficheiros .m

l  Interpretação do código fonte •  o interpretador traduz as instruções em instruções para o

CPU

l  Execução •  o CPU executa o programa

l  Testar e avaliar o resultado •  e voltar à edição as vezes que for preciso...

15 Março 2017 Programação Estruturada; Funções 73

Page 74: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Estilo de Código

l  O código fonte serve •  para o interpretador executar o programa •  para nós (quem ?) percebermos o programa

l  Código difícil de perceber •  terá mais erros •  é mais difícil de corrigir, melhorar, alterar ou reaproveitar •  dá pior nota a ICE

15 Março 2017 Programação Estruturada; Funções 74

Page 75: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Estilo de Código

l  Nomes de variáveis: •  Descritivos, começando em minúscula e indicando

diferentes palavras com maiúscula. •  Exemplos: mass, vol, massMol

15 Março 2017 Programação Estruturada; Funções 75

function pH = phMassVol(mass, vol, massMol, Ka) % phMassVol(mass, vol, massMol, Ka) % calcula o pH de um acido fraco monoprotico, dados: % mass: massa do acido % vol: volume da solucao % massMol: massa molar do acido % Ka: constante de dissociacao Ci = (mass/massMol)/vol; % concentracao molar inicial

pH = calculaPh(Ka, Ci) end

Page 76: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Estilo de Código

l  Nomes de variáveis: •  Excepção quando os nomes correspondem a uma

convenção prévia. Nesse caso os nomes das variáveis devem respeitar a convenção esperada.

•  Exemplos: •  a, b, c e x na fórmula resolvente, ou •  Ka, Ci e pH

15 Março 2017 Programação Estruturada; Funções 76

function x = raizMaior(a, b, c) % raizMaior(a, b, c) d = sqrt(b^2 - 4*a*c)

x = (-b + d)/ 2 % ERRO: falta o a no denominador end

Page 77: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Estilo de Código

l  Nomes de funções: Devem descrever o que a função faz. •  Há três convenções comuns:

•  só minúsculas, (menos problemas com nomes de ficheiros) •  minúsculas e maiúsculas (e.g. phMassVol) •  ou underscore (_) para separar temos (e.g. ph_mass_vol)

15 Março 2017 Programação Estruturada; Funções 77

function pH = phMassVol(mass, vol, massMol, Ka) % phMassVol(mass, vol, massMol, Ka) % ... Ci = (mass/massMol)/vol; % concentracao molar inicial

pH = calculaPh(Ka, Ci) end

Page 78: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

function pH = phMassVol(mass, vol, massMol, Ka) % phMassVol(mass, vol, massMol, Ka) % ... Ci = (mass/massMol)/vol; % concentracao molar inicial

pH = calculaPh(Ka, Ci) end

Estilo de Código

l  Indentação: Devem descrever o que a função faz. •  Cada bloco de código é alinhado à esquerda e indentado

para indicar a que parte pertence (voltaremos a isto nas próximas aulas quando o código se tornar mais complexo).

15 Março 2017 Programação Estruturada; Funções 78

Page 79: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Estilo de Código

l  Inteligibilidade: •  Cada linha de código deve corresponder a um passo do

programa fácil de perceber e faça sentido naquele contexto. •  Também se deve evitar linhas demasiado longas, dividindo

expressões complexas em vários passos.

15 Março 2017 Programação Estruturada; Funções 79

function pH = calculaPh(Ka, Ci) % calculaph(Ka, Ci) % calcula o pH de um acido fraco monoprotico, dados: % Ka: constante de dissociacao % Ci: concentracao H = raizMaior(1, ka, -Ka*Ci)

pH = -log10(H) end

Page 80: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

function pH = phMassVol(mass, vol, massMol, Ka) % phMassVol(mass, vol, massMol, Ka) % ... Ci = (mass/massMol)/vol; % concentracao molar inicial

pH = calculaPh(Ka, Ci) end

Estilo de Código

l  Documentação e comentários: •  As funções devem conter documentação que explique o seu

funcionamento usando a função help. •  Outros comentários também devem ser acrescentados sempre

que forem úteis para esclarecer algum ponto do funcionamento do código.

15 Março 2017 Programação Estruturada; Funções 80

Page 81: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Estilo de Código

l  Mais (muito mais...) sobre estilo em: •  MATLAB Programming Style Guidelines, por Richard

Johnson, 2003 •  ver http://www.datatool.com/prod02.htm

15 Março 2017 Programação Estruturada; Funções 81

Page 82: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Resumo

l  Programação estruturada •  Decompor um problema complexo em problemas mais

simples •  E assim por diante, até ter problemas elementares •  Implementar soluções em módulos autónomos

•  pensar primeiro na assinatura da função •  testar bem depois de implementar

l  Abstracção e generalização •  Abstrair dos detalhes do problema

•  Generalizar a solução

15 Março 2017 Programação Estruturada; Funções 82

Page 83: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Resumo

l  Perceber o enunciado •  o que é fornecido e pedido

l  Perceber o problema •  o que se tem de fazer

l  Conceber o algoritmo •  tarefas, funções, assinatura de cada uma

l  Implementar cada parte do programa •  e testar, testar, testar...

15 Março 2017 Programação Estruturada; Funções 83

Page 84: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Resumo

l  Estilo de código •  Nome de função deve ser descritivo

•  usar umas das 3 convenções •  Nome de variável começando em minúscula e com

maiúsculas a indicar composição de palavras •  excepto variáveis que se espera obedecer a outras

convenções (Ka, pH, ...) •  Indentação, documentação e comentários

15 Março 2017 Programação Estruturada; Funções 84

Page 85: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Para estudar a aula de hoje

l  Recomendado •  Physical Modeling in MATLAB

•  Capítulo 2 todo •  Capítulo 5, só secções 5.1 a 5.5

l  Opcional •  Manual do Octave

•  Secções 11.1 e 11.9 •  (tem mais matéria do que é dada nesta disciplina)

15 Março 2017 Programação Estruturada; Funções 85

Page 86: Informática para Ciências e Engenharias (B) 2016/17iceb.ssdi.di.fct.unl.pt/1617/teoricas/T02/iceb_t02.pdf · Funções l A utilização de funções permite o uso de variáveis

Dúvidas ?

15 Março 2017 Programação Estruturada; Funções 86