En la programación, las funciones constituyen bloques de código aislados que podemos invocar repetidamente para realizar una operación específica dentro de un programa. Estas pueden recibir datos de entrada, procesarlos y retornar un resultado. Funcionan como "cajas negras", donde enviamos ciertos inputs y obtenemos un output.
¿Cómo definir una función en C++?
Para definir una función en C++, es necesario seguir ciertos pasos:
Tipo de dato: Determina qué tipo de dato devolverá la función. Por ejemplo, int para un número entero.
Nombre de la función: Un identificador descriptivo. Por ejemplo, suma.
Argumentos: Variables de entrada que la función procesará. Por ejemplo, int a, int b.
Cuerpo de la función: Bloque de código entre llaves {} que ejecuta el proceso deseado.
El siguiente es un ejemplo de cómo escribir una función que realiza la suma de dos números:
intsuma(int a,int b){return a + b;}
¿Cómo usar una función en C++?
Una vez definida la función, puedes invocarla desde main u otras funciones. Aquí te muestro cómo llamar a la función suma desde main para sumar dos números:
Al ejecutar este programa, se realizarán las sumas generando los resultados esperados.
¿Cómo reutilizar funciones para otras operaciones?
La reutilización de funciones es una ventaja esencial que ofrece ahorro de tiempo y organización del código. Por ejemplo, crear una función que multiplique dos números sigue un procedimiento similar:
Podemos definir valores por defecto para los argumentos de una función. Esto es particularmente útil cuando queremos evitar repetir ciertos valores al invocar la función. Así es como se establece un valor por defecto para el segundo argumento de multiplicar:
intmultiplicar(int a,int b =2){return a * b;}
Con esta función, si no se proporciona un segundo número, la función usará 2 por defecto:
Los valores por defecto facilitan la simplificación del código cuando ciertos parámetros suelen ser recurrentes.
Conclusión
Las funciones son herramientas poderosas en C++ que permiten aislar y organizar código para realizar operaciones específicas. Ya sea realizando operaciones matemáticas simples o procesos complejos, las funciones mejoran la legibilidad y reutilización del código. ¡Sigue explorando para descubrir una infinidad de posibilidades en la programación!
Venga un tema súper importante, de aquí se desprenden las estructuras de datos, la recursividad,etc. Siento que falto mucho por detallar que pasa cuando una función no devuelve un valor pero bueno también esta la parte de ser autodidactas.
sii, la verdad es que las funciones son super importantes en C y C++, hay decenas o cientos si no es que miles de cosas por explicar sobre ellas, no solo no nos daría tiempo de hablar de todo eso, además podría ser demasiado para un curso introductorio.
Esperemos que salgan más cursos intermedios y avanzados, y seguramente estarémos profundizando más sobre todos los temas que introducen estos primeros dos cursos. :D
tal como dice, en todos las clases solo se dictan ejemplos y no se explica porque se usan.
en el while solo dijo el while y ni siquiera explico o dijo algo de do while
aunque fueren cientos o miles como dice Diana, me parece que no se le da la docencia y solo hizo videos de como usar cada funcion , parametro, condicionales, nunca explico, solo hizo un ejemplo de cada uno y ya.
muy pobre esta profesora.
aqui esta mi codigo para obtener areas y volumenes de cubos, y de cilindros. les reto a completar la parte de un prisma y de una esfera.
#include <iostream>using namespace std;//funciones para un cilindrofloat A1(float r, float h)//funcion numero 1 para el area del rectangulo{ float S;S=2*3.1415*r*h;returnS;}float A12(float r, float h)//funcion numero 2 para el area del circulo { float C;C=2*3.1415*(r*r);returnC;}float V(float r, float h){ float vol; vol =3.1415*r*r*h;return vol;}//funciones para un cubo float S(float b){ float s; s = b*b*6;return s;}float A21(float b){ float a21; a21 = b*b*b;return a21;}//funciones para un prisma//funciones para una esfera//funcion principalint main(int argc, char const*argv[]){//usos del switch int option; cout <<"ingrese un numero para cada proceso"<<endl; cout <<"1 para el area, superficie y volumen de un cilindro"<<endl; cout <<"2 para el area, superficie y volumen de cubo "<<endl; cout <<"3 para el area, superficie y volumen de prisma"<<endl; cout <<"4 para el area, superficie y volumen de una esfera"<<endl; cin >> option ;switch(option){case1://cilindro
float SC, r, h,Vol; cout <<"ingrese el valor del radio r"<< endl; cin>>r; cout<<"ingrese el valor de la altura"<<endl; cin>>h;SC=A1(r, h)+A12(r,h);//ponemos entre parentesis las variables que ingresamos cout <<"la superficie del cilindro es: "<<SC<< endl;Vol=V(r,h); cout <<"el volumen del cilindro es:"<<Vol<< endl;break;case2://cubo float v2, b, s2; cout <<"ingrese el valor de la base b"<< endl; cin>>b; s2 =S(b);//ponemos entre parentesis las variables que ingresamos cout <<"la superficie del cubo es: "<< s2 << endl; v2 =A21(b); cout <<"el volumen del cubo es:"<< v2 << endl;break;case3://prisma cout <<"option 3";break;case4://esferabreak;default: cout <<"opcion no valida";break;// los breaks terminan al switch }return0;}
Qué interesante aporte, gracias.
Les dejo mi código:
#include <iostream>using namespace std;int sum(int x, int y =2){return x + y;}int res(int x, int y =2){return x - y;}int mul(int x, int y =2){return x * y;}int main(){ cout <<sum(3,3)<< endl; cout <<res(3,3)<< endl; cout <<mul(3,3)<< endl;}
Algoritmo de búsqueda binaria.
Decidí poner en práctica las funciones en C++ haciendo el algoritmo de búsqueda binaria.
#include<iostream>usingnamespace std;/**
* Find the index of a number into an sorted array.
*
* Time complexity: O(log n) where n is the size of the given collection.
* Space complexity: O(1)
*
* @param target Number to search.
* @param source Collection of numbers sorted.
* @param length size of the collection.
* @returns index Index of the number, returns -1 if the number was not found.
*/intbinary_search(int target,int source[],int length){if(length <=0){return-1;}int middle;int left_pointer =0;int right_pointer = length;while(left_pointer <= right_pointer){ middle =(left_pointer + right_pointer)/2;if(source[middle]== target){return middle;}if(target < source[middle]){ right_pointer = middle -1;}elseif(target > source[middle]){ left_pointer = middle +1;}}return-1;}intmain(){int data[7]={1,2,3,4,5,6,7};constint length =(sizeof(data)/sizeof(data[0]))-1; cout <<binary_search(4, data, length)<< endl;// 3return0;}
Te lo curraste muy enserio
funciones pueden declararce de dos maneras :
--una que te retorna un valor :
ejemplo :
int nombre_funcion(variables){
return variable que tu quieras;
}
float nombre_funcion(variables){
return variable que tu quieras;
}
char nombre_funcion(variables){
return variable que tu quieras;
}
--devuelve varios valores
void(int &variable float &variable2){
}
Hola Jhon.
Realmente una función tipo "void" no devuelve nada, lo que haces es pasar por referencia los argumentos, quiere decir que pasas la dirección en memoria donde se encuentran los datos que vas a modificar. Entonces cuando haces la modificación en ese espacio de memoria, se ven afectados los variables que pasas por referencia a la función.
Buen día.
o gracias pero en la practica como se queda almacenado en la variable yo pensaba que era lo mismo muchas gracias por tu tiempo
Qué son las funciones
Las funciones nos permiten aislar bloques de codigo para poder llamarlos cuando los necesitemos. Para esto, puede recibir valores de entrada o no, y tambien puede devolver valores si requiere.
Entonces, para crear una funcion debemos definir si va a retornar un dato y su tipo, tambien que si va a recibir datos y sus tipos.
#include <iostream>using namespace std;int suma(int a, int b){return a + b;}int main(){ cout <<suma(2,2);}
Como podemos ver, aqui creamos una funcion que devuelve un dato tipo entero y recibe dos enteros. Para invocarla escribimos su nombre y le escribimos los datos a enviar.
Código de la clase
#include <iostream>using namespace std;int suma(int a, int b){return a + b ;}//funcion de suma de dos valoresfloat multiplicacion(float a, float b =2){return a * b;}//funcionint main(){//cout<< suma(2, 782)<<endl; cout <<multiplicacion(200,6)<<endl;}
Una lista con los números pares que hay del 1 al 10, al cuadrado.
int square(int a){return a * a;}int main(){ int numbers_list[]{1,2,3,4,5,6,7,8,9,10}; int list_length =sizeof(numbers_list)/sizeof(numbers_list[0]);for(int i =0; i < list_length; i++){if(numbers_list[i]%2==0){ cout <<square(numbers_list[i])<< endl;}}}
Una pregunta... no se supone que las funciones se deben declarar en el archivo .h? Vengo de programar en Unreal Engine, en donde siempre se requiere esto.
Muchas gracias!
¿Me dices mas sobre ello? Por tu comentario me puse a ver el repo de godot (no he usado c++ antes y recordaba que ese lo usaba), y parece mas bien que son las clases y sus funciones las que ponian en los .h, y en los .cpp funciones solas.
He visto varios ejemplos de función main donde se imprime return 0 al final, ¿eso es por que declaramos la función como int?
El return 0 en la funcion main es para indicar que el programa se a ejecutado correctamente. De hecho puedes no poner el return y funcionara igual ya que hay un retorno implícito (0) en main incluso cuando no lo escribes.
Y la funcion main se declara como int ya que el standard de C++ requiere que el main devuelva un valor entero ya que su valor de retorno se usa como el código de salida.
Ya entiendo, ¡Muchas gracias!
La estructura de una función en C++ está compuesta por varios elementos clave:
Tipo de dato de retorno: Especifica el tipo de valor que la función devolverá (por ejemplo, int, float, void).
Nombre de la función: Identifica la función (por ejemplo, suma).
Paréntesis: Dentro de ellos se definen los parámetros que la función puede recibir.
Cuerpo de la función: Se encuentra entre llaves {} e incluye el código que realiza la operación.
Un ejemplo sencillo sería:
intsuma(int a,int b){return a + b;}
Esta función recibe dos enteros como parámetros y devuelve su suma.
//funciones
#include <iostream>
using namespace std;
//funcion con parametros/argumentos
int suma(int a,int b){
return a+b;}
int resta(int a, int b){
return a-b;}
int multiplicar(int a,int b){
return a*b;}
float dividir(float a, float b){
return a/b;}int main (){
float a,b;
cout<<"Que valores calcular?:"<<endl;cout<<"Primer valor:";cin>>a;cout<<"Segundo valor:";cin>>b;
cout<<"El resultado de la suma es:"<<suma(a,b)<<endl;cout<<"El resultado de la resta es:"<<resta(a,b)<<endl;cout<<"El resutado de la multiplicacion es:"<<multiplicar(a,b)<<endl;cout<<"El resultado de la division es:"<<dividir(a,b)<<endl;
}
Igualito que JS
La estructura de una función en C++ es Tipo de retorno, nombre, lista de argumentos, bloque de código, retorno opcional.
Comparto un código donde hago uso de los diferentes elementos aprendidos a lo largo del curso. Básicamente consta del calculo de algunas fórmulas matemáticas de áreas, áreas superficiales y volúmenes
<#include <iostream>using namespace std;float area_triangulo(float h, float b){return0.5*b*h;}float area_circulo(float r){return3.1415*r*r;}float area_sup_cilindro(float h, float r){return3.1415*r*r*2+2*3.1415*r*h;}float area_sup_cubo(float a, float b, float c){return2*a*b +2*a*c +2*b*c;}float vol_cilindro(float h, float r){return3.1415*r*r*h;}float vol_cubo(float a, float b, float c){return a*b*c;}float vol_esfera(float r){return4/3*3.1415*r*r*r;}int main(){ char respuesta ='s';do{ int option =0; cout <<"Elija una opción\n"; cout <<"1: Áreas (2D)\n"; cout <<"2: Áreas superficiales (3D)\n"; cout <<"3: Volúmenes (3D)\n"; cin >> option;while(option !=1&& option !=2&& option !=3){ cout <<"Selecciona un número valido\n"; cin >> option;}switch(option){case1: int res1; cout <<"Usted eligió la opción 1 (Áreas)\n"; cout <<"Elija una opción\n"; cout <<"1: Área de un triángulo\n"; cout <<"2: Área de un circulo\n"; cin >> res1;while(res1 !=1&& res1 !=2){ cout <<"Selecciona un número valido\n"; cin >> res1;}if(res1 ==1){ float h, b; cout <<"Ingrese la altura "; cin >> h; cout <<"Ingrese la base "; cin >> b; cout <<area_triangulo(h,b)<< endl;break;}else{ float r; cout <<"Ingrese el radio "; cin >> r; cout <<area_circulo(r)<< endl;break;};case2: int res2; cout <<"Usted eligió la opción 2 (Áreas superficiales)\n"; cout <<"Elija una opción\n"; cout <<"1: Área superficial de un cilindro\n"; cout <<"2: Área superficial de un cubo\n"; cin >> res2;while(res2 !=1&& res2 !=2){ cout <<"Selecciona un número valido\n"; cin >> res2;}if(res2 ==1){ float h, r; cout <<"Ingrese la altura "; cin >> h; cout <<"Ingrese el radio "; cin >> r; cout <<area_sup_cilindro(h,r)<< endl;break;}else{ float l1,l2,l3; cout <<"Ingrese el lado 1 "; cin >> l1; cout <<"Ingrese el lado 2 "; cin >> l2; cout <<"Ingrese el lado 3 "; cin >> l3; cout <<area_sup_cubo(l1,l2,l3)<< endl;break;};case3: int res3; cout <<"Usted eligió la opción 3 (Volumenes)\n"; cout <<"Elija una opción\n"; cout <<"1: Volumen de un cilindro\n"; cout <<"2: Volumen de un cubo\n"; cout <<"3: Volumen de un esfera\n"; cin >> res3;while(res3 !=1&& res3 !=2&& res3 !=3){ cout <<"Selecciona un número valido\n"; cin >> res3;}if(res3 ==1){ float h, r; cout <<"Ingrese la altura "; cin >> h; cout <<"Ingrese el radio "; cin >> r; cout <<vol_cilindro(h,r)<< endl;break;}elseif(res3 ==2){ float l1,l2,l3; cout <<"Ingrese el lado 1 "; cin >> l1; cout <<"Ingrese el lado 2 "; cin >> l2; cout <<"Ingrese el lado 3 "; cin >> l3; cout <<vol_cubo(l1,l2,l3)<< endl;break;}else{ float r; cout <<"Ingrese el radio "; cin >> r; cout <<vol_esfera(r)<< endl;break;}} cout <<"Pon 's' en caso de que desee hacer un nuevo calculo, pon otra letra si no: "; cin >> respuesta;}while(respuesta =='s');}>
Ejemplo:
#include <iostream>using namespace std;int suma(int a, int b){ cout << a <<" + "<< b <<" : ";return a + b;}int main(){ cout <<suma(4,5);}
Dejo por aquí mi código de la clase espero sea de apoyo :)
#include <iostream>using namespace std;float suma(float a, float b){return a + b;}float multiplica(float a, float b){return a * b;}float divide(float a, float b =2){return a / b;}int main(){ float numeroA; float numeroB; cout <<"Ingresa el primer numero: "<< endl; cin >> numeroA; cout <<"Ingresa el segundo número: "<< endl; cin >> numeroB; cout <<"Resultado con suma: "<<suma(numeroA, numeroB)<< endl; cout <<"Resultado con multiplicación: "<<multiplica(numeroA, numeroB)<< endl; cout <<"Resultado con división: "<<divide(numeroA, numeroB)<< endl;return0;}
#include <iostream>using namespace std; int suma(int valor1, int valor2){return valor1 + valor2;} int multiplicar(int valor1, int valor2){return valor1 * valor2;} int main(){ int valor1 =0; int valor2 =0; cout <<"Suma y multiplica dos números"<< endl; cout <<"Número 1: "; cin >> valor1; cout <<"Número 2: "; cin >> valor2; int sumaFunction =suma(valor1, valor2); int multiplicarFunction =multiplicar(valor1, valor2); cout <<"La suma es: "<< sumaFunction << endl; cout <<"El producto es (multiplicacion): "<< multiplicarFunction << endl;}
CODIGO DE LA CLASE
#include <iostream>using namespace std;int suma(int a, int b){return a+b;}int multiplicacion(int a,int b){return a*b;}/*MULTIPLICACION CON ULTIMO ARGUMENTO POR DEFECTO*/int multiplicaciondefecto(int a,int b=2){return a*b;}int main(){ cout <<multiplicaciondefecto(5);return0;}