ebook img

Estrutura de Dados e Técnicas de Programação PDF

403 Pages·2013·51.55 MB·Portuguese
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Estrutura de Dados e Técnicas de Programação

ESTRUTURA DE DADOS E TÉCNICAS DE PROGRAMAÇÃO ESTRUTURA DE DADOS E TÉCNICAS DE PROGRAMAÇÃO 1. ed. Dilermando Piva Junior Gilberto Shigueo Nakamiti Ricardo Luís de Freitas Leandro Alonso Xastre Francisco Bianchi © 2014, Elsevier Editora Ltda. Todos os direitos reservados e protegidos pela Lei n° 9.610, de 19/02/1998. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros. Copidesque: Andréa Vidal de Miranda Revisão: Casa Editorial BBM Editoração Eletrônica: Thomson Digital Elsevier Editora Ltda. Conhecimento sem Fronteiras Rua Sete de Setembro, 111 – 16° andar 20050-006 – Centro – Rio de Janeiro – RJ – Brasil Rua Quintana, 753 – 8° andar 04569-011 – Brooklin – São Paulo – SP Serviço de Atendimento ao Cliente 0800-026-5340 [email protected] ISBN: 978-85-352-7437-0 ISBN (versão digital): 978-85-352-7438-7 Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem ocorrer erros de digitação, impressão ou dúvida conceitual. Em qualquer das hipóteses, solicitamos a comunicação ao nosso Serviço de Atendimento ao Cliente, para que possamos esclarecer ou encaminhar a questão. Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens, originados do uso desta publicação. CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ E85 Estrutura de dados e técnicas de programação / Dilermando Piva Junior ... [et al.]. - 1. ed. - Rio de Janeiro : Elsevier, 2014. 24 cm. ISBN 978-85-352-7437-0 1. Estruturas de dados (Computação). 2. Programação (Computadores). I. Piva Junior, Dilermando. II. Título. 14-10204 CDD: 005.1 CDU: 004.42 Essa obra é dedicada aos nossos mestres, que semearam em nossas mentes o desejo incansável pela busca contínua do conhecimento. Aos nossos alunos, com a esperança de que herdem com alegria e perseverança essa responsabilidade e a propaguem. Agradecimentos Agradecemos às nossas famílias, que sempre nos apoiaram, incondicionalmente. Prefácio Entre as áreas do conhecimento e as atividades humanas, talvez nenhuma supere a Computação quanto à convergência entre simplicidade e complexidade. Des- de seu início, a computação tem-se revelado como a busca de caminhos simples e eficientes para resolver desafios amplos, diversos e complexos. Essa lógica se ajusta com perfeição ao tratamento das estruturas de dados enfeixado neste livro. A complexidade abriga-se no tema. Mesmo considerando o conhecimento de uma linguagem de programação suficientemente para a construção de algoritmos que respondam a determinados problemas, é preciso não esquecer que a solução de pro- blemas mais complexos exige o conhecimento e a aplicação da teoria de estruturas de dados, ainda que se tenha um conhecimento avançado de todos os recursos que uma linguagem oferece. Não é por outra razão que o assunto constitui elemento fundamental nos currículos dos Cursos de Computação. Assim retratado pela primeira vez em 1968, lembrando que Donald E. Knuth desponta como pioneiro na apresentação e tratamento coerente das estruturas de dados lineares (listas, filas e pilhas) e as não lineares (árvores e grafos), tanto na representação sequencial quanto naquela classificada como ligada. Neste livro, o assunto é oportunamente retomado para atender demandas e expectativas da comunidade acadêmica e de todos quantos se interessam pelo conhecimento teórico da Computação. Donos de admiração pela competência ates- tada curricularmente, têm os autores meu carinho, enquanto colegas docentes na PUC-Campinas, bem como minha admiração, pelo modo simples e, por isso mesmo, tão claro e compreensível que desenvolveram para tratar a imensa complexidade que se aloja no estudo e no entendimento das estruturas de dados. Optando por caminho diverso, os autores transformam escrita em conversa e, já nas primeiras páginas, conseguem engajar o leitor em uma dinâmica troca de ideias, consolidando intuitivamente a compreensão do tema, à medida que a posição ativa de interlocutor substitui a condição passiva de receptor. Além de qualificar a forma, a simplicidade também alinhava o conteúdo, em es- pecial quanto a situações, analogias e exemplos apresentados ao leitor. Estimulando a x Prefácio reflexão sobre funções e características das estruturas de dados sob a ótica de coisas e fatos do cotidiano, os autores transformam assuntos triviais em ferramentas indutivas e muito eficientes para acionar as engrenagens cognitivas do leitor e, por assim dizer, construir, camada após camada, mutuamente apoiadas, o entendimento do tema. Seja pelo tema de que trata, seja pelo modo como o faz, o livro certamente vai des- pertar interesse de alunos e professores de Computação. Para aqueles que ensinam, cabe assinalar o modo muito peculiar e apropriado para o ambiente de sala de aula que a obra estabelece entre teoria e prática. Não se trata, portanto, de uma relação consequencial de teoria, apresentada a priori, seguida de possíveis aplicabilidades práticas. Buscando horizontes pedagógicos mais eficientes, o livro força um diálogo interativo entre o campo teórico e o terreno da prática. Trata-se de compreender a teoria a partir da observação funcional (operativa) da realidade. E para aqueles que aprendem com este livro, registre-se a facilidade e o envolvimento no processo de ensino-aprendizagem, possibilitando-lhes a aquisição de profundo conhecimento sobre o tema. Priorizando, ainda, a indicação desta obra para professores de Computação, cabe ressaltar que, aqui, a simplicidade caracterizadora da linguagem não significa que os temas sejam apenas superficialmente tangidos. Ao contrário, raciocinar por veredas mais objetivas significa caminhar mais à frente em direção à essência do assunto, per- mitindo destrinchar a complexidade das teorias que dão conta das estruturas de dados. Seja porque os autores são conhecedores aquilatados do tema, seja porque a obra tem viés assumidamente pedagógico, seja, enfim, porque a compreensão verdadeira de tudo quanto nos cerca passa, obrigatoriamente, pelos domínios da teoria, nestas páginas simplicidade não é sinônimo de epidérmico, nem antônimo de complexo, ao mesmo tempo em que prática e teoria não se digladiam, completam-se. Animado por exercícios e desafios apresentados ao leitor de modo muito próximo à estrutura de fases e passos próprios dos jogos eletrônicos, o livro transpira o universo da Informática em todas as páginas, incluindo endereços e sugestões que remetem o leitor ao ambiente virtual, para que possa ampliar suas fontes de informação e conhecer mais sobre os temas abordados no livro. Navegar pelas páginas certamente vai propiciar ao leitor engajamento em um diálogo estimulante resultando em mais conhecimento sobre um tema fundamental da área, que se torna mais interessante e intrigante tanto mais dele sabemos e nele atuamos. Profa. Dra. Angela de Mendonça Engelbrecht Reitora da PUC-Campinas e professora titular de Computação do Centro de Ciências Exatas, Ambientais e de Tecnologias (CEATEC). Graduada e Mestre em Ciência da Computação pela Universidade de São Paulo (USP) e doutora em Engenharia Elétrica pela Universidade Estadual de Campinas (UNICAMP). 1 o l u t í p a c Tipo de dado abstrato “ [...] A abstração é nossa mais importante ferramenta mental para lidar com a complexidade. Portanto, um problema complexo não poderia ser visto imediatamente em termos de instruções de computador [...] mas, antes, em termos de entidades naturais ao próprio problema, abstraído “ de maneira adequada. Niklaus Wirth (1989) O significado da palavra abstrair, segundo o Dicionário Aurélio, é considerar isoladamente um ou mais elementos de um todo. Assim, em programação, abstrair é imaginar um problema maior dividido em problemas menores, para resolvê-los isoladamente e, posteriormente, uni-los, produzindo a solução do problema. OBJETIVOS Ao final da leitura deste capítulo, o leitor deverá ser capaz de: DO CAPÍTULO j definir e usar tipos de dados primitivos e não primitivos; j utilizar as estruturas de dados como tipos de dados abstratos; j saber que trabalhar com abstração dos tipos de dados auxilia na compreensão do paradigma de programação orientada a objetos, sem entrar nos conceitos desse paradigma. 2 Estrutura de Dados e Técnicas de Programação Para começar O computador é considerado uma máquina abstrata, pois, independente- mente de saber como ele executa as tarefas, interessa saber o que ele pode executar. A abstração, em computação, é um conceito antigo, usado inicialmente para processos. SIMULA 67 foi a primeira linguagem com recursos para a abstração de dados. Barbara Liskov e Stephen Zilles (1974) definiram o conceito de tipo de dado abstrato como uma classe de objetos abstratos, afirmando: “... o que desejamos de uma abstração é um mecanismo que permita a expressão de detalhes relevantes e a supressão de detalhes ir- relevantes”. Eles destacaram, ainda, que abstração é um termo usado em vários segmentos e por várias pessoas como a chave para a construção de um bom projeto. Na engenharia de software, ao se adotar a divisão do problema em mó- dulos, se estabelecem níveis de abstração. No mais alto nível de abstração, os termos usados para a declaração são os do próprio ambiente do pro- blema. O mais baixo nível de abstração está mais próximo dos detalhes de implementação. A divisão de um problema maior em módulos não deve ser aleatória, e a arquitetura do software gerada pode variar de acordo com a diversidade de tendências, estilos e experiência de quem o projeta. Entretanto, há técnicas que auxiliam na construção dessa divisão, de forma que o resultado final

Description:
O núcleo básico de linguagem de programação na maioria dos cursos na área de computação é composto por Algoritmos e Estrutura de dados. Este livro tratará dos tópicos abordados na disciplina de Estrutura de Dados, uma continuação do livro anterior dos autores, que trata de Algoritmos e p
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.