Escolar Documentos
Profissional Documentos
Cultura Documentos
FUNCIONES
INTRODUCCIN
Los programas sencillos, normalmente no necesitan un nivel de estructuracin elevado, es decir, pueden escribirse todo seguido como una lista de rdenes sencilla (a pesar de los bucles). Pero cuando los programas crecen un poco, es necesario estructurarlos adecuadamente para mantenerlos legibles, facilitar su mantenimiento y para poder reutilizar ciertas porciones de cdigo. El mecanismo de C++ que nos permite esto son las funciones o procedimientos. La programacin modular consiste en dividir un algoritmo (programa) en unidades de menor tamao, donde cada fragmento realiza una tarea explcita y nica. Cada uno de esos fragmentos recibe el nombre de subalgoritmo o mdulo. Por tanto, los subalgoritmos (sean funciones o procedimientos) nos permiten hacer pequeas porciones de cdigo reutilizable, que pueden ser llamados desde el resto del programa sin necesidad de repetir esas partes de cdigo cada vez que se necesiten.
DEFINICIN
Una funcin va ser un subprograma que nos devuelve un dato tipo estndar, es un subprograma que puede tomar uno o varios parmetros como entrada y devuelve a la salida un nico resultado. Adems como una accin puede realizarse ms de una vez, las funciones permiten reutilizar ese cdigo.
-1-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
A continuacin de la cabecera encontramos el cuerpo de la funcin que est entre un par de llaves ({...}). 1. 2. 3. La declaracin de variables necesarias para el clculo de la funcin. Las sentencias. La devolucin del resultado al algoritmo que invoca la funcin.
SINTAXIS
<tipo_de resultado> <nombre_funcin> ( <lista de parmetros_formales>) { Variables locales <Listas de sentencias> return (<expresin>); } Ejemplo int mi_funcion( int x) { return 0; } NOTA: Toda funcin debe tener una instruccin return en su interior para devolver el resultado calculado, en este caso representado por expresin. Ejemplo 1. Calcular el cuadrado de un nmero entero. Pseudocdigo Entero Funcin cuadrado (entero e) //Tipo_resultado: entero //Nombre_funcin: cuadrado //Lista_parmetros_formales: e de tipo entero //No hay declaracin de variables locales //Devolver: resultado de la //Evaluacin de la expresin e *e
Inicio Devolver e * e
Fin_Funcin
2.
Dados tres nmeros enteros, determinar cul es el mayor. Entero funcin mayor (entero x, entero y, entero z) //Tipo_resultado: entero //Nombre_funcin: mayor
Docente: Ing. Melina Alfrez Garca
-2-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
Entero max Inicio max = x Si (y > max) entonces max = y Fin_si Si (z > max) max = z Fin_si Devolver max Fin_funcin
//Lista_parmetros_formales: x de //tipo entero, y de tipo entero y //z de tipo entero //Declaracin_variables_locales: //max de tipo entero
2.
int mayor (int x, int y, int z) { int max = x; if (y > max) max = y; if (z > max) max = z; return (max); } NOTA: El tipo void se usa para indicar que la funcin no devuelve ningn valor, o que no existen parmetros formales.
-3-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
En la llamada a una funcin debe haber un parmetro actual por cada parmetro formal que aparece en la definicin de la funcin. Cada parmetro actual debe ser del mismo tipo de su correspondiente parmetro formal. Ejemplo Definicin de funcin Llamada de funcin : : entero funcin mayor (entero x, entero y, entero z) x = mayor(a, 5, b + c)
Si la funcin es de un tipo determinado <var> = <nombre_funcin> (<lista de parmetros actuales>) x = mayor(a, b + 1, 2) Si la funcin no tiene tipo asociado <nombre_funcin> (<lista de parmetros actuales>) mayor(x, y, z1) Dentro de una expresin <var> = x + <nombre_funcin>(<lista de parmetros actuales>) y = mayor(a + factorial(b), b, c)
Ejemplo Inicio Escribir (Introduzca los valores de a, b y c) Leer (a, b, c) P = mayor (3, 4, 6) Q = mayor (a, b, c); R = mayor (a + 1, b, 1) S = mayor (P, Q, R) Escribir (mayor =, S) Fin
y en la
// prototipo
-4-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
// Llamada a la funcion.
Calcular el rea de un rectngulo. int area_rectangulo (int a, int b); //prototipo de la funcin o declaracin int area_rectangulo (int a, int b) { int aux; aux = a*b; a=0; b=0; return aux; } void main() { int m; int lado1 = 2, lado2 = 6 ; m = area_rectangulo( lado1 , lado2 ); cout << m; }
2.
Crear un programa para calcular el precio de un producto basndose en el precio base del mismo y el impuesto aplicable. #include <conio.h> float precio(float base, float impuesto); //prototipo de la funcin o declaracin void main() { float importe = 2.5; float tasa = 0.07; cout<<"El precio a pagar es:<< precio(importe, tasa); return 0; } float precio(float base, float impuesto) //codificacin o definicin { float calculo; calculo = base + (base * impuesto); return calculo; }
-5-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
3.
Calcular los cuadrados de los enteros del 1 al 10 #include <conio.h> int cuadrado (int e) //codificacin o definicin { return (e * e); } void main () { int x; for (x = 1; x <= 10; x++) { cout<<cuadrado(x);} }
4.
El siguiente programa calcula el cubo de los nmeros del 1 al 5. #include <conio.h> int cubo(int base); void main() { int numero; for(numero=1; numero<=5; numero++) { cout<<"El cubo del nmero es<< numero<< cubo(numero); } return 0; } int cubo(int base) //codificacin o definicin { int potencia; potencia = base * base * base; return potencia; }
-6-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
Variables globales: es aquella que est declarada para el programa principal. Podemos acceder desde cualquiera de los subprogramas y el programa principal, salvo que alguno de esos subprogramas tenga definida una variable local con el mismo nombre que la variable global, en este caso si utilizo la variable local y no la global. Las variables permanecen activas durante todo el programa. Se crean al iniciarse ste y se destruyen de la memoria al finalizar.
PROCEDIMIENTOS
Son mdulos que no devuelven ningn valor en la llamada. Constituyen una sentencia del programa. El paso de parmetros y la definicin de datos locales siguen las mismas normas que con las funciones.
SNTAXIS
void <nombre_procedimiento>(<lista de parmetros formales>){ [<Constantes Locales>] [<Variables Locales>] [<Sentencias>] } Observar que no hay sentencia return. El procedimiento termina cuando se ejecuta la ltima sentencia del mismo. Ejemplo Realizar un programa que pida dos nmeros enteros por teclado y muestre por pantalla el siguiente men: MEN 1. Sumar 2. Restar 3. Multiplicar 4. Dividir 5. Salir Pseudocdigo Entero funcin Leer_Numero() Inicio Declarar variables N: entero Leer N Retornar N Fin_funcin Funcin Menu()
Tema: Funciones y procedimientos Docente: Ing. Melina Alfrez Garca
-7-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
Inicio Declaracin de variables Escribir MENU 1. Sumar 2. Restar 3. Multiplicar 4. Dividir 5. Salir Hacer Leer opcin Mientras (opcin<1 y opcin >4) Retornar opcin Fin_funcion Procedimiento Operacin (A:entero, B:entero, opcin:entero) Inicio Declarar variables En caso de (opcin) Caso 1: R=A+B Caso 2: R=A-B Caso 3: R=A*B Caso 4: R=A/B Fin_caso Mostrar R Fin_procedimiento Procedimiento Principal () Inicio Declaracin de variables Hacer Op=Menu() Si (Op<>5) A= Leer_Numero() B= Leer_Numero() Operacin(A, B, Op) Fin_si Mientras (Op<>5) Fin_procedimiento Cdigo en C++ #include<iostream.h> #include<conio.h> int Leer_Numero()
Tema: Funciones y procedimientos Docente: Ing. Melina Alfrez Garca
-8-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
} int Menu() { clrscr(); int opcion; cout<<endl<<"MENU"; cout<<endl<<"1. Sumar"; cout<<endl<<"2. Restar"; cout<<endl<<"3. Multiplicar"; cout<<endl<<"4. Dividir"; cout<<endl<<"5. Salir"; do{ cout<<endl<<"Elija opcin: ";cin>>opcion; }while(opcion<1 && opcion>4); return opcion; } void Operacion(int A, int B,int Opcion) { float R; switch(Opcion) { case 1 : R = A + B;break; case 2 : R = A - B;break; case 3 : R = A * B;break; case 4 : R = A / B; } cout<<endl<<"el resultado es:"<<R; getch(); } void main() { int A, B, Op; do{ Op=Menu(); if(Op!=5) { A=Leer_Numero(); B=Leer_Numero(); Operacion(A,B,Op); } }while(Op!=5); }
Tema: Funciones y procedimientos Docente: Ing. Melina Alfrez Garca
-9-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
EJERCICIOS PROPUESTOS
1. Qu imprime el siguiente fragmento de cdigo? Comprubalo. int mi_funcion(void) { return 3+2; } void main(void){ cout<<La function devuelve;<<mi_funcion(); } Qu imprime el siguiente fragmento de cdigo? Comprubalo. int mi_funcion(int x) { return x*x; } void main(void){ cout<<La function devuelde :<<mi_funcion(5); } Qu imprime el siguiente fragmento de cdigo? Comprubalo. int mi_funcion(int x) { int y; y=2+x*3; return y; } void main(void){ cout<<La function devuelve:,mi_funcion(5+2); } Qu imprime el siguiente fragmento de cdigo? Comprubalo. int mi_funcion(int x) { return x*x; } void main(void){ int x=3; mi_funcion(x); cout<<La function devuelve:<< mi_funcion(x); cout<<La variable vale:<< x; }
2.
3.
4.
5.
-10-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
return x; } void main(void){ int x=3; mi_funcion(x); cout<<La function devuelde:<< mi_funcion(x); cout<<La variable vale:<< x; 6. } Qu imprime el siguiente fragmento de cdigo? Comprubalo. int mi_funcion(int x) { x=x*5; return x; } void main(void){ int x=3; x=mi_funcion(x); cout<<La function devuelde:<< mi_funcion(x); cout<<La variable vale:<< x; } Qu imprime el siguiente fragmento de cdigo? Comprubalo. int mi_funcion(int x) { x=x*5; return x; } void main(void){ int y=3, x=4; cout<<La function devuelve:<< mi_funcion(y); cout<<La variable vale:<< x; } Escribir el cdigo de la funcin que devuelve el cuadrado de un nmero que recibe como argumento. Comprobar que funciona utilizando un programa de prueba como el siguiente: int cuadrado(int x) { /*cdigo a escribir*/ } void main(void){ int y=4; cout<<Introduzca un numero:; cin>>x; cout<<Su factorial:>> cuadrado(x); }
Docente: Ing. Melina Alfrez Garca
7.
8.
-11-
UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA
9.
Programa que lee dos reales, calcula el promedio y lo eleva al cuadrado e imprime el resultado. #include <conio.h> double Cuadrado(double entrada){ return entrada * entrada; } double Media(double a, double b){ return ((a+b)/2); } void main( ){ double x, y, r; cout<<"Dame dos numeros reales: "; cin>>x, y; r = Cuadrado(Media(x,y)); cout<<"Resultado es: "<<x, y, r; } Calcula el mximo entre dos nmeros. Calcular factorial de un nmero. Leer dos nmeros reales, calcula el promedio y lo eleva al cuadrado e imprime el resultado. Imprima la pirmide 1 121 12321 1234321 La declaracin de la funcin ser la siguiente: void piramide (int niveles) Siendo niveles el nmero de filas de la pirmide. Ingresar un valor entero e indique si se trata de un nmero par o impar. Calcule la suma de los cuadrados de los N primeros nmeros enteros, siendo N la entrada del subalgoritmo. Leer un vector de N elementos, y ordene de mayor a menor. Leer un vector de N elementos enteros, obtenga el nmeros de ceros que hay entre estos elementos.
TRABAJO DE INVESTIGACIN
18. 19. 20. Procedimientos Recursividad Punteros
-12-