AnteriorPosterior

7.5. El valor de retorno "void". El valor de retorno de "main"

  Curso: Fundamentos de programación en C, por Nacho Cabanes

7.5. El valor de retorno "void". El valor de retorno de "main"

Cuando queremos dejar claro que una función no tiene que devolver ningún valor, podemos hacerlo indicando al principio que el tipo de datos va a ser "void" (nulo). Por ejemplo, nuestra función "saludar", que se limitaba a escribir varios textos en pantalla, quedaría más correcta si fuera así:

void saludar() {
  printf("Bienvenido al programa\n");
  printf(" de ejemplo\n");
  printf("Bienvenido al programa\n");
}
 

Muchos compiladores antiguos (previos al estándar C99) permiten que una función se indique sin tipo devuelto, como hicimos en el primer ejemplo, y en ese caso, el lenguaje C no supondrá que no vaya a devolver ningún valor, sino que devolverá un valor entero (int):

main() {
  ...
}
 

A partir del estándar C99, es obligatorio indicar el tipo devuelto, así que deberemos usar explícitamente "void", si la función no va a devolver ningún dato. Por eso, la forma habitual de declarar el cuerpo de un programa es:

int main() {
  ...
}
 

Eso quiere decir que "main" también devuelve un valor, que se leerá desde fuera de nuestro programa. Lo habitual es devolver 0 si todo ha funcionado correctamente

int main() {
  ...
  return 0;
}
 

Y devolveríamos otro valor si hubiera habido algún problema durante el funcionamiento de nuestro programa (por ejemplo, si no hemos podido abrir algún fichero):

int main() {
  FILE* fichero;
  fichero = fopen("nombre.txt", "rt");
  if (fichero == NULL) return 1;
  ...
  return 0;
}
 

Este valor se podría comprobar desde el sistema operativo. Por ejemplo, en MsDos y Windows se lee con "IF ERRORLEVEL", así:

IF ERRORLEVEL 1 ECHO Ha habido un error en el programa

Nota 1: En la mayoría de compiladores, el cuerpo del programa ("main") debe ser devolver un entero (int). Algunos compiladores permiten declarar "main" como "void", pero la mayoría no lo consideran aceptable.

Nota 2: En algunos lenguajes de programación se llama "procedimientos" (en inglés "procedure") o "subrutinas" a las funciones que no devuelven ningún valor, y se reserva el nombre "función" para las que sí dan un resultado.

Ejercicios propuestos:

  • Crear una función "escribirGuiones" que escriba en pantalla tantos guiones ("-") como se indique como parámetro y no devuelva ningún valor.
  • Crear una función "dibujarRectangulo", que reciba como parámetros la anchura y la altura del rectángulo a mostrar, y muestre en pantalla un rectángulo de ese tamaño, relleno de caracteres "#". Por ejemplo, para anchura 4 y altura 2 sería:

####
####

  • Crear una función "borrarPantalla" que borre la pantalla dibujando 25 líneas en blanco. No debe devolver ningún valor.
  • Crear una función "mostrarPerimSuperf" que reciba un número y muestre en pantalla el perímetro y la superficie de un cuadrado que tenga como lado el número que se ha indicado como parámetro.
  • Crear una función "escribirCentrado" que reciba un texto y lo escriba centrado en la siguiente línea de pantalla (suponiendo 80 columnas en pantalla). Por ejemplo, si el texto es "Hola", que tiene 4 letras, se escribirán 38 espacios antes de él.

 

Actualizado el: 25-07-2014 17:09

AnteriorPosterior