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
[editar | editar código-fonte]Uma 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
[editar | editar código-fonte]Logicamente 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
[editar | editar código-fonte]As 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
[editar | editar código-fonte]Exercícios
[editar | editar código-fonte]Para 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 | editar código-fonte]