Você está na página 1de 9

Visualg

EIn visualg, valem as regras: cada comando de visualg deve estar em uma linha no h separadores (; L nem blocos (como { e {) nem goto no h funes como sqr (}, sqrtf ) todas as palavras reservadas no tem acentos ou cedilha no h separao entre maisculas e minsculas nos comandos ou variveis o limite de variveis de 500 (cada item de vetor conta como 1 varivel) o ponto decimal o ponto valores caractere esto entre aspas duplas O smbolo de atribuio <Existe recursividade

Algoritmo
FOrIna1:0 algori1:mo I var <nome>

a unidade bsica de escrita de algoritmos.


Exemplo algori1:mo TESTE I var I N : in1:eiro I inicio I leia (N) I escreva (N X 2) fimalgor11:mo

<varUveis>

I
de funo

--->local da defini~o I inicio

< comandos>

fimalgori1:mo

Comentrios

so caracterizados

por comear por \ \.

A funo uma sempre precisa receber seus e devolver um resultado a das imediatanlente antes da
Forma1:o funcao <nome>( < t;ipo-res > I var <parame1:ros

Funo

unidade no autnoma de programao. Ela dados (atravs de uma lista de parmetros) quem a chamou. Em Visualg so colocapalavra inicio do bloco a que se referem ..
Exemplo funo TESTE (N:in1:eiro): var inicio in1"eiro

I I I

ini..-c_i_O

I I

<variaveis _

locais>

retome

N X 2

filnfuno < comandos>

fimfuncao

O <nome-ele-funo> obedece as mesmas regras de nomenclatura das variveis. Por outro lado, a <seqncia-de-declaraes-de-parmetros> urua seqncia de [var] <seqncia-de-parmetros>: <tipo-de-dado> separadas por ponto e vrgula. A presena (opcional) da palavra-chave var indica passagem de parmetros por referncia; caso contrrio, a passagem ser por valor.

N ornes

Ao construir algoritmos necessano sas. A regra de construo de nomes Uma nica palavra Composta de letras e nmeros Comeando com uma letra Escrita em maisculo

dar nomes a muitas

COI-

Tipos
Tipo
int;eiro real caracter logico

Os tipos possveis so 4: inteiro, real, lgico, caracter.


ConteMo
qualquer nmero int;eiro. variando ent;re -00 e +00 qualquer nmero inteiro ou no inteiro uma cadeia soment;epode conter os valores VERDADEIRO e FALSO

Exemplo
int;eiroA ; int;eiro A ; real X,Y,Z : real A ; caract;er Ii o tamanho no exp11cito A : logico
A,B,C

Vetor

Um vetor (ou matriz) definido, escrevendo-se o nome, dois pontos (:) a palavra vetor e as especificaes de repetio. Veja nos exemplos:
Formato <nome> : vecor [inicio..fim] [inicio..fim] ... de <"&ipo> Exemplo AAA ve-cor [1..10]
BBB ; vet.or [O .. 4] [1. .8]

de real de lnt;eiro

Comandos Os comandos em pseudo-cdigo so: < - (recebe), leia, escreva, se ...fimse, enquanto ...fimenqu anto , para ... fimpara, repita ... at, retorne e abandone. Leia Serve para introduzir um dado externo para dentro do algoritmo. As variveis citadas no comando j tero que ter sido definidas e tipadas.
Formato leia lista de varaaveas Exemplo leia (A)

Escreva Serve para produzir um dado como resposta do algoritmo. As variveis citadas no comando j tero que ter sido devidamente atribudas.
Formato escreva list;a de variveis Exemplo escreva (A, B. C)

Para variveis numricas,

pode-se especificar var:tamanho:decimais.

Este cornando contedo.


Forma-co <varivel> <varivel> <varivel> < < <

<

permite

inicializar

uma varivel ou alterar-lhe

Exemplo < varivel> OU < constance > OU < expresso> OU


A

B
C

< < <

"CURITIBA"
A + 23

Expresso
de funes que

Numrica
acabem

Qualquer combinao gerando um nico resultado


o que faz o usual da aritmtica no usa nmeros decimais o res'to da diviso in'teira o valor absolu'to de a arco xxx

compatvel numrico.
~emplo
A+3 A/2.5

Forma'to adio (+), subtrao (-), multiplicao (*), diviso real (/) diviso in'teira (barra ao con'trrio) res'to (percen'tagem) abs(a:real):real arcxxxx(a:real):real

xxx pode ser cos, sen e 'tan

asc(s:caracter):inteiro carac(c:in'teiro):carac'ter caracpnum(c:caracter):inteiro compr(c:carac1;er):inteiro copia(c:caracter; p,n:inteiro):caracter xxx(a:real):real a div b exp{b,e) grauprad(a:real):real int(a:real):inteiro log(a:real):real logn{a:real):real maiusc(c:carac'ter):caracter minusc(c:caracter):caracter a mod b

converte o caracter s em inteiro converte o byte c em carac'ter ou real deve ser o comprimen'to do s'tring copia um subs'tring funcao trigonometrlca divisao inteira de a po b eleva a base ao expoente converte graus em radianos converte real em inteiro logaritmo base 10 logaritmo base e converte para maiuscula converte para minuscula res'to da divisao inteira de a porb converte numerica a caracter devolve o valor de pi devolve a posicao de subc em c devolve o quadrado de a converte radiano para grau devolve a raiz quadrada xxx pode ser se~,cos,tan,cotan

numpcarac(n:in'teiro ou real):caracter pi:real pos(subc,c:caracter):inteiro quad(a:real):real radpgrau(a:real):real raizq(a:real):real

Expresso
de relaes que
Formato Igual (-) Diferente Maior Menor
( ( (> -)

Relacional

Qualquer acabem gerando um o que faz

combinao compatvel nico resultado lgico.


Exemplo 3=3 VERDADEIRO 3< 3>4 3 <4

Maior ou igual Menor ou igual

-)

devolve VERDADEIRO se seus operandos so iguais e FALSO seno devolve VERDADEIRO se seus operandos so diferen'tes e FALSO seno Em A > B devolve VERDADEIRO se A maior do que B Em A < B devolve VERDADEIRO se A menor do que B Em A > B devolve VERDADEIRO se A maior ou igual do que B Em j\ <- B devolve VERDADEIRO se A menor ou igual do que B

s
~i ti

FALSO

FALSO VERDADEIRO

3>-3 VERDADEIRO 3<-3 VERDAIIEIRO

Expresso Lgica Qualquer combinao compatvel de expresses relacionais e/ou lgicas que acabem gerando um nico resultado lgico. Fornato o que faz Exemplo
E Em A E B, devolve VERDADEIRO se A e B so verdadeiros e devolve FALSO seno Em A OU B, devolve VERDADEIRO se A ou B ou ambos so VERDADEIRO e devolve FALSO seno Inver'te o valor lOgico do operando

ou
No (NAO)

VERDADEIRO E VERDADEIRO VERDADEIRO Todas as ou~ras combinaes do FALSO FALSO OU FALSO FALSO Todas as ou~ras combinaes do VERDADEIRO NAO VERDADEIRO , FALSO e NAO FALSO VERDADEIRO

Este comando denominado alternativo, pois permite escolher caminhos da programao dependendo de uma condio (expresso lgica). Note que o trecho entre seno e o comando imediatamente anterior a fimse so opcionais, razo pela qual no formato eles aparecem entre colchetes. Os comandos entre ento e seno ou fimse (se no houver seno) sero executados apenas se a condio do comando for verdadeira. Se houver comandos entre seno e fimse os mesmos sero executados apenas se a condio for falsa.
Forma~o se condio <comando-i> < comando-2 > I < ... > [senao I <comando-i> I <comando-2> I < ... >J fimse ent o Exemplo se (A 2: 4) enno B +- B + 1 C +- C + D + A senao I escreva (N x 2) fimse

Se

Enquanto Este comando permite a realizao de laos (loops) dentro de programas. Comeando o comando, a condio avaliada. Se ela for falsa, h um desvio para o comando seguinte ao fimenquanto. Se a condio for verdadeira os comando internos ao enquanto so executados. Ao se encontrar o fimenquanto h um desvio incondicional ao incio do enquanto e a condio inicial reavaliada.
Forma~o enquant,o condio I <comando-i> I <comando-2>
I

faa

Exemplo A <-- 5 enquanto (A ~ 9) ento I escreva (A)


I A-A+3

< ... >

fimenquan~o

fimenquan~o Sero impressos os valores

5 e 8.

Repita

Este comando tambm dentro de programas.


Forma~o repua I <comando-i> I <comando-2> I < ... > aue condio
A

permite
Exemplo
<;-

a realizao de laos (loops)

repi~a I escreva (A) I A_A+3


at e (A

>

9)

Sero impressos os valores

5 e 8.

Para Este comando tambm permite a realizao de laos (loops) dentro de programas. No incio a varivel citada no comando inicializada com <constantel>. Depois feita a condio. Se o passo est

ausente ou positivo, a variavel testada para :S <constante2>. (Se o passo negativo, o teste com 2::). Se o resultado VERDADEIRO os comandos internos so executados. Ao final deles, a varivel incrementa.da (ou decrementada se o passo negativo) e depois h um retorno ao teste inicial. Quando o passo no explcito, ele vale 1.
Formato para <var> de <constantel> [passo <constan1:e3 faa I < comando-l > I < comando-2 > I < ... > fimpara a1:e <constante2> Exemplo para K de 3 at e 8 passo 2 faa I escreva (A) fimpara Sero impressos os vaiores 3. 5 e 7.

Retorne
dade de contrrio

Usado exclusivamente dentro de funes, tem a finalidevolver um resultado a quem chamou esta funo. Ao do "C", no necessariamente encerra a execuo da funo.
Exemplo se A > 5 ento I retome A f1m{se}

Formato retome <expresso compat1vel>

Outros Comandos

aleatorio arquivo <nome-de-arquivo> algoritmo "lendo do arquivo" arquivo" timer 011 I timer off pausa debug eco cronmetro

teste. txt"

Exernplo 1
algoritmo var "primos"

J,K,R: inteiro
funcao QPCN: inteiro): var A,B:inteiro
lnlClO

inteiro

. . .

A <- 2

B <- 1 enquanto B <= N faca se EPRIMO(A) entao B <- B + 1 fimse

A <- A

fimenquanto retorne A - 1 fimfuncao

funcao EPRIMO(M: inteiro): logico


var

QT,DI:inteiro
~nl.Cl.O

QT <- O DI <- 2
enquanto DI < M. faca
se M fimse

% DI

O entao
+

QT<- QT

DI <- DI + 1
fimenquanto retorne QT = O fimfuncao inicio leia (J,K)

R <- QP(K)-QP(J)
escreva (R) escreva (QP(K)) escreva (QP(J))

fimalgoritmo

Exemplo 2
algoritmo "palito" var N,SEQ,J,TV:inteiro inicio N<-O enquanto N<20) ou (N)30)) faca escreval ("com quanto comecamos 711) leia (N) fimenquanto enquanto (N)O) faca SEQ <- 1 enquanto N-SEQ=O) faca SEQ <- SEQ + 4 Ii escreval ("depuracao ... N=II,N,II SEQ=",SEQ) fimenquanto J<-4+(N-SEQ) se (J=O) entao J<-1 fimse escreval ("eu joguei ",J) N<-N-J escreval ("Existem ",N," palitos") se (N<=O) entao escreva ("por incrivel que pareca, ... perdi, ... babaca ") interrompa fimse TV<-O enquanto TV<1) ou (TV>3 faca escreval ("jogue") leia (TV) fimenquanto

<-

N -

TV

escreval("existem ",N," palitos") se (N<=O) entao escreval("burrao, eu ganhei ...II) interrompa fimse fimenquanto fimalgoritmo

Exemplo 3
algoritmo "raiz quadrada" var a:real funcao sqrt(N:real):real retorne teste(N~1) fimfuncao funcao teste(X,G:real):real inicio se pertoX/G),G) entao retorne G senao retorne teste(X, melhor(X,G fimse fimfuncao funcao melhor(X,G:real):real inicio retorne (G+(X/G/2 lIa media entre G e X/G fimfuncao funcao perto(A,B:real):logico inicio retorne (B*0.001) > abs(A-B) fimfuncao inicio leia(a) escreval(a, sqrt(a fimalgoritmo