Você está na página 1de 10

Apostila de Programao I

Apndice A. Pseudo-Linguagem
A.1 Consideraes Preliminares
Os computadores convencionais se baseiam no conceito de uma memria principal
que consiste de clulas elementares, cada qual identificada por um endereo. O
contedo de uma clula o valor da mesma. O valor de uma clula pode ser lido e/ou
modificado. Esta modificao feita pela substituio de um valor por outro. Alm
disso, circuitos permitem o acesso a uma clula de cada vez. Com poucas excees, as
linguagens de programao podem ser consideradas como abstraes, em nveis
diferentes, do comportamento destes computadores convencionais. Em particular, o
conceito de varivel introduzido como uma abstrao de clulas de memria, e o
conceito de comando de atribuio como uma abstrao destrutiva destas clulas.
Uma varivel caracterizada por um nome e dois atributos bsicos: valor e tipo. O
nome usado para identificar e fazer referncia varivel. O valor de uma varivel
representado, de forma codificada, na rea de memria amarrada varivel. Este
cdigo interpretado de acordo com o tipo da varivel. O tipo de uma varivel pode
ser considerado como uma especificao da classe de valores que podem ser
associados varivel, bem como das operaes que podem ser usadas para criar,
acessar e modificar estes valores.
A amarrao entre uma varivel e o valor armazenado na rea de memria
correspondente , em geral, dinmica, j que este valor pode ser modificado por
operaes de atribuio. Uma atribuio como b a causa o armazenamento de uma
cpia do valor da varivel a na rea de memria amarrada varivel b.
Algumas linguagens, entretanto, permitem o congelamento da amarrao entre uma
varivel e o seu valor quando a amarrao estabelecida. A entidade resultante , sob
qualquer aspecto, uma constante simblica definida pelo programador.
Por exemplo, em Pascal se pode escrever:
const
pi = 3.1416;
e ento usar pi em uma expresso como circunferncia:= 2 * pi * raio;.
A varivel pi est amarrada ao valor 3.1416, e este valor no pode ser modificado;
isto , o compilador acusa erro se existir uma atribuio pi.
Poderamos usar o valor 3.1416 diretamente na expresso acima, dispensando o
uso da constante simblica pi (circunferncia:= 2 * 3.1416 * raio;). Neste caso,
chamamos 3.1416 de constante literal.
A.2 Pseudo-linguagem LPE
Nos itens subseqentes iremos descrever as regras sintticas e semnticas de uma
linguagem de construo de algoritmos chamada Linguagem de Programao
Estruturada (LPE). Esta linguagem tem por objetivo permitir a elaborao de um
algoritmo sem termos que nos preocupar com as regras rgidas de uma linguagem de
Ivan Mathias Filho

Pgina 1

09/03/2010

Apostila de Programao I

programao real. Apesar da LPE possuir um certo formalismo, nos permitido


"afrouxar" as suas regras sintticas quando for conveniente. Isto pode ser feito pelo
fato da LPE no ser uma linguagem de programao real; isto , no existe nenhum
tradutor de LPE que nos permita executar um programa escrito nesta linguagem em
um computador real. Um programa em LPE ter o seguinte lay-out:
constantes
<nome> = <valor>;

<nome> = <valor>;
variveis
<nome> : <tipo>;

<nome> : <tipo>;
incio
<comando>;

<comando>;
fim.
No lay-out acima, tudo o que estiver em negrito faz parte da sintaxe da linguagem;
e o que estiver entre < > ser posteriormente substitudo por construes dos
programadores. Esta construes, porm, tero tambm que obedecer s regras da
LPE.
A.2.1 Nomes
Um nome de uma varivel, ou de uma constante simblica, uma seqncia de no
mximo 32 caracteres alfanumricos, alm do caracter sublinhado ( _ ). O primeiro
caracter tem que ser obrigatoriamente alfabtico. A linguagem LPE no faz distino
entre caracteres maisculos e minsculos.
Exemplo:
a
nome_aluno
c8
valor
xyz
A.2.2 Tipos
A.2.2.1 Inteiro
O tipo inteiro usado para representar valores inteiros positivos e negativos. As
operaes disponveis para o tipo inteiro so representadas pelos operadores +
Ivan Mathias Filho

Pgina 2

09/03/2010

Apostila de Programao I

(soma), - (subtrao), * (multiplicao), div (quociente da diviso inteira), e mod


(resto da diviso inteira).
A.2.2.2 Real
O tipo real usado para representar valores decimais com representao finita. As
operaes disponveis para o tipo real so representadas pelos operadores + (soma), (subtrao), * (multiplicao), / (diviso).
A.2.2.3 Lgico
O tipo lgico usado para representar os valores lgicos verdadeiro e falso. As
operaes disponveis para o tipo lgico so representadas pelos operadores (e),
(ou), e ~ (no).
A.2.2.4 Caracter
O tipo caracter usado para representar qualquer cadeia de caracteres tais como
nomes, endereos e etc.
A LPE no oferece nenhuma operao sobre os valores do tipo caracter.
A.2.3 Constantes Literais
Uma constante literal uma constante cujo nome a representao escrita do seu
valor. Por exemplo, 21 a representao decimal de um objeto de dados cujo valor
21.
Exemplo:
12.450 -0.5 1.0
verdadeiro falso
1 -12 234
'PUC-Rio' 'A' '123'

'

'

/*
/*
/*
/*

tipo
tipo
tipo
tipo

real */
lgico */
inteiro */
caracter */

A.2.4 Comandos e Expresses


A.2.4.1 Expresses
Uma expresso uma frmula ou regra de computao que sempre determina um
valor ou resultado. Uma expresso consiste de operandos e operadores. Os operadores
da LPE j foram apresentados nos itens relativos aos tipos de dados. Os operandos so
constantes e variveis. Se vrios operadores ocorrem em uma expresso, a ordem de
execuo das operaes precisa ser especificada; quer seja pelo emprego explcito de
parnteses, quer seja pelas regras implcitas da linguagem (veja a tabela abaixo).
Ivan Mathias Filho

Pgina 3

09/03/2010

Apostila de Programao I

Exemplo:
3
/* uma constante uma expresso */
abc
/* uma varivel uma expresso */
n mod 2
salrio * 1.25
(renda_bruta - desconto) * 0.15
Neste ponto iremos apresentar os operadores relacionais. Os operadores
relacionais so amplamente usados na matemtica e dispensam apresentaes. Estes
operadores so usados para relacionar duas expresses; criando uma nova expresso.
O valor desta nova expresso sempre uma valor lgico; isto , verdadeiro ou falso.
Os operadores relacionais so os seguintes:
=

>
<
>=
<=

(igual)
(diferente)
(maior)
(menor)
(maior ou igual)
(menor ou igual)

As regras implcitas de precedncia dos operadores da LPE so mostradas na tabela


abaixo (do maior para o menor):
1.
2.

3.
4.
5.
6.

Parnteses
Operadores Aritmticos
2.1.
+, - (unrios)
2.2.
*, /, div, mod
2.3.
+, - (binrios)
Operadores Relacionais
~ (no)
(e)
(ou)

A.2.4.2 Comando de Atribuio


O comando de atribuio tem a seguinte sintaxe:
<varivel> <expresso>;
onde o termo <varivel> dever ser substitudo por uma varivel declarada na seo
variveis, e o termo <expresso> deve ser substitudo por uma expresso vlida na
linguagem LPE. Esta expresso tem que ser de um tipo que seja compatvel com o
tipo da varivel esquerda do operador de atribuio ().
O comando de atribuio ir avaliar a expresso direita do operador de atribuio,
e substituir o valor da varivel esquerda do operador pelo valor da expresso.
Ivan Mathias Filho

Pgina 4

09/03/2010

Apostila de Programao I

Exemplo:
idade 3;
/* uma constante uma expresso */
x n mod 2;
salrio salrio * 1.25;
imposto (renda_bruta - desconto) * 0.15;
endereo 'Rua JK, 23';
A.2.4.3 Comando de Leitura
O comando de leitura tem a seguinte sintaxe:
leia(<var1>,<var2>,,<varN>);
onde os termos <varK> devem ser substitudos por variveis declaradas na seo
variveis, exceto por variveis do tipo lgico. O comando de leitura tem por objetivo
transferir dados de um perifrico, por exemplo o teclado, e armazen-los nas variveis
fornecidas no comando.
Exemplo:
leia(matrcula,nome,idade,sexo);
A.2.4.4 Comando de Escrita
O comando de escrita tem a seguinte sintaxe:
escreva(<exp1>,<exp2>,,<expN>);
onde os termos <expK> devem ser substitudos por expresses vlidas na linguagem
LPE, exceto por expresses que tm valor do tipo lgico. O comando de escrita tem
por objetivo transferir dados da memria principal para um perifrico; por exemplo
um monitor de vdeo.
Exemplo:
escreva('O Nome do Aluno e ',nome);
escreva('Salrio - ',salrio,' Imposto - ',salrio*0.1);
A.2.5 Estrutura de Controle
A.2.5.1 Bloco
Um bloco consiste de um conjunto de comandos delimitados pelas palavras incio
e fim. Um bloco pode ser interpretado como sendo um comando composto por vrios
Ivan Mathias Filho

Pgina 5

09/03/2010

Apostila de Programao I

outros comandos, e cuja a execuo tem efeito igual ao obtido pela execuo dos
vrios comandos nele inseridos.
Na sintaxe da LPE, todas as vezes que aparecer o smbolo <comando>, indicando a
obrigatoriedade de se codificar um comando; este poder se substitudo por um bloco.
Exemplo:
variveis
i, j, k : inteiro;
abc: real;
incio
i 0;
j 0;
incio
k (i + j) * 3;
abc k * 8.5;
escreva(abc);
fim;
escreva(i,j,k);
fim.
A.2.5.2 Seleo
O comando de seleo tem duas formas:
se <expresso lgica> ento
<comando>;
nesta forma a <expresso lgica> avaliada inicialmente. Se o valor da expresso for
verdadeiro, o <comando> executado. Se o valor da expresso for falso, o
<comando> no executado.
Exemplo
variveis
mdia, nota1, nota2, nota3 : real;
incio
escreva('Informe as notas do aluno');
leia(nota1, nota2, nota3);
mdia (nota1+nota2+nota3)/3;
se mdia >= 5.0 ento
escreva('Aluno Aprovado');
escreva(mdia);
fim.

Ivan Mathias Filho

Pgina 6

09/03/2010

Apostila de Programao I

Incio

escreva('Informe as notas do aluno');


leia(nota1,nota2,nota3);
media <- (nota1+nota2+nota3)/3;

media>=5.0?

sim

escreva('Aluno aprovado);

no

escreva(media);

Fim

se <expresso lgica> ento


<comando1>;
seno
<comando2>;
nesta forma a <expresso lgica> avaliada inicialmente. Se o valor da expresso for
verdadeiro, o <comando1> executado e o <comando2> no. Se o valor da
expresso for falso, o <comando2> executado e o <comando1> no.
Exemplo
variveis
Ivan Mathias Filho

Pgina 7

09/03/2010

Apostila de Programao I

mdia, nota1, nota2, nota3 : real;


incio
escreva('Informe as notas do aluno');
leia(nota1, nota2, nota3);
mdia (nota1+nota2+nota3)/3;
se mdia >= 5.0 ento
escreva('Aluno Aprovado');
seno
escreva('Aluno Reprovado');
escreva(mdia);
fim.

Incio

escreva('Informe as notas do aluno');


leia(nota1,nota2,nota3);
media <- (nota1+nota2+nota3)/3;

escreva('Aluno reprovado);

no

media>=5.0?

sim

escreva('Aluno aprovado);

escreva(media);

Fim

Ivan Mathias Filho

Pgina 8

09/03/2010

Apostila de Programao I

A.2.5.3 Repetio
O comando de repetio tem a seguinte sintaxe:
enquanto <expresso lgica> faa
<comando>;
neste comando a <expresso lgica> avaliada inicialmente. Se o valor da
expresso for verdadeiro, o <comando> executado e a <expresso lgica>
avaliada novamente. Este ciclo repetido at que a <expresso lgica> seja avaliada
como falso. importante notar que se a <expresso lgica> for avaliada inicialmente
como falso o <comando> no ser executado nenhuma vez. Outra observao
importante que o <comando> dever alterar de alguma forma as variveis presentes
na <expresso lgica>. Se isto no ocorrer, a <expresso lgica> ser sempre avaliada
como verdadeiro (supondo que a <expresso lgica> seja avaliada como verdadeiro
na primeira avaliao) e o <comando> ser executado continuamente. Diremos ento
que o "programa entrou em um looping infinito".
Exemplo
O exemplo a seguir exibir no monitor de vdeo todos os nmeros inteiros entre 0 e
99.
variveis
cont : inteiro;
incio
cont 0;
enquanto cont < 100 faa
incio
escreva(cont);
cont cont + 1;
fim;
fim.

Ivan Mathias Filho

Pgina 9

09/03/2010

Apostila de Programao I

Incio

cont<-0;

cont<100?

sim

escreva(cont);
cont<-cont+1;;

no

Fim

Ivan Mathias Filho

Pgina 10

09/03/2010