    Curso de scripvox - aula8 (Por Fabiano Ferreira)

    Desvios de execuo

    Desde o incio do curso, dizemos que os scripts so executados linha
por linha, da primeira para a ltima.
    Isso  verdade. Porm, h um 'algo a mais' que guardamos para ser
revelado em ocasio mais apropriada.
E a est! o dia da revelao do mistrio chegou!
    Um mistrio que se chama desvio de execuo.
    Vamos v-lo na prtica.

    *Marcando um ponto de desvio;

    Antes de fazer um desvio,  preciso que seja estabelecido um ou mais
pontos de desvio no cdigo fonte.
Simplificando: precisamos marcar pontos no cdigo, para indicar que
aquele local  um local ao qual o programa pode voltar depois, caso eu
precise.
    Para marcar o ponto de desvio, usamos um rtulo.
    O rtulo pode ser qualquer nome de nossa escolha, precedido pelo
sinal de @ "arroba"
    Vejamos ento um exemplo de um cdigo com um rtulo marcando um
ponto para desvio:

Escreve "Isso  um exemplo"
Escreve "para demonstrar desvios de execusso."

@finaliza
Escreve "Fim do programa."
Termina.

    No cdigo acima, o @finaliza,  um rtulo.
    Isso quer dizer que, se desejarmos, podemos fazer com que o programa
volte, ou avance, durante a execusso para o ponto onde est o rtulo finaliza e
execute da l em diante.

*Desviando para um ponto marcado no cdigo;
    Para desviar para um ponto marcado, usamos o comando desvia, um
espao e o nome do rtulo desejado, incluindo o arroba.
    Vejamos agora um exemplo completo de desvio de execusso:

Escreve "Aqui comeou meu cdigo."
Desvia @final
Escreve "Essa  a prxima linha do meu cdigo."

@final
Escreve "Foi um prazer conversar contigo."
Escreve "Tchau."
Termina mudo


    A execusso do cdigo acima seria assim:
    Executa a linha 1;
Pula para a linha 6, pois na linha 2 h um desvio para o  rtulo chamado
de final;
    EXecuta o restante do programa at o fim;

    Vejamos um outro exemplo:

    Escreve "Informe seu nome"
L n
Escreve "Muito prazer, "n". Vamos conversar?"
@opcao
Escreve "Tecle s ou n"
le r &
Se r = "s" desvia @satisfeito
se r = "n" termina mudo
Escreve "opo invlida."
desvia @opcao
@satisfeito
Escreve "Que bom, "f" que aceitou meu convite."
Escreve "Mas era apenas para dar um exemplo de desvio de execuo pra galera do curso."
Escreve "At a prxima!"
Escreve "Tchau."
Termina mudo

    Vamos analisar o cdigo acima:
    Primeiro  executado a linha 1, que exibe uma mensagem pedindo o
nome do usurio.
Na segunda, temos o comando l, que guarda na varivel n o nome
digitado.
Na linha 3, temos a exibio de outra string pedindo uma resposta "vamos
conversar?"
    Na quarta linha, temos uma marcao de um ponto de desvio com o
rtulo @opcao.
    Na quinta linha, temos a exibio de uma string pedindo que o
usurio tecle s ou n.
Na sexta linha, temos o comando l que guarda a resposta digitada na
varivel 'r'.
Na stima linha, temos uma execusso condicional, que diz que se o
usurio teclar 's', o programa deve desviar a execusso para um rtulo
chamado @satisfeito.
    A oitava linha diz que, se o usurio teclou n, o programa deve
fechar.
Se nenhuma das duas condisses forem satisfeitas, o programa segue em
frente, executando a linha 9.
No nosso caso,  uma string dizendo que a opo teclada pelo usurio 
invlida.
E na dcima linha, um desvio para o rtulo @opcao.
    Isso quer dizer o seguinte: qualquer tecla que no for s ou n o
programa no aceita e vai pedir que voc tecla novamente a opo.
    Aqui vemos mais um exemplo de loop, e descobrimos que, em
programao, no h apenas uma nica forma de se resolver um determinado
problema.
    O trecho em questo podia ser escrito usando o bloco enquanto.

    As linhas que vm aps a dcima linha, seria a parte do programa que
seria executada, se a resposta do usurio fosse 's', pois,  a parte do
cdigo que foi marcada com o rtulo @satisfeito.

    Assim termina nossa aula8.

    Exerccios:
1 - O que voc entende por desvio de execusso?

2 - Por que  recomendado cautela ao usar o comando desvia?

3 - Faa um programa com as seguintes caractersticas:
*permita que o usurio digite dois nmeros;
*Realize a soma dos dois valores e exiba o resultado;
*execute esses passos, at que o usurio digite o valor 0 para a primeira parcela da soma;
*use o comando desvia, para controlar a forma de execusso do programa;

*Entregar as respostas at o dia 18/09, enviando email para o seguinte
endereo:
qst-scripvox@sanfersite.com.br

    Boa sorte!
