introdução - professorleomir.files.wordpress.com · armazenados na memória. na verdade, são...

8
Fundamentos da ciência da computação Exemplos Sempre que apropriado, utilizamos exemplos para demonstrar o conceito e o mo- delo matemático. Material de fim de capítulo O material no fim de cada capítulo contém quatro partes: Leitu- ra recomendada. Termos principais. Resumo e Conjunto de práticas. Leitura recomendada Esta seção fornece uma lista de livros recomendados para aqtiele capítu- lo, que pode ser utilizada para consulta. Termos principais Esta seção apresenta uma lista dos termos importantes introduzidos no ca- pítulo. Cada um deles está definido no glossário. Resumo Os resumos contêm uma visão geral concisa de todos os pontos mais importantes de cada capítulo. Eles são identificados por marcadores, para facilitar sua leitura. Conjunto de práticas Cada conjunto contém três partes: questões para análise, questões de múltipla escolha e exercícios. As questões para revisão testam o entendimento dos aspectos e conceitos mais importantes do capítulo. As de múltipla escolha são projetadas para testar o entendimento dos materiais. Os exercícios foram projetados para verificar se os alunos conseguem aplicar os conceitos e as fórmulas. Glossário Um glossário de todos os termos principais e siglas está incluído no final do livro. Agradecimentos Nenhum livro com essa abrangência pode ser desenvolvido sem o apoio de muitas pessoas, e isto é especialmente verdadeiro para este livro. Revisores parceiros' Para qualquer pessoa que não conheça bem o processo, o valor dos revi- sores parceiros não pode ser suficientemente apreciado. Escrever um livro rapidamente se torna uma tarefa que não possibilita uma visão do trabalho com o devido distanciamento. É impossível medir a importância da orientação dos revisores, que podem ficar de apoio e visualizar o livro como um todo. Gostaríamos de agradecer especialmente pela contribuição dos revisores da segunda edição; John Newman, University of Wales; Steve Maybank, Birbeck College; Mário Kolberg, University of Stirling; Colin Price, University de Worcester; Bóris Cogan, London Metropolitan University; Thomas Mandl, University of Hildesheim; Daphné Becker, University of South Africa; Lubna Pekry Abdulhai e Osama Abuinaja, King Abdulaziz University; e Katie Atkinson, University of Liverpool. Profissionais na Cengage Learning Nossos agradecimentos também são dirigidos aos profis- sionais da Cengage Learning, Allie, Matthew e Gaynor, e também a Steve Rickaby, da Word- mongers, por todo seu cuidado e atenção com o manuscrito. Nossa família Por último, mas, obviamente, não menos importante, está o apoio de nossas famílias e de nossos amigos. Apesar de os autores sofrerem durante todo o processo de redação do livro, as famílias e amigos sofrem por causa de suas ausências. Podemos apenas esperar que, quando eles virem o produto finai, sintam que seus sacrifícios valeram a pena. * A tradução da segunda edição internacional foi revisada pelo Doutor Ronaldo A. Lara Gonçalves, do Departa- mento de híformática da Universidade Estadual de Maringá (UEM). Introdução A expressão ciência da comptUação tem, atualmente, um significado muito amplo. Contudo, neste livro, a definimos como "as questões relacionadas aos computadores". Este capítulo intro- dutório, em primeiro lugar, tenta descobrir o que é um computador e, então, investiga outros aspectos diretamente relacionados a ele. Analisamos primeiro o modelo de Turing, como uma definição matemática e filosófica de computação. Em seguida, mostramos como os computado- res, hoje em dia, têm como base o modelo de von Neumann. O capítulo termina com um breve histórico desse dispositivo que é capaz de transformar culturas... O computador. Objetivos Dei:>ois de estudar este capítulo, o aluno será capaz de; Definir o modelo de Turing de um computador. Q Definir o modelo de von Neumann de um computador. Descrever os três componentes de um computador; hardware, dados e software. Enumerar tópicos referentes ao hardware de computadores. Enumerar tópicos referentes aos dados. Enumerar tópicos referentes ao software. Discutir alguns aspectos sociais e éticos relacionados ao uso de compiitadores. Conhecer um breve histórico dos cf)mputadores. 1.1 MODELO DE TUrUNG' ^ A ideia de um dispositivo de computação universal foi descrita, pela primeira vez, por Alan Tu- ring, em 1937, propondo que toda a computação poderia ser realizada por um tipo especial de máquina, então chamada Máquina de Turing. Embora Turing tenha apresentado sua descrição matemática, estava mais interessado na definição filosófica de computação do que em construir a máquina propriamente dita. O modelo por ele descrito tinha como base as ações que as pes- soas realizam quando envolvidas na computação. Então, abstraindo essas ações, Turing criou um protótipo para uma rnáquin;! computacional que realmente translorinou o mundo.

Upload: hoangthien

Post on 09-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução - professorleomir.files.wordpress.com · armazenados na memória. Na verdade, são armazenados como padrões binários na memória - uma sequência de Os e Is. Execução

Fundamentos da ciência da computação

Exemplos Sempre que apropriado, utilizamos exemplos para demonstrar o conceito e o mo­delo matemático.

Material de fim de capítulo O material no fim de cada capítulo contém quatro partes: Leitu­ra recomendada. Termos principais. Resumo e Conjunto de práticas.

Leitura recomendada Esta seção fornece uma lista de livros recomendados para aqtiele capítu­lo, que pode ser utilizada para consulta.

Termos principais Esta seção apresenta uma lista dos termos importantes introduzidos no ca­pítulo. Cada um deles está definido no glossário.

Resumo Os resumos contêm uma visão geral concisa de todos os pontos mais importantes de cada capítulo. Eles são identificados por marcadores, para facilitar sua leitura.

Conjunto de práticas Cada conjunto contém três partes: questões para análise, questões de múltipla escolha e exercícios. • As questões para revisão testam o entendimento dos aspectos e conceitos mais importantes

do capítulo. • As de múltipla escolha são projetadas para testar o entendimento dos materiais. • Os exercícios foram projetados para verificar se os alunos conseguem aplicar os conceitos e

as fórmulas.

Glossário Um glossário de todos os termos principais e siglas está incluído no final do livro.

Agradecimentos Nenhum livro com essa abrangência pode ser desenvolvido sem o apoio de muitas pessoas, e isto é especialmente verdadeiro para este livro.

Revisores parceiros' Para qualquer pessoa que não conheça bem o processo, o valor dos revi­sores parceiros não pode ser suficientemente apreciado. Escrever um livro rapidamente se torna uma tarefa que não possibilita uma visão do trabalho com o devido distanciamento. É impossível medir a importância da orientação dos revisores, que podem ficar de apoio e visualizar o livro como um todo. Gostaríamos de agradecer especialmente pela contribuição dos revisores da segunda edição; John Newman, University of Wales; Steve Maybank, Birbeck College; Mário Kolberg, University of Stirling; Colin Price, University de Worcester; Bóris Cogan, London Metropolitan University; Thomas Mandl, University of Hildesheim; Daphné Becker, University of South Africa; Lubna Pekry Abdulhai e Osama Abuinaja, King Abdulaziz University; e Katie Atkinson, University of Liverpool.

Profissionais na Cengage Learning Nossos agradecimentos também são dirigidos aos profis­sionais da Cengage Learning, Allie, Matthew e Gaynor, e também a Steve Rickaby, da Word-mongers, por todo seu cuidado e atenção com o manuscrito.

Nossa família Por último, mas, obviamente, não menos importante, está o apoio de nossas famílias e de nossos amigos. Apesar de os autores sofrerem durante todo o processo de redação do livro, as famílias e amigos sofrem por causa de suas ausências. Podemos apenas esperar que, quando eles virem o produto finai, sintam que seus sacrifícios valeram a pena.

* A tradução da segunda edição internacional foi revisada pelo Doutor Ronaldo A. Lara Gonçalves, do Departa­mento de híformática da Universidade Estadual de Maringá (UEM).

Introdução

A expressão ciência da comptUação tem, atualmente, um significado muito amplo. Contudo, neste livro, a definimos como "as questões relacionadas aos computadores". Este capítulo intro­dutório, em primeiro lugar, tenta descobrir o que é um computador e, então, investiga outros aspectos diretamente relacionados a ele. Analisamos primeiro o modelo de Turing, como uma definição matemática e filosófica de computação. Em seguida, mostramos como os computado­res, hoje em dia, têm como base o modelo de von Neumann. O capítulo termina com um breve histórico desse dispositivo que é capaz de transformar culturas... O computador.

Objetivos Dei:>ois de estudar este capítulo, o aluno será capaz de;

• Definir o modelo de Turing de um computador.

Q Definir o modelo de von Neumann de um computador.

• Descrever os três componentes de um computador; hardware, dados e software.

• Enumerar tópicos referentes ao hardware de computadores.

• Enumerar tópicos referentes aos dados.

• Enumerar tópicos referentes ao software.

• Discutir alguns aspectos sociais e éticos relacionados ao uso de compiitadores.

• Conhecer um breve histórico dos cf)mputadores.

1.1 MODELO DE T U r U N G ' ^

A ideia de um dispositivo de computação universal foi descrita, pela primeira vez, por Alan Tu­ring, em 1937, propondo que toda a computação poderia ser realizada por um tipo especial de máquina, então chamada Máquina de Turing. Embora Turing tenha apresentado sua descrição matemática, estava mais interessado na definição filosófica de computação do que em construir a máquina propriamente dita. O modelo por ele descrito tinha como base as ações que as pes­soas realizam quando envolvidas na computação. Então, abstraindo essas ações, Turing criou um protótipo para uma rnáquin;! computacional que realmente translorinou o mundo.

Page 2: Introdução - professorleomir.files.wordpress.com · armazenados na memória. Na verdade, são armazenados como padrões binários na memória - uma sequência de Os e Is. Execução

2 Fundamentos da ciência da computação

Processadores de dados Antes de discutirmos o modelo de Turing, vamos definir um computador como um processador dc dados. Utilizando essa definição, um computador age como uma caixa-preta que aceita a in­serção de dados, processa-os e cria informações referentes aos resultados (Figura 1.1). Embora esse modelo possa definir a funcionalidade de um computador, na atualidade tornou-se muito genérico, porque, a partir dessa definição, uma calculadora de bolso também é um computador (o que realmente é verdade, em um sentido literal).

Dados de entrada • Computador Dados de salda

Figura 1.1 Uma máquina de computação de propósito único

Outro problema desse modelo é que ele não especifica o tipo de processamento nem se é possí­vel mais de um tipo. Em outras palavras, não está claro quantos tipos ou conjuntos de operações podem ser realizados por uma máquina que tem como base esse modelo. É uma máquina de propósito específico ou de propósito geral?

Esse modelo poderia representar um computador de propósito específico (ou processador) que foi projetado para fazer um trabalho simples, como o controle da temperatura de um edifí­cio ou o uso de combustível em um carro. No entanto, computadores, do modo como o termo é utilizado hoje em dia, são máquinas de propósito geral. Eles podem desempenhar muitos tipos de tareias diferentes, o que implica que precisamos transformá-los no modelo de Turing para que seja possível refletir os reais computadores da atualidade.

Processadores de dados programáveis O modelo de Turing é melhor para um computador de propósito geral, porque acrescenta um elemento extra de computação específica: o programa. Um programa é um conjunto de instru­ções que diz ao computador o que fazer com os dados. A Figura 1.2 mostra o modelo de Turing.

Nesse modelo, os dados de saída dependem da combinação de dois fatores: os dados dc entrada e o programa. Com os mesmos dados de entrada podemos gerar diferentes resultados, se modificarmos o programa. De modo similar, com o mesmo programa, podemos gerar dife­rentes resultados, se modificarmos os dados de entrada. Por fim, se esses dados e o programa permanecerem os mesmos, o resultado também será o mesmo. Vamos observar esses três casos.

Dados de entrada

Programa

Computador Dados de saída

Figura 1.2 Um computador que tem como base o modelo de Turing: processador de dados programável

Mesmo programa, diferentes dados de entrada A Figura 1.3 mostra o mesmo programa de ordenação com diferentes dados de entrada. Embora o programa seja o mesmo, os resultados são diferentes, porque diferentes dados de entrada são processados.

Introdução 3

Programa Ordena

3, 12, 8, 22 Dados de entrada

I Computador

Programa Ordena

14, 6, 8, 12 Dados de entrada

T Computador

3, 8, 12, 22 Dados de saída

6, 8, 12, 14 Dados de saida

Figura 1.3 Mesmo programa, diferentes dados de entrada

Mesmos dados de entrada, programas diferentes A Figura 1.4 mostra os mesmos dados de entrada com diferentes programas. Cada programa faz que o computador realize diferentes operações .sobre esses dados. O primeiro programa ordena os dados, o segundo os adiciona e o terceiro encontra o menor número.

Programa Ordena

3, 12, 8, 22 Dados de entrada

I Computador

Programa Adiciona

3, 12, 8, 22 Dados de entrada

I Computador

Programa Encontra o menor número

3, 12, 8, 22 Dados de entrada

Computador

3, 8, 12, 22 Dados de saida

45 Dados de saída

Dados de saida

Figura 1.4 Mesmos dados de entrada, diferentes programas

Mesmos dados de entrada, mesmo programa Naturalmente, esperamos o mesmo resul­tado a cada vez se os dados cie entrada e o programa forem os mesmos. Em outras palavras, quando o mesmo programa é executado com os mesmos dados de entrada, esperamos os mes­mos resultados.

Page 3: Introdução - professorleomir.files.wordpress.com · armazenados na memória. Na verdade, são armazenados como padrões binários na memória - uma sequência de Os e Is. Execução

Fundamentos da ciência da computação

A Máquina Universal de Turing A Máquina Universal de Turing pode realizar qualquer cálculo se o programa apropriado for fornecido; essa foi a primeira descrição de um computador moderno. Pode-se provar que um computador muito poderoso e uma Máquina Universal de Turing podem fazer as mesmas coi­sas. Precisamos apenas fornecer os dados de entrada e o programa - a descrição de como realizar o cálculo - para qualquer uma das máquinas. Na verdade, a Máquina Universal de Turing é capaz de calcular qualquer coisa que seja calculável.

1.2 MODELO DE VON NEUMANN Os computadores construídos com base na Máquina Universal de Turing armazenam dados em sua memória. Por volta de 1944-1945, John von Neumann propôs que, se o programa e os dados são logicamente os mesmos, os programas também devem ser armazenados na memória de um computador.

Quatro subsistemas Os computadores construídos com base no modelo de von Neumann dividem o hardware do computador em quatro subsistemas: memória, unidade de lógica e aritmética, unidade de con­trole e entrada/saída (Figura 1.5).

Computador

Dados de entrada"

Entrada/saída

Unidade de lógica e aritmética (ULA)

I Unidade

de controle

Memória

. Dados de saída

Figura 1.5 O modelo de von Neumann

l\1emória A memória é a área de armazenamento; é onde os programas e os dados são arma­zenados durante o processamento. Mais adiante discutiremos, neste capítulo, as razões para o armazenamento de programas e dados.

Unidade de lógica e aritmética A unidade de lógica c aritmética ( U L A ) é onde ocorrem as operações de lógica e de cálculos. Para um computador agir como um processador de dados, ele deve ser capaz de realizar operações aritméticas sobre dados (como adicioná-los em uma lista de números) e também operações lógicas sobre dados, como veremos no Capítulo 4.

Unidade de controle A unidade de controle controla as operações da memória, a ULA e o subsistema de entrada/saída.

Entrada/saída O subsistema de entrada aceita a entrada de dados e programas vindos de fora do computador, ao passo que o de saída envia os resultados do processamento para o mundo externo. A definição do sistema de entrada/saída é muito ampla: também inclui dispositivos de armazenamento secundários, como discos ou fitas, que armazenam dados e programas para processamento. Quando um disco armazena dados que resultam de processamento, é conside-

Introdução 5

rado um dispositivo de saída; quando os dados são lidos a partir do disco, ele é considerado um dispositivo de entrada.

O conceito de programa armazenado O modelo de von Neumann determina que o programa deve ser armazenado na memória. Isso é totalmente diferente da arquitetura dos primeiros computadores, nos quais somente os dados eram armazenados na memória: os programas para as respectivas tarefas eram implementados pela manipulação de um conjunto de comutadores ou modificação do sistema de fios.

A memória dos computadores modernos mantém um programa e seus dados correspon­dentes. Isso implica que os dados e programas devem ter o mesmo formato, uma vez que são armazenados na memória. Na verdade, são armazenados como padrões binários na memória -uma sequência de Os e Is.

Execução sequencial de instruções Um programa no modelo de von Neumann é composto de um número finito de instruções. Nele, a unidade de controle busca uma instrução da memória, decodifica-a e, então, a exe­cuta. Em outras palavras, as instruções são executadas uma depois da outra. Naturalmente, uma instrução pode requerer que a unidade de controle salte para alguma instrução anterior ou posterior, o que não significa que as instruções não sejam executadas sequencialmente. Esse tipo de execução de um programa foi a exigência inicial de um computador com base no modelo de von Neumann. Os computadores da atualidade executam programas na ordem que for mais eficiente.

1.3 COMPONENTES COMPUTACIONAIS Podemos pensar em urn computador como sendo formado por três componentes: o hardware, os dados e o software.

Hardware Na atualidade, o hardware tem quatro componentes, de acordo com o modelo de von Neu­mann, embora possamos ter diferentes tipos de memória, de subsistemas de entrada/saída e assim por diante. Discutimos o hardware mais detalhadamente no Capítulo 5.

Dados O modelo de von Neumann define claramente um computador como uma máquina de proces­samento de dados que aceita a dados de entrada, processa-os e fornece os resultados.

Armazenando dados O modelo de von Neumann não define como os dados devem ser arma­zenados em um computador. Se um computador é um dispositivo eletrônico, a melhor maneira de armazenar dados é na forma de um sinal elétrico, mais especificamente: sua presença ou ausência. Isso implica que um computador pode armazenar dados em um de dois estados.

Obviamente, os dados que utilizamos na vida diária não são encontrados apenas em dois estados. Por exemplo, nosso sistema de numeração utiliza dígitos que podem estar entre um de dez estados (de O a 9). Não podemos (ainda) armazenar esse tipo de informação em um com­putador, ela precisa ser modificada para outro sistema C|ue utilize somente dois estados (O e 1). Também devemos estar em condições de processar outros tipos de dados (texto, imagem, áu­dio, vídeo). Estes também não podem ser armazenados em um computador diretamente; antes, precisam ser modificados para a forma apropriada (Os e Is).

No Capítulo 3 aprenderemos como armazenar diferentes tipos de dados em um padrão binário, uma sequência de Os e Is. No Capítulo 4 mostraremos como os dados são manipulados, em um padrão binário, dentro de um computador.

Page 4: Introdução - professorleomir.files.wordpress.com · armazenados na memória. Na verdade, são armazenados como padrões binários na memória - uma sequência de Os e Is. Execução

Fundamentos da ciência da computação

Organizando dados Embora os dados devam ser armazenados apenas de uma forma dentro do computador, em um padrão binário, os dados externos a um computador podem assumir muitas formas. Além disso, os computadores (e a noção de processamento de dados) têm criado um novo campo de estudo, conhecido como organização de dados, que faz a pergunta; podemos organizar nossos dados em diferentes entidades e formatos antes de armazená-los no computador? Atualmente, os dados não são tratados como uma sequência contínua de infor­mações. Em vez disso, são organizados em pequenas unidades que, por sua vez, são organizadas em unidades maiores e assim por diante. Analisaremos os dados sob esse ponto de vista nos capítulos de 11 a 14.

Software de computador A principal característica tanto do modelo de Turing quanto do de von Neumann é o conceito de programa. Apesar de os primeiros computadores não armazenarem o programa na própria memória, eles utilizavam o conceito de programas. Programar aqueles primeiros computadores significava modificar os sistemas de fios ou ligar, ou desligar, um conjunto de comutadores. Programar era, portanto, uma tarefa realizada por um operador ou engenheiro, antes de efetiva-mente iniciar o processamento de dados.

Os programas devem ser armazenados No modelo de von Neumann, os programas são ar­mazenados na memória do computador. Não precisamos que a memória mantenha somente os dados, mas também que mantenha o programa (Figura 1.6).

Programa

Dados

IVlemória

Figura 1.6 Programa e dados na memória

Uma sequência de instruções Outra exigência de von Neumann é que o programa deve con­sistir de uma sequência de instruções. Cada uma delas opera em um ou mais itens de dados. Assim, uma instrução pode modificar o efeito de uma anterior. Por exemplo, a Figura 1.7 mostra um programa que entra com dois números, adiciona-os e então imprime o resultado. Esse pro­grama consiste de quatro instruções individuais.

1. Entra com o primeiro número na memória.

2. Entra com o segundo número na memória.

3. Adiciona os dois e armazena o resultado na memória.

4. Mostra 0 resultado.

Programa

Figura 1.7 Um programa composto de instruções

Introdução

Podemos perguntar por que um programa deve ser composto de instruções. A resposta é a pos­sibilidade de reutilização. Atualmente, os computadores realizam milhões de tarefas. Se o pro­grama para cada tarefa fosse uma entidade independente, sem nada em comum com outros programas, a programação seria difícil. Os modelos de Turing e de von Neumann tornam a pro­gramação mais fácil ao definirem as diferentes instruções que podem ser utilizadas pelos compu­tadores. Um programador pode, então, combinar essas instruções para realizar qualquer número de programas. Cada programa pode ser uma combinação diferente de instruções diferentes.

Algoritmos A exigência de que um programa deve consistir de uma sequência de instruções tornou a programação possível, mas trouxe outra dimensão à utilização de um computador. Um programador precisa não somente compreender a tarefa realizada por cada instrução, mas tam­bém como combinar essas instruções para desempenhar determinada tarefa. Analisando essa questão de modo diferente, um programador deve primeiro resolver o problema, etapa por eta­pa, e então tentar encontrar a instrução apropriada (ou a série de instruções) para implementar aquelas etapas. Essa solução passo a passo é chamada algoritmo. Os algoritmos representam um papel muito importante na ciência da computação, e serão discutidos no Capítulo 8.

Linguagens No início da era do computador, havia somente uma linguagem; a linguagem de máquina. Os programadores escreviam instruções (utilizando padrões binários) para resolver um problema. Contudo, à medida que os programas se tornaram maiores, escrever programas longos utilizando esses padrões se tornou uma tarefa tediosa. Os cientistas da computação apre­sentaram a ideia de utilizar símbolos para representar padrões binários, assim como as pessoas utilizam símbolos (palavras) para comandos na vida diária. Naturalmente, os símbolos utilizados na vida diária são diferentes daqueles usados em computadores. Desse modo, surgiu o concei­to de linguagens de computador. Uma linguagem natural, como o inglês, é rica e tem muitas regras para combinar as palavras corretamente; a linguagem de computador, por sua vez, tem um número mais limitado de símbolos e também de palavras. Estudaremos as linguagens de computador no Capítulo 9.

Engenharia de sof tware Algo que não foi definido no modelo de von Neumann é a enge­nharia dc software, que é o projeto e a escrita de programas estruturados. Atualmente, não é aceitável escrever um programa que realiza apenas uma tarefa; para tanto, deve-se seguir regras e princípios estritos. Discutiremos esses princípios, coletivamente conhecidos como engenharia de software, no Capítulo 10.

Sistemas operacionais Durante a evolução dos computadores, os cientistas notaram que ha­via uma série de instruções comuns a todos os programas. Por exemplo, as instruções para dizer a um computador onde receber dados e onde enviar dados são necessárias para quase todos os programas. E mais eficiente escrever essas instruções somente uma vez para o uso de todos os programas. Assim surgiu o conceito de sistema operacional. Originalmente, esse sistema tra­balhava como um gerenciador para facilitar o acesso aos componentes do computador por um programa, mas atualmente os sistemas operacionais fazem muito mais. Aprenderemos sobre eles no Capítulo 7.

1.4 HISTÓRICO Nesta seção, analisaremos brevemente a história da computação e dos computadores, dividida em três períodos.

Máquinas mecânicas (antes de 1930) Durante esse período, foram inventadas diversas máquinas dc computação que têm pouca se­melhança com o moderno conceito de um computador.

Page 5: Introdução - professorleomir.files.wordpress.com · armazenados na memória. Na verdade, são armazenados como padrões binários na memória - uma sequência de Os e Is. Execução

Fundamentos da ciência da computação

• No século X V I I , Blaise Pascal, um matemático e filósofo francês, inventou Pascaline, uma calculadora mecânica para fazer operações de adição e subtração. No século XX, quando Niklaus Wirth inventou uma linguagem de programação estruturada, deu-lhe o nonie Pas­cal, em homenagem ao inventor da primeira calculadora mecânica.

• No final do século X V I I , o matemático alemão Gottfried Leibnitz inventou uma calculado­ra mecânica mais sofisticada, que podia fazer multiplicações e divisões, além de adições e subtrações. Essa calculadora foi chamada Roda de Leibnitz.

• A primeira máquina que utilizou a ideia de armazenamento e programação foi o tear de Jacquard, inventado por Joseph-Marie Jacquard, no início do século X I X . O tear utilizava cartões perfurados (como um programa armazenado) para controlar o aumento dos fios da urdidura na fabricação de tecidos.

• Em 1823, Charles Babbage inventou a Máquina Diferencial, que podia fazer mais do que simples operações aritméticas - também resolvia equações polinomiais. Posteriormente, ele inventou a chamada Máquina Analítica, que, até certo ponto, compara-se à ideia dos computadores modernos. Ela tinha quatro componentes: uma engrenagem (correspondente a uma moderna ULA), um local de armazenamento (memória), um operador (unidade de controle) e saída (entrada/saída).

• Em 1890, Herman Hollerith, trabalhando no Ministério de Recenseamento dos Estados Unidos, projetou e construiu uma máquina programável que podia, automaticamente, ler, registrar e ordenar dados armazenados em cartões perfurados.

O nascimento dos computadores eletrônicos (1930 - 1950) Entre 1930 e 1950, vários computadores foram inventados por cientistas, que podem ser con­siderados os pioneiros da indústria dos computadores.

Os primeiros computadores eletrônicos Os primeiros computadores desse período não ar­mazenavam o programa na memória - todos eram programados externamente. Cinco computa­dores tornaram-se proeminentes durante esses anos:

• O primeiro computador de propósito específico, que codificava as informações eletrica-mente, foi inventado por John V. Atanasoff e seu assistente, Clifford Beriy, em 1939. Cha­mado ABC (Atanasoff Berry Computer), foi projetado especificamente para resolver um sistema de equações lineares.

• Ao mesmo tempo, um matemático alemão chamado Konrad Zuse projetou uma imáquina de propósito geral, chamada Z l .

• Na década de 1930, a Marinha dos Estados Unidos e a IBM patrocinaram um projeto na Harvard University, sob a direção de Howard Aiken, para construir um computador chama­do Mark I , que utilizava componentes elétricos e mecânicos.

• Na Inglaterra, Alan Turing inventou um computador chamado Colossus, que foi projetado para decifrar o código conhecido como German Enigma (Enigma Alemão).

• O primeiro coniputador de propósito geral, totalmente eletrônico, foi fabricado por .lohn Mauchly e J. Presper Eckert, chamado ENIAC (Electronic Numerical Integrator and Cal-culator, ou calculadora e integradora numérica eletrônica). Ele foi concluído em 1946, uti­lizava 18 mil tubos de vácuo, media 30 metros de comprimento por 3 metros de altura e pesava 30 toneladas.

Computadores baseados no modelo de von Neumann Os cinco computadores preceden­tes utilizavam memória somente para armazenamento de dados e eram programados externa­mente, utilizando fios ou comutadores. John von Neumann propôs que o programa e os dados deveriam ser armazenados na memória. Dessa maneira, todas as vezes que utilizamos um com-

Inti

putador para realizar uma nova tarefa, precisamos somente modificar o prc religar a máquina ou ligar e desligar centenas de comutadores.

O primeiro computador com base nas ideias de von Neumann, char fabricado em 1950, na University of Pennsylvania. Ao mesmo tempo, um cc EDSAC, foi construído por Maurice Wilkes, na Cambridge University, na l i

Gerações de computadores (1950 - época atual) Os computadores construídos depois de 1950 seguiram, aproximadamente, Neumann. Apesar de se tornarem mais rápidos, menores e mais baratos, o pn mesmo. Historiadores dividem esse período em gerações, sendo que cada ui nhou alguma importante transformação em hardware ou software (mas não i

Primeira geração A primeira geração (aproximadamente de 1950 a 1959 peio surgimento de computadores comerciais. Durante essa época, eles eram te por profissionais. Ficavam trancados em salas com acesso limitado somen especialista. Tais computadores eram muito volumosos e utilizavam tubos de ves eletrônicas. Naquele tempo, eram acessíveis somente às grandes organizai

Segunda geração Os computadores da segunda geração (aproximadamente utilizavam transistores, em vez de tubos de vácuo. Isso reduziu seu tamanhc custo, e os tornou mais acessíveis para as companhias de pequeno e médii linguagens de programação de alto nível, Fortran e Cobol (veja o Capítulo 9), e tornaram a programação mais fácil; separavam a tarefa de programação d; computadores. Um engenheiro civil, por exemplo, poderia escrever um p tran para resolver um problema, sem se envolver com os detalhes eletrônic do computador.

Terceira geração A invenção dos circuitos integrados (transistores, fiação nentes em um único chip) reduziu ainda mais o custo e o tamanho dos compu computadores, então, surgiram no mercado. Programas "enlatados",' popularr como pacotes de software, tornaram-se disponíveis. Uma pequena corporaç; um pacote, por exemplo, para contabilidade, em vez de precisar escrever seu f Surgiu, então, uma nova indústria, a de software. Esta geração durou, apro: 1965 a 1975.

Quarta geração A quarta geração (a proximadamente de 1975 a 1985) viu microcompittadores.

A primeira calculadora desktop, o Altair 8800, tornou-se disponível em i indústria eletrônica permitiram que completos subsistemas de computadores uma única placa de circuito. Esta geração também viu o aparecimento das rede res (veja o Capítulo 6).

Quinta geração Esta é a atual, começou em 1985 e ainda não terminou. Ela te o surgimento dos computadores laptop e palmtop, o desenvolvimento de aperl meios de armazenamento secundário (CD-ROM, D V D e assim por diante), o u e o fenómeno da realidade virtual.

' O termo enhuado refere-se a um produto de prateleira, comercializado em lotes, feito para dos interessados, em sentido contrário ao produto feito exclusivamente para determinado u;

Page 6: Introdução - professorleomir.files.wordpress.com · armazenados na memória. Na verdade, são armazenados como padrões binários na memória - uma sequência de Os e Is. Execução

rundamentoj da ciência da computação

1.5 QUESTÕES SOCIAIS E ÉTICAS A ciência da computação gerou algumas questões periféricas, sendo que as mais prevalentes podem ser categorizadas como sociais e éticas.

Questões sociais Os computadores têm criado alguma controvérsia. Apresentamos aqui algumas dessas questões.

Dependência A ciência da computação vem transformando, definitivamente, nossa socieda­de. Com base em alguns estudos, sabe-se que mais da metade dos lares nos Estados Unidos utiliz^a um computador para acessar a Internet. Isso significa que uma sociedade na qual a maio­ria das pessoas tem acesso a um computador é considerada uma sociedade melhor? Algumas pessoas acreditam que o uso de computadores é inevitável na vida de todos e que a vida é mais difícil sem ele; ao passo que outras pensam que os computadores têm criado um tipo de depen­dência. Este último grupo considera que essa nova dependência, assim como outras, torna a vida das pessoas mais difícil.

Justiça social A justiça social é outro assunto do qual frequentemente ouvimos falar. Os de­fensores dessa cjuestão argumentam qtie a utilização de computadores nos lares é um luxo peio qual nem todas as pessoas podem pagar. O custo de um computador, dos dispositivos periféricos e o pagamento de uma taxa mensal pelo acesso à Internet representam uma carga extra para quem tem um baixo salário. Isso significa que os computadores criaram um serviço somente para pessoas com salário médio ou alto, enquanto aquelas com baixo salário são privadas desse recurso. Os oponentes dessa ideia argumentam que a mesma questão foi aplicada quando outros serviços de comunicação foram criados, como o telefone e a televisão. Esse grupo defende que, com o avanço da tecnologia, um dia, todas as pessoas terão condições de pagar por um compu­tador e pelo acesso à Internet.

Divisão digitai O conceito de divisão digital abrange as questões da dependência e da justiça social discutidas anteriormente. Esse conceito divide a sociedade em dois grupos: aqueles que estão eletronicamente conectados ao restante da sociedade e aqueles que não estão. Alguém do primeiro grupo se comunica com outros membros por e-mail e utiliza a Internet para negócios e entretenimento. Alguém do segtmdo grupo utiliza o correio tradicional e o telefone para suas comunicações, e gosta de ir ao cinema para ver um filme, em vez de f;izer seu download pela rede. Gradualmente, essa divisão digital está desaparecendo nos países industrializados, mas especialis­tas acreditam que ela ainda permanecerá por muito tempo nos países em desenvolvimento.

Questões éticas Os computadores geraram diversas questões éticas. Apresentamos algumas delas aqui.

Privacidade Os computadores possibilitam que a comunicação entre dois pontos seja rea­lizada eletronicamente. Contudo, muitas coisas são necessárias para que esse tipo de co­municação tenha sua privacidade assegurada. A sociedade está pagando um alto preço pela comunicação eletrônica privada. A segurança de redes (Capítulo 16) pode criar esse tipo dc privacidade, mas é preciso um grande esforço e seu custo é elevado.

Copyright Outro aspecto ético em uma sociedade computadorizada é o copyright: de quem são os dados? A Internet tem criado oportunidades para compartilhar ideias, mas também criou outra questão ética: o copyright eletrônico.

Crime por computador Assim como qualquer inovação, os computadores e a tecnologia da informação possibilitaram a criação de novos tipos de crimes. Os hackers têm sido capazes de

Introdução 11

acessar muitos computadores, no mundo todo, e roubar muito dinheiro. Os criadores de vírus projetam novos vírus para ser enviados pela Internet e danificar as informações armazenadas em computadores. Embora atualmente existam muitos programas antivírus sendo utilizados, a sociedade está sofrendo muito com esse tipo de crime, que não existia antes da era dos com­putadores e da Internet.

1.6 A CIÊNCIA DA COMPUTAÇÃO COMO UMA DISCIPLINA Com a invenção dos computadores, uma nova disciplina foi desenvolvida: a ciência da computa­ção. Como acontece com qualquer outra disciplina, a ciência da computação, atualmente, está dividida em diversas áreas. Podemos dividi-las em duas categorias amplas: áreas de sistemas e áreas de aplicações. As primeiras incluem aquelas que estão diretamente relacionadas à criação de hardware e software, como arquitetura e redes de computadores, questões de segurança, siste­mas operacionais, algoritmos, lingiuigens de programação e engenharia de software. As segundas abrangem aquelas referentes ao uso de computadores, como bancos de dados e inteligência artificiai Este livro é uma abordagem direcionada a todas essas áreas. Depois de lê-lo, o leitor terá informações suficientes para escolher a área de especialidade desejada.

1.7 ESBOÇO DO CURSO Depois deste capítulo introdutório, o livro é dividido em cinco partes.

Parte I: representação e operação sobre dacios Esta parte inclui os capítulos 2, 3 e 4. O Capítulo 2 discute sistemas de numeração: como uma quantidade pode ser representada utilizando símbolos. O 3 aborda como diferentes dados são armazenados dentro do computador, e o 4 trata de algumas operações primitivas sobre bits.

Parte II: hardware Esta parte inclui o Capítulo 5, que dá uma ideia geral de hardware, discutindo diferentes orga­nizações de computadores; e o 6, que mostra como computadores individuais são conectados para formar redes e inter-redes (internets): em particular, esse capítulo explora alguns assuntos relacionados à Internet e suas aplicações.

Parte III: software de computador Esta parte inclui os capítulos 7, 8, 9 e 10. O Capítulo 7 trata de sistemas operacionais, o soft­ware do sistema que controla o acesso ao hardware pelos usuários - sejam pessoas ou programas de aplicações. O 8 mostra como a solução de problemas é reduzida ao escrever um algoritmo para o problema. O 9 aborda um conjunto de linguagens de programação contemporâneas. Por fim, o Capítulo 10 é uma revisão da engenharia de software, a abordagem da engenharia para o desenvolvimento de software.

Parte IV: organização e abstração de dados Esta complementa a Parte 1. Na ciência da computação, dados atómicos são agrupados em regis­tros, arquivos e bancos de dados. A abstração de dados permite que o programador crie noções abstratas sobre dados. Esta parte inclui os capítulos 11, 12, 13 e 14. O Capítulo 11 discute estruturas de dados, agrupando dados do mesmo tipo ou de diferentes tipos, em uma categoria. O 12 analisa tipos de dados abstratos. O 13 mostra como diferentes estruturas de arquivos po­dem ser utilizadas para diferentes propósitos. E, por fim, o 14 trata de bancos de dados.

Page 7: Introdução - professorleomir.files.wordpress.com · armazenados na memória. Na verdade, são armazenados como padrões binários na memória - uma sequência de Os e Is. Execução

Fundamentos da ciência da computação

Parte V: tópicos avançados Esta parte apresenta uma visão geral de tópicos avançados, ou seja, tópicos que os alunos de ciência da computação encontrarão em seu aprendizado. Ela abrange os capítulos 15, 16, 17 e 18. O Capítulo 15 discute a compressão de dados, que é importante nas comunicações de dados da atualidade. O 16 explora algumas questões relacionadas à segurança, que está se tornando cada vez mais importante quando nos comunicamos por meio de canais que não proporcionam segurança. O 17 aborda a teoria da computação: o que pode e o que não pode ser computado. Por fim, o 18 fornece uma ideia da inteligência artificial, um assunto que apresenta os desafios do dia a dia na ciência da computação.

1.8 LEITURA RECOMENDADA Para saber mais detalhes sobre os temas discutidos neste capítulo, são recomendados os seguin­tes livros:

• Schneider, G. M.; Gersting, J. L. Invitation to Computer Science. Boston, MA: Course Technology, 2004

• Dale, N. ; Lewis, J. Computer Science Illuminaied. Sudbury, MA: Jones e Bartlett, 2004

• Patt, Y.; Patel, S. Introduction to Computing Systems. Nova York: McGraw-Hill, 2004

1.9 TERMOS PRINCIPAIS Este capítulo apresentou os seguintes termos principais, que são enumerados aqui com as páginas nas quais ocorrem pela primeira vez:

algoritmo 7

dados de entrada 2

divisão digital 10

instruções 5

memória 4

modelo de von Neumann 1

programa 2

unidade de controle 4

circuitos integrados 9

dados de saída 2

engenharia de software 7 i . ':

linguagens de computador 7

modelo de Turing 1 •• • • <

processador de dados 2 sistema operacional 7

unidade de lógica e aritmética (UIA) 4

1.10 RESUMO • A ideia de um dispositivo computacional univer­

sal foi apresentada pela primeira vez por Alan Turing, em 1937. Ele propôs que todos os cálcu­los podem ser realizados por um tipo especial de máquina, agora chamada Máquina de Turing.

• O modelo de von Neumann define um compu­tador como quatro subsistemas: memória, uni­dade de lógica e aritmética, unidade de controle e entrada/saída. Esse modelo determina que o programa dt-ve ser armazenado na memória.

• Podemos pensar em um computador como sen­do formado por três componentes: hardware, dados e software.

• A história da computação e dos computado­res pode ser dividida em três períodos: o das máquinas mecânicas (antes de 1930), o dos computadores eletrônicos (1930-1950) e o que inclui cinco modernas gerações de compu­tadores.

• A ciência da computação tem criado algumas questões periféricas, sendo que as mais impor­tantes podem ser categorizadas como sociais e éticas.

' Com a invenção dos computadores, uma nova disciplina tem se desenvolvido. É a ciência da computação, atualmente dividida em diversas áreas.

Introdução jJB I

1.11 CONJUNTO DE PRÁTICAS Questões para análise 1. Defina um computador com base no modelo

de Turing. 2. Defina um computador com base no modelo

de von Neumann. 3. Qual é a fimção de um programa em um com­

putador baseado no modelo de Turing? 4. Qual é â função de um programa em um com­

putador baseado no modelo de von Neumann? 5. Quais são os vários subsistemas de um com­

putador? 6. Qual é a função do subsistema de memória? 7. Qual é a função do subsistema da ULA? 8. Qual é a função do subsistema da unidade de

controle? 9. Qual é a função do subsistema de entrada/

saída? 10. Descreva brevemente as cinco gerações de

computadores.

Questões de múltipla escolha 11. o modelo de é a base para os compu­

tadores atuais. a. Leibnitz b. von Neumann c. Pascal d. Charles Babbage

12. Em um computador, o subsistema de armazena dados e programas. a. ULA b. Entrada/saída c. Memória d. Unidade de controle

13. Em um computador, o subsistema de realiza cálculos e operações lógicas. a. ULA b. Entrada/saída c. Memória d. Unidade de controle

14. Em um computador, o subsistema de aceita dados e programas e envia resultados de processamento para os dispositivos de saída. a. ULA b. Entrada/saída c. Memória d. Unidade de controle

1 5. Em um computador, o subsistema de serve como um gerenciador dos outros subsis­temas. a. ULA b. Entrada/saída c. Memória d. Unidade de controle

16. De acordo com o modelo de von Neumann, são armazenados na memória.

a. Somente dados h. Somente programas c. Dados e programas d. (Nenhuma das anteriores)

17. Uma solução passo a passo para um problema é chamada de . a. Hardvk are b. Sistema operacional c. Linguagem de computador d. Algoritmo

18. Fortran e Cobol são exemplos de . a. Hardware b. Sistemas operacionais c. Linguagens de computador d. Algoritmos

19. Uma máquina de computação do século XVII, que poderia fazer adições e subtrações era

a. A calculadora Pascaline b. O tear de Jacquard c. A Máquina Analítica d. A Máquina de Babbage

20. é um conjunto de instruções em uma linguagem de computador que diz ao compu­tador o que fazer com os dados. a. Um sistema operacional b. Um algoritmo c. Um processador de dados d. Um programa

21. é o projeto e a escrita de um progra­ma, de forma estruturada. a. Engenharia de software b. Engenharia de hardware c. Desenvolvimento de algoritmo d. Arquitetura instrucional

22. O primeiro computador eletrônico de propó­sito específico foi chamado . a. Pascal b. Pascaline c. ABC d. ENIAC

23. Um dos primeiros computadores com base no modelo de von Neumann foi chamado

a. Pascal b. Pascaline c. ABC d. EDVAC

24. A primeira máquina de computação a utilizar a ideia de armazenamento e programação foi chamada . a. Madeline b. EDVAC

Page 8: Introdução - professorleomir.files.wordpress.com · armazenados na memória. Na verdade, são armazenados como padrões binários na memória - uma sequência de Os e Is. Execução

Fundamentos da ciência da computação

c. Máquina de Babbage d. Tear de Jacquard

25. separam a tarefa de programação das tarefas de operação dos computadores. a. Algoritmos b. Processadores de dados c. Linguagens de programação de alto nível d. Sistemas operacionais

Exercícios 26. Explique por que um computador não pode

resolver um problema para o qual não existe solução fora dele.

27. Se um computador pequeno e barato pode fazer as mesmas coisas que um grande e caro faz, por que as pessoas precisam ter um com­putador grande?

28. Pesquise e descubra se a calculadora Pascaline é um computador, de acordo com o modelo de Turing.

29. Pesquise e descubra se a Roda de Leibnitz é um computador, de acordo com o modelo de Turing.

30. Pesquise e descubra se o tear de Jacquard é um computador, de acordo com o modelo de Turing.

31. Pesquise e descubra se a Máquina Analítica de Babbage é um computador, de acordo com o modelo de von Neumann.

32. Pesquise sobre o computador ABC e descubra se ele seguiu o modelo de von Neumann.

33. Pesquise e descubra em qual geração dc com­putadores os teclados se originaram.

34. Pesquise e descubra em qual geração de com­putadores as impressoras se originaram.

35. De acordo com o modelo de von Neumann, atualmente o disco rígido pode ser utilizado como entrada ou saída? Explique.

36. Uma linguagem de programação tem dez di­ferentes instruções. Quantos programas com cinco instruções podem ser escritos nesta lin­guagem, se nenhuma instrução for repetida? E quantos programas com sete instruções?

37. Atualmente, o que é mais valioso para uma organização: liardware, software ou dados?

Sistemas de numeração

Este capítulo é um prelúclio dos capítulos 3 e 4. No Capítulo 3, mostraremos como os dados são armazenados no computador. No 4, abordaremos como operações lógicas e aritméticas são realizadas sobre os dados. Este capítulo é uma preparação para o entendimento do conteúdo dos próximos dois. Os leitores que conhecem os sistemas de numeração podem passar diretamente para o Capítulo 3, sem perder a contintiidade. Observe que os sistemas dc numeração aqui dis­cutidos são "representações feitas com papel e lápis"; no próximo capítulo, trataremos de como esses números são armazenados cm um computador.

Objetivos Depois de estudar este capítulo, o aluno será capaz de:

• Compreender o conceito de sistemas de numeração.

• Distinguir entre sistemas de nuineração não posicionais e posicionais.

Q Descrever o sistema decimal (de base 10}.

• Descrever o sistema binário (de base 2).

• Descrever o sistema hexadecimal (de base 16).

• Descrever o sistema octal (de base 8].

• Converter um número no sistema binário, octal ou hexadecimal para um número no siste­ma decimal.

• Converter um número no sistema decimal, octal ou hexadecimal para um número no siste­ma binário.

• Converter um número no sistema binário para o sistema octal e vice-versa.

• Converter um número no sistema binário para o sistema hexadecimal e vicc-versa.

• Descobrir o número de dígitos neces.sários em cada sistema para representar determina­do valor.