Buenas foreros, soy nuevo en esta comunidad, espero estar mucho tiempo por aqui y devolverle a la comunidad lo que se que puede dar y lo que ya me estuvo dando como invitado.
Hoy vengo a plantearles algunas inquietudes que hace tiempo me estan consumiendo con respecto al lenguaje C. Si bien son dudas basicas que se deberían aprender al comienzo donde uno aprende el lenguaje, he notado, vivido y participado en discuciones en las cuales hoy en día sigo buscando la respuesta correcta.
Ellas son:
1- Funciones y Procedimientos
En cuanto a este punto tengo 2 versiones. La gente que piensa en a o en b
a- Los que opinan que en C existen funciones que devuelven un valor y funciones que no devuelven nada. Desconociendo o quiza ignorando la existencia de los procedimientos.
b- Los que diferencian las funciones de los procedimientos de acuerdo a si devuelve(retorna) un valor o si no retorna nada respectivamente.
En mi humilde opinion soy partidario del b, pero no me canso de encontrar en la web, gente que habla de funciones que no devulven valor. Aunque tambien veo posible que sean gente del tipo b hablando lo que yo llamaría "mal".
Perdonen que moleste con lo de hablar bien pero soy algo nuevo en la programacion y me preparo para un examen libre de bachillerato donde los profesores en el oral son muy exigentes con esto, y si tengo que discutirle algo, quiero estar seguro de lo que hablo. Digo todo esto porque no es la primera vez que veo desacuerdo entre profesores exactamente por estos mismo temas, y mas especificamente por que el voy a plantear abajo.
2- Con respecto al main: bloque principal, ¿funcion? que debe tener todo programa
¿Cual sería la forma correcta de declararlo?
He visto varias formas:
a)
int main ()
b)
int main (void)
c)
main ()
d)
void main ()
Entre profesores y la informacion que pude obtener en la web.
- Tengo que el punto a, b y c, requieren un return 0; al finalizar el bloque indicando que el programa termino correctamente. Aunque esto no es imprescindible en c++
- El punto c) tambien es correcto, si bien no es la mejor forma, los compiladores que sigan el estandar le darán el visto bueno.
Corregirme hasta aca si me equivoco.
Pero hace unos meses en profesor privado, decía que al menos los puntos a y b eran un disparate, que el main si no devuelve ningun valor nunca podia ser una función, por tanto nunca nunca podía llevar int. El main siempre va a ser un procedimiento porque no tiene porque devolver nada, siendo como el punto d.
Tampoco estaba de acuerdo con el return 0; ya que no tenía sentido que uno mismo decidiese si el programa finalizó correctamente o no, obviamente es lo que espera el programador.
Realmente tiene logica lo que el decía, aunque no descartó que algun programa requiera que la funcion main retorne un valor que no sea 0 precisamente.
De esto no opino porque siceramente no se.
Por ultimo aclaro que al buscar en internet me encontré mas de lo mismo, gente tirando por un lado y gente tirando para el otro. Por eso decidí probarlo por mi mismo y en el turbo c (IDE usado en el bachillerato) no tuve ningun problema con ninguno de los 4 puntos, pero al probarlo en dev-c++ noté que el void main () no funciona, al tiempo que reclama que el main debe retornar un int.
A todo esto me gustaría que se animen y opinen siempre y cuando justifiquen su respuesta sobre un tema que por lo que veo muchos pasan por alto y no se cuestionan, pero para mi esto es importante, como explique mas arriba, debo rendir un examen en poco menos de 1 mes.
Edit: Ultima aclaración. Es cierto que por ejemplo exclusivamente algun compilador pueda tener problemas con algun pedazo de codigo, y alguien me pueda decir que pruebe con otro, pero una parte del examen es en papel y los docentes piden que siempre uses buenas tecnicas de programacion y que el programa se haga de la mejor manera posible usando todos los recursos al alcance. No aceptan el "pero funciona", y ahi es cuando ponen como ejemplo cuando te calzas(los zapatos), que perfectamente podes usar el zapato izquierdo en el pie derecho y caminar bien, "pero no sería lo correcto" dicen
Saludos y gracias de antemano