ALGORITMOS E PROGRAMAÇÃO

Documentos relacionados
MÁQUINAS ELÉTRICAS E ACIONAMENTO

Estatística para a Qualidade. Sonia Vieira

Algoritmos Fundamento e Prática

1.1 o que é um algoritmo... 6

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA

Preencha a ficha de cadastro no final deste livro e receba gratuitamente informações sobre os lançamentos e as promoções da Elsevier.

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Londrina PLANO DE ENSINO

INTEGRADO º - CONHECIMENTO PRÉVIO

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

Estruturas de Dados. Prof.: Carlos Alberto Página da Disciplina:

UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO PROGRAMA DE DISCIPLINA. Introdução a Algoritmos CCOMP CCMP

UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE ENGENHARIA CIVIL COLEGIADO DO CURSO DE ENGENHARIA CIVIL PLANO DE CURSO

PROGRAMA - Disciplinas Lecionadas

liberada por se tratar de um documento não aprovado pela PUC Goiás.

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE - CAMPUS LUZERNA Rua São Roque, 41 - Luzerna/SC CEP Fone: (49)

DISCIPLINA: Programação de Computadores I

CURSO TÉCNICO DE NÍVEL MÉDIO EM INFORMÁTICA - PLANO DE DISCIPLINA 2015 LINGUAGEM DE PROGRAMACAO 1 LP1

PROGRAMA - Disciplinas Lecionadas

Programação Aplicada à. Engenharia de Alimentos

MATEMÁTICA UNIVERSOS. Por que escolher a coleção Universos Matemática

Sergio Leusin. Gerenciamento e coordenação de Projetos BIM UM GUIA DE FERRAMENTAS E BOAS PRÁTICAS PARA O SUCESSO DE EMPREENDIMENTOS

Aula prático/expositiva. Resolução de exercícios propostos e participação em sala de aula. 2h 08/05

Raciocínio Lógico Cespe/UnB

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA

Márcia Valéria Nogueira da Rocha. CIP-Brasil. Catalogação-na-Fonte Sindicato Nacional dos Editores de Livros, RJ

Fundamentos de Algoritmos (5175/31)

SUBGERÊNCIA DE GESTÃO EDUCACIONAL PLANO DE CURSO

Computação Básica. Prof. Tiago Alves. Universidade de Brasília Campus Gama

Eng. Alimentos PROGRAMA DE DISCIPLINA IDENTIFICAÇÃO CÓDIGO DISCIPLINA PRÉ-REQUISITOS

Algoritmos e Programação

Programação Estruturada Aula Plano de Disciplina

Estrutura de Dados e Lógica de Programação. Cátia Alves Marcelo Nunes 102 h/a 17/08/2015 a 12/12/2015

PROGRAMA - Disciplinas Lecionadas

Lógica de Programação. Tecnologia em Redes de Computadores IFSULDEMINAS Campus Inconfidentes Prof. Kleber Rezende

Preencha a ficha de cadastro no final deste livro e receba gratuitamente informações sobre os lançamentos e as promoções da Elsevier.

PLANO DE UNIDADE DIDÁTICA- PUD

ALGORITMOS E LÓGICA DE PROGRAMAÇÃO PRÉ AULA DIAGNÓSTICO 22/10/2015. Analise o algoritmo a seguir e depois assinale a alternativa correspondente:

t:) BIBLIOTECA M. OSCAR SARAIVA STJ (' í t: ~,1, 2014, Elsevier Editora Ltda.

PLANO DE ENSINO CURSO: BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Plano de Trabalho Docente 2017 Ensino Técnico

MINISTÉRIO DA EDUCAÇÃO FUNDAÇÃO UNIVERSIDADE FEDERAL DO PAMPA PRÓ-REITORIA DE GRADUAÇÃO COORDENADORIA DE REGISTROS ACADÊMICOS

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Conteúdo Programático. Bibliografia... Forma de Avaliação. Novidades

Algoritmos e Técnicas de Programação

PLANO DE ENSINO CURSO: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS. DISCIPLINA: Programação Orientada a Objetos

Algoritmos e Programação - Engenharia da Computação -

Programação de Computadores

Rodrigo de Barros Paes

Administração Pública

Programação em C e C++ com Lógica. Subtítulo

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM

FUNDAÇÃO UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO

Modelo de plano analitico

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Matrizes. Para começar... Matrizes. Matrizes

PLATAFORMA DE APOIO AO TREINAMENTO PARA A OLIMPÍADA BRASILEIRA DE INFORMÁTICA

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Algoritmos e Programação de Computadores Disciplina:

Introdução à Ciência da Computação

Aula 1. Introdução à programação. Prof. Dr. Bruno Honda

Aula 1 Apresentação do Curso

Fundamentos de Programação

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Lógica de Programação, Algoritmos e Estruturas de Dados

Algoritmos e Programação

FUNDAÇÃO UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO

FUNDAÇÃO UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO

Plano de Trabalho Docente

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Strings. Para começar... Strings. Exemplo...

INTRODUÇÃO ÀS ESTRUTURAS DE DADOS. Prof. Dr. Daniel Caetano

XVI Encontro de Iniciação à Docência Universidade de Fortaleza 17 a 20 de outubro de 2016

Ensino Técnico Integrado ao Médio

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

O que é um jogo digital?

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

Lançamentos Exatas. Janeiro Confira as novidades do GEN Grupo Editorial Nacional na área de Exatas

Programação Estruturada Orientada a Objetos

Sumário Prefácio xix Introdução Conceitos de Computação e Computadores

Introdução à Computação Engenharia Civil

Programação de Computadores

PLANO DE CURSO. 3. OBJETIVO GERAL DA DISCIPLINA: Desenvolver no aluno uma metodologia de análise de problemas e formulação de algoritmos.

- Aula 01, 02, 03 e 04 Apresentação da disciplina.

Lógica de Programação II

Edécio Fernando Iepsen

1. INTRODUÇÃO A MODELAGEM DE DADOS

PLANO DE DISCIPLINA. Análise e Desenvolvimento de Sistemas. Introdução a Algoritmos e Programação EMENTA

Usando Python para a introdução à programação em cursos universitários. Carla A. D. M. Delgado Departamento de Ciência da Computação - UFRJ

Carga Horária: 60 h Créditos: 3 Pré-requisito: Não se aplica Professor(a): A definir Matricula: A definir Titulação: A definir

Algoritmos Lógica e Programação Prof. Me. Adelson Felipe Dias Nogueira

Introdução a Programação

Sumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1

Introdução à dinâmica das estruturas. Humberto Lima Soriano

Computação I (MAB120) DCC/UFRJ

Aula 10: Introdução a Vetores e Matrizes

MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE PELOTAS PRÓ-REITORIA DE GRADUAÇÃO

Dados Gerais. Conteúdo. Tipos de Dados. Profa. Renata de Matos Galante

Transcrição:

2 a EDIÇÃO DILERMANDO PIVA JR ANGELA DE MENDONÇA ENGELBRECHT GILBERTO SHIGUEO NAKAMITI FRANCISCO BIANCHI ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES

ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES

2 a EDIÇÃO DILERMANDO PIVA JR ANGELA DE MENDONÇA ENGELBRECHT GILBERTO SHIGUEO NAKAMITI FRANCISCO BIANCHI ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES

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áficos, gravação ou quaisquer outros. ISBN: 978-85-352-9248-0 ISBN (versão digital): 978-85-352-9249-7 Revisão tipográfica: Hugo de Lima Corrêa Editoração Eletrônica: Thomson 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 N o t a 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 propriedades 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. 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 A Editora C0095.indd iv 07/02/19 6:54 PM

Esta obra é dedicada às nossas famílias e às pessoas que se dedicam à democratização do saber científico e do cotidiano e à disseminação de novos métodos de ensino-aprendizado.

Agradecimentos A gradecemos às nossas famílias, que sempre nos apoiaram incondicionalmente. Aos mestres, que nos instigam, e aos estudantes, que nos ofertam a possibilidade de crescimento pessoal na busca contínua do conhecimento.

Nota dos autores 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ítmica, 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, desafios, temas para discussão e indicações de aprofundamento possibilitarão a participação ativa dos leitores, promovendo, assim, a atualização constante do livro. Boa leitura!

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 fim 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 dificuldade 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 desafio de ensinar programação não é pequeno. Não pela complexidade do assunto, mas pela dificuldade 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 verificado 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 estabelecer um diálogo com o leitor e, ao iniciar cada capítulo com uma reflexão, oferecem um convite estimulante à leitura. Na sequência, apresentam de forma bastante explícita

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 fixaçã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 fim, 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 significativas, 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

Apresentação ossa viagem começa pelo Capítulo 1, onde é apresentado ao leitor o que é N 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 fim, os diversos ambientes de desenvolvimento, específicos de cada linguagem de programação que será utilizada ao longo deste livro, são ilustrados e mostrados 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 fluxograma. Por fim, é ilustrada a relação existente entre fluxograma 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 programas. 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 desvios no fluxo 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.

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 comandos 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, necessá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 momento. 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 fluente, 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 caracterí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 construçã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 exemplificados 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 definiçã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.

Apresentação xv No Capítulo 14 veremos que os ponteiros são variáveis que, em vez de armazenarem 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 sabemos, os arquivos permitem o armazenamento de informações de longo prazo. É importante sabermos criar, acessar e modificar 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 desafios 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 refletir e desenvolver habilidades para a implementação de suas soluções. Desejamos a você uma excelente viagem pelos capítulos!

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

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

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: Algoritmo, 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. www.elsevier.com.br