curso de algoritmos y esttructura de datos funciones
Post on 02-Mar-2018
218 Views
Preview:
TRANSCRIPT
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
1/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 66
Al llegar a este tema, suponemos que es de nuestro conocimiento del entrenamiento lgicoimpartido
anteriormente, reconociendo y aplicando correctamente cada estructura de programacin de tal formaque planteado un problema no tenga dudas en utilizarlas convenientemente, construyendo el algoritmoque d solucin al problema.
Ahora de lo que se trata es de darle un entono, un ambiente, una forma, un lugar, a cualquier algoritmoconstruido; al cual le llamaremos proceso o funcin(en otros lenguajes de programacin existen ademsde lasfuncioneslosprocedimientos).
En todo lenguaje de programacin ya existen una infinidad de funciones y/o procedimientos(denominadas biblioteca/librera de funciones) que pueden ser utilizados por el programador. En el caso
de C++ los ms utilizados son los conocidos :
clrscr( ): Cuya tarea es borrar pantalla.getch( ): Cuya tarea es esperar a que el usuario presione cualquier tecla. (en nuestro caso, pausapara ver resultados).
Imagnese de no existir la funcin clrscr( ), el que limpia pantalla; entonces tendramos que programar
todas las veces que necesitemos borrar pantalla (esto significa doble trabajo). Como esta tarea es demucha demanda entonces la implementamos en una funcin y la REUTILIZAMOS cuantas veces sea
necesario (que es el objetivo principal de la creacin de funciones).
Por lo tanto el programador debe implementar las funciones que no existan en la biblioteca de funcionesque viene con el propio lenguaje de programacin ( o simplemente si dichas funciones NO brindanresultados que el programador desea)
Cabe mencionar que en C++ solamente existen funciones. Existen bsicamente dos tipos de funciones:
Funciones que despus de realizar una tarea especficadevuelven resultados. Funciones que despus de realizar una tarea especfica NO devuelven resultados (en otros
lenguajes cuando una funcin no devuelve resultado se denominaProcedimiento), en todo casoslo son terminologas utilizadas por los lenguajes, pero en s la filosofa es la misma.
DECLARACION DE FUNCIONES
Ubicacin:
En C++ una de las tantas formas de estructura general de un programa es el siguiente:
FUNCIONES
Definicin: Una funcin es un proceso que realiza una determinadatarea, por lo tanto tiene unnombrey es capaz de recibir datos (entradas) y devolver resultados ( salidas ) a travs de variables especialesque toman el nombre de parmetrose inclusive devolver el resultado de la tarea a travs de su propio
nombre.
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
2/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 67
Como podemos observar las funciones se ubican al final de todo el cuerpo de main.
Sintaxis general en C++
Prototipo:
Donde:
Tipo_de_dato_que_devuelve_la_funcin identifica el valor que la funcin retornarcomoresultado a travs de su nombre, se refiere al tipo de dato de la variable que contiene el dato adevolver (que va acompaada con la sentencia return). Si la funcin no devolviera un resultadoentonces este tipo de dato es voidy no ser necesario incluir la sentencia return.
Nombre_de_la_funcin que identifica unvocamente a la funcin y debe empezar con unaletra.
Lista de parmetros son los datos (variables) de Entraday/o Salidarespecto a la funcin.
Ahora cmo diferenciar si un parmetro es una variable de Entrada o Salida ?Gran dilema para uno que recin se inicia en usar funciones:Pues la respuesta es muy sencilla: En C++ el parmetro que solamente RECIBE datos se declaracomo una variable cualquiera( ejm. int x), en cambio el parmetro que DEVUVELVE resultados
o RECIBE o DEVUELVE a la vez va precedido con el smbolo &( ejm. int &x)
Tambin se puede utilizar el * (asterisco), pero esto requiere un poco del conocimiento delconcepto de punteros o apuntadores).En buena cuenta es importante sealar que en cualquier lenguaje de programacin a losparmetros de Entrada se conocen como parmetros por valor, en cambio los parmetros de
Entrada y/o Salida son llamados comoparmetros por referencia
Variable que contiene el dato a devolverque va acompaado con la sentencia return.
Por lo tanto hay dos posibilidades para devolver resultados (parmetros de salida y lainstruccin return)
// definicin de archivo de cabecera (*.h)...
// declaracin de variables globales
...
void main()
{ // inicio de main...
...
} // fin de main
//desarrollo de funciones propias...
..
..
Tipo_de_dato_que_devuelve_la_funcin Nombre_de_la_funcin (Lista de parmetros)
{// inicio de la funcin// declaracin de variables locales(pertenecientes slo a la funcin)// conjunto de instrucciones para ejecutar la tarea a realizarreturn( Variable que tiene el dato a devolver )//slosi se devuelve un resultado
}//fin de la funcin
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
3/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 68
Entonces Cul es la diferencia en usar parmetros de salida y el return ?
Depende de los objetivos: Si la funcin solamente requiere devolver UN SOLO RESULTADO usaremosreturn(
la razn es que solamente se acepta una sola variable con esta instruccin)
Si la funcin requiere devolver MAS DE UN RESULTADO usaremos los parmetros
de Salida (en la lista de parmetros si podemos incluir todas las variables que seannecesarias).Sin embargo es posible combinar ambos enfoques.
Ejemplos de funciones cuyo tipo de dato es void
Significa que no debemos usar la instruccin return, pero tenemos la posibilidad de devolver resultados a
travs de los parmetros de salida ( es decir declaradas con el operador &) si en caso se devolviera unresultado.
Enunciado: Desarrollar una funcin que reciba un valor que represente cierta cantidad de horas ydevuelva su equivalente en minutos y segundos por separado.
Solucin:
Parmetros de Entrada/Salida:
Entrada:Horas (H) // parmetros por valor (variables de entrada)Salidas:Minutos, Segundos (M, S)// parmetros por referencia (variables en este casoslode salida, por lo tanto irn precedidas por &).
Inplementacin:
voidequivalente(float H,float &M,float &S)
{ // inicio de la funcin
M = H*60;
S = H*3600;
} //fin de la funcin
Importante:Notar que la hora a convertir se recibe (Entrada) a travs de la variable H (parmetro por
valor).
Los resultados se devuelven (Salida) a travs las variables M y S (parmetros por referencia), esdecir su equivalente en minutos y segundos.
Enunciado: Desarrollar una funcin que determine la suma de los N primeros nmeros naturales, esdecir 1+2+3+4+...+N
Solucin:
Parmetros de Entrada/Salida:
Entrada:N // parmetros por valor (variables de entrada)Salidas: Suma (Suma de los N primeros naturales) // parmetros por referencia(variables en este caso slode salida que ir precedida por &).
Inplementacin:
voidSumatoria (int N, int &Suma)
{ // inicio de la funcin
int x; // variable local de la funcin
Suma=0;
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
4/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 69
for (x = 1 ; x
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
5/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 70
Ejemplos de ejecucin (llamadas) de las funciones de tipo de dato void.
Veamos a continuacin la invocacin de funciones implementadas anteriormente.
// inclusin de archivos declaradas.
#include iostream.h
#include conio.h
//funcin principal
void main()
{// inicio de main
float Minutos, Segundos;
clrscr( );// borrar pantalla
equivalente( 6, Minutos, Segundos);cout
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
6/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 71
} //fin de la funcin
voidSumatoria (int N, int &Suma)
{ // inicio de la funcinint x; // variable local de la funcin
Suma = 0;
for (x = 1 ; x Max )
Max = b;
if ( c > Max )
Max = c;
return( Max );
} //fin de la funcin
Enunciado:Implementar una funcin que devuelva el nombre correspondiente a un nmero de mes.Entradas a la funcin: nmero de mes ( NumMes )Salida : nombre del mes ( NombreMes )
Desarrollo:
char *NombreMes(int NumMes){ // inicio de la funcin
switch ( NumMes ){
case 1 : return Enero; break;case 2 : return Febrero; break;case 3 : return Marzo; break;
case 4 : return Abril; break;case 5 : return Mayo; break;
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
7/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 72
case 6 : return Junio; break;case 7 : return Julio; break;
case 8 : return Agosto; break;case 9 : return Setiembre; break;case 10 : return Octubre; break;case 11 : return Noviembre; break;
case 12 : return Diciembre; break;default :return Desconocido ;
}} //fin de la funcin
Ejecucin o Llamada de una funcin cuyo tipo de datos NO es void
Existen tres posibilidades:
a.)
Como asignacin.
variable =Nombre_funcin (lista de parmetros);cout
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
8/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 73
NumeroMayor =Mayor(Num1, Num2, Num3);
cout
-
7/26/2019 Curso de Algoritmos y Esttructura de Datos Funciones
9/9
Urnivesidad Nacional de Moquegua Escuela Profesional de Ing. de Sistemas e InformticaCurso: Algoritmos y Estructura de Datos
MSc. Ing. Euler Tito Chura 74
case 6 : return Junio; break;case 7 : return Julio; break;
case 8 : return Agosto; break;case 9 : return Setiembre; break;case 10 : return Octubre; break;case 11 : return Noviembre; break;
case 12 : return Diciembre; break;default :return Desconocido ;
}} //fin de la funcin
Ntese que todas las llamadas a las funciones se han hecho desde la funcin principal (main); sinembargo recuerde que tambin se puede hacer desde el desarrollo de cualquier funcin.
Ahora que ya sabemos ejecutar/invocar/llamar a una funcin, vimos que las funciones propiasimplementadas por el programador que utiliza un programa pueden estar en el mismo programa (en un
solo archivo, como en los ejemplos anteriores) pero tambin pueden estar fuera del programa (es deciren otros archivos) conformando as lo que se denominan Libreras o Bibliotecas (para luego serreutilizadas).
Entonces la pregunta es: Qu funciones deben estar en el mismo programa y qu funciones deben estar
en una librera/biblioteca?. La respuesta es que s las funciones van a poder ser utilizadas en otrosprogramas lo ms lgico y recomendable es que estn en una librera, en cambio si las funciones sonespecficas y slo sirven a un programa pueden estar junto a todo el programa.
Cmo se construyen libreras/bibliotecas ?. Veremos en al apartado siguiente (PARTE TRES)
FUNCIONES PROPUESTAS
1.
Funcin de nombre DIGITOS que reciba un nmero entero grande y devuelve el dgito mayor as
como el dgito menor contenido en dicho nmero.2. Funcin de nombre SUMATORIA, que reciba un nmero entero y devuelva de los nmeros naturales
desde cero hasta el nmero dado.3.
Funcin de nombre BINARIO, que devuelva como cadena la representacin binaria de cualquier
nmero entero completado con CEROS a la izquierda, si fuera necesario, para que la cadena tengauna longitud mltiplo de 8 de acuerdo al nmero recibido.
4.
Funcin de nombre ALEATORIOENTRE, que reciba dos nmeros enteros que representan un rangoy devuelva un valor entero aleatorio comprendido en dicho rango.
top related