× Linguagem de Programação ADVPL

Perguntas Exercício de contar as vogais e as consoantes de uma palavra

Mais
8 anos 5 meses atrás #29725 por viniciusbsilva
Eu vou terminar a atual mudança que eu estou fazendo, mas já posto o que eu fiz.

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás #29726 por viniciusbsilva
Uma informação adicional: Como que eu chamo uma user function dentro de outra. Exemplo:

User Function 01

(chamar a User Function 02)

lkasdnfksdlnaknf
sdaD

(chamar a User Function 03)

Return

User Function 02

dfasdfd
sd
asd
fas

Return

User Function 03

sadsd

asd
ASD
A

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás - 8 anos 5 meses atrás #29727 por viniciusbsilva
User Function ATV013()
**********************
Local nOpcao1   := 0
Local nOpcao2   := 0
Local cTotal    := " "
Local cPerg     := "TATV013_1"
Local cPerg2    := "TATV013_2"
Local cPerg3    := "TATV013_3"

fPutSX1(cPerg)

If !Pergunte(cPerg, .T.)
	Return
EndIf

nOpcao1 := mv_par01

While nOpcao1 # 2
	
	nOpcao1 := 0
	nOpcao2 := 0
	
	fPutSX1(cPerg3)
	
	If !Pergunte(cPerg, .T.)
		Return
	EndIf
	
	nOpcao2 := mv_par01
	
	If nOpcao2 == 1
		
	  	(Chamar a FVogais)     //Chamar a User Function de vogais
		
	EndIf
	
	If nOpcao2 == 2
		
	  	(Chamar a FConsoantes)    //Chamar a User Function de consoantes
		
	EndIf
	
EndDo

User Function FVogais(nOpcao2)
******************************
Local cPalavra := " "
Local aVogais  := [1,5]
Local i        := 0
Local n        := 0
Local nLetras  := 0
Local nVogais  := 0

fPutSX1(cPerg2)

If !Pergunte(cPerg2, .T.)
	Return
EndIf

cPalavra := mv_par01

aVogais[1]  := "a"
aVogais[2]  := "e"
aVogais[3]  := "i"
aVogais[4]  := "o"
aVogais[5]  := "u"
nVogais     := 0
nLetras     := 0

nLetras := Len(cPalavra)

For i := 1 To nLetras
	
	For n := 1 To 5
		
		If SubStr(cPalavra, i, 1) == aVogais[n]
			
			nVogais++
			
		EndIf
		
	Next n
	
Next i

MsgInfo("Na palavra, há: " + cValToChar(nVogais) + " vogais.", "Exibição dos resultados")

Return

User Function FConsoantes(nOpcao2)
**********************************
Local cPalavra    := " "
Local aConsoantes := [1,22]
Local i           := 0
Local n           := 0
Local nLetras     := 0
Local nConsoantes := 0

fPutSX1(cPerg2)

If !Pergunte(cPerg2, .T.)
	Return
EndIf

cPalavra := mv_par01

aConsoante[1]  := "b"
aConsoante[2]  := "c"
aConsoante[3]  := "d"
aConsoante[4]  := "f"
aConsoante[5]  := "g"
aConsoante[6]  := "h"
aConsoante[7]  := "j"
aConsoante[8]  := "k"
aConsoante[9]  := "l"
aConsoante[10] := "m"
aConsoante[11] := "n"
aConsoante[12] := "p"
aConsoante[13] := "q"
aConsoante[14] := "r"
aConsoante[15] := "s"
aConsoante[16] := "t"
aConsoante[17] := "v"
aConsoante[18] := "w"
aConsoante[19] := "x"
aConsoante[20] := "y"
aConsoante[21] := "z"
aConsoante[22] := "ç"
nConsoantes    := 0
nLetras        := 0

nLetras := Len(cPalavra)

For i := 1 To nLetra
	
	For n := 1 To 22
		
		If SubStr(cPalavra, i, 1) == aConsoantes[n]
			
			nConsoantes++
			
		EndIf
		
	Next n
	
Next i   

MsgInfo("Na palavra, há: " + cValToChar(nConsoantes) + " consoantes.", "Exibição dos resultados")     

Return

Static Function fPutSX1(cPerg)
******************************
Local aTam  := {}
Local aHelpPor

aTam := {1, 0, "N"}                                                   //Primeira pregunta: nOpcao1

aHelpPor := {}
aAdd(aHelpPor, "Digite 1 para ler uma palavra ou 2 para " )
aAdd(aHelpPor, "finalizar.                              " )
aAdd(aHelpPor, "                                        " )

PutSX1(cPerg,"01","Digite a opção correspondente","","","mv_ch1",aTam[3],aTam[1],aTam[2],0,"G","","","","","mv_par01","","","","","","","","","","","","","","","","",aHelpPor,{},{})

Return

Static Function fPutSX2(cPerg2)
******************************
Local aTam  := {}
Local aHelpPor

aTam := {25, 0, "C"}

aHelpPor := {}
aAdd(aHelpPor, "Digite uma palavra para que possa ser ap" )
aAdd(aHelpPor, "resentado o número de vogais ou o número" )                        //Segunda pergunta: cPalavra
aAdd(aHelpPor, "de consoantes.                          " )

PutSX1(cPerg2,"01","Digite uma palavra","","","mv_ch1",aTam[3],aTam[1],aTam[2],0,"G","","","","","mv_par01","","","","","","","","","","","","","","","","",aHelpPor,{},{})

Return

Static Function fPutSX3(cPerg3)
******************************
Local aTam  := {}
Local aHelpPor

aTam := {1, 0, "N"}                                                          //Terceira pergunta: nOpcao2

aHelpPor := {}
aAdd(aHelpPor, "Selecione a opção correspondente.       " )
aAdd(aHelpPor, "                                        " )
aAdd(aHelpPor, "                                        " )

PutSX1(cPerg3,"01","Opções","","","mv_ch1",aTam[3],aTam[1],aTam[2],0,"C","","","","","mv_par01","Vogais","","","","Consoantes","","","","","","","","","","","",aHelpPor,{},{})

Return

Aqui está o que eu fiz até agora.
Ultima edição: 8 anos 5 meses atrás por viniciusbsilva.

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 4 meses atrás #29734 por angeloprotti1
Bom dia Vinicios

Pelo que entendi é o seguinte:

Obs: caso nao seja USER Function, chamar sem o U_
Ex:
Static Function Teste()

Return


chamada:
Teste()

Lembrando que Static só funciona se for chamada no mesmo fonte.


User Function Func1()

/*Chamar funcao 2*/
u_Func2()

/*Chamar funcao 3*/
u_Func3()

Return


User Function Func2()
/*Corpo*/
Return


User function Func3()
/*Corpo*/
Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 4 meses atrás #29752 por viniciusbsilva
Muito obrigado Angelo Protti, com a sua ajuda consegui entender melhor como chamar uma User Function dentro de outra, agora vou aguardar a resposta do Kanaãm Luz Romero Rodrigues.

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 4 meses atrás #29753 por viniciusbsilva
Depois da ajuda do Agelo Protti eu consegui fazer com que ele rodasse legal, mas ainda há um erro que eu não consegui solucionar:
Código:
User Function ATV013()
**********************
Local nOpcao1     := 0
Local nOpcao2     := 0
Local cTotal      := " "
Local cPerg       := "TATV013_1"
Local cPerg2      := "TATV013_2"
Local cPerg3      := "TATV013_3"


fPutSX1(cPerg)
fPutSX3(cPerg3)


If !Pergunte(cPerg, .T.)
	Return
EndIf


nOpcao1 := mv_par01

If nOpcao1 == 2
	Return
EndIf


While nOpcao1 # 2
	
	If !Pergunte(cPerg, .T.)
		Return
	EndIf
	
	nOpcao1 := mv_par01
	nOpcao2 := 0
	
	
	If !Pergunte(cPerg3, .T.)
		Return
	EndIf
	
	
	
	nOpcao2 := mv_par01
	
	
	
	If nOpcao2 == 1
		
		U_FVogais()
		
	EndIf
	
	If nOpcao2 == 2
		
		U_FConsoantes()
		
	EndIf
	
EndDo

Return

User Function FVogais(nOpcao2)
******************************
Local cPalavra := " "
Local aVogais  := {}
Local i        := 0
Local n        := 0
Local nLetras  := 0
Local nVogais  := 0
Local cPerg    := "TATV013_1"
Local cPerg2   := "TATV013_2"
Local cPerg3   := "TATV013_3"

fPutSX2(cPerg2)

If !Pergunte(cPerg2, .T.)
	Return
EndIf

cPalavra := mv_par01

//aAdd(nome no array, "elemento")

aAdd(aVogais, "a")
aAdd(aVogais, "e")
aAdd(aVogais, "i")
aAdd(aVogais, "o")
aAdd(aVogais, "u")
nVogais    := 0
nLetras    := 0

nLetras := Len(cPalavra)

For i := 1 To nLetras
	
	For n := 1 To 5
		
		If SubStr(cPalavra, i, 1) == aVogais[n]
			
			nVogais++
			
		EndIf
		
	Next n
	
Next i

MsgInfo("Na palavra, há: " + cValToChar(nVogais) + " vogais.", "Exibição dos resultados")

Return

User Function FConsoantes(nOpcao2)
**********************************
Local cPalavra    := " "
Local aConsoantes := {}
Local i           := 0
Local n           := 0
Local nLetras     := 0
Local nConsoantes := 0
Local cPerg       := "TATV013_1"
Local cPerg2      := "TATV013_2"
Local cPerg3      := "TATV013_3"

fPutSX2(cPerg2)

If !Pergunte(cPerg2, .T.)
	Return
EndIf

cPalavra := mv_par01

//aAdd(nome no array, "elemento")

aAdd(aConsoante, "b")
aAdd(aConsoante, "c")
aAdd(aConsoante, "d")
aAdd(aConsoante, "f")
aAdd(aConsoante, "g")
aAdd(aConsoante, "h")
aAdd(aConsoante, "j")
aAdd(aConsoante, "k")
aAdd(aConsoante, "l")
aAdd(aConsoante, "m")
aAdd(aConsoante, "n")
aAdd(aConsoante, "p")
aAdd(aConsoante, "q")
aAdd(aConsoante, "r")
aAdd(aConsoante, "s")
aAdd(aConsoante, "t")
aAdd(aConsoante, "v")
aAdd(aConsoante, "w")
aAdd(aConsoante, "x")
aAdd(aConsoante, "y")
aAdd(aConsoante, "z")
aAdd(aConsoante, "ç")
nConsoantes    := 0
nLetras        := 0

nLetras := Len(cPalavra)

For i := 1 To nLetras
	
	For n := 1 To 22
		
		If SubStr(cPalavra, i, 1) == aConsoantes[n]
			
			nConsoantes++
			
		EndIf
		
	Next n
	
Next i

MsgInfo("Na palavra, há: " + cValToChar(nConsoantes) + " consoantes.", "Exibição dos resultados")

Return

Static Function fPutSX1(cPerg)
******************************
Local aTam  := {}
Local aHelpPor

aTam := {1, 0, "N"}                                                   //Primeira pregunta: nOpcao1

aHelpPor := {}
aAdd(aHelpPor, "Digite 1 para ler uma palavra ou 2 para " )
aAdd(aHelpPor, "finalizar.                              " )
aAdd(aHelpPor, "                                        " )

PutSX1(cPerg,"01","Digite a opção correspondente","","","mv_ch1",aTam[3],aTam[1],aTam[2],0,"G","","","","","mv_par01","","","","","","","","","","","","","","","","",aHelpPor,{},{})

Return

Static Function fPutSX2(cPerg2)
******************************
Local aTam  := {}
Local aHelpPor

aTam := {25, 0, "C"}

aHelpPor := {}
aAdd(aHelpPor, "Digite uma palavra para que possa ser ap" )
aAdd(aHelpPor, "resentado o número de vogais ou o número" )                        //Segunda pergunta: cPalavra
aAdd(aHelpPor, "de consoantes.                          " )

PutSX1(cPerg2,"01","Digite uma palavra","","","mv_ch1",aTam[3],aTam[1],aTam[2],0,"G","","","","","mv_par01","","","","","","","","","","","","","","","","",aHelpPor,{},{})

Return

Static Function fPutSX3(cPerg3)
******************************
Local aTam  := {}
Local aHelpPor

aTam := {1, 0, "N"}                                                          //Terceira pergunta: nOpcao2

aHelpPor := {}
aAdd(aHelpPor, "Selecione a opção correspondente.       " )
aAdd(aHelpPor, "                                        " )
aAdd(aHelpPor, "                                        " )

PutSX1(cPerg3,"01","Opções","","","mv_ch1",aTam[3],aTam[1],aTam[2],0,"C","","","","","mv_par01","Vogais","","","","Consoantes","","","","","","","","","","","",aHelpPor,{},{})

Return

Na execução para simular use os parametros abaixo:

1 -> Opção: Vogais -> (Palavra qualquer) -> Ok -> 2

Ao digitar o 2 era para que encerasse imediatamente o programa, mas isso não está acontecendo, alguem pode me ajudar?

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.150 segundos
Joomla templates by a4joomla