Você está na página 1de 28

Esse tutorial tem como objetivo explicar o princpio bsico de programao, e para o

estudo eu escolhi o AutoIT por ser de fcil entendimento e ter recursos suficientes
para realiar uma grande !uantidade de tarefas"
#aendo uma analogia com a vida real, uma linguagem de programao seria a
forma de como n$s escrevemos nossas palavras, e para !ue algu%m entenda o !ue
voc& escreveu existem vrias regras !ue devem ser seguidas, tais como acentuao,
pontos, virgulas, etc""" "
' um programa(script % uma se!)&ncia de *ordens* escrita em uma determinada
linguagem !ue ser executada pelo processador de seu pc, seguindo a mesma
se!)&ncia em !ue foi escrita + l$gica de programao,"

-ara !ue o processador seja capa de executar tal *ordens*, entra em sena o
*compilador*, !ue % responsvel por traduir o !ue voc& escreveu para uma
linguagem !ue o processador entenda"
.omo voc& pode perceber o computador embora parea ser dotado de intelig&ncia,
na realidade ele apenas cumpre *ordens*, ento se uma *ordem* % bem elaborada
tudo ir ocorrer como % de se esperar, caso contrrio poder gerar travamentos ou
simplesmente ele no far o esperado"

O processo de criao de um programa pode seguir as seguintes etapas:
/" A analise do !ue o programa dever faer + problema a ser resolvido ou uma
tarefa a ser realiada ,
0" A seleo da linguagem !ue possibilite faer tal programa
1" A estruturao do c$digo + l$gica de programao,"
2" Escrita do c$digo, usando a linguagem escolhida e obedecendo sua sntese
+forma de escrita, regras, etc""","
3" Transformar o !ue foi escrito em um c$digo !ue o cpu entenda +compilao,

.omo estamos em um f$rum voltado para emulao, vou dar um exemplo dos
passos acima usando esse tema + emulao ,"
1. A analise do que o programa dever fazer ( problema a ser resolvido ou
uma tarefa a ser realizada )
4om""", eu uso um front5end e ele % capa de chamar o emulador 6ame,
passando para ele o nome do jogo !ue eu desejo carregar, o problema % !ue
depois do jogo ser carregado o 6ame me mostra uma tela onde eu devo
pressionar as teclas *78* para !ue o jogo inicie, e como eu estou usando um
jo9stic: isso no % possvel" Ento devo faer um programa !ue faa essa
tarefa sem eu ter !ue conectar um teclado"

. A seleo da linguagem que possibilite fazer tal programa
4om""", eu j sei o!ue preciso faer, ento agora preciso saber !ual linguagem
de programao % capa de enviar tal teclas para !ue essa tela gerada pelo
6ame seja fechada"
; j sei""", o AutoIT tem funo !ue % capa de faer isso, vou us5la"

!. A estruturao do c"digo ( l"gica de programao).
<eixa eu ver""", vou faer com !ue o front5end chame o meu programa ao
inv%s do 6ame, e o meu programa por sua ve ir chamar o 6ame e ficar
aguardando por um determinado perodo e depois enviar as teclas *78*, feito
isso ele ir ficar aguardando at% !ue o 6ame seja fechado, e apos isso ser
encerrado tamb%m, faendo com !ue o front5end fi!ue ativo novamente"

#. $scrita do c"digo% usando a linguagem escol&ida e obedecendo sua
s'ntese (forma de escrita% regras% etc...).
.erto j sei o !ue tenho !ue faer""", ento vou procurar os comandos no help
do AutoIT e comear a escrever o c$digo usando essa *estrutura(l$gica*
elaborada e obedecendo a sntese dessa linguagem"

(. )ransformar o que foi escrito em um c"digo que o cpu entenda
(compilao)
4elea t= !uase l""", agora !ue eu j escrevi o c$digo falta chamar o
*compilador* para traduir o !ue eu escrevi para um c$digo !ue o processador
entenda e possa executar as *ordens* !ue eu escrevi +transformar o ar!uivo
de texto em um ar!uivo executvel ,"

Agora vamos entender certas caracter'sticas base% da maioria das
linguagens de programao.
A mem"ria e o armazenamento das informa>es(programas" 6uitas pessoas
confundem o armaenamento fsico de informa>es(programas com a mem$ria de
trabalho + !uem nunca ouviu uma frase parecida com? @uantos programas(jogos ele
tem na mem$ria A ,, em !ual!uer sistema computacional existem duas reas
distintas + armaenamento e mem$ria,"
7 armaenamento refere5se a !ual!uer dispositivo !ue possa armaenar
informa>es(programas para !ue sejam usadas posteriormente + hd, cd, dvd,
dis:ete, eprom, etc""","
' a mem$ria poderamos faer uma analogia como se fosse uma folha de papel para
rascunhos, !ue depois de ser usada poderamos jogar fora"
7bviamente essas informa>es % uma forma bem simplssima de demonstrar como
as coisas realmente funcionam, mas como o objetivo % facilitar ao mximo o
entendimento por en!uanto essas informa>es so o suficiente para entendermos
como os programas so armaenados e depois executados pelo processador"
7 processo de execuo de um programa ocorre da seguinte maneira, ao chamarmos
um programa o sistema operacional aloca um espao na mem$ria e carrega o
programa nessa rea e por fim da uma instruo e o *endereo de mem"ria* para
!ue o processador comece a executar o programa rec%m carregado, ao encerrar o
programa o sistema operacional ir limpar essa rea de mem$ria"

7 *endereo de mem"ria* est em negrito por!ue % um dos princpios bsicos !ue
devemos entender, so poucos os programas !ue no usam uma rea de mem$ria
para guardar dados en!uanto est em execuo, um exemplo bem clssico seria um
programa !ue incrementasse um valor !ual!uer por / at% !ue ele tenham o valor
!ue desejamos, para !ue esse programa funcione temos !ue usar um *endereo de
mem"ria* para guardar o valor do nBmero atual para !ue depois possamos
incrementar e por fim comparar se ele j alcanou o valor desejado"
Ceja abaixo um trecho de c$digo !ue ilustra o !ue foi mencionado?
local *meu+numero
*meu+numero,1
-&ile *meu+numero
*meu+numero.,1
if *meu+numero /, 100 t&en
$1it2oop
endif
-end
$1it
Do se preocupe por no conhecer algumas instru>es mostradas nesse exemplo,
elas sero explicadas no decorrer do tutorial, o !ue interessa no momento so os
*endereo de mem"ria*, !ue na programao so chamados de *variveis*" As
*variveis* so responsveis por guardar as informa>es !ue iremos utiliar em
nossos programas, e para utiliar o conteBdo !ue elas armaenam basta cham5las
pelo nome" + no exemplo acima criamos uma varivel de nome **meu+numero*
!ue armaena um valor de /, " Eecapitulando uma *varivel* nada mais % !ue um
nome !ue damos a um *endereo de mem"ria*"


3ariveis
-ara usufruirmos das *variveis*, certas regras devem ser obedecidas + cada
linguagem de programao tem as suas regras pr$prias, mas a muitas so bens
parecidas ,, o AutoIT % bem flexivel em relao a isso + bem diferente de linguagens
como c(cFF ,, nesse tutorial irei citar apenas algumas"
<& nomes sugestivos para as suas variveis, nunca use espaos entre os nomes
+exe? Gmeu numero, errado,, use o underline *H* ou letras maiBsculas para separar
um nome composto +exe? GmeuHnumero ou G6euDumero, correto ," Ima
particularidade em relao aos nomes dados as variveis no AutoIT % !ue todas
devem comear com um *G* +cifro,

As *variveis* tem *tipos* pr% definidos, isso !uer dier !ue depois de
*declaradas* elas s$ podem armaenar um valor do mesmo *tipo*" 7 AutoIT % bem
flexivel !uanto aos *tipos* sendo basicamente somente dois *tipos*, !ue so
*variveis com valores num4ricos* e *variveis que iro conter
te1tos5caracteres (as c&amadas de strings)*"+7bs? linguagens como c(cFF so
muito criteriosas a respeitos de tipos de variveis,

Al%m de uma *varivel* ter !ue obedecer a uma forma correta de escrita, e s$ poder
ser usada para um *tipo* !ue foi pr% definida, ainda temos !ue tomar o cuidado de
*declarar* essa *vriavel* antes dela ser usada + dica? o AutoIT tem op>es !ue
garantem !ue isso seja feito, ou seja na hora de compilar ele poder te avisar sobre
esse fato," As instru>es usadas para *declarar* uma varivel so? 2ocal% 6im%
7lobal% 8onst, cada uma dessas declara>es ser explicada no momento oportuno"
Isando a declarao *2ocal* estamos diendo ao compilador !ue a varivel s$ deve
ser vista +acessada, pelo *trec&o de c"digo (funo)* onde ela foi *declarada*,
isso se deve ao fato de um programa poder ser dividido em varias partes +fun>es e
ou proceduras,, ento usamos essa declarao para proteger a varivel de um
acesso indevido por parte de outras fun>es existentes no programa, e com isso
tamb%m permite !ue tenhamos mais de uma varivel com o mesmo nome dentro de
um mesmo programa, esse tipo de declarao % chamada de *escopo* ou
*visibilidade de uma varivel*" Esse tipo de declarao % o preferido a ser usado,
isso por!ue o programa ir consumir menos mem$ria, por!ue uma varivel declarada
como *2ocal* s$ ir ocupar espao de mem$ria !uando ela for utiliada, e esse
espao ser liberado automaticamente assim !ue a varivel no for mais necessria"
Ao contrrio da declarao *2ocal9 temos a declarao* *7lobal9, !ue deve ser
usada com muita cautela, por!ue com essa *declarao9 a varivel s$ ser liberada
!uando o programa for encerrado, e com isso ir ocupar por um perodo maior mais
!uantidade de mem$ria, fora outros conflitos !ue elas podem gera"

Antes de explicar o c$digo acima linha por linha, uma boa forma de programao %
sempre inicialiar as as variveis, ou seja dar um valor inicial a cada uma delas, no
AutoIT isso no % obrigat$rio mas % uma boa prtica de programao e pode evitar
muitas dores de cabea"

Anlise do c"digo acima:
2ocal , informa ao compilador !ue a varivel declarada s$ deve existir en!uanto o
trecho do c$digo em !ue ela foi declarada estiver sendo executado"

*meu+numero, esse % o nome !ue foi dado +varivel, a um *endereo de mem$ria*
onde iremos usar para guardar certas informa>es, esse nome deve ser composto
pelo caractere inicial *G* e seguido por mais letras, nBmeros e ou caractere underline
*H*, no pode conter espaos em branco + exe? meu numero,, no pode conter mais
!ue uma varivel, funo com o mesmo nome dentro do mesmo trecho de c$digo"

*meu+numero,1, nessa linha estamos *inicialiando* a varivel com um valor
num%rico de */* e com isso o compilador ir saber !ue essa varivel ir trabalhar
com valores num%ricos, o outro valor possivel para variveis do AutoIT so os
*textos* +strings,, variveis do tipo string so *inicialiadas* usando o valor entre
aspas+ exe? GmeuHnumeroJ*/*,, depois de inicialiada uma varivel deve ser usada
para manipular dados somente do mesmo tipo, no devemos atribuir
*textos*+strings, , a uma varivel !ue foi inicialiada como sendo num%rica e vice e
versa, +7bs? 7 AutoIT at% permite !ue seja feito isso em certas ocasi>es, mas isso
no % uma boa prtica de programao, e pode traer s%rios bugs ao seu programa,"

-&ile *meu+numero % a 9instruo9 9-&ile9 ser estuda mais a frente
+ instru>es de loop,, a traduo dessa linha seria *faa enquanto a varivel
*meu+numero for diferente de zero*
*meu+numero.,1% essa linha % a responsvel por *incrementar* o valor da
varivel **meu+numero*, os smbolos *FJ* % chamados de *operadores*, a
traduo dessa linha seria *a varivel GmeuHnumero % +J,igual a ela mesma +F,
mais /+um, "+dica? para um melhor entendimento essa mesma linha poderia ser
escrita assim? GmeuHnumero J GmeuHnumero F /,

if *meu+numero /, 100 t&en% a instruo *if9 ser estuda mais frente
+ instru>es de deciso,, a traduo dessa linha seria? *:i a varivel
*meu+numero for (/)maior ou (,)igual a 100 (t&en)ento e1ecute a
pr"1ima lin&a*"

$1it2oop% essa instruo permite sair de !ual!uer bloco de loop criado com as
instru>es + Khile, for, do ,, se essa instruo no fosse utiliada o bloco de c$digo
*Khile at% Kend* seria executado at% !ue a vrivel GmeuHnumero no suportasse
mais o valor de !ue ela % capa de armaenar+ isso ir depender do sistema
operacional !ue pode ser de 10bits ou L2bits,, em poucas palavra poderia travar o pc
ou gerar um erro e terminar o programa+run5time error,"

$nd;f e <end, essas instru>es so complementos das instru>es *;f9 e *<&ile*
elas so obrigat$rias e servem para demarcar(organiar o c$digo para !ue fi!ue fcil
de entender onde uma instruo comea e termina, juntando isso e mais a
*endentao* criamos um c$digo !ue !uando outras pessoas forem ler entendam
com mais clarea a l$gica utiliada" + dica? A endentao so os espaos utiliados no
inicio do pargrafo para !ue o c$digo digitado em uma determinada linha fi!ue bem
claro !ue pertenam a um determinado bloco de instruo, isso por!ue podemos ter
por exemplo vrias instru>es *If* uma dentro da outra",

Trecho de um c$digo com endentao + espaos no inicio da linhas mostrando onde
inicia e termina um bloco de c$digo,"
if *meu+numero /, 100 t&en
if *meu+numero,101 t&en
msgbo1(0%9O=9%9>eu numero est em 1019)
$nd;f
if *meu+numero,10 t&en
$1ite2oop
$ndif
$ndif

Agora o mesmo c$digo sem endentao+ veja como fica difcil de entender onde
comea e onde termina cada bloco de instruo,"
if *meu+numero /, 100 t&en
if *meu+numero,101 t&en
msgbo1(0%9O=9%9>eu numero est em 1019)
$nd;f
if *meu+numero,10 t&en
$1ite2oop
$ndif
$ndif

$1it% essa ultima instruo do exemplo apresentado fa com !ue o programa(script
seja encerrado imediatamente e independentemente do local onde ele foi declarado,
essa instruo tamb%m pode retornar c$digos num%ricos para o sistema
operacional(outros programas avisando como o programa(script terminou"
Meralmente retornamos um valor de *ero* para indicar !ue tudo terminou sem
problemas"

Da programao % difcil explicar certas instru>es sem abordar outras, e isso torna o
aprendiado mais difcil, por esse motivo deixei vrios outros aspectos da
programao sem abord5los ou sem comentar, mas com a prtica e o estudo voc&s
iro encaixando as peas nos seus devidos lugares" Im bom exemplo do !ue estou
tentando explicar % o pr$prio computador !ue % composto por vrios componentes
fsicos +hardKare, e l$gicos +softKare, e a falta ou perda de um deles compromete
ele como um todo, para !ue isso fi!ue bem claro basta apenas deletarmos um Bnico
ar!uivo do sistema operacional para !ue ele no carregue mais, ou menos ainda
basta alterarmos um Bnico bit + bit % a menor unidade em um sistema
computacional, ele pode assumir somente 0 estados !ue so N e /, de um ar!uivo
importante ou no setor de boot de um ;< para !ue nada mais funcione como o
esperado"

?esumo: O principal ob@etivo desse trec&o do tutorial foi:
3arivel J um nome !ue se d a um *endereo de mem"ria* onde
podemos armaenar dados, para serem utiliados posteriormente usando
somente o nome atribudo"
-ara usar uma varivel primeiro devemos *declarAla* usando a instruo
*2ocal*, depois damos um nome + obedecendo as regras de sntese, e por fim
*inicializAlas* com um dos 0 *tipos* os + nBmeros ou textos,, depois de
inicialiada no devemos usar valores !ue no combinem com o *tipo* inicial
+ ou seja uma varivel inicialiada com nBmeros deve ser usadas para
armaenar somente nBmeros ,"

Im detalhe !ue eu ainda no tinha explicado e !ue talve alguns se
perguntem %? $m qual parte do c"digo eu devo declarar essas
variveis B, como j mencionei o AutoIT % bem flexvel em relao a isso,
mas uma boa forma de programao seria declarar e inicialiar no inicio do
c$digo, e atrav%s de *lin&as de comentrios*, dar uma breve descrio para
!ual prop$sito ela ser utiliada, com isso !uem ler o seu c$digo ir entender
rapidamente a l$gica utiliada"+dicas? Oinhas de comentrio podem ser
inseridas usando o smbolo *P*+ponto e virgula,, tudo !ue estiver escrito
depois de um *P*+ponto e virgula, ser tratado pelo pr%5
processador(compilador como sendo uma linha de comentrio e no uma
instruo,"

Operadores
Agora !ue j sabemos o !ue % e como criar uma varivel, e !ue elas podem conter
um nBmero ou texto, iremos ver agora os *Operadores* !ue permitem
atribuir5calcular5testar essas variveis"
7s operadores so divididos em 2 categorias + atribuio, matemticos, comparao
e l$gicos,"
Operadores AtrabuiCes
J

Atribuio" exemplo? *var , ( , atribui o valor da direita para
uma varivel"
FJ

Adio e Atribuio" exemplo *var ., 1, esse operador realia 0
opera>es de uma ve, esse tipo de operao seria e!uivalente a
*var , ( *var . 1 ,
5J

:ubtrao e Atribuio" exemplo *var A, 1, esse operador realia
0 opera>es de uma ve, esse tipo de operao seria e!uivalente a
*var , ( *var A 1 )
QJ

>ultiplicao e Atribuio" exemplo *var D, 1, esse operador
realia 0 opera>es de uma ve, esse tipo de operao seria
e!uivalente a *var , ( *var D 1 )
(J

6iviso e Atribuio" exemplo *var 5, 1, esse operador realia 0
opera>es de uma ve, esse tipo de operao seria e!uivalente a
*var , ( *var 5 1 )
RJ

8oncatenao e Atribuio em variveis de te1to" *var ,
9br9, *var E, 9branco9 ( o resultado ser: *var
,9brbranco9)
7peradores 6atemticos
F :oma" exemplo? 10 . 0 , !0
5 :ubtrao" exemplo? 0 A 10 , 10
Q >ultiplicao" exemplo 0 D 10 , 00
( 6iviso" exemplo 0 5 10 ,
R 8oncatenao de te1tos" 9br9 E 9branco9 % igual a *brbranco*
S Fotenciao" exemplo G # J /L
7peradores .omparao
J
;gual, testa se 0 valores so iguais, pode ser usado tanto com
nBmeros !uanto com textos, exemplo? / J / + resposta sim,,
*4Ebranco* J *brbranco* + resposta no,
JJ
;gual, testa se 0 valores so iguais, pode ser usado tanto com
nBmeros !uanto com textos, exemplo? / JJ 0 + resposta no,,
*brbranco* JJ *brbranco* + resposta sim,
TU
6iferente, testa se 0 valores so diferentes, exemplo 3 TU 1
resposta sim
U
>aior que, testa se o valor da es!uerda % maior !ue o da direita,
exemplo? 3 U 2 +resposta sim,, 2 U 3 +resposta no,
UJ
>aior ou igual, testa se o valor da es!uerda % maior ou igual !ue o
da direita, exemplo? L UJ 2 +resposta sim,, 3 UJ 3 +resposta sim,
T
>enor que, testa se o valor da es!uerda % menor !ue o da direita,
exemplo? 2 T 3 +resposta sim,, 3 T 1 +resposta no,
TJ
>enor ou igual, testa se o valor da es!uerda % menor ou igual !ue
o da direita, exemplo? L TJ /N +resposta sim,, /N TJ L +resposta
no,
Operadores 2"gicos
AD<
7perao lgica $" exemplo? ;f *var , ( AH6 *var / I )&en +se
Gvar for igual a 3 9$9 Gvar0 for maior !ue L,
7E
7perao lgica OJ" exemplo? ;f *var , ( O? *var / I )&en (se
Gvar for igual a 3 9OJ9 Gvar0 for maior !ue L,
D7T 7perao lgica HAO" e1emplo: HO) 1 ( HAO 1 4 igual a zero)%
HO) 0 ( HAO 0 4 igual a 1)
.aso no tenha entendido a tabela acima no se preocupe, com o decorrer do tutorial
ser mostra como e onde podem ser usados"


7 primeiro operador !ue veremos % o de atribuio 9,9, ele % usado para atribuir um
valor a uma varivel, exemplo? *var , (, *var , 9branco9, usamos esse operador
para inicialiar uma varivel ou para alterarmos um valor j existente nela"
7bservao? no AutoIT esse operador tamb%m serve para faer compara>es, e isso
pode confundir o programador iniciante, veja o exemplo abaixo?
if Gvar J 3 then
msgbox+N,*78*, *A varivel Gvar % igual a 3*,
endif
Ceja !ue no c$digo acima o operador 9,9 est sendo usado para faer uma
*comparao* entre o valor !ue est armaenado na varivel *var e o numero (,
para no haver confuso voc& pode se habituar a usar somente o operador 9,,9
para faer as *comparaCes9, e o 9,9 para as atribui>es"

7s operadores *matemticos* so de fcil compreenso, ou seja eles
*somam5subtrai5dividem5potencializa* o valor da es!uerda pelo valor da direita,
sendo !ue esses valores podem ser fixos exemplo ? ( . (, ou podem estar
armaenados em uma varivel exemplo? *var1 . *var"

Ima coisa a ser observada % !ue os operadores na programao tem uma
*precedKncia*, ou seja em uma conta !ue contenha mais de um operador e de tipos
diferentes, os operadores sero executados na seguinte ordem 9potKncia 5
diviso 5 multiplicao 5 soma 5 bubtrao9, veja o exemplo abaixo?
# . I 5 , B, se pegarmos uma calculadora % fiermos essa conta voc& ir reparar
!ue o resultado % *3*, pois ela ir faer a operao da es!uerda para a direita e
usando os operadores na mesma ordem em !ue foram informados, mas essa mesma
conta sendo feita via programao o resultado ser 9L9"

Desse ponto % !ue entra a 9precedKncia9 dos operadores na programao, para o
AutoIT e todas as outras linguagens !ue eu conheo o operador *5* !ue % o de
diviso tem preced&ncia ao operador *F*, e esse foi o motivo do exemplo acima dar
um resultado de 9L9 na programao e 9(* na calculadora, para evitar !ue contas
como essa tenham um valor diferente do esperado devemos usar os smbolos abre
par&nteses 9(9 e fecha par&nteses *,*, para separar uma operao de outra, veja o
mesmo exemplo acima usando os par&nteses?

(# . I) 5 , ( , nesse exemplo primeiro % somado os valores 2FL e depois dividido
por 0, ou seja 2FL J /N ( 0 J 3
# . (I 5 ) , L, nesse exemplo primeiro % dividido o valor de L por 0 e o resultado
% somado ao 2, ou seja +L ( 0, J 1 F 2 J V
6ica: Mique atento ao realizar contas como essas% procure sempre usar os
s'mbolos 9( )9 para separar as operaCes% e lembreAse o computador no
tem inteligKncia alguma% quem ensina ele a fazer alguma coisa 4 o
programador% ento se ele for ensinado errado% errado ele far ( caso no
antes trave antes &e&e&e&e). >uita gente reclama do -indo-s ( at4 certo
ponto eles tem razo )% mas a maioria das travas ocorridas nesse sistema
operacional 4 devido a programas mal escritos.

Coltando aos operadores de *atribuio* temos um grupo !ue ajuda a simplificar $
c$digo, !ue so *.,% A,% D,% 5, e E,*, isso por !ue eles faem duas opera>es ao
mesmo tempo, veja o exemplo?
Gvar J /
Gvar J Gvar F 2
Do exemplo acima primeiro inicialiamos a varivel *var com um valor num%rico
igual a 1, e na segunda linha adicionamos mais um valor de #, para !ue *var fi!ue
com o valor final de ("
Agora veja como ficaria o mesmo exemplo usando o operador *FJ* !ue % *soma
mais atribuio*
Gvar J /
Gvar FJ 2

A mesmo m%todo pode ser usado para os outros operadores matemticos com
atribuio, o Bnico !ue no % matemtico % o operador *RJ* esse pode ser usado
para *juntar(concatenar* duas variveis de texto, exemplo?
Gvar J *'ooH*
Gvar RJ *Alves*
7 resultado desse c$digo ser !ue a varivel *var ficar com o seguinte conteBdo?
*Noo+Alves*, se no usssemos esse operador o c$digo deveria ser escrito assim?
Gvar J *'ooH*
Gvar J Gvar R *Alves*

7s operadores de comparao tamb%m so de fcil compreenso, eles so usados
para verificar se o valor da es!uerda % + maior /% menor O% igual ,,% diferente
O/% maior ou igual /,% menor ou igual O, , !ue o valor da direita, essa
operao pode ser feita tanto com nBmeros fixos !uanto com variveis num%ricas,
esses operadores so muito usados com a instruo *;f* !ue estudaremos logo a
seguir, veja os resultados obtidos com as compara>es?
:endo *var1 , ( e *var , 10 temos os seguintes resultados:
Gvar/ / Gvar0 , resultado % no"
Gvar/ O Gvar0 , resultado % sim"
Gvar/ JJ Gvar0 , resultado % no"
Gvar/ TU Gvar0 , resultado % sim"
Gvar/ UJ Gvar0 , resultado % no"
Gvar/ TJ Gvar0 , resultado % sim"

E o Bltimo grupo de operadores so os l$gicos, esses operadores atuam como
comparadores tanto para nBmeros !uanto para textos +strings,, veja os resultados
das compara>es?
Wendo *var1 , 0 e *var , 1 temos?
*var1 and *var , resultado falso
*var1 or *var , resultado verdadeiro

Wendo *var1 , 9Noo9 e *var , 9>aria9 temos?
*var1 and *var , resultado falso
*var1 or *var , resultado verdadeiro +dependendo de outra comparao",


;nstruCes condicionais
Agora comearemos a ver um grupo de instru>es !ue nos permitem dar l$gica ao
programa, ou seja tomar decis>es dependendo de um resultado, criar blocos de
c$digo !ue podem ser executados vrias vees at% !ue uma condio seja satisfeita"


;nstruo ;f...$lse;f...$lse...$nd;f

A primeira instruo a ser estudada ser o *;f...$lse;f...$lse...$nd;f* !ue % uma
instruo de teste de condio, o *if9 se traduido para o portugu&s seria e!uivalente
*:e*, eo *)&en* seria *$nto*, o *$lse* seria *de outra forma* e o *end;f* serve
apenas para finaliar o bloco de c$digo, para !ue fi!ue bem legvel e de fcil
entendimento veja abaixo um exemplo?
if 3 JJ /N then P We 3 for igual a /N ento execute o c$digo da pr$xima linha
instruo a ser executada
elseif 3 JJ 3 then P ou se 3 for igual a 3 ento execute o c$digo abaixo
instruo a ser executada
else P We nenhuma das op>es estiverem corretas for ento execute o c$digo abaixo
instruo a ser executada
endif P fecha a instruo if
Do AutoiT no % informado at% !uantos *$lse;M* podem ser usados dentro de uma
estrutura *if end;f*, mas caso seja necessrio mais !ue um, ento % hora de revisar
o c$digo e usar outra instruo+ nesse caso a instruo :-itc& ou :elect).

7 c$digo acima est mostrando a forma mais completa da instruo *if9 ou seja
independente do resultado um trecho de c$digo ou outro % executado, a instruo
*if9 tamb%m pode ser usada de uma forma mais simplificada, para analisar somente
uma ou outras condi>es, veja?
if 3 J /N then
instruo a ser executada
elseif 3 JJ 3 then
instruo a ser executada
endif

ou

if 3 J /N then
instruo a ser executada
endif

ou ainda

if 3 J /N then instruo a ser executada

Eepare nesse Bltimo exemplo a forma mais reduida, ou seja sem a necessidade do
*$nd;f*

-ara demonstrar o uso do 9;f9 veja um exemplo mais completo abaixo, o c$digo a
seguir ir mostrar uma caixa de texto para o usurio, onde ele deve informar a idade,
e atrav%s das instru>es 9if9 ser verificado e mostrado uma mensagem
correspondente ao valor informado"

local Gidade
Gidade J Input4ox+*-ergunta*,*-or favor informe !uantos anos voc& tem?*,
Ptesta o valor digitado na caixa de texto, caso nada tenha sido digitado
P mostra a mensagem e sai
If Gidade JJ ** Then
6sg4ox+N,*Erro*, *.omo voc& no informou a idade, ento o programa ser
encerrado*,
Exit
EndIf
Ptesta se o valor digitado % um numero
Pcaso no seja exibe a menssagem e sai
If Dumber+Gidade, JJ N Then
6sg4ox+N,*Erro*, *Coc& deve informar um numero valido*,
Exit
EndIf
Pa se!uencia de ifs abaixo serviro para testar e mostrar
Pa mensagem conforme o valor informado
If Dumber+Gidade, TJ /0 Then
6sg4ox+N,*78*,*Dossa voc& ainda % uma criana"""*,
Exit
EndIf
If Dumber+Gidade, UJ /1 And Dumber+Gidade, TJ 0N Then
6sg4ox+N,*78*, *Oegal voc& % um adolecente"""*,
Exit
EndIf
If Dumber+Gidade, UJ 0/ And Dumber+Gidade, TJ 2N Then
6sg4ox+N,*78*, *X chegou a hora de pensar o!ue faer da vida*,
Exit
EndIf
If Dumber+Gidade, UJ 2/ And Dumber+Gidade, TJ LN Then
6sg4ox+N,*78*, *-oxa o tempo passa rpido n%A*,
Exit
EndIf
If Dumber+Gidade, UJ L/ And Dumber+Gidade, TJ L3 Then
6sg4ox+N,*78*, *T na hora de pensar na aposentadoria"*,
ElseIf Dumber+Gidade, UJ LL And Dumber+Gidade, TJ YN Then
6sg4ox+N,*78*,*-uxa !ue saude, em amigo*,
Else
6sg4ox+N,*78*,*8ara8a tB vai ficar pra semente"""*,
EndIf
Exit Pfim do script
Desse exemplo foi usado a funo *Humber( e1presso)* !ue retorna o valor
num%rico da expresso passada e caso a *expresso* no contenha numeros ento
ela retorna o valor de ero, esse recurso foi usado por!ue a varivel *idade % uma
varivel do tipo string +texto,, e foi necessrio usar uma varivel do tipo string
por!ue a funo *;nputPo1* retorna uma string"



;nstruo :-itc&...8ase...$nd:-itc&

A instruo *:-itc&* trabalha de forma parecida com o *if* e % ideal para analisar
um grande nBmero de possibilidades, veja como fica o exemplo acima usando o
*:-itc&* ao inv%s do *;f*
local Gidade
Gidade J Input4ox+*-ergunta*,*-or favor informe !uantos anos voc& tem?*,
Ptesta o valor digitado na caixa de texto, caso nada tenha sido digitado
P mostra a mensagem e sai
If Gidade JJ ** Then
6sg4ox+N,*Erro*, *.omo voc& no informou a idade, ento o programa ser
encerrado*,
Exit
EndIf
Ptesta se o valor digitado % um numero
Pcaso no seja exibe a mensagem e sai
If Dumber+Gidade, JJ N Then
6sg4ox+N,*Erro*, *Coc& deve informar um numero valido*,
Exit
EndIf

P testa o valor informado, e mostra a mensagem correspondente
WKitch Gidade
case N to /0
6sg4ox+N,*78*,*Dossa voc& ainda % uma criana"""*,
case /1 to 0N
6sg4ox+N,*78*, *Oegal voc& % um adolecente"""*,
case 0/ to 2N
6sg4ox+N,*78*, *X chegou a hora de pensar o!ue faer da vida*,
case 2/ to LN
6sg4ox+N,*78*, *-oxa o tempo passa rpido n%A*,
case L/ to L3
6sg4ox+N,*78*, *T na hora de pensar na aposentadoria"*,
case LL to YN
6sg4ox+N,*78*,*-uxa !ue saude, em amigo*,
case else
6sg4ox+N,*78*,*8ara8a tB vai ficar pra semente"""*,
EndWKitch
Exit Pfim do script
Ceja como esse c$digo ficou bem compacto e de melhor entendimento, e fa
exatamente o mesmo !ue o anterior"


;nstruo :elect...8ase...$nd:elect

A instruo *:elect...8ase...$nd:elect* tamb%m trabalha de forma parecida
com *;f* e *:-itc&*, vamos ver como fica o mesmo exemplo usando
ele"
local Gidade
Gidade J Input4ox+*-ergunta*,*-or favor informe !uantos anos voc& tem?*,
Ptesta o valor digitado na caixa de texto, caso nada tenha sido digitado
P mostra a mensagem e sai
If Gidade JJ ** Then
6sg4ox+N,*Erro*, *.omo voc& no informou a idade, ento o programa ser
encerrado*,
Exit
EndIf
Ptesta se o valor digitado % um numero
Pcaso no seja exibe a menssagem e sai
If Dumber+Gidade, JJ N Then
6sg4ox+N,*Erro*, *Coc& deve informar um numero valido*,
Exit
EndIf
Pa se!uencia de ifs abaixo serviro para testar e mostrar
Pa mensagem conforme o valor informado
If Dumber+Gidade, TJ /0 Then
6sg4ox+N,*78*,*Dossa voc& ainda % uma criana"""*,
Exit
EndIf

select
case Dumber+Gidade, UJ /1 And Dumber+Gidade, TJ 0N
6sg4ox+N,*78*, *Oegal voc& % um adolecente"""*,
case Dumber+Gidade, UJ 0/ And Dumber+Gidade, TJ 2N
6sg4ox+N,*78*, *X chegou a hora de pensar o!ue faer da vida*,
case Dumber+Gidade, UJ 2/ And Dumber+Gidade, TJ LN
6sg4ox+N,*78*, *-oxa o tempo passa rpido n%A*,
case Dumber+Gidade, UJ L/ And Dumber+Gidade, TJ L3
6sg4ox+N,*78*, *T na hora de pensar na aposentadoria"*,
case Dumber+Gidade, UJ LL And Dumber+Gidade, TJ YN
6sg4ox+N,*78*,*-uxa !ue saude, em amigo*,
case else
6sg4ox+N,*78*,*8ara8a tB vai ficar pra semente"""*,
EndWelect
Exit Pfim do script
Ceja como esse c$digo tamb%m ficou mais compacto e de melhor entendimento, e
fa exatamente o mesmo !ue os anteriores"

.omo voc& pode observar existem vrias formas de se escrever o mesmo c$digo, a
diferena s$ estar relacionada ao desempenho e a organiao do c$digo para uma
leitura e localiao de bugs"


;nstruCes de lao (looping)

;nstruo Mor...)o...:tep...He1t

A primeira instruo de looping a ser estudada ser o *for*, essa instruo permite
repetir um bloco de c$digo at% !ue uma determinada condio seja atingida, veja o
exemplo?
local GmeuHnumero J N P declara e inicialia a varivel GmeuHnumero com o valor
de N +ero,

for Gi J / to /NN
GmeuHnumero FJ /
next
no final desse processamento a varivel *meu+numero ter um valor de /NN"
Do exemplo acima a instruo 9for9 ir inicialiar a varivel 9*i9 e increment5la at%
!ue ela tenha um valor igual /NN, nesse processo todas as instru>es(comandos
!ue estiverem entre o 9for9 e o 9ne1t9 sero executadas, no nosso exemplo o
comando 9*meu+numero ., 19 ser executado /NN vees, ou seja no final do
processo a varivel GmeuHnumero ter um valor de /NN"

7 *for9 ainda suporta uma segunda opo !ue permite controlar os passos de
incrementao, o parZmetro % *:tep*, veja o exemplo?
local GmeuHnumero J N P declara e inicialia a varivel GmeuHnumero com o valor
de N +ero,

for Gi J / to /NN step 0
GmeuHnumero FJ /
next
no final desse processamento a varivel *meu+numero ter um valor de 3N"
Do exemplo acima a varivel *Gi* ser incrementada por 0 at% !ue ela tenha o valor
de /NN, como ela ser incrementa de 0 em 0, ento o comando dentro do
*lao(looping* ser executado 3N vees"

E por fim o *for* ainda pode faer o mesmo processo de forma invertida ou seja ao
inv%s de incrementar a varivel ele pode decrement5la, veja?
local GmeuHnumero J N P declara e inicialia a varivel GmeuHnumero com o valor
de N +ero,

for Gi J /NN to / step 5/
GmeuHnumero FJ /
next
Desse exemplo a varivel 9*i9 ser inicialiada como valor de /NN e ser
decrementada at% !ue tenha o valor de /, o parZmetro 9:tep9 ir funcionar da
mesma forma !ue o exemplo anterior, s$ !ue ele deve ter um sinal de 9subtrao9
antes do nBmero de decrementao !ue no nosso exemplo % o 9A19, ou tamb%m
poderia ser 9A9 ou !ual!uer outro valor desejado"

A instruo 9for9 % muito usada para percorrer listas, e um tipo diferente de varivel
!ue ainda no foi explicada, !ue so as *arra9s*, esse tipo de varivel cont%m um
ndice num%rico !ue % facilmente percorrido usando o 9for9"

6ica: Ao usar a instruo 9for9 ou outras instruCes de 9lao5looping9% vocK
dever ter certeza que a condio de parada desse 9looping9 se@a alcanada%
caso contrrio o programa ir ficar em um 9loopimg9 infinito e com isso
poder travar o pc. ve@a um e1emplo disso:
local GmeuHnumero J N P declara e inicialia a varivel GmeuHnumero com o valor
de N +ero,

for Gi J / to /NN
GmeuHnumero FJ /
GiJ/
next
veja !ue propositalmente eu estou alterando o valor da varivel Q*iQ para /, com isso
o *looping* ser infinito"



;nstruo <&ile...<$nd

A instruo *[hile """ [End* , executa um looping en!uanto uma expresso for
verdadeira, veja o exemplo?
local GmeuHnumero J N

Khile GmeuHnumero TJ /NN
GmeuHnumero FJ /
Kend
o looping ser executado en!uanto a varivel *meu+numero for menor ou igual
/NN

7 c$digo acima tamb%m poderia ser escrito da seguinte forma?
local GmeuHnumero J N

Khile /
if GmeuHnumero UJ /NN then
ExitOoop
endif
GmeuHnumero FJ /
Kend
Desse exemplo o ponto de parada do looping % feito com a ajuda da instruo 9if9,
ou seja a instruo 9if9 ir testar o valor da varivel *meu+numero e !uando ela
tiver um valor maior ou igual a /NN, ento o comando *$1it2oop* ser executado
faendo com !ue o looping seja encerrado"

.omo voc& pode notar o looping s$ % executado *quando e enquanto* a expresso
informada for verdadeira, e repare tamb%m !ue a expresso poder ser composta
como no primeiro exemplo ou pode ser simples como no segundo, o !ue importa
mesmo para essa instruo % !ue a expresso tenha um valor diferente de ero"

6ica: para o Auto;) e outras linguagens de programao um valor s" 4
verdadeiro quando ele 4 diferente de zero% com isso at4 um valor negativo (
A1% A% etc...) so considerados como verdadeiros. 3e@a que nesse segundo
e1emplo eu usei o nRmero 919 para ter uma e1presso com um valor
verdadeiro% caso eu colocaAse o nRmero 909 o looping no seria e1ecutado.

Do AutoIT e outras linguagens temos 0 *palavras reservadas* !ue representam os
valores verdadeiro+ )?J$ , e falso + MA2:$ ,, com isso a linha do exemplo acima
poderia ser escrita da seguinte forma?
<&ile true P a traduo dessa linha %? *faa en!uanto for verdadeiro*



;nstruo 6o...Jntil

Essa instruo % muito parecida com a anterior a diferena principal % !ue o
*<&ile... <$nd* s$ ir executar o c$digo dentro dentro dele caso a expresso seja
verdadeira, j o *6o...Jntil* ir executar ir executar o c$digo dentro dele pelo
menos uma ve, isso por!ue a expresso a ser analisada ir ficar no final do looping
e no no incio como acontece com o *<&ile...<end*, veja o exemplo?
local GmeuHnumero J N

<o
GmeuHnumero FJ /
Intil GmeuHnumero UJ/NN
Desse exemplo o comando *GmeuHnumero FJ /* % executado independente de
!ual!uer coisa, e por fim % testado se a expresso *GmeuHnumero % maior ou igual a
/NN*, e caso for verdadeiro ento o looping % encerrado"
A traduo desse c$digo seria ? *Maa *meu+numero ., 1 at4 que
*meu+numero se@a maior ou igual 100*

-ara o *6o..Jntil* pode ser aplicado os mesmos m%todos !ue foram usados nos
exemplos do *<&ile...<end*




Essas so as principais instru>es de condio e looping, embora existam outras elas
s$ sero explicadas em momentos oportunos para facilitar o aprendiado"
-ara fixar as instru>es mostradas at% agora, irei expor um problema, depois irei
faer uma anlise de !ue como posso resolve5lo, e por fim como codificar o !ue foi
analiado, como mencionei no inicio do tutorial irei expor um problema voltado a
emulao"

Froblema:
Eu uso o front5end chamado advmenu, e ele permite !ue eu chame !ual!uer
emulador atrav%s de uma linha de comando, e para o emulador chamado eu posso
passar o nome da rom !ue eu desejo carregar"
7 emulador !ue eu !uero usar com o advmenu se chama *inc"exe*, o problema %
!ue o emulador s$ carrega um jogo se eu passar um nBmero, e o advmenu ir
passar para ele o nome da rom"

Anlise de como resolver esse problema:
' !ue o advmenu s$ % capa de passar o nome da rom, ento ao inv%s de faer o
advmenu chamar o emulador diretamente, vou faer com !ue ele chame meu script,
!ue por sua ve dever pegar o nome da rom passada pelo advmenu e converter
esse nome em um nBmero correspondente ao jogo, e por fim faer com !ue o script
chame o *inc"exe* passando para ele esse nBmero, fora isso meu script ter !ue
ficar esperando at% !ue eu acabe de jogar e feche o emulador, caso eu no faa isso,
assim !ue o script acabar de executar a ultima linha e fechar, o advmenu iria pensar
!ue eu j fechei o emulador e iria sobrepor a janela do emulador com a dele"

Ppara nivel de organiao vou declarar e inicialiar todas as minhas variveis no
inicio do script
local GnumeroHdoHjogo J N

Pagora irei verificar se o advmenu me passou o nome da rom
Ppara isso irei usar uma varivel especial + Gcmdline, do AutoIT !ue retorna !uantos
e !uais parZmetros foram passados pelo advmenu
Pe em caso de erro irei mostrar uma mensagem avisando, e encerrar o script"
if Gcmdline\N] JJ / then
msgbox+N,*Erro*, *7 advmenu no passou o nome da rom a ser carregada*,
Exit
endif

Pagora !ue eu j sei !ue o advmenu me passou algum parZmetro
Pento vou peg5lo e testar para ver se % um nome vlido
Pcaso o nome seja vlido ento irei usar a varivel GnumeroHdoHjogo, para guardar o
nBmero correspondente ao jogo"
select Gcmdline\/]
case *starglad*
GnumeroHdoHjogo J /
case *sfex*
GnumeroHdoHjogo J 0
case *sfexp*
GnumeroHdoHjogo J 3
case else
GnumeroHdoHjogo J N
endselect

Pdepois desse bloco !ue verifica se o nome da rom % igual a um dos tr&s nomes
informados nas instru>es *case*
Pchega a hora de verificar se a varivel GnumeroHdoHjogo est com um valor
diferente de ero
Pcaso ela tenha o valor de ero, isso indica !ue o nome passado no existe no meu
script"
if GnumeroHdoHjogo JJ N then
msgbox+N,*Erro*,*7 nome passado pelo advmenu no % conhecido pelo script*,
Exit
endif

Pagora !ue eu j o nBmero correto do jogo, chega a hora de chamar o emulador
Ppara isso vou usar uma funo do AutoIT !ue al%m de chamar, tamb%m ir faer o
script ficar em
Pestado de espera at% !ue o emulador seja encerrado
WhellExecute[ait+*inc"exe*, Wtring+GnumeroHdoHjogo,, ^Wcript<ir, *open*,
^W[H;I<E,

Pse a funo acima conseguiu chamar o *inc* com sucesso, o script estar num
estado de pausa
Pat% !ue o emulador seja encerrado, e !uando isso ocorrer os pr$ximos comandos
abaixo sero executados pelo script"
msgbox+N,*78*, *7 emulador foi encerrado, cli!ue em 78 para retornar para o
advmenu*,
Exit P fim do script

-ara !ue o script acima seja realmente funcional, alguns detalhes devem ser
observados, como por exemplo onde ele dever ficar, em !ue pasta o *zinc.e1e*
est, se ele est configurado corretamente, etc""", todos esses detalhes podem ser
codificados no script para garantir !ue caso algo no esteja no lugar o script seja
capa de localiar e avisar sobre o erro, lembre5se o pc s$ fa o !ue mandam ele
faer"

Desse pe!ueno script foi usado uma varivel especial chamada **cmdline* essa
varivel % criada e mantida pelo AutoIT, e a Bnica coisa !ue podemos faer com ela %
ler o seu valor"
Do script tamb%m foi usado uma *funo* +as fun>es ser o pr$ximo tema a ser
explicado,, e nessa funo foram usadas duas *>A8?O:* +S:cript6ir,
S:<+T;6$, a primeira cont%m o caminho completo de onde o script foi chamado
por exemplo +c:Umeus+scripts,, e a segunda cont%m um nBmero !ue fora uma
janela na seja mostrada+essa macro foi usada por!ue o *inc* ao ser chamado abre
um janela de *prompt de comando* e como eu no !uero !ue essa janela seja
visvel, ento mando !ue ela no seja mostrada,"
Esse comandos extras !ue foram usados podem ser consultados no *Telp fo
Auto;)*, l o leitor poder ver a lista completa"



MunCes.

Ima funo % um bloco de c$digo !ue iremos escrever uma Bnica v&s e dar um
nome, depois da funo ser criada podemos usar ela em !ual!uer parte de nosso
script chamando ela pelo nome"
As funo permitem deixar o c$digo fcil de se entender, atualiar e localiar erros,
as fun>es se faem necessrias do momento !ue voc& tiver !ue escrever blocos de
c$digo repetidos em vrias partes do script, veja um exemplo disso?
Pno inicio do script vou verificar se o emulador *inc"exe* est aberto
if -rocessExist+*inc"exe*, then
-rocess.lose+*inc"exe*,
msgbox+N,*78*, 7 emulador inc"exe, estava aberto e foi fechado*,
endif

P a!ui seria escrito outras tarefas a serem realiadas

P e agora eu preciso verificar se outro emulador est aberto, *mame"exe*
if -rocessExist+*mame"exe*, then
-rocess.lose+*mame"exe*,
msgbox+N,*78*, 7 emulador mame"exe, estava aberto e foi fechado*,
endif

Pa!ui outras tarefas a serem realiadas
Do exemplo acima eu tive !ue repetir 0 vees um mesmo c$digo sendo !ue s$ alterei
o o nome do emulador, e teria !ue repetir esse mesmo bloco de c$digo outras vees
para verificar se outros emuladores esto abertos, para casos como esse, o
recomendado seria criar uma funo !ue fiesse esse trabalho de uma forma mais
prtica, veja?

Pveja com a funo criada basta apenas eu passar o nome para a funo
Pe ela se encarregar do resto
#echaEmulador+*inc"exe*,

P a!ui seria escrito outras tarefas a serem realiadas

#echaEmulador+*mame"exe*,

Pa!ui outras tarefas a serem realiadas

Pessa % a funo criada para facilitar(diminuir o c$digo do exemplo anterior
#unc #echaHEmulador+ Gnome,
if -rocessExist+Gnome, then
-rocess.lose+Gnome,
msgbox+N,*78*, 7 emulador * R Gnome R *, estava aberto e foi fechado*,
endif
End#unc

Ceja como no exemplo acima como c$digo ficou bem mais fcil para realiar a
manuteno(alterao, isso por!ue vamos supor !ue eu no !ueira mais !ue a
mensagem seja mostrada, ento basta eu alterar(deletar uma Bnica linha da funo
e isso j estar resolvido, agora no primeiro exemplo eu teria !ue alterar todas a
linhas onde tivesse os *msgbox*"


3ariveis 8onstantes e ArraV
Antes de explicar como as fun>es trabalham irei explicar sobre mais dois tipos de
variveis !ue ainda no foram vistas +variveis constantes e variveis arraV,

8onstantes ( const )
Ima varivel constante % declarada com a palavra reservada *8onst*, e uma
varivel declarada dessa forma no pode ter o seu valor alterado, ou seja ela deve
ser usada somente para a leitura de seu valor, abaixo segue um exemplo de uma
declarao de uma varivel constante?
Pessas variveis no podem ter o seus valores alterados
local const GmeuHapelido J *brbranco*
local const GmeuHnumeroHdeHsorte J V

Pse em !ual!uer parte do programa voc& tentar alterar os valores, ser gerado um
erro"
Puma outra forma de constantes % !uando escrevemos texto ou nBmeros diretamente
no c$digo por exemplo?
if *var ,, 9maria9 t&en
ou ainda
if *var ,, ( t&en
Pnesse caso *maria* % uma constante string, e *(* % uma constante num%rica
Po melhor m%todo para se usar uma constante % o do inicio desse exemplo, isso
por!ue fica mais fcil para atualiar o c$digo, veja?
local const GversaoHdoHscript J */"N"N*
msgbox+N,*Cerso?* R GversaoHdoHscript,

P depois de uma semana eu vou revisar e atualiar o c$digo, ento eu s$ preciso
modificar a constante para *GversaoHdoHscript J /"N"/*, e em todo lugar do c$digo
!ue Peu uso essa constante ser atualiado, se a constante no fosse utiliada eu
teria !ue procurar todas as linhas !ue cont%m */"N"N* e alterar para */"N"/*


ArraVs
As variveis arra9 possuem um aspecto igual a uma planilha de clculo, ou seja ela
pode ter vrias linhas e vrias colunas, veja um exemplo?
GmeuHarra9
N maria
/ joo
0 jos%
1 paula
2 :atia
-ara criar um arra9 com as caractersticas igual a tabela mostrado acima declaramos
uma varivel da seguinte forma?
local GmeuHarra9\3]

E para adicionarmos os valores?
GmeuHarra9\N] J *maria*
GmeuHarra9\/] J *joo*
GmeuHarra9\0] J *jos%*
GmeuHarra9\1] J *paula*
GmeuHarra9\2] J *:atia*

E para usarmos os valores armaenados
local Gnomes J **
for Gi J N to 2
Gnomes J meuHarra9\Gi]
msgbox+N,*Oendo arra9s*,*A linha * R Wtring+Gi, R *, cont%m o nome? * R Gnomes,
next
-ara uma viso mais detalhada de sobre os arra9s de uma olhada no help do AutoIt"


8ontinuando com as funCes.
Agora vamos ver certas regras para criao de nossas fun>es?
A primeira coisa a ser observada % o uso da *palavra reservada* *Munc*, !ue
informa ao AutoIT !ue o bloco de c$digo a seguir % uma funo"
A segunda % o nome !ue ser dado a funo, esse nome segue as mesmas regras
!ue as das variveis com exceo do smbolo *G* !ue no % usado, no se pode ter
mais !ue uma funo com o mesmo nome, ento !uando voc& for criar uma funo
tenha certea !ue o nome ainda no foi usado+veja no help do AutoIT as fun>es j
existentes,, uma funo tamb%m no pode ter o mesmo nome de uma *palavra
reservada* do AutoIT +palavras reservada so? todos os nomes de
instru>es(macros, por exemplo *[hile, #or, <o, Exit, ^WhoKH;ide, ^Wcript<ir,
etc"""*,, no help voc& encontrar a lista completa"
Ima funo pode receber vrios parZmetros, !ue so separados por uma virgula, a
!uantidade exata de parZmetros no % especificada , mas dificilmente iremos
estourar esse limite"
7s parZmetros passados para uma funo podem ser *Cariveis*, *.onstantes*,
*Arra9s* + os parWmetros so os nomes que ficam entre o 9(9 e 9)9 ,, veja
agora a definio de uma funo?
Munc >in&aMuncao( parametro1% parametro% parametro!% ...)

c"digo da funo

$ndMunc

7s parZmetros de uma funo so opcionais ento caso sua funo no precise de
informa>es extras, basta deixar a lista de parZmetros vaia?
Munc >in&aMuncao( )

c"digo da funo

$ndMunc

Outra vantagem de se usar funCes 4 que as variveis declaradas dentro da
funo s" iro ocupar a mem"ria enquanto a funo estiver em e1ecuo% e
assim que ela acabar a mem"ria ser liberada% outra vantagem 4 que as
variveis declaradas dentro da funo s" so recon&ecidas por ela mesmo e
com isso vocK poder ter nomes de variveis duplicadas% sem que uma
interfira na outra.
#unc 6inhaH-rimeiraH#uncao+,
local Gvar J *joo*
c$digo !ual!uer
End#unc

#unc 6inhaHWegundaH#uncao+,
local Gvar J *maria*
c$digo !ual!uer
End#unc
Do exemplo acima criamos duas fun>es, e cada uma delas declara uma varivel de
nome **var* com um valor diferente, sem causar nenhum conflito"

As fun>es podem ou no retornar um valor, nos exemplos vistos at% agora nenhuma
funo est retornando valores, para !ue ela possa retorna um valor usamos a
palavra reservada *?eturn* seguida de um valor vlido, ou seja podemos retornar
um nBmero ou uma string"
local Gresultado J N

Gresultado J 6inha#uncaoH/+ 3, 3,
msgbox+N,*78*, *7 resultado %? * R Gresultado,

Gresultado J 6inha#uncaoH0+ 3, 3,
msgbox+N,*78*, *7 resultado %? * R Gresultado,

Exit P fim

#unc 6inha#uncaoH/+Ga, Gb,
local Gsoma
Gsoma J Ga F Gb
return Gsoma
End#unc

ou ainda

#unc 6inha#uncaoH0+Ga, Gb,
return +Ga F Gb,
End#unc

A palavra *?eturn* , tamb%m % usada para sair de uma funo a !ual!uer momento
6inha#uncao+ N,
6inha#uncao +/,
Exit P fim

#unc 6inha#uncao+Gnumero,
if Gnumero JJ N then
Eeturn
endif
msgbox+N,*o:*, *7 nBmero passado para a funo foi?* R Gnumero,
End#unc
Do exemplo acima ao chamarmos a funo com o valor de *N* , ela ir retornar sem
mostrar nada, e na segunda chamada ser mostrado a mensagem"

As fun>es ainda tem outras particularidade !ue podem ser conhecidas mais a fundo
atrav%s do *help* do AutoIT, ou analisando as fun>es existentes do pr$prio AutoIT"

Embora longe de ser um tutorial completo sobre essa linguagem ou sobre
programao, as informa>es a!ui mostrados so uma base para se entender um
pouco como tudo funciona o restante % !uesto de estudar melhor cada comando
disponvel, e faer muitos teste com o !ue for prendendo"



O $ditor da :ci)$ para o Auto;)
Embora um script possa ser escrito em !ual!uer editor de texto+ notepad, etc""",, a
*:ci)$* tem um editor feito sobre medida para o AutoIT, usando ele ficar muito
mais fcil aprender a linguagem, localiar erros, usar o help, etc"""

7 pacote com completo com o editor(compilador foi postado em nosso f$rum na
sesso *-indo-s*"

Abaixo a imagem do editor com um script aberto?
A barra de menu do *WciTE* % bem intuitiva e cont%m os seguintes itens + #ile, Edit,
Wearch, CieK, Tools, 7ptions, Oanguage, 4uffers, ;elp ,, a!ui no ser
detalhado cada um deles, eu irei comentar somente os mais relevantes, o restante
pode ser explorado com o tempo"
-ara demonstrar os itens de menu mais relevantes o leitor poder acompanhar desde
o comeo a criao de um script bem simples !ue apenas mostra uma mensagm na
tela, para comearmos v at% o atalho onde foi instalado o *WciTE* editor
+ geralmente menu iniciar5UTodos os programas5AutoITv15UWciTE5UWciTE,"

Abrindo o editor ento teremos, a janela abaixo com o *titulo (Jntitled) D :ci)$*"
7 proximo passo ser salvar esse ar!uivo antes de iniciar a digitao do c$digo, para
isso selecione o menu *Mile A/ :ave* selecione o local onde voc& vai guardar esse
ar!uivo e de um"
nome !ual!uer para ele + para esse exemplo eu dei o nome de e1emplo1.au!, e
salvei o ar!uivo na minha unidade *d:* ,, repare na imagem abaixo como o *titulo*
da janela j reflete essa alterao"
<ica? Ao alterar !ual!uer coisa nesse script repare !ue no *titulo* da janela ir
aparecer um *Q* asterisco logo ap$s o nome do ar!uivo, isso indica !ue o script foi
alterado"

7 proximo passo ser escrever o c$digo, esse ter poucos linhas mas ser o
suficiente para exeplicar muitos detalhes do editor, veja o c$digo?

@uando o leitor comear a escrever o c$digo acima a primeira coisa !ue ir notar % o
recurso de *Auto 8ompletar* do editor, ou seja assim !ue digitar o primeiro
caracter *X* ir aparecer um caixa de lista com uma serie de comanos veja a
imagem abaixo?
Desse lista voc& pode percorre5la usando as teclas +seta cima, seta baixo, page
doKn, page up, home, end, ou usando o mouse na barra lateral, para selecionar um
item da lista tecle *EDTEE*, caso voc& no !ueira usar esse recurso tecle *EW.* para
a janela *Auto .ompletar* seja fechada"

7utro recurso !ue facilita muito a leitura do c$digo, so as cores usado pelo editor
para separar o !ue so comentrios + verde ,, palavras reservadas + aul ,, variveis
+ marrom ,, operadores + vermelho ,, etc"""

6ais um recurso Btil so os marcadores de regio, veja na imagem abaixo os
quadrados com um sinal *A* dentro?
Esses marcadores ajudam a entender onde um bloco de c$digo inicia e termina ou
seja um *<&ile* termina em *<$nd* e um *;f* termina em *$ndif*
<ica? @uando voc& no se lembrar a sntase de um comando ento basta selecionar a
palavra desejada e teclar *M1*, com isso ser aberto o help do AutoIT e na pgina
referente a palavra selecionada"
Embora ainda tenha vrios outros detalhes, esses podero ser explorados(conhecidos
com o tempo e uso do editor"
.om o c$digo escrito agora iremos salvar usando o menu *#ile5UWave*, com isso o
c$digo estar pronto para ser rodado" -ara executar5mos esse c$digo iremos usar o
menu *)oolsA/7o* ou a tecla *M(*, se tudo ocorreu corretamente ento teremos a
seguinte janela?
A janela com os bot>es +9es, no , cancel, % a !ue foi criada na linha // e /0, mas o
principal mesmo a ser observado % como ficou a janela do editor + dividida em duas
partes,, essa nova parte % mostrado os comandos !ue foram executados pelo editor
para gerar o nosso c$digo, ela % muito Btil pois caso haja algum erro no script voc&
ir localiar rpidamente !ual % a linha !ue est causando o problema"
Editar esta pgina (se voc tiver permisso) _
Google Docs processador de texto, apresentaes e planilhas na we!

Você também pode gostar