Tutorial Visualg
Tutorial 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>
<varUveis>
I
de funo
< comandos>
fimalgori1:mo
Comentrios
so caracterizados
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
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
COI-
Tipos
Tipo
int;eiro real caracter logico
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)
<
permite
inicializar
B
C
"CURITIBA"
A + 23
Expresso
de funes que
Numrica
acabem
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
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
Expresso
de relaes que
Formato Igual (-) Diferente Maior Menor
( ( (> -)
Relacional
-)
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
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
fimenquan~o
5 e 8.
Repita
permite
Exemplo
<;-
>
9)
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}
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
A <- A
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