Você está na página 1de 35

1

INTERPRETADOR DE SCRIPTS - SCRIPTVOX V. 6.0 MANUAL DO PROGRAMADOR SUMRIO 1) DESCRIO 2) FUNCIONAMENTO GERAL 3) ESTRUTURA DO PROGRAMA 4) UM PRIMEIRO EXEMPLO 5) DESVIOS 6) COMANDOS 6.1) INTERAO COM O USURIO 6.2) MULTIMDIA 6.3) EXECUO EXTERNA E DESVIOS 6.4) OPERAES COM ARQUIVO 6.5) PROCESSAMENTO DE VARIVEIS E CLCULOS BSICOS 6.6) OPERAES ARITMTICAS 6.7) TESTES DE VALORES: EXECUO CONDICIONAL 6.8) REPETIES 6.9) OPERAES COM DIRETRIOS 6.10) ESTRUTURAS DE INFORMAO 6.10.1) O TIPO INTEIRO 6.10.2) O TIPO CADEIA 6.10.3) O TIPO LISTA 6.10.4) O TIPO DICIONRIO 6.11) OPERAES COM JANELAS 6.12) AES DE TECLADO E MOUSE 6.13) OPERAES COM INTERNET 6.14) MSAA (MICROSOFT ACTIVE ACCESSIBILITY) 6.15) MENUS 7) CDIGOS RETORNADOS PELAS TECLAS 1) DESCRIO O programa Scriptvox um interpretador de linguagem de comandos parte integrante do Sistema Dosvox, que permite um controle de execuo de sequncias de aes controladas por programa. Nota para programadores: Poderamos pensar que um equivalente dos antigos comandos .BAT do MS DOS, mas com um poder tremendamente aumentado, e adequado ao processamento no Windows. Os comandos da linguagem so baseados na lngua portuguesa; assim, o texto do programa muito legvel para quem no tem conhecimento de outras lnguas. As aes que podem ser executadas foram talhadas para possibilitar a 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 capacidade de simular comandos de teclado e mouse, imitando as aes de um usurio humano. A linguagem foi criada para ser absolutamente simples de ser programada, quando o problema simples. Desta forma, acreditamos que se crie um nmero grande de "programadores curiosos", gente que no teria a pacincia para aprender uma linguagem convencional

2
de computao ao ponto de criar alguma coisa til. Um programa que em Pascal poderia consumir 500 linhas ou mais pode ser escrito provavelmente em menos de 100 em Scriptvox. A linguagem pode ser pensada tambm como "a primeira linguagem" do aprendiz de programao, possibilitando que, com um conhecimento muito rudimentar de programao, um estudante crie programas de interface que atuem sobre outros programas, possibilitando resultados muito interessantes e criativos. importante ressaltar que um script tem escopo de funcionamento com lgica muito mais simples do que um programa convencional, escrito em Pascal ou outra linguagem qualquer. Assim, a linguagem possui comandos 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, linha aps linha. As nicas excees so os comandos que promovem explicitamente um desvio no fluxo normal de execuo, a saber: desvia, se, chama e retorna. Veremos o funcionamento desses comandos mais adiante. a) iniciando a execuo O usual chamar o scriptvox informando o nome do script, ou atravs do comando P ou A do Dosvox. Quando o scriptVox chamado sem o nome 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 do comando iniciar do Windows, usual anexar o nome do arquivo na linha de comando, por exemplo: scripvox meuscript.pro ou scripvox c:\testes\script01.pro Por padro, os scripts que so informados apenas pelo nome, sem especificar o diretrio em que esto gravados, so buscados no diretrio padro c:\winvox\scripts b. Localizao com a opo de arquivos do Dosvox. Quando o arquivo .PRO que contm o script est localizado no diretrio atual, o mais fcil localiz-lo com a opo de arquivos e executar este arquivo com a opo x

3
Nota sobre a instalao: Deve-se assegurar que o arquivo \windows\dosvox.ini contenha as seguintes linhas [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\scripvox DIRDEFAULT=c:\winvox\scripts Nota: para alterar a pasta padro, deve-se editar o arquivo \windows\dosvox.ini e mudar na seo [SCRIPVOX] a clusula DIRDEFAULT introduzindo ali o nome do diretrio desejado. c) execuo interativa A execuo interativa uma opo interessante: as linhas do script so digitadas pelo teclado e a execuo de cada linha ocorre assim que o usurio termina de digit-la, teclando Enter. Para isso basta omitir o nome do arquivo quando este for perguntado ao incio do scriptvox. Apertando-se simplesmente enter, sem teclar nada 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 com os comandos da linguagem ou para comandar a execuo de aes multimdia. 3) ESTRUTURA DO PROGRAMA a) Formato do programa O programa um texto comum; os comandos podem em letras maisculas ou minsculas, com ou sem ter um nmero arbitrrio de caracteres; linhas Os brancos ao incio da linha so desprezados, de 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 podem ser guardadas. Toda varivel possui um nome, denominado identificador da ser escritos acentos; as linhas podem em branco so ignoradas. possibilitando o uso

4
varivel. 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 maisculas e os acentos, as cedilhas e o til so eliminados. No h limite para o nmero de caracteres em um identificador. As variveis podem conter cadeias de caracteres de at 65000 letras ou nmeros. LONGA $LONGA LON$GA LON_GA so seis identificadores de variveis, DISTINTAS. No feita distino entre letras maisculas e minsculas, nem entre letras acentuadas, cedilhadas ou no. Assim os identificadores seguintes referem-se todos mesma varivel: AO ao Aao acao ACAO 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 programa escreve "Oi amigo, qual seu nome?" l n escreve "Muito prazer, "& escreve n escreve "Realmente no nada difcil programar" A primeira linha comea por asterisco e, portanto, um comentrio, sendo ignorada pelo interpretador; em seguida a frase Oi amigo, qual o seu nome ? mostrada numa janela e sintetizada em voz; a seguir o usurio deve teclar 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 internamente na varivel n, pular de linha (pois este comando escreve no possui uma letra & 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 programa escreve "Oi amigo, qual seu nome?" l nome escreve "Muito prazer, "& escreve nome escreve "Realmente no nada difcil programar" 6) COMANDOS Na descrio simplificada abaixo, o uso de chaves indica que pelo menos um dos itens mencionados entre as chaves obrigatrio e o uso de colchetes significa que os itens mencionados entre colchetes so opcionais. 6.1) INTERAO COM O USURIO a) escreve [MUDO] {"frase" ou expresso} {"frase" ou expresso} ... Escreve um texto, sintetizando simultaneamente. Se a palavra MUDO 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

6
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 para prosseguir. O modificador MAIUSC faz com que o texto digitado seja convertido para maisculas antes de ser armazenado na varivel especificada. O modificador INTEIRO faz com que o texto digitado seja convertido para um nmero inteiro antes de ser armazenado na varivel especificada. Isto s ser possvel se o texto contiver apenas 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 na varivel 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"

7
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: LIMPA MINIMIZADA NORMAL TAMANHO x,y de linhas, respectivamente) Guarda na varivel c o caractere armazenado na posio x,y da tela (x = coordenada horizontal, y = coordenada vertical) GETATTRIB v,x,y Guarda na varivel v o atributo referente ao caractere armazenado na posio x,y da tela (x = coordenada horizontal, y = coordenada vertical) @x,y Posiciona o cursor nas coordenadas x, y (x = coordenada horizontal, y = coordenada vertical) GETCHAR c,x,y 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: Limpa a tela, apagando todos os caracteres Tira a janela da rea visvel Traz a janela para a rea visvel Guarda nas variveis x e y o tamanho da tela (x receber o nmero de colunas e y o nmero

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

Escreve com a cor ou o fundo de letra dados, a partir deste momento. Para desenhar usando uma janela colorida, use o comando fundo seguido 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 @maisUmBip l a & O exemplo acima fica repatidamente clekando at que o usurio aperte uma 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, como CD-ROM, exibio de filmes, sons, animaes, etc... Veja manual de programao do Windows para uma relao completa de comandos 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 paralelo com a execuo do programa, caso contrrio, o script espera que o 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 o programador possa referir-se a ela em outros pontos do seu programa. Um rtulo um identificador iniciado pelo caractere arroba, que pode ser seguido de cifres, sublinhados, letras ou dgitos. As regras para construo de um rtulo so as mesmas para construo de nomes de variveis: 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, em algum ponto do script, desviar o fluxo de execuo para a linha designada pelo rtulo. Isto feito atravs do comando desvia. O trecho a seguir ilustra um desvio escreve "Digite diversas palavras e eu repetirei"

10

@outraPalavra l t escreve t desvia @outraPalavra Observe que o rtulo @outraPalavra marca a linha que antecede o comando l. O comando desvia menciona esse rtulo, fazendo com que o fluxo de execuo desvie para a linha marcada. Este programa no tem fim. Ele ficar eternamente lendo uma informao no teclado, e em seguida repetindo. A nica forma de parar este programa cancelando-o atravs das teclas control-break ou alt-F4, pressionadas simultaneamente. Notas sobre estilo: comum inserir uma linha em branco antes de um rtulo para aumentar a legibilidade do programa. Quando os comandos de desvio provocam uma repetio de um trecho usual que ele seja destacado atravs da insero de 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 em um 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 @termina escreve "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 especificada inibe a mensagem "fim de script" que normalmente falada quando o script se finaliza.

11
exemplo: escreve "oi" termina escreve "tchau" No exemplo acima, tchau no ser falado, pois o comando termina ser 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 o comando retorna para voltar a execuo uma linha abaixo desta do comando chama. o conceito convencional de chamada de subrotina. exemplo: escreve "Incio do programa, chamando rotina de entrada" chama @entrada escreve "Agora, estou cansado chamando rotina de fim" chama @fim termina @entrada escreve "bom dia" retorna @fim escreve "tchau" escreve "vou dormir" retorna Uma rotina pode chamar outra rotina, ou seja, possvel executar outros comandos chama, antes de um comando retorna, desde que depois se executem diversos comandos retorna, um para cada chama. Com o comando chama no possvel passar parmetros, como em muitas linguagens de programao. f) retorna A execuo deste comando provoca o desvio para depois do ltimo comando chama executado. g) cmd [variavel] Este comando permite que uma varivel seja montada (possivelmente atravs de operaes de concatenao) e depois interpretada como se fosse um comando. exemplo: seja c "escreve ""Antonio""" escreve "Vou executar o seguinte comando" escreve c cmd c Nota: no exemplo acima mostrado tambm como se colocam aspas dentro de aspas: duas aspas para cada aspa a introduzir.

12
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 1 soma i 2 escreve i debug escreve "Agora vou parar de mostrar" seja i 3 soma i 2 escreve 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 o encerramento do script caso ocorra um erro na abertura ou criao do arquivo. Desta forma, com o comando checa (visto a seguir), o programador tem a oportunidade de verificar se houve ou no erro na operao. Acompanhe o exemplo: seja arq "arquivo.txt" abre mudo #1 arq checa s se 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 veremos mais 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,

13
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 arquivo no 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 outro Se este comando for terminado por &, no acusa erro de execuo se 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 execuo se no puder criar o arquivo. importante: Deve-se tomar o cuidado de no usar para o arquivo novo o

14
o 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. legibilidade e pode ser omitido, se desejado. Exemplos: seja a 1 seja a = 1 seja n "Antonio" Pode-se opcionalmente usar neste comando uma das seguintes funes, que atuam como modificadores do valor ou varivel 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 a escreve t seja a MAIUSC a seja a TRIM " 123 " Ser escrito 7 depois ANTONIO em maisculas depois 123 sem espaos antes nem depois seja a "Antonio" seja p POS "nio" a escreve p TAMANHO O sinal de igual usado por

15

Ser escrito 5 seja d DATA seja s DIA seja h HORA escreve 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 5 soma r 2 escreve r Ser escrito o valor 7. O valor que somado pode eventualmente ser negativo, como no exemplo a seguir: seja r 10 seja s -2 soma r s escreve r O valor final da varivel r ser 8, que ser escrito na tela. Na soma (e tambm na subtrao), eventuais prefixos alfabticos da varivel so mantidos, como no exemplo: seja r "Arquivo001" soma r 1 escreve r o valor final da varivel r ser "Arquivo002". Esta forma de somar nomes muito til quando se realiza processamento de 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 5 subtrai r 2 escreve r

16
ser escrito 3 como resposta. d) multiplica [variavelDest] [valor ou variavel] A varivel destino multiplicada pelo valor ou varivel dado. exemplo: seja r 5 multiplica r 2 escreve r ser escrito 10 como resposta. e) divide [variavelDest] [valor ou variavel] A varivel destino dividida pelo valor ou varivel dado, sendo desprezado o resto. exemplo: seja r 9 divide r 2 escreve 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 2 concatena a n seja b " Borges" concatena a b escreve a Ser escrito Antonio2 Borges. A partir da verso 6.0 a concatenao pode ser escrita usando uma forma de expresso usando o smbolo +. Ento o exemplo anterior 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"

17
copia x a 3 6 escreve x Ser escrito nana. Na verso 6.0, o mesmo efeito pode ser conseguido com a seguinte expresso: 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 DE ou 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 a escreve 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" v escreve a Ser escrito: Eu gosto de comer banana. j) randomiza Faz com que o valor retornado no comando seja ... RAND varie a cada execuo deste script (se este comando no for usado a sequncia de nmeros pseudo-aleatrios ser sempre a mesma). exemplo: randomiza seja r rand 10 escreve r seja r rand 10 escreve r seja r rand 10 escreve r

18
Sero escritos trs nmeros aleatrios entre 0 e 9. 6.6) OPERAES ARITMTICAS Em praticamente todas as situaes em que se pode utilizar um valor ou a leitura de uma varivel pode-se fazer uso do que conhecemos como expresses aritmticas. Um exemplo simples: seja a b+c escreve 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 a menos um. Nota para usurios de verses antigas: 1. Nas verses do scriptvox anteriores a 6.0, era necessrio colocar parnteses em torno das expresses. Isso foi tornado desnecessrio a partir desta verso. 2. No scriptvox superior a 6.0, possvel omitir o comando seja e usar o sinal de atribuio, que consiste no caractere dois pontos seguido do sinal de igual, para criar uma expresso mais legvel para pessoas que esto 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 := 3 Y := 4 escreve X * (Y + 2) ^ 2 A precedncia a usual da matemtica: o operador de potenciao (^) o mais forte, seguido dos operadores multiplicativos (*, / e %), seguidos dos operadores aditivos (+ e -). Parnteses causam uma incremento de precedncia subexpresso compreendida entre eles. Portanto, no exemplo anterior, a subexpresso Y + 2 ser a primeira a ser avaliada, produzindo o valor 6 como resultado, j que Y vale 4. Em seguida, o operador ^ mais forte do que *, o que acarreta a avaliao de (Y + 2) ^ 2 produzindo o valor 6 ^ 2 = 36.

19

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 * Y com 2 ^ 2. Os operadores + e - podem ainda funcionar como operadores UNRIOS, antepostos a subexpresses. O significado o mesmo consagrado pela matemtica, 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 l MAIUSC n se n = "T" desvia se n = "E" desvia se n = "L" desvia opo?" @testaTeclado @editarTexto @lerTexto

A comparao pode ser feita usando os seguintes comparadores: = <> < > <= >= igual (considerando diferentes maisculas de minsculas) diferente menor maior menor ou igual maior ou igual

=* comea por *= termina por *=* contm exemplo: escreve "Qual o seu nome completo" l n se n *= "Borges" escreve "Voc parente do Antonio Borges?"

20

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 maisculas ser 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 apelido se 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 quando realizamos um comando "se". Para isso, colocamos a lista de comandos desejados embaixo do comando se, e no ao lado. Para indicar 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, isto agora possvel. Acompanhe o exemplo: escreve "Entre com o seu primeiro nome: " & l nome se nome = "Albert" escreve "Entre com o seu sobrenome: " & l sobrenome se sobrenome = "Einstein" escreve "Nossa, voc um gnio" fim se fim 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 caso a condio testada seja verdadeira, mas tambm outras aes

21
que sero executadas na situao contrria. exemplo: se i < 10 escreve escreve seno escreve escreve fim se " uma criana" "Tem que estudar" "No uma criana" "Mas tambm tem que estudar"

c) Formas encadeadas de comandos se/seno. vlido realizar sequncias de testes, se/seno, como a seguir exemplo: se i < 12 escreve escreve seno se i < 19 escreve escreve seno escreve escreve fim se " uma criana" "Tem que estudar" " um jovem" "Tem que estudar especialmente" " um adulto" "Alm de estudar ainda tem que ensinar"

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 ocorre repetidas 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.

22
Importante: cuidado para no usar o comando enquanto quando a condio nunca tornar-se verdadeira. Por exemplo: seja a 2 enquanto a <> 1 soma a 1 fim 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 escrito Eu digo e repito: 1 - Scriptvox mais 2 - Scriptvox mais 3 - Scriptvox mais 4 - Scriptvox mais

poderoso poderoso poderoso poderoso

do do do do

que que que que

parece parece parece 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, dada uma "mscara de busca" (algo semelhante ao comando DIR do DOS). Ao especificar a palavra DIR no comando efetuada a busca de diretrio e no 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 o comando com a palavra PRXIMO ao invs do nome da varivel. Se omitido nome ou PRXIMO devolve diretrio atual exemplo: *Testa se um arquivo cujo nome dado existe. escreve "Informe o nome do arquivo" l a busca x a se x = "" escreve "Arquivo no existe" seno escreve "Arquivo existe" fim se

23

*Apaga os arquivos temporrios do diretrio atual escreve "Apagando os arquivos temporrios" busca a "*.TMP" enquanto a <> "" escreve a remove a & busca a PROXIMO fim enquanto *Lista os nomes dos subdiretrios do diretrio atual busca a DIR "*.*" enquanto a <> "" escreve a remove a & busca a PROXIMO fim enquanto b) dir {CRIA, REMOVE} ["nomeDiretorio" ou variavel] & no d erro ou dir {TROCA} ["nomeDiretorio" ou variavel] [nome novo} & 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 melhoria na manipulao das informaes na memria, com a introduo das listas e dicionrios, que permitem grande versatilidade na organizao e busca de informaes. Nas verses anteriores do interpretador, s havia o tipo cadeia. Mesmo dados numricos eram tratados internamente como cadeias, o que implicava sua converso sempre que uma operao aritmtica precisava ser efetuada. A partir da verso 6.0, as variveis em ScriptVox podem ser de 4 tipos: INTEIRO CADEIA LISTA DICIONRIO {terminado por {terminado por

6.10.1) O TIPO INTEIRO Variveis do tipo INTEIRO so capazes de armazenar nmeros inteiros entre -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 de

24
caracteres de tamanho praticamente infinito. Nas verses anteriores do Scriptvox, todas as variveis eram do tipo CADEIA. Uma CADEIA especificada atravs da meno dos caracteres que a constituem entre ASPAS. Assim: W := "" X := "Antonio Borges" Quando dentro de uma cadeia desejamos introduzir aspas, escrevemos duas 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 implicitamente a 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 escreve escreve subtrai escreve compras[2] quantidades[0] compras[9] quantidades[0] 1 quantidades[0]

ser escrito: laranja 20 indefinido 19 Com frequncia uma lista pode ter muitos elementos que esto em sequncia. Neste caso indica-se abreviadamente estas sequencias com o smbolo .. (dois pontos em seguida, entre os valores inferior e superior. por exemplo

25

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 da funo retira: X := ["a", "b", "c", "d", "e"] Y := retira (X, 2) escreve "A lista ficou assim: " X escreve "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.

26

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 de pessoas e, para cada pessoa, a sua idade. Depois, gostaramos de pesquisar a idade de uma pessoa, informando seu nome. Um dicionrio uma estrutura de dados que permite associar valores a chaves de pesquisa. 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 do script. No nosso exemplo, vamos inicializar o dicionrio com as seguintes associaes: 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.

27
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 que a chave a ser usada na pesquisa a cadeia "Diva": escreve idade["Diva"] e ser escrito 76. Observe que a sintaxe semelhante das listas, pois usamos os colche Se quisermos acrescentar uma associao ao dicionrio, por exemplo, dizendo que Antnio tem 30 anos, escreveramos assim: idade["Antnio"] := 30 Consideremos, agora, a seguinte situao: Orlando faz aniversrio. Isto quer dizer que sua idade deve ser aumentada de um ano. O comando correspondente em Scriptvox : soma idade["Orlando"] 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 sua idade, guardando estas informaes no dicionrio. simples: escreve "Entre com o nome da pessoa: " & l nome escreve "Entre com a idade de " nome ": " & l INTEIRO anos idade[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 ser guardada na varivel anos. Muitas vezes, em um dicionrio, precisamos testar se uma chave de pesquisa possui uma associao. Podemos fazer isto com o comando SE, comparando o valor associado 1

28
chave com a constante indefinido. Acompanhe o exemplo completo: idade := { "Agostinho" : 54, "Wanda" : 31, "Diva" : 76, "Orlando" : 80 } escreve "Nome a pesquisar: " & l nome se idade[nome] = indefinido escreve "O nome " nome " no consta do dicionrio. Quer acrescentar?" l MAIUSC resposta & se resposta = "S" escreve "Fornea a idade de " nome ": " & l INTEIRO anos idade[nome] := anos escreve "Agora sim, a idade de " nome " " idade[nome] " anos" fim se seno escreve "A idade de " nome " " idade[nome] " anos" fim se termina mudo Com o teste da quarta linha, perguntamos ao Scriptvox se a chave de pesquisa armazenada na varivel nome possui alguma associao no dicionrio idade. Se no possuir, o teste ser verdadeiro e damos ao usurio a possibilidade de acrescentar esta 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 mesma usada 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 associaes ao longo do script. Para inicializar uma varivel com um dicionrio vazio, use a 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 ttulo comeado por um certo nome receba atividade no Windows (venha para cima das outras). exemplo:

29
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 certa janela. exemplo: executa "notepad" espera 10 janela FECHA "Bloco de Notas" c) captura [TTULO ou ATIVA, CAMPO, FOCO] [variavel] Captura para uma varivel ou ttulo da janela ativa, o campo ativo ou o elemento que est com o foco do Windows. exemplo: captura ATIVA x escreve 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 do windows, permitindo o seu uso em "controle remoto". Esses comandos, portanto so fundamentais para a criao de interfaces adaptativas para programas 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 EDIVOX executa "\winvox\edivox" & espera 2 digita "x.txt" espera 1 digita "Este um teste de digitao automtica" digita "Vamos verificar " & digita "se funciona" espera 2 escreve "Ateno, EDIVOX ficou aberto" Nota: no esquecer do & depois do comando de executar, caso contrrio o programa scriptvox 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:

30
UP, DOWN, LEFT, RIGHT ESCAPE ou ESC ENTER e RETURN TAB F1 at F12 INS, DEL ou DELETE HOME, END PAGEUP, PAGEDN PRIOR, NEXT -> sinonimos de pageup e pagedn SNAPSHOT -> printScreen As teclas a seguir so usadas em conjunto com outras, por exemplo ALT+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 2 digita "x.txt" espera 1 aciona "CTRL+Y" aciona "F2" espera 1 aciona "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 janela atualmente ativa no Windows. A coordenada superior esquerda da tela (0, 0). exemplo: clica TELA 10, 590 espera 1 aciona "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]

31
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 dos protocolos atuais usa a forma textual, muito adequada para processamento com este programa. A nica dificuldade provvel conhecer as mensagens vlidas nos dilogos executados pelos diferentes servidores (o que se chama de protocolo), e mandar as mensagens segundo esse padro. a) internet [INICIA, TERMINA] Este comando obrigatrio para estabelecer ou terminar a comunicao via Internet. exemplo: internet INICIA internet 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 se fosse 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 INICIA conecta #1 "intervox.nce.ufrj.br" 13 le #1 h escreve h fecha #1 internet TERMINA exemplo: pergunta a um servidor POP3 quantas cartas existem para ser lidas (nota: a maioria das respostas do servidor ignorada) internet INICIA conecta #1 "caec.nce.ufrj.br" 110 l #1 r escreve #1 "USER upgrade" l #1 r escreve #1 "PASS dosvoxrnp" l #1 r escreve #1 "STAT" l #1 r escreve "--- resposta sobre contedo de cartas do servidor ---" escreve r escreve #1 "QUIT" l #1 r internet TERMINA

32

O modificador MUDO, se mencionado no comando conecta, faz com que o script no aborte caso haja erros de conexo. Neste caso, o comando checa deve ser usado para saber se houve erro. O exemplo anterior ficaria assim: internet INICIA @tentadenovo: conecta MUDO #1 "caec.nce.ufrj.br" 110 checa erro se erro <> 0 escreve "Erro de conexo. Vou tentar de novo daqui a 10 segundos." espera 10 desvia @tentadenovo fim se l #1 r escreve #1 "USER upgrade" l #1 r escreve #1 "PASS dosvoxrnp" l #1 r escreve #1 "STAT" l #1 r escreve "--- resposta sobre contedo de cartas do servidor ---" escreve r escreve #1 "QUIT" l #1 r internet 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 abrir automaticamente o arquivo #n no qual se pode escrever e ler, estabelecendo a conversa com o parceiro. exemplo: envia uma mensagem para quem acessar a porta 2000 internet INICIA serve #1 2000 escreve #1 "Oi, um prazer falar com voc" l #1 x escreve "Parceiro falou o seguinte" escreve x fecha #1 internet 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 a uma recepo de dados (comando l). Quando o programa quiser saber se chegou alguma mensagem, pode observar e verificar. quando ocorre uma desconexo remota, existe a indicao que a porta requer leitura. Assim use o comando checa para verificar se houve um fechamento do arquivo.

33
exemplo: internet INICIA conecta #1 "caec.nce.ufrj.br" 110 repete v 10 observa #1 s se s <> 0 desvia @chegoualgo escreve "esperando mais um segundo" espera 1 fim 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 lado local quanto remoto. A conexo precisa ter sido aberta anteriormente com um comando conecta ou serve. exemplo: internet inicia conecta #1 "www.ig.com.br" 80 ip local #1 l ip remoto #1 r escreve l escreve r fecha #1 internet 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 cliques de mouse para depois indicar o elemento que foi atingido. Os comandos para iniciar e finalizar esta monitorao so: MSAA monitora MSAA fim MSAA CHECA s Este ltimo comando (CHECA) verifica se houve algum evento pode-se usar quando a varivel = 0 no ocorreu nenhum evento na tela do Windows.

34

Nota: obrigatrio executar este comando CHECA de tempos em tempos para que 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 tela sobre 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 @loop termina 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 @loop MSAA fim termina 6.15) MENUS Para interagir com o computador, frequentemente faz-se uso de um menu de opes controlado com as setas. Os menus so criados na tela fornecendo as suas opes. O comando menu executa pode ser chamado vrias vezes para realizar diversas operaes sobre o mesmo menu. Assim quando alguma letra pressionada, o comando

35
menu executa retorna os valores abaixo: Os comandos so: menu CRIA xmin ymin xmax ymax menu 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 0 tela limpa fundo 6 menu CRIA 1 1 30 3 menu ADICIONA "primeira opo" menu ADICIONA "segunda opo" menu ADICIONA "terceira opo" menu EXECUTA n l t fundo 0 menu TERMINA escreve "Item escolhido " n escreve "Letra teclada " l escreve "Texto " x Os cdigos de tecla retornados pelo comando MENU EXECUTA so os mesmos que o comando l &.