Você está na página 1de 25

UAL uma linguagem interpretada para descrio de

algoritmos em Portugus. Tem por objetivo auxiliar o


aprendizado do aluno iniciante em programao atravs
da execuo e visualizao das etapas de um algoritmo.
Com esse interpretador, os alunos podero implementar
seus prprios algoritmos utilizando recursos grficos, ou
seja, a representao lgica desses algoritmos atravs da
animao, para compreender, de forma rpida e dinmica,
como as estruturas por eles desenvolvidas se comportam.
Com o intuito de difundir este novo sistema para a
comunidade acadmica, informamos que a linguagem UAL
encontra-se disponibilizada gratuitamente, levando-se em
considerao o leftright, ou seja, o sistema possui cdigo
aberto, permitindo aos interessados o desenvolvimento de
novas funcionalidades, desde que mantida a filosofia
inicial do mesmo e mencionadas as autorias.
Desenvolvido por:
Juarez A. Muylaert Filho - jamf@estacio.br
Andra T. Medeiros - andrea@iprj.uerj.br
Adriana S. Spallanzani - spallanzani@uol.com.br
Verso 2.0
Data: mai/2001

Comandos em UAL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.

Introduo ...................................................... 3
Estrutura do UAL ........................................... 4
Palavras-Chave .............................................. 5
Pontuao ....................................................... 6
Maisculas e Minsculas ............................... 7
Tipos de Dados................................................ 8
Declarao de Variveis ................................. 9
Inicializao de Variveis ............................ 10
Fluxos de Entrada e Sada ............................ 11
Precedncia de Operadores .......................... 12
Operadores ................................................... 13
Comandos para Tomada de Deciso ........... 15
Comandos de Repetio ............................... 16
Comandos de Desvio..................................... 18
Vetores .......................................................... 20
Funes ......................................................... 21
UALGraph ..................................................... 25

1.

A grande dificuldade na concepo e no entendimento de algoritmos o


problema do relacionamento dos aspectos ativos e passivos, ou seja, como
entender as estruturas dinmicas das possveis execues do algoritmo a partir
de sua estrutura esttica.
A linguagem UAL visa auxiliar o processo de aprendizagem do aluno
iniciante em programao, integrando os aspectos dinmicos e estticos em
uma s ferramenta, permitindo ao aluno escrever seus programas em
Portugol - pseudo-linguagem de programao, executando e visualizando,
atravs de grficos animados, o comportamento ativo do seu algoritmo.
Esta linguagem aborda o mnimo de blocos bsicos (de dados e controle)
necessrios para o aprendizado de algoritmos, os quais encontram-se descritos
nos demais itens deste Help.

2.
Todo programa UAL inicia-se com a palavra reservada prog
seguida do nome do programa, que obedece as normas de nomenclatura
de identificadores. A seguir, so feitas as declaraes de variveis, caso
existam, conforme o item 7 deste manual e, posteriormente, so
inseridos os blocos de comandos, encerrando-se o programa com a
palavra-chave fimprog.

prog <nome do programa>


<declarao de variveis> <opcional>
<seqncia de comandos>
fimprog
Um exemplo de programa em UAL :

prog meuPrimeiroPrograma
string ola;
ola <- Ol Mundo!;
imprima ola;
fimprog
Que tambm pode ser representado da seguinte forma:

prog meuPrimeiroPrograma
imprima Ol Mundo!;
fimprog

3.

Palavras-chave so palavras reservadas da linguagem, no podendo as


mesmas serem atribudas a nenhum identificador (nome do programa e das
variveis definidos pelo usurio) pertencente ao programa. Por exemplo, no
podemos ter uma varivel chamada se.
As palavras-chave em UAL so:

prog

fimprog

senao
div

int

enquanto

raiz

sen

faca

cos

intreal

realint

strtam

strconcat

strcomp

strult

real

tan

logico
para
exp

formatar
strcopia

strnprim

saia

string

leia
log

imprima
pi

abs

continue

strprim

se

pare

strelem

strnresto

As regras para nomenclatura dos identificadores encontram-se no item


Declarao de Variveis.

4.
Um sinal de pontuao um tipo de palavra-chave abreviada. um
smbolo composto por um ou dois caracteres, que tem um significado especial
para o interpretador. O conjunto completo de sinais da linguagem inclui os
seguintes smbolos:
/* */ # { } ( ) [ ] , ; \n \t
O sinal ; encerra uma instruo, exceto nos casos em que a mesma
possua delimitadores, como no comando enquanto. Esse sinal informa ao
interpretador que ocorreu o fim de uma instruo. Desse modo, podemos ter
mais de uma instruo na mesma linha ou ter uma nica instruo em mais
de uma linha.
O uso dos delimitadores ser demonstrado mais adiante, nos itens 12 e
13.
Os smbolos #, /* e */ devem ser inseridos para especificar um
comentrio. Comentrios em programas so mensagens que s sero vistas
pelo programador, sendo completamente ignoradas pelo interpretador. So
utilizados visando dar maior compreenso ao algoritmo.
O smbolo # permite que apenas uma linha seja comentada por vez,
como segue o exemplo:
# Isto um comentrio
# Autor <nome>
prog meuPrimeiroPrograma
string ola; # Declarando varivel ola
ola <- Ol Mundo!;
imprima ola;
fimprog
J os smbolos /* e */ delimitam o incio e o fim de um comentrio,
independente do nmero de linhas que o mesmo possua, como no exemplo
abaixo:
/* Este o incio de um comentrio
Autor <nome>
Data: <data>
*/
Esses comentrios podem ser inseridos em qualquer posio dentro do
programa.
O smbolo \t efetua uma tabulao em uma string e o \n permite
uma quebra de linha na sada do programa. No item 9 dado um exemplo de
suas aplicaes, juntamente com o comando imprima.
6

5.
A linguagem UAL sensvel a maisculas e minsculas em seus
identificadores e palavras reservadas. Exemplo:
ola, Ola, OLA, olA
So variveis diferentes para o UAL.
String - No uma palavra reservada como string.
Devido a esta diferena, recomendvel utilizar um padro para a
nomenclatura dos identificadores. Aconselhamos que os identificadores sejam
sempre iniciados por letras minsculas, seguidas de iniciais maisculas para
nomes compostos.

6.
O UAL fornece um conjunto de tipos de dados bsico, onde cada um
deles serve a um propsito especfico, definindo desse modo, o escopo dos
valores que as variveis podem assumir no programa.
Os tipos bsicos existentes so:
- representando o conjunto dos nmeros inteiros;
- representando os pontos flutuantes;
- representando um conjunto de um ou mais caracteres
- representando os valores lgicos verdadeiro e falso.

7.
Todas as variveis devem ser declaradas antes de serem usadas. Esta
declarao deve ser feita no incio do programa.
As variveis possuem uma caracterstica em comum: um tipo de dado
associado. Isso significa que, alm de escolhermos um nome apropriado para
uma varivel, devemos tambm dizer que tipo de informao deve ser
armazenada nela.
Uma declarao definida por um tipo, seguido por uma lista de uma
ou mais variveis daquele tipo, tal como o seguinte exemplo:

int num2; string resp, nome;


As variveis podem ser distribudas entre declaraes livremente. O
exemplo acima poderia ser igualmente escrito como:

int num2;
string resp;
string nome;
Os nomes das variveis podem ser compostos de letras e dgitos, sendo
que o primeiro caractere deve ser, obrigatoriamente, uma letra.
Identificadores vlidos: count, teste123, Programa.
Identificadores invlidos: 123count, Teste_de_loop, Teste...Novo.

8.
Para inicializar uma varivel, ou seja, atribuir um valor a ela, deve-se
proceder da seguinte forma:
var <- 4;
onde var o nome da varivel declarada, <- o smbolo de atribuio e 4 o
valor a ela atribudo.
Quando interpretamos as instrues acima, os nomes das variveis so
substitudos pelos valores associados na memria. importante observar que o
resultado da expresso do lado direito de um comando de atribuio deve ser
coerente com o tipo declarado para a varivel do lado esquerdo.
Ao longo do programa possvel, atravs de novas atribuies, alterar
os valores dessas variveis na memria.

10

9.
O UAL permite que um programa receba ou envie dados para o
ambiente externo. Isto pode ocorrer com o uso dos comandos leia e imprima,
respectivamente.
O comando leia permite a entrada de um nico dado, fornecido pelo
usurio, atravs da entrada padro, que normalmente o teclado. Ao
executarmos esse comando, atribuiremos o dado fornecido a uma varivel,
conforme demonstra o seguinte exemplo:

int x;
leia x;
Nesse momento, o programa aguardar a entrada de um valor inteiro
que ser armazenado na varivel x. O usurio deve fornecer esse valor
digitando um nmero e pressionando, em seguida, a tecla <Enter>.
O comando imprima permite que sejam apresentados na sada padro,
normalmente o monitor, mensagens e valores obtidos atravs da execuo do
programa, como mostra o exemplo abaixo:
a <- 400;
imprima \tO valor de a = , a, \n;
Este comando pode vir acompanhado do comando formatar, que
permite delimitar o nmero de casas decimais de um algarismo em ponto
flutuante, de acordo com a sintaxe abaixo:
a <- 400.6794;
imprima "Valor de a = ", formatar(a,2);
Cujo resultado ser:
Valor de a = 400.67
Obs.: O comando formatar converte um nmero real para o tipo string,
efetuando o truncamento em suas casas decimais.

11

10.
Todas as operaes realizadas no UAL obedecem aos critrios de
precedncia dos operadores, conforme a relao abaixo:
Primeiro
Segundo
Terceiro
Quarto
Quinto
Sexto

- funes e parnteses
- expresses aritmticas (potncia e mdulo)
- expresses aritmticas (multiplicao e diviso)
- expresses aritmticas (adio e subtrao)
- operadores relacionais.
- operadores lgicos.

Na utilizao normal, operadores de mais alta precedncia executam as


suas operaes em expresses antes de operadores de menor precedncia. Por
exemplo:
a=b+c*d
Nesse exemplo, primeiro ser calculado o produto entre c e d, para
depois somar o resultado a b.
Para forar uma ordem de avaliao diferente, deve-se fazer uso de
parnteses, como no exemplo:
a = (b + c) * d

12

11.
O UAL composto de operadores - smbolos que executam vrias
operaes sobre os seus argumentos. O sinal de mais (+) um operador. Em
uma expresso, ele soma dois valores:
a <- b + c;
As variveis a, b, c poderiam ser de quaisquer tipos numricos de dados.
Nesta operao, b acrescentado a c, sendo o resultado atribudo varivel a.
O sinal de atribuio <- nessa expresso tambm um operador, com a
capacidade nica de copiar um valor a sua direita para a varivel a sua
esquerda.
No UAL, existem operadores aritmticos, relacionais, lgicos e de
atribuio, que esto demonstrados abaixo.
Operaes aritmticas:
adio (+)
subtrao (-)
multiplicao (*)
diviso real (/)
diviso inteira (div)
mdulo (%)
potncia real (**)
potncia inteira (^)
Caso as operaes sejam efetuadas com os operandos de um mesmo tipo,
o valor retornado seguir a mesma tipagem, caso contrrio, o valor retornado
ser do tipo real.
Vale ressaltar que as operaes aritmticas permitidas aceitam apenas
os tipos inteiro e/ou real.
Operadores relacionais:
maior (>)
maior ou igual (>=)
menor (<)
menor ou igual (<=)
igual (==)
diferente (<>)
13

Operadores lgicos:
conjuno (&&)
disjuno (||)
negao (!)
Esses dois ltimos operadores tem como resultado um valor lgico, do
tipo verdadeiro ou falso.
Operadores de atribuio:
atribuio (<-)
incremento (++)
decremento ()
Os operadores de incremento e decremento so similares atribuio,
realizando operaes de adio e subtrao, respectivamente. Dessa forma,
uma varivel incrementada ou decrementada em uma unidade. Portanto,
essa varivel deve ser do tipo inteiro.
Em uma atribuio, no podem ser usados operadores de incremento e
decremento.
Exemplos:
x <- a;
x;
x <- x-1;
x++;
x <- x++ ou x <- x;

# x recebe o valor de a.
# x decrementado em 1.
# operao idntica a anterior.
# x incrementado em 1.
# operaes no permitidas.

14

12.

O comando utilizado para tomada de decises no UAL o se, que


acompanhado, opcionalmente, pelo senao. Sua sintaxe bastante simples,
necessitando acrescentar uma expresso que retorne um tipo lgico aps a
palavra-chave se e uma lista de comandos, caso o senao seja utilizado,
tambm haver uma lista de comandos.
Por exemplo, para exibir o valor de uma varivel conta apenas se este
valor for maior do que 100, pode-se utilizar a seguinte instruo:

se (conta > 100)


{
imprima conta;
}
senao
{
imprima Saldo insuficiente.;
}
Os parnteses, bem como as chaves, so obrigatrios.

15

13.
Na linguagem UAL, podemos utilizar os comandos enquanto, para ou
faca-enquanto, para aplicar instrues repetidamente.
A INSTRUO enquanto
O comando enquanto tem sintaxe semelhante a do comando se,
bastando inserir uma expresso que retorne um tipo lgico aps a palavrachave enquanto e uma lista de comandos entre chaves, como mostra o
exemplo:
i <- 0;
enquanto ( i < 10)
{
leia var;
i++;
}
Nesse comando, a expresso relacional avaliada antes da execuo da
instruo ou bloco de comandos, ou seja, caso essa expresso seja falsa no
incio da execuo do loop, os comandos no sero executados.
A INSTRUO para
Quando um programa pode calcular previamente o nmero de vezes que
um bloco de instrues deve ser executado, uma instruo para
normalmente, a melhor escolha para a construo da estrutura de repetio.
A instruo para possui os seguintes elementos:
A palavra-chave para;
Uma expresso composta por trs partes, entre parnteses;
Uma instruo ou bloco de comandos entre chaves.
geral:

O comando para combina os trs elementos acima, tendo como formato

para (i<-0; i < 10; i++)


{
leia var;
}
16

Dentro dos parnteses, aps a palavra-chave para, h trs argumentos


que controlam a ao do loop. No primeiro argumento, h uma instruo que
executada uma nica vez, antes do incio do loop, atribuindo um valor a uma
varivel. A inicializao e a atribuio de valor que compem o primeiro e o
terceiro argumento do comando para, respectivamente, fazem referncia a
uma mesma varivel. O segundo argumento uma expresso relacional que a
instruo para testa no princpio do loop. O ltimo argumento executado ao
final do loop, aps a execuo da instruo ou bloco de comandos, que devem
estar entre chaves. Esse argumento pode ser uma atribuio, um incremento
ou decremento.
A INSTRUO faca-enquanto
um tipo de instruo enquanto invertida, ou seja, ela executa uma ou
mais aes enquanto uma expresso for verdadeira. Exemplo:
i <- 0;
faca
{
leia var;
i++;
}
enquanto (i < 10)
Seu funcionamento se diferencia do comando enquanto pelo fato da
expresso relacional que controla o loop estar ao final da instruo, e no no
seu incio. Com isso, a instruo ou o bloco de comandos executado pelo
menos uma vez, pois o programa no avalia a expresso de controle at que
tenha executado essas instrues.
Um loop faca-enquanto requer ambas as palavras-chaves: faca, no
inicio, e enquanto, no final. As instrues a serem executadas so colocadas
entre o faca e o enquanto, como demonstrado no exemplo.

17

14.
O UAL tem trs comandos que realizam desvios incondicionais:
continue, pare e saia. Destes, voc pode usar o saia em qualquer lugar em seu
programa. Os comandos pare e continue devem ser utilizados em comandos de
repetio.
A INSTRUO saia
O comando saia permite a sada de um programa. Este comando
provoca uma terminao imediata do programa inteiro, forando um retorno
ao sistema operacional.
A forma geral do comando saia :

saia;
A INSTRUO pare
O comando pare serve para forar a terminao imediata de um lao,
isto , o lao interrompido evitando o teste condicional. A seguir, so
executados os comandos que sucedem o lao.
b <- 3;
para (i<-o;i<10;i++) {
a <- b * i;
imprima " a = ", a;
se (a > 10) {
pare;
}
}
A sada do programa ser:
a = 0 a = 3 a = 6 a = 9 a = 12

18

A INSTRUO continue
O comando continue trabalha de uma forma parecida com a do
comando pare. Porm, em vez de forar a terminao do lao, ele fora que
ocorra a prxima iterao, no executando nenhum cdigo intermedirio.
b <- "Este teste remove os espaos em branco";
para (i<-o; i<strtam(b); i++) {
se (strelem(b,i) == " ") {
continue;
} senao {
imprima strelem(b,i);
}
}
A sada do programa ser:
Estetesteremoveosespaosembranco

19

15.
Os vetores renem vrias informaes de um mesmo tipo em uma nica
estrutura. Para isso, necessrio declarar, alm do nome do vetor, o seu
tamanho. Devemos informar antecipadamente quantos elementos o vetor ir
armazenar dentro dele, ou seja, seu tamanho esttico (no varia com a
execuo do programa).
No exemplo abaixo, declaramos um vetor do tipo inteiro com 10
posies.

int x[10];
Cada elemento de um vetor tratado como se fosse uma varivel
simples. Para referncia a um elemento do vetor, utiliza-se o nome do vetor
seguido da identificao do elemento (ndice) entre colchetes. Esse ndice deve
ser do tipo inteiro. Exemplo:
x[0] <- 0;
x[9] <- 9;
No UAL, o primeiro elemento de um vetor sempre representado pelo
ndice 0, ou seja, se um vetor contiver 10 posies, seus ndices iro variar de 0
a 9.

20

16.
As funes em UAL esto divididas em Funes Matemticas, Funes
Para Manipulao de Strings e Funes de Converso de Tipos, conforme
detalhamento abaixo:
Funes Matemticas
Englobam as seguintes funes: raiz, sen, cos, tan, pi, exp, log, abs.
raiz
Retorna a raiz quadrada de um nmero, em real. Se voc cham-la com
argumento negativo, ocorrer um erro de domnio.
Exemplo: imprima raiz(49);
Resultado: 7.0
sen
Retorna o seno de um nmero, em radianos.
Exemplo: imprima sen(0);
Resultado: 0.0
cos
Retorna o coseno de um nmero, em radianos.
Exemplo: imprima cos(0);
Resultado: 1.0
tan
Retorna a tangente de um nmero, em radianos.
Exemplo: imprima tan(0);
Resultado: 0.0
pi
Retorna a constante pi, em real
Exemplo: imprima pi;
Resultado: 3,141592653589793

21

exp
Retorna o exponencial de um nmero, em real.
Exemplo: imprima exp(0);
Resultado: 1.0
log
Retorna o logaritmo de um nmero, em real. Se voc cham-la com argumento
negativo, ocorrer um erro de domnio.
Exemplo: imprima log(1);
Resultado: 0.0
abs
Retorna o valor absoluto de um nmero.
Exemplo: imprima abs(-5);
Resultado: 5

Funes para Manipulao de strings


Incluem as seguintes funes: strtam, strconcat, strcopia, strprim,
strresto, strelem, strult, strnprim, strnresto.
strtam
Retorna o tamanho de uma string.
Exemplo: imprima strtam("string ");
Resultado: 6
strconcat
Concatena duas strings.
Exemplo: imprima strconcat("string","!");
Resultado: string!
strtcopia
Copia o contedo de uma string.
Exemplo: imprima strcopia("string");
Resultado: string

22

strprim
Retorna o primeiro elemento de uma string.
Exemplo: imprima strprim("string");
Resultado: s
strresto
Retorna todos os elementos de uma string, exceto o primeiro.
Exemplo: imprima strresto("string");
Resultado: tring
strelem
Retorna o ensimo elemento de uma string.
Exemplo: imprima strelem("string", 3);
Resultado: r
strcomp
Compara duas strings, retornado "maior", "menor" ou "igual".
Exemplo: imprima strcomp("string", "String");
Resultado: maior
strult
Retorna o ltimo elemento de uma string.
Exemplo: imprima strult("string");
Resultado: g
strnprim
Retorna os n primeiros elementos de uma string.
Exemplo: imprima strnprim("string", 3);
Resultado: str
strnresto
Retorna os elementos de uma string aps os n primeiros.
Exemplo: imprima strelem("string", 2);
Resultado: ring

23

Funes de Converso de Tipos


Existem duas funes em UAL que podem ser utilizadas para converter
tipos inteiro em real ou vice-versa. So elas: intreal, realint.
intreal
Converte um nmero inteiro em real.
Exemplo: imprima intreal(20);
Resultado: 20.0
realint
Converte um nmero real em inteiro, arredondando-o.
Exemplo: imprima intreal(20.8);
Resultado: 21

24

17.
O Mdulo UALGraph permite a execuo dos programas fontes feitos em UAL
em um ambiente grfico, ou seja, possvel visualizar a representao lgica
desses algoritmos atravs da animao, para compreender, de forma rpida e
dinmica, como as estruturas desenvolvidas se comportam.
Os smbolos que representam a estrutura do programa seguem os seguintes
padres:

Delimita o incio e fim de um programa


Atribuio
Incremento
Decremento
Enquanto
Para
Se-Seno
Faa-Enquanto
Leia
Imprima
Saia
Continue
Pare
25

Você também pode gostar