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:
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
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