Sie sind auf Seite 1von 11

CICLO: 00/ 2014

GUIA DE LABORATORIO Nombre de la Practica: Creacin de Funciones en lenguaje C++ Lugar de Ejecucin: Laboratorio Tiempo Estimado: 2 horas y 45 minutos CURSO: Lenguaje de Programacin

I. OBJETIVOS Que el estudiante: Formule la utilidad de las funciones en los programas de C/C++ Disee y escriba sus propias funciones dentro de un programa de C/C++ Ejercite las diversas maneras de cmo realizar la llamada a una funcin desde otra funcin. Examine cmo utilizar los valores devueltos por la funcin desde otra funcin que realiza la llamada. Programe el paso de parmetros por Valor y por Referencia a una funcin. II. INTRODUCCION TEORICA

Qu es una Funcin?
Una funcin es un modulo / seccin de cdigo independiente y separado del cuerpo principal, que realiza una tarea especifica y que opcionalmente puede regresar un valor a la parte principal del programa u otra funcin o procedimiento que la llame. Una funcin tiene las siguientes caractersticas: 1. Tiene un nico nombre. Al utilizar ste nombre en otras partes del programa se pueden ejecutar los enunciados contenidos en la funcin. A esto se le conoce como llamar a la funcin. Una funcin puede ser llamada desde otra funcin. 2. Una funcin es independiente. Una funcin puede ejecutar sus tareas sin interferencia en de otras partes del programa. 3. la funcin ejecuta una tarea especfica. Una tarea es un trabajo discreto que su programa debe ejecutar como parte de su desempeo general, por ejemplo: mandar una lnea de texto a impresin, ordenar una lista hacer un clculo matemtico. 4. Cuando un programa llama a una funcin, el programa puede enviar hacia la funcin informacin en la forma de uno o ms argumentos. Los argumentos son datos que la funcin puede necesitar para realizar su trabajo. Cuando la funcin termina su trabajo, la ejecucin del programa regresa a la lnea siguiente a la llamada a la funcin. Las funciones pueden enviar informacin al programa en la forma de un valor devuelto. 5. Cuando un programa llama a una funcin, la ejecucin del cdigo salta a la posicin inicial definida por el nombre de la funcin. El programa ejecuta los enunciados contenidos en sta y posteriormente el programa que llam a la funcin contina en la lnea de cdigo siguiente. Una funcin bien diseada ejecuta una tarea especfica y fcil de entender. Es recomendable que ante una tarea complicada, dividirla en mltiples funciones y entonces llamarlas a su debido momento.

1 / 11

Gua :

Creacin de Funciones en lenguaje C++

6. Una funcin (opcionalmente) devuelve un valor al programa que la llam. Cuando un programa llama a una funcin se ejecutan los enunciados contenidos en sta, si su programa lo requiere, stos enunciados pueden devolver un valor al programa que llam a la funcin. Existen 2 tipos de funciones que se pueden utilizar dentro de un programa creado en C: a) Funcin incluida dentro de una librera (archivo extensin .h) de C b) Funcin personalizada, creada por el programador

A. Funciones incluidas en las bibliotecas de C


Las funciones de la biblioteca de C son tiles para resolver cierto grupo de operaciones o clculos de uso comn. Hemos utilizado en guas de prctica anteriores funciones de la biblioteca math.h, stdio.h, stdlib.h, etc. Todas estas libreras permiten al programador el uso de funciones especficas para realizar tareas, y le evitan tener que desarrollar o implementar l mismo esas tareas. Lenguaje C consta de una serie de funciones almacenadas en las libreras o bibliotecas (archivos .h). A estos archivos de bibliotecas de funciones tambin se les llama Archivos de Cabecera. Cuando se desea invocar a una funcin, debe utilizarse su nombre y proporcionarse los argumentos o parmetros especificados en su definicin o prototipo, y esta devuelve un valor que puede asignarse a una variable. Funciones incluidas en libreras estndar de C. Algunos de los archivos de cabecera ms comunes de C / C++ son los siguientes: Archivo de cabecera Descripcin iostream.h Rutinas de control de flujo de entrada y salida para C++ conio.h Entrada y salida de la consola y puertos ctype.h Funciones para manejo de caracteres math.h Funciones matemticas string.h Funciones para manejo de cadenas de caracteres A continuacin se mencionan algunas de las funciones ms utilizadas incluidas en la librera math.h math.h El conjunto de funciones de MATH.H permiten realizar una gran variedad de operaciones matemticas, algebraicas y trigonomtricas. Las funciones ms utilizadas se explican a continuacin: Prototipo de funcin
double pow( x, y) double double double double double double sqrt(double x) sin(double x) cos(double x) tan(double x) asin(double x) atan(double x)

Descripcion Calcula x elevado a la potencia de y. Los argumentos x e y son de tipo double. Calcula la raz cuadrada del valor no negativo de x Calcula las funciones trigonometricas (seno, coseno y tangente) de un ngulo x (medido en radianes). Calcula valor del arco seno y arco tangente de x. Ambas funciones retornan el arco seno en el intervalo [-PI/2, +PI/2] radianes. Calcula el valor principal del arco coseno de x. El valor de dominio para x es el intervalo [-1, +1]. La funcin acos retorna el arco coseno en el intervalo [0, PI] radianes. Calcula el valor del arco tangente de y/x, usando los signos de ambos argumentos para determinar el cuadrante del valor de retorno 2

double acos(double x)

double atan2( y, x)

Lenguaje de Programacin

Gua : Prototipo de funcin


double exp(double x) double log(double x)

Creacin de Funciones en lenguaje C++

Descripcion Calcula valor de la funcin e segn el valor de argumento x. La funcin opuesta es log, que calcula el logaritmo natural (o neperiano) de un numero x. Calcula el logaritmo de x en la base 10
x

double log10(double x);

Nota: Para obtener el logaritmo de un nmero en una base determinada x, distinta de e o 10, puede utilizar un artificio matemtico como el siguiente:

log x n =

log e n log10 n = log e x log10 x

B. Funcin personalizada, definida por el Programador


En el caso de las funciones definidas por el programador, hay que recordar que su objetivo principal al escribirlas es: Divide un programa complejo en un cierto nmero de mdulos ms pequeos, y cada uno realizar una tarea especfica mas sencilla. DECLARACIN DE UNA FUNCION (PROTOTIPO) Para utilizar una funcin en un programa se requiere en primer lugar declararla y despus definirla. A la declaracin de una funcin se le llama tambin el prototipo de la funcin y como todo enunciado ejecutable en un programa C++ debe terminarse con un smbolo de punto y coma (;). La declaracin de la funcin le indica al compilador: a) El nombre de la funcin a crear b) Cada uno de los parmetros pasados a la misma. c) El tipo de dato devuelto al finalizar las tareas de la funcin

Tipodato Nombrefuncin (lista de parmetros formales);

DEFINICIN DE LA FUNCION La definicin de una funcin es en s la funcin misma. Est compuesta en su primera lnea de cdigo por el encabezado, el cual debe ser idntico al prototipo de la funcin, pero no se utiliza el punto y coma. Enseguida del encabezado se redacta el Cuerpo de la Funcin, encerrados entre llaves { }, el cual contiene el cdigo C para definir los pasos a ejecutar por la funcin. Si la funcin devuelve SOLAMENTE un valor, ste se debe especificar al final del cuerpo de la funcin. La sintaxis del Cuerpo de una funcin es la siguiente:

Tipodato | void Nombrefuncin(lista de parmetros formales) { Cuerpo de Instrucciones; return [dato | var | expresin]; }
En donde: a) Tipodato especifica el tipo de dato (Ej.: int, float, char y otros) que regresara la funcin cuando termine sus tareas. Si la funcin no regresa valor al finalizar, se debe usar la palabra clave void, que indica significa vaci. Lenguaje de Programacin 3

Gua :

Creacin de Funciones en lenguaje C++

b) La lista de parmetros formales es una lista de declaracin de variables separadas por comas (,) que almacenan los valores que recibe la funcin desde el lugar de llamada de la misma. Estas variables actan como locales dentro del cuerpo de la funcin. Si no necesita parmetros, se indica con void entre los ( ). MUY IMPORTANTE: Aunque no se ocupen parmetros, los parntesis son obligatorios. c) La instruccin return le indica a la funcin que finalice su ejecucin, y que debe regresar uno y solo un dato a la parte del programa que la llamo. Se puede regresar un valor (2, -7.453, r, etc.), una variable o una expresin algebraica, tal como lo muestran los ejemplos siguientes: a) return (23.56); b) return (area); c) return (x+15/2);

Dentro del cuerpo de la funcin puede haber una o varias instrucciones return, pero tenga en cuenta que cuando se alcanza uno de estos return(), la funcin finaliza su trabajo, ignorando el conjunto restante de lneas que falten. INVOCANDO A UNA FUNCION Una vez redactado el Prototipo y la Definicin de una funcin, se puede mandar a llamar desde un bloque de cdigo de su programa (de igual forma que las funciones incluidas en alguna librera de C). Cuando se llame a una funcin, lo har en una nueva lnea, teniendo en cuenta lo siguiente: + Si la funcin no devuelve un valor, basta con escribir el nombre de la funcin Ejemplo:
Saludar( );

+ Si la funcin devuelve un valor, debe escribir una sentencia de asignacin, en la cual, una variable reciba el valor devuelto por la funcin, ejemplo:
resultado = Nombrefuncion ();

+ A la derecha del nombre de la funcin invocada debe escribir una pareja de parntesis ( ). Si la funcin necesita de argumentos de entrada-salida, debe reemplazar cada argumento por un valor o variable que sea del mismo tipo de dato. Con toda la informacin reunida hasta este punto, esta en condicin de escribir un programa que demuestre el prototipo y definicin de una funcin. PARMETROS POR VALOR Y POR REFERENCIA En C++ el paso por valor significa que al compilar la funcin y el cdigo que llama a la funcin, sta recibe una copia de los valores de los parmetros que se le pasan como argumentos. Las variables reales no se pasan a la funcin, slo copias de su valor. Ejemplo:
#include <iostream.h> #include <conio.h>

Si pasara este parmetro por referencia, le debe agregar un & junto al parmetro valor, para indicar que enva una direccin de memoria (NO una copia del valor) de la variable enviada

void demo( int valor ) { valor=5; // le asigna un valor al parmetro recibido cout<<endl<<" >>> Dentro de funcin demo: valor="<<valor<<endl; } void main() {

Lenguaje de Programacin

Gua :

Creacin de Funciones en lenguaje C++

int n=10; cout<<"Antes de llamar a funcin demo: n="<<n<<endl; demo(n); //llama a la funcin y se le pasa variable (n) por valor cout<<"Despus de llamar a la funcin: n="<<n<<endl; getche(); }

Cuando una funcin debe modificar el valor de la variable pasada como parmetro y que esta modificacin retorne a la funcin llamadora, se debe pasar el parmetro por referencia. En este mtodo, el compilador no pasa una copia del valor del argumento; en su lugar, pasa una referencia, que indica a la funcin dnde existe la variable en memoria. La referencia que una funcin recibe es la direccin de la variable. Es decir, pasar un argumento por referencia es, simplemente, indicarle al compilador que pase la direccin del argumento. Al hacer los cambios en el programa del ejemplo anterior, la salida de este programa ser: Por qu...? 10 5 5

Una limitacin del mtodo de paso por referencia es que se pueden pasar slo variables a la funcin. No se pueden utilizar constantes ni expresiones en la lnea de llamada a la misma.

ALCANCE DE LAS VARIABLES DE C


Una variable en C puede ser declarada de acuerdo a un tipo de dato, por ejemplo: variable entera (int), entero largo (long int), punto decimal flotante (float), punto decimal de doble alcance (double), carcter (char) y otros. Una vez vistas la definicin y uso de funciones, tambin se puede clasificar a las variables de acuerdo al lugar dentro del cdigo fuente en donde se declaran. A este concepto se le denomina Alcance de la Variable. Existen 2 tipos de alcance de variables: a) Alcance Global: cuando una variable se declara justo debajo de la ultima sentencia #include (utilizadas para incluir archivos de cabeceras .H). b) Alcance Local: la variable se declara como un argumento de una funcin X o sino se declara dentro del cuerpo de la funcin X. Una variable global puede ser utilizada desde cualquiera de las funciones definidas en el cdigo fuente, ya sea main (la funcin principal de cualquier programa de C) u otras funciones. En cambio una variable local puede ser utilizada dentro del cuerpo de la funcin X en donde se halla declarado. El resto de funciones no la reconocern y generara un error de variable no declarada. Tenga en cuenta los siguientes aspectos al usar variables locales y/o globales: Se pueden declarar variables locales que tengan el mismo nombre, pero cada declaracin se realiza en funciones diferentes dentro del cdigo fuente. Cada variable puede ser de tipos de datos diferentes, y lenguaje C usar la definicin de variable correcta de acuerdo a la funcin que se invoque en la llamada. Si se declara una variable global y otra con el mismo nombre de alcance local (dentro de una funcin X), la variable local ocultar a la variable global cuando se quieran hacer operaciones dentro de la funcin X.

CONSEJO FINAL: Para crear un cdigo fuente en el cual defina y utilice funciones personalizadas, debe seguir estos 2 pasos: 1. Primero escriba la definicin (Cuerpo) de la funcin. 2. Una vez finalizado el cuerpo de la funcin, solo copie el encabezado de la misma para formar as el Prototipo, agregndole un punto y coma (;) al final del enunciado. Lenguaje de Programacin

Gua :

Creacin de Funciones en lenguaje C++

III. MATERIALES Y EQUIPO Para la realizacin de la gua de prctica se requerir lo siguiente: No. 1 2 3 Requerimiento Gua de Laboratorio Memoria US PC con DEV-C++ Cantidad 1 1 1

IV. PROCEDIMIENTO 1. Cree una carpeta denominada cu aplellido, en la cual guardara los diferentes cdigos fuentes solicitados a continuacin. 2. Redacte, analice y pruebe con varias combinaciones de entrada a cada uno de los cdigos fuentes siguientes: Ejemplo #1: Crear una funcion que solicite el nombre de un estudiante y sus 3 notas de periodo de la materia Filosofia 1. Finalmente, determine la nota promedio e indique si la aprob (con 6.0 o mas)
#include <iostream> using namespace std; #include <stdlib.h> // Prototipo de funcion NotaMateria void NotaMateria(void);

// Definiciones de funciones main(){ // Funcin principal main NotaMateria(); //invoca a funcion NotaMateria //invoca por 2da vez a funcion NotaMateria(); }//fin funcion main // Definicin de Funcin NotaMateria void NotaMateria(void){ char nomalum[20]; float n1,n2,n3,nf; //3 notas de periodo y nota final system("cls"); cout<<"Digite el nombre del estudiante: "; fflush(stdin); cin.getline(nomalum,20); cout<<"Ahora digite las 3 notas de periodo:\n"; cin>>n1>>n2>>n3; nf=n1*0.3+n2*0.35+n3*0.35; cout<<"\nESTUDIANTE "<<nomalum<< " OBTUVO UNA NOTA FINAL DE "<<nf<<endl; if(nf<6) cout<<"y reprobo el curso\n"; else cout<<"y reprobo el curso\n";

Lenguaje de Programacin

Gua :
system("pause"); }//fin funcion NotaMateria

Creacin de Funciones en lenguaje C++

Ejemplo #2: Crear 2 funciones que operen a 2 numeros enteros de la siguiente manera: Funcin resta( ): recibe 2 numeros en parmetros, para mostrar en pantalla a la diferencia entre ambos. Funcion producto ( ): recibe 2 numeros como parmetros, para retornar la multiplicacin de ambos
#include <iostream> using namespace std; #include <stdlib.h> // Prototipos de funciones resta y producto void resta(int valor1, int valor2); int producto(int valor1, int valor2); // Definiciones de funciones main(){ // Funcin principal main int numero1, numero2, resultado; cout<<"Introduzca dos numeros enteros:"<<endl; cin>>numero1>>numero2; // llamada a la funcin "resta" resta(numero1, numero2); // Al nmero1 se le resta el nmero2 resta(numero2, numero1); // Al nmero2 se le resta el nmero1 // llamada a la funcin "producto" resultado = producto(numero1, numero2); cout<<endl<<"La multiplicacion de "<<numero1<< " por "<<numero2<<" es:\t"<<resultado<<endl; system("pause"); }//fin funcion main // Definicin de Funcin resta void resta(int valor1, int valor2){ int sustrac; // variable local sustrac = valor1 - valor2; cout<<"\nLa resta de "<<valor1<<" - " <<valor2<<" es "<<sustrac; }//fin funcion resta // Definicin de Funcin producto int producto(int valor1, int valor2){ int local; // variable local local = valor1 * valor2; return(local); }//fin funcion producto

Ejemplo #3: Creacion de una funcin que retornar el mayor de 3 nmeros enteros recibidos en sus parmetros.
#include <iostream> using namespace std; #include <conio.h> //Prototipo de la funcion mayorde int mayorde(int a, int b, int c);

Lenguaje de Programacin

Gua :

Creacin de Funciones en lenguaje C++

//Definiciones de funciones main(){ int a,b,c; //variables locales de funcion main cout<<"Ingrese tres valores enteros (a,b y c):"<<endl; cin>>a>>b>>c; /*Llamada de la funcion mayorde, directamente en flujo salida de cout */ cout<<"El numero mayor es: "<<mayorde(a,b,c)<<endl; getch(); }//fin de main() //Definicion de la funcion mayorde int mayorde(int a, int b, int c){ if((a>b) && (a>c)){ return a; } if((b>a) && (b>c)){ return b; } if((c>a) && (c>b)){ return c; } if((a==b) && (b==c)){ cout<<"Los 3 numeros son iguales entre si"<<endl; return a; } } // fin funcion mayorde

Ejemplo #4 Crear una funcin que calcule el factorial de un numero recibido desde un parametro. Observar que palabra return puede usarse mas de una vez dentro de la definicin de una misma funcion
#include <iostream> using namespace std; #include <math.h> #include <conio.h> //Prototipo de la funcion factorial long factorial(int num); //cuerpo de funcion principal main() main(){ int num; cout<<"Numero a obtener su factorial:\t"; cin>>num; cout<<num<<"! = "<<factorial(num)<<endl; getch(); } //Definicion de la funcion factorial long factorial(int num){ long fact=1; if(num==0){ return (1); }else{ for(int i=1;i<=num;i++) fact *=i; //acumulador

Lenguaje de Programacin

Gua :
return(fact); }//fin if-else } // fin factorial

Creacin de Funciones en lenguaje C++

Ejemplo #5 Crear por medio de funciones la solucin al siguiente problema: Calcula el sueldo final (SF) a pagar a cada uno de los 8 empleados de empresa LA CONSTANCIA SA. Cada empleado tiene un Nivel (0, 1, 2, 3) y un Sueldo Base (SB). Para calcular el SF de un empleado se le aplican los siguientes descuentos y Bono al SB: 1. Se le aplican los descuentos de Ley: ISSS (3.1%) y Renta (9.3%). 2. Si el Nivel de empleado es 2 o 3, se le descuenta el 11.4% del SB en concepto de Seguro de Vida 3. Segn el Nivel del empleado se le calcula un Bono (por el esfuerzo hecho) sobre el SB as: Nivel 0: $7 Nivel 1: 6.4% del SB Nivel 2: 13.94% del SB Nivel 3: 21.04% del SB Al final se muestra los totales ($) en conceptos de: a) Descuentos del ISSS, b) Planilla a pagar a los empleados El programa en C debe tener una funcin para cada una de estas tareas diferentes: a) Ingreso del sueldo base y el Nivel de un empleado como parmetros. Luego calcula los 2 descuentos de ley y el seguro de vida (si se aplica), para devolver cada uno de estos resultados en el resto de los argumentos de la funcin. b) Recibe el sueldo base y el nivel del empleado como parmetros, para retornar el Bono. c) Mostrar en pantalla el valor de cada descuento, bono y el sueldo final de un empleado. Retornar el Sueldo final.
#include <iostream> using namespace std; #include <iomanip> #include <conio.h>

//prototipos de funciones void descuentos(float sb, int nivel, float &isss, float &renta, float &seguro); float calculobono(float sb, int nivel); float verempleado(float sb, int nivel, float isss, float renta, float seguro, float bono); // Definiciones de funciones main(){ // Funcin principal int te=0; //total empleados ingresados float sueldob; //sueldo base de un empleado int niv; //nivel de un empleado float disss, drenta,dseguro; //cada descuento retenido float sbono; float montoisss,planilla; cout<<"Aplicacion Contable de LA CONSTANCIA SA\n"; cout<<"ingrese el sueldo base de cada uno de sus 4 empleados.\n"; montoisss=0; planilla=0; for(te=1;te<=4;te++){ cout<<"\nEmpleado # "<<te<<endl; cout<<"\nSueldo base ?? $"; cin>>sueldob; cout<<"\nNivel (entre 0 a 4) ??"; cin>>niv;

Lenguaje de Programacin

Gua :

Creacin de Funciones en lenguaje C++

//invoca a funcion que calcula y retorna descuentos descuentos(sueldob,niv,disss,drenta,dseguro); montoisss+=disss; //invoca funcion que retorna valor del bono sbono=calculobono(sueldob,niv); planilla=planilla+verempleado(sueldob,niv,disss,drenta,dseguro,sbono); }//fin for te cout<<"\nMonto retenido en concepto de ISSS: $"<<montoisss; cout<<"\nPlanilla a pagar: $"<<planilla;

getch(); }//fin funcion main // Definicin de Funcin NotaMateria void descuentos(float sb, int nivel, float &isss, float &renta, float &seguro){ //calcula y retorna los descuentos de ley en parametros salida isss=0.031*sb; renta= 0.093*sb; seguro=0.0; switch(nivel){ case 2: case 3: seguro=0.114*sb; }//fin switch nivel }//fin funcion descuentos float calculobono(float sb, int nivel){ switch(nivel){ case 0: return(7); case 1: return(0.064*sb); case 2: return(0.1394*sb); case 3: return(0.2104*sb); } }//fin funcion calculobono float verempleado(float sb, int nivel, float isss, float renta, float seguro, float bono){ float sf; sf=sb-(isss+renta+seguro)+bono; cout<<"\nSueldo Base $"<<setw(8)<<sb; cout<<"\nDescuento de: ISSS $"<<setw(5)<<isss<<"\tRenta $"<<setw(5)<<renta<< "\tSeguro $"<<setw(5)<<seguro<<endl; cout<<"Bono $"<<setw(5)<<bono<<endl; cout<<"Sueldo liquido $"<<setw(8)<<sf<<endl; return(sf); }//fin funcion verempleado

PROBLEMAS A RESOLVER: o Crear una funcin que permita ordenar de manera ascendente a 4 valores decimales cualesquiera, recibidos como parmetros por referencia Muestre la tabla de potencias de un numero N.

La lectura del valor N y del control de ciclos se lleva a cabo en la funcin principal (main), el clculo de (N a la X) en una funcin denominada POTENCIA, y el despliegue del resultado en otra funcin diferente.

Lenguaje de Programacin

10

Gua :

Creacin de Funciones en lenguaje C++

V. DISCUSION DE RESULTADOS o Elabore una funcin que reciba en un parmetro un nmero entero y devuelva en otro parmetro si este nmero recibido es primo o no. Recuerde que un nmero primo es aquel que solamente se divide exactamente entre el mismo y la unidad. Algunos ejemplos de nmeros primos: 2, 7, 11, 19 Realizar un programa que solicite desde la funcin main() a las 3 calificaciones (discusin, preparcial y parcial respectivamente) de cada uno de los 10 estudiantes de la materia Electronica

Para completar el programa, defina una funcin diferente para realizar cada una de estas tareas: + Recibir por medio de parmetros a las 3 notas de solamente un alumno. Luego se calcula la nota promedio aplicando estos porcentajes (25%, 30% y 45%). Por ultimo, devuelva la nota calculada. + Recibir la nota promedio en un parmetro, para luego mostrar en pantalla este promedio y la confirmacin si aprob (si promedio es mayor que 6.0) o reprob la materia de Electronica.

VII. BIBLIOGRAFIA Deitel, Harvey M. y Deitel, Paul J. CMO PROGRAMAR EN C++. 1ra Edicin. Editorial Mc Graw Hill Pappas, Chris H. y Murray, William H. MANUAL DE REFERENCIA DE VISUAL C++ 6.0. 4ta Edicin Editorial Prentice Hall (PEARSON). Joyanes Aguilar, Lus. PROGRAMACIN EN C++ - ALGORITMOS, ESTRUCTURAS DE DATOS Y OBJETOS. Editorial McGraw Hill, Espaa, 2000.

Lenguaje de Programacin

11

Das könnte Ihnen auch gefallen