lunes, 11 de julio de 2016

Capítulo 52. Funciones en C++


Diario de un programador.- Dia 97

Funciones en C++

Ahora voy con C++, este tutorial es como el de C así que no hay mucho que explicar (a menos que encuentre algo nuevo y es seguro que lo podría encontrar ya que C++ soporta la programación orientada a objetos). Una función permite realizar una o varias tareas, las cuales pueden ser reutilizadas con lo que se consigue ahorrar líneas de código a lo largo del programa, ya que no se tiene que escribir la operación una y otra vez (Esta descripción es válida para los otros lenguajes que se han visto)
Las funciones en C++ se escriben fuera de la función “main”, preferentemente antes, como en el siguiente ejemplo:

#include<iostream>
void mensaje();//prototipo

void mensaje(){
  std::cout << "Soy una simple funcion\n";
}

int main(void){
  mensaje();

return 0;
}

En la segunda línea, al igual que C, se coloca el “prototipo”. Como se mencionó en la clase anterior, un prototipo le da información al compilador sobre la función que se va a utilizar, donde indica que tipo de valor va a retornar (en el ejemplo anterior no retorna un valor, por eso se coloca “void”),nombre y sus parámetros. El compilador utiliza los prototipos para verificar los posibles errores que puedan tener las funciones. Los prototipos no son obligatorios pero es bueno hacerse la costumbre y ponerlos, ya que podrían pasar por alto algunos errores

Las siguientes tres líneas corresponden a la función. Esta función tiene un tipo de retorno “void” y aunque suene contradictorio, su tipo de retorno es que no retorna nada. Las funciones que no tienen retorno realizan todo su trabajo dentro de la función y no arrojan ningún valor o dato para ser utilizado en otro lugar. En este caso, esta función lo único que hace es mostrar un mensaje por pantalla, no entregando ningún valor que pueda ser utilizado en otro lugar. Las siguientes líneas corresponden a la función “main”, la cual tiene como única instrucción el llamado a la función. Al compilar y ejecutar el programa, este es el resultado:


El siguiente ejemplo será una función que realice una pequeña operación y luego entregue o devuelva el resultado de esa operación a la función principal o “main”. Este programa se encargará de calcular el área de un cuadrado al igual que en la clase anterior, solicitando al usuario el ingreso del valor de uno de los lados de la figura:

Lo primero que haré será crear la función “area”, la cual realiza el cálculo. (No olvidar el prototipo) el prototipo debería ser int area(int lado);

int area(int lado);//prototipo
int resultado; //variable que será utilizada por la función

int area(int lado){
  resultado = lado * lado;
  return resultado;
}

La primera línea de la función indica que el valor de retorno será de tipo entero. Entre los paréntesis se indica que el valor o argumento que recibirá esta función es de tipo entero. El argumento se refiere a lo que el usuario va a ingresar cuando el programa se lo solicite.
En la siguiente línea, la variable resultado se encarga de almacenar el resultado de la operación.
Por último, la instrucción “return” se encarga de devolver el resultado obtenido hacia la función main.

La función main quedó de la siguiente manera:

int main(void){
  int lado;

  std::cout << "Ingresa el valor del lado: ";
  std::cin >> lado;
  area(lado);
  std::cout << "El area es " << area(lado) << std::endl;

return 0;
}

En esta función, se puede ver que se solicita al usuario que ingrese el valor de lado (del cuadrado), ese número es almacenado en la variable “lado”. Posteriormente se hace un llamado a la función “area", entregándole como argumento la variable “lado”. Al hacer un llamado a la función y entregarle un argumento, ésta realiza la operación y devuelve un resultado que es utilizado por la función std::cout. El resultado de este programa es el siguiente:


Una función puede tener varios argumentos, por ejemplo, voy a modificar la función  del programa anterior para  que permita calcular el área de un rectángulo. Para calcular el área de un rectángulo se necesita el valor del alto y del ancho. Como el método solicita dos valores, entonces el método tendrá dos argumentos.

La función area y prototipo, quedó de la siguiente manera:

int area(int alto, int ancho);//prototipo
int resultado; //variable que será utilizada por la función

int area(int alto, int ancho){
  resultado = alto * ancho;
  return resultado;
}

El prototipo indica que esta función debe retornar un valor de tipo entero y que recibe dos argumentos de tipo entero. La función, luego de recibir ambos argumentos ingresados por el usuario, los multiplica y guarda el total en la variable "resultado" cuyo valor es devuelto por la instrucción "return"

La función main, quedó de la siguiente manera:

int main(void){

  int alto, ancho;

  std::cout << "Ingresa el valor del alto: ";
  std:: cin >> alto;

  std::cout << "Ingresa el valor del alcho: ";
  std::cin >> ancho;

  area(alto,ancho);
  std::cout << "El area es " << area(alto,ancho) << std::endl;
return 0;
}

El programa completo entonces es el siguiente:

#include<iostream>
int area(int alto, int ancho);//prototipo
int resultado; //variable que será utilizada por la función

int area(int alto, int ancho){
  resultado = alto * ancho;
  return resultado;
}

int main(void){
  int alto, ancho;

  std::cout << "Ingresa el valor del alto: ";
  std:: cin >> alto;

  std::cout << "Ingresa el valor del alcho: ";
  std::cin >> ancho;

  area(alto,ancho);
  std::cout << "El area es " << area(alto,ancho) << std::endl;

return 0;
}


Eso es todo por ahora, solamente queda practicar y practicar hasta que esto de las funciones con o sin return resulte familiar. Hasta la próxima clase.

Gustavo J. Cerda Nilo
Febrero 2016, última actualización Julio 2016




No hay comentarios:

Publicar un comentario

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...