[C con Clase] C++, apartado 5 (Sentencias), Salto, De retorno (return), ejemplo 1

Salvador Pozo salvador en conclase.net
Jue Jul 5 18:26:49 CEST 2012


El pasado 2012-07-05 15:51:02, Angel escribió:
 
A> int Paridad(int x)
A> {
A>    if(x % 2) return 1; 
A>    return 0;
A> }No entiendo bien este ejemplo, ya que si la división de el número entre 2 es igual a 0, ¿eso no sería igual a la función lógica “false”? Entonces no se tendría que evaluar la expresión “return 1”, pero en el ejemplo dice que sí se evalúa si el resto da 0, si pudieran aclararme esta duda, me harían un gran favor ya que estoy aprendiendo C++ y no me gustaría nada perderme al principio.

Hola:

Vamos a ver, esto es relativamente fácil de verificar, ya que sólo hay dos casos posibles:

- Si el parámetro x es un número par, x%2 da como resultado 0, que efectivamente se considera falso. La condición del "if" no se cumple, y el valor de retorno es 0.
- Si el parámetro x es un número impar, x%2 da como resultado 1, que se considera verdadero. La condición del "if" se cumple, y se ejecuta el "return 1", que es el valor de retorno de la función.

Eso es lo que dice el texto del ejemplo, que la función retornará 1 si el número es impar y 0 si es par.


A> Y otra duda más, ¿el valor que se define en return es el valor que toma la función que va antes de los corchetes? Me explico:
A> Ola()
A> {
A>    ... 
A>    return 78;
A> }¿La variable “Ola” tendría valor 78? Es que no he entendido bien la función return.

Antes de nada, es importante usar las palabras adecuadas para cada concepto. "Ola" no es una variable, sino el identificador de una función, que en realidad debería ser "int Ola()".

"return" no es una función, sino una sentencia de control de flujo, concretamente, la de retorno de función. 

Se considera esta sentencia como de control de flujo porque interrumpe la secuencia de ejecución del programa. Generalmente las sentencias se ejecutan secuencialmente, una a continuación de otra. Cuando esto deja de ser así decimos que se ha interrumpido la secuencia de ejecución. Eso es lo que hace return. Si hubiera sentencias después de la sentencia return, estas no se ejecutarían nunca.

El valor que retornará la función es el de la sentencia return que se ejecute. Si en tu caso se ejecuta "return 78;", el valor de retorno es 78.

No es correcto considerar el valor de retorno de "Ola" como una variable, ya que no es posible asignarle valores a "Ola". Tampoco es una constante, porque diferentes llamadas a la función pueden dar valores de retorno diferentes. Es mejor llamar a las cosas por su nombre, en este caso, "valor de retorno de la función".

Ya sé que todo esto puede resultar bastante "pedante" pero, sobre todo si estás empezando, es bueno sentar bien las bases. Además, de este modo, te será más fácil comunicarte con otros programadores.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase