Cuando un programa llama a un procedimiento o función se establece una correspondencia entre los parámetros actuales y los formales. Existen dos formas para establecer la correspondencia de parámetros.
• Posicional. Emparejando los parámetros reales y formales según su posición en las listas. Esto requiere que ambas listas tengan el mismo número de parámetros y que los que se van a emparejar coincidan en su clase. En la definición del subprograma deberá reflejarse siempre de que clase es cada uno de los parámetros formales.
(E
• La clase de dato debe ser estándar o haber sido definido de antemano. Si los parámetros formales se separan por comas es necesario, aunque no suficiente, que tengan la misma clase. Si su clase fuera distinto habría que escribir:
(E
• Correspondencia por el nombre explícito. En las llamadas se indica explícitamente la correspondencia entre los parámetros reales y formales.
Al hablar de los procedimientos se decía que devuelven resultados al programa principal a través de los parámetros, pero que también pueden recibir información, desde el programa principal, a través de ellos. Esto nos lleva a una clasificación de los parámetros en:
· Parámetros de entrada. Permiten únicamente la transmisión de información desde el programa llamador al subprograma.
· Parámetros de salida. Sólo devuelven resultados.
· Parámetros de entrada/salida. Actúan en los dos sentidos, tanto mandando valores al subprograma, como devolviendo resultados desde el subprograma al programa llamador.
En los algoritmos, se debe especificar en la definición del subprograma cómo se desea que se comporte cada uno de los parámetros; para ello se empleará la siguiente terminología.
- E equivale a parámetro de entrada.
- S querrá decir parámetro de salida.
- E/S parámetro de entrada/salida.
En la lista de parámetros siguiente
(E
Todo esto afectará tanto a procedimientos como a funciones. De lo que se deduce que una función va a tener la posibilidad de devolver valores al programa principal de dos formas:
- Como valor de la función.
- A través de los parámetros.
Un procedimiento sólo podrá devolver resultados a través de los parámetros, de modo que al codificar el algoritmo se ha de tener mucho cuidado con el paso de parámetros, siendo preciso conocer los métodos de transmisión que posee el lenguaje, para poder conseguir el funcionamiento deseado.
Los lenguajes suelen disponer de:
· Paso por valor. Los parámetros formales correspondientes reciben una copia de los valores de los parámetros actuales; por lo tanto los cambios que se producen en ellos por efecto del subprograma no podrán afectar a los parámetros actuales y no se devolverá información al programa llamador. Los parámetros resultarían de Entrada, E.
· Paso por valor resultado. Al finalizar la ejecución del subprograma los valores de los parámetros formales se transfieren o copian a los parámetros actuales.
· Paso por referencia. Lo que se pasa al procedimiento es la dirección de memoria del parámetro actual. De esta forma, una variable pasada como parámetro actual es compartida; es decir, se puede modificar directamente por el subprograma. Los parámetros serían de Entrada/Salida, E/S.
Es posible pasar como parámetros datos y subprogramas.
Variables Globales y Locales
Una variable es global cuando el ámbito en el que dicha variable se conoce es el programa completo. Consideraremos como variables globales las que hayan sido declaradas fuera del programa principal y como locales las declaradas en el propio subprograma.
Toda variable que se utilice en un procedimiento debe haber sido declarada en él. De esta forma todas las variables del procedimiento serán locales y la comunicación con el programa principal se realizará exclusivamente a través de los parámetros. Al declarar una variable en un procedimiento no importa que ya existiera otra con el mismo nombre en el programa principal; ambas serán distintas y, cuando nos encontremos en el procedimiento, sólo tendrá vigencia la declaración que hayamos efectuado en él. Trabajando de esta forma obtendremos la independencia de los módulos.
No hay comentarios:
Publicar un comentario