Funciones

Iniciado por FKT, 23 Agosto 2015, 17:14 PM

0 Miembros y 1 Visitante están viendo este tema.

FKT

La explicación de void y ese apartado lo he entendido bastante, lo que no he entendido es bueno, lo primero, porque una funcion que retorna x, x es entero porque no compilara o porque no lo aceptara si 0 es entero y ponemos:

int main(){

(Aquí el codigo)

return 0;
}

No se si me entiendes, lo que quiero decir es que por el int de main() dice que va ha retornar un entero, y como 0 es entero pues no entiendo tu explicación.

Lo siguiente jeje, sigo sin entender lo de:

if (vocal (c))

No se si es sintaxis propia de C++ o es porque aún no he llegado a estudiarla.
Te explico lo que he entendido.
Si el return true; de la funcion vocal es "true;" que en este caso si lo es, y "c" también es true se ejecutara el if y en caso contrario el else.
Solo hay 10 tipos de personas, las que saben binario y las que no.

Mientras

#11
Pongo un ejemplo:

Código (cpp) [Seleccionar]
#include<iostream>
using namespace std;

int funcionPromedio(int nota1,int nota2,int nota3){
   int promedio = (nota1 + nota2 + nota3)/3;
   return promedio;
}

int main(){

   int resultado;

   resultado = funcionPromedio(5,9,4);
   cout << resultado;

   return 0;
}



En la linea 4 hay una función "funcionPromedio", antes del nombre dice "int" quiere decir que lo que va a devolver es de tipo "int" (que es la variable "promedio").

En la linea 13 lo que haces es "ASIGNAR a la variable resultado, lo que nos retorna la funcionPromedio". La parte que dice (5,9,4) es lo que le vas a "mandar" a la funcion, son 3 valores por que son 3 parametros nota1 nota2 nota3. Con esto lo que haces es prácticamente nota1=5, nota2=9, nota3=4, promedio=(5+9+4)/3, promedio=6, return 6. Con este return es como si la función te dijera "toma esta es la respuesta". Luego queda resultado = 6.

En esta función si le pasas 3,5,6 la suma es 4,666 pero como están como enteros(int) te devolverá solo la parte entera: 4 (Ojo: no redondea a máximo o a mínimo). Si quieres con decimales tendrías que cambiar los tipos de datos a float o double.
--
*No es necesario que los parametros tengan el mismo tipo q el valor de retorno. Puede existir una función algo así "int funcionX(float a, String texto, bool bandera)" , incluso podría no tener parámetros.

FKT

A vale, ahora si que lo entiendo ;-)

Gracias por vuestro tiempo que este tema se ha echo bastante largo ;D
Solo hay 10 tipos de personas, las que saben binario y las que no.

Orubatosu

Cita de: FKT en 23 Agosto 2015, 23:09 PM
La explicación de void y ese apartado lo he entendido bastante, lo que no he entendido es bueno, lo primero, porque una funcion que retorna x, x es entero porque no compilara o porque no lo aceptara si 0 es entero y ponemos:

int main(){

(Aquí el codigo)

return 0;
}

No se si me entiendes, lo que quiero decir es que por el int de main() dice que va ha retornar un entero, y como 0 es entero pues no entiendo tu explicación.

Lo siguiente jeje, sigo sin entender lo de:

if (vocal (c))

No se si es sintaxis propia de C++ o es porque aún no he llegado a estudiarla.
Te explico lo que he entendido.
Si el return true; de la funcion vocal es "true;" que en este caso si lo es, y "c" también es true se ejecutara el if y en caso contrario el else.

A ver.

En C (o C++) todo programa es una función. Las funciones son programas, separados entre si a los que pasas datos, o que usan datos globalmente, etc. El acceso a variables es un tema aparte, ya verás que hay locales y de otro tipo, eso ya saldrá.

¿Porque la función main tiene que devolver un entero?

En otros lenguajes con sintaxis similar (por ejemplo Java) la función principal puede ser (y de hecho es) void

Por ejemplo, un inicio típico de código en Java seria:

Código (java) [Seleccionar]
public static void main(String args[]){ ... }

En C (al menos en C++) puedes obviar el "return 0" al finalizar el programa, en principio ese es el valor por defecto que se devuelve.

Pero, Tu programa puede que sea llamado desde el sistema operativo, o desde otro programa para que haga un trabajo (el que sea). Al finalizar el mismo, puede ser interesante para el programa que le ha llamado, o para el própio sistema operativo saber que ese trabajo se ha realizado correctamente.

Por eso el programa devuelve un entero, que en el caso de ser "0" indica "ejecutado con  éxito sin problemas".

Imagina que tienes un pequeño programa que realiza un trabajo (el que sea), y que es posible que en función de los datos que le das, pueda producirse un error de división por cero, o un error de exceso de datos, o de argumentos insuficientes. Lo que se te ocurra.

Pues puedes hacer que tu programa devuelva en caso de que ocurra uno de esos casos (lo cual compruebas dentro del programa) un código de error.
Los códigos son arbitrarios, puedes usar los que se te antojen

Imagina que uno de tus programa borra ficheros, y que forma parte de un sistema operativo. Tu programa se llama "delete" y puede admitir una serie de argumentos tras su nombre. Antes de borrar un fichero, harás una serie de comprobaciones, como saber si el fichero existe, si está protegido contra escritura, si dispones de los permisos necesarios, o cualquier otra cosa. En esos casos, tu programa devuelve al sistema un código de error, y este lo interpreta y muestra al usuario el error.

Supongo que esto lo tienes claro

Lo de
Código (cpp) [Seleccionar]
if (vocal (c))

Es simple. El problema es que la gente se acostumbra mal, a ver entre parentesis en el "if" una operación de comparación, y eso es un error.

Lo que hay entre paréntesis en un "if" no es una operación de comparación, es una operación booleana. Eso vale para los if, los while, y lo que sea.

Entre paréntesis puede haber cualquier cosa que al "calcularla" te de true o false, no necesariamente una operación de "mayor que", "menor que", etc.

En este caso, entre paréntesis hay una llamada a una función ,que nos va a dar un booleano. No tiene mas misterio. Por otro lado recuerda que tras el if se ejecuta un código, si el if no se cumple, ese bloque no se ejecuta, y se ejecutará lo que hay a continuación "si o si" haya o no un "else"

Lo cierto es que a veces hay pequeños conceptos que creo se explican mal en algunos cursos, y hacen que la gente se encasquille en conceptos que no son completos, espero que esto te ayude aunque sea un poco
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

FKT

Vale... entonces es más fácil de lo que creía, esque me comía la cabeza...

Cita de: Orubatosu en 24 Agosto 2015, 09:50 AM

Lo cierto es que a veces hay pequeños conceptos que creo se explican mal en algunos cursos, y hacen que la gente se encasquille en conceptos que no son completos, espero que esto te ayude aunque sea un poco


Si te digo la verdad en el tiempo que llevo estudiando programación no he leído ni un curso :xD

Gracias por ayudarme Orubatosu
Solo hay 10 tipos de personas, las que saben binario y las que no.