61
Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17

Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Informá(caparaasCiênciaseEngenhariasVersão:C

(EngenhariaCivil)

PedroBarahona

2016/17

Page 2: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Sumário

•  Resoluçãodeproblemas§  Metodologiaeníveisdeabstração.

§  Funções.

§  Testesunitários.

•  Ficheiroscomcódigofonte.Ciclodevidadeumprograma.

•  Tiposdeerros.Representaçãodenúmerosembinário.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 2

Page 3: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação

•  Na sequência de uma expropriação de terrenos, vai sercolocadaumavedaçãoentretrêsestacas,cujascoordenadascartesianassão(x1,y1),(x2,y2)e(x3,y3).

•  Pretende-secalcularocomprimentodavedação.

(x1,y1)

(x3,y3)

(x2,y2)

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 3

Page 4: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução–Problema[1]

1.  Compreender totalmente o problema descrito noenunciado.

•  Nãoficarcomdúvidassobre:§  ainformaçãoqueserecebe(osdadosdeentrada);

§  ainformaçãoqueseproduz(osresultados,asaída).

•  Devemossaberresolveroproblema“àmão”.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 4

Page 5: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução–Problema[2]

2.  Caracterizaroproblema.

•  Problema:Comprimentodeumavedação.

•  Entrada:estaca(x1,y1),estaca(x2,y2),estaca(x3,y3).•  Saída:ocomprimentodavedaçãodelimitadapelasestacas

(x1,y1),(x2,y2)e(x3,y3).

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 5

Page 6: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução–Problema[3]

3.  Generalizaroproblema(semprequeforpossível).

•  Problema:Perímetrodeumtriângulo.

•  Entrada:vér(ce(x1,y1),vér(ce(x2,y2),vér(ce(x3,y3).•  Saída: o perímetro do triângulo definido pelos vér(ces

(x1,y1),(x2,y2)e(x3,y3).

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 6

Page 7: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução–Algoritmo[1]

4.  Desenharoalgoritmopararesolveroproblema.a)  Conceber o algoritmo, decompondo o problema em sub-

problemas.

§  Comocalcularoperímetrodeumtriângulo?

§  Somam-seoscomprimentosdostrêsladosdotriângulo.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 7

Page 8: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução–Algoritmo[2]

b)  Iden(ficar,caracterizaregeneralizarcadasub-problema.

•  Sub-problema:Comprimentodeumsegmentodereta.

•  Entrada:ponto(x,y),ponto(x’,y’).•  Saída:ocomprimentodosegmentoderetadefinidopelos

pontos(x,y)e(x’,y’).

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 8

Page 9: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução–Algoritmo[3]

c)  Conceber o algoritmo, assumindo que os sub-problemasestãoresolvidos.

Perímetrotriângulo(x1,y1),(x2,y2),(x3,y3):

comprimentosegmento(x1,y1)(x2,y2)+

comprimentosegmento(x2,y2)(x3,y3)+

comprimentosegmento(x3,y3)(x1,y1)

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 9

Page 10: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução–Algoritmo[4]

5.  Para cada sub-problema, desenhar o algoritmo para oresolver.

a)  Conceber o algoritmo, decompondo o problema em sub-problemas.

b)  Iden(ficar,caracterizaregeneralizarcadasub-problema.

c)  Conceber o algoritmo, assumindo que os sub-problemas estãoresolvidos.

§  Comocalcularocomprimentodosegmento(x,y)(x’,y’)?

(x − x')2 + (y − y')2

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 10

Page 11: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução–Programa

6.  Para cada sub-problema (começando pelos mais simples),implementar o respe(vo algoritmo e testar o “sub-programa”.

7.  Implementaroalgoritmoqueresolveoproblemaetestaroprogramapedido.

EmICE,o“sub-programa”eoprogramasãofunções.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 11

Page 12: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Sumário

•  Resoluçãodeproblemas§  Metodologiaeníveisdeabstração.

§  Funções.«  Matemá(ca

«  Matlab

§  TestesUnitários.

•  Ficheiroscomcódigofonte.Ciclodevidadeumprograma.

•  Tiposdeerros.Representaçãodenúmerosembinário.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 12

Page 13: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matemá(ca–Definiçãodefunções

•  Sintaxedadefinição: nomeFunção( parâmetros ) = expressão

comosparâmetrosseparadosporvírgulas.

•  Exemplos:§  f(x) = x2

§  g(x) = |x|

§  h(x,y) = max(f(x), g(y))

•  Háproblemasporxserumparâmetrodef,degedeh?§  Não,porqueoscontextossãodiferentes.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 13

Page 14: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matemá(ca–Chamadadefunções

•  Sintaxedaaplicação(ouchamada):

nomeFunção( argumentos) comosargumentosseparadosporvírgulas.

•  Exemplo:Sendof(x) = x2;g(x) = |x|;h(x,y) = max(f(x),g(y))

temos,porexemplo§  f(3) (quevale9)

§  h(4,-11) (quevale16)

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 14

Page 15: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Definiçãodefunções[1]

•  Sintaxedadefinição:

comosparâmetrosseparadosporvírgulas;

•  nomeResultadoéumavariávelcujovalornofimdaexecuçãodasinstruçõeséoresultadodafunção.

•  Àprimeiralinhadadefinição(quecomeçaporfunc%on)chama-seaassinaturadafunção.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 15

function nomeResultado = nomeFunção(parâmetros)

instruções

end

Page 16: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Definiçãodefunções[2]

Exemplo:

•  Implementaçãodef(x) = x2 (1ªversão):

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 16

function res = f(x)

res = x^2

end

function nomeResultado = nomeFunção(parâmetros)

instruções

end

Page 17: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

REGRADEPROGRAMAÇÃO

•  Todos os iden(ficadores (nomes) devem ser escolhidos deformaaindicaroseusignificado.§  Onome de uma variável diz o que é guardado nessa posição de

memória.

§  Onomedeumafunçãodizoqueafunçãocalcula.

§  Onomedeumparâmetrodizoqueoparâmetrovaireceber.

Nota:Nenhumnomepodeteracentosoucedilhas.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 17

Page 18: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Definiçãodefunções[3]

•  Implementaçãodef(x) = x2 (1ªversão):

•  Problemas?

§  Neste caso (em que a função “vem” da Matemá(ca), oiden(ficadorxdoparâmetroémuitonatural.

§  Oiden(ficadorfdafunçãonãodáqualquerinformação.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 18

function res = f(x)

res = x^2

end

Page 19: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Definiçãodefunções[4]

•  Implementaçãodef(x) = x2 (1ªversão):

•  Implementaçãodef(x) = x2 (2ªversão):

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 19

function res = f(x) res = x^2 end

function res = quadrado(x) res = x^2 end

Page 20: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

REGRADEPROGRAMAÇÃO

•  Todas as funções devem ser documentadas, indicando-se asintaxe da chamada, o que a função calcula e o que são osseusparâmetros.

•  Isto é feito escrevendo um comentário antes ou depois daassinaturadafunção.

•  Em Matlab, o comando help nomeFunção escreve essecomentário.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 20

Page 21: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Definiçãodefunções[5]

•  Implementaçãodef(x) = x2 (3ªversão):

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 21

function res = f(x) % res = quadrado(x) % Calcula o quadrado do numero x res = x^2 end

>> help quadrado 'quadrado' is a function from the file ... res = quadrado(x) Calcula o quadrado do numero x Additional help for ... >>

Page 22: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–M-files

•  O código de uma função temde ser guardado numficheirocomonomenomeFunção.m

•  Conteúdodoficheiroquadrado.m:

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 22

function res = f(x) % res = quadrado(x) % Calcula o quadrado do numero x res = x^2 end

Ficheiroquadrado.m

Page 23: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Chamadadefunções[1]

•  Sintaxedachamada:

nomeFunção( argumentos ) comosargumentosseparadosporvírgulas.

•  Execuçãoda1ªchamada:1.  Avalia-seovalordaexpressãousadacomoargumento(queé-3).

2.  Executa-seocódigodafunção,usandocomovalordoparâmetroovalordoargumentorespe(vo.

3.  O valor da chamada é o valor que no fim da execução está nonomedoresultado(resnestecaso)

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 23

Page 24: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Chamadadefunções[1]

•  Execuçãoda1ªchamada:1.  Avalia-seovalordaexpressãousadacomoargumento(queé-3).

2.  Executa-seocódigodafunção,usandocomovalordoparâmetroovalordoargumentorespe(vo.

3.  O valor da chamada é o valor que no fim da execução está nonomedoresultado(resnestecaso)

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 24

>> quadrado(-1*3) res = 9 ans = 9 >> x = quadrado(-5) - 1 res = 25 x = 24 >>

function res = f(x) % res = quadrado(x) % Calcula ... res = x^2 end

Page 25: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação–Passo6[1]

•  Comprimentodosegmento(x,y)(x’,y’)

•  Implementaçãodafunção:

(x − x')2 + (y − y')2

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 25

function res = comprSegmento( x1, y1, x2, y2 ) % res = comprSegmento(x1, y1, x2, y2) % Calcula o comprimento do segmento de reta % definido pelos pontos (x1,y1) e (x2,y2). ... end

Page 26: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

REGRADEPROGRAMAÇÃO

•  Cadalinhadecódigotemdesermuitofácildeentender.§  Aindentação(onúmerodeespaçosembranconoiníciodalinha)é

fundamentalparaiden(ficarosblocosdeinstruções.

§  Alinhadevesercurta(80caracteres,nomáximo,contandocomosespaçosembrancodoinício).

§  As expressões complicadas devem ser simplificadas, usandovariáveis(auxiliares).

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 26

Page 27: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação–Passo6[2]

•  Comprimentodosegmento(x,y)(x’,y’)

•  Implementaçãodafunção:

(x − x')2 + (y − y')2

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 27

function res = comprSegmento( x1, y1, x2, y2 ) % res = comprSegmento(x1, y1, x2, y2) % Calcula o comprimento do segmento de reta % definido pelos pontos (x1,y1) e (x2,y2). aux = (x1 – x2)^2 + (y1 – y2)^2 res = sqrt(aux)

end

Page 28: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

REGRADEPROGRAMAÇÃO

•  TestesUnitários:§  cadafunçãodevesertestadaisoladamente,antesdeserintegrada

noprogramacompleto.

•  Representa(vidade:§  Oscasostestadosdevemseromaisvariadospossível:casosgerais,

casospar(culares,casosdegenerados,casoslimite,...

•  Erros§  Éessencialleretentarcompreenderasmensagensdeerro.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 28

Page 29: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação–Passo6[3]

•  Nafasedeteste,podem-severosvaloresintermédios:

•  CasosdeTeste:§  pontosdiferentes

§  pontosiguais

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 29

>> c = cpomprSegmento(1,1,4,5)

aux = 25

res = 25

C = 5 >>

function res = comprSegmento(x1, y1, x2, y2) % ... aux = (x1 – x2)^2 + (y1 – y2)^2 res = sqrt(aux)

end

Page 30: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação–Passo6[4]

•  Naversãofinal,osvaloresintermédiossãointrusivos:

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 30

>> c = comprSegmento(1,1,4,5)

C = 5 >>

function res = comprSegmento(x1, y1, x2, y2) % ... aux = (x1 – x2)^2 + (y1 – y2)^2; res = sqrt(aux);

end

Page 31: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação–Passo7[1]

Perímetrotriângulo(x1,y1)(x2,y2)(x3,y3)

•  Implementaçãodafunção:

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 31

function res = perimetroTriang(x1, y1, x2, y2, x3, y3) % res = perimetroTriang(x1, y1, x2, y2, x3, y3) % Calcula o perimetro do triangulo definido pelos % vertices (x1,y1), (x2,y2) e (x3,y3). ... end

Page 32: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação–Passo7[2]

Perímetrotriângulo(x1,y1)(x2,y2)(x3,y3)

•  Implementaçãofinaldafunção:

•  Casoespecialdeteste:ostrêspontossãocolineares.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 32

function res = perimetroTriang(x1, y1, x2, y2, x3, y3) % res = perimetroTriang(x1, y1, x2, y2, x3, y3) % Calcula o perimetro do triangulo definido pelos % vertices (x1,y1), (x2,y2) e (x3,y3). lado1 = comprSegmento(x1, y1, x2, y2); lado2 = comprSegmento(x2, y2, x3, y3); lado3 = comprSegmento(x3, y3, x1, y1); res = lado1 + lado2 + lado3;

end

Page 33: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Variáveislocais,parâmetros,variávelresultado

•  As variáveis criadas no corpo (dentro) de uma função sãodestruídasquandoaexecuçãodocódigodafunçãotermina.Chamam-sevariáveislocaisdafunção.

•  Os valores dos parâmetros e a variável onde é guardado oresultado da função também deixam de exis(r quando aexecuçãodafunçãotermina.

•  Asvariáveis criadasdiretamenteno interpretadornunca sãodestruídas – exceto se for executado o comando clear ouclear(nomeVariável).

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 33

Page 34: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Variáveislocais

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 34

function res = perimetroTriang(x1, y1, x2, y2, x3, y3) % ... lado1 = comprSegmento(x1, y1, x2, y2); lado2 = comprSegmento(x2, y2, x3, y3); lado3 = comprSegmento(x3, y3, x1, y1); res = lado1 + lado2 + lado3;

end

>> perim = perimetroTriang(1, 1, 50, 8, 21, 15)

perim = 103.7435

>> lado1

??? Undefined function or variable ‘lado1’’.

Page 35: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Parâmetros

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 35

function res = perimetroTriang(x1, y1, x2, y2, x3, y3) % ... lado1 = comprSegmento(x1, y1, x2, y2); lado2 = comprSegmento(x2, y2, x3, y3); lado3 = comprSegmento(x3, y3, x1, y1); res = lado1 + lado2 + lado3;

end

>> perim = perimetroTriang(1, 1, 50, 8, 21, 15)

perim = 103.7435

>> y3

??? Undefined function or variable ‘y3’’.

Page 36: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Variávelresultado

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 36

function res = perimetroTriang(x1, y1, x2, y2, x3, y3) % ... lado1 = comprSegmento(x1, y1, x2, y2); lado2 = comprSegmento(x2, y2, x3, y3); lado3 = comprSegmento(x3, y3, x1, y1); res = lado1 + lado2 + lado3;

end

>> perim = perimetroTriang(1, 1, 50, 8, 21, 15)

perim = 103.7435

>> res

??? Undefined function or variable ‘res’’.

Page 37: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Sumário

•  Resoluçãodeproblemas§  Metodologiaeníveisdeabstração

§  Funções.

§  TestesUnitários.

•  Ficheiroscomcódigofonte.Ciclodevidadeumprograma.

•  Tiposdeerros.Representaçãodenúmerosembinário.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 37

Page 38: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação–Programa[1]

•  FicheirocomprSegmento.m:

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 38

FicheirocomprSegmento.mfunction res = comprSegmento( x1, y1, x2, y2 ) % res = comprSegmento(x1, y1, x2, y2) % Calcula o comprimento do segmento de reta % definido pelos pontos (x1,y1) e (x2,y2). aux = (x1 – x2)^2 + (y1 – y2)^2; res = sqrt(aux);

end

Page 39: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

ProblemadaVedação–Programa[2]

•  FicheiroperimetroTriang.m:

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 39

function res = perimetroTriang(x1, y1, x2, y2, x3, y3) % res = perimetroTriang(x1, y1, x2, y2, x3, y3) % Calcula o perimetro do triangulo definido pelos % vertices (x1,y1), (x2,y2) e (x3,y3). lado1 = comprSegmento(x1, y1, x2, y2); lado2 = comprSegmento(x2, y2, x3, y3); lado3 = comprSegmento(x3, y3, x1, y1); res = lado1 + lado2 + lado3;

end

FicheiroperimetroTriang.m

Page 40: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Resolução de Problemas

Enunciado

Programa

Algoritmo

ProblemaPrograma

(guardadoemficheiros)

EdiçãoInterpretaçãoExecução

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 40

Page 41: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Ficheiro

•  Dopontodevistalógico,umficheirocontémumasequênciade bits, que pode representar um texto, números, umaimagem,sons,etc.

•  Umficheiroéguardadonodisco(paraqueainformaçãonãose perca quando o computador não está a funcionar) e éacessívelatravésdeumiden(ficadorúnico(nome).

•  Um ficheiro com código fonte é um ficheiro de texto comcódigoescritopeloprogramador.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 41

Page 42: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Ediçãodeumficheirocomcódigofonte

Programador

quadrado.mFicheiro fonte

(original) do programa

Editordetexto

% res = quadrado(x) % Calcula o quadrado do numero x. function res = quadrado( x ) res = x^2; end

Programa carregado a partir do disco

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 42

Page 43: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

CPU

Edição do programa

Memória

Teclado Ecrã Disco

Interligação

EditordetextoExecuçãodasinstruções

quadrado.m

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 43

Page 44: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

>> c = comprSegmento(1, 1 ,4, 5) c = 5 >>

Execução do programa

CPU

Memória

Teclado Ecrã Disco

Interligação

InterpretadorExecuçãodasinstruções

quadrado.m

comprSegmento.m

perimetroTriang.m

Aazuloqueéescritopelointerpretador

Avermelhooqueéescritopeloprogramador13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 44

Page 45: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Sumário

•  Resoluçãodeproblemas§  Metodologiaeníveisdeabstração

§  Funções.

§  TestesUnitários.

•  Ficheiroscomcódigofonte.Ciclodevidadeumprograma.

•  Tiposdeerros.Representaçãodenúmerosembinário.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 45

Page 46: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Programa(guardadoemficheiros)

EdiçãoInterpretaçãoExecução

Erros nos programas

Erros!

sintá(cos

deexecuçã

o

lógicos

numéricos

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 46

Page 47: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

TiposdeErros[1]

•  Errossintá(cos:§  quandoexpressõesouinstruçõesnãocumpremasregrassintá(cas

dalinguagemdeprogramação.

§  Sãooserrosmaisfáceisdecorrigir.

•  Exemplos:§  6 + * 2

§  total +1 = 9

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 47

Page 48: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

TiposdeErros[2]

•  Errosdeexecução:§  quandoaexecuçãodoprogramanãopodecon(nuarporqualquer

mo(vo,masnenhumaregrasintá(cafoiviolada.

•  Exemplos:§  Avaliarumavariávelquenãoexiste.

§  Escrever o código de uma função num ficheiro cujo nome não é“nomeFunção.m”.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 48

Page 49: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

TiposdeErros[3]

•  Erroslógicos:§  quando a execução do programa termina com sucesso (ou seja,

semterhavidoerros sintá(cosoudeexecução),maso resultadonãoéoquesepretendedevidoaerrosnosalgoritmos.

•  Exemplo:§  trocar os valores das variáveis x e y (que existem), com as duas

seguintesinstruções:

x = y y = x

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 49

Qualéoerro?

Page 50: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

TiposdeErros[4]

•  Errosnuméricos:§  quandoosresultadosdasoperaçõesaritmé(casnãosãoexatose

oserros(pelafaltadeprecisão)afetamasaídadoprograma.

•  Exemplos:§  sqrt(2)^2 – 2 è 4.4409e-16

§  sin(pi) è 1.2246e-16

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 50

Page 51: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Elementossimplesdearmazenamento

•  Guardaminformaçãosegundouma lógicadedoisvaloresoulógicabinária,e.g.§  Passa/nãopassacorrenteelétrica

§  Reflete/nãorefletealuz

•  Comumelementodestespodemosarmazenarumbit,queéumdedoisvaloresdiferentes.

•  Com uma sequência de n bits, podemos armazenar um dequantosvaloresdiferentes?

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 51

Page 52: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Representaçãodeinformaçãoembinário[1]

•  Quantos valores diferentes podem ser representados comumasequênciadenbits?

•  2bits:

•  22=4valoresdis(ntos

00011011

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 52

è 22

Page 53: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Representaçãodeinformaçãoembinário[2]

•  Quantos valores diferentes podem ser representados comumasequênciadenbits?

•  3bits:

•  23=8valoresdis(ntos

000001010011100101110111

è 23

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 53

Page 54: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Representaçãodeinformaçãoembinário[3]

•  Quantos valores diferentes podem ser representados comumasequênciadenbits?

•  nbits:

•  2nvaloresdis(ntos

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 54

Page 55: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Potências de dois

1 0

2 1

4 2

8 3

16 4

32 5

64 6

128 7

256 8

512 9

1024 10

2048 11

4096 12

8192 13

16384 14

32768 15

65536 16

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 55

10100101 = 1* 20 + 1* 22

+ 1* 25

+ 1* 27

= 165

165 = 5* 100 + 6* 101

+ 1* 102

= 165

Page 56: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Representaçãodeinformaçãoembinário[4]

•  1bitdeinformação–doisvaloresdis(ntos

•  1bytedeinformação=8bits

28=256valoresdis(ntos

•  2bytesdeinformação=16bits

216=65.536valoresdis(ntos•  4bytesdeinformação=32bits

232=4.294.967.296valoresdis(ntos

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 56

Page 57: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

57

Representaçãodeinteiros

•  Comnbits,podem-serepresentar2nvaloresdiferentes.

•  Serepresentarmosnúmerosinteirossemsinal,osvaloressão:de0a2n–1.

com32bits:de0a4.294.967.295

•  Se representarmos números inteiros com sinal, os valoressão:de-2n-1a2n-1-1.

com32bits:de-2.147.483.648a+2.147.483.647 (intmin)(intmax)

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 57

Page 58: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

58

Operaçõesaritmé(cascomumnúmerofixodebits

•  Sesomarmos2.147.483.647(intmax)com10deveriadar

2.147.483.657,

quenãoérepresentávelcom32bits(comsinal),porqueémaiordoqueintmax(2.147.483.647).

•  Omesmoproblemaocorrequandooresultadodeumaoperaçãoformenordoque-2.147.483.648(intmin)

•  Aaritmé(cadoscomputadoresreserva-nosalgumassurpresas!

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 58

Page 59: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

59

Representaçãodereais[1]

•  Tambéméfeitacomumnúmerofixodebits:§  32bitsprecisãosimples;64bitsprecisãodupla.

•  Ovalorrepresentadoé(-1)S×F×2E

S E F

32 ou 64 bits

1 bit para o sinal S

8 ou 11 bits para o expoente E

23 ou 52 bits para a fração F

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 59

Page 60: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Representaçãodereais[2]

•  Nãoseconseguemrepresentarnúmerosmuitograndesnemnúmerosmuitopequenos(emvalorabsoluto).§  Precisãosimples:+/-1.18x10-38a+/-3.4x10+38

§  Precisãodupla:+/-2.23x10-308a+/-1.80x10+308

(realmin)(realmax)

•  Dois números podem ser tão próximos que a suarepresentaçãoéigual(faltadeprecisão(eps)).§  Precisãosimples: cercade7casasdecimais

§  Precisãodupla: cercade15casasdecimais

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 60

Page 61: Informáca para as Ciências e Engenharias Versão : C ...icec.ssdi.di.fct.unl.pt/1617/teoricas/T02/icec_t02.pdf · 13 Março 2017 ICE-c Aula 2: Resolução de Problemas; Funções

Matlab–Errosnuméricos

•  Em geral, os erros numéricos devem-se à forma como osnúmerossãorepresentados.Háproblemascom:§  númerosmuitograndes(emvalorabsoluto);

§  a falta de precisão (que se verifica na representação quer deracionaisquerdeirracionais).

•  Em Matlab, os números inteiros são representados comonúmerosreais.

13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 61