View
3
Download
0
Category
Preview:
Citation preview
Informática para as Ciências e EngenhariasVersão : C
(Engenharia Civil)
Pedro Barahona
2017 / 18
Sumário
• Resolução de problemas§ Metodologia e níveis de abstração.
§ Funções.
§ Testes unitários.
• Ficheiros com código fonte. Ciclo de vida de um programa.• Tipos de erros. Representação de números em binário.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 2
Metodologia de Resolução de Problemas
• Compreender totalmente o problema.§ Caracterizar o problema.§ Generalizar o problema (sempre que for possível).
• Desenhar o algoritmo para resolver o problema.1. Decompor o problema em sub-problemas.2. Identificar, caracterizar e generalizar cada sub-problema.3. Conceber o algoritmo, assumindo que os sub-problemas estão resolvidos.
• Para cada sub-problema, começando pelos mais simples1. Implementar o respetivo algoritmo; e2. Testar o “sub-programa” obtido.
• Para o problema inicial1. Implementar o algoritmo; e2. Testar o programa obtido.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 3
Problema da Vedação
• Na sequência de uma expropriação de terrenos, vai sercolocada uma vedação entre três estacas, cujas coordenadascartesianas são (x1,y1), (x2,y2) e (x3,y3).
• Pretende-se calcular o comprimento da vedação.
(x1,y1)
(x3,y3)
(x2,y2)
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 4
Resolução – Problema [1]
1. Compreender totalmente o problema descrito noenunciado.
• Não ficar com dúvidas sobre:§ a informação que se recebe (os dados de entrada);
§ a informação que se produz (os resultados, a saída).
• Devemos saber resolver o problema “à mão”.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 5
Resolução – Problema [2]
2. Caracterizar o problema.
• Problema: Comprimento de uma vedação.• Entrada: estaca (x1,y1), estaca (x2,y2), estaca (x3,y3).• Saída: o comprimento da vedação delimitada pelas estacas
(x1,y1), (x2,y2) e (x3,y3).
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 6
Resolução – Problema [3]
3. Generalizar o problema (sempre que for possível).
• Problema: Perímetro de um triângulo.• Entrada: vértice (x1,y1), vértice (x2,y2), vértice (x3,y3).• Saída: o perímetro do triângulo definido pelos vértices
(x1,y1), (x2,y2) e (x3,y3).
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 7
Resolução – Algoritmo [1]
4. Desenhar o algoritmo para resolver o problema.a) Conceber o algoritmo, decompondo o problema em sub-
problemas.
§ Como calcular o perímetro de um triângulo?
§ Somam-se os comprimentos dos três lados do triângulo.« Necessário obter o comprimento de cada lado
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 8
Resolução – Algoritmo [2]
b) Identificar, caracterizar e generalizar cada sub-problema.
• Sub-problema: Comprimento de um segmento de reta.• Entrada: ponto (x,y), ponto (x’,y’).• Saída: o comprimento do segmento de reta definido pelos
pontos (x,y) e (x’,y’).
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 9
Resolução – Algoritmo [3]
c) Conceber o algoritmo, assumindo que os sub-problemas
estão resolvidos.
Perímetro triângulo (x1,y1), (x2,y2), (x3,y3) :comprimento segmento (x1,y1) (x2,y2) +
comprimento segmento (x2,y2) (x3,y3) +
comprimento segmento (x3,y3) (x1,y1)
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 10
Resolução – Algoritmo [4]
5. Para cada sub-problema, desenhar o algoritmo para o
resolver.
a) Conceber o algoritmo, decompondo o problema em sub-
problemas.
b) Identificar, caracterizar e generalizar cada sub-problema.
c) Conceber o algoritmo, assumindo que os sub-problemas estão
resolvidos.
§ Como calcular o comprimento do segmento (x,y) (x’,y’)?
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 11
(" − "$)&+(( − ($)&
Resolução – Programa
6. Para cada sub-problema (começando pelos mais simples),implementar o respetivo algoritmo e testar o “sub-programa”.
7. Implementar o algoritmo que resolve o problema e testar oprograma pedido.
Em ICE, o “sub-programa” e o programa são implementadoscomo funções.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 12
Sumário
• Resolução de problemas§ Metodologia e níveis de abstração.
§ Funções.
« Matemática
« Matlab
§ Testes Unitários.
• Ficheiros com código fonte. Ciclo de vida de um programa.• Tipos de erros. Representação de números em binário.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 13
Matemática – Definição de funções
• Sintaxe da definição:nomeFunção( parâmetros ) = expressão
com os parâmetros separados por vírgulas.
• Exemplos:§ f(x) = x2
§ g(x) = |x|
§ h(x,y) = max(f(x), g(y))
• Há problemas por x ser um parâmetro de f, de g e de h?§ Não, porque os contextos são diferentes.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 14
Matemática – Chamada de funções
• Sintaxe da aplicação (ou chamada):nomeFunção( argumentos)
com os argumentos separados por vírgulas.
• Exemplo:Sendo f(x) = x2 ; g(x) = |x|; h(x,y) = max(f(x),g(y))
temos, por exemplo§ f(3) (que vale 9)
§ h(4,-11) (que vale 16)
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 15
Matlab – Definição de funções [1]
• Sintaxe da definição:
com os parâmetros separados por vírgulas;
• nomeResultado é uma variável cujo valor no fim da execução dasinstruções é o resultado da função.
• À primeira linha da definição (que começa por function) chama-se aassinatura da função.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 16
function nomeResultado = nomeFunção(parâmetros) instruções
end
Matlab – Definição de funções [2]
Exemplo:
• Implementação de f(x) = x2 (1ª versão):
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 17
function res = f(x) res = x^2
end
function nomeResultado = nomeFunção(parâmetros) instruções
end
REGRA DE PROGRAMAÇÃO
• Todos os identificadores (nomes) devem ser escolhidos deforma a indicar o seu significado.§ O nome de uma variável diz o que é guardado nessa posição de
memória.
§ O nome de uma função diz o que a função calcula.
§ O nome de um parâmetro diz o que o parâmetro vai receber.
Nota: Nenhum nome pode ter acentos ou cedilhas.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 18
Matlab – Definição de funções [3]
• Implementação de f(x) = x2 (1ª versão):
• Problemas?§ Neste caso (em que a função “vem” da Matemática), o
identificador x do parâmetro é muito natural.
§ O identificador f da função não dá qualquer informação.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 19
function res = f(x) res = x^2
end
Matlab – Definição de funções [4]
• Implementação de f(x) = x2 (1ª versão):
• Implementação de f(x) = x2 (2ª versão):
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 20
function res = f(x) res = x^2
end
function res = quadrado(x) res = x^2
end
REGRA DE PROGRAMAÇÃO
• Todas as funções devem ser documentadas, indicando-se asintaxe da chamada, o que a função calcula e o que são osseus parâmetros.
• Isto é feito escrevendo um comentário antes ou depois daassinatura da função.
• Em Matlab, o comando help nomeFunção escreve essecomentário.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 21
Matlab – Definição de funções [5]
• Implementação de f(x) = x2 (3ª versão):
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 22
function res = quadrado(x)% res = quadrado(x)% Calcula o quadrado do numero x
res = x^2end
>> help quadrado'quadrado' is a function from the file ...res = quadrado(x) Calcula o quadrado do numero xAdditional help for ...>>
Matlab – M-files
• O código de uma função tem de ser guardado num ficheirocom o nome nomeFunção.m
• Conteúdo do ficheiro quadrado.m:
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 23
function res = quadrado(x)% res = quadrado(x)% Calcula o quadrado do numero x
res = x^2end
Ficheiro quadrado.m
Matlab – Chamada de funções [1]
• Sintaxe da chamada:nomeFunção( argumentos )
com os argumentos separados por vírgulas.
• Execução da 1ª chamada:1. Avalia-se o valor da expressão usada como argumento (que é -3).
2. Executa-se o código da função, usando como valor do parâmetroo valor do argumento respetivo.
3. O valor da chamada é o valor que no fim da execução está nonome do resultado (res neste caso)
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 24
Matlab – Chamada de funções [1]
• Execução da 1ª chamada:1. Avalia-se o valor da expressão usada como argumento (que é -3).
2. Executa-se o código da função, usando como valor do parâmetroo valor do argumento respetivo.
3. O valor da chamada é o valor que no fim da execução está nonome do resultado (res neste caso)
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 25
>> quadrado(-1*3)res = 9ans = 9>> x = quadrado(-5) - 1res = 25x = 24>>
function res = quadrado(x)% res = quadrado(x)% Calcula ...
res = x^2end
Problema da Vedação – Passo 6 [1]
• Comprimento do segmento (x,y) (x’,y’)
• Implementação da função:
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 26
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
(" − "$)&+(( − ($)&
REGRA DE PROGRAMAÇÃO
• Cada linha de código tem de ser muito fácil de entender.§ A indentação (o número de espaços em branco no início da linha) é
fundamental para identificar os blocos de instruções.
§ A linha deve ser curta (80 caracteres, no máximo, contando com osespaços em branco do início).
§ As expressões complicadas devem ser simplificadas, usandovariáveis (auxiliares).
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 27
Problema da Vedação – Passo 6 [2]
• Comprimento do segmento (x,y) (x’,y’)
• Implementação da função:
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 28
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
(" − "$)&+(( − ($)&
REGRA DE PROGRAMAÇÃO
• Testes Unitários:§ cada função deve ser testada isoladamente, antes de ser integrada
no programa completo.
• Representatividade:§ Os casos testados devem ser o mais variados possível: casos gerais,
casos particulares, casos degenerados, casos limite, ...
• Erros§ É essencial ler e tentar compreender as mensagens de erro.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 29
Problema da Vedação – Passo 6 [3]
• Na fase de teste, podem-se ver os valores intermédios:
• Casos de Teste:§ pontos diferentes
§ pontos iguais
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 30
>> c = comprSegmento(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
Problema da Vedação – Passo 6 [4]
• Na versão final, os valores intermédios são intrusivos:
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 31
>> 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
Problema da Vedação – Passo 7 [1]
Perímetro triângulo (x1,y1) (x2,y2) (x3,y3)
• Implementação da função:
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; 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).
...end
Problema da Vedação – Passo 7 [2]
Perímetro triângulo (x1,y1) (x2,y2) (x3,y3)
• Implementação final da função:
• Caso especial de teste: os três pontos são colineares.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 33
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áveis locais, parâmetros, variável resultado
• As variáveis criadas no corpo (dentro) de uma função sãodestruídas quando a execução do código da função termina.Chamam-se variáveis locais da função.
• Os valores dos parâmetros e a variável onde é guardado oresultado da função também deixam de existir quando aexecução da função termina.
• As variáveis criadas diretamente no interpretador nunca sãodestruídas – exceto se for executado o comando clear ouclear(nomeVariável).
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 34
Matlab – Variáveis locais
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; 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
>> lado1
??? Undefined function or variable ‘lado1’’.
Matlab – Parâmetros
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; 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
>> y3
??? Undefined function or variable ‘y3’’.
Matlab – Variável resultado
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 37
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ção de problemas§ Metodologia e níveis de abstração
§ Funções.
§ Testes Unitários.
• Ficheiros com código fonte. Ciclo de vida de um programa.• Tipos de erros. Representação de números em binário.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 38
Problema da Vedação – Programa [1]
• Ficheiro comprSegmento.m:
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 39
Ficheiro comprSegmento.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
Problema da Vedação – Programa [2]
• Ficheiro perimetroTriang.m:
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 40
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
Ficheiro perimetroTriang.m
Sumário
• Resolução de problemas§ Metodologia e níveis de abstração.
§ Funções.
§ Testes unitários.
• Ficheiros com código fonte. Ciclo de vida de um programa.• Tipos de erros. Representação de números em binário.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 41
Resolução de Problemas
Enunciado
Programa
Algoritmo
ProblemaPrograma
(guardado em ficheiros)
EdiçãoInterpretação
Execução
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 42
Ficheiro
• Do ponto de vista lógico, um ficheiro contém uma sequênciade bits, que pode representar um texto, números, uma
imagem, sons, etc.
• Um ficheiro é guardado no disco (para que a informação nãose perca quando o computador não está a funcionar) e é
acessível através de um identificador único (nome).
• Um ficheiro com código fonte é um ficheiro de texto comcódigo escrito pelo programador.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 43
Edição de um ficheiro com código fonte
Programador
quadrado.mFicheiro
fonte (original)
do programa
Editorde texto
% res = quadrado(x)% Calcula o quadrado do numero x.function res = quadrado( x )
res = x^2;end
Programa carregado a partir do disco
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 44
CPU
Edição do programa
Memória
Teclado Ecrã Disco
Interligação
Editor de textoExecução dasinstruções
quadrado.m
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 45
>> c = comprSegmento(1, 1 ,4, 5)c = 5>>
Execução do programa
CPU Memória
Teclado Ecrã Disco
Interligação
InterpretadorExecução dasinstruções
quadrado.m
comprSegmento.m
perimetroTriang.m
A azul o queé escrito pelointerpretador
A vermelho o que é escritopeloprogramador9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 46
Sumário
• Resolução de problemas§ Metodologia e níveis de abstração
§ Funções.
§ Testes Unitários.
• Ficheiros com código fonte. Ciclo de vida de um programa.• Tipos de erros. Representação de números em binário.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 47
Programa(guardado em ficheiros)
EdiçãoInterpretaçãoExecução
Erros nos programas
Erros!
sintáticos
de execuçã
o
lógicos
numéricos
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 48
Tipos de Erros [1]
• Erros sintáticos:§ quando expressões ou instruções não cumprem as regras sintáticas
da linguagem de programação.
§ São os erros mais fáceis de corrigir.
• Exemplos:§ 6 + * 2
§ total +1 = 9
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 49
Tipos de Erros [2]
• Erros de execução:§ quando a execução do programa não pode continuar por qualquer
motivo, mas nenhuma regra sintática foi violada.
• Exemplos:§ Avaliar uma variável que não existe.
§ Escrever o código de uma função num ficheiro cujo nome não é
“nomeFunção.m”.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 50
Tipos de Erros [3]
• Erros lógicos:§ quando a execução do programa termina com sucesso (ou seja,
sem ter havido erros sintáticos ou de execução), mas o resultado
não é o que se pretende devido a erros nos algoritmos.
• Exemplo:§ trocar os valores das variáveis x e y (que existem), com as duas
seguintes instruções:
x = yy = x
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 51
Qual é o erro?
Tipos de Erros [4]
• Erros numéricos:§ quando os resultados das operações aritméticas não são exatos e
os erros (pela falta de precisão) afetam a saída do programa.
• Exemplos:§ sqrt(2)^2 – 2 è 4.4409e-16§ sin(pi) è 1.2246e-16
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 52
Matlab – Erros numéricos
• Em geral, os erros numéricos devem-se à forma como osnúmeros são representados. Há problemas com:§ números muito grandes (em valor absoluto);
§ a falta de precisão (que se verifica na representação quer deracionais quer de irracionais).
• Em Matlab, os números inteiros são representados comonúmeros reais.
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 53
Elementos simples de armazenamento
• Guardam informação segundo uma lógica de dois valores oulógica binária, e.g.
§ Passa / não passa corrente elétrica
§ Reflete / não reflete a luz
• Com um elemento destes podemos armazenar um bit, que éum de dois valores diferentes.
• Com uma sequência de n bits, podemos armazenar um dequantos valores diferentes?
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 54
Representação de informação em binário [1]
• Quantos valores diferentes podem ser representados comuma sequência de n bits?
• 2 bits :
• 22 = 4 valores distintos
00011011
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 55
è 22
Representação de informação em binário [2]
• Quantos valores diferentes podem ser representados comuma sequência de n bits?
• 3 bits :
• 23 = 8 valores distintos
000001010011100101110111
è 23
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 56
Representação de informação
em binário [3]
• Quantos valores diferentes podem ser representados comuma sequência de n bits?
• n bits :
• 2n valores distintos
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 57
Potências de dois
10
21
42
83
164
325
646
1287
2568
5129
102410
204811
409612
819213
1638414
3276815
6553616
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 58
10100101 = 1* 20+ 1* 22+ 1* 25+ 1* 27= 165
165 = 5* 100+ 6* 101+ 1* 102= 165
Representação de informação em binário [4]
• 1 bit de informação – dois valores distintos• 1 byte de informação = 8 bits
28 = 256 valores distintos
• 2 bytes de informação = 16 bits
216 = 65.536 valores distintos
• 4 bytes de informação = 32 bits
232 = 4.294.967.296 valores distintos
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 59
60
Representação de inteiros
• Com n bits, podem-se representar 2n valores diferentes.• Se representarmos números inteiros sem sinal, os valores são:
de 0 a 2n – 1.
com 32 bits: de 0 a 4.294.967.295
• Se representarmos números inteiros com sinal, os valores são:de -2n-1 a 2n-1 - 1.
com 32 bits: de -2.147.483.648 a +2.147.483.647
(intmin) (intmax)
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 60
61
Operações aritméticas com umnúmero fixo de bits
• Se somarmos 2.147.483.647 (intmax) com 10 deveria dar2.147.483.657,
que não é representável com 32 bits (com sinal), porque é maiordo que intmax (2.147.483.647).
• O mesmo problema ocorre quando o resultado de uma operaçãofor menor do que -2.147.483.648 (intmin)
• A aritmética dos computadores reserva-nos algumas surpresas !
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 61
62
Representação de reais [1]
• Também é feita com um número fixo de bits:§ 32 bits precisão simples; 64 bits precisão dupla.
• O valor representado é (-1)S × F × 2E
S E F
32 ou 64 bits
1 bit parao sinal S
8 ou 11 bits parao expoente E
23 ou 52 bits paraa fração F
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 62
Representação de reais [2]
• Não se conseguem representar números muito grandes nemnúmeros muito pequenos (em valor absoluto).§ Precisão simples: +/- 1.18 x 10 -38 a +/- 3.4 x 10 +38
§ Precisão dupla: +/- 2.23 x 10 -308 a +/- 1.80 x 10 +308
(realmin) (realmax)
• Dois números podem ser tão próximos que a suarepresentação é igual (falta de precisão (eps)).§ Precisão simples: cerca de 7 casas decimais
§ Precisão dupla: cerca de 15 casas decimais
9 Março 2018 ICE-c Aula 2: Resolução de Problemas; Funções 63
Recommended