A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Cap. IV - Condições e Loops

Dom

16

Dez

2007


14:03

(5 votos, média 5.00 de 5) 


Exemplo:

Vídeo 1
prog005_ha_c.exe

vovo Para assistir ao vídeo, faça o download de prog005_ha_c.exe.

Analisando prog005

Como já vimos na ajuda "win32programmer's Reference", a função Messagebox, uma vez executada, devolve para EAX o valor do botão que pressionamos. Para recordar:

Referência
Fig. 1
invoke MessageBox.... .if eax==IDYES ; Compara se EAX é igual à constante IDYES invoke MessageBox.... .endif

O que faz é comparar se pressionamos o botão Yes/Sim e, se esta condição for cumprida, mostrará a mensagem que indicamos.

Analisando o programa prog005a

Este programa é igual ao exercício anterior, só que adicionamos o bloqueio .else para o caso da condição não se cumprir.

invoke MessageBox.... .if eax==IDYES ; Compara se EAX é igual à constante IDYES invoke MessageBox.... .else ; Se não cumprir a condição: invoke MessageBox.... .endif

Se nossa primeira condição não se cumprir, a outra mensagem que está sob o bloqueio .else será mostrada.

Analisando o programa prog005b

Neste exercício utilizamos o bloqueio .elseif para realizar várias comparações porque a função Messagebox contém 3 botões diferentes e EAX pode ter qualquer um desses 3 valores.

invoke MessageBox.... .if eax==IDYES ; Compara se EAX é igual à constante IDYES invoke MessageBox.... .elseif eax==IDNO ; Compara se EAX é igual à constante IDNO invoke MessageBox.... .endif

Neste exercício não levamos em consideração o botão Cancel, mas se quiser, você pode adicioná-lo.

Analisando o programa prog005c

Neste exercício utilizamos a biblioteca rvlcnrand.lib para criarmos uma série de comprovações utilizando a maioria de operadores que vimos:

invoke randzime invoke range,1,20 .if eax > 10 && eax <=15 ; Compara se EAX é maior que 10 ; e se EAX é menor ou igual a 15 invoke MessageBox,... .elseif eax < 5 ; Compara se EAX é menor que 5 invoke MessageBox,... .elseif eax == 15 || eax == 16 ; Compara se EAX é igual a 10 ; ou se EAX é igual a 16 invoke MessageBox,... .elseif eax >= 19 ; Compara se EAX é maior ou igual a 19. invoke MessageBox,... .else ; Se não cumprir nenhuma das condições, ; faça o seguinte: invoke MessageBox,... .endif

No primeiro bloqueio, .if eax > 10 && eax <=15, se o valor de EAX for maior que 10 e se for menor ou igual a 15, a mensagem será mostrada. Repare que o operador && é um elo para outra comparação e significa "E". Então, para que a mensagem ser mostrada, as duas condições precisam ser cumpridas.

No terceiro bloqueio, .elseif eax == 15 || eax == 16, se o valor de EAX for igual a 15 ou se EAX for igual a 16, a mensagem será mostrada. Também há outro operador elo "||", que significa "OU". Então, para que a mensagem possa ser mostrada, as duas condições precisam ser cumpridas.

Informações adicionais