hum,
sobre o goto, ele não vai para qualquer lugar e nem em qualquer momento
o primeiro goto pula o primerio loop "sai" e tambem pula o segundo goto e a definição que vem após conclusão do loop
o segundo goto sai dos loops internos mas tbm pula a definição que tem no termino dos loops
é possivel fazer a mesma coisa sem o goto?
sim é,
mas em que isso me facilitaria ou deixaria o codigo mais simples ?
o goto por si só vai causar problemas ?
ou a forma que eu escrever a macro é que pode causar os problemas ?
eu já peguntei em outros foruns, a respeito da substituição do goto nesse aspecto
posiveis soluções :
encadear if´s para saber se atende ao requisito e colocar saidas dos if´s de loop em sequencia, não vejo como isso iria tornar a sequencia mais facil de entender ou menos propensa a erros
usar Do loop no lugar do for next, nunca lembro qual usar ou como funciona
claro que com o uso constante eu ia assimilar
mas eu tenho macro que tenho que pular varios loops em cascata e varios if´s , mas, não pular todos e sim vai para um em especifico
em um caso desse, não usar o goto vai me "facilitar" em que?
se vc visse uma macro que tenho que o fluxo é controlado por Gosub´s vc ia ficar maluco e me xingar muito
a verdade é que oq eu faço é escrever de acordo com minha logica que por si só já é confusa.
para falar a verdade essa é uma discussão infrutífera
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
tentando aprende C para fazer DLL's para o excel
Re: tentando aprende C para fazer DLL's para o excel
estava aqui tentando entender sobre as ferramentas de programação
me deparei com o WXDEV C++ que com alguns plugins que podem ser automaticamente instalados deixa tudo mais facil
até mesmo a criação de interfaces como combobox, chekbox, grid, entre outras coisas tão facil de criar quanto os form do VBA
e ainda tem vastos exemplos de como usar e dicas em BR´,
sem falar que os exemplos são fáceis de entender e reproduzir
mas infelizmente parece que o projeto foi abandonado a alguns anos e as bibliotecas estão desatualizadas e muitas entram em conflito fazendo a ide dar pane do nada e ter que reinstalar
o codeblokcs tem uma interface parecida, mas não achei nada facil
procurando algo tão facil quanto o wxdev eu me deparei com paginar de plugins gratuitos e até com projetos bem sofisticados
mas a falta de saber inglês realmente prejudica, e nem consegui saber se é algo gratuito ou não, li algo sobre licença de codigo aberto mas nem tenho certeza
e e nem descobri como usar nas ide
me deparei com o WXDEV C++ que com alguns plugins que podem ser automaticamente instalados deixa tudo mais facil
até mesmo a criação de interfaces como combobox, chekbox, grid, entre outras coisas tão facil de criar quanto os form do VBA
e ainda tem vastos exemplos de como usar e dicas em BR´,
sem falar que os exemplos são fáceis de entender e reproduzir
mas infelizmente parece que o projeto foi abandonado a alguns anos e as bibliotecas estão desatualizadas e muitas entram em conflito fazendo a ide dar pane do nada e ter que reinstalar
o codeblokcs tem uma interface parecida, mas não achei nada facil
procurando algo tão facil quanto o wxdev eu me deparei com paginar de plugins gratuitos e até com projetos bem sofisticados
mas a falta de saber inglês realmente prejudica, e nem consegui saber se é algo gratuito ou não, li algo sobre licença de codigo aberto mas nem tenho certeza
e e nem descobri como usar nas ide
Re: tentando aprende C para fazer DLL's para o excel
Realmente a linguagem é um desafio
até para declarar variáveis string e comparar duas letras é uma luta
tem muitas bibliotecas para usar,
mas cara, a tipagem da liguagem mata
dentro de um "if" que já é um comando de comparação, é obrigado a colocar == que compara
if(a==b){b=c;}
basicamente o if está de enfeite (a==b){b=c;}
tem que se preocupar se escreveu c ou C como variavel
poderia ter um mecanismo para escolher palavras unicas e ficar igual ao vba que
o pessoal reclama que goto dificulta entender o codigo
mas codigo cheio de
if( a==b && c<g || h !=j){for(A=10;B<=G||C!=b;A++){...} }
dá um nó
a ide não grava oq é função e oq é matriz
para função é () e matriz[]
existe muitas bibliotecas para o mesmo uso oq acaba confundindo
e e para usar tem que colocar :: em tudo sem falar que não são nada simbolicas, é Atoi, atol ... para transformar variaveis string de numeros em variaveis numericas
como não entendi nada eu fui fazer minha propria função de conversão para aproveitar e aprender,
tentando escrever meu primeiro codigo em C ou sei la C++ acho que é C++, ainda não peguei a diferença
dei de cara em outro muro
declaração e uso de strings
mas uma ide acusa diretorio inexistente e outra acusa erro já no cabeçalho de bibliotecas
sinceramente, depois que aprender vai ser pior que o vba que eu crio minhas proprias funçõe, sendo que vou ter que ter função até para left(xxx,n) e rigth(xxx,n) e muitos mais que uso muito
por enquanto estou na luta livre contra as IDE, e o pior PERDENDO
pronto, desabafei
sabe oq é interessante nisso
quanto postei o codigo para saber oq estava errado, somente me falaram, tira o Goto, e me explica oq isso faz
Em um monte de (==){X[]=;} uma pessoa experiente só enxergou o GOTO
com vba aconteceu a mesma coisa, eu postei uma macro totalmente funcional e que uso até hoje que inverte arrays
nessa não tem goto, para mim era mais facil de entender com o goto
até para declarar variáveis string e comparar duas letras é uma luta
tem muitas bibliotecas para usar,
mas cara, a tipagem da liguagem mata
dentro de um "if" que já é um comando de comparação, é obrigado a colocar == que compara
if(a==b){b=c;}
basicamente o if está de enfeite (a==b){b=c;}
tem que se preocupar se escreveu c ou C como variavel
poderia ter um mecanismo para escolher palavras unicas e ficar igual ao vba que
o pessoal reclama que goto dificulta entender o codigo
mas codigo cheio de
if( a==b && c<g || h !=j){for(A=10;B<=G||C!=b;A++){...} }
dá um nó
a ide não grava oq é função e oq é matriz
para função é () e matriz[]
existe muitas bibliotecas para o mesmo uso oq acaba confundindo
e e para usar tem que colocar :: em tudo sem falar que não são nada simbolicas, é Atoi, atol ... para transformar variaveis string de numeros em variaveis numericas
como não entendi nada eu fui fazer minha propria função de conversão para aproveitar e aprender,
tentando escrever meu primeiro codigo em C ou sei la C++ acho que é C++, ainda não peguei a diferença
Código: Selecionar todos
const char Arnut[]="0123456789-.,";
double convertNUM(unsigned char StrNum[])
{
double valorX = 0;
int n = 0, L2 = 0, L,C;
for ( L=0; StrNum[L] !='\0' ; L++)
{
for (C=0;C <= 12; C++)
{
if (StrNum[L] == Arnut[C])
{
n = n + 1;
if (n == 1){ L2 = L;}
if (C < 10) {valorX = valorX * 10 + C;}
goto prxL;
}
if (n > 0)
{
if (L2>0){if(StrNum[L2-1] == Arnut[10]) {valorX = -valorX;}}
return valorX;
}
}
prxL:;
}
return 0;
}
declaração e uso de strings
mas uma ide acusa diretorio inexistente e outra acusa erro já no cabeçalho de bibliotecas
sinceramente, depois que aprender vai ser pior que o vba que eu crio minhas proprias funçõe, sendo que vou ter que ter função até para left(xxx,n) e rigth(xxx,n) e muitos mais que uso muito
por enquanto estou na luta livre contra as IDE, e o pior PERDENDO
pronto, desabafei
sabe oq é interessante nisso
quanto postei o codigo para saber oq estava errado, somente me falaram, tira o Goto, e me explica oq isso faz
Em um monte de (==){X[]=;} uma pessoa experiente só enxergou o GOTO
com vba aconteceu a mesma coisa, eu postei uma macro totalmente funcional e que uso até hoje que inverte arrays
Código: Selecionar todos
Sub Espelhar(ByRef ArrayNome As Variant, ByVal C_ou1__L_ou2 As Variant, Optional ByVal Nun_C_L As Long)
Dim L As Long, C As Long, x As Long, Pia As Long, Pfa As Long
Dim Ar2() As Variant
Pia = LBound(ArrayNome, 2) + 2: Pfa = UBound(ArrayNome, 2)
lia = LBound(ArrayNome, 1): lfa = UBound(ArrayNome, 1)
x = 0
Ar2 = ArrayNome
If C_ou1__L_ou2 = "c" Then C_ou1__L_ou2 = 1
If C_ou1__L_ou2 = "l" Then C_ou1__L_ou2 = 2
If Nun_C_L = 0 Then
If C_ou1__L_ou2 = 1 Then '-------( ColunaS )
For L = lia To lfa 'Step 3
x = 0
For C = Pia To Pfa
ArrayNome(L, C) = Ar2(L, Pfa - x)
x = x + 1: Next: Next
End If
If C_ou1__L_ou2 = 2 Then '--( LinhaS )
For L = lia To lfa
For C = Pia To Pfa
ArrayNome(L, C) = Ar2(lfa - x, C)
Next: x = x + 1: Next
End If
Else '------------( Linha ou coluna especifica )
If C_ou1__L_ou2 = 1 Then
For L = lia To lfa
ArrayNome(L, Nun_C_L) = Ar2(lfa - x, Nun_C_L)
x = x + 1: Next
End If
If C_ou1__L_ou2 = 2 Then
For C = Pia To Pfa
ArrayNome(Nun_C_L, C) = Ar2(Nun_C_L, Pfa - x)
x = x + 1: Next
End If
End If
End Sub
Re: tentando aprende C para fazer DLL's para o excel
isso é um troço de maluco mesmo
as ide tetam abraçar o mundo, é c, c++, java, e sei la mais oq
vc ecolhe C++ na hora de criar um projeto e e imagina que a ide vai gravar com a extensão correta
mas aí vc lunta para sabe o pq oq vc faz não funciona
só que em vez da ide salvar como .CPP salva como .C, só que para um leigo e olhando tantas possibilidades de salvamento pensa que está correto
na hora de escrever o codigo é prestar atenção se colocou Cb ou cb, não pode faltar um ";"
quando "olha" os montes de { } () [ ],
para saber se fechou as chaves do primeiro ou segundo if ou de um for, tem que ficar colocando o cursor em cima de cada chave,
eu não tenho olho bionico para olhar e sabe em que fechadura está a chave com tantas juntas
"conclusão se passa mais tempo corrigindo os erros do que programando "
é biblioteca disso e daquilo, mas para comparar duas letras não é uma simples luta, é uma guerra sangrenta
agora imagina a situação
vc declara um ponteiro *aponte=variavel "mesma coisa que Byref , ou setar Set aa=bb"
mas a logica seria que
se vc está apontando uma variavel para outra variavel, oq vc quer é o valor que está dentro da outra variavel ou manipular o valor
então seria
A=1
int *B=a
B=2
portanto A agora tem 2
mas não,
para usar o valor de " A" usando B tem que colocar a porcaria do * em cada B
por que a ide não pode lembrar que a porcaria do B vai para o "A" e quando fizesse isso *B=C é pq estou associando B a C?
AÍ ,um trexo desse meu codigo quesem o gosub seria tudo por referencia
teria que ficar assim
para esse gosub seria um punhado de ********, pq como uma função chama outra e passa as variaveis que tbm pegou por referencia para a outra, imagina a sopa de estrelinhas
e o pessoal fala de vícios de programação
mas cara, oq é pior, 2 goto ,2 gosub ou um monte de ******** ???
se existe um portal que me leva para outra galaxia e me traz de volta,
pq afinal eu vou ficar navegando no meio das estrelinhas, e pior, contando para saber se não faltou nenhuma ou sobrou?
mudar meus programa? mudar a forma como eu raciocino ? pagar para outros fazer ?
acho que quando se está desenvolvendo uma aplicação vc imagina a estrutura e a logica de funcionamento
mas os programadores profissionais acham que vc tem que imaginar quantos ";" ( ) {} [] ******** vai ter tbm
é uma tradição de décadas que o pessoal tem medo de mudar
mas eu afirmo, a interface de programação é BURRA
If por sí só é um fator de comparação, então tudo entre iF e Then está sendo comparado
no C/C**o interpretador precisa do == para saber que é uma comparação e não uma inclusão
e se deu "Enter" por que precisa de ";" para saber que são 2 comando separados ????
fora que é visualmente dificil de analisar
quem planejou a tipagem da liguagem se preocupou mais na facilidade de fazer o interpretador do que na facilidade de uso,
parece até meu interpretador de formulas
mesmo por que, seres humanos não são maquinas "podem ser consideradas maquinas biologicas, mas com muitas limitações, umas mais, outras menos"
e nisso tudo, o pessoal fica preocupado se existe um goto como se as porcarias dos loop não fossem gotos "jump"
as ide tetam abraçar o mundo, é c, c++, java, e sei la mais oq
vc ecolhe C++ na hora de criar um projeto e e imagina que a ide vai gravar com a extensão correta
mas aí vc lunta para sabe o pq oq vc faz não funciona
só que em vez da ide salvar como .CPP salva como .C, só que para um leigo e olhando tantas possibilidades de salvamento pensa que está correto
na hora de escrever o codigo é prestar atenção se colocou Cb ou cb, não pode faltar um ";"
quando "olha" os montes de { } () [ ],
para saber se fechou as chaves do primeiro ou segundo if ou de um for, tem que ficar colocando o cursor em cima de cada chave,
eu não tenho olho bionico para olhar e sabe em que fechadura está a chave com tantas juntas
"conclusão se passa mais tempo corrigindo os erros do que programando "
é biblioteca disso e daquilo, mas para comparar duas letras não é uma simples luta, é uma guerra sangrenta
agora imagina a situação
vc declara um ponteiro *aponte=variavel "mesma coisa que Byref , ou setar Set aa=bb"
mas a logica seria que
se vc está apontando uma variavel para outra variavel, oq vc quer é o valor que está dentro da outra variavel ou manipular o valor
então seria
A=1
int *B=a
B=2
portanto A agora tem 2
mas não,
para usar o valor de " A" usando B tem que colocar a porcaria do * em cada B
por que a ide não pode lembrar que a porcaria do B vai para o "A" e quando fizesse isso *B=C é pq estou associando B a C?
AÍ ,um trexo desse meu codigo quesem o gosub seria tudo por referencia
Código: Selecionar todos
If Oquadante_L = True Then GoSub OCoL: If t = 1 Then OLf = OLf + OqL: OLi = OLi + OqL: t = 0: Loi = Loi + OqL
Lig = Lig *-1 : Loi = Loi + Lig
Código: Selecionar todos
If( *Oquadante_L == True) {
********;
If (*t = 1)
{
*OLf = *OLf + *OqL; *OLi = *OLi + *OqL; *t = 0; *Loi = *Loi + *OqL;
}
}
*Lig = *Lig * -1; *Loi = *Loi + *Lig;
e o pessoal fala de vícios de programação
mas cara, oq é pior, 2 goto ,2 gosub ou um monte de ******** ???
se existe um portal que me leva para outra galaxia e me traz de volta,
pq afinal eu vou ficar navegando no meio das estrelinhas, e pior, contando para saber se não faltou nenhuma ou sobrou?
mudar meus programa? mudar a forma como eu raciocino ? pagar para outros fazer ?
acho que quando se está desenvolvendo uma aplicação vc imagina a estrutura e a logica de funcionamento
mas os programadores profissionais acham que vc tem que imaginar quantos ";" ( ) {} [] ******** vai ter tbm
é uma tradição de décadas que o pessoal tem medo de mudar
mas eu afirmo, a interface de programação é BURRA
Código: Selecionar todos
if a=b and c=f then
c=a
b=f
end if
no C/C**
Código: Selecionar todos
if(a== && c==f) {
c=a;
b=f;
}
e se deu "Enter" por que precisa de ";" para saber que são 2 comando separados ????
fora que é visualmente dificil de analisar
quem planejou a tipagem da liguagem se preocupou mais na facilidade de fazer o interpretador do que na facilidade de uso,
parece até meu interpretador de formulas
mesmo por que, seres humanos não são maquinas "podem ser consideradas maquinas biologicas, mas com muitas limitações, umas mais, outras menos"
e nisso tudo, o pessoal fica preocupado se existe um goto como se as porcarias dos loop não fossem gotos "jump"