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

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:

Binário Dec Hex Representação
0010 0000 32 20 espaço ( )
0010 0001 33 21 !
0010 0010 34 22 "
0010 0011 35 23 #
0010 0100 36 24 $
0010 0101 37 25 %
0010 0110 38 26 &
0010 0111 39 27 '
0010 1000 40 28 (
0010 1001 41 29 )
0010 1010 42 2A *
0010 1011 43 2B +
0010 1100 44 2C ,
0010 1101 45 2D -
0010 1110 46 2E .
0010 1111 47 2F /
0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
0011 1010 58 3A :
0011 1011 59 3B ;
0011 1100 60 3C <
0011 1101 61 3D =
0011 1110 62 3E >
0011 1111 63 3F ?
 
Binário Dec Hex Representação
0100 0000 64 40 @
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
0101 1011 91 5B [
0101 1100 92 5C \
0101 1101 93 5D ]
0101 1110 94 5E ^
0101 1111 95 5F _
 
Binário Dec Hex Representação
0110 0000 96 60 `
0110 0001 97 61 a
0110 0010 98 62 b
0110 0011 99 63 c
0110 0100 100 64 d
0110 0101 101 65 e
0110 0110 102 66 f
0110 0111 103 67 g
0110 1000 104 68 h
0110 1001 105 69 i
0110 1010 106 6A j
0110 1011 107 6B k
0110 1100 108 6C l
0110 1101 109 6D m
0110 1110 110 6E n
0110 1111 111 6F o
0111 0000 112 70 p
0111 0001 113 71 q
0111 0010 114 72 r
0111 0011 115 73 s
0111 0100 116 74 t
0111 0101 117 75 u
0111 0110 118 76 v
0111 0111 119 77 w
0111 1000 120 78 x
0111 1001 121 79 y
0111 1010 122 7A z
0111 1011 123 7B {
0111 1100 124 7C |
0111 1101 125 7D }
0111 1110 126 7E ~

Lógica de Programação

editar

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

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.

  1. Retirar o fone do gancho;
  2. Colocar o cartão telefônico;
  3. Esperar o ruído de discar;
  4. Com ruído de discar, disque o número desejado;
  5. Se sinal de ocupado, faça:
    1. Colocar fone no gancho e voltar ao passo 1;
  6. Se sinal de chamada, faça:
    1. Esperar atender o telefone;
    2. Conversar;
    3. Colocar fone no gancho;
    4. Retirar o cartão;

Algoritmos também podem ter condições para repetição.

Resumo

editar

Exercícios

editar

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
  • Algoritmo, artigo na Wikipédia em português
  • Bit, artigo na Wikipédia em português


 
Wikipedia
A Wikipédia tem mais sobre este assunto:
algoritmo