Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Programação de Computadores I BCC 701 Introdução 2012-01 PROF. MARCELO LUIZ SILVA (R E D)
Introdução Os computadores (denominados hardware) são controlados por software, isto é, os programas que escrevemos para instruir ao computador a realizar ações e tomar decisões;
Introdução O uso de computadores aumenta em quase todos os campos de trabalho; Os custos de computação têm diminuído radicalmente por causa do rápido desenvolvimento em tecnologia de hardware e software; Os computadores que ocupavam grandes salas e custavam milhões de dólares há algumas décadas, agora podem ser gravados em chips de silício menores que uma unha, ao custo de apenas alguns poucos dólares.
Introdução Mainframes: grandes computadores utilizados em órgãos governamentais, indústria, etc; Silício: um dos materiais mais abundantes na terra um ingrediente da areia comum; Metodologia de programação que utilizaremos: Estruturada.
O que é um Computador? Um computador é um dispositivo capaz de realizar computações e tomar decisões lógicas milhões (e até bilhões) de vezes mais rapidamente que o homem; Muitos computadores realizam um bilhão de adições por segundo; Os computadores processam dados sob o controle de conjuntos de instruções chamados programas de computador.
O que é um Computador? Esses programas orientam o computador por meio de conjuntos ordenados de ações especificadas por pessoas chamadas programadores de computador; Um computador consiste de vários dispositivos referidos como hardware: o teclado, o mouse, o monitor, o disco rígido (Hard Disk), a memória, os DVDs e as unidades de processamento; Os programas que executam em um computador são referidos como software.
Organização do Computador Praticamente, todos os computadores podem ser considerados como divididos em seis unidades lógicas (ou seções): 1) Unidade de Entrada Esta é a seção receptora do computador. Ela obtém informações (dados e programas de computador) de dispositivos de entrada e coloca essas informações à disposição das outras unidades para o processamento;
Organização do Computador A maioria das informações é inserida em computadores por meio de dispositivos de entrada, como teclados e mouse; As informações também podem ser inseridas de muitas outras maneiras, incluindo falar com seu computador, digitalizar imagens, redes sem fio (bluetooth) e fazer seu computador receber informações de uma rede, como a Internet.
Organização do Computador 2) Unidade de Saída Esta é a seção de envio do computador; Ela pega as informações que o computador processou e as coloca em vários dispositivos de saída para tornar as informações disponíveis à utilização fora do computador; A maioria das informações enviadas para a saída de computadores é exibida em telas, impressas em papel ou utilizadas para controlar outros dispositivos. Os computadores também podem gerar saída de suas informações para redes, como a Internet.
Organização do Computador 3) Unidade de Memória Esta é a seção de armazenamento de relativamente baixa capacidade e rápido acesso do computador; Ela armazena programas de computador enquanto estão sendo executados; Ela retém informações que foram inseridas pela unidade de entrada, para se tornarem imediatamente disponíveis para o processamento quando necessário.
Organização do Computador A unidade de memória também retém informações processadas até que elas possam ser colocadas em dispositivos de saída pela unidade de saída; As informações na unidade de memória são, em geral, perdidas quando o computador é desligado; A unidade de memória costuma ser chamada de memória ou memória principal.
Organização do Computador 4) Unidade de Aritmética e Lógica (ULA) (ALU Arithmetic and Logic Unit) Esta é a seção de produção do computador. Ela é responsável pela realização de cálculos, como adição, subtração, multiplicação e divisão; Contém os mecanismos de decisão que permitem ao computador, por exemplo, comparar dois itens da unidade de memória para determinar se são iguais ou não.
Organização do Computador 5) Unidade Central de Processamento (CPU Central Processing Unit) Esta é a seção administrativa do computador. Ela coordena e supervisiona a operação das outras seções; A CPU diz à unidade de entrada quando as informações devem se lidas e transferidas para a unidade de memória, informa à ALU quando as informações da unidade de memória devem ser utilizadas em cálculos e instrui a unidade de saída sobre quando enviar as informações da unidade de memória para certos dispositivos de saída;
Organização do Computador Muitos computadores de hoje têm múltiplas CPUs e, portanto, podem realizar muitas operações simultaneamente esses computadores são chamados de multiprocessadores.
Organização do Computador 6) Unidade de Armazenamento Secundária Esta é a seção de armazenamento de alta capacidade e longo prazo do computador; Programas ou dados que não são utilizados ativamente pelas outras unidades, em geral, são colocados em dispositivos de armazenamento secundário, como as unidades de disco, até que sejam novamente necessários, possivelmente horas, dias, meses ou mesmo anos mais tarde;
Organização do Computador As informações no armazenamento secundário exigem muito mais tempo para serem acessadas do que as informações na memória principal, mas o custo por unidade de armazenamento secundário é muito menor que o da memória principal; Outros dispositivos de armazenamento secundário incluem CDs e DVDs, que podem armazenar centenas de milhões de caracteres e bilhões de caracteres respectivamente.
Você Não Pode Dormir Sem Saber... Sabe-se que os programas e dados são executados na memória RAM de um PC... Então... Como um filme (DVD) de 8 Giga Bytes pode ser executado em um PC com 2 Giga Bytes de RAM?
Arquitetura Simplificada de um Computador modelo de Von Neumann Dispositivo C P U RAM Entrada Saída Barramento
Linguagens Os programadores escrevem instruções em várias Linguagens de Programação, algumas diretamente compreensíveis por computadores e outras requerendo passos intermediários de tradução; Três tipos gerais de Linguagnes de Programação: 1) Linguagem de Máquina 2) Linguagem Assembly 3) Linguagem de Alto Nível
Linguagem de Máquina Qualquer computador pode entender diretamente somente sua própria Linguagem de Máquina (código objeto); A LM é a linguagem natural de um computador e como tal é definida pelo seu design de hardware; As LM consistem geralmente em strings de números (em última instância reduzidas a 0 s e 1 s) que instruem os computadores a realizar suas operações mais elementares, uma de cada vez;
As LM são dependentes de máquina, isto é, uma linguagem particular de máquina pode ser utilizada apenas em um tipo de computador; A LM é muito complexa para o ser humano, por exemplo, um programa que soma o ganho em horas extras ao salário base e armazena o resultado no salário bruto: +1300042774 +1400593419 +1200274027 Linguagem de Máquina
Linguagem de Máquina e Assembly A progamação em LM é lenta, tediosa e propensa ao erro; Os programadores trocaram as strings de números (que os computadores entendem) por abreviações em inglês (mnemônicos) para representar operações elementares; Essas abreviações formaram a base da Linguagem Assembly; Um Programa Tradutor, assembler, converte automaticamente um programa em LM para LA;
Linguagem de Máquina e Assembly Tradução de LM para LA do programa que soma o ganho em horas extras ao salário base e armazena o resultado no salário bruto: +1300042774 +1400593419 +1200274027 load add Store basepay overpay grosspay A LA possui um código mais claro para o ser humano, mas até que seja traduzida em LM ela é incompreensível para o computador.
Linguagem de Alto Nível O uso de computadores aumentou rapidamente com o uso das linguagens assembly, mas os programadores tinhas que utilizar muitas instruções para realizar tarefas simples; Para acelerar o processo de programação foram desenvolvidas as Linguagens de Alto Nível, em que instruções únicas poderiam ser escritas para realizar tarefas substanciais; Os programas tradutores chamados Compiladores convertem os programas em linguagem de alto nível para LM;
Linguagem de Alto Nível As Linguagens de alto Nível permitem aos programadores escreverem instruções que se parecem com o inglês cotidiano e contêm notações matemáticas comumente utilizados; Voltemos ao nosso exemplo: +1300042774 +1400593419 +1200274027 load add Store basepay overpay grosspay grosspay = basepay + overtimepay;
Compilação O processo de compilação de um programa em Linguagem de alto Nível em LM pode consumir uma quantidade considerável de tempo de processamento; O programa Compilador foi desenvolvido para traduzir completamente um programa em linguagem de alto nível em um programa em LM; Após a tradução completa, o compilador executa todo o programa traduzido, obtendo rapidez no processamento;
Compilação O programa Interpretador foi desenvolvido para executar diretamente um programa em linguagem de alto nível; O interpretador traduz cada instrução em alto nível para baixo nível, em seguida a executa, e repete o processo até o término da tarefa; Este processo é muito mais lento que a compilação; Entretanto, os interpretadores são populares em ambiente de desenvolvimento de programas em que novos recursos são adicionados, e os erros, corrigidos. Quando eliminados os erros, pode-se produzir a versão copilada do aplicativo.
Linguagem Binária Os computadores são máquinas eletrônicas. Essencialmente, tudo que fazem envolve chaveamentos elétricos (on/off); O conceito binário expressa dois estados. No caso de computadores, os dois estados são on e off; Para representar qualquer dado se usam strings de on s e off s, ou seja de 1 s e 0 s, por exemplo, 10100001.
Usos Hipotéticos - Linguagem Binária Códigos Binários para as Operações Aritméticas Código Bínário (instrução) Operação Aritmética 00 Soma 01 Subtração 10 Multiplicação 11 Divisão
Usos Hipotéticos - Linguagem Binária Códigos Binários para as Letras do Alfabeto
Usos Hipotéticos - Linguagem Binária Códigos Binários para as Letras do Alfabeto A palavra CADA corresponde a: 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0
Bit - Byte Em computação, os bytes são formados por grupos de oito bits (1 s e 0 s); O número oito permite que um byte armazene um caractere, que é qualquer letra, dígito ou outro símbolo que possa ser digitado no teclado; Oito bits permitem 256 combinações (2 8 = 256), suficientes para letras minúsculas (a z), maiúsculas (A Z), dígitos (0 9), símbolos especiais (% $ # @) e aspas ( ); Até o espaço em branco é um caractere;
Bit - Byte Os computadores usam o sistema binário, logo são adequados para trabalhar com números que são potências de 2; Por esta razão os computadores tem a memória expressa em 256, 512, 1024, etc, e não em 250, 500, 1000, etc.
Terminologia para tamanhos de Bytes
Em 1936, um trabalho teórico não implementado em hardware, influenciou o campo da Ciência da Computação. O matemático Alan M. Turing inventou uma máquina abstrata chamada de a Máquina de Turing, que fundamentou a área da Teoria da Computação.
Segunda Guerra Mundial
Máquina de Pascal 19 anos de idade!
Comunicação de Algoritmos através de Furos em Papel 1801 - Joseph Jacguard - França
Konrad Zuze (1910-1995) - primeiro computador digital programável de propósito geral
MARK I - Harward University 1944 Howard Aiken e um grupo de engenheiros da IBM
Máquina de Atanasoff-Berry - (1937-1941) Iowa State College
COLOSSUS construída na Inglaterra para decodificar mensagens alemãs durante a última parte da II Guerra Mundial.
ENIAC - Electronic Numerical Integrator and Calculator John Mauchly e J. Presper Eckert - Moore School of Electrical Engeneering (Universidade da Pensilvânia - EUA)
von NeuMann
von NeuMann