Informá(caparaasCiênciaseEngenhariasVersão:C
(EngenhariaCivil)
PedroBarahona
2016/17
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 ... >>
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
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
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
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
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
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
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
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
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
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
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
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
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’’.
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’’.
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’’.
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
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
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
Resolução de Problemas
Enunciado
Programa
Algoritmo
ProblemaPrograma
(guardadoemficheiros)
EdiçãoInterpretaçãoExecução
13Março2017 ICE-cAula2:ResoluçãodeProblemas;Funções 40
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
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
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
>> 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
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
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
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
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
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?
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
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
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
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
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
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
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
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
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
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
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
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