C++ Funcion y Procedimiento

31

Transcript of C++ Funcion y Procedimiento

Page 1: C++ Funcion y Procedimiento
Page 2: C++ Funcion y Procedimiento

Subprogramas

• Un subprograma, módulo o subalgoritmo puede realizar las mismas acciones que un programa.– Aceptar datos que se pasan al hacer la llamada.– Realizar cálculos o acciones, definir variables y llamar a otros

subprogramas. – Devolver o no resultados.

• El programa utiliza el subprograma para un propósito específico.• El subprograma recibe datos desde el programa y le devuelve

resultados.• El programa invoca al subprograma, éste ejecuta la tarea y a

continuación devuelve el control al programa.

Page 3: C++ Funcion y Procedimiento

Programa con Llamadas Subprogramas

Programa

Subalgoritmos

Subprograma 1

Subprograma 2

Subprograma 1.1

Algoritmo

Page 4: C++ Funcion y Procedimiento

Tipos de Subprogramas

• Funciones. – Función definidas por el usuario

– Funciones del Leguaje.

• Procedimientos.

Page 5: C++ Funcion y Procedimiento

Funciones

• Una función es, desde el punto de vista matemático, una operación que toma uno o varios operandos y devuelve un resultado.

• Una función, desde el punto de vista algorítmico, es un subprograma que toma uno o varios parámetros como entrada y devuelve un único resultado.

• Este resultado está asociado al nombre de la función, por esto, al invocar una función su valor de retorno se le asigna a una variable.

Page 6: C++ Funcion y Procedimiento

Clasificación de las Funciones

• Hay dos tipos de funciones:– Internas o Incorporadas: son funciones proporcionadas por

cualquier lenguaje de programación de alto nivel, y se clasifican en aritméticas, estadísticas, manejo de caracteres, etc.

– Externas o del usuario: son funciones que define el

programador con el propósito de ejecutar alguna tarea específica. Por lo general, se usan cuando se trata de hacer alguna tarea que será requerida en varias ocasiones por el algoritmo principal o subalgoritmos.

Page 7: C++ Funcion y Procedimiento

Declaración de una Función

• Toda función presenta la siguiente estructura:– Una cabecera con:

• Identificador o Nombre.

• Lista de parámetros (opcional).

• El tipo de dato de retorno de la función.

– El cuerpo de la función.• La sintaxis para la declaración de una función depende del lenguaje

de programación utilizado.

Page 8: C++ Funcion y Procedimiento

Sintaxis de la Declaración de la Función

tipoDatoRetorno nombre_funcion(par1:tipo1,..,parn:tipon){Declaración de variables locales de la funcion;

Grupo de Sentencias return valorRetorno;}

• nombre_funcion: nombre asociado a la función. Un nombre de identificador válido.

• par1, parn: Lista de parámetros formales o argumentos.

• tipoDatoRetorno: define el tipo de dato que retornará la función

• valorRetorno: Es el valor que regresará la función cuando sea invocada.

Page 9: C++ Funcion y Procedimiento

Sintaxis de la Declaración de la Función...1• Los parámetros dentro del cuerpo de la función se usan como si

fueran variables locales. • Cada parámetro formal o argumento debe tener su nombre y tipo de

dato al momento de declarar la función.• Los parámetros que se utilizan cuando la función es invocada, se

denominan parámetros actuales o reales. • En las variables locales se declaran las variables que se van a

utilizar dentro de la función.• Por definición una función siempre debe devolver algún valor, es

decir debe tener la instrucción retorno<valor>.• La sentencia retorno<valor> pondrá fin a la ejecución de la función y

devolverá un valor que tiene que ser del mismo tipo que el tipo declarado de la función.

Page 10: C++ Funcion y Procedimiento

Invocar una Función

• Para llamar o invocar a una función se coloca el nombre de la función y entre paréntesis se añaden los parámetros reales que necesita la función.

Nombre_funcion(lista_parámetros_actuales)

• La llamada se realiza en una sentencia de asignación, una expresión o una sentencia de salida.

• Los parámetros reales pueden ser variables, expresiones e incluso constantes.

• Hay una correspondencia posicional entre los parámetros reales y los formales.

• Cada parámetro real debe pertenecer al mismo tipo de dato de su correspondiente parámetro formal.

Page 11: C++ Funcion y Procedimiento

Ejemplo de Invocación de una FunciónDefinición de la Función1. funcion sumarEnteros(num1: entero, num2:entero):

entero2. var3. resultado: entero4. Inicio5. resultado = num1 + num26. retornar resultado 7. fin sumarEnteros

La función puede ser llamada desde el programa principal o desde cualquier otro subprograma mediante sentencias:

1. var2. resultado : Entero3. numero : Entero4. inicio5. resultado = sumarEnteros(8, 9)6. mostrar “8 + 9 es: ” resultado7. numero = 12;8. resultado = sumarEnteros(numero, 5)9. mostrar “12 + 5 es: ” resultado10. mostrar “2 + 2 es: ” sumarEnteros(2, 2)11. fin

Page 12: C++ Funcion y Procedimiento

Ejercicio 1:#include <iostream.h>int sumarEnteros(int num1, int num2){ int resultado; resultado = num1 + num2; return resultado;

}void main(){ int resultado, numero; resultado = sumarEnteros(8, 9); cout<<"8 + 9 es: "<<resultado; numero = 12; resultado = sumarEnteros(numero, 5); cout<<"12 + 5 es: "<<resultado; cout<<"2 + 2 es: "<<sumarEnteros(2, 2);}

Page 13: C++ Funcion y Procedimiento

Ejemplo de Llamada a una Función1. funcion mitad (n: entero): real2. var med: real3. inicio4. med = n / 25. retorno med6. fin mitad

1. Algoritmo calcular_mitad2. var num: entero3. inicio4. escribir “Introduzca un número entero para hallar su mitad: ”5. leer num6. escribir “La mitad de “ num ” es “ mitad(num)7. fin

Page 14: C++ Funcion y Procedimiento

Ejemplo 2.#include <iostream.h>float mitad (int n){float med; med = (float)n / 2; return med;}void main(){int num; cout<<"Introduzca un número entero para hallar su mitad:"; cin>>num; cout<<"La mitad de "<<num<<" es "<<mitad(num);}

Page 15: C++ Funcion y Procedimiento

Ejercicio 3.#include <iostream.h>int factorial(int n){

int f=1, i;if(n==0)

f=f;else

for(i=n; i>=1;i--)f=f*i;

return f;}int potencia(int b, int e){

int p=1, i;for(i=1; i<=e; i++)

p=p*b;return p;

}Continuacion…..

Page 16: C++ Funcion y Procedimiento

Continuacion…….void main(){

float y=0;int i, n;cout<<"Ingrese el numero de

terminos de la sumatoria";cin>>n;for(i=1; i<=n; i++)

y+=(float)(factorial(i)+potencia(i,4))/(potencia(i,3)+3);

cout<<"El valor de Y es: "<<y;}

Page 17: C++ Funcion y Procedimiento

Procedimientos

• Un procedimiento es un subprograma o un subalgoritmo que realiza una determinada tarea.

• No tiene ningún valor asociado a su nombre como ocurre en las funciones.

• Si devuelve información, lo hace a través de parámetros.• Al invocar a un procedimiento:

– Se le cede el control al procedimento.– Se ejecuta el procedimento.– Cuando termina se devuelve el control a la instrucción siguiente

al punto donde se efectuó la llamada al procedimiento.

Page 18: C++ Funcion y Procedimiento

Son funciones proporcionadas por cualquier lenguaje de programación de alto nivel, y se clasifican en

•Aritméticas

•Estadísticas

•Manejo de caracteres

•Fecha

•Entre otros

Para usar las funciones proporcionadas por el lenguaje se debe incluir el archivo de cabecera correspondiente mediante la siguiente sintaxis

#include <NombreArchivo.h>

Funciones Internas o Incorporadas

Page 19: C++ Funcion y Procedimiento

Funciones Matematicas librería (math.h)

Entre las funciones mas comunes se tiene

double cos(double x) devuelve el coseno de x, donde x está dado en radianes. double exp(double x) Devuelve el valor de e (la base de los logaritmos naturales) elevado a la potencia x. double fabs(double x) Devuelve el valor absoluto del número en punto flotante x. double floor(double x) Redondea x hacia abajo al entero más cercano. long int labs(long int j) Calcula el valor absoluto de un entero largo. double log(double x); Devuelve el logaritmo neperiano de x. double log10(double x) Devuelve el logaritmo decimal de x. double pow(double x, double y) Devuelve el valor de x elevado a y. double sin(double x) Devuelve el seno de x. double sqrt(double x) Devuelve la raíz cuadrada no negativa de x. double tan(double x) Devuelve la tangente de x.

Page 20: C++ Funcion y Procedimiento

Ejemplo para calcular una potencia#include <iostream.h>#include <math.h>void main(){

int b, e;cout<<"Ingrese la base y exponente";cin>>b>>e;cout<<"La potencia es:"<<pow(b,e);

}

Page 21: C++ Funcion y Procedimiento

Funciones básicas para el manejo de cadenas (string.h)

Las funciones más comunes son descritas a continuación: char *strcpy(const char *dest, const char *orig) -- Copia la cadena de caracteres apuntada por orig (incluyendo el carácter terminador '\0') al vector apuntado por dest. Las cadenas no deben solaparse, y la de destino, debe ser suficientemente grande como para alojar la copia. int strcmp(const char *s1, const char *s2) -- Compara las dos cadenas de caracteres s1 y s2. Devuelve un entero menor, igual o mayor que cero si se encuentra que s1 es, respectivamente, menor que, igual a, o mayor que s2. int strlen(const char *s) -- Calcula la longitud de la cadena de caracteres. char *strncat(char *s1, const char *s2, size_t n) -- Agrega n caracteres de s2 a s1. int strncmp(const char *s1, char *s2, size_t n) -- Compara los primeros n caracteres de dos cadenas. char *strncpy(const char *s1, const char *s2, size_t n) -- Copia los primeros n caracteres de s2 a s1.

Page 22: C++ Funcion y Procedimiento

#include <iostream.h>#include <string.h>void main(){

char *palabra1="Bienvenidos";char *palabra2="a clase";cout<<"El numero de caracteres palabra 1:"<<strlen(palabra1);cout<<"El numero de caracteres palabra 2:"<<strlen(palabra2);palabra1=strncpy(palabra1,palabra2, 7);

}

Page 23: C++ Funcion y Procedimiento

Diferencias entre Funciones y Procedimientos

• Las funciones están diseñadas para devolver un único valor. • Un procedimiento puede devolver ningún valor o varios valores por

medio de sus argumentos o parámetros.• Ninguno de los resultados devueltos por el procedimiento se asocia

a su nombre como ocurre con la función.• La llamada a una función puede formar parte de una expresión.• La llamada a un procedimiento es una instrucción aislada que por sí

sola no puede formar parte de una expresión.

Page 24: C++ Funcion y Procedimiento

Sintaxis de un Procedimiento• La sintaxis para declarar un procedimiento es similar a la de la

definición de una función, excepto que no se coloca un tipo de retorno asociado.

• La cabecera está formada por:– El nombre del procedimiento, que debe ser un identificador

válido y significativo. – Entre paréntesis los parámetros o argumentos formales que

requiere el procedimiento. • En el cuerpo del procedimiento se colocan todas las sentencias

necesarias para cumplir con su tarea.• No habrá ninguna sentencia de tipo retorno <valor>.

Page 25: C++ Funcion y Procedimiento

procedimiento <nombre> (par1:tipo1,…,parn:tipon)

var <variables locales del procedimiento>

inicio <acciones> fin

nombre: nombre asociado al procedimiento.par1,…,parn: Lista de parámetros formales o argumentos

Sintaxis de un Procedimiento…1

Page 26: C++ Funcion y Procedimiento

Llamada a un Procedimiento1. procedimiento mitad (num:entero, ent-sal med:real)2. inicio3. med = num / 24. fin mitad

1. Algoritmo calcular_mitad2. var3. n: entero4. mit: real5. inicio6. escribir “Introduce un número”7. leer n8. mitad (n, mit)9. escribir “La mitad es” mit10. fin

Page 27: C++ Funcion y Procedimiento

Ámbito: Variables Globales y Locales

• Las variables utilizadas en los programas principales y subprogramas se clasifican en dos tipos:

– Variables locales– Variable globales

• La parte del programa/algoritmo en que una variable se define se conoce como el ámbito.

• El ámbito de un identificador ya sea variable, constante o función, entre otros, se refiere a la parte del programa que lo conoce y por tanto lo puede usar.

Page 28: C++ Funcion y Procedimiento

Ámbito Global y Local• Existen dos tipos de ámbito para los

identificadores:

– Ámbito Global.– Ámbito Local.

Page 29: C++ Funcion y Procedimiento

Variables de Ámbito Global• Las Variables de Ámbito Global se refieren a

los identificadores que se declaran dentro del programa principal y fuera de cualquier otro bloque de código.

• Al ser declarados de esta forma los identificadores globales estarán disponibles a lo largo del programa.

• Se pueden usar en cualquier parte del programa, de allí su nombre de globales.

Page 30: C++ Funcion y Procedimiento

Variables de Ámbito Local• Las Variables de Ámbito Local se refieren a los

identificadores declarados dentro de un bloque de código diferente al programa principal, como por ejemplo una subrutina o procedimiento.

• Como regla general todo identificador sólo es visible y accesible:– Dentro del bloque de código que lo declara.– Dentro de los bloques anidados que este último

pueda tener. • Lo contrario no es cierto, es decir, los identificadores

declarados en un subbloque de código no son visibles ni accesibles desde bloques de código externos.

Page 31: C++ Funcion y Procedimiento

Arreglos (Matriz o Vector)• Un arreglo es un conjunto finito, consecutivo y organizado de

elementos homogéneos.

• Un arreglo es:– Finito: tiene un número determinado de elementos. – Homogéneo: todos los elementos son del mismo tipo. – Organizado: existe una forma de referenciar cada elemento del

arreglo y de acceder a cada uno de sus elementos de manera independiente.

– Consecutivo: por la forma en que se almacena o representa un vector en la memoria del computador.