Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução a Ciência da Computação Ana Luiza Bessa Barros analuiza@larces.uece.br Sejam Bem-vindos ao Curso de Ciência da Computação da UECE Slides baseados na seguinte referência: Dale, Nell; Lewis, John. Ciência da Computação. Quarta Edição. LTC, 2011. Sistemas Computacionais Qual a diferença entre Computador e Sistema Computacional??? Sistema Computacional Entidade dinâmica, usada para resolver problemas e interagir com o seu ambiente Composta por : Hardware Software Dados Computador Dispositivo Coleção de elementos físicos que formam a máquina com suas respectivas partes Hardware Computacional Coleção de elementos físicos que formam a máquina com suas respectivas partes Hardware Computacional Coleção de programas que fornecem as instruções para um computador funcionar Software Computacional Sem dados, o hardware e o software são inúteis!!! Dados Informação Hardware Programação Sistemas Operacionais Aplicativos Comunicações Camadas de um Sistema Computacional Modo como a informação é representada Informação em um computador é gerenciada usando dígitos binários, 1 e 0 Para compreender o processamento computacional • Entender o sistema de numeração binária e sua relação com outros sistemas de numeração • Entender como representar em um formato binários a diversidade de tipos de informações que são gerenciadas – números, textos, imagens, áudio, vídeo Informação Hardware Programação Sistemas Operacionais Aplicativos Comunicações Camadas de um Sistema Computacional Parte física de um sistema computacional • Inclui dispositivos como portas e circuitos que controlam o fluxo de eletricidade • Esse núcleo de circuitos eletrônicos dá origem a componentes de hardware especializados, como a unidade central de processamento de um computador (CPU) e a memória Informação Hardware Programação Sistemas Operacionais Aplicativos Comunicações Camadas de um Sistema Computacional Lida com o software, as instruções usadas para realizar cálculos e gerenciar dados Programas podem assumir muitas formas, serem executados em vários níveis e implementados em muitas linguagens, mas o objetivo é sempre o mesmo: resolver problemas Informação Hardware Programação Sistemas Operacionais Aplicativos Comunicações Camadas de um Sistema Computacional Todo computador tem um sistema operacional Ajuda a gerenciar os recursos computacionais Ajuda a interagir com o sistema computacional e a gerenciar a forma pela qual dispositivos de hardware, programas e dados interagem entre si Ex: Windows, Linux, Mac OS Informação Hardware Programação Sistemas Operacionais Aplicativos Comunicações Camadas de um Sistema Computacional Objetivo: utilização do computador para solução de problemas específicos do mundo real Ex: projetar um edifício, jogar, editar uma música Informação Hardware Programação Sistemas Operacionais Aplicativos Comunicações Camadas de um Sistema Computacional Tecnologia computacional também é utilizada para comunicação Computadores são ligados em rede para que possam compartilhar informações e recursos Tudo isso é para dizer o que um computador pode fazer e como ele o faz No entanto, computadores têm limitações inerentes à capacidade deles em representar informação e eles são tão bons apenas quanto a programação deles os faz ser Abstração Um motor de carro e a abstração que nos permite usá-lo Abstração Modelo mental, uma maneira de pensar sobre alguma coisa, que remove ou esconde detalhes complexos Quando estamos lidando com um computador em uma camada, não precisamos ficar pensando sobre os detalhes das outras camadas História da Computação Uma Breve História do Hardware Computacional Computação Computador Computar Ato ou efeito de computar • Aquele que cômputos, que calcula • Máquina capaz de receber, armazenar e enviar dados, e de efetuar, sobre eles, operações aritméticas (como cálculos) e lógicas (como comparações), com o objetivo de resolver problemas • Fazer a contagem, o cômputo de, contar • Calcular • Confrontar, comparar • Contar História inicial A história do computador, ao contrário do que muitos podem imaginar, tem seu início há muito tempo atrás, desde quando o homem descobriu que somente com os dedos, ou com pedras e gravetos, não dava mais para fazer cálculos... Então foi criado, há aproximadamente 4.000 a.C., um aparelho muito simples formado por uma placa de argila onde se escreviam algarismos que auxiliavam nos cálculos. Esse aparelho era chamado de ÁBACO - palavra de origem Fenícia. 4.000 a.C. 5 50 500 5000 1 10 100 1000 Representação do número 27 27 = 20 + 7 Ábaco História inicial Ábaco - Soma 5 50 500 5000 1 10 100 1000 236 5 50 500 5000 1 10 100 1000 236 + 61 = 297 História inicial História inicial Geração Zero Os primeiros computadores (geração zero), apareceram no século XVII e eram compostos exclusivamente por elementos mecânicos Caracterizavam-se por uma grande rigidez no que diz respeito aos programas a executar Grande parte das máquinas era o que se chama hoje de máquinas dedicadas. História inicial Século XVII Blaise Pascal construiu e vendeu máquinas mecânicas movidas a engrenagens que realizavam adição e subtração de números globais Ano de 1642 um francês de 18 anos de nome Blaise Pascal, inventou a primeira máquina de somar: PASCALINA, a qual executava operações aritméticas quando se giravam os discos interligados, sendo assim a precursora das calculadoras mecânicas. Pascalina - 1642 História inicial Século XVII Gottfried Wilhelm von Leibniz construiu o primeiro dispositivo mecânico destinado a fazer as quatro operações com números globais: adição, subtração, multiplicação e divisão Ano de 1671 (Alemanha) Gottfried Leibniz inventou uma máquina muito parecida com a Pascalina, que efetuava cálculos de multiplicação e divisão, e qual se tornou a antecessora direta das calculadoras manuais. Calculadora de Leibniz - 1673 História inicial Século XVIII Joseph Jacquard desenvolveu o tear de Jacquard, usado para produzir tecidos • Usava uma série de cartões com furos para determinar o uso de fios coloridos específicos para definir o desenho que seria estampado no tecido • Não era um dispositivo de computação, mas foi o primeiro a fazer uso de uma importante forma de entrada: os cartões perfurados Ano de1802 (França) Joseph Marie Jacquard passou a utilizar Cartões Perfurados para controlar suas máquinas de tear e automatizá-las. Tear de Jacquard - 1804 O conjunto de cartões poderia ser alterado sem alterar a estrutura da máquina têxtil Foi um marco na programação História inicial Século XIX Início do século XIX (1822 – Inglaterra) desenvolvida pelo cientista Charles Babbage uma máquina diferencial que permitia cálculos como funções trigonométricas e logaritmicas, utilizando os cartões de Jacquard. Máquina Diferencial - 1822 Projetada para produzir tabelas matemáticas História inicial Século XIX Ano de 1834 Charles Babbage desenvolveu uma máquina analítica capaz de executar as quatro operações (somar, dividir, subtrair, multiplicar), armazenar dados em uma memória(de até 1.000 números de 50 dígitos) e imprimir resultados. Porém, sua máquina só pôde ser concluída anos após a sua morte, tornando-se a base para a estrutura dos computadores atuais, fazendo com que Charles Babbage fosse considerado como o "Pai do Computador". Máquina Analítica - 1834 História inicial Século XIX Charles Babbage projetou o mecanismo analítico • Projeto incluía importantes componentes dos computadores atuais • Primeiro a incluir uma memória (valores intermediários não precisavam ser fornecidos novamente) • Incluía entrada de números e de passos mecânicos, usando cartões perfurados semelhantes aos de Jacquard • Projeto muito complexo para ser construído com a tecnologia da época nunca foi implementado Ada Augusta, condessa de Lovelace • Se interessou pelo trabalho de Babbage • Ampliou as ideias do mecanismo analítico e corrigiu alguns erros • É tida como a primeira programadora • Conceito de laço • Linguagem de programação Ada História inicial Século XIX Ano de 1890 (época do censo dos EUA) Hermann Hollerith percebeu que só conseguiria terminar de apurar os dados do censo quando já seria o tempo de se efetuar novo censo (1900). Então aperfeiçoou os cartões perfurados (aqueles utilizados por Jacquard) e inventou máquinas para manipulá-los, conseguindo com isso obter os resultados em tempo recorde, isto é, 3 anos depois. Tabulador de Hollerith - 1890 Tabulava estatísticas com Cartões Perfurados História inicial Final do século XIX e início do século XX Ano de 1896 Hollerith fundou uma companhia chamada TMC - Tabulation Machine Company Ano de 1914 TMC associou-se com duas outras pequenas empresas, formando a Computing Tabulation Recording Company (CTRC) Ano de 1924 CTRC torna-se a tão conhecida IBM - Internacional Business Machine. História inicial Final do século XIX e início do século XX William Burroughs produziu e comercializou uma máquina mecânica de adição Herman Hollerith Desenvolveu o primeiro tabulador eletromecânico que lia informações a partir de um cartão perfurado Criou a IBM Século XX Em 1936, Alan Turing inventou a máquina de Turing, um modelo matemático abstrato, e estabeleceu a base para uma importante área da teoria da computação Desenvolvimento teórico que, em si mesmo, nada tinha a ver com hardware, mas que influenciou profundamente a área de ciência da computação Hollerith História inicial Na época da Segunda Guerra Mundial, vários computadores estavam sendo projetados e construídos... Mark I ENIAC EDVAC Concluído em 1950 UNIVAC I Entregue em 1951 Primeiro computador utilizado para prever o resultado de uma eleição presidencial Realizou o sonho de um dispositivo que poderia rapidamente manipular números ENIAC UNIVAC UNIVAC História inicial Ábaco UNIVAC I Após o UNIVAC I, em 1959, começou uma expansão sem fim do uso dos computadores A partir desse momento, a história é classificada em “gerações”, com base na tecnologia empregada em cada geração Muitos consideram os mecanismos desenvolvidos até aqui como sendo da “Geração Zero” Primeira Geração (1951-1959) Computadores usavam válvulas ou relés ou os dois Relés Elemento magnético Sua movimentação determinava um valor binário: ou 0 ou 1, ou ligado e desligado Mais confiáveis que as válvulas, mas muito mais lentos Um relé demora mais de um milésimo de segundo para fechar um circuito Válvulas Câmera de vácuo por onde os elétrons fluíam num filamento, Filamento: cerne das quebras (semelhante às lâmpadas de tungstênio) Geravam grande quantidade de calor Bem mais rápidas que os relés (até 1 milhão de vezes) O fluxo de elétrons na válvula, que podia ser cessado ou intensificado, fechava ou abria o circuito, determinando as posições “ligado e desligado” do sistema binário Ex: ENIAC (17.468 válvulas) Primeira Geração (1951-1959) As máquinas precisavam de: Sistemas de refrigeração de grande carga Manutenção frequente Salas muito grande, especialmente construídas Dispositivo de memória primária Cilindo magnético que girava sob uma cabeça de leitura/escrita Dispositivo de entrada Leitor de cartão (lia furos feitos em um cartão IBM) Dispositivo de saída Cartão perfurado ou impressora Dispositivo de armazenamento externo à memória (dispositivos auxiliares de armazenamento) Fita magnética (acesso sequencial) Vantagens das máquinas a relé sobre as máquinas de calcular mecânicas: • Maior velocidade de processamento • Possibilidade de funcionamento contínuo, apresentando poucos erros de cálculo e pequeno tempo de manutenção. Utilização de relés e válvulas eletrônicas para a realização de cálculos automaticamente Relé Válvula Primeira Geração (1951-1959) Ano de1945 John von Neumann delineia os elementos críticos de um sistema de computador. • Consultor do projeto ENIAC • Criou o conceito de “programa armazenado” • Criou o conceito de operações com número binário • Desenvolveu a lógica dos circuitos Os programas para os computadores da época eram feitos através de modificações nos circuitos • Trabalho de dias para um programa relativamente simples Primeira Geração (1951-1959) Arquitetura de Von Neumann Memória Controlador Aritmético Controlador Central Dispositivo de E/S Primeira Geração (1951-1959) Primeira Geração (1951-1959) Arquitetura de Von Neumann • O modelo inicial evoluiu para uma estrutura em barramento, que é a base dos computadores modernos • As memórias de dados e de programa são fundidas em uma memória única, e as comunicações entre elementos são efetuadas através de uma via comum de alta velocidade Primeira Geração (1951-1959) Arquitetura de Von Neumann Memória de dados Memória de Programas As válvulas representavam um grande avanço tecnológico, mas apresentavam os seguintes problemas: • Aquecimento demasiado provocando queima constante • Elevado consumo de energia • Eram relativamente lentas Válvula Primeira Geração (1951-1959) • Material semicondutor • Pode conduzir ou isolar energia • Pode ser usado como uma chave, assim como o relê ou a válvula, entre posições binárias • Bloqueiam eletricidade, ou a amplificam, dependendo da necessidade • Grande vantagem permite que os fluxos de elétrons da energia precisem percorrer distâncias bem pequenas no silício, sem a necessidade de filamentos frágeis e partes mecânicas Silício Segunda Geração (1959-1965) O transistor substituiu o relé juntamente com as válvulas Menor, mais confiável, mais rápido, mais durável e mais barato Transistores e outros componentes para o computador eram montados à mão sobre placas de circuito impresso Dispositivo de memória primária Feito a partir de núcleos magnéticos, minúsculos dispositivos, cada um capaz de armazenar um bit de informação Núcleos eram amarrados com fios para formar células Células eram reunidas em uma unidade de memória Dispositivo não se movimentava (como no cilindro), e era acessado eletronicamente a informação ficava disponível instantaneamente Dispositivo auxiliar de armazenamento Disco magnético Mais rápido que a fita, pois cada item de dado tem um endereço e pode ser acessado diretamente Segunda Geração (1959-1965) Ano de 1952 a Bell Laboratories inventou o Transistor que passoua ser um componente básico na construção de computadores e apresentava as seguintes vantagens: • Aquecimento mínimo • Pequeno consumo de energia • Mais confiável e veloz do que as válvulas Terceira Geração (1965-1971) Circuitos Integrados (CIs) – Microchip Peças sólidas de silício que continham os transistores, outros componentes e as conexões entre eles Muito menores, mais baratos, mais rápidos e mais confiáveis do que placas de circuito impresso Bob Noyce físico norte-americano criador do circuito integrado, através da manipulação de silício, permitindo a ligação de transistores e circuitos elétricos Terceira Geração (1965-1971) Waffle de Silício Terceira Geração (1965-1971) Corte do Silício Tamanho do Microchip Terceira Geração (1965-1971) Lei de Moore o número de circuitos que podem ser colocados em um único circuito integrado dobrou a cada ano pelo mesmo custo Transistores foram usados para construção de memórias (cada transistor representava um bit de informação) Os CIs permitiram que placas de memória fossem construídas com transistores Intrdução do terminal Dispositivo de E/S com um teclado e uma tela Teclado dá ao usuário acesso direto computador Tela fornece uma resposta imediata Terceira Geração (1965-1971) Utilização da tecnologia de Circuitos Integrados: • Permitiu a substituição de dezenas de transistores numa única peça de silício • Permitiu o surgimento de computadores de menores dimensões, mais rápidos e menos caros • O tempo passou a ser medido em nanossegundos (bilionésimos de segundos) Transitores, circuitos integrados e válvulas Quarta Geração (1971-?) Integração em larga escala Início dos anos 1970 muitos milhares de transistores em uma pastilha de silício Meados da década de 1970 microcomputador inteiro em uma pastilha Integração de Circuitos em Larga Escala Com o grande desenvolvimento da tecnologia de circuitos integrados, o número de transistores podendo ser integrados numa pastilha de silício atingiu a faixa dos milhares e, logo em seguida, dos milhões Surgiram os novos computadores: • Menores • Mais velozes • Mais poderosos que aqueles da geração anterior Quarta Geração (1971-?) Década de 80 criado o IC LSI - Integrated Circuit Large Scale Integration (Circuito Integrado com Larga Escala de Integração) • Foram desenvolvidas técnicas para se aumentar cada vez mais o número de componentes no mesmo circuito integrado • Alguns tipos de IC LSI incorporavam até 300.000 componentes em uma única pastilha. Lei de Moore foi modificada novamente “computadores vão duplicar a sua potência pelo mesmo preço ou reduzir o seu valor à metade para a mesma potência, a cada 18 meses” Quarta Geração (1971-?) Fim dos anos 1970 Computadores pessoais (PC – Personal Computer) 1981 PC da IBM Outras companhias fabricaram máquinas compatíveis (p.ex: Dell e Compaq) 1984 Apple introduziu o Macintosh Meados da década de 1980 workstations Dirigidas para negócio e não para uso pessoal Conectadas por cabos ou ligadas em rede Introdução da arquitetura RISC (reduced-instruction-set-computer) Computadores ainda são feitos com placas de circuitos não pode ser marcada o fim dessa geração IBM-PC Quarta Geração (1971-?) Ano de 1981 IBM resolve entrar no mercado de microcomputadores com o IBM-PC IBM-PC - 1981 MMX - Micro Doméstico - 1984 Início da era da Informática Pessoal Computação Paralela Final dos anos 1980 computadores com arquiteturas paralelas Conjunto interligado de unidades centrais de processamento Duas classes Todos os processadores compartilham a mesma unidade de memória Cada processador possui sua própria memória local e se comunica com os outros por meio de uma rede interna muito rápida Classes de máquinas paralelas SIMD (single instruction, multiple data stream) Parte do programa separa em vários pedaços e os pedaços podem ser executados simultaneamente em vários processadores individuais MIMD (multiple instruction, multiple data stream) Trabalha em diferentes partes de um programa simultaneamente Centenas ou milhares de processadores combinados em uma máquina Desafio para programação Repensar a forma de programar para tirar proveito do paralelismo Conectividade Anos 1980 O conceito de uma grande máquina com muitos usuários deu lugar a uma rede de máquinas menores interconcetadas, de modo que pudessem compartilhar recursos como impressoras, software e dados Ethernet (1973) Cabo coaxial barato para conectar as máquinas e um conjunto de protocolos para permitir que as máquinas se comunicassem 1979 DEC, Intel e Xerox se uniram para estabelecer Ethernet como um padrão 1989 Netware (Novell) Conexão de PCss a um servidor de arquivos LANs estações de trabalho ou computadores pessoais ligados em rede Internet descendente da Arpanet (iniciada no final dos anos 1960) Chavamento de pacotes (assim como a Arpanet e as LANs) Muitas redes diferentes em todo o mundo que se comunicam por meio de um protocolo comum, TCP/IP Uma Breve História do Software Computacional O hardware de um computador pode ser ligado, mas ele não fará nada até que seja direcionado a fazê-lo pelos programas que constituem o software do computador Primeira Geração (1951-1959) Primeiros programas escritos em linguagem de máquina (instruções usando 0s e 1s) Perfil do programador em linguagem de máquina Lembrar o que cada combinação de dígitos significava Ex: somar 00101101; subtrair 10100011; ler um número 01001101 Precisava ser muito bom com números e detalhes Matemáticos e engenheiros Uso de linguagem de máquina Grande consumo de tempo para programação Propensão a erros Primeira Geração (1951-1959) Foram desenvolvidas ferramentas para ajudar o processo de programação Linguagens de montagem (assembly) Códigos mnemônicos para representar cada instrução em linguagem de máquina ADD = 00101101; SUB = 10100011; READ = 01001101 Desenvolvimento de tradutores (assembly linguagem de máquina) Montadores Primeiros programadores de sistemas Linguagem de máquina Linguagem de montagem Segunda Geração (1959-1965) Hardware mais poderoso necessidade de ferramentas mais poderosas Linguagens de alto nível Instruções sentenças mais parecidas com o inglês FORTRAN (aplicações numéricas) COBOL (aplicações de negócios) Lisp (inteligência artificial e pesquisa) – não foi amplamente aceita Possibilidade de executar o mesmo programa em mais de um computador Cada linguagem de alto nível tem um programa tradutor associado a ela (compilador) Segunda Geração (1959-1965) Programadores de sistemas escreviam ferramentas como montadores e compiladores Programadores de aplicativos usavam as ferramentas para escrever programas de uso geral Os programas foram ficando cada vez mais isolados do hardware computacional Linguagem de máquina Linguagem de montagem Linguagem de alto nível Terceira Geração (1965-1971) Sistema Operacional Os recursos do computador são gerenciados por ele e não por um operador Determina qual o próximo programa a ser executado e quando Programas utilitários, como carregadorese ligadores passaram a ser gerenciados pelo SO Softwares de sistema SO, programas utilitários, montadores e compiladores Compartilhamento de tempo Muitos usuários diferentes, cada um em um terminal, se comunicando (entrada e saída) com um único computador, todos ao mesmo tempo Terceira Geração (1965-1971) Início da era do computador O usuário de computador e o programador eram a mesma pessoa Final da 1ª geração Programadores de sistemas Programadores de aplicativos o programador continuava sendo ainda o usuário 3ª geração Programadores de sistemas escreviam programas para outros usarem Usuários de computador que não eram programadores Terceira Geração (1965-1971) Um sistema computacional havia surgido (hardware, software e dados gerenciados por eles) Linguagem de máquina Linguagem de montagem Linguagem de alto nível Software de sistemas Pacotes de aplicativos • Apesar das camadas de linguagem continuarem aumentando, programdores continuaram usando algumas das camadas mais internas • Linguagem de montagem ou código de máquina possibilitam escrever segmentos de códigos que executam mais rapidamente e que ocupam menos quantidade de memória Quarta Geração (1971-1989) Anos 1970 programação estruturada Pascal, Modula-2, BASIC C, C++ Permitem inserir instruções em linguagem de montagem em um programa de alto nível Melhores e mais poderosos sistemas operacionais UNIX Se tornou padrão em ambientes universitários PC-DOS (para o PC da IBM) e MS-DOS (para PCs compatíveis) Padrões para computadores pessoais Macintosh Introduziu o conceito de mouse e de interface gráfica de apontar-e-clicar, mudando drasticamente a interação usuário-máquina Pacotes de softwares aplicativo Planilhas, processadores de texto e sistemas gerenciadores de bancos de dados Quinta Geração (1990-Até hoje) Projeto e programação orientados a objeto World Wide Web Microsoft Java Browser: Mosaic, Netscape, Internet Explorer, Mozilla Firefox Jogos para computador, programas educacionais e pacotes de software amigáveis Redes sociais Blogs: conteúdo gerado e editado por usuários Mais pessoas se tonaram usuárias de computador Produto da revolução nos últimos 55 anos uso de circuitos integrados, ou pastilhas, para executar ou regular tudo (sistema embutidos) • De torradeiras a carros, monitores de tratamento intensivo, satélites, ... A Camada de Informação Valores Binários e Sistemas de Numeração Notação Posicional Quantas unidades existem em 943? Quantas coisas reais o número 943 representa? 9 centenas + 4 dezenas + 3 unidades 900 unidades + 40 unidades + 3 unidades OU Notação Posicional Quantas unidades existem em 754? 700 unidades + 50 unidades + 4 unidades ? Depende da base do sistema de numeração No sistema decimal, ou de base 10, SIM! Notação Posicional Base de um sistema de numeração Especifica o número de dígitos usados no sistema (os dígitos sempre começam com 0 e continuam até o número anterior ao da base) Base 2: 0 e 1 Base 8: 0, 1, 2, 3, 4, 5, 6, 7 Base 10: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Notação Posicional Base também determina o que a posição dos dígitos significam Números são escritos em notação posicional 9 * 102 = 9 * 100 = 900 + 4 * 101 = 4 * 10 = 40 + 3 * 100 = 3 * 1 = 3 943 Notação Posicional Definição mais formal de Notação Posicional 943 = 9 * x2 + 4 * x1 + 3 * x0 O valor é representado como um polinômio na base do sistema de numeração Variável x = base do sistema de numeração A expansão em forma polinomial e a soma dos números expandidos converte o número para a base 10 Notação Posicional Exemplos de Sistemas de Numeração NÃO Posicionais • 1 unidade: Um traço vertical representava • 10 unidades: Um osso de calcanhar invertido • 100 unidades: Um laço • 1000 unidades: Uma flor de lótus • 10000 unidades: Um dedo dobrado • 100000 unidades: Um girino • 1000000 unidades: Uma figura ajoelhada, talvez representando um deus Apesar da ordem dos símbolos não ser a mesma, os três garotos estão escrevendo o mesmo número: 45 Notação Posicional Os sistemas de numeração nos permitem representar valores de várias formas, em várias bases Qual valor o número 943 representa na base 13? 9 * 132 = 9 * 169 = 1521 + 4 * 131 = 4 * 13 = 52 + 3 * 130 = 3 * 1 = 3 1576 Valor que 943 representa na base 13 Notação Posicional 943 na base 13 é igual a 1576 na base 10 Esses dois números têm valor equivalente Ambos representam a mesma quantidade Se uma sacola contiver 943 (na base 13) feijões e uma segunda sacola contiver 1576 (na base 10) feijões, então ambas as sacola conterão exatamente o mesmo número de feijões Questão: o número 943 pode representar um valor em uma base menor que a base 10? Por quê??? Binário, Octal e Hexadecimal O sistema de numeração binário (base 2) é particularmente importante em computação Sistemas de numeração que são potências de 2 também são úteis Base 8 (octal) Base 16 (hexadecimal) Binário, Octal e Hexadecimal Como são os dígitos em bases superiores a 10? Símbolos representam os dígitos que correspondem aos valores de 10 em diante Letras são usadas para representar dígitos 10 = A 11 = B 12 = C ... 16 dígitos na base 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Binário, Octal e Hexadecimal Representação na base 10 de valores octal, hexadecimal e binário Equivalente em decimal a 754 em octal (base 8) 7 * 82 = 7 * 64 = 448 + 5 * 81 = 5 * 8 = 40 + 4 * 80 = 4 * 1 = 4 492 Equivalente em decimal a ABC em hexadecimal (base 16) A * 162 = 10 * 256 = 2560 + B * 161 = 11 * 16 = 176 + C * 160 = 12 * 1 = 12 2748 754(8) = 492(10) ABC(16) = 2748(10) Binário, Octal e Hexadecimal Representação na base 10 de valores octal, hexadecimal e binário 1 * 26 = 1 * 64 = 64 + 0 * 25 = 0 * 32 = 0 + 1 * 24 = 1 * 16 = 16 + 0 * 23 = 0 * 8 = 0 + 1 * 22 = 1 * 4 = 4 + 1 * 21 = 1 * 2 = 2 + 0 * 20 = 0 * 1 = 0 86 Equivalente em decimal a 1010110 em binário (base 2) 1010110(2) = 86(10) Binário, Octal e Hexadecimal Curiosidade Para representar o valor da base na própria base são necessários dois dígitos O na posição mais à direita 1 na segunda posição 10 na base 10 = 10 8 na base 8 = 10 16 na base 16 = 10 Por quê??? Aritmética em Outras Bases É possível fazer operações aritméticas, como por exemplo soma, no sistema binário? Como é possível somar 1 + 1 em binário ? Aritmética em Outras Bases O que acontece ao somar dois números cuja soma é igual ou maior que o valor da base (p.ex: 1+9 no sistema decimal)??? Ideia básica de aritmetica em decimal: 0+1=1, 1+1=2, 2+1=3, ... O dígito mais à direita reverte para 0 Há um vai-um para a próxima posição à esquerda 1 + 9 = 10 na base 10 Aritmética em Outras Bases E na aritmética binária, como acontece??? 0+0=0 0+1=1 1+0=1 1+1=0 com um vai-um 11111 1001001 101110 11011 + Que tal conferir o resultado em decimal?Aritmética em Outras Bases E a subtração, como é realizada? Em decimal: 9-1=8, 8-1=7, ..., até que se tente subtrair um dígito maior de um dígito menor (p.ex: 0-1) Pedir emprestado 1 do dígito mais à esquerda do número do qual se está subtraindo (pega emprestado uma potência da base) • Na base 10 pegar emprestado = pegar 10 • Na base 2 pegar emprestado = pegar 2 Aritmética em Outras Bases 111001 110 - Que tal conferir o resultado em decimal? 022 110011 1 111101 110 - 110111 02 02 Convertendo da Base 10 a Outras Bases ENQUANTO ( o quociente não for zero) Divida o número decimal pela nova base Faça o resto ser o próximo dígito à esquerda na resposta Substitua o número decimal pelo quociente Algoritmo* para converter da base 10 para outra base * Sequência lógica de passos que soluciona um problema Convertendo da Base 10 a Outras Bases 2748(10) = ?(16) 171 16 1 11 10 quociente resto 10 16 10 0 quociente resto Próximo dígito à esqueda Próximo dígito à esqueda Primeiro dígito à direita 2748 16 114 112 28 16 12 quociente resto 171 = C = B = A Sistemas de Numeração em Potência de 2 Binário Octal Decimal Hexadecimal 0 0 0 0 1 1 1 1 10 2 2 2 11 3 3 3 100 4 4 4 101 5 5 5 110 6 6 6 111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 10 10 Sistemas de Numeração em Potência de 2 Qual o valor de 1010110 em octal? 1 2 6 1 010 110 Qual o valor na base 10 de 126 em octal? 1 * 82 = 1 * 64 = 64 + 2 * 81 = 2 * 8 = 16 + 6 * 80 = 6 * 1 = 6 86 Esse valor equivale ao valor de 1010110 em decimal? Sistemas de Numeração em Potência de 2 Números binários e octais compartilham uma relação muito especial: Dado um número binário, ele pode ser lido diretamente em octal e Dado um número em octal, ele pode ser lido diretamente em binário Por quê??? 8 é potência de 2!!! Sistemas de Numeração em Potência de 2 E qual é a relação entre as bases binária e hexadecimal? Qual o valor, em haxadecimal, do número binário 1010110? 101 0110 5 6 5 * 161 = 5 * 16 = 80 + 6 * 160 = 6 * 1 = 6 86 Existe uma relação entre binário e hexadecimal similar à relação entre binário e octal 16 também é potência de 2! Sistemas de Numeração em Potência de 2 Qual o valor de ABC(16) em binário? A B C 1010 1011 1100 Qual o valor de 101010111100(2) em octal? Qual o valor de ABC(16) em decimal? 2748 101 010 111 100 5 2 7 4 ABC(16) = 101010111100(2) = 5274(8) = 2748(10) Valores Binários e Computadores Os primeiros computadores eram máquinas decimais Os computadores modernos são máquinas binárias • Números no computador são representados em forma binária Toda informação é, de alguma forma, representada usando valores binários Por que binário??? Cada localização de armazenamento dentro de um computador contém ou um sinal de baixa voltagem ou um sinal de alta voltagem Baixa voltagem = 0 Alta voltagem = 1 Valores Binários e Computadores Cada unidade de armazenamento = dígito binário ou bit Bits são agrupados em bytes (8 bits) e bytes são agrupados em palavras Número de bits em uma palavra = Comprimento da palavra do computador Computadores modernos são frequentemente máquinas de 32 bits ou de 64 bits Microprocessadores usados em aparelhos pequenos são máquinas de 8 bits Representação de Dados Dados e Computadores Dados Valores básicos ou fatos Informação Dado que foi organizado e/ou processado de modo que ele seja útil na solução de algum tipo de problema Dados x Informação Dados e Computadores Computadores armazenam, apresentam e nos ajudam a modificar diferentes tipos de dados: • Números • Texto • Áudio • Imagens e gráficos • Vídeo Todos esses dados são armazenados como dígitos binários! Dados e Computadores Compressão de Dados Necessidades: • Armazenamento • Transmissão Redução da quantidade de espaço necessário para armazenar um fragmento de dados Dados e Computadores Razão de compressão tamanho dos dados comprimidos dividido pelo tamanho dos dados originais • Indica quanta compressão é obtida • Número entre 0 e 1 Tipos de Compressão • Sem perda Os dados podem ser recuperados sem perder qualquer informação original • Com perda Alguma informação é perdida no processo de compatação Em alguns casos, essa perda é aceitável Dados e Computadores Mundo natural, em sua maior parte contínuo e infinito Computadores, ao contrário, são finitos Como representar um mundo infinito em uma máquina finita??? Objetivo representar parte suficiente do mundo para satisfazer nossas necessidades computacionais e nossos sentidos de visão e audição Dados e Computadores Dados analógicos representação contínua análoga à informação real que ela representa Dados Analógicos e Digitais Dados digitais representação discreta que desmembra a informação em elementos distintos Dados e Computadores Por que usamos o sistema binário? Computadores modernos são projetados para usar e gerenciar valores binários porque os dispositivos que armazenam e gerenciam os dados são bem mais baratos e bem mais confiáveis se eles tiverem que representar apenas um de dois valores possíveis Dados e Computadores Sinal Analógico e Sinal Digital Sinal Analógico flutua continuamente para cima e para baixo em termo de voltagem Sinal Digital possui apenas um estado alto ou um estado baixo, correspondendo aos dois dígitos binários Dados e Computadores Dados Analógicos e Digitais • Dados analógicos: São diretamente proporcionais ao mundo infinito e contínuo que nos cerca Computadores não conseguem trabalhar bem com dados analógicos Digitalizamos dados desmembrando-os em pedaços (elementos discretos) e representando esses pedaços separadamente usando dígitos binários Dados e Computadores Dados Analógicos e Digitais Todo sinal eletrônico (analógico ou digital) degrada ao percorrer uma linha A voltagem do sinal flutua devido a efeitos ambientais Sinais Degradados Dados e Computadores Dados Analógicos e Digitais Sinal Analógico Assim que um sinal analógico degrada, a informação é perdida Como qualquer nível de voltagem dentro da faixa é válido, é impossível saber qual era o estado original do sinal ou mesmo que ele foi realmente alterado Dados e Computadores Dados Analógicos e Digitais Sinal Digital Salta abruptamente entre dois extremos Um sinal digital pode ficar consideravelmente degradado antes que qualquer informação seja perdida, porque qualquer valor de voltagem acima de certo limite é considerado um valor alto e qualquer valor abaixo desse limite é considerado um valor baixo Periodicamente, um sinal é restaurado para recuperar sua forma original Desde que ele seja restaurado antes que muita degradação ocorra, nenhuma informação será perdida Dados e Computadores Representações Binárias Quantas coisas podem ser representadas por um número binário? Depende da quantidade de bits n bits podem representar 2n coisas 2n combinações de 0 e 1 podem ser feitas com n bits Toda vez que incrementamos o número de bits em 1, dobramos o número de coisas que podem ser representadas Dados e Computadores Representações Binárias Combinações de bits Representando Dados NuméricosValores numéricos tipos de dados predominantes usados em um sistema computacional • Valores Inteiros • Valores Negativos • Valores Não Inteiros Representando Dados Numéricos Representando Valores Negativos Três Formas: • Representação Sinal-Magnitude • Números de Tamanho Fixo • Complemento a Dois Representando Dados Numéricos Representando Valores Negativos Representação Sinal-Magnitude Uso dos sinais (+ ou -) antes do valor de um número Sinal representa a posição relativa Dígitos representam a magnitude do número Representando Dados Numéricos Representando Valores Negativos Representação Sinal-Magnitude Adições e subtrações com números inteiros com sinal Deslocar certo número de unidades em uma direção ou em outra = Há duas representações para zero zero mais e zero menos Problema com essa representação Representando Dados Numéricos Representando Valores Negativos Números de Tamanho Fixo Possível representar números com valores apenas inteiros, onde metade deles representa números negativos Sinal representado pela magnitude do número Representando Dados Numéricos Representando Valores Negativos Números de Tamanho Fixo Como efetuar soma nesse esquema? Adiciona os números juntos e descarta o “vai-um” Representando Dados Numéricos Representando Valores Negativos Números de Tamanho Fixo Chave propriedade entre adição e subtração: A – B = A + (-B) É possível subtrair um número de outro somando o negativo do segundo ao primeiro -5 3 - -8 95 3 - 95 92 +97 Sinal- Magnitude Novo Esquema Somando Negativo Representando Dados Numéricos Representando Valores Negativos Números de Tamanho Fixo Fórmula para calcular a representação negativa Negativo (I) = 10k – I onde k é o número de dígitos -(3) = 102 – 3 = 97 -(3) = 103 – 3 = 997 representação de dois dígitos representação de três dígitos Essa representação de números negativos complemento a dez Representando Dados Numéricos Representando Valores Negativos Em certos casos, a estratégia de complemento é realmente mais fácil quando de trata de cálculos eletrônicos Como o armazenamento em computadores modernos é feito em binário, é usado o equivalente binário do complemento a dez complemento a dois Números de Tamanho Fixo Representando Dados Numéricos Representando Valores Negativos Complemento a Dois A fórmula para complemento a dez funcionaria com o 10 substituído por 2? É possível calcular a representação binária negativa de um número usando a fórmula Negativo (I) = 2k – I ??? Representando Dados Numéricos Representando Valores Negativos Complemento a Dois Representando Dados Numéricos Representando Valores Negativos Complemento a Dois -(2) = 28 – 2 = 128 – 2 = -126 126(10) = 176(8) = 1111110(2) 7 dígitos E o 8º dígito? Indica o sinal • 0 no bit mais à esquerda = número positivo • 1 no bit mais à esquerda = número negativo (-2) = 11111110 Representando Dados Numéricos Representando Valores Negativos Modo mais fácil de calcular Complemento a Dois Inverter os bits e somar 1 • Pega o valor positivo • Altera todos os bits 1 para 0 e todos os bits 0 para 1 • Soma 1 +2 = 00000010 inverter 11111101 somar 1 00000001 -2 = 11111110 Representando Dados Numéricos Representando Valores Negativos Adição e subtração são realizadas da mesma forma que na aritmética de complemento a dez -127 = 10000001 +1 00000001 -126 = 10000010 Com essa representação, o bit mais à esquerda em um número negativo é sempre 1 Conteúdo da memória Sem sinal Sinal- magnitude Complemento de dois 0000 0 0 +0 0001 1 1 +1 0010 2 2 +2 0011 3 3 +3 0100 4 4 +4 0101 5 5 +5 0110 6 6 +6 0111 7 7 +7 1000 8 -0 -8 1001 9 -1 -7 1010 10 -2 -6 1011 11 -3 -5 1100 12 -4 -4 1101 13 -5 -3 1110 14 -6 -2 1111 15 -7 -1 Representando Dados Numéricos Representando Valores Negativos Transbordamento Numérico Transbordamento (overflow) ocorre quando o valor calculado não cabe no número de bits que são alocados para o resultado P.ex: Se são usados 8 bits para representar cada número, o que ocorrerá ao somar 127 e 3? 01111111 + 00000011 10000010 representa -126 em complemento a dois e não +130 Obs: se não estivessem sendo representados números negativos, o resultado estaria correto Representando Dados Numéricos Representando Valores Negativos Transbordamento Numérico Transbordamento é um exemplo clássico do tipo de problema encontrado ao mapear um mundo infinito em uma máquina finita Não importa quantos bits sejam alocados para um número, sempre existirá uma necessidade potencial de representar um número que não caiba no espaço reservado Representando Dados Numéricos Representando Números Reais Potências à direita do separador decimal são negativas Posições à direita do ponto decimal são a posição de: • Décimos (10-1 ou um décimo) • Centésimos (10-2 ou um centésimo) • . . . Representando Dados Numéricos Representando Números Reais Como acontece em binário? As mesmas regras se aplicam, mas o valor da base é 2 Posições à direita do separador fracionário são a posição de: • Metades (2-1 ou um meio) • Quartos (2-2 ou um quarto) • . . . Representando Dados Numéricos Representando Números Reais Qualquer valor real pode ser descrito por três propriedades: • Sinal (positivo ou negativo) • Mantissa – composta dos dígitos do valor com o separador fracionário assumido à direita • Expoente – determina como o separador fracionários é deslocado em relação à mantissa Representando Dados Numéricos Representando Números Reais Valor em base 10 sinal * mantissa * 10exp Representação de ponto flutuante O número de dígitos é fixado, mas o separador fracionário flutua Número no formato de ponto flutuante: • Expoente positivo: desloca o separador decimal para a direita • Expoente negativo: desloca o separador decimal para a esquerda Representando Dados Numéricos Representando Números Reais Como converter um número real em notação decimal usual para notação em ponto flutuante? 148,69 • Sinal positivo • Dois dígitos à direita do separador decimal expoente = -2 14869 * 10-2 Representando Dados Numéricos Representando Números Reais Como converter um número em formato ponto flutuante de volta para a notação decimal? • Expoente da base diz quantas posições mover o seprador fracionário Expoente negativo : move o separador fracionário para a esquerda Expoente positivo: move o separador fracionário para a direita Representando Dados Numéricos Representando Números Reais Houve perda de informação Ao armazenar apenas 5 dígitos para representar os dígitos significativos (a mantissa), a parte inteira do valor não é precisamente representada na notação em ponto flutuante Representando Dados Numéricos Representando Números Reais Valor binário em ponto flutuante sinal * mantissa * 2exp conterá apenas dígitos binários Para armazenar um número em ponto flutuante em um computador, podem ser guardados os três valores que o definem Representando Dados Numéricos Representando Números Reais Exemplo de armazenamento de um valor em ponto flutuante utilizando 64 bits • Sinal 1 bit • Expoente 11 bits • Mantissa: 52 bits Internamente, esse formato é levado em contasempre que o valor é usado em um cálculo ou é exibido Representando Dados Numéricos Representando Números Reais Como obter o valor correto para a mantissa se o valor não for um número inteiro? ou seja, Como números reais são representados em um computador? Representando Dados Numéricos Representando Números Reais A conversão da parte fracionária de um número é similar à conversão da parte inteira, mas multiplica-se pela nova base em vez de dividir. • Vai-um da multiplicação = próximo dígito à direita na resposta • Parte fracionária do resultado: multiplicada pela nova base • Processo continua até a parte fracionária do resultado ser zero Representando Dados Numéricos Representando Números Reais 0,75(10) = ?(2) 0,75 * 2 = 1,50 0,50 * 2 = 1,00 0,75(10) = 0,11(2) Representando Dados Numéricos Representando Números Reais 0,435(10) = ?(2) 0,435 * 2 = 0,870 0,870 * 2 = 1,740 0,740 * 2 = 1,480 0,480 * 2 = 0,960 0,960 * 2 = 1,920 0,920 * 2 = 1,840 . . . 0,435(10) = 0,011011...(2) Representando Dados Numéricos Representando Números Reais 20,25(10) = ?(2) 20 2 20 0 10 10 2 10 0 5 5 2 4 1 2 2 2 2 0 1 1 2 0 1 0 20(10) = 10100(2) 0,25 * 2 = 0,50 0,50 * 2 = 1,00 0,25(10) = 0,01(2) 20,25(10) = 10100,01(2) Representando Dados Numéricos Representando Números Reais Notação Científica Forma de representação em ponto flutuante na qual o separador decimal é mantido à direita do dígito mais à esquerda do número Como nas primeiras máquinas os expoentes não podiam ser impressos, um “E” era usado em seu lugar 12001,32708 = 1,200132708E+4 Representando Texto Questão central representação de caracteres Representar texto Processar palavras Documento = carateres + informação extra que é aramzenada junto com o restante do texto fontes, margens, tabulações, cores, ... Representando Texto Existe uma quantidade finita de caracteres a representar Abordagem geral para representar caracteres listar todos eles e atribuir a cada caractere um código binário Quais caracteres devem ser representados? • Língua portuguesa = 26 letras • Separando maiúsculas e minúscula = 52 letras • Símbolos de pontuação • Valores numéricos (algarismos „0‟, „1‟ até „9‟) • Caractere de espaço O número de coisas distintas a serem representadas determina quantos bits são necessários para representar cada um deles Representando Texto Conjunto de caracteres Lista de caracteres e dos códigos usados para representar cada um deles Vários conjuntos de caracteres têm sido usados ao longo dos anos, mas poucos predominaram Estudaremos dois conjuntos: • ASCII • Unicode Representando Texto Conjunto de caracteres ASCII ASCII = American Standard Code for Information Inicialmente usava 7 bits para representar cada caractere • Oitavo bit de cada caractere = bit de verificação Extensão Latina 1 do conjunto ASCII 8 bits • Inclui letras com acentos e vários outros símbolos especiais Representando Texto Conjunto de caracteres ASCII Representando Texto Conjunto de caracteres Unicode Os 256 caracteres versão estendida do código ASCII são suficientes para o inglês, mas não são suficientes para uso internacional Unicode tem uma influência muito mais forte internacionalmente • Objetivo: representar todo caractere em toda linguagem usada no mundo inteiro, incluindo todos os ideogramas da Ásia • Também representa muitos caracteres de propósito especial, tais como símbolos científicos Representando Texto Conjunto de caracteres Unicode É usado por muitas linguagens de programação e sistemas computacionais atualmente Uma codificação comumente empregada usa 16 bits por caractere e tem ASCII como subconjunto. No entanto, o próprio conjunto de caracteres ainda está em evolução • Os primeiros 256 caracteres correspondem exatamente ao conjunto de caracteres ASCII estendido (compatibilidade com programas que assumam valores ASCII) Representando Texto Conjunto de caracteres Unicode Representando Texto Compressão de Texto Armazenamento e transmissão de textos de forma eficiente Três tipos de compressão de texto: • Codificação por palavra-chave • Codificação por Comprimento de Sequência • Codificação de Huffman Representando Texto (compressão de texto) Codificação por Palavra-chave Palavras como “isto, “que”, “qual”, e “quais” são usadas frequentemente em um texto comum Se essas palavras ocupassem menos espaço (tivessem menos caracteres), o documento dimuniria de tamanho Codificação por Palavra-chave Objetivo: palavras frequentemente usadas são substituídas por um único caractere Representando Texto (compressão de texto) Palavra Símbolo como ^ que ~ têm + bem $ esse & todos % muitos # Representando Texto (compressão de texto) Codificação por Palavra-chave O corpo humano é composto por muitos sistemas independentes, tais como o sistema circulatório, o sistema respiratório e o sistema reprodutivo. Todos os sistemas têm que trabalhar não apenas independentemente, como também têm que interagir e cooperar. A saúde geral é uma função do bem-estar de sistemas separados, como também da forma como esses sistemas separados trabalham em conjunto. O corpo humano é composto por # sistemas independentes, tais ^ o sistema circulatório, o sistema respiratório e o sistema reprodutivo. Todos os sistemas + - trabalhar não apenas independentemente, ^ também + - interagir e cooperar. A saúde geral é uma função do $-estar de sistemas separados, ^ também da forma ^ & sistemas separados trabalham em conjunto. Parágrafo original Parágrafo codificado 386 caracteres, incluindo espaços e pontuação 355 caracteres, incluindo espaços e pontuação Razão de compressão = 355/386 = 0,92 Representando Texto (compressão de texto) Codificação por Palavra-chave Limitações Os caracteres usados para codificar as palavras-chave não podem fazer parte do texto original • Isso limita o número de palavras que podem ser codificads e também a natureza do texto a ser codificado No exemplo, a palavra “Todos” não é codificada pelo caractere „%‟ por que “Todos” e “todos” contêm letras diferentes • Versões maiúscula e minúscula da mesma letra são caracteres diferentes quando são armazenadas em um computador Representando Texto (compressão de texto) Codificação por Palavra-chave Limitações Não há vantagem em codificar palavras como “a” e “o” porque seria substituir um caractere por outro • Quanto maior a palavra, maior é a compressão obtida por palavra • Na prática, as palavras mais frequentemente usadas são curtas Alguns documentos usam certas palavras mais frequentemente que outros, dependendo do assunto Representando Texto (compressão de texto) Codificação por Palavra-chave (uma extensão) Substituir padrões de texto específicos por caracteres especiais • Os padrões codificados geralmente não são palavras completas, mas partes de palavras tais como sufixos e prefixos comuns – “ex”, “indo”, “ão”, etc Padrões sendo codificados geralmente aparecem mais frequentemente que palavras inteiras (uma vez que eles ocorrem em muitas diferentes palavras) Vantagem Os padrões são, em geral, curtos e, assim, a redução por substituição a cada palavra é pequena Desvantagem Representando Texto (compressão de texto) Codificação por Comprimento de Sequência Uma sequência de caracteres é substituída por umcaractere sinalizador, seguido pelo caractere que se repete e por um dígito que informa quantas vezes o caractere se repete AAAAAAA *A7 * = sinalizador nnnnnxxxxxxxxxccchhhhhh algum outro texto *k8eee *n5*x9ccc*h6 algum outro texto *k8eee 51 caracteres 35 caracteres razão de compressão = 35/51 0,68 Por que o “c” e o “e” não são codificados? Representando Texto (compressão de texto) Codificação de Huffman Usa cadeia de bits de comprimento variável para representar cada caractere Ideia básica usar poucos bits para representar caracteres que aparecem frequentemente e reservar cadeias de bits maiores para caracteres que não aparecem frequentemente Representando Texto (compressão de texto) Codificação de Huffman Código de Huffman Caractere 00 A 01 C 100 I 110 H 111 M 1010 N 1011 P Palavra CAMPAINHA Código de Huffman 0100111101100100101011000 Cadeias de bits de tamanho fixo (8 bits) 9 caracteres x 8 25 caracteres 72 caracteres razão de compressão = 25/72 0,35 Representando Texto (compressão de texto) Codificação de Huffman Como acontece o processo de decodificação? Quantos bits devem ser analisados para cada caractere? Nenhuma cadeia de bits usada para representar um caractere é o prefixo de qualquer outra cadeia de bits usada para representar um caractere Ao varrer uma cadeia de bits da esquerda para a direita, quando encontra-se uma cadeia de bits que corresponde a um caractere, essa cadeia tem que ser o caractere que ela representa. Ela não pode ser parte de uma cadeia de bits maior Representando Texto (compressão de texto) Codificação de Huffman 00101100101011000 APANHA Usando a tabela anterior Não há outra possibilidade! Representando Texto (compressão de texto) Codificação de Huffman Pontos fundamentais na criação de um conjunto particular de códigos de Huffman • Criação de uma tabela que liste a frequência dos caracteres que serão codificados Contagem de caracteres em um documento específico (352 E´s, 248 S´s etc) Contagem em uma amostra de texto de uma área em particular Ideia geral de quão frequentemente as letras aparecem em um idioma específico como o português • Construir uma estrutura a partir da qual os códigod binários podem ser lidos Garantir que os caracteres mais frequentemente usados obtenham as menores cadeias de bits Representando Áudio Quando o som é percebido? Como o som é definido na natureza? Quando uma série de compressões de ar vibra uma membrana no ouvido que envia sinais ao cérebro Pela onde de ar que interage com o tímpano Representando Áudio Como o som sai de um aparelho de som e chega até o ouvido? • O aparelho de som envia um sinal elétrico a um alto-falante para reproduzir som O sinal é uma representação analógica da onda de som) A voltagem do sinal varia em proporção direta à onda de som • O alto-falante recebe o sinal e faz vibrar uma membrana • A membrana vibra o ar (criando uma onda de som) • O ar vibra o tímpano A onda de som criada deverá, idealmente, ser idêntica àquela que foi capturada inicialmente ou, pelo menos, boa o bastante para agradar o ouvinte Representando Áudio Como representar dados de áudio em um computador? Digitalizar a onda de som, decompondo-a, de alguma forma, em partes discretas e tratáveis Pegar o sinal elétrico que representa a onda sonora e representá-lo como uma série de valores numéricos discretos Representando Áudio Digitalização do sinal de áudio • Um sinal analógico varia em voltagem continuamente • Para digitalizar o sinal, sua voltagem deve ser medida periodicamente Os valores numéricos correspondentes devem ser gravados Amostragem Em vez de um sinal contínuo, tem-se uma série de números que representam níveis distintos de voltagem Representando Áudio Digitalização do sinal de áudio Como o som em formato digital é reproduzido? Os valores de voltagem armazenados são usados para criar um novo sinal eletrônico contínuo Hipótese: os níveis de voltagem no sinal original variaram uniformemente entre um valor de voltagem armazenado e o próximo Hipótese razoável se forem pegas amostras suficientes em um curto período de tempo Representando Áudio Digitalização do sinal de áudio O processo de conversão (amostragem) pode causar perda de informação Taxa de amostragem suficiente para criar uma reprodução de som razoável 40.000 vezes por segundo • Taxa de amostragem muito menor: ouvido humano começa a ouvir distorções • Taxa de amostragem muito maior: produz um som de melhor qualidade, mas após certo ponto, dados extras serão irrelevantes, pois o ouvido humano não consegue perceber a diferença Representando Áudio Formatos de Áudio Formatos como WAV, AU, AIFF, VQF e MP3 • São baseados no armazenamento de valores de voltagens amostrados a partir de sinais analógicos • Reconhecem os detalhes dos dados de formas diferentes • Usam técnicas de compressão em graus variados MP3 oferece uma razão de compressão maior que outros formatos Representando Áudio O Formato de Áudio MP3 MP3 “arquivo de camada de áudio 3 MPEG-2” “Moving Picture Experts Group” – comitê internacional que desenvolve padrões para compressões digitais de áudio e vídeo Emprega tanto compressão com perda quanto sem perda • São descartadas informações que não podem ser ouvidas por humanos • O fluxo de bits é comprimido usando uma forma de codificação de Huffman, para obter uma compressão adicional Principais Passos Representando Imagens e Gráficos Representando Cor Cor Percepção que temos das várias frequências de luz que alcançam a retina dos nossos olhos Nossas retinas têm três tipos de células cones fotorreceptoras de cor que correspondem a diferentes conjuntos de freqûências Esquemas de Cores: RGB Modelo aditivo de cores relacionado a luz Percepção, representação, e apresentação de imagens em sistemas eletrônicos Ex: TV, Computador Dependente do dispositivo Representando Imagens e Gráficos combinação “aditiva” de todas as luzes coloridas primárias ausência de luz Branco Preto Esquemas de Cores: CMYK (K: key – black) Modelo subtrativo de cores Subtrai brilho do branco Mascara, parcialmente ou inteiramente, cores em um fundo mais claro, geralmente branco A cor reduz a luz que, caso contrário, seria refletida Usado em impressoras Representando Imagens e Gráficos cor natural do papel ou de outro fundo combinação completa das tintas coloridas Branco Preto Representando Imagens e Gráficos Representação de Cor no Computador • Representação de um valor RGB Três números indicam a contribuição relativa de cada uma das três cores primárias Se cada número na tripla for dado em uma escala de 0 a 255, então: 0 = nenhuma constribuição daquela cor 255 = constribuição total daquela cor Valor RGB de (255, 255, 0) Maximiza as contribuições de vermelho e de verde e minimiza a contribuição de azul, o que resulta em amarelo-claro Representando Imagens e Gráficos Representando Cor Profundidade de cor • Quantidade de dados usada para representar um cor • Geralmente expressa em termos do número de bits que usados para representar a cor HiColor Profundidade de cor de 16 bits • 5 bits para cada número em um valor RGB • O bit extra algumas vezes é usado para representar transparência TrueColor Profundidade decor de 24 bits • 8 bits para cada número em um valor RGB e o bit extra algumas vezes é usado para representar transparência • Faixa de 0 a 255 para cada número • Capacidade de representar mais de 16,7 milhões de cores distintas Representando Imagens e Gráficos Representando Cor Valor RGB Cor Vermelho Verde Azul 0 0 0 Preto 255 255 255 Branco 255 255 0 Amarelo 255 130 255 Rosa 146 81 0 Marrom 157 95 82 Roxo 140 0 0 Castanho Alguns valores RGB e as cores que eles representam Representando Imagens e Gráficos Representando Cor Os monitores que exibem cores estão restritos a uma profundidade de cor específica Em hardware antigo, no qual cores em um monitor estão restritas a, digamos, 256 cores, qualquer cor que seja especificada por um programa é mapeada na cor mais próxima da palheta de cores que o hardware seja capaz de exibir Uma palheta de cores restrita representada em tons de cinza Representando Imagens e Gráficos Gráficos e Imagens Digitalizadas Fotografia representação analógica de uma imagem contínua em toda sua superfície, com tonalidades de uma cor se misturando com outra Digitalizar uma imagem representá-la como uma coleção de pontos individuais chamados pixels elementos de imagem (picture elements) Representando Imagens e Gráficos Gráficos e Imagens Digitalizadas Cada pixel é composto de uma única cor Resolução número de pixels usados para representar uma figura Se uma quantidade suficiente de pixels for usada (alta resolução) e eles forem apresentados na ordem adequada lado a lado, o olho humano poderá ser levado a pensar que está vendo uma imagem contínua Representando Imagens e Gráficos Gráficos e Imagens Digitalizadas Imagem digitalizada composta de muitos pixels individuais ampliação Representando Imagens e Gráficos Gráficos e Imagens Digitalizadas Armazenamento de informação de imagem em uma base pixel a pixel formato gráfico de varredura (raster) Exemplos: bitmap (BMP), GIF e JPEG • Uma das mais diretas representações gráficas • Contém os valores de cor dos pixels da imagem, da esquerda para a direita e de cima para baixo • Suporta TrueColor de 24 bits (em alguns casos a profundidade de cor pode ser especificada para reduzir o tamanhp do arquivo) • Pode ser compactado usando codificação por comprimento de sequência Formato Bitmap Representando Imagens e Gráficos • Limita o número de cores disponível na imagem a 256 • Uma imagem GIF pode ser composta apenas por 256 cores, mas cada imagem pode ser composta por diferentes conjuntos de 256 cores cor indexada • Mais bem utilizado para gráficos e imagens com poucas cores • Considerados ideais para arte baseada em desenhos por linhas • Uma versão desse formato permite que pequenas animações sejam obtidas pelo armazenamento de uma série de imagens que um programa como uma navegador exibe em sucessão Formato GIF (Graphics Interchange Format) • Projetado para tirar proveito da natureza de nossos olhos • Seres humanos são mais sensíveis a mudanças graduais de brilho e de cor a distância do que em relação a mudanças rápidas • Dados armazenados = média das nuances de cores em curtas distâncias • Considerado superior para imagens coloridas • Um esquema de compressão razoavelmente complicado Formato JPEG Representando Imagens e Gráficos • Ideia aperfeiçoar e substituir o formato GIF • Imagens em PNG podem geralmente obter uma compressão maior que GIFs e ainda oferecer uma faixa mais ampla de profundidades de cores • Nâo permitem animação • Não são amplamente aceitas como GIFs Formato PNG (Portable Network Graphics) Representando Imagens e Gráficos Representação Vetorial de Gráficos Gráfico vetorial outra técnica para representar imagens • Descreve uma imagem em termos de linhas e formas geométricas (não atribui cores a pixels) • Série de comandos que descrevem direção, espessura e cor de uma linha • Tamanho do arquivo tende a ser pequeno, pois não se leva em consideração a informação para cada pixel • Determinado pela complexidade da imagem e o número de itens na imagem • Podem ser redimensionados matematicamente e as alterações podem ser calculadas dinamicamente • Não são bons para representar imagens do mundo real • São bons para arte baseada em desenhos por linhas e desenhos animados Representando Imagens e Gráficos Representação Vetorial de Gráficos Formato de gráfico vetorial mais popular usado na Web atualmente Flash Novo formato de gráfico vetorial SVG (Scalable Vector Graphics) Representando Vídeo Informação de vídeo um dos mais complexos tipos de informação para capturar, comprimir e ainda chegar a um resultado que faça sentido ao olho humano Videoclipes contêm o equivalente a muitas imagens fixas, cada uma tendo que ser compactada Representando Vídeo Codecs de Vídeo Compressor/DECompressor (codificador/decodificador) Codec de vídeo métodos usados para encolher o tamanho de um filme de modo que ele possa ser exibido em um computador ou pela rede • Quase todos usam compressão com perda • Objetivo: não perder informação que afete os sentidos do observador A Camada de Hardware Portas Lógicas e Circuitos Computadores e Eletricidade Qualquer sinal eletrônico tem um nível de voltagem O e 1 binários são distinguidos por meio do nível de voltagem de um sinal 0 a 2 volts (nível “baixo”) 0 binário 2 a 5 volts (nível “alto”) 1 binário Computadores e Eletricidade Porta dispositivo que executa uma operação elementar sobre sinais elétricos Aceita um ou mais sinais de entrada e produz um único sinal de saída Existem vários tipos de portas cada tipo executa uma função lógica específica Computadores e Eletricidade Circuitos combinação de portas com o objetivo de executar tarefas mais complexas Circuitos podem ser projetados, por exemplo, para efeutar operações aritméticas e para armazenar valores Em um circuito, o valor de saída de uma porta, frequentemente, serve como valor de entrada para uma ou mais outras portas Fluxo de eletricidade que passa por um circuito controlado pela lógica das portas que interagem Computadores e Eletricidade Três métodos são usados para descrever o comportamento de portas e circuitos Expressões booleanas Diagramas lógicos Tabelas-verdade Computadores e Eletricidade George Boole Criou uma forma de álgebra na qual variáveis e funções assumem apenas um de dois valores possíveis (0 e 1) Álgebra Booleana Permite definir e manipular lógica de circuitos usando uma notação matemática Computadores e Eletricidade Diagrama Lógico representação gráfica de um circuito • Cada tipo de porta é representado por um símbolo gráfico específico • É possível representar visualmente a lógica de um circuito inteiro através da conexão de tais símbolos em diversas formas Tabela-Verdade define a função de uma porta listando todas as combinações possíveis de entrada que a porta pode encontrar, juntamente com a saída correspondente Portas Cada Porta desempenha uma função lógica (por isso também chamadas de Portas Lógicas) Cada porta recebe um ou mais valores de entrada e produz um único valor na saída Seis tipos principais de portas: • NÃO • E • OU • OU EXCLUSIVO • NÃO-E • NÃO-OU Portas Porta NÃO Algumas vezes chamada de inversor, pois inverte o valor de entrada Variável A sinal de entrada (0 ou 1) Variável X sinal desaída (0 ou 1 – determinado pelo valor de A) Operador: „ ou Portas Porta E • Valores de entrada iguais saída = 1 • Valores de entrada diferentes saída = 0 Operador: . ou * Entrada dois valores Portas Porta OU • Valores de entrada iguais a 0 saída = 0 • Caso contrário saída = 1 Operador: + Entrada dois valores Portas Porta NÃO-E (NAND) Operador: não existe operador específico Oposto da porta E saída = saída da porta E passando por uma porta inversora (porta NÃO) Portas Porta NÃO-OU (NOR) Operador: não existe operador específico Oposto da porta OU saída = saída da porta OU passando por uma porta inversora (porta NÃO) Portas Portas com Mais Entradas Porta E com 3 entradas saída = 1 apenas se os três sinais de entrada forem 1 Porta OU com 3 entradas saída = 1 se pelo menos um sinal de entrada for 1 Construindo Portas Como uma porta é construída para controlar o fluxo de eletricidade? Uma porta usa um ou mais transistores para estabelecer como os sinais de entrada são mapeados em valores de saída Construindo Portas Transistor dispositivo que atua, dependendo do nível de voltagem do sinal de entrada, como: Um fio que conduz eletricidade ou Um resistor que bloqueia o fluxo de eletricidade Construindo Portas Transistor • Não possui parte móvel, mas atua como uma chave • É feito de material semicondutor • Não é um bom condutor de eletricidade (como o cobre) • Não é um bom isolante (como a borracha) • Normalmente se usa silício • Podem mudar de estado em poucos nanossegundos • A computação, como a conhecemos hoje, é devida, em grande parte, à invenção do transistor Construindo Portas portão fechado C B E • Coletor – coleta uma carga aplicada • Emissor – emite a carga que será coletada • Base – ativa a emissão (se a carga não for ativa, não vai haver emissão da carga coletada) Funciona como um portão Transistor portão aberto Construindo Portas Transistor (Diagrama) Construindo Portas O transistor estará ativado, produzindo um sinal de saída alto, ou desativado, produzindo um sinal de saída baixo determinada pelo sinal elétrico da base sinal da base alto sinal do coletor será aterrado transistor será desativado sinal da base baixo sinal do coletor se manterá alto transistor ficará ativado Construindo Portas Como o transistor é usado para criar vários tipos de portas? Construindo Portas Função NÃO (NOT, INVERSORA ou COMPLEMENTO) Construindo Portas Função E (AND) Construindo Portas Função OU (OR) Construindo Portas Função NE (NAND ou NÃO-E) Construindo Portas Função NOU (NOR ou NÃO-OU) Construindo Portas Função XOR (Exclusive-OR ou EXOR) Construindo Portas Função XNOR (Exclusive-OR ou EXOR) Circuitos Como combinar portas para formar circuitos? Duas categorias de circuitos: Os valores de entrada determinam explicitamente a saída A saída é uma função dos valores de entrada como também do estado atual do circuito Combinacional Sequencial Geralmente envolvem armazenamento de informação Circuitos Circuitos Combinacionais Portas são combinadas em circuitos usando a saída de uma porta como entrada de outra Circuitos Circuitos Combinacionais A B C D E X 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 Expressão Booleana: (AB + AC) AB AC AB+AC Circuitos Circuitos Combinacionais Qual o diagrama de circuito resultante da expressão booleana: A (B + C)? Circuitos Circuitos Combinacionais A B C B+C A(B+C) 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 Circuitos Circuitos Combinacionais A B C B+C A(B+C) 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 A B C AB AC AB+AC 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 Equivalência de Circuitos Propriedade distributiva da Álgebra Booleana: A(B+C) = AB + AC Circuitos Circuitos Combinacionais Circuitos Álgebra Booleana permite aplicar princípios matemáticos que podem ser provados para projetar circuitos lógicos Propriedade E OU Comutativa AB = BA A + B = B + A Associativa (AB)C = A(BC) (A + B) + C = A + (B + C) Distributiva A(B + C) = (AB) + (AC) A + (BC) = (A + B)(A+ C) Identidade A1 = A A + 0 = A Complemento A(A‟) = 0 A + (A‟) = 1 Lei de DeMorgan (AB)‟ = A‟ + B‟ (A + B)‟ = A‟B‟ Confiram a propriedade complemento usando o diagrama de portas! Circuitos Somadores Realizam operações de adição Circuito semissomador calcula a soma de dois bits e produz o bit correto de vai-um A B Soma Vai-um 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Qual a expressão booleana para o circuito semissomador? soma = A B vai-um = AB Perfeito para somar dois dígitos únicos! Circuitos Somadores Limitação do circuito semissomador não leva em conta o vem-um Não pode ser usado para calcular a soma de dois valores binários com múltiplos dígitos cada Circuito somador completo leva em conta os valores vem-um Circuitos Somador Completo A B Vem-um Soma Vai-um 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Qual a expressão booleana desse diagrama? Circuitos Multiplexadores (MUX) Circuito geral que gera um único sinal de saída, que é igual a um dos vários sinais de entrada do circuito Seleciona qual sinal de entrada deixa passar para a saída, com base nos valores de outros sinais de entrada sinais de seleção ou linhas de controle de seleção Circuitos Multiplexadores (MUX) S0 S1 S2 F 0 0 0 D0 0 0 1 D1 0 1 0 D2 0 1 1 D3 1 0 0 D4 1 0 1 D5 1 1 0 D6 1 1 1 D7 Pode ser mostrado usando 8 potas E de três entradas e 1 porta OU de 8 entradas Demultiplexador (demux) realiza a operação inversa S0 S1 S2 D0 D1 D2 D3 D4 D5 D6 D7 F Circuitos Integrados Circuito integrado (também chamado de pastilha) pedaço de silício no qual múltiplas portas foram embutidas Pedaços de silício são montados em invólucros de plástico ou de cerâmica com pinos ao longo das bordas que podem ser soldadas em placas de circuito ou inseridas em soquestes apropriados Cada pino se conecta a uma entrada ou saída de um porta, ou à fonte de alimentação ou à terra Circuitos Integrados CI São classificados em função do número de portas contidas nele Abreviação Nome Número de Portas SSI Integração em pequena escala 1 a 10 MSI Integração em média escala 10 a 100 LSI Integração em grande escala 100 a 100.000 VLSI Integração em escala muito grande Mais de 100.000 Circuitos Integrados Uma pastilha SSI tem umas poucas portas independentes 14 pinos = 8: para entradas de portas 4: saídas das portas 1: terra 1: alimentação Pastilhas similares podem ser feitas com portas diferentes Circuitos Integrados Como uma pastilha pode ter mais de 100.000 portas nela? Seriam necessários 300 pinos! As portas em uma pastilha VLSI não são independentes, como na SSI • Embutem circuitos com uma alta razão entre portas e pinos • Muitas portas são combinadas para criar circuitos complexos,
Compartilhar