Você está na página 1de 12

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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.

ENCABEZADO DE UNA FUNCIN


Tipo_resultado nombre_funcin (lista_parmetros_formales) Dnde: Tipo_resultado: es el tipo de dato que devuelve (debe ser uno de los tipos simples). Nombre_de_funcin: es el nombre que tiene la funcin. Dicho nombre no puede contener espacios, smbolos o letras acentuadas. El nombre debe comenzar siempre con una letra y puede contener cualquier letra o nmero a continuacin. Parmetros: son los datos de entrada que necesita la funcin para realizar sus clculos. Los parmetros estn separados por comas y se declaran igual que las variables (tipo resultado). tipo_resultado int main ( ) No hay parmetros formales Nombre_funcin

Tema: Funciones y procedimientos

Docente: Ing. Melina Alfrez Garca

-1-

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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

Tema: Funciones y procedimientos

-2-

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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

//Devolver: valor de la variable max

CDIGO DE UNA FUNCIN EN C++


Ejemplo 1. Calcular el cuadrado de un nmero entero. int cuadrado (int e) { return (e * e); } Dados tres nmeros enteros, determinar cul es el mayor.

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.

LLAMADA A UNA FUNCIN


La llamada a una funcin se hace especificando su nombre, seguido de una lista de parmetros actuales.
Tema: Funciones y procedimientos Docente: Ing. Melina Alfrez Garca

-3-

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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

PARMETROS FORMALES Y ACTUALES


Los parmetros formales son los que se definen en el prototipo o definicin implementacin de la funcin. Los parmetros actuales son los valores pasados. long fun_max ( int v1, int v2); void main() { float limite = 32; char c = 'A'; long mval;
Tema: Funciones y procedimientos

y en la

// prototipo

Docente: Ing. Melina Alfrez Garca

-4-

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

mval = fun_max(limite, c); } Ejemplo 1.

// 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; }

Tema: Funciones y procedimientos

Docente: Ing. Melina Alfrez Garca

-5-

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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; }

MBITO DE LAS VARIABLES


La parte del programa principal o funcin en que una variable se define y se puede utilizar o alterar su contenido se conoce como mbito. Las variables utilizadas en los programas principales y subprogramas se clasifican en dos tipos: Variables locales: es aquella que est declarada y definida dentro de un subprograma. Al finalizar desaparecen de la memoria. Si dos variables, una global y una local, tienen el mismo nombre, la local prevalecer sobre la global dentro del mdulo en que ha sido declarada.
Tema: Funciones y procedimientos Docente: Ing. Melina Alfrez Garca

-6-

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

int N; cout<<"Ingrese nmero: "; cin>>N; return N;

} 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

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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.

Qu imprime el siguiente fragmento de cdigo? Comprubalo. int mi_funcion(int x) { x=x*5;


Docente: Ing. Melina Alfrez Garca

Tema: Funciones y procedimientos

-10-

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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.

Tema: Funciones y procedimientos

-11-

UNIVERSIDAD JOS CARLOS MARITEGUI CARRERA PROFESIONAL INGENIERA DE SISTEMA E INFORMTICA MOQUEGUA

ASIGNATURA: ESTRUCTURA DE DATOS II TERCER SEMESTRE

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.

10. 11. 12. 13.

14. 15. 16. 17.

TRABAJO DE INVESTIGACIN
18. 19. 20. Procedimientos Recursividad Punteros

Tema: Funciones y procedimientos

Docente: Ing. Melina Alfrez Garca

-12-

Você também pode gostar