Vídeo Aula – AdvPL 006 – Laços de Repetição e Testes

Olá pessoal…

Na vídeo aula de hoje, vou falar um pouco sobre Laços de Repetição e Testes em AdvPL (While, For, If e Case).



Abaixo os links do TDN sobre o assunto:
DO CASE
IF … ELSEIF … ELSE … ENDIF
FOR … NEXT
WHILE … ENDDO

Abaixo o código fonte utilizado para os testes (zTestes.prw):

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zTestes
Exemplo de testes em AdvPL
@author Atilio
@since 08/11/2015
@version 1.0
	@example
	u_zTestes()
/*/

User Function zTestes()
	Local aArea := GetArea()
	Local dDataTst := Date()
	Local lQuinta := .F.
	
	//Testando se o dia de hoje é quinta feira
	If Upper(cDoW(dDataTst)) == "THURSDAY"
		lQuinta := .T.
		Alert("Hoje é Quinta!")
		
	//Senão mostra um alerta que hoje não é quinta
	Else
		lQuinta := .F.
		Alert("Hoje não é Quinta!")
	EndIf
	
	//Se não for quinta feira, e for sábado
	If !lQuinta .And. Upper(cDoW(dDataTst)) == "SATURDAY"
		Alert("Sábadão!")
	
	//Senão, se não for quinta feira, e for domingo
	ElseIf !lQuinta .And. Upper(cDoW(dDataTst)) == "SUNDAY"
		Alert("Domingão!")
	EndIf
	
	
	//Fazendo case de testes
	Do Case
		Case Upper(cDoW(dDataTst)) == "MONDAY"
			Alert("Hoje é <b>Segunda</b>")
			
		Case Upper(cDoW(dDataTst)) == "TUESDAY"
			Alert("Hoje é <b>Terça</b>")
			
		Case Upper(cDoW(dDataTst)) == "WEDNESDAY"
			Alert("Hoje é <b>Quarta</b>")
			
		Case Upper(cDoW(dDataTst)) == "THURSDAY"
			Alert("Hoje é <b>Quinta</b>")
			
		Case Upper(cDoW(dDataTst)) == "FRIDAY"
			Alert("Hoje é <b>Sexta</b>")
			
		Case Upper(cDoW(dDataTst)) == "SATURDAY"
			Alert("Hoje é <b>Sábado</b>")
			
		Case Upper(cDoW(dDataTst)) == "SUNDAY"
			Alert("Hoje é <b>Domingo</b>")
		OtherWise
			Alert("Hoje é <b>???</b>")
	EndCase
	
	RestArea(aArea)
Return

Abaixo o código fonte utilizado para os testes (zLacos.prw):

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zLacos
Exemplo de laços de repetição em AdvPL
@author Atilio
@since 08/11/2015
@version 1.0
	@example
	u_zLacos()
/*/

User Function zLacos()
	Local aArea := GetArea()
	Local nValor:= 1
	Local cNome := ""
	
	//Exemplo de For (Fazer do Valor de 1 Até 10)
	For nValor := 1 To 10
	Next
	Alert("For (++): "+cValToChar(nValor))
	
	//Exemplo de For Inverso (Fazer do Valor de 10 Até 1)
	For nValor := 10 To 1 Step -1
	Next
	Alert("For (--): "+cValToChar(nValor))
	
	//Exemplo de While (Faça Enquanto o valor for diferente de 10)... Também pode ser utilizado o Do While
	nValor := 1
	While nValor != 10
		nValor++
	EndDo
	Alert("While: "+cValToChar(nValor))
	
	//Exemplo do While composto (mais de 1 teste no laço de repetição)
	nValor := 1
	While nValor != 10 .And. cNome != "Daniel"
		//Se chegar no meio do laço
		If nValor == 5
			cNome := "Daniel"
		EndIf
		
		nValor++
	EndDo
	Alert("While Composto: "+cValToChar(nValor))
	
	//Exemplo de quebra de laço de repetição (Fazer do Valor de 1 Até 10 incrementando de 2 em 2)
	For nValor := 1 To 10 Step 2
		//Se o valor for igual a 6, diminui um valor (será 5), e pula o laço
		If nValor == 6
			nValor--
			Loop
		EndIf
		
		//Se o valor for igual a 7, encerra o laço de repetição
		If nValor == 7
			Exit
		EndIf
	Next
	Alert("For (Quebra): "+cValToChar(nValor))
	
	RestArea(aArea)
Return

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Se quiser fazer o download desse código, acesse nosso GitHub pelo link github.com/dan-atilio/AdvPL (Exemplos > Vídeo Aulas > 006 – Laços e Testes > zOperadores.prw).

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas na TOTVS Oeste Paulista Bauru. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta