UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Lógica de Programación - 204022 PARAMETROS POR VALOR DE UNA FUNCIÓN En el caso de parámetros por valor: el valor de la variable que se esté pasando, es asignado a la variable local que es declarada al definir la función. Tanto la variable que se utilice al efectuar la invocación como la que la recibe "por valor" deben ser del mismo tipo, en caso contrario se presentará un error. Es hora de llevar lo anterior a la práctica, realizaremos un ejemplo para determinar cada una de las partes que conforman un programa con funciones: //******************************************************** // Programa que permite realizar una multiplicación // y una suma mediante a la utilización de funciones //******************************************************** #include <iostream> void divide (int x, int y); //prototipo de funciones int multiplica (int, int); // Función principal int main() { int x, y,r; cout << "Introduzca dos numeros" << endl; cin >> x Está pasando los valore de la función divide, cin >> y; primero el valor X inicial y en el segundo llamado divide(x, y); // llama a la función "Divide" el valor y divide(y, x); r = multiplica(x, y); cout << "La multiplicación de X y Y es = a: " << r << endl; return 0; } Los valores x y y, se convierten en valor x y valor y, // Función divide lo mismo sucede en la función multiplica void divide (int valorx, int valory) { int respuesta; // variable local La variable local, afecta solo a esta función respuesta= (valorx / valory;); cout << "La división de los dos valores es: " << resultado << endl; } // Función multiplica int multiplica(int valorx, int valory) { int mult; // variable local mult = valor1 * valor2; return mult;// retorna el valor del proceso UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Lógica de Programación - 204022 } La instrucción RETURN es quien regresa un, y solo un dato a la parte del programa que este llamando o invocando. Sin embargo, es de considerar que return puede regresar un dato, una variable o una expresión algebraica (no ecuación o formula) como lo muestran los siguientes ejemplos: a) return 3.1416; b) return area; c) return x+15/2; El siguiente programa lee por teclado un año y calcula y muestra si es bisiesto. Para realizar el cálculo utiliza una función llamada bisiesto. La función bisiesto recibe el año leído por teclado, comprueba si es o no bisiesto y devuelve 1 si lo es ó 0 si no lo es. // Programa que lee un año y muestra si es o no bisiesto #include <iostream> #include <stdlib.h> using namespace std; int bisiesto(int); //declaración o prototipo de la función int main() { int anio; cout<<"Introduce a"<<(char)164<<"o: "; //164 ascii de ñ cin >> anio; if(bisiesto(anio)) //llamada a la función cout << "Bisiesto" << endl; else cout << "No es bisiesto" << endl; system("pause"); } int bisiesto(int a) //definición de la función { if(a%4==0 && a%100!=0 || a%400==0) return 1; else return 0; } UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Lógica de Programación - 204022 Paso de parámetros por referencia “Otra forma de comunicación, adicional al retorno de un valor, el cual puede producir una función, consiste en el paso de parámetros por referencia, en el cual cada variable pasada como parámetro, puede ser modificada por las instrucciones contenidas en el ámbito de la función. En la invocación se pasa la variable de igual forma que se hace por valor, esto es una "desventaja" ya que al ver la instrucción no nos daríamos cuenta si se está pasando por referencia o valor, la costumbre nos haría pensar que es por valor, pero para estar seguros debemos ver la definición de la función; al identificador que recibe, en la definición de la función, se le antepondrá el operador de dirección, &; de esta forma, en la memoria RAM tomará la misma dirección del parámetro de invocación” No nos inquietemos, en el siguiente capítulo se estudiará lo referente a punteros, esto nos permitirá una mayor claridad, sin embargo es bueno que el estudiante vaya indagando acerca de este apasionante tema. Miremos el siguiente ejemplo: donde se hace el intercambio de dos valores en la memoria ram del computador //Paso de parámetros por referencia // #include <stdio.h> #include <iostream> Using namespace std; void intercambio(int *, int *); // prototipo de la función main() { int a = 20, b = 30; intercambio(&a, &b); // a y b son pasados por referencia cout<<"a es "<<a; cout <<" b es " <<b; } void intercambio(int *x, int *y) { int z = *x; // z toma el contenido de la dirección x *x = *y; // x toma el contenido de y *y = z; // contenido de y = z }