Vous êtes sur la page 1sur 31

CURSO META TRADER 5

CONDICIONAIS E LOOPS

ABSTRATA
BRENO R. L. MOREIRA
breno@abstratainvest.com

CAPTULO 4:
CONDICIONAIS E LOOPS
CAPTULO 4: Condicionais e loops
Condicionais
IF E ELSE
TERNRIO
SWITCH

Loops
WHILE
DO WHILE
FOR

Break e continue
Ponderaes

CAPTULO 4:
CONDICIONAIS
Condicionais so ferramentas de deciso. Sua funo
realizar uma escolha por meio de uma
comparao entre valores e executar uma determinada
ao a partir disso
Por meio desse tipo de construo, podemos codificar
situaes mais complexas
No Mql5 existem 3 tipos de condicionais
If e else
Ternrio
Switch

CAPTULO 4:
CONDICIONAIS - IF E ELSE
O operador if a forma mais simples de condicional do Mql5
Seu objetivo avaliar uma expresso como falsa ou verdadeira
e executar um bloco de cdigo a depender do resultado

Ou seja, se a varivel declara vazia (NULL) a expresso


verdadeira e o cdigo dentro das chaves executado
A sua construo se d por meio do identificador if seguida de
uma expresso a ser avaliada entre parntesis e um bloco entre chaves - do cdigo que ser executado em caso da expresso
ser atendida

CAPTULO 4:
CONDICIONAIS - IF E ELSE
Podemos construir estruturas de condicionais formando
uma rvore de decises

No exemplo, a mensagem do Print s ser executada se


tanto a varivel texto for NULL quanto A for igual
a 0. Poderamos reconstruir esse cdigo por meio do
uso do operador lgico &&

CAPTULO 4:
CONDICIONAIS - IF E ELSE

Da mesma forma, o Print s ser executado se as duas


situaes forem cumpridas conjuntamente
Detalhe para o fato que o cdigo do bloco foi alocado
em apenas uma linha. Isso no faz diferena desde
que esteja entre chaves ({ })
Em casos no qual apenas exista uma linha dentro
do bloco para execuo, podemos codificar a
expresso ainda de forma mais compacta - sem
esquecer de encerra-la com ;

CAPTULO 4:
CONDICIONAIS - IF E ELSE

Nesse caso, toda a expresso ocupa apenas uma linha


Podemos inclusive fazer uso conjunto dessas tcnicas

Nesse exemplo, temos dois prints. O primeiro executado


quando avaliado se a varvel texto estava vazia. Em
caso afirmativo, o cdigo verificava o valor de A. Sendo 0,
a segunda mensagem - A == 0 - tambm
disparada

CAPTULO 4:
CONDICIONAIS - IF E ELSE
J o operador else no existe de forma independente
do if. Todo else est atrelado a um if, sendo alocado aps o
bloco inicial
O seu objetivo executar um bloco de cdigo caso a
expresso no if no seja verdadeira

Dessa forma, o operador else possui um prprio bloco


de execuo que ser executado caso o do if no seja

CAPTULO 4:
CONDICIONAIS - IF E ELSE
Ou um bloco executado ou o outro, no sendo
possvel que ambos sejam disparados
Podemos escrever o mesmo cdigo na forma
resumida:

Podemos realizar construes mais complexas e


enxutas com o uso dessa forma de escrita

CAPTULO 4:
CONDICIONAIS - TERNRIO
O operador ternrio identificado com o smbolo ? e
possui a funo de atuar como um atalho para os
operadores if e else

Embora parea confuso a escrita, o operador ternrio


funciona de forma simples. Toda expresso ternria
constituda de uma varivel para aceitar a resposta
do condicional (C), uma expresso a ser avaliada (A
> B), o operador ternrio (?) seguido de um
resultado caso seja verdadeira a expresso, dois
pontos (:) e outro para o caso de falsa

CAPTULO 4:
CONDICIONAIS - TERNRIO
No exemplo, a varivel C ir receber um valor a
depender do resultado da comparao A > B. O
smbolo ? Identifica o final da operao lgica e o
incio dos valores de resultado. Em caso verdadeiro, C
assumir o valor de 1 e, no contrrio, valor de 0. Os
dois pontos ( : ) servem como o separador entre os
dois possveis valores de resposta
O mesmo cdigo poderia ser escrito pelo uso de if e
else

CAPTULO 4:
CONDICIONAIS - TERNRIO
Note que o uso do operador ternrio permite uma
compactao do cdigo superior as demais
condicionais
A limitao do uso de ? o fato de que seu resultado
deve estar atrelado a uma varivel, no permitindo
aes independentes
Sua grande aplicao a declarao de variveis
condicionais, no qual a depender de uma situao
queremos que esta assuma valores distintos

CAPTULO 4:
CONDICIONAIS - SWITCH
O operador switch usado quando se deseja fazer
diversas comparaes sucessivas. Para isso, o
identificador case verifica o valor de uma varivel em
relao a um valor inteiro
A comparao s pode ser
efetuado com valores inteiros

O identificador switch determina


que a varivel dentro do
parntesis (X) ser comparada
Logo aps, dentro do bloco
condicional, cada case associa a
varivel a uma valor inteiro

CAPTULO 4:
CONDICIONAIS - SWITCH
Em caso de verdadeiro, o cdigo referente a aquele case
ser executado. No exemplo, uma mensagem aparece - X
igual a 2
Ao contrrio dos demais condicionais, ao ser executado um
case, o cdigo continua sendo executado, efetuando as
demais comparaes. Para evitarmos isso, usamos o
operador break a fim de encerrar o condicional naquele
momento. importante atentar-se a esse fato
O identificador default age no intuito de servir como uma
opo no caso de nenhum valor inteiro ser o procurado.
No exemplo, no utilizamos o operador break pelo fato do
bloco ser o ltimo, no demandando encerramento

CAPTULO 4:
CONDICIONAIS - SWITCH
O operador switch possui grande aplicabilidade para permitir
que valores inteiros - e enumeraes - associados a
determinados resultados sejam legveis

O exemplo apenas uma parte de um switch especfico de


uma funo. No caso, a varivel pReason comparada a
enumeraes especficas. Em caso de sucesso, uma
varivel string recebe um texto explicando o significa
daquele valor

CAPTULO 4:
LOOPS
Suponha que queiramos somar um valor constante a um
array de tamanho 1000. invivel que a cada linha de
cdigo acessemos um ndice do array e faamos essa operao
Nesse objetivo, os loops possuem a funo de realizar
determinadas operaes de forma repetitiva, permitindo
que grandes quantidades de cdigo sejam condensadas em
blocos menores
No Mql5 existem trs tipos de loops:
while
do-while
for

CAPTULO 4:
LOOPS - WHILE
O operador while o loop mais simples do Mql5
Funciona de forma simples. Enquanto uma determinada
condio permanecer como true, o cdigo entre as
chaves permanece executando continuamente

A condio no exemplo a varivel Numero ser menor


que 5. A cada execuo do loop, o valor da varivel
printado e a mesma tem seu valor acrescido de 1, via o
cdigo compacto ++

CAPTULO 4:
LOOPS - WHILE
A varivel Numero declarada com o valor 0.
Dessa forma, ao adentrar o loop, seu valor
comparada com 5, sendo inferior e retornando true.
Essa condio permite a execuo do bloco entre
chaves do loop, printando seu valor e adicionando 1
a seu valor. Novamente, o processo se repete e a
comparao realizada novamente, retornando true. A
repetio apenas se encerra com Numero
assumindo valor de 5 e, portanto, no sendo menor
que 5.

CAPTULO 4:
LOOPS - WHILE
Assumindo o valor de 5, a varivel Numero resulta no
encerramento do loop. No teste lgico, 5 no
inferior a 5, mas igual. Caso quisssemos que o loop
s se encerrasse no valor de 6, poderamos usar o
smbolo de menor ou igual (<=)
Podemos usar o operador break para encerrarmos o
Enquanto
loop antes da condio
do whileA < B, o loop

permanecer sendo executado.


Entretanto, caso A + B == 10, o
bloco do condicional if ser
executado, disparando o break.
Nesse caso, o loop encerrado de
forma imediata

CAPTULO 4:
LOOPS - WHILE
Ao encerrarmos um loop por meio do operador break, a
sada do bloco ocorre no mesmo momento, de modo que
o cdigo restante do loop no executado

No exemplo, se A igual a 3 e B - constante - for 7, temos que


A+B == 10. O if dispara o break e o loop
interrompido, sem printar A 3
A verificao da condio de permisso de execuo do
loop ocorre no inicio do corpo do operador while. Se a
condio no for satisfeita, o restante do cdigo no
executado

CAPTULO 4:
LOOPS - DO WHILE
O operador do-while atua de forma muito
semelhante ao while. A nica diferena entre os dois
loops reside no fato que no do-while a condio de
execuo do loop verificada ao final do mesmo
Dessa forma, o loop do-while sempre ser disparado
ao menos uma vez, independente do teste lgico de
execuo

CAPTULO 4:
LOOPS - DO WHILE
O loop do-while composto do operador do, seguido do
bloco do loop e se encerrando com o while e a condio
de parada
Independente do teste lgico, uma vez o loop ser
executado. No exemplo, o valor da varivel Numero 0,
inferior a 5, sendo que o teste lgico do while Numero > 5.
Ainda sim, h a sada da mensagem O valor de Numero 0,
comprovando sua execuo
Tanto os loops while quanto do-while geralmente so
utilizados quando no se sabe ao certo a quantidade de
vezes que um loop ir ser executado ou quando a
condio de execuo realizada por uma varivel
lgica

CAPTULO 4:
LOOPS - FOR
O loop for indicado para uso de variveis inteiras
para controle de sua execuo
Sua estrutura composta de trs partes
Declarao de uma varivel de controle do loop
Uma expresso lgica que avalia a execuo do loop
Uma expresso executada ao fim de cada bloco

No caso, construmos um loop semelhante ao anterior, mas


com uso do operador for. Note como o cdigo mais
compacto e limpo

CAPTULO 4:
LOOPS - FOR
A declarao de um for seguida por estrutura fixa. No
exemplo, declaramos a varivel inteira Numero igual a 0.
O primeiro ponto e vrgula tem a funo de separar a
declarao de variveis da condio de execuo do
loop. No caso, adotamos Numero < 5
Por fim, aps um novo ponto e vrgula, escolhemos a
expresso que ser usada para iterar o loop, Numero
++
Ou seja, a cada entrada a condio de Numero < 5
verificada e, logo aps, o bloco do operador executado,
printando o valor da varivel. Ao fim do loop, Numero
tem seu total acrescido de 1

CAPTULO 4:
LOOPS - FOR
Podemos declarar tambm mltiplas variveis no for

Usamos uma virgula (,) para separar as variveis A


e B declaradas, associando valores a cada um. Da
mesma forma, usamos a expresso ao final do loop
for para adicionarmos 2 a A e 1 a B a cada
execuo

CAPTULO 4:
LOOPS - FOR
Podemos declarar tambm mltiplas variveis no for

Usamos uma virgula (,) para separar as variveis A


e B declaradas, associando valores a cada um. Da
mesma forma, usamos a expresso ao final do loop
for para adicionarmos 2 a A e 1 a B a cada
execuo

CAPTULO 4:
LOOPS - BREAK E CONTINUE
O operador break j foi apresentado, sendo usado
quando desejamos interromper um loop de forma
imediata, sem que o restante do cdigo seja executado
Outro operador til o continue. Sua funo pular
uma determinada interao do loop, fazendo com
que o cdigo do bloco, naquela iterao, no seja
executado. A prxima execuo ocorre de forma
normal

CAPTULO 4:
PONDERAES
importante avaliar o loop minuciosamente, pois
alguns loops podem levar a execues infinitas,
congelando o programa

Nesse caso, a varivel A ir repetidamente ter seu valor


diminudo em 1 (A--). Dessa forma, seu valor sempre
ser menor que 3 (A < 3), realizando execues infinitas
Outro fator a ser levada em conta a iterao de arrays
no seu acesso aos ndices. Acessos a ndices inexistentes
levam a erros crticos do programa

CAPTULO 4:
PONDERAES
Vale lembrar que arrays possuem ndice de acesso igual
tamanho - 1, uma vez que comeam do zero e portanto
terminam uma unidade antes do seu tamanho
declarado

No exemplo, declaramos um array de tamanho 4 e


realizamos um loop de 0 at 3 via a varivel declarada i.
Durante a iterao, usamos a prpria varivel declarada
para acessar o array ([i]) e somarmos 1 a cada valor (++)

CAPTULO 4:
PONDERAES

O loop percorre todos os ndices, acessando o array


por inteiro - 0 a 3 -, totalizando os 4 valores de seu
tamanho. Cada valor ento acrescido de 1, conforme
a imagem
Caso tivssemos declarado a condio do loop como
A menor ou igual a 4, tentaramos acessar o ndice
inexistente 4 do array, resultando em um erro crtico

Vous aimerez peut-être aussi