Introdução
A linguagem que o VisuAlg interpreta é bem simples: é uma versão portuguesa dos pseudocódigos largamente utilizados nos livros de introdução à programação, conhecida como "Portugol".
A linguagem do VisuAlg permite apenas um comando por linha: desse modo, não há necessidade de tokens separadores de estruturas, como o ponto e vírgula em Pascal. Também não existe o conceito de blocos de comandos (que correspondem ao begin e end do Pascal e ao { e } do C, nem comandos de desvio incondicional como o goto.
Na versão atual do VisuAlg, com exceção das rotinas de entrada e saída,não há nenhum subprograma embutido, tal como Inc(), Sqr(), Ord(), Chr(), Pos(), Copy() ou outro.
O VisuAlg também não distingue maiúsculas e minúsculas no reconhecimento de palavras-chave e nomes de variáveis.
Formato Básico do Pseudocódigo e Inclusão de Comentários
O formato básico do nosso pseudocódigo é o seguinte:
algoritmo "nome"
// bloco de declaração de variáveis
inicio// Seção de Comandos
fimalgoritmo
A primeira linha é composta pela palavra-chave algoritmo seguida do seu nome delimitado por aspas duplas. Este nome será usado como título nas janelas de leitura de dados (nas futuras versões do VisuAlg, talvez utilizemos este dado de outras formas). A seção que se segue é a de declaração de variáveis, que termina com a linha que contém a palavra-chave inicio. Deste ponto em diante está a seção de comandos, que continua até a linha em que se encontre a palavra-chave fimalgoritmo.
Esta última linha marca o final do pseudocódigo: todo texto existente a partir dela é ignorado pelo interpretador.
O VisuAlg permite a inclusão de comentários: qualquer texto precedido de "//" é ignorado, até se atingir o final da sua linha. Por este motivo, os comentários não se estendem por mais de uma linha: quando se deseja escrever comentários mais longos, que ocupem várias linhas, cada uma delas deverá começar por "//".
Tipos de Dados
O VisuAlg prevê quatro tipos de dados: inteiro, real, cadeia de caracteres e lógico (ou booleano). As palavras-chave que os definem são as seguintes (observe que elas não têm acentuação):
- inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais.
- real: define variáveis numéricas do tipo real, ou seja, com casas decimais.
- caractere: define variáveis do tipo string, ou seja, cadeia de caracteres.
- logico: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.
- Numéricos: são valores numéricos escritos na forma usual das linguagens de programação. Podem ser inteiros ou reais. Neste último caso, o separador de decimais é o ponto e não a vírgula, independente da configuração regional do computador onde o VisuAlg está sendo executado. O VisuAlg também não suporta separadores de milhares.
- Caracteres: qualquer cadeia de caracteres delimitada por aspas duplas (").
- Lógicos: admite os valores VERDADEIRO ou FALSO.
Operadores Aritméticos
+,- Operadores unários, isto é, são aplicados a um único operando. São os operadores aritméticos de maior precedência. Exemplos: -3, +x. Enquanto o operador unário - inverte o sinal do seu operando, o operador + não altera o valor em nada o seu valor. \ Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedência do operador de divisão tradicional. +,-,*,/ Operadores aritméticos tradicionais de adição, subtração, multiplicação e divisão. Por convenção, * e / têm precedência sobre + e -. Para modificar a ordem de avaliação das operações, é necessário usar parênteses como em qualquer expressão aritmética. MOD ou % Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 = 2. Tem a mesma precedência do operador de divisão tradicional. ^ Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a maior precedência entre os operadores aritméticos binários (aqueles que têm dois operandos).
Operadores de Caracteres
+ Operador de concatenação de strings (isto é, cadeias de caracteres), quando usado com dois valores (variáveis ou constantes) do tipo "caractere". Por exemplo: "Rio " + " de Janeiro" = "Rio de Janeiro".
Operadores Relacionais
Importante: No VisuAlg, as comparações entre strings não diferenciam as letras maiúsculas das minúsculas. Assim, "ABC" é igual a "abc". Valores lógicos obedecem à seguinte ordem: FALSO < VERDADEIRO.
=, <, >, <=, >=, <> Respectivamente: igual, menor que, maior que, menor ou igual a, maior ou igual a, diferente de. São utilizados em expressões lógicas para se testar a relação entre dois valores do mesmo tipo. Exemplos: 3 = 3 ( 3 é igual a 3?) resulta em VERDADEIRO ; "A" > "B" ("A" está depois de "B" na ordem alfabética?) resulta em FALSO.
Operadores Lógicos
nao Operador unário de negação. nao VERDADEIRO = FALSO, e nao FALSO = VERDADEIRO. Tem a maior precedência entre os operadores lógicos. Equivale ao NOT do Pascal. ou Operador que resulta VERDADEIRO quando um dos seus operandos lógicos for verdadeiro. Equivale ao OR do Pascal. e Operador que resulta VERDADEIRO somente se seus dois operandos lógicos forem verdadeiros. Equivale ao AND do Pascal. xou Operador que resulta VERDADEIRO se seus dois operandos lógicos forem diferentes, e FALSO se forem iguais. Equivale ao XOR do Pascal.
Exemplos:
var a: inteiro
Valor1, Valor2: realnome_do_aluno: caracteresinalizador: logico
Note que não há a necessidade de ponto e vírgula após cada declaração: basta pular linha.
Constantes e Comando de Atribuição
O VisuAlg tem três tipos de constantes:
A atribuição de valores a variáveis é feita com o operador <-. Do seu lado esquerdo fica a variável à qual está sendo atribuído o valor, e à sua direita pode-se colocar qualquer expressão (constantes, variáveis, expressões numéricas), desde que seu resultado tenha tipo igual ao da variável.
Alguns exemplos de atribuições, usando as variáveis declaradas acima:
a <- 3
Valor1 <- 1.5
Valor2 <- Valor1 + 4nome_do_aluno <- "José da Silva"sinalizador <- FALSO
Comandos de Saída de Dados
escreva (<lista-de-expressões>)
Escreve no dispositivo de saída padrão (isto é, na área à direita da metade inferior da tela do VisuAlg) o conteúdo de cada uma das expressões que compõem <lista-de-expressões>. As expressões dentro desta lista devem estar separadas por vírgulas; depois de serem avaliadas, seus resultados são impressos na ordem indicada.
escreval (<lista-de-expressões>)
Idem ao anterior, com a única diferença que pula uma linha em seguida.
Exemplos:
algoritmo "exemplo"
var x: real
y: inteiroa: caracterel: logicoiniciox <- 2.5y <- 6a <- "teste"l <- VERDADEIROescreval ("x", x:4:1, y+3:4) // Escreve: x 2.5 9escreval (a, "ok") // Escreve: testeok (e depois pula linha)escreval (a, " ok") // Escreve: teste ok (e depois pula linha)escreval (a + " ok") // Escreve: teste ok (e depois pula linha)escreva (l) // Escreve: VERDADEIROfimalgoritmo
Note que o VisuAlg separa expressões do tipo numérico e lógico com um espaço à esquerda, mas não as expressões do tipo caractere, para que assim possa haver a concatenação. Quando se deseja separar expressões do tipo caractere, é necessário acrescentar espaços nos locais adequados.
Comando de Entrada de Dados
leia (<lista-de-variáveis>)
Recebe valores digitados pelos usuário, atribuindo-os às variáveis cujos nomes estão em <lista-de-variáveis> (é respeitada a ordem especificada nesta lista).
.
Veja no exemplo abaixo o resultado:
algoritmo "exemplo 1"
var x: inteiro;
inicio
leia (x)
escreva (x)
fimalgoritmo
Bom, vamos aos exemplos no aplicativo Interpretador.
1 - Criar um programa que apresente a TABUADA de uma valor digitado pelo usuário.
Primeiramente vejamos como o código fica em Portugol na ferramenta VisuAlg...
acompanhe as linhas do código;
linha 01 - a palavra reservada algoritmo seguida de "semnome", onde semnome poderia ser o nome dado ao código pelo desenvolvedor, como programa 01, exec01 etc.
linha 02 - a palavra reservada var marca o bloco de declaração de variáveis onde a criação das variáveis deve ser feita para depois serem utilizadas no programa. Neste caso apenas uma variável foi necessária sendo a VLR do tipo INTEIRO.
linha 3 - inicio, aqui vemos o inicio do corpo do programa, para a inserção de comandos, procedimentos etc.
linha 4 - escreva("Entre com o valor da TABUADA ::"), vemos aqui a função de saída "escreva", imprimindo no monitor a frase "Entre com o valor para a TABUADA::", para tratamento ao usuário.
linha 5 - leia (vlr), nesta linha a entrada através do comando leia guarda o valor digitado pelo usuário na variável vlr.
linha 6 até linha 15 - o comando de saída apresenta a TABUADA feita com o valor digitado pelo usuário, note que para imprimirmos o valor da variável juntamente com o texto devemos separá-los por vírgula e aspas(quando texto).
linha 16 - fimalgoritmo. aqui indica que o processo terminou.
Veja como aparece no monitor...
Justamente como programamos para sair, cada multiplicação em uma linha e formatado para entendimento do usuário.
2 - Criar um programa que leia 2 valores e apresente os valores invertidos.
É isso!, somente a prática pode facilitar o processo de produção...
... bora fazer a lista I nesse trem!...
...
Pronto! Pronto!