Introdução à Programaćão / algoritmos

Versão 0: 19/12/2019

Nesta seção apresentaremos os conceito fundamentais de algoritmos e sua implementaćão na forma de um programa.

O que é um algoritmo?

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!).

Antes de continuar a leitura, tente descrever o algoritmo da soma de dois números inteiros de vários dígitos.

Código 1.
Uma possível descrićão seria, simplificando para caso em que ambos os números tenham o mesmo número de dígitos:
1. ajusta-se os números à direita (por que?);
2. define-se uma variável auxiliar vai_um com valor nulo;
3. soma-se os dois dígitos mais à direita (menos significativos),
   se resultar mais que 9,
     escreva o resultado menos 10 (um único dígito)
     define-se vai_um com valor 1 (por que?),
   senão
     escreva o resultado (um único dígito)
     define-se vai_um com valor 0 (por que?),
4. se não existem mais dígitos, pare
5. soma-se os próximos dois dígitos e o vai_um,
   se resultar mais que 9,
     escreva o resultado menos 10 (um único dígito)
     define-se vai_um com valor 1 (por que?),
   senão
     escreva o resultado (um único dígito)
     define-se vai_um com valor 0 (por que?),
6. volta-se ao passo passo 4 avanćando à esquerda um dígito.

Note que os passos 4, 5 e 6 são repetidos várias vezes, constituindo o núcleo desse algoritmo.

O que é um programa de computador?
AQUI!!!!

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
1int n1,n2; # desnecessário declarar em Python
2n1 = 1; n1 = 1
3scanf("%d", &n2); n2 = int(input())
4printf("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:

Expressões aritméticas

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:

  1. EA := K: uma constante numérica é uma expressão aritmética
  2. EA := EA + EA | EA - EA | EA * EA | EA / EA: uma expressão aritmética seguida de um operador binário (com 2 itens) e seguida por outra expressão aritmética é uma expressão aritmética
Os operadores artiméticos binários, tanto em C quanto em Python são:

OperaçãoOperador 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