O que é um programa de computador?
Agora que já falamos sobre a importância de se aprender programação, precisamos começar a entender o que programação de computadores significa na prática. Programação de computadores é o ato de desenvolver programas de computador. Mas o que é um programa de computador?
A resposta curta é: um programa de computador é a implementação de um algoritmo em uma linguagem de programação.
Vamos começar explicando o que é um algoritmo e depois explicaremos o que é uma linguagem de programação.
O professor Donald Knuth define algoritmo da seguinte forma:
Um algoritmo é um conjunto de regras para se obter uma saída específica a partir de uma entrada específica. Cada passo de um algoritmo precisa ser definido de forma precisa o bastante para que ele seja traduzido para uma linguagem de programação e executado por um computador.
Existem duas condições para que um procedimento possa ser chamado de algoritmo. Primeiro, as regras descritas por ele precisam especificar operações que sejam tão simples e tão bem definidas que elas possam ser executadas por uma máquina. Além disso, um algoritmo precisa sempre terminar depois de um número finito de passos.
Um exemplo de algoritmo é como calcular a nota média dos alunos de uma turma. O procedimento (algoritmo) para isso envolve os seguintes passos:
- Calcule a soma das notas da turma:
- Inicialmente, a soma das notas da turma é zero. Vamos chamar essa soma de
nota_total
. - A seguir, veja a nota de cada aluno e some esta nota à
nota_total
. - Calcule a média da turma. Vamos chamar o total de alunos de
n
: - A média da turma será:
nota_total / n
.
No procedimento acima, temos todos os requisitos de um algoritmo mencionados acima. Nosso procedimento:
- é uma sequência de regras, definidas de forma precisa;
- e descreve como produzir uma dada saída a partir de uma entrada específica, em um número finito de passos.
Se quisermos ser um pouco mais precisos e evitar descrições em português, que podem ser ambíguas, podemos definir nosso procedimento (nosso algoritmo) de modo mais matemático:
nota_total = 0
Para cada um dos n alunos, faça:
nota_total = nota_total + nota_do_aluno
media = nota_total / n
O algoritmo acima é bastante parecido com o que seria sua implementação em uma linguagem de programação. Algumas vezes, quando estamos criando um algoritmo, começamos com um procedimento mais “alto nível” como fizemos agora, mas o objetivo final é ir refinando o procedimento até obter algo mais preciso e sem ambiguidades.
Se você ficou assustado com a definição de algoritmo dada acima, fique tranquilo. Pense em um algoritmo simplesmente como um passo a passo para se resolver um problema.
Para serem executados por um computador, algoritmos precisam ser traduzidos para uma linguagem de programação. Quando traduzimos um algoritmo para uma linguagem de programação estamos criando um programa de computador.
Assim, um programa é uma representação de um algoritmo em uma dada linguagem de programação. Podemos interpretar um algoritmo como sendo um método abstrato para cálculo de alguma saída a partir de alguma entrada, enquanto um programa é a implementação de um método computacional em uma linguagem de programação.
Componentes de um programa
Frequentemente, ouvimos analogias entre algoritmos e receitas culinárias. Essa frequência é justificada, dadas as muitas semelhanças entre o preparo de um prato a partir de uma receita e a criação de um programa de computador a partir de um algoritmo.
Seguindo a analogia entre receitas/pratos e algoritmos/programas, um prato é a implementação de uma receita em um contexto específico (uma dada cozinha, por exemplo) e um programa é a implementação de um algoritmo em uma linguagem de programação específica.
Ainda segundo essa mesma analogia, o chefe de cozinha (quem cria a receita) é equivalente ao projetista de algoritmos ou arquiteto do sistema e o cozinheiro (quem prepara a receita) seria equivalente ao programador (quem implementa o algoritmo).
Retomando a definição de algoritmo dada acima, vemos que “um algoritmo nada mais é que uma sequência de regras, definida de forma precisa, descrevendo como produzir uma dada saída a partir de uma entrada específica em um número finito de passos”. Note os três componentes dessa definição:
- Uma entrada específica.
- Uma sequência de regras (passos) a serem aplicados sobre a entrada.
- Uma saída específica.
Nesse sentido, cada algoritmo (e por consequência cada programa de computador) recebe uma entrada, realiza operações sobre essa entrada e produz uma saída. Quando estamos preparando uma receita, recebemos também uma entrada (os ingredientes), executamos os passos da receita sobre esses ingredientes e ao final temos uma saída (o prato desejado).
Agora que sabemos o que é um programa de computador, surge uma próxima pergunta: o que é uma linguagem de programação? A próxima seção lida com essa pergunta.
O que é uma linguagem de programação?
De acordo com o professor Hal Abelson, do MIT:
Uma linguagem de programação é um meio formal de se expressar ideias sobre metodogia, e não simplesmente uma forma de fazer um computador executar instruções.
Esta é uma observação importante, pois se formos capazes de expressar nossas ideias em uma linguagem de programação, elas estão maduras e detalhadas a ponto de serem colocadas em prática (por meio de um programa de computador).
Uma linguagem de programação precisa ter três componentes básicos:
- Vocabulário: Conjunto de palavras (elementos primitivos) da linguagem. Aqui entram também as chamadas palavras-chave da linguagem. Por exemplo, em Python, criamos uma função por meio da palavra
def
, mas outras linguagens usam palavras diferentes para isso. Esse tipo de escolha de palavras forma o que estamos chamando de vocabulário da linguagem. - Sintaxe: Conjunto de regras para se escrever comandos na linguagem usando as palavras do vocabulário. Por exemplo, em Python, dados dois números
a
eb
, podemos somá-los por meio do comandoa + b
. Em outras linguagens, esse mesmo comando poderia ser expresso como(+ a b)
. A sintaxe determina o modo como comandos e expressões da linguagem devem ser expressados. - Semântica: Significado de cada comando na linguagem. Em outras palavras, a semântica trata do quê cada comando da linguagem quer dizer. Por exemplo, quando usamos a expressão
p and q
em Python, significa que a expressão terá um valor (resultado) lógico (verdadeiro ou falso) e que esse resultado só será verdadeiro se tantop
quantoq
forem verdadeiros.
Agora que você já entende os componentes básicos de uma linguagem de programação, está na hora de aprender a criar programas em Python, uma das linguagens mais populares da atualidade!