Aproveite milhões de eBooks, audiolivros, revistas e muito mais

Apenas $11.99 por mês após o período de teste gratuito. Cancele quando quiser.

Estudo De Algoritmos: Soluções Em C++

Estudo De Algoritmos: Soluções Em C++

Ler a amostra

Estudo De Algoritmos: Soluções Em C++

notas:
5/5 (1 nota)
Duração:
459 páginas
4 horas
Editora:
Lançados:
25 de ago. de 2015
ISBN:
9788590791416
Formato:
Livro

Descrição

Introdução ao estudo de algoritmos e resolução de problemas, desde a construção do modelo matemático, elaboração do algoritmo correspondente à solução do problema e a construção do código em C++, com teoria, problemas resolvidos e problemas propostos.
Editora:
Lançados:
25 de ago. de 2015
ISBN:
9788590791416
Formato:
Livro


Relacionado a Estudo De Algoritmos

Livros relacionados

Amostra do livro

Estudo De Algoritmos - Custódio T. K. Martins

Sumário

Capa

Introdução

O homem e o computador

Estrutura de Dados

Algoritmo

Etapas para o desenvolvimento de um aplicativo

Linguagem C++

Breve história do C++

Para escrever um programa

Palavras reservadas

Biblioteca de funções

Tipos de dados simples

Identificadores

Declaração de constantes e variáveis

Operador de atribuição

Operadores aritméticos

Relação dos operadores aritméticos

Operadores relacionais

Operadores lógicos

Negação (~)

Conjunção (∧)

Disjunção (∨)

Tipos de dados não numéricos: char e string

Ferramentas para tratamento de cadeias de caracteres

Entrada e saída de dados

Entrada de dados: cin

Saída de dados: cout

Códigos de controle

Manipuladores

Programa C++

Ambiente de programação

Algoritmos sequenciais

Problemas resolvidos

Problema resolvido 1

Problema resolvido 2

Problema resolvido 3

Problema resolvido 4

Problema resolvido 5

Problema resolvido 6

Problema resolvido 7

Problema resolvido 8

Problema resolvido 9

Problema resolvido 10

Problemas Propostos

Problema proposto 1

Problema proposto 2

Problema proposto 3

Problema proposto 4

Problema proposto 5

Problema proposto 6

Problema proposto 7

Problema proposto 8

Problema proposto 9

Problema proposto 10

Problema proposto 11

Problema proposto 12

Problema proposto 13

Problema proposto 14

Problema proposto 15

Problema proposto 16

Problema proposto 17

Problema proposto 18

Problema proposto 19

Problema proposto 20

Algoritmos com controle de seleção

Comandos de seleção

Primeira forma: se ... então ...

Segunda forma: se ... então ... senão

Terceira forma: seletor ... caso ...

Como podemos expressar a ?

Problemas resolvidos

Problema resolvido 1

Problema resolvido 2

Problema resolvido 3

Problema resolvido 4

Problema resolvido 5

Problema resolvido 6

Problema resolvido 7

Problema resolvido 8

Problema resolvido 9

Problema resolvido 10

Problemas propostos

Problema proposto 1

Problema proposto 2

Problema proposto 3

Problema proposto 4

Problema proposto 5

Problema proposto 6

Problema proposto 7

Problema proposto 8

Problema proposto 9

Problema proposto 10

Problema proposto 11

Problema proposto 12

Problema proposto 13

Problema proposto 14

Problema proposto 15

Problema proposto 16

Problema proposto 17

Problema proposto 18

Problema proposto 19

Problema proposto 20

Algoritmos com controle de repetição

Primeira forma: enquanto ... faça ...

Segunda forma: faça ... enquanto ...

Terceira forma: para ...

Problemas resolvidos

Problema resolvido 1

Problema resolvido 2

Problema resolvido 3

Problema resolvido 4

Problema resolvido 5

Problema resolvido 6

Problema resolvido 7

Problema resolvido 8

Problema resolvido 9

Problema resolvido 10

Problemas propostos

Problema proposto 1

Problema proposto 2

Problema proposto 3

Problema proposto 4

Problema proposto 5

Problema proposto 6

Problema proposto 7

Problema proposto 8

Problema proposto 9

Problema proposto 10

Problema proposto 11

Problema proposto 12

Problema proposto 13

Problema proposto 14

Problema proposto 15

Problema proposto 16

Problema proposto 17

Problema proposto 18

Problema proposto 19

Problema proposto 20

Algoritmos modulares

Estrutura de um subprograma:

Protótipo de funções

Passagem de parâmetro por valor

Passagem de parâmetro por referência

Problemas resolvidos

Problema resolvido 1

Problema resolvido 2

Problema resolvido 3

Problema resolvido 4

Problema resolvido 5

Problema resolvido 6

Problema resolvido 7

Problema resolvido 8

Problema resolvido 9

Problema resolvido 10

Problemas Propostos

Problema proposto 1

Problema proposto 2

Problema proposto 3

Problema proposto 4

Problema proposto 5

Problema proposto 6

Problema proposto 7

Problema proposto 8

Problema proposto 9

Problema proposto 10

Problema proposto 11

Problema proposto 12

Problema proposto 13

Problema proposto 14

Problema proposto 15

Problema proposto 16

Problema proposto 17

Problema proposto 18

Problema proposto 19

Problema proposto 20

Tipos estruturados

Array

Registro

Redefinindo tipos (typedef)

Arquivos

Arquivo texto

Arquivo binário

Apontadores

Ponteiro

Problemas resolvidos

Problema resolvido 1

Problema resolvido 2

Problema resolvido 3

Problema resolvido 4

Problema resolvido 5

Problema resolvido 6

Problema resolvido 7

Problema resolvido 8

Problema resolvido 9

Problema resolvido 10

Problemas Propostos

Problema proposto 1

Problema proposto 2

Problema proposto 3

Problema proposto 4

Problema proposto 5

Problema proposto 6

Problema proposto 7

Problema proposto 8

Problema proposto 9

Problema proposto 10

Problema proposto 11

Problema proposto 12

Problema proposto 13

Problema proposto 14

Problema proposto 15

Problema proposto 16

Problema proposto 17

Problema proposto 18

Problema proposto 19

Problema proposto 20

Bibliografia

Introdução

O homem e o computador

O computador se tornou uma ferramenta fundamental para o desenvolvimento de toda e qualquer atividade humana. Pode parecer exagero tal assertiva, mas imaginem se uma explosão eletromagnética destruísse todos os componentes eletrônicos baseados em silício no mundo. Teríamos um caos no sistema financeiro, transportes, comunicação, produtivos, administrativos, defesa, etc. Resumindo, regrediríamos alguns séculos e, certamente, um novo sistema computacional iria surgir, baseado em uma tecnologia menos vulnerável, mas os recursos que nos permitem desenvolver e implantar os diversos sistemas permaneceriam, pois se baseiam em algo que sobrevive a qualquer catástrofe: a capacidade humana de raciocinar e resolver problemas.

Basicamente podemos ter três abordagens diferentes quanto ao relacionamento homem-computador: usuário, administrador e desenvolvedor. Há diferentes níveis de usuários, assim como de administradores e desenvolvedores.

De uma maneira geral, somos todos usuários, e utilizamos desde aplicativos simples como planilhas, editores de texto, etc. até aplicativos complexos (animação 3D, CAD, linguagens de programação, etc.) e, no caso extremo, sistemas especialistas para resolver problemas críticos de alta complexidade nas áreas de defesa, energia, finanças e ciência, utilizando supercomputadores para essas tarefas.

Os administradores são os responsáveis pela gestão da informação e atuam em diversas áreas e em diversos níveis e são responsáveis desde a implantação até o controle, supervisão e gerenciamento de um sistema de informação.

Os desenvolvedores são responsáveis pela elaboração dos componentes do sistema, seja o sistema operacional ou os aplicativos que rodarão dentro deste sistema operacional.

Daremos aqui os primeiros passos dentro da abordagem desenvolvimento, com a construção de programas simples que irão resolver problemas na área de Matemática, Física, Química, Estatística, etc.

O desenvolvimento de um programa tem como objetivo a resolução de um problema, este desenvolvimento requer uma forma de comunicação com o computador e esta comunicação se processa através de uma linguagem.

Além da linguagem, cuja utilização está na fase final da descrição de um método de resolução de um problema, temos que utilizar uma metodologia para a análise do problema e para o desenvolvimento de sua solução, que tem uma certa independência em relação à linguagem.

Na análise do problema devemos ter a preocupação de encontrar um caminho de solução que seja viável no âmbito do domínio da linguagem escolhida e, principalmente, no conhecimento do desenvolvedor sobre o assunto de que trata o problema, os modelos matemáticos disponíveis para a sua solução e sua facilidade de implementação.

O enfoque é sistêmico e devemos ter uma visão dinâmica que abranja desde os recursos da linguagem até o modelo matemático escolhido para a solução, ou seja, podemos encontrar um modelo matemático que seja inviável tanto no aspecto recursos disponíveis pela linguagem quanto na perícia do desenvolvedor em relação à linguagem, neste caso estamos falando da bagagem do desenvolvedor, inclusive na capacidade da busca de uma solução alternativa no aspecto modelo matemático.

Resolvendo problemas

Na resolução de problemas surge a necessidade de uma ferramenta mental que nos auxilie na obtenção do resultado desejado, um método que nos ajude a encontrar a solução mais viável, dentro de um contexto criar a solução.

Dentre os filósofos que buscavam conhecer os próprios processos mentais que levariam ao entendimento dos fenômenos observados no mundo científico destacamos René Descartes [Filósofo e matemático René Descartes nasceu em La Haye (hoje denominada Descartes) em 31 de março de 1596. Morreu em Estocolmo em 11 de fevereiro de 1650. É considerado o pai da Filosofia Moderna.] em seu Discurso do método [Em 1637, publica três pequenos tratados científicos: A Dióptrica, Os Meteoros e A Geometria, mas o prefácio dessas obras é que faz seu futuro reconhecimento: o Discurso sobre o método.], que propõe a si substituir os diversos preceitos da lógica por apenas quatro que, em suas palavras "seriam suficientes [], contanto eu tomasse a firme e constante resolução de não deixar uma única vez de observá-los.".

Vejamos esses preceitos nas palavras do próprio Descartes:

"O primeiro era não aceitar jamais alguma coisa como verdadeira que eu não conhecesse evidentemente como tal: isto é, evitar cuidadosamente a precipitação e a prevenção, e nada incluir em meus julgamentos senão o que se apresentasse de maneira tão clara e distinta a meu espírito que eu não tivesse nenhuma ocasião de colocá-lo em dúvida.

O segundo, dividir cada uma das dificuldades que eu examinasse em tantas parcelas possíveis e que fossem necessárias para melhor resolvê-las.

O terceiro, conduzir por ordem meus pensamentos, começando pelos objetos mais simples e mais fáceis de conhecer, para subir aos poucos, como por degraus, até o conhecimento dos mais compostos, e supondo mesmo uma ordem entre os que não se precedem naturalmente uns aos outros.

E o último, fazer em toda parte enumerações tão completas, e revisões tão gerais, que eu tivesse a certeza de nada omitir (Descartes, 1637)."

Descartes pautou sua vida por esses preceitos, com um racionalismo que descartava qualquer ideia e conceito ambíguo ou contraditório, na busca obstinada da verdade.

Essa simplificação de Descartes foi duramente criticada por Leibniz e ainda é por filósofos contemporâneos que consideram a obra de Descartes fundamentada em um pensamento reducionista e fragmentado, opondo-se à visão sistêmica ou multidisciplinar. Este posicionamento apenas demonstra a carência de uma análise mais profunda do trabalho de Descartes pois a sua preocupação com cada parte que compõe o todo, não significa uma carência da visão holística e sim uma busca sincera da verdade, procurando entender o todo analisando as partes que o completam, como podemos observar neste outro parágrafo do seu livro:

…Os longos encadeamentos de razões, todas simples e fáceis, que os geômetras costumam utilizar para chegar a suas mais difíceis demonstrações, me haviam feito imaginar que todas as coisas passíveis de serem conhecidas pelos homens se seguem umas às outras do mesmo modo, e contanto que nos abstenhamos de aceitar alguma como verdadeira que não o seja, e que mantenhamos sempre a ordem necessária para deduzi-las umas das outras, não pode haver nenhuma tão afastada à qual enfim não se chegue, nem tão oculta que não se descubra. E não foi muito difícil buscar por quais era preciso começar, pois eu já sabia que era pelas mais simples e mais fáceis de conhecer; e considerando que, entre todos os que até agora buscaram a verdade nas ciências, apenas os matemáticos puderam encontrar algumas demonstrações, isto é, algumas razões certas e evidentes, não duvidei de que não fosse pelas mesmas que eles examinaram; disso eu não esperava nenhuma outra utilidade a não ser que elas acostumariam meu espírito a se alimentar de verdades e a não se contentar com falsas razões…

Para uma compreensão mais completa do pensamento de Descartes, aconselhamos a ler o Discurso do Método [Título do original: Discours de la méthode. Veja a bibliografia.]. Será o ponto de partida para a longa jornada na estrada da lógica e do bom senso.

Quando analisamos um problema, uma metodologia é imprescindível para se chegar a um bom termo.

Um cientista, G. Pólya [Matemático húngaro, nascido em 13 de dezembro de 1887 em Budapeste, falecido em 7 de setembro de 1985 em Palo Alto.] desenvolveu, no campo da Heurística [Um ramo do estudo da lógica cujo objetivo é o estudo dos caminhos, métodos e regras da descoberta e da invenção ou, simplificando, o estudos dos processos mentais que levam à solução de um problema.], uma metodologia que permite que um leigo possa ter os mesmos recursos mentais que um expert para a criação da solução de um problema.

G. Pólya reavivou a Heurística com sua obra How to Solve It - A New Aspect of Mathematical Method (no Brasil recebeu o título A Arte de Resolver Problemas - Editora Interciência).

Para ilustrar a ideia, vejamos um esquema para resolver um problema, adaptado de estudos de G. Pólya:

1ª Etapa - Entendimento do problema

Nesta etapa é essencial para a compreensão do problema que algumas perguntas sejam respondidas:

Qual é a incógnita?

Embora esta pergunta possa parecer específica para a resolução de problemas matemáticos, podemos ampliar o seu contexto considerando-a da seguinte maneira:

O que deve ser resolvido?

O que deve ser calculado?

Que ação deve ser executada?

Quais são os dados?

Estas perguntas envolvem a compreensão das informações contidas no cenário do problema, separando os aspectos essenciais dos supérfluos.

Qual a condicionante?

Entre as informações, devemos procurar aquelas que fornecem o ponto chave para a resolução; como o próprio nome diz, as informações que estabelecem as condições ou apresentam restrições e imposições para a solução.

2ª Etapa - Estabelecimento de um plano de ação

Nesta etapa iremos sistematizar as relações entre os dados e a incógnita e aproveitaremos para buscar uma relação entre o problema atual e algum outro problema, já resolvido, que possa servir de guia para a solução do atual. Se existir esse problema, analisar os caminhos percorridos até a sua solução, e verificar quais as adaptações serão necessárias fazer para resolver o problema atual. Se não ocorrer nenhum problema similar, divida o problema atual em partes, concatenando a incógnita e os dados correspondentes, inclusive criando incógnitas auxiliares para cada parte. Dividir para conquistar! era uma regra utilizada nos tempos áureos do Império Romano para as suas bem sucedidas conquistas.

Faça desenhos, esquemas, utilize notações próprias e elabore um plano de resolução.

3ª Etapa - Execução do plano

Siga passo a passo o plano elaborado na etapa anterior. Caso ocorra alguma coisa errada, será necessário voltar à etapa anterior ou até mesmo à primeira etapa e reformular o plano.

4ª Etapa - Exame da solução

Nesta etapa verificaremos o resultado, respondendo à seguinte pergunta: A solução encontrada satisfaz o problema proposto?. Há várias maneiras de se responder a esta pergunta, dependendo do tipo de problema que estivermos

Você chegou ao final dessa amostra. Cadastre-se para ler mais!
Página 1 de 1

Análises

O que as pessoas acham de Estudo De Algoritmos

5.0
1 notas / 0 Análises
O que você achou?
Nota: 0 de 5 estrelas

Avaliações do leitor