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
No hay comentarios:
Publicar un comentario