# Introdução à programação/Estruturas de manipulação de dados

Como já foi referido e é lógico, as linguagens de programação têm coisas em comum. Uma delas são as estruturas de controle. Estruturas de Controle são definidas como sendo a base da lógica de programação e podem ser de dois níveis: direto ou indireto (complexo). Para termos uma ideia da diferença entre um controle direto e um controle indireto, apresento a seguir dois diálogos representativos de duas situações do cotidiano:
Analisando os dois casos, rapidamente concluímos que a resposta obtida no primeiro é direta e bem mais simples que no segundo. Ora, se quisesse converter estas situações para uma situação parecida no computador, poderíamos constatar que bastava-nos uma página de um código sequenciado para o computador proceder a recriação do conteúdo da primeira situação. O mesmo já não se verifica no segundo. Normalmente nestes casos, o programador utiliza peças fundamentais chamadas funções (do inglês function) que retratam cada um acontecimento da situação, havendo assim ligações entre eles dependendo dos resultados obtidos. Funções são retratadas mais à frente.
Penso que com estes dois exemplos o leitor já entende bem o que é um Algoritmo direto e um Algoritmo complexo.

### Estruturas básicas

Qualquer programa tem que fazer alguma coisa (nem que seja enviar um sinal bip) senão não é um programa, ou seja, ele tem que apresentar conteúdo. Assim, como apresenta conteúdo, vai "alterar" estados dentro do computador, sendo que, o estado de uma das peças que vai inevitavelmente se alterar é a memória interna. É inevitável um programa não se "alojar" na memória do computador, assim, o programa precisa de um espaço físico na memória e para isso terá que o requisitar. É disso que iremos falar a seguir.

#### Variáveis e constantes

Uma variável é uma expressão que varia e normalmente é representada por uma incógnita X, e uma constante é uma expressão que não se altera (o número de Avogadro, o pi, o número de Neper) que pode ser representado por uma letra.
Nos programas, variáveis são todas as expressões que podem ou não variar, assim como também podem ser constantes. Uma coisa é óbvia: Constantes não podem ser variáveis!
Transportando a noção de Variável e Constante para a programação, apresento agora dois trechos de código em PHP e C++:
No caso acima, uma variável é um texto que foi guardado em memória, representado por p.
Não se assuste se não entendeu nada do que se passou ali em cima. Aqui "Olá Mundo!" foi uma constante e não uma variável, pois ela não foi guardada em memória, mas imposta pela instrução cout diretamente.

#### Instruções

As instruções são pequenos comandos que ditam ao programa o que fazer com determinado dado. Elas podem guardar informação, apresentar informação, aguardar um input, etc.
Aqui apresentamos algumas instruções que são mais comuns assim como a sua implementação no C++ e PHP:
| Instrução | Descrição | PHP | Linguagem C++ |
| MOSTRAR | Mostrar dados na tela | echo; print; | cout << |
| INPUT | Requisitar um input | $_GET (Não é usado de forma direta) | cin.get |

### Estruturas de controle
#### IF

IF é o mesmo que SE e é usado por todas as linguagens de programação por ser a estrutura mais simples que existe. A sua implantação representa o lançamento de um booleano Verdadeiro ou Falso.

#### ELSE

ELSE é usado como um acréscimo de IF, levando a que todos os dados retornados como FALSO em IF sejam controlados por este ELSE.

#### SWITCH

O SWITCH é visto como uma substituição de IF-ELSE quando existem mais de 2 opções a serem controladas.
Neste caso, SWITCH irá procurar qual o argumento que variável contém e assim escolher qual dos CASE correr.

#### FOR

FOR é um loop que acontece enquanto determinado argumento não se tornar verdadeiro.
Pode ser mais difícil desvendar este código (principalmente se o leitor for matemático e ficar perplexo com a linha "X = X + 1"), mas o que está escrito ali em cima é que "enquanto X não for igual a 10, a instrução FOR vai sempre voltar ao início e somar/incrementar 1 ao valor de X".
A saída no processamento é a seguinte:

#### While

WHILE, estrutura utilizada em grande parte das linguagens de programação atuais, especifica uma ação enquanto determinada condição for verdadeira. Observe o exemplo escrito em pascal.
No código acima, enquanto o valor de Z for diferente do estabelecido para X, será pedido ao usuário que entre com o valor de Z.

### Funções

Funções são pequenos trechos de código independentes que são especializados a tratar determinado tipo de dados dentro de um programa. Há linguagens, como o C ou o C++, que só trabalham com Funções, outras, como as linguagens de script (PHP, Python, Perl, etc) , que trabalham com funções e com código solto em sequência.
Exemplo de implementação de funções:
Exemplo da implementação de funções num código:
Neste código, nós conhecemos o poder das funções. No caso acima, é pedido ao utilizador a introdução de um número. Depois disso, o computador analisa se o número é inteiro, e se for, ele chama a função multiplicador, retornando uma variável Y contendo o número introduzido anteriormente multiplicado pelo expoente 22. Se pelo contrário, o número introduzido não for inteiro, o computador lança uma mensagem de erro "Não é número inteiro".

### Arrays

Os Arrays são simples estruturas de dados, denominadas como vector ou lista se forem arrays uni-dimensionais, ou matriz se forem poli-dimensionais. O que acontece é que num Array os dados são listados e ordenados segundo propriedades ou variáveis que tentamos dominar.
No caso seguinte apresentamos um array ordenado com dados sobre o estado de um programa open-source:
Aos dados descritos como "versão" e "SO" chamamos Chave e todos os outros são Valores. Então a todo um valor aponta uma chave.

### Operações aritméticas

Em qualquer linguagem, existe a possibilidade de se calcular expressões algébricas aritméticas, segundo os sinais convencionais (+, -, *, e /), logo, qualquer expressão que seja numérica se comporta como dada na matemática elementar. Porém, é possível usar-se expressões alfa-numéricas para se proceder a cálculos mais complexos, matéria em que não iremos entrar pois aqui as linguagens diferem no seu comportamento - algumas aceitam, outras calculam o valor hexadecimal ou ASCII do caractere, outras formam strings (frases), etc - levando assim a um leque infinito de possibilidades de programação, dependendo das necessidades previstas por cada tipo de linguagem.

#### Operações aritméticas

Podemos somar qualquer expressão algébrica do seguinte modo:
Obviamente que iríamos obter 4 como resultado mostrado.
Analogamente, é possível calcular com qualquer calculadora matemática básica:
Uma vez visto isto, poderíamos pensar que seria possível calcular expressões complexas
O que obtemos acima pode ser ambíguo, resultado da maneira como as linguagens de programação interpretam a expressão - calcular a expressão por sequência lógica matemática ou por sequência apresentada. Atualmente todas as linguagens mais comuns seguem a sequência lógica matemática para calcular a expressão e assim o resultado obtido será 10,(6) e não 0,(6).

#### Operações complexas

Como será que o computador se comporta com os cálculos que usam números de ponto flutuante ou números exponenciais?
Da mesma maneira como na matemática, o computador tratará de arredondar casas decimais (algumas linguagens como PHP necessitam da função round para arredondar bem matematicamente) e de calcular potências, tudo isto para chegar a um resultado com um número real aproximado ao que se diz matematicamente verdadeiro.

### Conclusão

Estas são as instruções mais básicas usadas por todas as linguagens de programação existentes, exatamente por serem básicas e simples. Sem elas, uma linguagem não era creditada e apresenta demasiados limites para ser considerada uma linguagem de programação racional.