Introdução à programação/Algoritmos
Um algoritmo é um esquema de resolução de um problema. Pode ser implementado com qualquer sequência de valores ou objetos que tenham uma lógica infinita (por exemplo, a língua portuguesa, a linguagem Pascal, a linguagem C, uma sequência numérica, um conjunto de objetos tais como lápis e borracha), ou seja, qualquer coisa que possa fornecer uma sequência lógica. Em baixo podemos ver um algoritmo implementado num fluxograma, sobre o estado de uma lâmpada:
Figura 3 - Algoritmo num fluxograma
Seguindo o raciocínio acima, então um programa de computador já é por si um algoritmo? Sim, é verdade. Embora tenhamos que usar um algoritmo prévio na nossa língua (como apresentado na imagem acima) para escrever um programa com lógica, o próprio programa que provém desse algoritmo já é um algoritmo. Até um esquema mental é um algoritmo.
Ok, já percebi o que é um algoritmo. Mas porque isso interessa ao estudo da programação?
A verdade é que, antes de escrevermos um programa em qualquer outra linguagem é necessário escrever um esquema em papel para evitar erros, por exemplo, na nossa língua, segundo o programa que queremos fazer. Com isto não esquecemos a lógica que queremos dar ao programa e será menos comum o aparecimento de erros. Por exemplo:
- Linguagem humana:
- "Se for verdade isso, acontece isto, senão acontece aquilo"
- Linguagem de programação:
- IF isso; THEN isto; ELSE aquilo;
- O conteúdo escrito acima está formalizado numa linguagem de algoritmos chamada Portugol que é a representação utilizada pela maior parte dos programadores e professores que trabalham em instituições de ensino de linguagens de programação.
Como pode visualizar, um algoritmo pode ser escrito de várias maneiras, de cima para baixo, da esquerda para a direita, na diagonal, em árabe, em russo... O importante é que seja escrito!
Fundamentos
editarUma máquina computacional é qualquer máquina (geralmente de origem eletro-eletrônica) com capacidade de receber dados, executar operações sobre estes dados e retornar os dados transformados por estas operações.
Entrada de Dados | Processamento | Saída de Dados |
---|
As máquinas computacionais eletro-eletrônicas possuem geralmente dois componentes básicos: software e hardware. Chamamos de Hardware sua parte física, e software os programas que tratam os dados imputados.
Quando inserimos algum dado em um computador, os dados inseridos são transformados em sinais elétricos (chamados de bits). O bit (do inglês binary digit) representa os dois estados (ligado ou desligado) que o sinal elétrico pode assumir. Para trabalhar com estes dados, podemos associar estes estados de ligado e desligado a 0 e 1. Quando utilizamos um computador, há um fluxo de sinais elétricos, que representam os dados inseridos, processados e retornados. Um conjunto de oito bits formam um byte, que é uma unidade completa de informação.
Dentro do byte, o estado de cada um dos oito bits, assim como sua posição relativa um ao outro, faz com que o byte assuma um valor específico (não necessariamente numérico), que serve para estruturá-lo em relação a outros bytes e criar um sistema de dados que sirva ao usuário externo.
Para organizar as possibilidades de variações destes bits dentro de um byte, podemos visualizar uma tabela ASCII:
|
|
|
Lógica de Programação
editarLogicamente torna-se trabalhoso trabalhar com dados de computador bit-a-bit. Como forma de manipular este fluxo de estados elétricos e estruturá-lo de forma a permitir operações mais simplificadas e otimizadas sobre os bytes, surgiu o conceito de programação. As linguagens de programação são geralmente em dois níveis:
- Linguagens de Baixo Nível: são linguagens de programação que tratam a informação na linguagem de máquina.
- Linguagens de Alto Nível: são linguagens de programação modeladas quase como a linguagem comum humana, que quando compiladas são convertidas para linguagem de máquina. Cada linguagem deste tipo possui uma sintaxe própria, que deve ser respeitada e aprendida para que possa ser corretamente processada por seu compilador. Compilador é um programa que permite que determinada programação em uma linguagem específica seja adaptada para linguagem de máquina.
No entanto, não é necessário que o programador aprenda todas as diversas linguagens disponíveis no mercado. Cada linguagem é recomendada para determinadas aplicações, assim como possuem suas sintaxes próprias, mas todas são estruturadas logicamente. Com o aprendizado da Lógica de Programação o aluno entenderá os conceitos básicos da programação e poderá com menor ou maior dificuldade, dependendo da linguagem escolhida, aprender a linguagem que quiser.
Algoritmo
editarAs linguagens de programação tratam os dados de um computador através do uso de algoritmos. Um algoritmo é uma estruturação passo-a-passo de como um determinado problema deve ser resolvido de forma não-ambígua (ou como muitos comparam "uma receita de bolo") . Desta forma, para realizar esta estruturação é necessário o uso de ferramentas e operações oriundas da Lógica, principalmente da Lógica Matemática.
Antes de estruturar-se de forma lógica para programação, devemos saber qual o tipo de problema proposto, as informações que serão imputadas e os passos a serem efetuados para atingir-se um fim específico. Por exemplo, vamos ver um "algoritmo" sobre "tomar banho":
- 1.Tirar a roupa.
- 2.Abrir o registro.
- 3.Ensaboar-se.
- 4.Enxaguar o corpo.
- 5.Passar shampoo nos cabelos.
- 6.Enxaguar o cabelo.
- 7.Fechar o registro.
Vimos então um problema proposto (tomar banho) e os passos para solucionar o problema. Logicamente, que há outras formas de estruturarmos este algoritmo de forma a adaptá-lo a atingir o mesmo fim. No entanto, o importante é estruturá-lo de forma coerente, eficaz e simples, ou como muitos dizem de "forma elegante". Veremos na próxima lição que podemos desenhar este algoritmo e aplicar conectivos lógicos que permitam manipular as informações necessárias.
O exemplo abaixo, usar o orelhão, apresenta condições para tomar decisão.
- Retirar o fone do gancho;
- Colocar o cartão telefônico;
- Esperar o ruído de discar;
- Com ruído de discar, disque o número desejado;
- Se sinal de ocupado, faça:
- Colocar fone no gancho e voltar ao passo 1;
- Se sinal de chamada, faça:
- Esperar atender o telefone;
- Conversar;
- Colocar fone no gancho;
- Retirar o cartão;
Algoritmos também podem ter condições para repetição.
Resumo
editarExercícios
editarPara complementar os estudos baixe alguns exercícios de algoritmos. Faça esses exercícios até sua lógica de programação ficar bem afiada.
Bibliografia
editar