Versão 0: 19/12/2019
Nesta seção apresentaremos os conceito fundamentais de algoritmos e sua implementaćão na forma de um programa.
Um algoritmo descreve um processo repetitivo e é tão antiga quanto a área da Matemática. Um primeiro exemplo de algoritmo matemático útil é a soma de números com vários dígitos, por maior que sejam dois números, aplicando corretamente os passos do algoritmo da soma, conseguiremos somá-los (mesmo desconhendo o nome desses números gigantes!).
E qual a relação disso com variável? Bem, por exemplo, é necessário contar e, para fazer usando o computador Basicamente é uma sequência de instrućões 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:
Do mesmo modo que em matemática é essencial efetuarmos 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" (na verdade existem erros numéricos, mas este é outro assunto) 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. De modo geral, podemos conceituar uma expressão aritmética EA como:
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.
É 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