Estrutura de um Algoritmo, Variáveis,
Comandos de Entrada e Saída e
Expressões Aritméticas
Estrutura de um Programa em Linguagem
Algorítmica
Nesse curso nós vamos utilizar a linguagem algorítmica para treinar a
programação de computadores. A linguagem algorítmica que nós vamos utilizar é
muito similar às demais linguagens de programação imperativas. As principais
diferenças entre a linguagem algorítmica e as demais linguagens de programação
são:
1. A linguagem algorítmica pode ser escrita em português, portanto, é mas
simples de compreender os conceitos iniciais.
2. A linguagem algorítmica é mais simples sintaticamente do que as demais
linguagens de programação. Isso significa que podemos nos preocupar
menos com regras sintáticas como, por exemplo, as regras que definem
identificadores válidos.
3. A linguagem algorítmica não possui algumas restrições de implementação
presentes nas linguagens de programação reais. Por exemplo, não existe
faixa de valores válidos para um determinado tipo de variável na linguagem
algorítmica.
4. Portanto, essas simplificações nos ajudam a focar na resolução do
problema em si, e não em detalhes de sua codificação.
Um algoritmo em linguagem algorítmica tem a seguinte estrutura mínima:
Algoritmo primeiro;
{
}
Esse é o algoritmo mais simples que pode ser criado em linguagem algorítmica.
Ele inicia com a palavra algoritmo e é seguido de um nome para o algoritmo,
escolhido pelo programador. Esse nome é mais formalmente chamado de
identificador, pois ele identifica algo, neste caso o algoritmo. O identificador do
algoritmo serve para nos ajudar a lembrar para que serve esse algoritmo. Nesse
caso, esse é o nosso primeiro algoritmo, por isso o identificador primeiro. Sempre
utilize identificadores que sejam sugestivos, no caso de algoritmos, que ajudem a
lembrar qual é a função do algoritmo.
As palavras { e } marcam o início e o final dos comandos presentes no algoritmo.
Entre essas duas palavras nós devemos inserir os comandos que devem ser
executados no algoritmo. As palavras { e } delimitam um bloco de comandos.
Todo algoritmo tem pelo menos um bloco de comandos, chamado de corpo
principal do algoritmo. O corpo principal do algoritmo termina com um ponto final
após a palavra }.
O algoritmo acima não faz absolutamente nada. Isso ocorre porque não existe
nenhum comando dentro do corpo principal do algoritmo. Assim que nós
começarmos a aprender alguns comandos, os nossos algoritmos ficarão mais
interessantes.
Para ajudar na explicação dos algoritmos, aqui nesse texto, são inseridos à
esquerda do algoritmo, números que correspondem às posições das linhas. Por
exemplo, o algoritmo anterior ficaria assim:
01
02
03
04
| Algoritmo primeiro;
|
| {
| }
Variáveis
Todos nós já ouvimos falar que os computadores são excelentes para armazenar
e processar informações. Entretanto, o que deve ser feito para armazenar um
determinado valor na memória do computador? Uma das formas de fazê-lo é
através das variáveis.
As variáveis são componentes de um algoritmo que permitem armazenar valores
na memória do computador. O valor de uma variável pode ser modificado no
decorrer da execução do algoritmo, daí a origem do nome "variável".
As variáveis também possuem um tipo associado. O tipo da variável limita o valor
que a variável pode receber. Existem diversos tipos de variáveis, os mais
utilizados são:
•
•
•
inteiro: uma variável inteira pode receber um valor inteiro, como por
exemplo: 2, 5, -6, 11 ou 15423;
real: uma variável real pode rececer um valor real, ou seja, um número com
ou sem parte fracionária, como por exemplo: -1.43, 0.001, 5 ou 2111.99;
caracter: uma variável do tipo caracter pode receber como conteúdo um
caracter (ou seja, um único símbolo que pode ser entrado pelo teclado),
como por exemplo: %, #, q, A, 7 ou {.
Em um algoritmo é necessário declarar as variáveis antes de utilizá-las. Declarar
uma variável significa dizer qual é o identificador e o tipo da variável. Na
linguagem algorítmica, a palavra variáveis indica o início do bloco de declaração
de variáveis.
01
02
03
04
05
06
07
| Algoritmo segundo;
|
| {
|
a: inteiro;
|
|
| }
O algoritmo anterior dá um exemplo de como declarar um variável. Essa variável
possui um identificador a e é do tipo inteiro. As variáveis devem ser declaradas
entre a palavra variáveis e a palavra {, que indica o início do corpo principal do
algoritmo. Por fim, as variáveis sempre são declaradas da forma:
<Identificador da variável> : <Tipo da variável> ;
No qual <Identificador da variável> deve ser substituído pelo nome da variável e
<Tipo da variável> deve ser substituído pelo tipo da variável. Como por exemplo:
a: inteiro;
ou
média: real;
Repare que a declaração da variável a no algoritmo segundo está a alguns
espaços em branco à direita. Isso é chamado de indentação e ajuda na
legibilidade do programa. A indentação ajuda as pessoas que forem ler (incluindo
você mesmo) o algoritmo. Nesse caso, fica bastante visível que a declaração a:
inteiro; está dentro do bloco de declaração de variáveis.
Portanto, a declaração a: inteiro cria uma variável com identificador a do tipo
inteiro. Após declarar a variável a, é necessário executar os comandos presentes
no corpo principal do algoritmo. Entretanto, no nosso segundo algoritmo o corpo
principal está vazio. Sendo assim, o algoritmo termina.
Nós já sabemos como declarar uma variável na linguagem algorítmica. Mas, como
é possível ler ou alterar o valor dessa variável? As duas formas mais comuns para
alterar o conteúdo de uma variável são:
1. através de uma atribuição;
2. através de um comando de entrada.
Vamos ver agora como fazer uma atribuição. Mais tarde, vamos ver como os
comandos de entrada funcionam.
Uma atribuição é feita através do símbolo " ". Através desse símbolo é possível
armazenar um valor (possivelmente resultado de uma expressão aritmética, como
veremos logo a seguir) em uma variável. Vamos modificar o nosso segundo
algoritmo para que ele armazene o valor 10 na variável a:
01
02
03
04
05
06
07
08
| Algoritmo terceiro;
|
| {
|
a: inteiro;
|
|
|
a
10;
| }
O algoritmo acima possui um único comando dentro do corpo principal do
algoritmo, esse comando é a atribuição na linha 07 (repare no símbolo ). Nesse
caso, o valor 10 está sendo atribuído à variável a. Em português lê-se "a recebe
10". Como foi declarado, a variável de identificador a é uma variável que pode
receber valores inteiros. Na linha 07, essa variável passará a ter como conteúdo o
valor 10.
Uma atribuição segue sempre a mesma sintaxe. À esquerda do símbolo de
atribuição ( ) deve ser colocado o identificador de um variável. Essa variável irá
receber o valor especificado à direita do símbolo de atribuição. Como veremos na
próxima seção, pode-se utilizar, no lado direiro da atribuição, uma expressão
matemática. Isso faz com que o programa possa realizar alguns cálculos
matemáticos e atribuir o resultado à variável.
Até agora nós somente sabemos como atribuir um valor a uma variável. Mais
interessante seria se nós pudessemos realizar cálculos matemáticos com essas
variáveis. Esse é o assunto da próxima seção.
Expressões Aritméticas
Podemos fazer um algoritmo que utilize as variáveis para realizar cálculos, como
se o computador fosse uma calculadora. Por exemplo, podemos calcular a média
anual de um estudante a partir de 4 notas bimestrais. O algoritmo ficaria assim:
01
02
03
04
05
06
07
08
09
10
11
12
| Algoritmo Média;
|
| {
|
B1, B2, B2, B4: real;
|
Média: real;
|
|
|
B1
7;
// Nota da
|
B2
5;
// Nota da
|
B3
8;
// Nota da
|
B4
7;
// Nota da
|
Média
(B1 + B2 + B3 +
primeira prova bimestral: 7
segunda prova bimestral: 5
terceira prova bimestral: 8
quarta prova bimestral: 7
B4) / 4;
13 | }
O algoritmo acima possui algumas novidades. Na linha 04 são declaradas 4
variáveis inteiras. Repare que para não repetir 4 vezes a mesma declaração
"nome da variável: inteiro", nós podemos fazer uma simplificação e declarar na
mesma linha as quatro variáveis. Isso é válido para qualquer número de variáveis
e qualquer tipo. Entretanto, todas as variáveis declaradas na mesma linha
precisam ser necessariamente do mesmo tipo.
As linhas 08, 09, 10 e 11 fazem quatro atribuições às variáveis B1, B2, B3 e B4,
respectivamente. B1, B2, B3, e B4 são as variáveis que armazenam as quatro
notas bimestrais dos respectivos bimestres. Outra novidade são os textos
iniciados por duas barras diagonais (//). Esses textos são chamados de
comentários, e a sua função é simplesmente explicar algo para a pessoa que
está lendo o algoritmo. Um comentário nunca é levado em consideração pelo
algoritmo. A sua função é unicamente tornar o algoritmo mais simples de ser
entendido pelas pessoas que o lêem. Um comentário inicia por // e se estende até
o final da linha. Uma segunda forma fazer um comentário é colocar o texto entre
os caracteres /* e */. Por exemplo:
/* Nota da primeira prova bimestral: 7 */
Na linha 12 é atribuído à variável Média um valor resultante da expressão
aritmética:
(B1 + B2 + B3 + B4) / 4
Essa expressão aritmética precisa primeiro ser avaliada, ou seja, é necessário
fazer os cálculos para ver qual valor resulta dessa expressão. Dado os valores das
variáveis, o algoritmo realiza o seguinte cálculo.
(7 + 5 + 8 + 7) / 4
Essa expressão resulta no valor 6,75. Por fim, esse valor é atribuído à variável
Média. Repare que o valor 6,75 não é um valor inteiro. Portanto a variável Média
não pode ser uma variável do tipo inteiro, mas sim uma variável do tipo real,
exatamente como está declarado na linha 05.
Existem vários tipos de operações que podem ser realizadas através de
expressoões aritméticas. Para realizar essas operações é necessário conhecer os
operadores aritmétidos da linguagem algorítmica. Eles são:
•
•
•
•
•
+ (adição);
- (subtração);
* (multiplicação);
/ (divisão);
div (divisão inteira);
•
% (resto de divisão inteira).
Você já deve estar acostumado com as operações de adição, subtração,
multiplicação e divisão. Mas, o que são as operações divisão inteira e resto de
divisão inteira?
Divisão inteira (operador div) calcula uma divisão entre dois números inteiros, mas
o resultado fica restrito à parte inteira do quociente. Por exemplo:
7 / 2 = 3,5
Mas,
7 div 2 = 3
O operador resto de divisão inteira (%), faz, de certa forma, a operação
complementar a operação de divisão inteira. Esse operador realiza uma divisão
inteira e retorna o resto dessa divisão. Portanto:
7 % 2 = 1
Não é permitido omitir o operador de multiplicação, como é feito normalmente nos
textos de matemática. Isso é feito para evitar confusões com os identificadores
das variáveis. Na matemática a expressão AB+C quer dizer "multiplique A por B e
some com C", mas na linguagem algorítmica AB pode ser entendido como um
identificador de uma variável. Portanto, é obrigatório escrever A*B+C.
Na linguagem algorítmica, os operadores possuem uma relação de prioridade
entre si. Essa relação de prioridade está resumida na tabela a seguir:
Prioridade Operador
1ª
* / div %
2ª
+-
Para modificar a precedência dos operadores, basta utilizar parênteses. Por
exemplo:
(2 + 7) * (5 + 5)
Na expressão acima, as parcelas (2 + 7) e (5 + 5) serão calculadas primeiro,
resultando em 9 e 10. Só então a multiplicação será calculada, resultando em 90.
Voltando ao algoritmo que calcula a média anual de um estudante, ele ainda pode
ser melhorado. Por exemplo, o algoritmo não é capaz de informar ao usuário qual
foi o resultado da média calculada. Para fazer isso, é necessário utilizar os
comandos de entrada e saída. Esse é o assunto da próxima seção.
Comandos de Entrada e Saída
É importante que um algoritmo tenha mecanismos de comunicação com o usuário.
As formas mais simples de fazê-lo é escrever mensagens na tela do computador e
ler valores do teclado. Em linguagem algorítmica, os comandos utilizados para
essas finalidades são os comandos escreva e leia.
O comando escreva é um comando de saída. Na sua forma mais simples, esse
comando permite que mensagens ou valores de variáveis sejam impressos na tela
do computador. Toda mensagem a ser impressa na tela deve estar entre aspas.
Por exemplo:
escreva("Olá mundo");
imprime a mensagem "Olá mundo" na tela do computador.
É possível imprimir também valores de variáveis, como por exemplo:
escreva(Média);
Nesse caso, o valor da variável Média é impresso na tela. Repare que o
identificador da variável Média não está entre aspas. Isso indica que o valor da
variável Média deve ser impresso na tela, e não a mensagem "Média".
Podemos, então, refazer o nosso algoritmo de cálculo da média anual de forma
que o algoritmo informe ao usuário qual foi o resultado do cálculo da média anual:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
| Algoritmo Média;
|
| {
|
B1, B2, B2, B4: real;
|
Média: real;
|
|
|
B1
7;
// Nota da
|
B2
5;
// Nota da
8;
// Nota da
|
B3
|
B4
7;
// Nota da
|
Média
(B1 + B2 + B3 +
|
escreva(Média);
| }
primeira prova bimestral: 7
segunda prova bimestral: 5
terceira prova bimestral: 8
quarta prova bimestral: 7
B4) / 4;
Ao algoritmo anterior foi adicionada apenas a linha 13, a qual utiliza o comando de
saída escreva para escrever na tela do computador a valor da variável Média.
Ainda, é possível mesclar mensagens e valores de variáveis em um mesmo
comando escreva, para isso basta separar as mensagens e os nomes de
variáveis com vírgulas, como por exemplo:
escreva("O valor da sua média anual é ", Média);
Com isso, o nosso algoritmo ficaria ainda mais fácil de ser utilizado pelo usuário.
Podemos, portanto, modificar a linha 13 para escrever a mensagem anterior, o
algoritmo ficaria assim:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
| Algoritmo Média;
|
| {
|
B1, B2, B2, B4: real;
|
Média: real;
|
|
7;
// Nota da primeira prova bimestral: 7
|
B1
|
B2
5;
// Nota da segunda prova bimestral: 5
|
B3
8;
// Nota da terceira prova bimestral: 8
|
B4
7;
// Nota da quarta prova bimestral: 7
|
Média
(B1 + B2 + B3 + B4) / 4;
|
escreva("O valor da sua média anual é ", Média);
| }
Esse algoritmo imprime na tela do computador a mensagem:
O valor da sua média anual é 6,75
O nosso algoritmo ainda possui um defeito. Ele calcula a média sempre sobre os
mesmos valores das notas bimestrais. Seria bem mais interessante se esses
valores pudessem ser fornecidos pelo usuário. Dessa forma, a cada execução do
algoritmo, o usuário informaria quais são os valores das suas provas bimestrais.
Para fazer isso é necessário utilizar o comando de entrada leia. Ele permite que
informações externas (do teclado, por exemplo) sejam entradas em um algoritmo.
Na sua forma mais simples o comando leia possui a seguinte sintaxe:
leia(<identificador da variável>);
Sendo que <identificador da variável> deve ser substituído por um identificador
de uma variável declarada no algoritmo. Quando o comando leia é executado, a
execução do algoritmo pára e fica esperando o usuário digitar um valor seguido da
tecla ENTER. Enquanto o usuário não digita um valor seguido de ENTER o
algoritmo não irá prosseguir. Tão logo o usuário digite um valor seguido da tecla
ENTER, o valor digitado é automaticamente armazenado na variável especificada
entre os parênteses do comando leia.
É possível alterar o nosso algoritmo de cálculo da média de forma que ele leia os
valores das provas bimestrais do teclado, ao invés do programador atribuir esses
valores diretamente no programa. Assim o usuário será capaz de fornecer
diferentes valores para as notas das provas bimestrais, a cada execução do
algoritmo. O algoritmo fica assim:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
| Algoritmo Média;
|
| {
|
B1, B2, B2, B4: real;
|
Média: real;
|
|
|
leia(B1);
// Nota da primeira prova bimestral
|
leia(B2);
// Nota da segunda prova bimestral
|
leia(B3);
// Nota da terceira prova bimestral
|
leia(B4);
// Nota da quarta prova bimestral
|
Média
(B1 + B2 + B3 + B4) / 4;
|
escreva("O valor da sua média anual é ", Média);
| }
Nesse último algoritmo, o usuário será responsável por fornecer os valores das
notas bimestrais. Quando o comando leia, na linha 08, é executado, o computador
pára a execução e fica esperando o usuário digitar um valor no teclado. Vamos
supor que o usuário digite 10. O valor 10 é então atribuído à variável B1. Na
seqüência, são executados os comandos leia nas linhas 09, 10 e 11. Para cada
comando leia o usuário terá que digitar um valor. Vamos supor que ele digite 5
para o comando leia na linha 09, 4 para o comando leia na linha 10 e 9 para o
comando leia na linha 11. Então as variáveis B1, B2, B3 e B4 terão os seguintes
valores:
B1
B2
B3
B4
=
=
=
=
10
5
4
9
Na linha 12 é calculada a média anual. Essa média será:
(B1 + B2 + B3 + B4) / 4 = (10 + 5 + 4 + 9) / 4 = 7
Portanto, o valor 7 é atribuído na linha 12 à variável Média. Por fim, o comando
escreva, na linha 13, irá escrever na tela do computador a seguinte mensagem:
O valor da sua média anual é 7
E o algoritmo termina.
Um último melhoramento no nosso algoritmo de calcular a média anual. Repare
que o algorimo não informa ao usuário o que deve ser feito. Seria mais
interessante se o algoritmo escrevesse na tela do computador mensagens que
indicassem o que o usuário deve fazer. Como por exemplo:
Entre com o valor da sua primeira nota bimestral:
E assim por diante. Vamos então modificar o nosso algoritmo para escrever
mensagens de ajuda ao usuário:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
| Algoritmo Média;
|
| {
|
B1, B2, B2, B4: real;
|
Média: real;
|
|
|
escreva("Entre com o valor da primeira nota bimestral: ");
|
leia(B1);
// Nota da primeira prova bimestral
|
escreva("Entre com o valor da segunda nota bimestral: ");
|
leia(B2);
// Nota da segunda prova bimestral
|
escreva("Entre com o valor da terceira nota bimestral: ");
|
leia(B3);
// Nota da terceira prova bimestral
|
escreva("Entre com o valor da quarta nota bimestral: ");
|
leia(B4);
// Nota da quarta prova bimestral
|
Média
(B1 + B2 + B3 + B4) / 4;
|
escreva("O valor da sua média anual é ", Média);
| }
Dicas
Quando você criar os seus algorimtos lembre-se:
•
•
•
Utilize sempre identificadores sugestivos. Evite, por exemplo, chamar as
variáveis que armazenam as notas bimestrais de X, Y, Z, W, pois esses
identificadores não são sugestivos das funcionalidades dessas variáveis no
algoritmo.
Sempre comente os seus algoritmos. Utilize os comentários para facilitar o
entendimento do algoritmo.
Mantenha o seu algoritmo sempre legível. Evite escrevê-lo totalmente em
letra maiúsculas. Utilize a indentação para mostrar que certos comandos
fazem parte de blocos de comandos, por exemplo.
Resumo
Algumas coisas que você deve lembrar da aula de hoje:
•
•
•
Uma variável possui um identificador (nome), um tipo e um valor. O nome
da variável é utilizado para ler ou modificar o valor dessa variável. O tipo da
variável limita os valores que podem ser atribuídos à ela. Por exemplo, uma
variável do tipo inteiro somente pode receber valores inteiros.
Os comandos de entrada e saída permitem que o programa se comunique
com o mundo exterior. Em linguagem algorítmica o comando leia permite
ler valores do teclado e atribuir esses valores às variáveis. O comando
escreva escreve mensagens e valores de variáveis na tela do computador.
Expressões aritméticas fazem com o um algoritmo faça cálculos
aritméticos. Esses cálculos podem envolver valores, variáveis e
operadores, entre outras coisas.
Exercícios
1. Faça um algoritmo que leia dois números, calcule e escreva na tela a soma,
a multiplicação, a divisão e a subtração desses números.
2. Faça um algoritmo que leia dois valores: base e altura. Calcule e escreva
na tela as áreas do retângulo (base * altura) e do triângulo (base * altura) /
2.
3. Faça um algoritmo que leia três valores do teclado, os quais correspondem
a uma determinada hora (hora, minuto e segundo). Calcule e imprima na
tela, quantos segundos a partir da hora zero, correspondem a hora
fornecida pelo usuário.