Todo programa en C/C++ se compone de una o más funciones, incluyendo la función main().
El lenguaje C incluye muchas funciones de utilidad general, las cuales están organizadas en librerías.
Definición de funciones Una función en C/C++ se define de la manera siguiente:
tipo nombre (argumento1, argumento2, … ) { // instrucciones a realizar }
donde tipo representa el tipo de datos del valor devuelto por la función, y los argumentos son variables (con especificación de tipo) donde se guardan los parámetros de la función.
Ejemplo int factorial(int n) { int i, f = 1; for (i = 1; i <= n; i++) { f = f * i; } return f; }
int main() { int n; for (n = 1; n <= 10; n++) { cout << n << “! = “ << factorial(n) << endl; } }
Funciones tipo void Es posible definir una función que no devuelva ningún resultado si se declara de tipo void:
void Retardo(int segundos) { int t0 = time(); while (time() – t0 < segundos) {} }
Notar que, en este caso, no es necesario usar la instrucción return a menos que se desee terminar la función de manera prematura.
Práctica Implemente una función f(x) que tome por parámetro un número x (de punto flotante) y devuelva 3cos(x) – 1
Implemente una función llamada bisección que tome por parámetros a y b, y encuentre la raíz de la función f(x) en el intervalo [a,b]. En caso de no existir una raíz, la función deberá devolver el valor de a.
Ninguna de las dos funciones anteriores debe pedir datos al usuario o imprimir información en la pantalla.
Dentro de la función main(), pida al usuario los valores de a y b, y llame a la función de bisección para encontrar e imprimir la raíz de f(x) en [a,b]. En caso de no existir una raíz, el programa deberá actuar de manera acorde.
Paso de argumentos por valor Por lo general, las funciones reciben argumentos por valor. Esto significa que los parámetros son variables que solo existen dentro del contexto de la función:
void intercambia(int a, int b) { int temp = a; a = b; b = temp; }
int main() { int a = 1, b = 2; intercambia(a, b); cout << “a = “ << a << “, b = “ << b << endl; }
La salida de este programa es: a = 1, b = 2
Paso de argumentos por referencia El paso por referencia asocia los parámetros de una función con variables que existen fuera del contexto de la función, lo cual permite modificar su valor:
void intercambia(int &a, int &b) { int temp = a; a = b; b = temp; }
El paso por referencia es útil cuando se requiere que una función devuelva más de un resultado. Operador de referencia
Práctica Escriba su propia versión de la función exp(x) utilizando la siguiente serie:donde N es dado como segundo argumento.
Utilice la función anterior para escribir una función que calcule la densidad de probabilidad de una distribución Gaussiana con media m y varianza s 2, dada por:
Utilice la regla del trapecio para mostrar que
Ejercicios Escriba una función llamada car2pol que tome como argumentos las coordenadas de un punto (x,y) en el plano cartesiano, así como las coordenadas polares (r,a) por referencia. La función deberá calcular r y a a partir de x y y. De manera similar, escriba una función pol2car(r,a,x,y) que realice la operación inversa. Para probar ambas funciones, pida al usuario (dentro de la función main) las coordenadas cartesianas de un punto, conviértalas a polares y nuevamente a cartesianas, e imprima el resultado.
Escriba funciones llamadas mcd(a,b) y mcm(a,b) que calculen y devuelvan, respectivamente, el máximo común divisor y el mínimo común múltiplo de sus dos argumentos enteros. Use estas funciones dentro de la función main() para imprimir el mcd y mcm de dos números dados por el usuario.
Escriba una función que calcule el coeficiente binomial:tratando de que funcione para el mayor valor de n posible. Escriba una función main para probar la función anterior.
Programación estructurada Un programa estructurado se compone de tres tipos básicos de estructuras de flujo:
Secuencia: la cual indica el orden de ejecución de las instrucciones.
Selección: mediante la cual una secuencia de instrucciones se ejecuta dependiendo del estado del programa.
Repetición: mediante la cual una secuencia de instrucciones se ejecuta de manera iterativa mientras el programa se encuentre en un cierto estado.
Página siguiente |