Introdução às funções, parâmetros e variáveis globais

Uma função em linguagens alto-nível com C e Python deve ser entendida como um bloco de comandos que podem ser invocados (chamados) em qualquer momento, resultando que o referido bloco será executado (ou interpretado) e após sua execução, o fluxo continua do ponto em que estava. Isso é esquematizado na figura abaixo.

Em última análise, os dados presentes na memória do computador é uma sequência de bits e um bit corresponde a uma posição de memória que pode armazenar o valor 0 ou o valor 1. No início da computação moderna a menor quantidade de bits que podia acessar eram 8, que foi denominado por byte.

Desse modo, toda informação armazenada no computador é uma sequência de bytes e tratamento de cada que se dá para cada sequência de bytes pode variar. Ou seja, de acordo com o contexto pode-se interpretar esta sequência como um número inteiro, como um valor real ou como um caractere.

Variáveis inteiras e reais

E qual a relação disso com variável? Bem, por exemplo, é necessário contar e, para fazer usando o computador precisamos pegar uma sequência de bytes interpretá-lo como inteiro, somar 1 e registrar o valor alterado. Isso é feito utilizando a mesma posição de memória, que está assim variando, dai o nome variável.

De um ponto de vista mais elevado (alto-nivel), utilizando uma linguagem de programação com C ou Python, uma variável é representada por um nome, sem caracteres especiais (exceto "barra baixa" '_' que é permitido) e que não seja o nome de um comando da linguaguem (denominado de modo geral por palavra reservada).

Além disso uma variável deve ter um tipo associado, os tipos básicos que examinaremos nesta seção são o inteiro (int) e o flutuante (float), este último para representar os valores reais. A partir da explicação acima sobre interpretar os bytes como número ou caractere explica a necessidade de cada variável ter o seu tipo conhecido.

Para explicar melhor a necessidade de tipos, suporemos que o computador considerado utilize para uma variável int e para uma do tipo float, respectivamente, 2 e 4 bytes.

Desse modo, quando o citado computador precisa devolver o valor armazenado em uma variável do tipo inteiro, ele acessará a posição de memória associada à variável, pegará a partir dessa posição os próximos 16 bits e o interpretará como um valor inteiro.

Do ponto de vista prático, vejamos como se usa variáveis do tipo int e do tipo float nas linguagens C e Python.

| C | Python
1 | int n1,n2; | # desnecessário declarar em Python
2 | n1 = 1; | n1 = 1
3 | scanf("%d", &n2); | n2 = int(input())
4 | printf("n1=%d e n2=%d\n", n1, n2); | print "n1=", n1, " e n2=", n2 # Python 2
5 |  | print("n1=", n1, " e n2=", n2) # Python 3

Note as diferenças entre C e Python. De modo geral, todo comando em C precisa de ';' como finalizador. Na linha 1 percebe-se que em C é obrigatório declarar as variáveis, enquanto que em Python não.
Na linha 3 nota-se que C utiliza a função pré-definida de nome scanf para pegar valores digitados pelo usuário enquanto Python usa o input. O scanf usa o formatador especial '%d' para forçar o computador a interpretar os bytes como um inteiro, enquanto o input pega os bytes digitados e o submete à outra função pré-definida Python, o int(...), que converte o valor para inteiro.
Na linha 4 nota-se o mesmo tipo de diferença, C utiliza a função printf para imprimir também com o formatador para inteiro '%d', além de separar em 2 blocos, o primeiro para formatar a saída, que é cercado por aspas dupla e o segunda, uma lista de variáveis compatíveis com o formatador. Já em Python, usa-se os caracteres entre aspas e as variáveis misturados, separador por vírgula.
Vale destacar que a linha 4 apresenta a sintaxe do Python antes da versão 3, enquanto que alinha 5 apresenta o mesmo resultado mas para o Python a partir da sua versão 3.

Expressões aritméticas

Do mesmo modo que em matemática é essencial efetuamos operações aritméticas com valores numéricos, o mesmo ocorre com o computador, na verdade efetuar contas de modo rápido e sem erro foi a grande motivação para se construir os computadores.

Neste, os agrupamentos de valores, variáveis e operadores aritméticos recebem o nome de expressão aritmética. Os operadores artiméticos, tanto em C quanto em Python são:

Operação | Operador | Exemplo
soma | + | 2 + 4
subtração | - | n1 + 1
multiplicação | * | 3 * n2
divisão | / | n1 / n2

Note que foi usado espaço em branco entre os operando e operadores, mas isso não é obrigatório.

O resultado de uma expressão aritmética depende do contexto

É importante observar que dependendo do contexto o resultado de uma expressão é um ou outro, quer dizer, se os valores envolvidos forem todos eles inteiros, o resultado será inteiro, entretanto havendo um valor real, a resposta final será real.

A importância disso fica clara ao examinar dois exemplos simples: 3 / 2 * 2 e 3.0 / 2 * 2. A primeira expressão resulta o valor 2, enquanto a segunda 3.0. Isso mesmo.

A razão é que no primeiro caso todos valores são inteiros, então o cômputo é realizado com aritmética de precisão inteira, ou seja, ao realizar o primeiro cômputo 3/2, o resultado é 1 (e não 1.5 como no segundo caso), daí o segundo operador é feito com os valores 1 * 2 resultando o valor 2.

Leônidas de Oliveira Brandão http://line.ime.usp.br