BAC004:Presentation:ConceitosBasicos

March 28, 2018 | Author: Walter Aoiama Nagai | Category: Algorithms, World Wide Web, Technology, Random Access Memory, Personal Computers


Comments



Description

BAC004 - Informática Conceitos BásicosProf. Me. Walter Aoiama Nagai [email protected] Apresentação baseada em: REED, D. A Balanced Introduction to Computer Science. 2nd edition. Pearson Ed. 2008 O que é um computador? ‡ "Computadores são incrivelmente rápidos, precisos e estúpidos; seres humanos são incrivelmente lerdos, imprecisos e brilhantes; juntos eles são mais poderosos do que podemos imaginar" Albert Einstein ‡ Simplesmente um dispositivo que: o Recebe o Armazena o Processa informações Nomenclaturas ‡ Computador Desktop ‡ Supercomputador ‡ Laptops o Notebook o Netbook ‡ PDA - Personal Digital Assistant o Palmtop ~ Palm o Smartphones = PDA + Celular o Superphones ‡ Tablets Hardware (HW) e Software (SW) ‡ Informalmente: o Hardware = "material físico que se chuta"! o Software = "material (abstrato, invísivel) que se xinga"! ‡ Formalmente: o Hardware = componentes físicos do computador, como: teclado, mouse, monitor, disco rígido, etc. o Software = programas que executam no computador tarefas como processamento de textos, acessar Internet, etc. Arquitetura de Von Neumann Memória ‡ Armazena programas e dados em formato de dígitos binários, 0 ou 1; ‡ N dígitos binários permitem representar 2N valores o 1 bit - 2 valores - 0,1 o 2 bits - 4 valores - 00,01,10,11 ‡ Métricas de bits o byte = 8 bits o kylobyte (Kb) = 210 bytes o megabyte (Mb) = 220 bytes o gigabyte (Gb) = 230 bytes o terabyte (Tb) = 240 bytes Relação RAM e Cache ‡ A memória RAM e Cache formam a memória principal do computador ‡ Memória Cache o Construída internamente juntamente com o chip utilizando um barramento altamente veloz para prover acesso rápido aos dados o Quantidade de bytes (Kb) limitada o Armazena dados críticos ‡ RAM - Random Access Memory o Placas de memória separadas do chip que utilizam um barramento de menor velocidade o Quantidade de bytes (Gb) maior que a Cache Memória Secundária ‡ Dispositivos menos voláteis: o HD - Hard-disk: placas de metal magnetizadas que giram ao redor de um sensor; o Discos flexíveis: folhas de metal magnetizadas que variam de tamanho desde 3,5" à 16"; o CD-ROM/DVD: discos que possuem "gravações" físicas ou não que são lidas por lasers de diferentes comprimentos de onda; o Flash: armazenam cargas elétricas em pequenas células feitas de circuitos elétricos não-voláteis. Dispositivos de Entrada/Saída (E/S) ‡ Dispositivos de entrada o Permite ao computador receber dados e instruções de fontes externas o Exemplos: teclado, mouse, caneta, trackpad, touchpad, microfones, scanners, etc. ‡ Dispositivos de saída o Permite ao computador mostrar ou compartilhar seus resultados o Exemplos: monitor, impressoras, alto-falantes, modems, adaptadores de rede Ethernet e Wi-Fi Software ‡ Sistema Operacional o Gerencia os recursos e o comportamento do computador por meio de programas que controlam a UCP, memória e dispositivos de entrada/saída o Multitarefa é o conceito que mais de um programa reside na memória principal compartilhando os recursos da UCP  Codificar um vídeo ao mesmo tempo que está lendo um e-mail ou acessando a Internet Software ‡ Sistema Operacional o Organização dos dados em:  Arquivos: armazena informações como texto, imagem, som ou programas aplicativos  Diretórios/Pastas: coleções de arquivos rotuladas o Interação com o usuário  GUI - Graphical User Interface  WIMP  Windows - áreas separadas de ícones  Icons - representação gráfica de programas  Menus - seleções de comandos  Pointer - um apontador gráfico Internet e Web ‡ Internet é Hardware o Consiste em computadores espalhados pelo mundo ligados por links de comunicação o Início na ARPANET - rede de comunicação da Agência de Defesa Americana ‡ World Wide Web é Software o Consiste em páginas textuais, imagens, sons, etc e os softwares que armazenam e recuperam estes arquivos o Início em 1989 com Tim Berners-Lee (CERN)  Protocolo HTTP  Servidor Web  HTML Mais sobre Web... ‡ Uma página Web é descrita textualmente em uma linguagem denominada HTML - Hypertext Markup Language ‡ Para visualizar a página Web é necessário um Navegador (Browser) que irá interpretá-la para mostrar seu conteúdo ‡ Um servidor Web é um computador conectado a Internet que executa softwares para prover acesso a certos documentos Web organizados por endereços de localização... Mais sobre Web... ‡ URL - Uniform Resource Locator o Exemplo: http://www.loja.com/livros/index.html  http:// - o navegador irá utilizar o protocolo HTTP para recuperar o documento Web  www - é um documento da World Wide Web  loja.com - especifica o nome do servidor Web que armazena o documento Web  IP - endereço numérico do servidor Web  DNS - Domain Name Server  livros - diretório/pasta que está armazenado o documento Web  index.html - documento Web a ser recuperado História dos Computadores "Se o automóvel seguisse o mesmo ciclo de desenvolvimento de um computador, um Rolls Royce custaria hoje $100, faria 1000 milhas com um galão e explodiria uma vez ao ano, matando todos dentro". Robert X. Cringely Gerações ‡ ‡ ‡ ‡ ‡ Geração 0 (1642-1945) - dispositivos mecânicos Geração 1 (1945-1954) - tubos de vácuo Geração 2 (1954-1963) - transistores Geração 3 (1963-1973) - circuitos integrado Geração 4 (1973-1985) - VLSI - Very Large Scale Integration ‡ Geração 5 (1985-????) - Processamento paralelo e rede Geração 0 (1642-1945) ‡ Blaise Pascal (1623-1662) em 1642 apresenta a sua calculadora Geração 0 (1642-1945) ‡ Por volta de 1801, Joseph-Marie Jacquard (1752-1834) apresenta o primeiro dispositivo programável Geração 0 (1642-1945) ‡ Charles Babbage (1791-1871) em 1821 apresenta a Babbage's Difference Engine ‡ Em 1833, Babbage apresenta a Analytical Engine, um "primeiro" computador de propósito geral que aceitaria cartões perfurados como entrada e impressões em papel como saída. o Primeiro programador desta máquina foi uma mulher Augusta Ada Byron (1815-1852) Geração 0 (1642-1945) Babbage's Difference Engine Analytical Engine Geração 0 (1642-1945) ‡ Herman Hollerith (1860-1929) apresenta a máquina de tabular para auxiliar no Censo de 1890. Geração 0 (1642-1945) ‡ No final dos anos 30 do século XX, Konrad Zuse (19101995) introduz o uso de relé eletromagnética para criar induções em metais. ‡ Howard Aiken (1900-1973) redescobriu as idéias de Babbage e aplicou a tecnologia de relé magnética que culminou na construção do computador Mark I em 1944. ‡ Mark I tinha as seguintes características: o Operações aritméticas simples e trigonométricas; o Armazenava 72 números na memória o Execução em 1/10 segundo para adição, 6s para multiplicação e 12s para divisão Geração 1 (1945-1954) ‡ Troca de relés magnéticas por tubos de vácuo ‡ O computador Mark II (1947) teve uma falha ocasionada por um inseto que se fixou na fita de entrada o O primeiro "bug" de um computador ‡ Alan Turing (1912-1954) construiu o primeiro computador denominado Colossus (1943) para decifrar códigos de mensagens de soldados nazistas o 2300 tubos de vácuo o 5 unidades de processamento o 5000 caracteres por segundo Geração 1 (1945-1954) COLOSSUS de Alan Turing Geração 1 (1945-1954) ‡ Na mesma época do Colossus, John Mauchly (1907-1980) e J. Presper Eckert (1919-1995) projetaram o ENIAC (Electronic Numerical Integrator And Computer) - 1946 na Universidade de Pensilvânia o 18000 tubos de vácuo o 1500 relés magnéticas o 30 toneladas de peso o consumo de 140kw de energia o 20 números na memória Geração 1 (1945-1954) Geração 1 (1945-1954) ‡ John Von Neumann (1903-1957) foi um dos cientistas envolvidos com o ENIAC o Introduziu o uso do binário ao decimal o Criou a representação do computador baseada nas idéias da Máquina Analítica de Babbage o Os computadores EDVAC e IAS foram os primeiros a refletir a arquitetura determinada por Neumann o Criou a linguagem de máquina correspondentes as instruções executadas pelo HW ‡ No início dos anos 50 a linguagem Assembly apareceu como mnemônicos aos números binários linguagem de máquina. Geração 2 (1954-1963) ‡ Em 1948, aparece o transistor inventado por John Bardeen (1908-1991), Walter Brattin (1902-1987) e William Shockley (1910-1989) como substituto ao tubo de vácuo ‡ Os primeiros computadores transistorizados foram: o LARC o STRETCH Geração 2 (1954-1963) ‡ Durante a evolução da Geração 2 foram criadas as primeiras linguagens de alto-nível que traduziam comandos em mnemônicos da linguagem Assembly o Em 1957, John Backus (1924) criou a linguagem FORTRAN (FORmula TRANslator) o Em 1959, John McCarthy cria a linguagem LISP o Também em 1959, John Kemeny cria a linguagem BASIC o Em 1960, Grace Murray Hopper cria a linguagem COBOL Geração 3 (1963-1973) ‡ Em 1958, Jack Kilby (Texas Instrument) e Robert Noyce (Fairchild Semiconductor Co.) criam técnicas para produzir transistores menores interconectados em padrões metálicos em discos de silicone, criando assim o primeiro Circuito Integrado (CI) Geração 3 (1963-1973) ‡ Integração em larga escala o Em 1965, Gordon Moore da Intel Co., verificou que o número de transistores em um chip dobraria a cada 12 e 18 meses, determinando a Lei de Moore o Em 1971, a Intel combinou o circuito para uma calculadora em um único chip denominando como microprocessador Intel 4004 (2300 transistores) o Em 1974, a Intel lança o 8080 que continha 6000 transistores o Os sucessores 8086 e 8088 serviram como UCP de computadores dos anos 70. Geração 3 (1963-1973) Intel 4004 Geração 3 (1963-1973) ‡ Em 1971, Niklaus Wirth cria a linguagem Pascal para ensinar programação para computadores ‡ Em 1972, Dennis Ritchie desenvolve a linguagem C que seria utilizada no desenvolvimento do UNIX Geração 4 (1973-1985) ‡ A produção em larga escala denominada VLSI - Very Large Scale Integration de centenas de transistores em chips Ano 1971 1972 1974 1978 1982 1985 1989 1993 1997 1999 2000 2006 4004 8008 8080 8088 80286 80386 80486 Pentium Pentium II Pentium III Pentium 4 Core2Duo Processador # transistores 2.300 3.500 6.000 29.000 134.000 275.000 1.200.000 3.100.000 7.500.000 9.500.000 42.000.000 291.000.000 Geração 4 (1973-1985) ‡ Revolução do computador pessoal (PC) o Em 1975 o Altair 8800 com processador 8080 não possuía teclado, monitor, armazenamento permanente. Possuía somente luzes piscantes o Em 1975, Bill Gates, Paul Allen criam a linguagem Basic para o Altair 8800 o Em 1976, Steve Jobs e Stephen Wozniak criam o Apple I e depois Apple II com um teclado, monitor colorido, som e gráficos  Primeiro computador que utilizou um ambiente WIMP comprado da Xerox Geração 4 (1973-1985) ‡ Programação Orientada a Objetos o Em 1980, Alan Kay desenvolve o Smalltalk, a primeira linguagem OO o Também em 1980, o Departamento de Defesa Americano desenvolve a linguagem Ada o Em 1985, Bjarne Stroustrup desenvolve a linguagem C++ que seria uma extensão da linguagem C desenvolvida por Dennis Ritchie. Geração 5 (1985-????) ‡ Computadores Paralelos o Computadores com mais de um UCP o Computadores com mais de uma UGP (Unidade Gráfica de Processamento ou GPU) o etc.. ‡ Computadores altamente conectados em rede o Clusters o Data centers o etc... Representação de Dados "Há somente 10 diferentes tipos de pessoas no mundo: aquela que conhece binário e aquela que não conhece" Anônimo Base Binária X Base Decimal ‡ Base Decimal o 1310 = 1 * 101 + 3 * 100 = 13 o 12110 = 1 * 102 + 2 * 101 + 1 * 100 = 121 o 100110 = 1 * 103 + 0*102 + 0*101 + 1*100 = 1001 ‡ Base Binária o 11012 = 1*23 + 1*22 + 0*21 + 1*20 = 1310 o 100112 = 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 1910 o 1001102 = 1*25 + 0*24 + 0*23 + 1*22 + 1*21 + 0*20 = 3810 Base Binária X Base Decimal ‡ Convertendo 1910 para base binária o D = 19 é ímpar -> B = 1, D = 19 /2 = 9 o D = 9 é ímpar -> B = 11, D = 9 / 2 = 4 o D = 4 é par -> B = 011, D = 4 / 2 = 2 o D = 2 é par -> B = 0011, D = 2 / 2 = 1 o D = 1 é ímpar -> B = 10011, D = 1 / 2 = 0 ‡ Convertendo 116 para base binária o D = 116 é par -> B = 0, D = 116 / 2 = 58 o D = 58 é par -> B = 00, D = 58 / 2 = 29 o D = 29 é ímpar -> B = 100, D = 29 / 2 = 14 o D = 14 é par -> B = 0100, D = 14 / 2 = 7 o D = 7 é ímpar -> B = 10100, D = 7 / 2 = 3 o D = 3 é ímpar -> B = 110100, D = 3 / 2 = 1 o D = 1 é ímpar -> B = 1110100, D = 1 / 2 = 0 Representando Nos Inteiros ‡ Um computador de 32 bits armazena valores inteiros com precisão binária de 232, ou seja, 232 = 4.294.967.296 ‡ Considerando valores positivos e negativos, têm-se: o 231-1 = 2.147.483.647 (maior valor) 011111111111111111111111111111112 o -(231) = -2.147.483.648 (menor valor) 100000000000000000000000000000002 o -1 = 111111111111111111111111111111112 o -2 = 111111111111111111111111111111102 o -3 = 111111111111111111111111111111012 Representando Nos Inteiros ‡ Se o dígito binário mais significativo (mais à esquerda) for igual a 0 (zero), o número é positivo; caso contrário, o número é negativo. ‡ Transformando um no. negativo em positivo, por ex., -1 = 111111111111111111111111111111112 invertendo 1 em 0 e 0 em 1, têm-se 000000000000000000000000000000002adiciona-se +1 no número, deixando000000000000000000000000000000012Esta operação é denominada complemento de 2 Representando Nos Reais ‡ Um número real é representado como uma Notação Científica, ou seja, o 1234.56 é igual à 1.23456*103 o -50.0 é igual à -5.0 * 101 o 0.00099 é igual à 9.9 * 10-4 ‡ Um número real pode ter: o Precisão Simples com 32 bits o Precisão Dupla com 64 bits Representando Nos Reais ‡ Precisão Simples - 32 bits ‡ Bit mais significativo, 0 - valor positivo, 1 - valor negativo ‡ Expoente varia de -126 à 127 ‡ Parte fracionária (fração na base binária) o tudo 0 = 1.0 o tudo 1 = 1.99999... ‡ 000000001000000000000000000000002 = 1.0*2-126 = 1.18*10-38 ‡ Faixa de valores: 1.2*10-38 à 3.4*1038 (positivos e negativos) Representando Nos Reais ‡ Precisão dupla - 64 bits ‡ Expoente de 11 bits, -1022 à 1023 ‡ Faixa de valores, tanto positivo quanto negativo: o 2.2*10-308 à 1.8*10308 Representando caracteres (ASCII) Representando strings ‡ Strings é uma sequência de caracteres codificados segundo a tabela anterior ‡ Por exemplo, a sequência foobar seria representada como a sequência binária na memória: 0110011001101111011011110110001001100001011100102 o o o o o o 01100110 = 10210 = f 01101111 = 11110 = o 01101111 = 11110 = o 01100010 = 9810 = b 01100001 = 9710 = a 01110010 = 11410 = r Algoritmos e Programação "Se você não pode descrever o que está fazendo como um processo, você não sabe o que está fazendo" W. Edwards Deming Origem ‡ A palavra algoritmo tem origem no sobrenome, AlKhwarizmi, do matemático persa do século IX Mohamed ben Musa, cujas obras foram traduzidas no ocidente cristão no século XII, tendo uma delas recebido o nome Algorithmi de numero indorum, sobre os algoritmos usando o sistema de numeração decimal (indiano). ‡ Outros autores, entretanto, defendem a origem da palavra em Al-goreten (raiz - conceito que se pode aplicar aos cálculos). Algoritmo ‡ Para resolver um problema computacional utiliza-se algoritmo, que é uma sequência finita de passos para atingir um objetivo bem definido. ‡ No dia-a-dia, algoritmos são utilizados constantemente em situações como trocar pneu de um carro, fazer uma omelete, buscar as crianças na escola, etc. ‡ Na elaboração de um algoritmo devem ser especificados passos claros e precisos, que partindo de um estado inicial, após um período de tempo finito, produzem um estado final previsível e bem definido. Linguagem de Programação ‡ Da mesma forma que nós, seres humanos, precisamos de uma linguagem para nos comunicar, uma linguagem de programação serve de comunicação entre o indivíduo que deseja resolver um determinado problema e o computador escolhido para ajudá-lo na solução. ‡ Entretanto, o computador entende apenas a linguagem de máquina, dita de baixo nível, que consiste de sequências de zeros e uns. Assim, programar em uma linguagem de baixo nível é mais difícil e trabalhoso para o programador. Linguagem de Programação ‡ Atualmente, as linguagens de programação mais utilizadas são aquelas ditas de alto nível, consideradas mais próximas da linguagem humana, sendo, portanto, mais fáceis que linguagens de baixo nível. ‡ C/C++ é um exemplo de linguagem de alto nível. ‡ Linguagem de alto nível não é a linguagem que o computador entende. ‡ Assim, o programador deve usar um compilador para traduzir o programa feito em linguagem de alto nível para código em linguagem de máquina. Caso existam erros de sintaxe no programa, a conversão não é realizada. Compilação de programas Code::Blocks
Copyright © 2024 DOKUMEN.SITE Inc.