Creo que nuestro amigo, el problema que tiene es que no enrtiende que son los parámetros, para qué sirven... para eso, nada mejor que patear el lenguaje y a los puristas.
Veamos...
Jeezy, supongamos que tienes una casa, tienes una mesa pero le faltan las sillas, encuentra un carpintero (librería), que construye sillas (función), entonces tu quieres encargarle algunas sillas para tu mesa (invocar la función). El carpintero está muy ocupado, así que te deja un papel para que tú lo rellenes... ea, ese formulario sería como una función llamada "ConstruirSilla(...)", y te reclama que rellenes estos datos:
- Numero de sillas: Cuantas sillas quieres que te fabrique?
- Numero de patas: cuantas patas deben tener las sillas?
- Color de la pintura: Qué color de pintura deben llevar las sillas (usa0 si no quieres que las pinte)?
- Alto del asiento: A qué altura está situado con exactitud el asiento de la silla?
- Lleva un respaldo: Las sillas deben llevar asiento, o son más tipo taburete?
- Lleva cojín: han de llevar cojín las sillas...?
- Estilo: El estilo de la silla, a elegir entre una cantidad enumerada a la derecha, que se acompaña de foto.
Bien, pués cada una de esas cosas que te reclama se llaman parámetros (podrían ir más, pero el carpintero no quiere dar tanta libertad, que lo vuelva loco, o bien que luego resulte que le falte materiales para tus elecciones, o bien que le supongan caro contentar al cliente con otras elecciones), y son precisos para cumplir la funcionalidad, ya que de sus valores va a depender el resultado...
Ahora traduzcamos esa funcionalidad que el carpintero te ha presentado en un papel, para contratar la fabricación de unas sillas:
Funcion ConstruirSilla(entero NumSillas, byte NumPatas, entero Color, byte AlturaAsiento, buleano ConRespaldo, buleano ConCojin, enumeracion Estilos Estilo=EstiloDefecto)
... código para fabricar las sillas (dentro de la función)...
.... quizás como respuesta dé el precio de las sillas...
devolver (PrecioUnitario * NumSillas)
Fin funcion
Ahora cuando 'llamemos a esa función', debemos indicar un valor VALIDO (dentro del rango admitido), para cada uno de esos parámetros obligatorios, porque es lo que nos pide el carpintero.
Supongamos que queremos 6 sillas, para nuestra mesa, y como es 'normal' la queremos de 4 patas, la mesa es de color 'miel', luego parece razonable que la queramos también en el mismo color (típicamente tendrá una tabla donde elegir el color, e indicar un número como referencia de ese color (o un string "miel", "blanco"...) supongamos que ese color es el 75247, luego queremos que lleve Respaldo, pero no necesitamos que tengan cojin, y el estilo de la silla, igualmente dispone de una tabla el que prefiramos y colocamos el número asociado a dicho estilo, imaginemos que es el 22.
Entonces ahora podemos invocar la función:
entero color = 75247
buleano cojin = FALSE
estilos e = 22
Preciototal = ConstruirSilla(6, 4, color, TRUE, cojin, e)
Como ves, hemos rellenado cada parámetro con el valor que hemos elegido, quizás si marcas en numPatas= 45, responda con un error, y diga que el númeor de patas admitida sea entre 1 (tipo taburete con un solo pie) y 6 (para sillas muy excéntricas), luego 45 se sale de lo que fabrica... el carpintero en persona al leer ese valor te llamaría por teléfono, para aclararte el tema.
Algunos parámetros los hemos rellenado con 'valor inmediato', otros en cambio hemos creado una variable del mismo tipo que es el parámetro, le hemos asignado un valor y la hemos entregado en el lugar donde se nos pide el parámetro. Es lo mismo entregar dinero en mano (valor inmediato), que entregar un cheque que supone el dinero (variable).
...y bueno, debería quedarte claro...sino, entonces es mejor que leas más, mucho más antes de ponerte a escribir código que no sabes interpretar.