• Nenhum resultado encontrado

ALGORITMOS E PROGRAMAÇÃO

N/A
N/A
Protected

Academic year: 2021

Share "ALGORITMOS E PROGRAMAÇÃO"

Copied!
20
0
0

Texto

(1)

P IVA | E NGELBRECHT | N AKAMITI | B IANCHI

Consulte nosso catálogo completo e últimos lançamentos em www.elsevier.com.br

DILERMANDO PIVA JR.

Graduado e Mestre em Computação pela PUC-Campinas. Mestre e Doutor em Engenharia Elétrica (automação) pela Unicamp. Atualmente é professor e pesquisador junto às Faculdades de Tecnologia de Itu e Indaiatuba (Unidades do Centro Paula Souza).

ANGELA DE MENDONÇA ENGELBRECHT

Graduada e Mestre em Ciência da Compu-tação pela USP e doutora em Engenharia Elétrica pela Unicamp. Atualmente é Professora Titular da Pontifícia Universida-de Católica Universida-de Campinas (PUC-Campinas).

GILBERTO S. NAKAMITI

Graduado em Ciência da Computação pela Unicamp, com mestrado e doutorado em Engenharia Elétrica, na área de Engenharia de Computação, também pela Unicamp. Atualmente é professor titular da Universidade Paulista (Unip) e da Pontifícia Universidade Católica de Campinas (PUC-Campinas).

FRANCISCO BIANCHI

Graduado em Ciências Econômicas, Mestre em Ciência da Informação e Mestre em Informática, pela PUC-Campi-nas. Especialista em Gestão da Seguran-ça da Informação. Analista de Sistemas formado pelo Centro Educacional da IBM-SP. Professor das Faculdades de Tecnologia de Itu e Sorocaba (Unidades do Centro Paula Souza).

Capa: Vinicius Dias | imagens: royyimzy@istock.com

www.elsevier.com.br

ALGORITMOS E PROGRAMAÇ

ÃO

DE COMPUT

ADORES

Esta obra, em sua 2ª edição revisada e ampliada, trata, com linguagem acessível, dos assuntos relacionados aos temas de algoritmos e do ensino de linguagens de programação de computadores, do básico ao complexo. Além disso, tomando como base metodologias mais ativas e voltadas ao público adulto, cada capítulo ou tema é trabalhado partindo-se de uma situação problema, passando pela resolução, ampliação do foco do tema, conceituação, reflexo nas linguagens e exercícios.

O conteúdo é pertinente a todos os cursos da área de computação e informática (cursos superiores e de nível técnico).

O livro é resultado de anos de experiência didática na área da disciplina (e lecionando a disciplina em grandes instituições).

A linguagem utilizada é direcionada a estudantes que ingressam nos cursos superiores ou alunos de cursos técnicos, ressaltando o contexto imagético que os alunos estão acostumados.

O livro sintetiza e direciona o foco de vários livros existentes no mercado podendo ser utilizado por uma gama maior de Instituições e profissionais da área de computação.

As aplicações são apresentadas em 5 linguagens de programação: Algo-ritmo, Pascal, C, Java e PHP.

A não limitação a uma linguagem específica permite que professores e estudantes extrapolem as barreiras de tempo e espaço e consigam um maior aprofundamento no processo de ensino-aprendizagem.

Esta obra trata do primeiro contato dos estudantes dos cursos de computação com a área de programação de computadores. Com uma linguagem fácil e acessível, e um ritmo de estudo adaptável, esta obra possibilita sua adoção nos mais diversos cursos da área de computação e informática, principalmente por tratar das aplicações computacionais em cinco linguagens distintas: Algoritmo, Pascal, C, Java e PHP. Além disso, a estruturação em 16 capítulos possibilita a adoção de um capítulo por semana nos mais diversos cursos técnicos e de graduação.

2

a

EDIÇÃO

D

ILERMANDO

P

IVA

J

R

A

NGELA DE

M

ENDONÇA

E

NGELBRECHT

G

ILBERTO

S

HIGUEO

N

AKAMITI

F

RANCISCO

B

IANCHI

ALGORITMOS E

PROGRAMAÇÃO

(2)

ALGORITMOS E

PROGRAMAÇÃO

DE COMPUTADORES

C0090.indd i

(3)

C0090.indd ii

(4)

2

a

EDIÇÃO

D

ILERMANDO

P

IVA

J

R

A

NGELA DE

M

ENDONÇA

E

NGELBRECHT

G

ILBERTO

S

HIGUEO

N

AKAMITI

F

RANCISCO

B

IANCHI

ALGORITMOS E

PROGRAMAÇÃO

(5)

© 2019, Elsevier Editora Ltda.

Todos os direitos reservados e protegidos pela Lei 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áfi cos, gravação ou quaisquer outros.

ISBN: 978-85-352-9248-0

ISBN (versão digital): 978-85-352-9249-7 Revisão tipográfi ca: Hugo de Lima Corrêa Editoração Eletrônica: Th omson Digital Elsevier Editora Ltda.

Conhecimento sem Fronteiras

Rua  da Assembleia, n° 100 – 6° andar – Sala 601 20011-904 – Centro – Rio de Janeiro – RJ Av. Dr. Chucri Zaidan, n° 296 – 23° andar 04583-110 – Brooklin – São Paulo – SP Serviço de Atendimento ao Cliente 0800 026 53 40

atendimento1@elsevier.com

Consulte nosso catálogo completo, os últimos lançamentos e os serviços exclusivos no site www.elsevier. com.br

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.

Para todos os efeitos legais, a Editora, os autores, os editores ou colaboradores relacionados a esta obra não assumem responsabilidade por qualquer dano/ou prejuízo causado a pessoas ou pro-priedades envolvendo responsabilidade pelo produto, negligência ou outros, ou advindos de qualquer uso ou aplicação de quaisquer métodos, produtos, instruções ou ideias contidos no conteúdo aqui publicado.

A Editora

CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ

A385 2. ed.

Algoritmos e programação de computadores / Dilermando Piva Jr ... [et al.]. 2. ed. -Rio de Janeiro : Elsevier, 2019.

528 p. ; 24 cm. Inclui glossário ISBN 9788535292480

1. Algoritmos. 2. Estruturas de dados (Programação). 3. Programação (Computadores). I. Piva Jr, Dilermando.

19-54953 CDD: 005.1 CDU: 004.421 Meri Gleice Rodrigues de Souza - Bibliotecária CRB-7/6439

30/01/2019 04/02/2019

C0095.indd iv

(6)

Esta obra é dedicada às nossas famílias e às pessoas que se dedicam à democratização do saber científi co e do cotidiano

e à disseminação de novos métodos de ensino-aprendizado.

C0100.indd v

(7)

C0100.indd vi

(8)

A

gradecemos às nossas famílias, que sempre nos apoiaram incondicio-nalmente.

Aos mestres, que nos instigam, e aos estudantes, que nos ofertam a pos-sibilidade de crescimento pessoal na busca contínua do conhecimento.

Agradecimentos

C0105.indd vii

(9)

C0105.indd viii

(10)

Este livro tem como objetivo ser o primeiro contato do estudante de cursos de computação com a área de programação. Sem trabalhar receitas prontas, o conteúdo instiga o aluno a pensar em ações e formas de estruturar soluções computacionais.

As aplicações computacionais são apresentadas em linguagem algorítmi-ca, bem como em quatro linguagens de programação: Pascal, C, Java e PHP. Este leque de opções permitirá que os professores escolham a linguagem mais conveniente ao curso.

Por estar centrado em tecnologias muito dinâmicas, conteúdo adicional atualizado poderá ser encontrado no site www.elsevier.com.br/apc. Exercí-cios, desafi os, temas para discussão e indicações de aprofundamento pos-sibilitarão a participação ativa dos leitores, promovendo, assim, a atualização constante do livro.

Boa leitura!

Nota dos autores

C0110.indd ix

(11)

C0110.indd x

(12)

Prefácio

M

esmo quando não é percebido, o conhecimento está implícito nas pequenas tarefas do cotidiano. Quando se trata da demanda do educador, entende-se a necessidade de um exercício permanente a fi m de romper barreiras para criar um ambiente favorável à construção do conhecimento na sala de aula. De nada adianta o discurso competente do educador, se este não estiver permeável às mudanças que ocorrem no âmbito da tecnologia e na maneira como os estudantes compreendem esse universo.

Em cursos de informática, a maior difi culdade encontrada por estudantes continua sendo o primeiro contato com a programação de computadores. A razão principal é que, pela primeira vez, o estudante será solicitado a pensar de forma detalhada sobre quais os passos necessários para a solução de um problema e, ainda, construir uma abstração que represente estes passos de forma que possa ser processado por um computador.

Assim, o desafi o de “ensinar” programação não é pequeno. Não pela complexidade do assunto, mas pela difi culdade em apresentá-lo de forma que sua “aprendizagem” ocorra de forma satisfatória.

É neste contexto que se insere este livro. A preocupação dos autores está focada tanto na organização dos capítulos, que podem ser facilmente associados às aulas num curso de graduação, quanto na forma de apresentação do conteúdo.

A sequência de capítulos proposta corresponde exatamente ao conteúdo abordado numa disciplina introdutória de programação. Organizado em dezesseis capítulos, cada unidade pode ser explorada num conjunto de aulas normalmente verifi cado numa semana dentro do período letivo.

Porém, a grande contribuição deste livro consiste principalmente na apresentação do conteúdo. Usando conceitos de linguagem dialógica, os autores procuram estabe-lecer um diálogo com o leitor e, ao iniciar cada capítulo com uma refl exão, oferecem um convite estimulante à leitura. Na sequência, apresentam de forma bastante explícita

C0115.indd xi

(13)

xii Algoritmos e programação de computadores

os objetivos de aprendizagem, informando ao leitor quais capacidades/habilidades serão desenvolvidas.

Em seguida, a proposição de um problema permite ao leitor contextualizar o assunto antes de conhecer os conceitos envolvidos. Dessa forma, o leitor assimila com maior facilidade os conceitos explorados, uma vez que já entendeu o contexto de aplicação. Dicas e conceitos são apresentados de forma destacada, o que facilita a leitura e fi xação do conteúdo. Depois que os conceitos foram apresentados, aborda-se a programação em si. Neste ponto, um destaque importante é que os problemas são resolvidos usando: uma linguagem algorítmica (VisuAlg), linguagem Pascal, linguagem C, linguagem Java e linguagem PHP. Essa variedade permite que o livro possa ser usado para o aprendizado, não apenas de lógica de programação, mas também das diferentes linguagens mencionadas. O capítulo continua com a proposta de exercícios e indicativos de material complementar ao estudo realizado. Por fi m, tem-se uma sinalização do que será visto no próximo capítulo, o que instiga o leitor à continuidade da leitura.

Com estrutura didática e contribuições signifi cativas, este livro aproxima-se do leitor para tornar o processo de aprendizagem de programação de computadores menos traumático, tornando a tarefa até mesmo prazerosa.

Prof. Dr. Ricardo Luis de Freitas

Diretor do Centro de Ciências Exatas, Ambientais e de Tecnologias (CEATEC) da Pontifícia Universidade Católica (PUC) de Campinas. Doutor em Engenharia Elétrica – Sistemas Eletrônicos pela Escola Politécnica da USP

C0115.indd xii

(14)

N

ossa viagem começa pelo Capítulo 1, onde é apresentado ao leitor o que é lógica e qual a sua relação com a construção de algoritmos. São apresentadas as características dos algoritmos e a sequência de passos necessária para a construção de soluções algorítmicas. Por fi m, os diversos ambientes de desenvolvimento, específi cos de cada linguagem de programação que será utilizada ao longo deste livro, são ilus-trados e mosilus-trados os passos para instalá-los e utilizá-los.

No Capítulo 2 são mostrados os passos e as ferramentas utilizadas para a resolução de problemas. Este capítulo mostra uma das ferramentas mais usadas para ilustrar a resolução de problemas: o fl uxograma. Por fi m, é ilustrada a relação existente entre fl uxograma e linguagem algorítmica.

A maioria dos problemas que se tenta resolver na área computacional tem um fundo matemático. A forma de descrição das soluções matemáticas é diferente da forma algorítmica. O Capítulo 3 mostra como compatibilizar a descrição algorítmica com a matemática, ilustrando processos de linearização de expressões matemáticas. O Capítulo 4 apresenta as diversas estruturas de dados existentes, sua importância e como utilizá-las para otimizar ao máximo o desenvolvimento de aplicações algorítmicas. No Capítulo 5 são apresentados os primeiros comandos para construção de pro-gramas. Com os comandos iniciais para a entrada e saída de dados, começaremos a escrever e executar um conjunto grande de programas nas linguagens de programação. Os comandos de entrada e saída são os responsáveis pela comunicação dos dados entre o usuário e o programa. Isto é, a partir dos dados de entrada o programa executará cálculos e os resultados obtidos poderão ser mostrados.

Avançando um pouco mais no aprendizado dos comandos, vamos encontrar no Capítulo 6 os comandos condicionais. Eles são comandos que permitem fazer des-vios no fl uxo do programa utilizando-se, para isso, uma determinada condição. Junto com esse capítulo aprenderemos também, para a construção da condição, o uso de expressões lógicas e relacionais.

Apresentação

C0120.indd xiii

(15)

xiv Algoritmos e programação de computadores

Complementando os comandos condicionais, no Capítulo 7 vamos aprender comandos condicionais mais complexos em que são combinados com outros coman-dos condicionais. Além desses, vamos aprender um comando condicional que permite, a partir de uma condição, listar um conjunto de opções a ser escolhida (uma ou mais). Esse comando é conhecido como comando de seleção.

No Capítulo 8 veremos os últimos comandos, de um conjunto de sete, neces-sários para a construção dos programas: os comandos repetitivos. Com os comandos repetitivos será possível construir programas que possuem um conjunto de ações que se deseja repetir de maneira controlada. Eles são comandos que, junto com os demais, propiciarão a construção da maior parte dos seus programas.

Os Capítulos 9 e 10 estendem os conceitos sobre variáveis, estudados até o momen-to. Os algoritmos já desenvolvidos utilizaram variáveis simples, todavia, temos o recurso das variáveis compostas que serão objetos de estudos nesses capítulos. As variáveis compostas são estruturas de dados capazes de armazenar dados e representar seu estado fl uente, ou seja, suas dimensões.

No Capítulo 9 apresentamos os conceitos sobre variáveis compostas homogêneas unidimensionais, também conhecidas como vetor. Esse tipo de variável tem como carac-terística armazenar e representar dados linearmente, ou em uma dimensão somente.

No Capítulo 10 apresentamos os conceitos e exemplos de variáveis compostas homogêneas multidimensionais, também conhecidas como matriz. Neste livro, devido à complexidade de manipular e representar dados em várias dimensões, trataremos esse tipo de variável considerando somente duas dimensões, no caso, exercitaremos a matriz bidimensional, ou matriz linha x coluna.

O Capítulo 11 trata da modularização de algoritmos, onde descrevemos a cons-trução de módulos, ou subalgoritmos ou sub-rotinas, que são porções de código-fonte. Os módulos na construção de algoritmos atendem objetivos menores, porém, quando encadeados solucionam problemas complexos. Neste capítulo serão apresentados e exemplifi cados os conceitos sobre modularização, escopo de variáveis em sub-rotinas, e passagem de parâmetros entre elas.

No Capítulo 12 temos um assunto muito importante no escopo da programação de computadores, que é a manipulação de cadeias de caracteres, ou strings. Em algumas linguagens de programação as strings são tratadas como variáveis simples, porém, para as linguagens mais atuais, devido à sua importância, elas são tratadas como classes ou mesmo como um vetor. Neste capítulo estudaremos e exercitaremos essas várias formas de defi nição e uso de strings.

O Capítulo 13 apresenta os registros, que são estruturas de dados extremamente úteis para agrupar informações sobre um determinado conceito ou objeto. Seu uso facilita o desenvolvimento de aplicações que incluem cadastros de informações e servem de base para a compreensão e uso de sistemas complexos, como bancos de dados relacionais.

C0120.indd xiv

(16)

xv

Apresentação

No Capítulo 14 veremos que os ponteiros são variáveis que, em vez de armazena-rem dados, armazenam endereços de variáveis que, por sua vez, armazenam os dados. Veremos como ponteiros e variáveis relacionam-se e experimentaremos formas de acessar seus conteúdos.

No Capítulo 15 estudaremos e experimentaremos o uso de arquivos. Como sabe-mos, os arquivos permitem o armazenamento de informações de longo prazo. É importante sabermos criar, acessar e modifi car o conteúdo de arquivos.

Após estudarmos tantos conceitos, é importante desenvolvermos aplicações e sistemas aplicando esses conceitos. O Capítulo 16 propõe alguns desafi os e instiga o estudante a aplicar os conhecimentos adquiridos na solução de diferentes problemas. O capítulo traz comentários sobre os problemas propostos, ajudando o estudante a refl etir e desenvolver habilidades para a implementação de suas soluções.

Desejamos a você uma excelente viagem pelos capítulos!

C0120.indd xv

(17)

C0120.indd xvi

(18)

Sumário

capítulo 1

A lógica e os algoritmos 1

capítulo 2

O raciocínio e as formas de resolução de problemas 33

capítulo 3

Expressões matemáticas e lógicas e seus operadores 57

capítulo 4

Tipo de dados 83

capítulo 5

Estrutura sequencial 103

capítulo 6

Estrutura condicional simples e composta 151

capítulo 7

Estrutura condicional – aninhadas, seleção de casos e outras formas 173

capítulo 8

Estrutura de repetição 199

C0125.indd xvii

(19)

xviii Algoritmos e programação de computadores capítulo 9 Vetor 227 capítulo 10 Matriz 275 capítulo 11

Modularização de algoritmos – procedimento e função 327

capítulo 12

String ou cadeia de caracteres 393

capítulo 13 Registros 437 capítulo 14 Ponteiros 457 capítulo 15 Arquivos 473 capítulo 16

Aplicações e estudo de caso 489

Glossário 503

C0125.indd xviii

(20)

P IVA | E NGELBRECHT | N AKAMITI | B IANCHI

Consulte nosso catálogo completo e últimos lançamentos em www.elsevier.com.br

DILERMANDO PIVA JR.

Graduado e Mestre em Computação pela PUC-Campinas. Mestre e Doutor em Engenharia Elétrica (automação) pela Unicamp. Atualmente é professor e pesquisador junto às Faculdades de Tecnologia de Itu e Indaiatuba (Unidades do Centro Paula Souza).

ANGELA DE MENDONÇA ENGELBRECHT

Graduada e Mestre em Ciência da Compu-tação pela USP e doutora em Engenharia Elétrica pela Unicamp. Atualmente é Professora Titular da Pontifícia Universida-de Católica Universida-de Campinas (PUC-Campinas).

GILBERTO S. NAKAMITI

Graduado em Ciência da Computação pela Unicamp, com mestrado e doutorado em Engenharia Elétrica, na área de Engenharia de Computação, também pela Unicamp. Atualmente é professor titular da Universidade Paulista (Unip) e da Pontifícia Universidade Católica de Campinas (PUC-Campinas).

FRANCISCO BIANCHI

Graduado em Ciências Econômicas, Mestre em Ciência da Informação e Mestre em Informática, pela PUC-Campi-nas. Especialista em Gestão da Seguran-ça da Informação. Analista de Sistemas formado pelo Centro Educacional da IBM-SP. Professor das Faculdades de Tecnologia de Itu e Sorocaba (Unidades do Centro Paula Souza).

Capa: Vinicius Dias | imagens: royyimzy@istock.com

www.elsevier.com.br

ALGORITMOS E PROGRAMAÇ

ÃO

DE COMPUT

ADORES

Esta obra, em sua 2ª edição revisada e ampliada, trata, com linguagem acessível, dos assuntos relacionados aos temas de algoritmos e do ensino de linguagens de programação de computadores, do básico ao complexo. Além disso, tomando como base metodologias mais ativas e voltadas ao público adulto, cada capítulo ou tema é trabalhado partindo-se de uma situação problema, passando pela resolução, ampliação do foco do tema, conceituação, reflexo nas linguagens e exercícios.

O conteúdo é pertinente a todos os cursos da área de computação e informática (cursos superiores e de nível técnico).

O livro é resultado de anos de experiência didática na área da disciplina (e lecionando a disciplina em grandes instituições).

A linguagem utilizada é direcionada a estudantes que ingressam nos cursos superiores ou alunos de cursos técnicos, ressaltando o contexto imagético que os alunos estão acostumados.

O livro sintetiza e direciona o foco de vários livros existentes no mercado podendo ser utilizado por uma gama maior de Instituições e profissionais da área de computação.

As aplicações são apresentadas em 5 linguagens de programação: Algo-ritmo, Pascal, C, Java e PHP.

A não limitação a uma linguagem específica permite que professores e estudantes extrapolem as barreiras de tempo e espaço e consigam um maior aprofundamento no processo de ensino-aprendizagem.

Esta obra trata do primeiro contato dos estudantes dos cursos de computação com a área de programação de computadores. Com uma linguagem fácil e acessível, e um ritmo de estudo adaptável, esta obra possibilita sua adoção nos mais diversos cursos da área de computação e informática, principalmente por tratar das aplicações computacionais em cinco linguagens distintas: Algoritmo, Pascal, C, Java e PHP. Além disso, a estruturação em 16 capítulos possibilita a adoção de um capítulo por semana nos mais diversos cursos técnicos e de graduação.

2

a

EDIÇÃO

D

ILERMANDO

P

IVA

J

R

A

NGELA DE

M

ENDONÇA

E

NGELBRECHT

G

ILBERTO

S

HIGUEO

N

AKAMITI

F

RANCISCO

B

IANCHI

ALGORITMOS E

PROGRAMAÇÃO

Referências

Documentos relacionados

Neste trabalho amostraram-se águas em 5 pontos diferentes na Região do Parque Estadual Turístico do Alto Ribeira (PETAR) sendo: (1) ressurgência Caverna de Santana; (2)

É isto: A Bíblia, mais que uma biblioteca de narrativas, poemas e profecias, é um manual de instruções para a vida, cuja leitura constante deve ser praticada e

XIMONA – Mulher que olha demais para a comida de outra pessoa ou para quem está comendo. XODÓ – Amor, paixão, pessoa de quem se

shopping em fim estávamos sempre próximos e o meu amor por ele foi só aumentando até que um certo final de semana o convidei a vir passar um final de semana na casa de praia que

Se você já construiu uma fase em um dos quatro estilos clássicos e quiser mudar para o estilo de Super Mario 3D World, sua fase será apagada, pois este estilo possui

- Seja noite ou seja dia, você terá para sempre uma sombra que não é você.... - Nem tudo pode ser arte, pois tudo

Quando estamos no descanso, “sabemos que todas as coisas colabora para o bem daqueles que ama a Deus, daqueles que são chamados segundo o seu propósito.” 5 Por

As fake news demonstram a habilidade intencional de mentir ao contrário da relativização, o que não impede, no entanto, o mesmo ato da imposição do subjetivo e relativo