    Curso de Scripvox - aula6 (Por Fabiano Ferreira)

    Nesta aula, vamos falar de execussão condicional.
    Conforme comentamos na aula anterior, o que começaremos a ver a
partir de agora, irá transformar radicalmente, nossa maneira de pensar
sobre um problema e escrevê-lo em scripvox.
    O que vamos ver aqui, e nas outras aulas, nos dará um 'poder' muito
maior do que já ganhamos até a aula 5, para escrever scripts.

    Se você achou o scripvox uma linguagem fácil e poderosa, só com as
cinco primeiras aulas, vai ter essa confirmação a partir desta aula.
E tenha certeza: com criatividade, força de vontade e paciência, você
vai muito longe com o scripvox, e ainda mais, sua vontade de aprender
outras linguagens de programação, infinitamente mais poderosas que
scripvox será grande.
    Sendo assim, vamos ao que interessa!

*****

    Execussão condicional
    Chamamos de execussão condicional o ato de executar uma rotina
mediante a uma condissão ser falsa ou verdadeira.
    Vamos imaginar a seguinte situação:
Em um determinado programa, ao pressionarmos a tecla esc, é perguntado
se desejamos realmente sair da aplicação.
Devemos responder sim, apertando a tecla s, ou não, apertando a tecla n.

Caso o usuário responda 's', o programa permanece aberto, mas se
responder 'n', o programa se fecha.
    O caso acima ilustra a verificação de uma condissão para a execussão
de uma rotina.
    Nesse exemplo, a condissão é a resposta do usuário.
    O programa vai verificar qual foi a resposta dada.
Se foi 's', o programa deve continuar, se for n, deve enserrar.

Agora que temos uma idéia de como funciona a execussão condicional,
vamos ver como fazê-la no scripvox.

1 - Forma simples:
A forma simples de execussão condicional no scripvox é a seguinte:
Se, um espaço,  comparação, um espaço e o comando.
    'Se', indica uma execussão condicional.
Comparação indica qual a condissão deve ser satisfeita, e comando indica
qual comando deve ser executado se a condissão for satisfeita.
    Para fazermos a comparação, necessitamos dos comparadores.
No scripvox, os comparadores válidos são:
= - sinal de igual: verifica se x é igual a y, não fazendo distinção
entre strings maiúsculas e minúsculas.
== - igual igual: verifica se x é igual a y, fazendo distinção entre
strings maiúsculas e minúsculas.
> - maior: verifica se x é maior que y.
< - Menor: verifica se x é menor que y.
>= - maior ou igual: verifica se x é maior ou igual a y.
<= - menor ou igual: verifica se x é menor ou igual a y.
<> - diferente: verifica se x é diferente de y.

    =* - é começada por: verifica se x é começado por y.
*= - é terminada por: verifica se x é terminado por y.
*=* - existe como subcadeia em: verifica se x existe como subcadeia em
y.

Vejamos um exemplo prático:

*Exemplo de execussão condicional simples;
*Por Fabiano Ferreira;
*Em agosto de 2011;

Escreve "Digite seu nome:"
Lê n
seja t tamanho n
Se t>7 escreve "Nossa, você tem um nome muito grande!"
Termina mudo

O exemplo acima solicita ao usuário que digite seu nome.
Em seguida, é utilizado a função tamanho para obter o comprimento do
nome do usuário.
Abaixo, é verificado se o tamanho do nome do usuário é maior do que 7.
Caso a condissão seja verdadeira, o programa exibe a mensagem 'Nossa, seu nome é muito
grande!
Caso a condissão seja falsa, o programa pula essa linha e passa para a
próxima instrução, que no caso do nosso exemplo é termina mudo.

2 - Forma composta:
A forma composta de execussão condicional no scripvox é a seguinte:
se comparação
comando1
comando2
comando3
...
comando x
senão
se comparação2:
comando1
comando2
comando3
..
comando x
senão
comparação x
comando 1
...
comando x
fim se

Vamos a um exemplo prático:

*Exemplo de execussão de condicional composta;
*Por Fabiano Ferreira;
*Em agosto de 2011;

Escreve "Digite sua idade:"
Le i
se i<13
Escreve "é uma criança."
senão
se i<20
Escreve "já é adolescente."
senão
Escreve "Já é adulto!"
Fim se

    No exemplo acima, pedimos ao usuário que entre com sua idade.
Vamos supor que a idade digitada foi 18.
Abaixo, iniciamos um bloco de execussão condicional.
A primeira condissão a verificar foi se a idade passada pelo usuário era
menor que 13.
Caso a condissão seja verdadeira, o programa escreve a mensagem "é uma
criança."
Se a condissão for falsa, o interpretador pula para verificar a próxima
condissão que vem após o senão.
No nosso caso, a primeira verificação vai dar falso.
Então o programa vai verificar a próxima condissão.
No caso do nosso exemplo, será verificado se a idade digitada é menor
que 20.
Caso seja verdade, o programa exibe a mensagem "Já é adolescente."
Caso seja falso, o programa pula para verificar a próxima condissão após
o senão.
No nosso caso, o resultado da verificação será verdadeiro.
A mensagem "Já é adolescente" será então exibida.
Tendo sido satisfeita a condissão, o programa sai do bloco, não
verificando as próximas condissões, passando a executar a instrução
imediatamente após a linha onde termina o bloco.
O bloco de condissões termina com o comando Fim se

Copie e execute esse exemplo.
Faça algumas experiências com alguns valores.

Vejamos mais um exemplo:

*Outro exemplo de execussão condicional;
*Por Fabiano Ferreira;
*Em agosto de 2011;

Escreve "Digite sua idade:"
Lê i
Se i>50
Escreve "Fale um pouco de como você se sente após os 40:"
le r
Fim se
Termina mudo.

    O exemplo acima pede que o usuário digite sua idade.
    Se a idade for maior que 50, é exibido uma string, pedindo que o
usuário fale um pouco de sua vida após os 40.
O usuário então terá a oportunidade de digitar algo que será armazenado
numa variável.
Se a condissão for falsa, ou seja, se a idade não for maior que 50, o
programa pula esse bloco e vai para a instrução após o fim do bloco.
No nosso caso é o termina mudo, mas poderia ser qualquer outra.

    *Limitações do scripvox nos testes condicionais:

    No scripvox, não é permitido blocos aninhados, como em outras
linguagens.
Para ilustrar, vamos ver um exemplo de código inválido no scripvox.

Escreve "Digite um número:"
Lê n
Se n>60
Escreve "Digite sua idade"
Lê i
Se i>n
Escreve "Sua idade é maior que o número que você digitou."
senão
Escreve "Sua idade é menor que o número que você digitou."
Fim se
senão
Escreve "você ainda não chegou aos 60."
Fim se

Embora o interpretador não acuse erro de execussão, o programa acima não
vai fazer o que se pretende.
Execute-o e você verá o resultado.

    Ainda que não seja possível utilizar bloco dengtro de bloco, é
possível utilizar uma condicional simples dentro de uma composta, como
se vê no exemplo abaixo:

*Exemplo de condição simples dentro de uma composta;
*Por Fabiano Ferreira;
*Em agosto de 2011;

Escreve "Digite uma frase."
Lê f
Seja t tamanho f
Se t>100
Escreve "Essa frase é bastante grande. Você leu em algum lugar?
Lê r &
se r="s" Escreve "que bom, continue lendo e descobrindo novas frases."
se r="n" "então você é um bom escritor, parabéns!."
Fim se

O exemplo acima pede que o usuário digite uma frase, guardando-a na
variável f.
Em seguida, usamos a função tamanho  para descobrir o tamanho de f e
guardamos o valor na variável t.
Abaixo é verificado se o tamanho de f ultrapassa a 100.
Se for verdade, é perguntado ao usuário se ele leu essa frase em algum
lugar.
A resposta é guardada na variável r.
Se for 's', é exibido uma mensagem do tipo "continue lendo e descobrindo
mais frases', mas se for n, é exibido uma mensagem do tipo 'parabéns,
você é um bom escritor."
Em seguida, o bloco composto é fechado e o programa executa a próxima
instrução inicial que nesse caso é o termina mudo.

    *Operador não;
    Podemos usar o operador não, na verificação da condissão.
Veja o exemplo:

*Exemplo de uso do operador não;
*Por Fabiano Ferreira;
*Em

Escreve "Digite um número de 0 a 5:"
Lê n
Se não n<5 Escreve "O número
digitado está fora do limite estabelecido."
Termina mudo

O Exemplo acima pede que o usuário digite um número de 0 a 5.
Após ler o número, é verificado se o número digitado está no limite
entre 0 e 5.
A condicional 'Se não n<5', pode ser interpretada como 'se n for maior
que 5'.

Se a condissão for verdade, é escrito a mensagem "o número digitado é
maior que o limite estabelecido."
Caso contrário, o programa ignora essa linha e passa para a próxima
instrução que seria o termina mudo.

Assim fechamos a nossa aula 6.

Exercícios:

1 - Faça um programa que peça para o usuário digitar sua idade.
O programa deve verificar se a idade digitada é maior que 18.
Se for verdade, deve escrever uma mensagem do tipo "Parabéns, você já é
maior de idade."
Caso contrário, escrever uma mensagem do tipo "Você ainda não é maior de idade."

2 - Faça um programa que permita que o usuário digite dois valores.
O programa deve efetuar a soma dos valores digitados e, se o resultado
da soma for maior que 100, escrever uma mensagem do tipo "Conseguiu mais de 100 pontos!"

*Enviar as respostas das questões até o dia 28/08 para o seguinte email:
qst-scripvox@sanfersite.com.br

Boa sorte!
