Table Of Content?.? DESCRIÇÃO DO SUBTÍTULO 1
CIÊNCIA DA
COMPUTAÇÃO
2 CAPÍTULO ? DESCRIÇÃO DO CAPÍTULO
BB887733cc BBrrooookksshheeaarr,, JJ.. GGlleennnn.
CCiiêênncciiaa ddaa c coommppuutataççããoo: u [mreacu vrissãoo e alebtrraônngiceon]t e: u/ mJ. Ga lveinsãno
Barboroaknsgheenatre; —/ Jt.r Gadle. nCnh eBnrogo Mksehi eLaere .; —tr a7d.eudç.ã —o CPohretnog A Mlegeri eL:ee. –
BDoaodkoms aenle,t 2rô0n0i5co.s. – 7 ed. – Porto Alegre : Bookman, 2008.
EISdBitNa d9o7 8ta-8m5-b3é6m3- 0co4m38o-0 livro impresso em 2005.
ISBN 978-85-7780-314-9
1. Ciência da computação — Introdução. I. Título.
1. Ciência da computação – Introdução. I. Título.
CDU 004.02/.457
CDU 004
Catalogação na publicação: Mônica Ballejo Canto — CRB 10/1023
Catalogação na publicação: Mônica Ballejo Canto – CRB 10/1023
J. GLENN BR?.?ODESOCRIÇÃKO DOSSUBHTÍTULEO AR3
CIÊNCIA DA
COMPUTAÇÃO
UMA VISÃO ABRANGENTE
7ª
EDIÇÃO
Tradução:
CHENG MEI LEE
Consultoria, supervisão e revisão técnica desta edição:
JOÃO CARLOS DE ASSIS RIBEIRO DE OLIVEIRA
Mestre em Informática pela PUC/RJ
Professor do Departamento de Ciência da Computação da UFJF
Versão impressa
desta obra: 2005
2008
4 CAPÍTULO ? DESCRIÇOÃbOra DoOrigiCnAalPmÍTenUtLeO publicada sob o título
Computer Science: An Overview, 7/ed;
BROOKSHEAR, J. GLENN
© 2003. Todos os direitos reservados.
Tradução autorizada a partir do original em língua inglesa,
publicado por Pearson Education, Inc., sob o selo Addison Wesley.
ISBN 0-201-78130-1
Capa:
GUSTAVO MACRI
Leitura final:
LETÍCIA V. ABREU DORNELLES
Supervisão editorial:
ARYSINHA JACQUES AFFONSO e DENISE WEBER NOWACZYK
Editoração e filmes:
WWW.GRAFLINE.COM.BR
Muitas das designações utilizadas pelos fabricantes e vendedores para distinguir seus produtos
são consideradas marcas comerciais. Todas as designações das quais a Addison-Wesley tinha
conhecimento foram impressas, neste livro, com a primeira letra (ou todas elas) em maiúscula.
Os programas e as aplicações neste livro foram incluídos por seu valor instrutivo. Embora
cuidadosamente testados, não foram escritos com uma determinada finalidade. Os editores se
isentam de qualquer responsabilidade em relação aos programas e às aplicações.
Reservados todos os direitos de publicação, em língua portuguesa, à
ARTMED® EDITORA S.A.
(BOOKMAN® COMPANHIA EDITORA é uma divisão da ARTMED® EDITORA S.A.)
Av. Jerônimo de Ornelas, 670 - Santana
90040-340 Porto Alegre RS
Fone (51) 3027-7000 Fax (51) 3027-7070
É proibida a duplicação ou reprodução deste volume, no todo ou em parte,
sob quaisquer formas ou por quaisquer meios (eletrônico, mecânico, gravação,
fotocópia, distribuição na Web e outros), sem permissão expressa da Editora.
SÃO PAULO
Av. Angélica, 1091 - Higienópolis
01227-100 São Paulo SP
Fone (11) 3665-1100 Fax (11) 3667-1333
SAC 0800-703-3444
IMPRESSO NO BRASIL
PRINTED IN BRAZIL
?.? DESCRIÇÃO DO SUBTÍTULO 5
Aos meus pais,
Garland e Reba Brookshear
?.? DESCRIÇÃO DO SUBTÍTULO 7
Prefácio
Este livro proporciona uma introdução à Ciência da Computação. Ele cobre o assunto com bastante
profundidade, de modo a transmitir uma apreciação justa sobre os tópicos envolvidos.
Audiência
Escrevi este texto para os estudantes da Ciência da Computação e de outras disciplinas. A maioria
dos estudantes da área inicia os seus estudos com a ilusão de que a Ciência da Computação se resume em
programação e navegação na Web, uma vez que isso é essencialmente o que ela viu. No entanto, a Ciência
da Computação é muito mais que isso. Assim, os iniciantes precisam conhecer em extensão o assunto no
qual desejam se especializar. Proporcionar essa exposição é o objetivo deste livro. Ele dá aos estudantes
uma visão abrangente da Ciência da Computação — o fundamento para que eles possam apreciar a
relevância e a interdependência das disciplinas que irão cursar.
O mesmo embasamento é necessário para os estudantes de outras áreas que devem se relacionar
na sociedade tecnológica em que vivem. Um curso sobre Ciência da Computação para eles deve prover
um entendimento fundamental que envolva todo o campo, em vez de uma mera introdução ao uso de
pacotes de software populares. Essa abordagem de apresentação é usada em cursos introdutórios às
ciências naturais e foi o modelo que tive em mente enquanto escrevia este texto. A facilidade de acesso a
pessoas de outras áreas foi um de meus principais objetivos. O resultado é que edições anteriores deste
livro têm sido usadas com sucesso em cursos para estudantes das mais variadas disciplinas. Esta edição
foi projetada visando dar continuidade a essa tradição.
Organização
Este texto segue uma abordagem de baixo para cima que progride do concreto ao abstrato — uma
ordem que resulta em uma apresentação pedagógica consistente, na qual cada tópico leva ao próximo. Ele
inicia com os fundamentos da arquitetura de computadores (Parte 1), progride com o software e seu proces-
so de desenvolvimento (Parte 2), explora os tópicos de organização de dados e seu armazenamento (Parte
3) e conclui considerando as aplicações correntes e futuras da tecnologia da computação (Parte 4).
Enquanto escrevia o texto, eu pensava em termos de desenvolvimento de um enredo. Em conseqüên-
cia, não me surpreende que muitos estudantes tenham afirmado que a leitura do texto foi parecida com
a de uma novela. Ainda assim, o texto é dividido em capítulos bem independentes e seções que podem ser
lidas como unidades isoladas (veja Figura 0.1 no Capítulo 0) ou rearranjadas para formar seqüências
alternativas de estudo. De fato, o livro é freqüentemente usado em cursos que cobrem o material em
diferentes ordens. As alternativas mais comuns iniciam com o material dos Capítulos 4 e 5 (“Algoritmos”
e “Linguagens de Programação”) e retornam aos capítulos iniciais, se desejado. Em contraste, sei de um
caso em que o início é com o material sobre computabilidade, do Capítulo 11. (Ainda em outra instância,
o texto tem sido usado em cursos senior capstone*, e serve como espinha dorsal a partir da qual os estu-
*N. de R. Semelhante a um curso de especialização.
8VIII CPRAEPFÍTÁUCLIOO? DESCRIÇÃO DO CAPÍTULO
dantes partem em projetos que abrangem diversas áreas). Sugiro a seguinte seqüência para quem deseja
simplesmente uma visão condensada da novela:
Seção Tópico
1.1-1.4 Básico em codificação e armazenamento de dados
2.1-2.3 Arquitetura e linguagem de máquina
3.1-3.3, 3.5, 3.7 Sistemas operacionais e redes
4.1-4.4 Algoritmos e projeto de algoritmos
5.1-5.4 Linguagens de programação
6.1-6.2 Engenharia de software
7.1-7.2 Estruturas elementares de dados
8.1-8.2 Estruturas elementares de arquivos
9.1-9.2, 9.6 Introdução à tecnologia de banco de dados
10.1-10.3 Inteligência artificial
11.1-11.2 Computabilidade
Além do enredo geral, há vários temas costurados ao longo do texto. Um deles é que a Ciência da
Computação é dinâmica. O texto reiteradamente apresenta os tópicos em uma perspectiva histórica,
discute o estado da arte e indica direções de pesquisa corrente. Outro tema é o papel da abstração e a
maneira como as ferramentas abstratas são usadas para controlar a complexidade.
Sítios da Web
Este texto é apoiado pelo sítio no endereço http://www.aw.com/brookshear, sítio oficial
mantido pela Addison-Wesley. Ali você encontrará materiais para estudantes e professores, tais como
software de apoio (por exemplo, simuladores para a máquina usada como exemplo no Capítulo 2 e des-
crita no Apêndice C), manuais de laboratório, vínculos com tópicos adicionais de interesse, um guia do
instrutor e transparências PowerPoint. Talvez você também queira conferir meu sítio pessoal na Web no
endereço http://mscs.mu.edu/~glennb. Ele não é muito formal (e está sujeito a meus caprichos),
mas procuro manter lá alguma informação que você possa achar útil.
Aos estudantes
Fui introduzido no campo da computação durante minha estadia na marinha americana em fins
da década de 1960 e início de 1970. (Sim, isso me deixa velho — mas acontecerá com você também.
Além disso, a velhice me torna sensato, portanto você deve ouvir o que tenho a dizer.) Passei a maior
parte desse tempo fazendo manutenção do sistema de software na instalação de computação da marinha
em Londres, Inglaterra. Completada a minha estadia, retornei à Universidade e terminei meu doutorado
em 1975. Desde então, tenho ensinado Ciência da Computação e Matemática.
Muita coisa mudou na Ciência da Computação ao longo dos anos, mas outro tanto permaneceu.
Em especial, a Ciência da Computação era e ainda é fascinante. Há muitas coisas impressionantes acon-
tecendo nela. O desenvolvimento da Internet, o progresso da inteligência artificial e a capacidade de
coletar e disseminar a informação em proporções surpreendentes são apenas algumas coisas que afetarão
a sua vida. Você vive em um mundo excitante, em constante mutação e tem a oportunidade de ser parte
da ação. Assuma!
Sou um pouco não-conformista (alguns amigos diriam mais que um pouco); por isso, quando decidi
escrever este texto, nem sempre segui as recomendações recebidas. Em especial, muitos argumentaram que
alguns materiais são muito avançados para iniciantes. Entretanto, acredito que se um tópico é relevante, ele
não deixará de sê-lo pelo fato de a comunidade acadêmica considerá-lo “tópico avançado”. Você merece um
texto que apresente o quadro completo da Ciência da Computação — não uma visão aguada com apresen-
tações artificialmente simplificadas apenas dos tópicos considerados aceitáveis para iniciantes.