Linguagem de programação imperativa

Cada linguagem de programação tem características diferentes, mas a estrutura básica possui fortes semelhanças entre si, dependendo mais fortemente do conceito da linguagem.

Há diversos paradigmas de linguagens de programação: linguagens imperativas, orientadas a objetos, funcionais, orientada a eventos, e assim por diante.

Linguagem de programação imperativa

Denis Rithcie, criador da linguagem C e do Unix
Uma linguagem de programação é considerada imperativa quando sua estrutura básica consiste em uma sequência de funções e comandos que executam as ações determinadas, e retornam o resultado destes comandos, ou apenas alteram o estado do sistema.


Uma forma simples de exemplificar o conceito de imperatividade é a simples ação de mandar um cachorro se assentar. Digamos que o cachorro seria o computador, o treinamento que ele recebeu seria o programa executando no computador, e você o usuário. Ao dizer "senta!", a ação esperada seria que, de acordo com o treinamento, o cachorro se assentasse.

O resultado disso foi uma mudança no estado do cachorro, que estava em pé e agora está sentado, após ter interpretado o comando do dono.

Para melhor compreender o conceito, vamos ver um código-fonte escrito em C:

#include <stdio.h> // biblioteca standard de Input/Output
main(){
   int j; // declara var. j inteira
   printf("Digite um valor inteiro e ENTER\n"); // mostra na tela
   scanf("%d", &j); // ler j, NAO digitar NADA entre %d e "
   printf("Valor de j e' %d\n", j); // mostra na tela valor de j lido
} // fim main

Executando o código acima, será exibido uma mensagem no console, pedindo para que o usuário insira um valor. O programa então esperará que o usuário informe tal valor, e em seguida exibirá o valor informado no console.



Assim, os seguintes comandos foram executados:
  1. declarar a variável "j" como um valor numérico inteiro,
  2. imprimir na tela a mensagem "Digite um valor inteiro e ENTER"
  3. ler valor fornecido pelo usuário e armazenar na variável "j"
  4. imprimir na tela a mensagem "Valor de j é %d", substituindo "%d" pelo valor informado
Note que há texto entre o código fonte. Estes textos são comentários, definidos por duas barras // e todo texto após estas barras será ignorado durante a execução do código.

Outras linguagens que seguem o conceito de imperatividade são:  Ada, ALGOL, Basic, C, PHP, Java, Cobol, Fortran, Pascal, Python, Lua e Mathematica.

A estrutura da linguagem de programação imperativa

Toda linguagem de programação segue uma determinada sequência necessária para que seja devidamente interpretada. Podemos comparar com a nossa língua: Assim como no português precisamos da devida sequência para formar uma frase corretamente, linguagens de programação precisam do devido cuidado com a semântica para a correta interpretação.

Vejamos uma simples frase: "O cachorro latiu alto".
Para que esteja corretamente escrita e seja entendida por todos, esta frase deve conter, nesta sequência, um artigo e um substantivo, formando um sujeito, seguido de um verbo e um adjetivo, que formam um predicado.

Se não for seguida essa sequência correta, não entenderíamos que o falante estaria expressando algo sobre um cão latindo.

Assim, vejamos as partes básicas de uma linguagem imperativa, utilizando o mesmo código em C acima:

#include <stdio.h> // biblioteca standard de Input/Output
main(){
   int j; // declara var. j inteira
   printf("Digite um valor inteiro e ENTER\n"); // mostra na tela
   scanf("%d", &j); // ler j, NAO digitar NADA entre %d e "
   printf("Valor de j e' %d\n", j); // mostra na tela valor de j lido
} // fim main

Na primeira linha, informamos que precisaremos da biblioteca stdio.h (explicaremos sobre bibliotecas em um post futuro). Esta biblioteca é responsável por cuidar da entrada e saída de dados do programa.

Na segunda linha vemos a assinatura da função, iniciando com o nome que queremos dar a tal função (no caso, main), e em seguida, entre parênteses e separados por virgula, os argumentos que tal função deve receber. No caso, nenhum argumento precisa ser passado, portanto, apenas é necessário colocar os parênteses sem nada dentro. Ainda nesta linha uma chave indica o início do código desta função.

Na terceira linha, declaramos uma variável do tipo int (inteiro), e seu nome, (j), e logo em seguida, um sinal de ponto-e-vírgula, indicando o final de um comando.

Na quarta linha, temos uma chamada da função printf, que recebe como argumento uma string, e em seguida exibe esta string na tela. Até este momento do código, o usuário que o estivesse executando não teria visto nada na tela.

Na quinta linha, uma nova função é chamada. Desta vez a scanf, responsável por ler dados inseridos pelo usuário. Esta função recebe dois argumentos: uma string que informa o formato de tal dado, e o nome de uma variável que receberá o dado inserido pelo usuário. Note que o nome da variável é precedido de um & (lê-se "i comercial"). Este caractere nesta função determina que a função será capaz de alterar o valor da variável.

Como é necessário a entrada de dado pelo usuário, o programa neste momento entra em espera até que o usuário digite o dado e tecle Enter.

Na sexta linha vemos novamente a função printf, mas dessa vez recebendo dois argumentos. Isso é possível graças a um recurso chamado sobrecarga, que veremos em breve. Observe que a string no primeiro argumento possui um %d. Este caractere indica que um número será colocado ali, e tal número é o valor da variável j, que é passada no segundo argumento, após a vírgula. Outro item a ser observado nesta string é o \n. É um caractere de escape, que significa que o programa deve executar uma quebra de linha (dar um enter) no texto a ser exibido na tela.

E por fim, na sétima linha, uma chave fecha este bloco de código, indicando que a função chegou ao seu fim.

Algo bem importante: toda função em C e em outras diversas linguagens determinam o fim de cada comando com um ponto-e-vírgula. A ausência deste sinal acarretará em erro de interpretação, compilação, execução, e seu código não funcionará nem que você reze pra Sâo Login.

Obrigado por ter lido este longo post até o final. Caso haja alguma dúvida a respeito deste assunto, ou caso queira dar alguma opinião, poste nos comentários que responderei assim que possível.

Até o próximo post!


Créditos: Foto do Dennis Ritchie: http://blog.hostdime.com.br/
Algumas informações apresentadas no texto têm como referência a Wikipedia

Nenhum comentário:

Postar um comentário