Output de subrutinas

Hola de nuevo, experto. Tengo una pregunta que proviene de mis orígenes con el fortran. La respuesta será muy sencilla pero no doy con la clave. A ver si me puedes ayudar.
Imagina que tengo una subrutina para sumar dos números, y el resultado de la suma lo quiero usar en el programa que llama a la subrutina ¿Cómo lo hago?
Supongamos que mi subrutina es
Public sub sumatorio(byval a as integer, byval b as integer, byval c as integer)
c=a+b
end sub
 ...Y mi programa principal quiere usar el número c, algo así
a=1
b=2
sumatorio(a,b,c)  ''' hhmmm????
No estoy seguro de esto ¿cómo haría ahora para usar la variable c en este programa? En todos los ejemplos que veo se utiliza c dentro de la subrutina, pero yo quiero que vuelva al programa principal.
A ver si sabes tú algo. Muchísimas gracias.

1 Respuesta

Respuesta
1
Debes utilizar function o sub, function devuelve un valor entonces seria algo como
Public function sumatorio(byval a as integer, byval b as integer) as integer
c=a+b
return c
end function
la usas asi:
dim variable as integer
variable = sumatorio(1,2)
Hola. Muchísimas gracias por tu ayuda.
El problema que le veo a la function es que sólo devuelve un valor, por eso pensaba más en subrutinas. Imagina que quiero que mi function devuelva no sólo la suma sino también la diferencia. O varias cosas más: suma, diferencia, producto, etc etc ¿podría hacerse con una function?
 Una solución que podría servir en ciertos casos es si defino un vector como argumento de la subrutina o de la function. Pero por desgracia, cuando he probado a meter vectores como argumentos, me dice que no se puede. En concreto, he probado algo así
dim pu(10) as double  'que sería el vector
for i=1 to 10
pu(i)=i
next
u= jaur(pu)
 'con una function jaur de este estilo:
function jaur(pu)
dim sum as double
sum=0.0
for i=1 to 10
sum=sum+pu(i)
next
end function
Al probar esto, me dice que vectores en el argumento no se permiten, pero igual mi sintaxis no es la adecuada. ¿Se te ocurre algo?
Gracias.
Utiliza paramArray en vb6 y dsi estas con .NET puedes utilizar un arralist
Gracias experto. Eres un monstruo.
Con gusto, mientras se puedad

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas