63
Informática para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2017 / 18

Informáticapara as Ciênciase Engenharias Versão: C …icec.ssdi.di.fct.unl.pt/1718/teoricas/T02/icec_t02.pdf · 2018. 3. 8. · 1. Compreender totalmente o problema descrito no

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

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