Algoritmo Explicado
()
About this ebook
Read more from Jorge Luiz E De Souza
Versos livres by JLes nº1 Rating: 0 out of 5 stars0 ratingsConsturindo um app android com delphi partes 1,2 e 3: Delphi berlim Rating: 0 out of 5 stars0 ratingsVersos e pensamentos by JLes 2022 Rating: 0 out of 5 stars0 ratingsOrientação a objeto com delphi Rating: 0 out of 5 stars0 ratings
Related to Algoritmo Explicado
Related ebooks
Algoritmo Explicado Rating: 0 out of 5 stars0 ratingsRefatorando com padrões de projeto: Um guia em Ruby Rating: 0 out of 5 stars0 ratingsLógica De Programação Javascript Rating: 0 out of 5 stars0 ratingsIntrodução à programação em C: Os primeiros passos de um desenvolvedor Rating: 4 out of 5 stars4/5Aprenda a programar com Python: Descomplicando o desenvolvimento de software Rating: 5 out of 5 stars5/5Aprendendo A Programar Rating: 0 out of 5 stars0 ratingsRefatorando com padrões de projeto: Um guia em Java Rating: 0 out of 5 stars0 ratingsProgramação funcional em .NET: Explore um novo universo Rating: 0 out of 5 stars0 ratingsManual de sobrevivência do novo programador: Dicas pragmáticas para sua evolução profissional Rating: 4 out of 5 stars4/5Lógica de programação com Portugol: Mais de 80 exemplos, 55 exercícios com gabarito e vídeos complementares Rating: 0 out of 5 stars0 ratingsTuning de SQL: Melhore a performance de suas aplicações Oracle Rating: 0 out of 5 stars0 ratingsArquitetura de software distribuído: Boas práticas para um mundo de microsserviços Rating: 0 out of 5 stars0 ratings4 Viajando Na Maionese Rating: 0 out of 5 stars0 ratingsAlgoritmos: 3 Livros Em 1: Rating: 0 out of 5 stars0 ratingsA Lógica Do Jogo Rating: 0 out of 5 stars0 ratingsLógica De Programação Com Visualg Rating: 0 out of 5 stars0 ratingsComo passar concursos CEBRASPE -Raciocínio Lógico, Matemática e Informática Rating: 0 out of 5 stars0 ratingsProgramação na Engenharia! E agora? Rating: 0 out of 5 stars0 ratingsIntrodução A Lógica De Programação Rating: 0 out of 5 stars0 ratingsProgramação Funcional: Uma introdução em Clojure Rating: 4 out of 5 stars4/5Machine Learning: Introdução à classificação Rating: 0 out of 5 stars0 ratingsAlgoritmos E Lógica De Programação Com Python Rating: 0 out of 5 stars0 ratings16 Estudos Ideias Insights Rating: 0 out of 5 stars0 ratingsIntrodução A Lógica De Programação Com A Ferramenta De Desenvolvimento Lazarus Rating: 0 out of 5 stars0 ratingsLivro 24 Gestão Estudos Da Faculdade E Insihts Aleatorios Rating: 0 out of 5 stars0 ratingsRoadmap back-end: Conhecendo o protocolo HTTP e arquiteturas REST Rating: 5 out of 5 stars5/5Como Ser Um Desenvolvedor Web Rating: 0 out of 5 stars0 ratingsCódigo Limpo Em Php Rating: 0 out of 5 stars0 ratingsPython Em 30 Dias Rating: 0 out of 5 stars0 ratingsDSL: Quebre a barreira entre desenvolvimento e negócios Rating: 0 out of 5 stars0 ratings
Programming For You
O Guia Definitivo para Geração de Renda com o ChatGPT para Empreendedores Rating: 0 out of 5 stars0 ratingsEstruturas de Dados: Domine as práticas essenciais em C, Java, C#, Python e JavaScript Rating: 0 out of 5 stars0 ratingsOrientação a Objetos: Aprenda seus conceitos e suas aplicabilidades de forma efetiva Rating: 5 out of 5 stars5/5Introdução a Data Science: Algoritmos de Machine Learning e métodos de análise Rating: 0 out of 5 stars0 ratingsScratch: Um jeito divertido de aprender programação Rating: 0 out of 5 stars0 ratingsLógica de programação com Portugol: Mais de 80 exemplos, 55 exercícios com gabarito e vídeos complementares Rating: 0 out of 5 stars0 ratingsReact Native: Desenvolvimento de aplicativos mobile com React Rating: 5 out of 5 stars5/5Business Intelligence: Implementar do jeito certo e a custo zero Rating: 4 out of 5 stars4/5Python e mercado financeiro: Programação para estudantes, investidores e analistas Rating: 5 out of 5 stars5/5Arduino prático: 10 projetos para executar, aprender, modificar e dominar o mundo Rating: 3 out of 5 stars3/5A lógica do jogo: Recriando clássicos da história dos videogames Rating: 0 out of 5 stars0 ratingsMachine Learning: Introdução à classificação Rating: 0 out of 5 stars0 ratingsArduino: Guia para colocar suas ideias em prática Rating: 5 out of 5 stars5/5Python: Escreva seus primeiros programas Rating: 4 out of 5 stars4/5ECMAScript 6: Entre de cabeça no futuro do JavaScript Rating: 5 out of 5 stars5/5Django de A a Z: Crie aplicações web rápidas, seguras e escaláveis com Python Rating: 0 out of 5 stars0 ratingsConsultoria Especializada e Estratégias De Trade De Forex Rating: 0 out of 5 stars0 ratingsMySQL: Comece com o principal banco de dados open source do mercado Rating: 4 out of 5 stars4/5HTML5 e CSS3: Domine a web do futuro Rating: 4 out of 5 stars4/5Orientação a Objetos em C#: Conceitos e implementações em .NET Rating: 5 out of 5 stars5/5Trilhas Python: Programação multiparadigma e desenvolvimento Web com Flask Rating: 4 out of 5 stars4/5Inteligência Artificial como serviço: Uma introdução aos Serviços Cognitivos da Microsoft Azure Rating: 3 out of 5 stars3/5PostgreSQL: Banco de dados para aplicações web modernas Rating: 5 out of 5 stars5/5Lógica de Programação: Crie seus primeiros programas usando Javascript e HTML Rating: 3 out of 5 stars3/5Desbravando Java e Orientação a Objetos: Um guia para o iniciante da linguagem Rating: 5 out of 5 stars5/5Desenvolva jogos com HTML5 Canvas e JavaScript Rating: 4 out of 5 stars4/5ABAP: O guia de sobrevivência do profissional moderno Rating: 5 out of 5 stars5/5Desenvolvimento web com PHP e MySQL Rating: 3 out of 5 stars3/5Guia do mestre programador: Pensando como pirata, evoluindo como jedi Rating: 3 out of 5 stars3/5MongoDB: Construa novas aplicações com novas tecnologias Rating: 0 out of 5 stars0 ratings
Reviews for Algoritmo Explicado
0 ratings0 reviews
Book preview
Algoritmo Explicado - Jorge Luiz E de Souza
Objetivo
Dar ao iniciante uma visão geral sobre a lógica de programação baseada em estruturação do pensamento.
Procurei ser o mais simplificado possível, sem deixar de ser abrangente no tocante aos exercícios demonstrados e propostos.
As ferramentas apresentadas aqui são a base para uma programação concisa e eficaz. Qualquer manual que você escolha as apresentará a você. O diferencial aqui é a maneira como os exemplos são explicados passo a passo, mostrando o porque
de cada linha de código.
Espero abrir uma janela entre você e o mundo da programação de computadores.
Enjoy!
JLes
Introdução
Abra sua mente! Existe uma grande diferença entre conhecer o caminho e percorrê-lo.
Morpheus (The Matrix)
Procurei tornar a curva de aprendizado o mais suave possível, com um grande número de exercícios propostos. Os alunos encontrarão em toda a primeira parte (Parte I), várias técnicas para iniciar a pensar logicamente sobre as coisas em geral e a criar soluções estruturadas para problemas corriqueiros.
Posso até arriscar a dizer que aprenderão a planejar, mesmo sendo uma forma simples de planejamento.
Na segunda parte (Parte II), teremos a introdução ao estudo algorítmico, onde serão apresentados os conceitos básicos da ‘pseudo-linguagem’, sintaxe, operadores e uma análise completa de um algoritmo simples.
A parte III se desdobra em várias seções denominadas Algoritmo X, onde X evolui em ordem numérica determinando o estágio de aprendizado da pseudo-linguagem algorítmica continuando a numeração da parte II.
Algoritmo II se dedica a apresentar as estruturas condicionais e estudá-las a fundo, apresentando diversos algoritmos onde são empregadas e analisando a sua utilização.
Algoritmo III apresenta as estruturas de repetição,
Algoritmo IV apresenta vetores e matrizes.
Algoritmo V apresenta funções e procedimentos e finalmente Algoritmo VI apresenta o conceito de registros e arquivos.
Exercícios finais são proposições de sistemas a serem desenvolvidos. São projetos completos em requisitos, possibilitando a análise e permitindo o desenvolvimento individualizado. Boa sorte!
Textos adicionais são alguns escritos meus sobre a atual realidade da computação e deve ser entendido como a opinião de um profissional, sujeita a críticas e sugestões construtivas.
Bom estudo.
Parte I
Pensamento estruturado
Conceito fundamental
Pensar estruturadamente é pensar de maneira ordenada e lógica. Todos pensamos estruturadamente para resolver problemas comuns do dia a dia, mas nem nos damos conta disto, pois é uma forma natural de se pensar. Não precisamos analisar a toda hora o porque estamos pensando daquela maneira, e sim, por exemplo: - O que eu vou fazer agora? Isto vai resolver meu problema? Se aquele quebra-galho acabar?! O que eu vou fazer?
Pensamento estruturado computacionalmente falando, é você ter conciência de que você está pensando para a solução de um problema! Que você está definindo estágios
necessários para que ele seja resolvido, mudando o foco de suas decisões. Transformar:
O que eu vou fazer agora?, em:
Devo fazer isto
agora para obter este resultado
que será necessário mais tarde.
Isto vai resolver meu problema, em:
Se isto
não resolver meu problema então devo fazer aquilo
para resolvê-lo.
Se aquele quebra-galho acabar?! O que eu vou fazer?, em:
Se aquele quebra-galho acabar então finalizar obra.
Tudo bem, são exemplos pouco ortodoxos, mas o objetivo aqui é apresentar a mudança de paradigma de pensamento para aqueles que pretendem aprender algoritmos.
Deve-se ter em mente que tudo que será feito, deverá sê-lo, pensando em uma solução exata, e não em uma possibilidade de solução. Deve-se escolher um caminho lógico para uma solução e segui-lo até obter o resultado que se deseja.
Lógica
Segundo o papai... Lógica é:
"ló.gi.ca
s. f. Filos. Parte da filosofia que estuda as leis do raciocínio."
Cit. Dic Michaelis – UOL
Para mim, é uma maneira de encadear passos, concisos e bem definidos, segundo um ordenamento de idéias que resultarão em uma; de N soluções possíveis para resolver um problema.
Isto significa que, a solução que você criar para um problema é uma de N, as outras podem ser melhores ou piores que a sua, mas se você resolver o problema...
Portugol
O que é
É uma forma de introdução aos conceitos computacionais e a lógica de programação que utiliza o português para expressar as soluções algorítmicas
para problemas corriqueiros e não computacionais.
Seu objetivo não é escrever um programa para computador, e sim apresentar alguns conceitos importantes para a criação de programas de computador, como estrutura de pensamento, lógica e sintaxe.
De acordo com a definição anterior, podemos dizer que o que importa em portugol é entender e utilizar os conceitos computacionais para a solução destes problemas inicialmente. Lembre-se sua solução será uma de N possíveis.
Sintaxe
Sintaxe é um termo que estará presente sempre em todas as linguagens de computação. E o seu conceito fundamental é:
Forma correta de escrita e utilização de comandos computacionais.
Para se entender a sintaxe computacional, é necessário algumas convenções de escrita.
<> Indica que o seu interior é obrigatório
Exemplo:
Para
No comando acima, as expressão dentro dos símbolos <> são obrigatórias
[] Indica que o seu interior é opcional
Se {[E Condição] [Ou Condição] }>
[senão]
[ / ] Indica que o seu interior é opcional e os termos separados pela barra são mutuamente excludentes (ou um ou outro)
Se {[E Condição] [Ou Condição] }>
[senão]
{} agrupa segmentos relacionados
Se {[E Condiçãoo] [Ou Condição] }>
[senão]
Observação: o texto acima está destacado, mas o negrito não faz parte da sintaxe.
A sintaxe é uma maneira abstrata de se apresentar a forma genérica de utilização de um comando ou expressão computacional. É como as fórmulas matemáticas, temos que substituir os valores do problema nos Xis
das expressões.
Por enquanto este conceito é o suficiente.
Apresento agora a sintaxe do portugol adotada por mim. (pode apresentar variações entre autores).
Para se escrever um algoritmo em portugol, as regras abaixo devem ser seguidas.
1. Cada linha deve representar um único comando iniciado com um verbo no infinitivo.
2. As linhas de comando devem ser enumeradas.
3. Entre uma linha de comando e outra, poderá haver linhas adicionais, não enumeradas utilizadas para refinamento
(veremos mais afrente o que é isto) do comando imediatamente anterior.
4. Os comandos devem ser concisos e a seqüência de idéias deve resolver o problema, levando a um resultado possível.
Como os problemas tratados aqui não são computacionais, fica difícil prever qualquer caminho que seguirá o futuro programador que se propuser a resolvê-los. Fica então, a dica:
As variáveis envolvidas são muito diversas e dependentes de fatores não padronizados, isto significa que quanto menos variáveis incomuns você imaginar na solução do seu problema, mais genérica será a solução e o resultado.
Veja isto da seguinte forma:
- Se o problema apresentado for ligar um carro, não pense em uma Ferrari com ignição digital, e sim em um carro popular, com uma forma convencional de solução para o problema apresentado. Assim, sua solução irá atingir a uma percentagem de utilidade muito maior.
Traduzindo... se você fosse vender seu portugol pensando em quantas pessoas ele atingiria: - resolver o problema da Ferrari não lhe satisfaria.
Exercícios Resolvidos
1. Ler um livro;
Solução
1.Ir até a estante de livros;
2.Escolher um título;
3.Pegar o livro;
4.Ir até um local iluminado
5.Abrir o livro
6. Começar leitura
1. Ouvir a faixa 5 de um CD;
Solução
1. Ir até a estante de CDs
2. Escolher um titulo
3. Pegar o CD
4. Ir até o aparelho de som
5. Ligar o aparelho de som
6. inserir o CD no aparelho de som
7. Escolher a faixa 5
8. Ouvir a música
1. Supondo que você está na escola, pegar um livro na biblioteca;
Solução
1. Ir até a biblioteca da escola
2. Ir até o computador
3. Digitar o titulo do livro
4. Requisitar o livro junto a bibliotecária
5. Apresentar a carteirinha de estudante
6. Escolher entre ler e levar o livro
Exercícios propostos
Lembre-se:
Portugol trata da solução de algoritmos não computacionais, portanto, qualquer solução lógica que resolva o problema deve ser aceita, mas seja critico, analise os passos e pense sempre que eles devem servir de base para que qualquer pessoa que ler sua receita de bolo
consiga chegar ao resultado que você está propondo, dentro das condições ambientais
que você imaginou.
Para a solução destes primeiros exercícios, utilize somente as regras 1, 2 e 4 de portugol, analisaremos o refinamento de código mais adiante.
1. Digitar um trabalho no computador
2. Entrar em casa
3. Abrir a janela da sala
4. Receber uma visita
5. Mostrar o boletim para os pais
6. Ligar para a Gabriela
7. Andar de bicicleta
8. Recarregar o Celular
9. Levantar cedo no domingo
10. Ir ao parque
11. Abrir uma cortina
12. Acampar
(sinta-se a vontade para propor e solucionar em portugol seus prórios problemas não computacionais até você se sentir a vontade para prosseguir)
Estrutura condicional (Refinamento de código)
Conceito
Você deve ter percebido que até agora, somente nos preocupamos com os passos lógicos para a solução dos problemas não computacionais. E deve ter sentido a necessidade de um recurso de tomada de decisão. As vezes você precisa escolher entre dois caminhos, onde cada um tem seu próprio desenrolar de ações para chegar a um resultado onde o algoritmo possa prosseguir na solução inicial.
A este recurso de decisão damos o nome de estrutura condicional. Sua sintaxe é:
Se
Então
Senão
Onde:
Se
é palavra reservada que inicia a tomada de decisão.
é a condição simples ou composta que ao ser resolvida tomará os caminhos lógicos:Então para condição verdadeira e
Senão
para condição falsa.
Então
é o caminho tomado quando a condição da tomada de decisão SE retorna um valor verdadeiro.
Senão
Senão é o caminho tomado quando a condição da tomada de decisão SE retorna um valor falso.
< Comando / Bloco de comandos>
< Comando / Bloco de comandos> Comando representa uma única linha de instrução e Bloco de comandos representa várias linhas de instrução delimitadas pelas palavras chave Inicio e Fim
Utilização
Peguemos o primeiro exercício resolvido anteriormente.
1. Ler um livro;
Solução
1. Ir até a estante de livros;
2. Escolher um título;
3. Pegar o livro;
4. Ir até um local iluminado
5. Abrir o livro
6. Começar leitura
A linha destacada contem uma instrução complexa que poderia ser "REFINADA", isto é, desdobrada em outros passos menores cuja execução seria equivalente ao comando Escolher um título.
Vejamos:
1. Ler um livro;
Solução
1. Ir até a estante de livros;
2. Escolher um título;
Se a estante é alta
Então 2.1 Voltar com uma escada
Senão Escolher um título
3. Pegar o livro;
4. Ir até um local iluminado
5. Abrir o livro
6. Começar leitura
Analisando o refinamento anterior poderíamos dizer que a tomada de decisão abaixo da linha de instrução 2 equivale a ela.
Dica:
Observe também que para manter a concisão, você deve escolher o verbo mais adequado por exemplo: o verbo Voltar é mais completo que o verbo Pegar, pois voltar já implica em continuar a fazer o que se estava fazendo.
Na solução de refinamento anterior, prevemos somente uma de N variações possíveis para a execução da instrução Escolher um Titulo. Poderíamos colocar muito mais situações de tomada de decisão para se escolher um livro.
A Instrução 2.1 Voltar com uma escada ainda não satisfaz totalmente o caminho lógico para o próximo passo 3. Pegar o livro pois o caminho lógico da estrutura pressupõe que ao sair do Então da estrutura condicional, o livro já deveria estar escolhido pois a próxima instrução depende da escolha do titulo.
Para resolvermos isto, podemos nos valer da sintaxe do comando SE, mostrada anteriormente que nos permite escolher entre executar um único comando após as palavras ENTÂO e SENÂO, ou um Bloco de comandos delimitados pelas palavras reservadas INICIO e FIM. A instrução ficaria assim.
2. Escolher um título;
Se a estante é alta
Então Inicio
2.1 Voltar com uma escada
Escolher um Título
Fim
Senão Escolher um título
Observe que tivemos que recorrer a um bloco de comandos para o caminho de decisão Então da estrutura condicional para podermos escrever a instrução Escolher um Título após termos apanhado a escada. Agora, qualquer que seja o resultado da condição a estante é alta executaremos a instrução Escolher um título que é o objeto de refinamento.
Dica:
Por que não utilizamos a instrução 2.1 Voltar com uma escada e escolher um título?
Porque uma das regras do portugol é: 1. Um comando por linha e a conjunção coordenativa aditiva E
liga duas orações completas, portanto, dois comandos na mesma linha. Erro de Sintaxe.
Por quê utilizamos as palavras reservadas Inicio e Fim?
A sintaxe do comando se mostra que para que duas ou mais linhas de instrução pertençam a um caminho de tomada de decisão (Então, Senão) eles devem estar delimitados pelas palavras chaves Inicio e Fim.
Por que o caminho Senão da tomada de decisão não tem as palavras reservadas Inicio e Fim?
Por que só há uma linha de instrução pertencente a ele.
Importante
Observe que o refinamento foi feito por mim, com base em uma variante que eu escolhi ao acaso que foi: A estante ser alta.
Para efeito de treinamento, você pode escolher uma linha de comando do seu portugol, determinar a variante a ser resolvida e criar um código de tomada de decisão que equivalha a linha de comando escolhida. Isto é, Executar o refinamento equivale a executar a linha escolhida.
Exercícios
Use os exercícios de portugol já feitos para treinar o refinamento de código.
Parte II
Algoritmo I
Conceito fundamental
Até alguns anos atrás algoritmo era uma ‘pseudolinguagem’...
‘To be continued’...
Para compreendermos a frase anterior e podermos completar o período com uma significação maior, vejamos alguns conceitos.
Segundo o Dic Michaelis eletrônico:
lin.gua.gem
s. f. 1. Faculdade de expressão audível e articulada do homem. 2. Conjunto de sinais falados, escritos ou gesticulados de que se serve o homem para exprimir suas idéias e sentimentos. 3. Qualquer meio que sirva para exprimir sensações ou idéias. 4. A voz dos animais.
pro.gra.ma.ção
s. f. 1. Ato de estabelecer um programa. 2. O programa.
Juntando as idéias, uma linguagem de programação seria então:
Um programa que dispõe de um conjunto de sinais capazes de permitir ao homem um meio de expressar suas idéias para solução de problemas computacionais criando programas que poderão ser utilizados por qualquer individuo para obter a solução do problema em questão nas mesmas condições estabelecidas no código.
Isto significa dizer que uma linguagem de programação é um programa para criar programas de computador.
... ‘Continuing’
Até alguns anos atrás algoritmo era uma pseudolinguagem
por que não existia nenhum programa de computador capaz de compilar, ou mesmo, interpretar o código criado na linguagem algorítmica, produzindo na tela do computador os efeitos lógicos codificados no pseudocódigo. Isto agora é possível com o AMBAP.
Um programa criado e mantido pela Universidade Federal de Alagoas – UFAL, cuja sigla significa: Ambiente de aprendizado de programação. Pelos alunos André Atanásio M. Almeida, Klebson dos Santos Silva e Rodrigo Paes sob orientação de Eliana da Silva Almeida e implementado em JAVA (tm) .
Este projeto pode ser obtido em http://ambap.ufal.br
OBS: Out 2021 O Projeto ambap foi descontinuado, mas os conceitos deste e-book sempre estarão em dia.
Ora! Se o código criado em algoritmo não pode se transformar em programa de computador, então, porque escrever códigos em linguagem algorítmica.
Para respondermos a esta questão vejamos:
Segundo o Dic Michaelis eletrônico:
al.go.rit.mo
s. m. Sistema particular de disposição que se dá a uma sucessão de cálculos numéricos: Algoritmo de cálculo diferencial.
Já definimos algoritmos computacionais anteriormente neste volume, mas não de forma direta (vide Pensamento estruturado). Façamo-lo agora.
Algoritmo seria a utilização das estruturas computacionais (sinais e estruturas disponíveis em uma dada linguagem de programação) para a criação de um caminho lógico para a solução de um problema.
Segundo esta definição, a linguagem algorítmica, mesmo quando não havia um programa, como o AMBAP, capaz de executar
o código no computador, ainda assim tinha e tem o seu valor