scrip vox 60

Upload: aristoteles-meneses-lima

Post on 30-Oct-2015

100 views

Category:

Documents


0 download

TRANSCRIPT

35

INTERPRETADOR DE SCRIPTS - SCRIPTVOX V. 6.0MANUAL DO PROGRAMADOR

SUMRIO

1) DESCRIO2) FUNCIONAMENTO GERAL3) ESTRUTURA DO PROGRAMA4) UM PRIMEIRO EXEMPLO5) DESVIOS6) COMANDOS6.1) INTERAO COM O USURIO6.2) MULTIMDIA6.3) EXECUO EXTERNA E DESVIOS6.4) OPERAES COM ARQUIVO6.5) PROCESSAMENTO DE VARIVEIS E CLCULOS BSICOS6.6) OPERAES ARITMTICAS6.7) TESTES DE VALORES: EXECUO CONDICIONAL6.8) REPETIES6.9) OPERAES COM DIRETRIOS6.10) ESTRUTURAS DE INFORMAO6.10.1) O TIPO INTEIRO6.10.2) O TIPO CADEIA6.10.3) O TIPO LISTA6.10.4) O TIPO DICIONRIO6.11) OPERAES COM JANELAS6.12) AES DE TECLADO E MOUSE6.13) OPERAES COM INTERNET6.14) MSAA (MICROSOFT ACTIVE ACCESSIBILITY)6.15) MENUS7) CDIGOS RETORNADOS PELAS TECLAS

1) DESCRIO

O programa Scriptvox um interpretador de linguagem de comandosparte integrante do Sistema Dosvox, que permite um controle deexecuo de sequncias de aes controladas por programa.

Nota para programadores:Poderamos pensar que um equivalente dos antigos comandos .BATdo MS DOS, mas com um poder tremendamente aumentado,e adequado ao processamento no Windows. Os comandos da linguagemso baseados na lngua portuguesa; assim, o texto do programa muitolegvel para quem no tem conhecimento de outras lnguas.

As aes que podem ser executadas foram talhadas para possibilitara criao de interfaces sonoras para deficientes visuais. Em particular, muito fcil a interao dos scripts com elementos multimdia (som e voz sintetizada, em particular). Chama a ateno tambm sua capacidadede simular comandos de teclado e mouse, imitando as aes de umusurio humano.

A linguagem foi criada para ser absolutamente simples de serprogramada, quando o problema simples. Desta forma, acreditamosque se crie um nmero grande de "programadores curiosos", genteque no teria a pacincia para aprender uma linguagem convencionalde computao ao ponto de criar alguma coisa til. Um programaque em Pascal poderia consumir 500 linhas ou mais pode ser escritoprovavelmente em menos de 100 em Scriptvox.

A linguagem pode ser pensada tambm como "a primeira linguagem" doaprendiz de programao, possibilitando que, com um conhecimentomuito rudimentar de programao, um estudante crie programas deinterface que atuem sobre outros programas, possibilitando resultadosmuito interessantes e criativos.

importante ressaltar que um script tem escopo de funcionamentocom lgica muito mais simples do que um programa convencional, escritoem Pascal ou outra linguagem qualquer. Assim, a linguagem possuicomandos simples para controle de execuo. No existem classes, mas bastante verstil o tratamento de listas de informaes e das associaes entre chaves e valores, conhecida como "dicionrio".

2) FUNCIONAMENTO GERAL

Um script de comandos um arquivo de texto com extenso .PRO.As instrues do programa so executadas sequencialmente, linhaaps linha. As nicas excees so os comandos que promovemexplicitamente um desvio no fluxo normal de execuo, a saber:desvia, se, chama e retorna. Veremos o funcionamento dessescomandos mais adiante.

a) iniciando a execuo

O usual chamar o scriptvox informando o nome do script, ou atravs docomando P ou A do Dosvox. Quando o scriptVox chamado sem onome do script, ele pergunta o nome deste arquivo.

Para ativ-lo no Dosvox existem trs opes:

a. Ativar o utilitrio Scriptvox (opo U S) e informar o nome completo do arquivo .PRO contendo o script

O mdulo executvel do scriptvox scripvox.exe. Se o Scriptvox for chamado atravs do comando P do Dosvox ou docomando iniciar do Windows, usual anexar o nome do arquivo nalinha de comando, por exemplo:

scripvox meuscript.proouscripvox c:\testes\script01.pro

Por padro, os scripts que so informados apenas pelo nome, semespecificar o diretrio em que esto gravados, so buscados no diretriopadro c:\winvox\scripts

b. Localizao com a opo de arquivos do Dosvox.

Quando o arquivo .PRO que contm o script est localizadono diretrio atual, o mais fcil localiz-lo com a opo de arquivos eexecutar este arquivo com a opo x

Nota sobre a instalao:Deve-se assegurar que o arquivo \windows\dosvox.ini contenha as seguinteslinhas

[DOSVOX]PROG.CMD=c:\winvox\scripvox.exe

[PROGUTIL]Util19=S,c:\winvox\scripvox.exe,UTSCRIPT,Executor de script de comandos

[SCRIPVOX]DIRSCRIPVOX=c:\winvox\som\scripvoxDIRDEFAULT=c:\winvox\scripts

Nota: para alterar a pasta padro, deve-se editar o arquivo \windows\dosvox.inie mudar na seo [SCRIPVOX] a clusula DIRDEFAULT introduzindo ali onome do diretrio desejado.

c) execuo interativa

A execuo interativa uma opo interessante: as linhas do script so digitadaspelo teclado e a execuo de cada linha ocorre assim que o usurio termina dedigit-la, teclando Enter.

Para isso basta omitir o nome do arquivo quando este for perguntadoao incio do scriptvox. Apertando-se simplesmente enter, sem teclarnada nesta hora, ser assumida a entrada do script linha a linha por teclado:os comandos assim que forem digitados sero executados imediatamente,de forma interativa, o que especialmente til para aprender a lidar comos comandos da linguagem ou para comandar a execuo de aesmultimdia.

3) ESTRUTURA DO PROGRAMA

a) Formato do programa

O programa um texto comum; os comandos podem ser escritosem letras maisculas ou minsculas, com ou sem acentos; as linhas podemter um nmero arbitrrio de caracteres; linhas em branco so ignoradas.Os brancos ao incio da linha so desprezados, possibilitando o usode endentao nos programas.

b) Comentrios

Uma linha comeada por asterisco ignorada (comentrios).Aps o trmino do comando pode-se anexar as letras ponto-e-vrgula ou //; da at o fim da linha o contedo ignorado.

c) Variveis

Variveis so locais designados pelo programador onde informaes podemser guardadas. Toda varivel possui um nome, denominado identificador davarivel.

Todo nome de varivel deve comear por um cifro, um sublinhado (em ingls:"underscore"), uma arroba ou uma letra. Este caractere inicial pode ser seguido de cifres, sublinhados, letras ou nmeros. As letras so tratadas sempre como maisculase os acentos, as cedilhas e o til so eliminados. No h limite para o nmero decaracteres em um identificador. As variveis podem conter cadeias de caracteres de at 65000 letras ou nmeros.

LONGA$LONGALON$GALON_GA

so seis identificadores de variveis, DISTINTAS. No feita distino entreletras maisculas e minsculas, nem entre letras acentuadas, cedilhadasou no. Assim os identificadores seguintes referem-se todos mesma varivel:

AOaoAaoacaoACAO

Nota para usurios de verses antigas:A distino entre variveis longas e rpidas desapareceu na verso 6.0 do scriptvox.

4) UM PRIMEIRO EXEMPLO

Para que se tenha uma breve ideia do aspecto de um programa,vejamos o trecho abaixo.

* Meu primeiro programaescreve "Oi amigo, qual seu nome?"l nescreve "Muito prazer, "&escreve nescreve "Realmente no nada difcil programar"

A primeira linha comea por asterisco e, portanto, um comentrio, sendoignorada pelo interpretador; em seguida a frase

Oi amigo, qual o seu nome ?

mostrada numa janela e sintetizada em voz; a seguir o usurio deveteclar uma resposta pressionando Enter ao final; esta resposta armazenada na varivel n; o computador ento fala:

Muito prazer,

(o indicador &, ao fim do comando escreve, diz que no se deve pular linha aps a escrita) colocar ao lado o que foi teclado pelo usurio, armazenado internamentena varivel n, pular de linha (pois este comando escreve no possui umaletra & ao final) e finalmente escrever

Realmente no nada difcil programar

Antes de prosseguir digite este texto e execute no scriptvox.

Uma verso ligeiramente modificada deste texto faz uso de uma varivel que possui um identificador mais adequado ao tipo de informao que ela armazena:chamando a varivel de nome, compreendemos mais facilmente o que ela armazena,do que chamando-a simplesmente de n.

* Meu primeiro programaescreve "Oi amigo, qual seu nome?"l nomeescreve "Muito prazer, "&escreve nomeescreve "Realmente no nada difcil programar"

6) COMANDOS

Na descrio simplificada abaixo, o uso de chaves indicaque pelo menos um dos itens mencionados entre as chaves obrigatrio eo uso de colchetes significa que os itens mencionados entre colchetesso opcionais.

6.1) INTERAO COM O USURIO

a) escreve [MUDO] {"frase" ou expresso} {"frase" ou expresso} ...

Escreve um texto, sintetizando simultaneamente. Se a palavraMUDO estiver contida, ele no sintetizado, apenas escrito.Quando o comando terminado por &, no pula linha.

exemplos: escreve "Oi" escreve "Eu me chamo " & escreve "Antonio Borges" seja a "Nasci em 1956" escreve a

b) l [SENHA ou MUDO ou EDITA ou MAIUSC ou INTEIRO] [varivel]

Obtm do teclado uma cadeia de caracteres para uma varivel. Exemplos:

l a l SENHA s l MUDO a l EDITA nomeantigo

- a opo de senha faz com que a escrita no aparea nem seja ecoada;- a opo mudo faz com que os caracteres sejam escritos na tela, porm no sejam ecoados; - a opo edita verifica se h algum contedo previamente armazenado na varivel, e se houver, coloca-o no campo de leitura para que possa ser editado. Se a varivel for omitida, o interpretador aguardar que o usurio tecle Enter paraprosseguir.

O modificador MAIUSC faz com que o texto digitado seja convertido para maisculasantes de ser armazenado na varivel especificada.

O modificador INTEIRO faz com que o texto digitado seja convertido para um nmero inteiroantes de ser armazenado na varivel especificada. Isto s ser possvel se o texto contiverapenas nmeros.

Quando o comando l terminado por &, apenas uma tecla lida.

l c &

Se a tecla pressionada for uma tecla de funo, o Scriptvox armazenar navarivel especificada uma cadeia contendo a codificao da tecla.Os cdigos retornados so os seguintes:

BACKSPACE="#8"TAB="#9"CONTROL ENTER="#10"ENTER="#13"ESC="#27"F1="#0#59"F2="#0#60"F3="#0#61"F4="#0#62"F5="#0#63"F6="#0#64"F7="#0#65"F8="#0#66"F9="#0#67"F10="#0#68"F11="#0#69"F12="#0#70"HOME="#0#71"CIMA="#0#72"PGUP="#0#73"ESQ="#0#75"DIR="#0#77"END="#0#79"BAIXO="#0#80"PGDN="#0#81"INSERT="#0#82"DEL="#0#83"CONTROL F1="#0#94"CONTROL F2="#0#95"CONTROL F3="#0#96"CONTROL F4="#0#97"CONTROL F5="#0#98"CONTROL F6="#0#99"CONTROL F7="#0#100"CONTROL F8="#0#101"CONTROL F9="#0#102"CONTROL F10="#0#103"CONTROL F11="#0#104"CONTROL F12="#0#105"CONTROL PGUP="#0#132"CONTROL PGDN="#0#118"CONTROL ESQ="#0#115"CONTROL DIR="#0#116"CONTROL UP="#0#113"CONTROL DOWN="#0#114"CONTROL BACKSPACE="#0#127"SHIFT INSERT="#0#254"CONTROL INSERT="#0#255"

c) tela {modificador}

Controla a aparncia da janela ou reposiciona o cursor nela.Modificador pode ser um dos seguintes:

LIMPALimpa a tela, apagando todos os caracteresMINIMIZADATira a janela da rea visvelNORMALTraz a janela para a rea visvelTAMANHO x,yGuarda nas variveis x e y o tamanho da tela(x receber o nmero de colunas e y o nmero de linhas, respectivamente)GETCHAR c,x,yGuarda na varivel c o caractere armazenado naposio x,y da tela (x = coordenada horizontal, y = coordenada vertical)GETATTRIB v,x,yGuarda na varivel v o atributo referente ao caractere armazenado na posio x,y da tela (x = coordenada horizontal, y = coordenada vertical)@x,yPosiciona o cursor nas coordenadas x, y (x = coordenada horizontal, y = coordenada vertical)

Exemplos: tela LIMPA tela @10,10 escreve "oi"

d) bipa [tipoBip]

Soa um bip ou clek. Se o tipo do bip for omitido ser emitido um bip.Caso contrrio, 0 = bip 1 = clek

e) cor [valor ou variavel] fundo [valor ou variavel]

Cores vlidas: Preto = 0 Azul = 1 Verde = 2 Ciano (Azul) = 3 Vermelho = 4 Magenta = 5 Marrom = 6 Branco fosco = 7 Cinza escuro = 8 Azul claro = 9 Verde claro = 10 Ciano claro = 11 Vermelho claro = 12 Magenta Claro = 13 Amarelo = 14 Branco = 15

Escreve com a cor ou o fundo de letra dados, a partir deste momento.Para desenhar usando uma janela colorida, use o comando fundoseguido do comando tela limpa.

Exemplos: COR 4 ESCREVE "Estou escrevendo este texto em vermelho" Fundo 9 ESCREVE "Vermelho em fundo azul claro" FUNDO 0 COR 7 TELA LIMPA

f) observa TECLADO [variavel]

A varivel selecionada recebe um dos seguintes valores 0: no foi teclado nada 1: teclado requer leitura, foi teclado algo

Exemplo:@maisUmBip bipa 1 observa TECLADO x se x = 0 desvia @maisUmBipl a &

O exemplo acima fica repatidamente clekando at que o usurio aperteuma tecla.

g) espera [tempoEmSegundos]

O script paralisado durante o nmero de segundos especificado.

Exemplo: bipa espera 2 bipa

O exemplo acima realiza dois bips separados por dois segundos de intervalo.

6.2) MULTIMDIA

a) toca ["nomeArquivo" ou varivel]

Este comando permite a execuo de um arquivo multimdia (MIDI, WAV, etc),que possa ser processado pelo Windows.

Se este comando for terminado por &, o script prossegue,no esperando a execuo da mdia terminar.

exemplo: toca "c:\windows\media\tada.wav"

b) mci [variavelRetorno] ["frase" ou varivel]

Permite a execuo de um comando do MCI - Media Control Interface,permitindo o controle completo dos dispositivos multimidia, comoCD-ROM, exibio de filmes, sons, animaes, etc...Veja manual de programao do Windows para uma relao completa decomandos MCI.

exemplo: mci "PLAY CDAUDIO"

6.3) EXECUO EXTERNA E DESVIOS

a) executa ["programa" ou variavel]

Executa um programa comum. Quando o comando terminado por &, o script prossegue em paralelocom a execuo do programa, caso contrrio, o script espera queo programa conclua sua execuo para prosseguir.

exemplo:executa "\winvox\edivox"escreve "Voltando do editor"

b) rtulos e desvios

Um rtulo serve para dar nome a uma linha do script, de modo que oprogramador possa referir-se a ela em outros pontos do seu programa.

Um rtulo um identificador iniciado pelo caractere arroba, que podeser seguido de cifres, sublinhados, letras ou dgitos. As regras paraconstruo de um rtulo so as mesmas para construo de nomes devariveis: as letras so tratadas sempre como maisculas e os acentos,as cedilhas e o til so eliminados.

Uma das principais utilidades de um rtulo a possibilidade de, emalgum ponto do script, desviar o fluxo de execuo para a linha designadapelo rtulo. Isto feito atravs do comando desvia.

O trecho a seguir ilustra um desvio

escreve "Digite diversas palavras e eu repetirei"

@outraPalavra l t escreve t desvia @outraPalavraObserve que o rtulo @outraPalavra marca a linha que antecede o comandol. O comando desvia menciona esse rtulo, fazendo com que o fluxo deexecuo desvie para a linha marcada.

Este programa no tem fim. Ele ficar eternamente lendouma informao no teclado, e em seguida repetindo.A nica forma de parar este programa cancelando-o atravsdas teclas control-break ou alt-F4, pressionadas simultaneamente.

Notas sobre estilo: comum inserir uma linha em branco antes de um rtulopara aumentar a legibilidade do programa.Quando os comandos de desvio provocam uma repetio deum trecho usual que ele seja destacado atravs da inserode alguns espaos em branco em todas as linhas (indentao).

c) desvia [@rotulo] ou desvia [SCRIPT] [nomescript] [@rotulo]

Desvia a execuo para um ponto qualquer indicado pelo @rotulo comum este comando ser usado junto com o comando se.Uma variante deste comando permite a continuao da execuo emum outro script (ou a partir de um rtulo deste).

exemplo:escreve "Tecle vrios nomes que eu vou repeti-los."escreve "Tecle fim para terminar"

@denovo l n se n = "fim" desvia @termina escreve "Voc teclou " & escreve n desvia @denovo

@terminaescreve "Obrigado!"

Notas:

1. O comando se ser estudado detalhadamente mais adiante.

2. Quando se deseja repetir uma ao vrias vezes, interessante usar os comandos de repetio, que tornam o programa mais legvel.

d) termina [MUDO] Termina a execuo do script. A palavra MUDO, quando especificadainibe a mensagem "fim de script" que normalmente falada quando oscript se finaliza.

exemplo:escreve "oi"terminaescreve "tchau"

No exemplo acima, tchau no ser falado, pois o comando terminaser executado antes, e assim, o programa terminar.

e) chama @rotulo

Desvia a execuo para um ponto qualquer indicado pelo @rotulo.Algum momento aps esta operao, entretanto, pode-se executar ocomando retorna para voltar a execuo uma linha abaixo desta docomando chama. o conceito convencional de chamada de subrotina.

exemplo:escreve "Incio do programa, chamando rotina de entrada"chama @entradaescreve "Agora, estou cansado chamando rotina de fim"chama @fimtermina

@entradaescreve "bom dia"retorna

@fimescreve "tchau"escreve "vou dormir"retorna

Uma rotina pode chamar outra rotina, ou seja, possvel executar outroscomandos chama, antes de um comando retorna, desde que depois seexecutem diversos comandos retorna, um para cada chama.

Com o comando chama no possvel passar parmetros, como em muitaslinguagens de programao.

f) retorna

A execuo deste comando provoca o desvio para depois do ltimocomando chama executado.

g) cmd [variavel]

Este comando permite que uma varivel seja montada (possivelmenteatravs de operaes de concatenao) e depois interpretada comose fosse um comando.

exemplo:seja c "escreve ""Antonio"""escreve "Vou executar o seguinte comando"escreve ccmd c

Nota: no exemplo acima mostrado tambm como se colocamaspas dentro de aspas: duas aspas para cada aspa a introduzir.

h) debug {+ ou -}

Liga ou desliga o modo debug, no qual cada comando executado falado.Esse comando til durante a verificao de possveis erros do script.

exemplo:escreve "Vou mostrar o que estou fazendo"debug +seja i 1soma i 2escreve idebug -escreve "Agora vou parar de mostrar"seja i 3soma i 2escreve i

6.4) OPERAES COM ARQUIVO

Os comandos a seguir trabalham com arquivos. Para processamento,um arquivo deve ser aberto, e associado a um nmero de 0 a 9, que referenciado durante a leitura ou escrita.

a) abre [MUDO] #n ["nomeArquivo" ou variavel]

Associa um nmero n a um arquivo.Terminando este comando com &, o arquivo criado(acrescentado se j existir)

exemplo: abre #1 "c:\winvox\treino\china.txt" abre #1 "novo.txt" &Se o modificador MUDO for especificado, o comando no causar oencerramento do script caso ocorra um erro na abertura ou criao doarquivo. Desta forma, com o comando checa (visto a seguir), o programadortem a oportunidade de verificar se houve ou no erro na operao.Acompanhe o exemplo:

seja arq "arquivo.txt"abre mudo #1 arqcheca sse s 0 escreve "No consegui abrir o arquivo " arq

b) fecha #n

Libera o sistema Windows do controle do arquivo previamente aberto.O arquivo pode ser tambm uma conexo de Internet, como veremosmais adiante.

exemplo: fecha #1

c) l #n [variavel]

L uma linha completa do arquivo, se ela existir.Deve-se sempre verificar se essa operao foi bem sucedida (por exemplo,se no chegou ao fim do arquivo) usando depois o comando checa.

exemplo l #1 x checa s se s 0 desvia @houveErroOuAcabouArquivo

d) checa [variavel]

Verifica o resultado da ltima operao l ou escreve.A varivel selecionada recebe um cdigo para indicar o que houve. 0: no houve problemas 0: indica um erro ou fim de arquivo

exemplo: l #1 x checa s se s 0 escreve "Problemas no arquivo"

e) escreve #n ["valor" ou variavel]

Escreve uma linha no arquivo. Terminado por & no pula linha.

exemplo: escreve #1 "Antonio " & escreve #1 "Borges"

f) remove ["nomeArquivo" ou variavel]

Remove um arquivo. Se este comando for terminado por &e houver um problema na remoo (por exemplo, se o arquivono existir ou estiver protegido contra escrita, no acusa erro.

exemplo: remove "x.txt"

g) renomeia ["nomeArquivo" ou variavel] ["novoNome" ou variavel]

Troca o nome de um arquivo por outroSe este comando for terminado por &, no acusa erro de execuose no puder renomear o arquivo.

exemplos: renomeia "a.txt" "novo.txt" seja c "c.txt" seja d "d.txt" renomeia c d

h) replica ["nomeArquivo" ou variavel] ["copiaNome" ou variavel]

Cria uma cpia do primeiro arquivo, armazenada no segundo arquivo.Se o segundo arquivo j existir ele ser removido.Se este comando for terminado por &, no acusa erro de execuose no puder criar o arquivo.

importante:Deve-se tomar o cuidado de no usar para o arquivo novo oo mesmo nome do antigo. Este ser destrudo antes da cpia.

exemplos: replica "a.txt" "novo.txt" seja c "c.txt" seja d "d.txt" replica c d

6.5) PROCESSAMENTO DE VARIVEIS E CLCULOS BSICOS

a) seja [variavelDestino] = {funcaoOpcional} [valor ou variavel]

Atribui um valor a uma varivel. O sinal de igual usado por legibilidadee pode ser omitido, se desejado.

Exemplos:

seja a 1seja a = 1seja n "Antonio"

Pode-se opcionalmente usar neste comando uma das seguintes funes,que atuam como modificadores do valor ou varivel

TAMANHO indica que ao invs da varivel (ou valor) deve usar o nmero de letras dela MAIUSC indica que antes de realizar a operao deve trocar o valor ou varivel para maisculas TRIM indica que sero removidos todos os espaos em branco ao incio e fim do valor ou varivel POS [subcadeia] calcula a posio de uma subcadeia na varivel RAND [n] retorna um valor inteiro aleatrio entre 0 e n-1 (inclusive) obs: este comando est geralmente associado ao uso do comando RANDOMIZA

Outras operaes vlidas so: DATA obtem a data no formato DD/MM/AAAA HORA obtm a hora no formato HH:MM:SS DIA obtm o nome do dia (segunda, tera, etc...) TEMPO calcula o tempo em centsimos de segundos desde que o programa comeou.exemplo:seja a "Antonio"seja t TAMANHO aescreve tseja a MAIUSC aseja a TRIM " 123 "

Ser escrito 7depois ANTONIO em maisculasdepois 123 sem espaos antes nem depois

seja a "Antonio"seja p POS "nio" aescreve p

Ser escrito 5

seja d DATAseja s DIAseja h HORAescreve d &escreve " " &escreve s &escreve " " &escreve h

Ser escrita data, o dia da semana e a hora.

b) soma [variavelDest] [valor ou variavel]

A varivel destino deve conter um valor inteiro e este valor incrementado do valor ou variavel dado. Exemplo:

seja r 5soma r 2escreve r

Ser escrito o valor 7.

O valor que somado pode eventualmente ser negativo, como no exemplo a seguir:

seja r 10seja s -2soma r sescreve r

O valor final da varivel r ser 8, que ser escrito na tela.

Na soma (e tambm na subtrao), eventuais prefixos alfabticos davarivel so mantidos, como no exemplo:

seja r "Arquivo001"soma r 1escreve r

o valor final da varivel r ser "Arquivo002".

Esta forma de somar nomes muito til quando se realiza processamentode vrios arquivos, que frequentemente so numerados e possuem prefixos,por exemplo arq1, arq2, arq3.

c) subtrai [variavelDest] [valor ou variavel]

A varivel destino tem diminudo o valor dado.

exemplo:seja r 5subtrai r 2escreve r

ser escrito 3 como resposta.

d) multiplica [variavelDest] [valor ou variavel]

A varivel destino multiplicada pelo valor ou varivel dado.

exemplo:seja r 5multiplica r 2escreve r

ser escrito 10 como resposta.

e) divide [variavelDest] [valor ou variavel]

A varivel destino dividida pelo valor ou varivel dado, sendo desprezadoo resto.

exemplo:seja r 9divide r 2escreve r

ser escrito 4 como resposta.

f) concatena [variavelDest] [valor ou variavel]

Adiciona direita da varivel destino algumas outras letras.

exemplo:seja a "Anto"concatena a "nio"seja n 2concatena a nseja b " Borges"concatena a bescreve a

Ser escrito Antonio2 Borges.

A partir da verso 6.0 a concatenao pode ser escrita usandouma forma de expresso usando o smbolo +. Ento o exemploanterior poderia ser escrito como

seja a = "Anto" + "nio" + 2 + " Borges"escreve a

ou mesmo de forma ainda mais compacta

escreve "Anto" + "nio" + 2 + " Borges"

g) copia [variavelDest] [variavel] [numcaracinicio] [numcaracfim]

Armazena na varivel destino uma subcadeia de uma outra varivel

exemplo:seja a "bananada"copia x a 3 6escreve x

Ser escrito nana.

Na verso 6.0, o mesmo efeito pode ser conseguido com a seguinteexpresso:

seja a "bananada"seja x a[3..6]escreve x

h) transfere [DE, PARA] [variavel]

Move o contedo textual de uma linha da rea de transferncia DEou PARA uma varivel

Exemplos:seja a "Ncleo de Computao Eletrnica"transfere de a

No exemplo acima, o texto NCE ser colocado na rea de transferncia do Windows, podendo, posteriormente ser colado em algum outro utilitrio.

transfere para aescreve a

No exemplo acima ser escrito na tela (e tambm sintetizado)o contedo da rea de transferncia.

i) substitui [variavel] [valor antigo] [valor novo]

Troca todas as ocorrncias de uma cadeia por outra numa varivel

exemplo:seja a "Eu gosto de comer kkk"seja v "banana"substitui a "kkk" vescreve a

Ser escrito: Eu gosto de comer banana.

j) randomiza

Faz com que o valor retornado no comando seja ... RAND variea cada execuo deste script (se este comando no for usadoa sequncia de nmeros pseudo-aleatrios ser sempre a mesma).

exemplo:randomizaseja r rand 10escreve rseja r rand 10escreve rseja r rand 10escreve r

Sero escritos trs nmeros aleatrios entre 0 e 9.

6.6) OPERAES ARITMTICAS

Em praticamente todas as situaes em que se pode utilizar umvalor ou a leitura de uma varivel pode-se fazer uso do que conhecemoscomo expresses aritmticas. Um exemplo simples:

seja a b+cescreve a-1

Neste caso a varivel a ser alterada para conter a soma da varivel b com a varivel c. Na segunda linha, ser escrito o valor da varivel amenos um.

Nota para usurios de verses antigas:

1. Nas verses do scriptvox anteriores a 6.0, era necessrio colocarparnteses em torno das expresses. Isso foi tornado desnecessrioa partir desta verso.

2. No scriptvox superior a 6.0, possvel omitir o comando seja e usar osinal de atribuio, que consiste no caractere dois pontos seguido do sinal deigual, para criar uma expresso mais legvel para pessoas queesto acostumadas com outras linguagens de programao.

a := b + c

Sobre valores inteiros so permitidas as operaes aritmticas usuais(soma, subtrao, multiplicao, diviso, resto e potenciao), que so representadas pelos smbolos +, -, *, /, % e ^.

Estes smbolos denominam-se OPERADORES aritmticos.

Exemplo:

X := 3Y := 4escreve X * (Y + 2) ^ 2

A precedncia a usual da matemtica: o operador de potenciao (^) o mais forte, seguido dos operadores multiplicativos (*, / e %), seguidosdos operadores aditivos (+ e -). Parnteses causam uma incremento deprecedncia subexpresso compreendida entre eles.

Portanto, no exemplo anterior, a subexpresso

Y + 2

ser a primeira a ser avaliada, produzindo o valor 6 como resultado, jque Y vale 4. Em seguida, o operador ^ mais forte do que *, o queacarreta a avaliao de

(Y + 2) ^ 2

produzindo o valor 6 ^ 2 = 36.

Por fim, o valor de X (que 3) ser multiplicado por 36, produzindo 108,que ser exibido pelo comando escreve.

Observe que o valor final seria totalmente diferente se a expresso fosse

escreve X * Y + 2 ^ 2

Neste caso, seria impresso o valor 16, resultante da soma de X * Ycom 2 ^ 2.

Os operadores + e - podem ainda funcionar como operadores UNRIOS,antepostos a subexpresses. O significado o mesmo consagrado pelamatemtica, por exemplo:

a := -1

Entretanto no recomendado o uso de dois operadores em sequncia, por exemplo

a := b + -1

Neste caso, devemos utilizar parnteses, para melhorar a legibilidade:

a := b + (-1)

6.7) TESTES DE VALORES: EXECUO CONDICIONAL

a) se [NO] {expresso1} comparador {expresso2} comando

Este comando permite a execuo condicional de comando qualquer,baseado numa comparao entre duas expresses.

exemplo:escreve "Qual sua opo?"l MAIUSC nse n = "T" desvia @testaTecladose n = "E" desvia @editarTextose n = "L" desvia @lerTexto

A comparao pode ser feita usando os seguintes comparadores:

= igual (considerando diferentes maisculas de minsculas) diferente< menor> maior= maior ou igual

=* comea por*= termina por*=* contm

exemplo:escreve "Qual o seu nome completo"l nse n *= "Borges" escreve "Voc parente do Antonio Borges?"

Nota aos usurios antigos: o operador == foi descontinuado.Se voc quer testar a igualdade considerando maisculas como minsculas,use a funo MAIUSC na expresso de comparao, da seguinte maneira:

se MAIUSC(nome) = "JORGE" escreve "Seu nome Jorge"

Desta maneira, o contedo da varivel nome convertido para maisculasser comparado cadeia "JORGE", que contm apenas letras maisculas.

tambm possvel especificar MAIUSC durante a leitura de um dado,como j foi mencionado na explicao do comando l. Exemplo:

l MAIUSC apelidose apelido = "ZEZ" escreve "Seu nome deve ser Jos"

b) forma estendida do comando se

se [NO] {expresso1} comparador {expresso2}... (lista de aes a serem executadas)fim se

Frequentemente queremos realizar mais de um comando quandorealizamos um comando "se". Para isso, colocamos a lista decomandos desejados embaixo do comando se, e no ao lado. Paraindicar o fim da lista de comandos usamos as palavras fim se.

exemplo:

se n = "Antonio" escreve " um cara legal" escreve "Na verdade, um cara muito legal"fim se

Nas verses anteriores do Scriptvox, no era possvel "aninhar"comandos se uns dentro dos outros. A partir da verso 6.0, istoagora possvel. Acompanhe o exemplo:

escreve "Entre com o seu primeiro nome: " &l nomese nome = "Albert"escreve "Entre com o seu sobrenome: " &l sobrenomese sobrenome = "Einstein"escreve "Nossa, voc um gnio"fim sefim se

c) segunda forma estendida do comando se

se [NO] {expresso1} comparador {expresso2}seno (indica o incio das aes alternativas)fim se (marca o final)

Esta uma forma alternativa de realizar testes, em que possvel especificar no apenas os comandos a executar casoa condio testada seja verdadeira, mas tambm outras aesque sero executadas na situao contrria.

exemplo:

se i < 10 escreve " uma criana" escreve "Tem que estudar"seno escreve "No uma criana" escreve "Mas tambm tem que estudar"fim se

c) Formas encadeadas de comandos se/seno.

vlido realizar sequncias de testes, se/seno, como a seguir

exemplo:

se i < 12 escreve " uma criana" escreve "Tem que estudar"senose i < 19 escreve " um jovem" escreve "Tem que estudar especialmente"seno escreve " um adulto" escreve "Alm de estudar ainda tem que ensinar"fim se

6.8) REPETIES

a) enquanto [NO] {expresso1} comparador {expresso2} ... fim enquanto

Este comando permite a execuo repetida de uma lista de comandos.Esta lista terminada pelo comando fim enquanto. A execuo ocorrerepetidas vezes at que a comparao realizada seja verdade.

exemplo:escreve "Tecle palavras, a ltima ser fim"seja p "x"enquanto a "fim" l p seja l tamanho p escreve "possui " & escreve l & escreve " letras"fim enquanto

Ser escrito o nmero de letras de diversas palavras lidas (a ltima fim)

A partir da verso 6.0 do Scriptvox, possvel aninhar comandos enquanto.

Importante: cuidado para no usar o comando enquanto quando a condionunca tornar-se verdadeira. Por exemplo:

seja a 2enquanto a 1soma a 1fim enquanto

O exemplo acima fica em eterno loop e no h como interromp-lo.

b) repete variavel expresso ... fim repete

Este comando usado para repetir um trecho um nmero determinado de vezes,dado pelo valor da expresso. O trecho a ser executado delimitado pelo comando fim repete. A varivel especificada recebe a contagem do nmero de vezes.

exemplo: escreve "Eu digo e repito:" repete n 4 escreve n & escreve " - Scriptvox mais poderoso do que parece" fim repete

ser escritoEu digo e repito:1 - Scriptvox mais poderoso do que parece2 - Scriptvox mais poderoso do que parece3 - Scriptvox mais poderoso do que parece4 - Scriptvox mais poderoso do que parece

6.9) OPERAES COM DIRETRIOS

a) busca variavel [DIR] [["nomeArqs" ou varivel] ou PRXIMO]

Esse comando permite saber se um arquivo (ou mais que um) existem, dadauma "mscara de busca" (algo semelhante ao comando DIR do DOS). Aoespecificar a palavra DIR no comando efetuada a busca de diretrio eno de arquivo. O nome do arquivo jogado na varivel, ou este deixado em branco. No caso do uso de mscaras, aps a primeira busca, deve usar ocomando com a palavra PRXIMO ao invs do nome da varivel. Se omitidonome ou PRXIMO devolve diretrio atual

exemplo:*Testa se um arquivo cujo nome dado existe.escreve "Informe o nome do arquivo"l abusca x ase x = "" escreve "Arquivo no existe"seno escreve "Arquivo existe"fim se

*Apaga os arquivos temporrios do diretrio atualescreve "Apagando os arquivos temporrios"busca a "*.TMP"enquanto a "" escreve a remove a & busca a PROXIMOfim enquanto

*Lista os nomes dos subdiretrios do diretrio atualbusca a DIR "*.*"enquanto a "" escreve a remove a & busca a PROXIMOfim enquanto

b) dir {CRIA, REMOVE} ["nomeDiretorio" ou variavel] {terminado por & no d erro ou dir {TROCA} ["nomeDiretorio" ou variavel] [nome novo} {terminado por & no d erro

Esse comando cria, remove ou troca para um diretrio

exemplo:dir CRIA "\winvox\treino\novodir"

6.10) ESTRUTURAS DE INFORMAO

A linguagem ScriptVox a partir da verso 6.0 teve enorme melhoriana manipulao das informaes na memria, com a introduo daslistas e dicionrios, que permitem grande versatilidade na organizaoe busca de informaes.

Nas verses anteriores do interpretador, s havia o tipo cadeia.Mesmo dados numricos eram tratados internamente como cadeias, o queimplicava sua converso sempre que uma operao aritmtica precisava serefetuada.

A partir da verso 6.0, as variveis em ScriptVox podem ser de 4 tipos:- INTEIRO- CADEIA- LISTA- DICIONRIO

6.10.1) O TIPO INTEIRO

Variveis do tipo INTEIRO so capazes de armazenar nmeros inteirosentre -2147483648 e 2147483647 (ou seja -2^31 a 2^31 - 1), o que suficiente para a grande maioria das aplicaes.

6.10.2) O TIPO CADEIA

Variveis do tipo CADEIA so capazes de armazenar sequncias decaracteres de tamanho praticamente infinito. Nas verses anteriores doScriptvox, todas as variveis eram do tipo CADEIA.

Uma CADEIA especificada atravs da meno dos caracteres que a constituementre ASPAS.

Assim:

W := ""X := "Antonio Borges"

Quando dentro de uma cadeia desejamos introduzir aspas, escrevemosduas aspas seguidas, por exemplo.

Z := "A palavra ""string"" em ingls tambm significa corda de violo"escreve Z

produzir a seguinte sada:

A palavra "string" em ingls tambm significa corda de violo

6.10.3) O TIPO LISTA

Uma LISTA a traduo computacional do conceito matemtico de sequncia finita.

Em Scriptvox, as listas so sequncias de elementos, numerados implicitamentea partir de 0. Indica-se uma lista atravs de colchetes.

ex:

compras := ["banana", "pera", "laranja"]quantidades := [20, 30, 17]

Um certo elemento da lista indicado pelo seu ndice, entre colchetes.Por exemplo:

escreve compras[2]escreve quantidades[0]escreve compras[9]subtrai quantidades[0] 1 escreve quantidades[0]

ser escrito:

laranja20indefinido19

Com frequncia uma lista pode ter muitos elementos que esto em sequncia.Neste caso indica-se abreviadamente estas sequencias com o smbolo .. (doispontos em seguida, entre os valores inferior e superior. por exemplo

idades := [ 30 .. 35 ]

a mesma coisa que dizer

idades := [30, 31, 32, 33, 34, 35]

Pode-se inserir um novo elemento em qualquer posio da lista, at uma aps a posio final. Assim

X := ["a", "b", "c", "d", "e"]insere (X, 1, "surpresa")escreve X

Ser escrito:[a, surpresa, b, c, d, e]

Podemos retirar um elemento de uma lista, especificando sua posio, atravs dafuno retira:

X := ["a", "b", "c", "d", "e"]Y := retira (X, 2)escreve "A lista ficou assim: " Xescreve "Foi retirado o elemento: " Y

H algumas regrinhas bsicas para usar listas que temos que seguir:

a) Os elementos internos das listas podem aparecer em qualquer lugar de uma expresso, como se fossem variveis.

Por exemplo:quantasBananas := quantidades[0] - quantoComprou

b) uma lista no tem elementos faltando no meio

Portanto, so permitidas apenas atribuies que substituem elementos j existentes da lista. invalido, por exemplo, referir-se a compras[10] pois s h 3 elementos nesta lista.

c) permitido criar um elemento no fim da lista, sem usar o comando insere

Por exemplo:compras[] := "abacaxi"

e assim a lista ficar sendo ["banana", "pera", "laranja", "abacaxi"]

d) possvel saber quantos elementos uma lista atravs do operador || (chamado cardinalidade). A cardinalidade de uma lista vazia zero.

Por exemplo:

quantosItens := |compras|

Neste caso quantosItens vale 3.

d) Uma lista pode conter misturados itens de qualquer tipo (INTEIRO, CADEIA, LISTA ou DICIONRIO). A lista vazia indicada por [].

Exemplos:

Chocolate := [3, "Nescau", 0, 200, "calorias" ]

O valor da varivel Chololate uma lista de 5 elementos: 3, "Nescau", 0, 200 e "calorias".

Cada um deles pode ser referenciado usando-se um NDICE. Assim, Chocolate[0] refere-se ao elemento 3 Chocolate[1] refere-se ao elemento "Nescau" Chocolate[2] refere-se ao elemento 0 Chocolate[3] refere-se ao elemento 200 Chocolate[4] refere-se ao elemento "calorias"

Funcionrio := ["programador", ["Antonio", "Luiz", "Pedro"], 1000]

Neste exemplo Funcionrio[1] uma outra lista ["Antonio", "Luiz", "Pedro"].

Pode-se acessar o nome "Antonio" fazendo

nome := Funcionrio[1][0]

ou seja, pega-se o ndice 1 (esta lista de nomes interna) e toma-se o elemento inicial (ndice 0).

6.10.4) TIPO DICIONRIO

Imaginemos o seguinte exemplo: desejamos guardar na memria nomes depessoas e, para cada pessoa, a sua idade. Depois, gostaramos de pesquisar aidade de uma pessoa, informando seu nome.

Um dicionrio uma estrutura de dados que permite associar valores a chaves depesquisa. Em nosso exemplo, as chaves de pesquisa so os nomes das pessoas(ou seja, cadeias) e os valores associados so as idades (ou seja, inteiros).

Da mesma forma que as listas, os dicionrios so guardados em variveis doscript. No nosso exemplo, vamos inicializar o dicionrio com as seguintesassociaes: Agostinho tem 54 anos, Wanda tem 31, Diva tem 76 e Orlando tem 80.Acompanhe o exemplo:

idade := { "Agostinho" : 54, "Wanda" : 31, "Diva" : 76, "Orlando" : 80 }

Com esta atribuio, criamos um dicionrio que ser armazenado na varivel idade.Este dicionrio possui 4 associaes. Observe que cada chave de pesquisa seguida do caractere dois pontos e, depois dele, vem o valor associado chave.

Agora, se desejamos saber a idade de Diva, usamos colchetes para indicar quea chave a ser usada na pesquisa a cadeia "Diva":

escreve idade["Diva"]

e ser escrito 76. Observe que a sintaxe semelhante das listas, pois usamosos colche

Se quisermos acrescentar uma associao ao dicionrio, por exemplo, dizendo queAntnio tem 30 anos, escreveramos assim:

idade["Antnio"] := 30

Consideremos, agora, a seguinte situao: Orlando faz aniversrio. Isto quer dizerque sua idade deve ser aumentada de um ano. O comando correspondente em Scriptvox :

soma idade["Orlando"] 1

ou, se preferir:

idade["Orlando"] := idade["Orlando"] + 1

Se usarmos o comando

escreve idade["Orlando"]

o Scriptvox escrever 81 na tela.

Imagine, agora, que desejamos perguntar ao usurio o nome de uma pessoa e a suaidade, guardando estas informaes no dicionrio. simples:

escreve "Entre com o nome da pessoa: " &l nomeescreve "Entre com a idade de " nome ": " &l INTEIRO anosidade[nome] := anos

Observe que, na leitura da idade, usamos o modificador INTEIRO, cujo efeito fazer com que a informao lida seja convertida para o tipo INTEIRO antes de serguardada na varivel anos.

Muitas vezes, em um dicionrio, precisamos testar se uma chave de pesquisa possuiuma associao. Podemos fazer isto com o comando SE, comparando o valor associado chave com a constante indefinido. Acompanhe o exemplo completo:

idade := { "Agostinho" : 54, "Wanda" : 31, "Diva" : 76, "Orlando" : 80 }escreve "Nome a pesquisar: " &l nomese idade[nome] = indefinidoescreve "O nome " nome " no consta do dicionrio. Quer acrescentar?"l MAIUSC resposta &se resposta = "S" escreve "Fornea a idade de " nome ": " &l INTEIRO anosidade[nome] := anosescreve "Agora sim, a idade de " nome " " idade[nome] " anos"fim sesenoescreve "A idade de " nome " " idade[nome] " anos"fim setermina mudo

Com o teste da quarta linha, perguntamos ao Scriptvox se a chave de pesquisaarmazenada na varivel nome possui alguma associao no dicionrio idade. Se nopossuir, o teste ser verdadeiro e damos ao usurio a possibilidade de acrescentaresta chave ao dicionrio, perguntando a idade da pessoa. Se a chave j existir,simplesmente escrevemos a idade associada a ela.

Se quisermos excluir uma associao, basta usar a funo retira (a mesmausada para listas), mencionando o dicionrio e a chave de pesquisa a ser removida.No exemplo, se quisermos remover Wanda e sua idade, fazemos:

retira (idade, "Wanda")

Uma ltima observao: um dicionrio pode comear vazio e ir recebendo associaesao longo do script. Para inicializar uma varivel com um dicionrio vazio, usea seguinte atribuio:

dic := {}

6.11) OPERAES COM JANELAS

a) espera [tempo] ["nome janela" ou variavel]

Espera, no mximo por um certo tempo em segundos, que uma janela com ttulocomeado por um certo nome receba atividade no Windows (venha paracima das outras).

exemplo:

executa "winword" &espera 10 "Microsoft Word"

b) janela [FECHA, MINIMIZA, MAXIMIZA, NORMAL] ["nome janela" ou variavel]

Fecha, minimiza, maximiza ou traz para o topo das outras uma certajanela.

exemplo:executa "notepad"espera 10janela FECHA "Bloco de Notas"

c) captura [TTULO ou ATIVA, CAMPO, FOCO] [variavel]

Captura para uma varivel ou ttulo da janela ativa, o campo ativoou o elemento que est com o foco do Windows.

exemplo:captura ATIVA xescreve x

escrever SCRIPTVOX, o nome do programa atual.

6.12) AES DE TECLADO E MOUSE

As aes a seguir so enviadas diretamente para a janela ativa atual dowindows, permitindo o seu uso em "controle remoto". Esses comandos,portanto so fundamentais para a criao de interfaces adaptativas paraprogramas do Windows.

a) digita "frase"

Envia uma sequncia de teclagens para o programa ativo, e depois Enter.Se terminado por &, o Enter no enviado.

exemplo:*digita um texto automticamente no EDIVOXexecuta "\winvox\edivox" &espera 2digita "x.txt"espera 1digita "Este um teste de digitao automtica"digita "Vamos verificar " &digita "se funciona"espera 2escreve "Ateno, EDIVOX ficou aberto"

Nota: no esquecer do & depois do comando de executar, caso contrrio o programascriptvox ser bloqueado at que aquele termine.

b) aciona [tecla virtual]

Envia uma tecla virtual para o programa ativo.So as seguintes as teclas virtuais mais importantes:

UP, DOWN, LEFT, RIGHTESCAPE ou ESCENTER e RETURNTABF1 at F12INS, DEL ou DELETEHOME, ENDPAGEUP, PAGEDNPRIOR, NEXT -> sinonimos de pageup e pagednSNAPSHOT -> printScreen

As teclas a seguir so usadas em conjunto com outras, por exemploALT+A, CONTROL+F1

CTRL+SHIFT+ALT+

Exemplo: chamar um edivox para editar o arquivo x.txt,remover a primeira linha do texto, salvar e sair

executa "\winvox\edivox" &espera 2digita "x.txt"espera 1aciona "CTRL+Y"aciona "F2"espera 1aciona "ESC"aciona "S"aciona "S"

c) clica {DUPLO, NULO} [x,y ou TELA x,y]

Executa um clique ou clique duplo de mouse numa posio.A palavra NULO indica uma movimentao pura, sem clique.O uso da palavra TELA indica que uma coordenada absoluta de tela.Se ela for omitida a coordenada calculada em funo da janelaatualmente ativa no Windows.

A coordenada superior esquerda da tela (0, 0).

exemplo:clica TELA 10, 590espera 1aciona "DOWN"aciona "DOWN"aciona "ENTER"termina

O exemplo acima abre o menu iniciar e aciona a segunda opo de baixo para cima(nota: tela configurada em 800 x 600).

d) le [MOUSE ou RATO] [x,y ou TELA x,y]

Obtm a posio do mouse, em funo das coordenadas da tela, ou da janela ativa.A coordenada superior esquerda da tela (0, 0).

6.13) OPERAES COM INTERNET

O scriptvox capaz de realizar comunicaes (um tanto limitadas)atravs de TCP/IP. Apesar desses limites, o nmero de aplicaes que possvel construir brutalmente grande, pois a maior parte dosprotocolos atuais usa a forma textual, muito adequada para processamentocom este programa. A nica dificuldade provvel conhecer as mensagens vlidas nosdilogos executados pelos diferentes servidores (o que se chama deprotocolo), e mandar as mensagens segundo esse padro.

a) internet [INICIA, TERMINA]

Este comando obrigatrio para estabelecer ou terminar a comunicaovia Internet.

exemplo:internet INICIAinternet TERMINA

b) conecta [MUDO] #n ["valor" ou variavel] ["porta" ou variavel]

Conecta uma porta remota, associando-a a um arquivo.Posteriormente, pode-se tratar a conexo exatamente como sefosse um arquivo comum (no esquecer de fechar o arquivo).

exemplo: pergunta a hora a um servidor remoto que horas so(porta 13 TCP/IP)internet INICIAconecta #1 "intervox.nce.ufrj.br" 13le #1 hescreve hfecha #1internet TERMINA

exemplo: pergunta a um servidor POP3 quantas cartas existem para ser lidas(nota: a maioria das respostas do servidor ignorada)

internet INICIAconecta #1 "caec.nce.ufrj.br" 110l #1 rescreve #1 "USER upgrade"l #1 rescreve #1 "PASS dosvoxrnp"l #1 rescreve #1 "STAT"l #1 r escreve "--- resposta sobre contedo de cartas do servidor ---" escreve rescreve #1 "QUIT"l #1 rinternet TERMINA

O modificador MUDO, se mencionado no comando conecta, faz com que oscript no aborte caso haja erros de conexo. Neste caso, o comando checadeve ser usado para saber se houve erro. O exemplo anterior ficaria assim:

internet INICIA

@tentadenovo:conecta MUDO #1 "caec.nce.ufrj.br" 110checa errose erro 0 escreve "Erro de conexo. Vou tentar de novo daqui a 10 segundos."espera 10desvia @tentadenovofim sel #1 rescreve #1 "USER upgrade"l #1 rescreve #1 "PASS dosvoxrnp"l #1 rescreve #1 "STAT"l #1 r escreve "--- resposta sobre contedo de cartas do servidor ---" escreve rescreve #1 "QUIT"l #1 rinternet TERMINA

c) serve #n ["porta" ou variavel]

Este comando permite a criao de um servidor TCP/IP.Uma vez que algum acesse esta porta, o programa abrirautomaticamente o arquivo #n no qual se pode escrever eler, estabelecendo a conversa com o parceiro.

exemplo: envia uma mensagem para quem acessar a porta 2000internet INICIAserve #1 2000escreve #1 "Oi, um prazer falar com voc"l #1 xescreve "Parceiro falou o seguinte"escreve xfecha #1internet TERMINA

d) observa #n [variavel] 0: porta TCP/IP no requer ateno 1: porta requer leitura

Este comando serve para permitir que um programa no fique preso auma recepo de dados (comando l). Quando o programa quiser saber sechegou alguma mensagem, pode observar e verificar. quando ocorre umadesconexo remota, existe a indicao que a porta requer leitura. Assim use o comando checa para verificar se houve um fechamento do arquivo.

exemplo:internet INICIAconecta #1 "caec.nce.ufrj.br" 110

repete v 10 observa #1 s se s 0 desvia @chegoualgo escreve "esperando mais um segundo" espera 1fim repete

escreve "parceiro ficou mudo, vou-me desconectar"desvia @fim

@chegoualgo l #1 x escreve "Parceiro falou o seguinte" escreve x

@fim fecha #1 internet TERMINA

d) ip [LOCAL, REMOTO] #n [variavel]

O comando IP serve para obter o nmero IP da conexo, tanto do ladolocal quanto remoto. A conexo precisa ter sido aberta anteriormentecom um comando conecta ou serve.

exemplo:internet iniciaconecta #1 "www.ig.com.br" 80ip local #1 lip remoto #1 rescreve lescreve rfecha #1internet termina

6.14) MSAA (MICROSOFT ACTIVE ACCESSIBILITY)

O Windows fornece informaes sobre o que exibido na tela,por meio de um sistema chamado MSAA.Para acessar essas informaes, voc pode:.perguntar qual o objeto que est na posio x,y (Captura)O comando para isso MSAA captura x y

. pedir ao windows que fique monitorando os eventos como cliquesde mouse para depois indicar o elemento que foi atingido. Os comandospara iniciar e finalizar esta monitorao so:MSAA monitoraMSAA fimMSAA CHECA s

Este ltimo comando (CHECA) verifica se houve algum evento pode-se usarquando a varivel = 0 no ocorreu nenhum evento na tela do Windows.

Nota: obrigatrio executar este comando CHECA de tempos em tempos paraque a monitorao da tela seja copiada para os buffers internos do scriptvox.

Pode por meio do Scriptvox obter o nome do elemento, o seu cdigo, tipo,estado, valor e posio.

Os comandos para isso so:MSAA nome [variavel]MSAA codigo [variavel]MSAA tipo [variavel]MSAA estado [variavel]MSAA valor [variavel]MSAA area [variavel x] [variavel y] [variavel larg] [variavel alt]

Exemplos:1) o programa a seguir l continuamente o nome dos elementos da telasobre o qual o mouse est-se posicionando.

@loop l mouse tela x y MSAA captura x y MSAA nome n MSAA valor v

se a n escreve n seja a n fim se

observa teclado t se t = 0 desvia @looptermina

MSAA monitora@loop MSAA checa c se c = 1 MSAA nome n se a n escreve n seja a n fim se

observa teclado t se t = 0 desvia @loopMSAA fimtermina

6.15) MENUS

Para interagir com o computador, frequentemente faz-se uso deum menu de opes controlado com as setas. Os menus so criadosna tela fornecendo as suas opes. O comando menu executapode ser chamado vrias vezes para realizar diversas operaessobre o mesmo menu. Assim quando alguma letra pressionada, o comandomenu executa retorna os valores abaixo:

Os comandos so:menu CRIA xmin ymin xmax ymaxmenu ADICIONA ["valor" ou variavel]menu EXECUTA [variavel] [variavel] [varivel] { so retornados respectivamente: nmero do item, letra teclada e texto do item }menu TERMINA

Exemplo:fundo 0tela limpafundo 6menu CRIA 1 1 30 3menu ADICIONA "primeira opo"menu ADICIONA "segunda opo"menu ADICIONA "terceira opo"menu EXECUTA n l tfundo 0menu TERMINAescreve "Item escolhido " nescreve "Letra teclada " lescreve "Texto " x

Os cdigos de tecla retornados pelo comando MENU EXECUTAso os mesmos que o comando l &.