Вы находитесь на странице: 1из 7

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA


CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Definir una funcin


Todo programa bien estructurado utiliza funciones creadas por el programador, a
continuacin se describen los pasos bsicos para trabajar con funciones.
Definicin de una Funcin: la definicin de una funcin puede ubicarse en
cualquier lugar del programa, con slo dos restricciones: debe hallarse luego de
dar su prototipo, y no puede estar dentro de la definicin de otra funcin (incluida
main() ). Es decir que a diferencia de Pascal, en C++ las definiciones no pueden
anidarse.
NOTA: no confundir definicin con llamada; una funcin puede llamar a tantas
otras como desee.
La definicin debe comenzar con un encabezamiento, que debe coincidir
totalmente con el prototipo declarado para la misma, y a continuacin del mismo,
encerradas por llaves se escribirn las sentencias que la componen; por ejemplo:
#include <stdio.h>
float mi_funcion(int i, double j ); /* DECLARACION observe que termina en ";" */
main()
{

float k ; int p ; double z ;


...........
k = mi_funcion( p, z );
/* LLAMADA a la funcin */
...........
/* fin de la funcin main() */

float mi_funcion(int i, double j ) /* DEFINICION observe que NO lleva ";" */


{
float n=2,3;
...................
printf("%d", i );
...................
return ( 2 * n );
/* RETORNO devolviendo un valor float */
}

Declaracin de una Funcin: antes de escribir una funcin es necesario


informarle al Compilador los tamaos de los valores que se le enviarn en el stack
y el tamao de los valores que ella retornar al programa invocante.
Estas informaciones estn contenidas en la DECLARACIN del PROTOTIPO DE
LA FUNCIN.
35

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Formalmente dicha declaracin queda dada por:


tipo del valor de retorno
nombre_de_la_funcin(lista de tipos de parmetros)
Algunos ejemplos :
float mi_funcion(int i, double j ) ;
double otra_funcion(void) ;
otra_mas(long p) ;
void la_ultima(long double z, char y, int x, unsigned long w) ;
El primer trmino del prototipo indica el tipo de dato retornado por la funcin; en
caso de obviarse el mismo, se toma por omisin el tipo int. Sin embargo, aunque
la funcin devuelva este tipo de dato, para evitar malas interpretaciones es
conveniente explicitarlo. Ya que el "default" del tipo de retorno es el int, se debe
indicar cuando la funcin NO retorna nada, esto se realiza por medio de la
palabra void (sin valor). Cuando no se envan argumentos, el parntesis
correspondiente queda vacio.
La declaracin debe anteceder, en el programa, a la definicin de la funcin. Es
normal, por razones de legibilidad de la documentacin, encontrar todas las
declaraciones de las funciones usadas en el programa, en el HEADER del mismo,
junto con los include de los archivos *.h que tienen los prototipos de las funciones
de Librera.
Si una ms de nuestras funciones son usadas habitualmente, se puede
disponer su prototipo en un archivo de texto, e incluirlo las veces que se necesite.

Llamados de Funcin
Una vez que en su programa se ha definido una funcin, esta puede ser llamada
las veces que sean necesarias. Para llamar a una funcin basta con hacer
referencia a su nombre y si la misma requiere de parmetros estos debern
indicarse dentro de parntesis.
Para llamar a una funcin que no requiera de parmetros se deber indicar el
nombre de la misma seguida de parntesis vacios. Por ejemplo, para llamar
una funcin llamada cuadrado, se escribira:
cuadrado();
Si la funcin cuadrado utiliza un parmetro de tipo int, se escribira:
cout << cuadrado(25);
cout << cuadrado(X);

36

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Si la funcin cuadrado utiliza un parmetro y adems devuelve un valor, su


llamada sera:
R = cuadrado(X); // guardar en R el cuadrado de X
Prototipos: para utilizar una funcin en un programa, se requiere en primer lugar
declararla y despus definirla. La declaracin de la funcin le indica al compilador
el nombre, el tipo de dato devuelto por la funcin y los parmetros pasados a la
funcin. A la declaracin de una funcin se le llama tambin el prototipo
Un prototipo es una declaracin de una funcin. Consiste simplemente en el
encabezado de la funcin, terminado con punto y coma (;) lo que hace es avisar
al compilador, como se va a llamar la funcin y si recibe y devuelve informacin
La estructura de un prototipo es:
<tipo> func(<lista de declaracin de parmetros>);
Ejemplo:
int Mayor(int a, int b); // es un prototipo de funcin que devuelve un entero y
recibe dos parmetros enteros.
Aunque C permite realizar el prototipo de la siguiente manera:
int Mayor(int,int);
Sin necesidad de escribir el nombre de las variables; entonces La estructura de
un programa en C quedara as:
[directivas del pre-procesador: include y define]
[declaracin de variables y constantes globales]
[prototipos de funciones]
funcin main ()
[definiciones de funciones] //definidas en los prototipos

Recursividad
Esta es la propiedad que tienen las funciones en C de poder llamarse a s
mismas. Se dice que una funcin es recursiva cuando se autollama. No todas
las funciones pueden llamarse a s mismas (ser recursivas), deben
estar diseadas especialmente para que tengan un final y no se conviertan en
ciclos o bucles infinitos.
Es importante notar que cuando una funcin se llama a s misma, una nueva
copia de esta funcin es la que se ejecuta. Las variables locales de la segunda
funcin no interfieren con las variables locales de la primera, as mismo, las
37

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

variables locales no se pueden afectar mutuamente. Se tomar como ejemplo


un programa que calcule el factorial de un nmero entero introducido por el
usuario. El factorial est definido como el producto del nmero en cuestin por
todos los nmeros enteros menores que l, de tal manera que el factorial de
5=5*4*3*2*1 = 120. El cdigo puede quedar as:
#include <iostream.h>
double factorial(int valor);
int K=1; // variable global, para un contador general
int main()
{
int num;
cout << "Introduzca un numero" << endl;
cin >> num;
cout << endl;
cout << El factorial del nmero es << factorial(num) << endl;
cout << "La funcin se llamo en forma recursiva " << k << " veces" << endl;
return 0;
}
double factorial(int valor)
{
double R;
if(valor<=1) return 1;
else
{
R= (valor*factorial(valor-1)); K = K+1;
}
return resultado;
}
1. La funcin se declara de tipo doble, puesto que los valores que retorna la
funcin pueden ser demasiado grandes.
2. Tambin se utiliza una variable global (K), que sirve de contador, para
determinar el nmero de iteraciones que la funcin se repite
3. El programa empieza solicitndole un nmero entero y despus llama por
primera vez a la funcin factorial ( ). La recursividad necesita una condicin
para terminar el proceso en el momento especifico, por sta razn, la funcin
factorial () determina en primer lugar si el valor pasado como parmetro de la
funcin es igual a 1, en cuyo caso la funcin retorna 1. Si el valor del
parmetro es mayor que 1, entonces la funcin factorial ( ) se llama a s
misma tomando como parmetro el valor original menos uno, multiplicando
ste valor por el valor del parmetro original y almacenando el
38

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

resultado en la variable llamada resultado. (se recomienda realizar una


prueba de escritorio para entender un poco ms el movimiento de la
funcin y sus iteraciones).
Tipos de funciones
En atencin a su formato, se pueden encontrar diferentes tipos de funciones, a
continuacin se analizarn las ms importantes.
Funciones que devuelven un tipo void
Cabe recordar que void significa vacio, por lo tanto las funciones que utilizan este
tipo no retornan valores. Si la funcin no devuelve nada, entonces no se debe
incluir en su codificacin la sentencia return, aunque su uso es opcional.
Para llamar una funcin que devuelve un tipo void, slo se necesita digitar su
nombre en una sentencia, e incluir parmetros si as fue diseada.
Ahora bien, estas funciones pueden tener o no parmetros
Funcin que retorna tipo void sin parmetros:
void Nom_Funcion( )
Ejemplo:
void Mensaje( )
{ system (cls);
cout<< Procesando informacin espere unos momentos;
}
Esta funcin se utiliza para imprimir un mensaje en pantalla, no recibe
ningn parmetro, ni retorna ningn valor.
Funcin que retorna tipo void con parmetros:
void Nom_Funcin( parmetro 1, parmetro 2, )
Ejemplo:
void Edad (int ed )
{ char nombre[30] = Marcela ;
cout<< nombre << tiene << ed << aos ;
system(pause);
}
La funcin recibe un valor de tipo inte que corresponde a una edad. Al
interior de la funcin se asigna el nombre de Mara a la variable nombre y
utilizando los contenidos de las variables nombre y ed se escribe una
expresin. Ntese que no se utiliza return porque la funcin se diseo
como tipo void.
Funciones que devuelven valores
39

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Tambin se encuentran las funciones que retornan valores que pueden ser de tipo
char, int, float, etc.
Estas funciones tambin se dividen en dos:
Funcin que retorna valor y no utiliza parmetros:
Tipo_dato Nombre_funcin( )
Ejemplo:
char letra( )
{ char opcin;
system(cls);
cout<<Indique su situacin laboral : ;
cout<<\n a. Dueo de negocio propio ;
cout<<\n b. Empleado ;
cout<<\n c. Desempleado ;
cout<<\n \n Por favor elija una opcin digitando la letra que indique su
estado laboral actual :
cin>> opcion;
return (opcion);
}
La funcin no recibe ningn valor y en interior solicita que se digite una
letra. Ese valor digitado por el usuario es el que retorna la funcin letra.
Funcin que retorna valor y utiliza parmetros:
Tipo_dato Nombre_funcin(lista de parmetros)
Ejemplo:
int Suma(int x, int y)
{ return (x+y);
}
La funcin recibe dos valores de tipo entero; al interior de la funcin los
valores recibidos se suman y mediante la instruccin return se devuelve el
resultado de la suma.

Paso de parmetros
En C++ hay dos mtodos para realizar el paso de parmetros a una funcin, estos
son: paso por valor y paso por referencia.
Es de aclarar que por defecto se utiliza el paso de argumentos por valor, a
excepcin de las situaciones en que se trabaja con arreglos.

Paso por valor


40

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

El paso por valor implica que se realiza una copia de los argumentos, antes de
que stos pasen realmente a la funcin.
Esta tcnica funciona muy bien cuando se est utilizando varibles simples, por
ejemplo nmeros o caracteres.
Ejemplo:
void Fun_paso_valor(int x, char y, int z)
{

}
La llamada a esta funcin sera:
Fun_paso_valor(3, a, 10);

Paso por referencia


Este mtodo posibilita cambiar el valor de los argumentos dentro de la funcin y
devolverlo modificado a la funcin o programa desde donde se llama.
Este mtodo es utilizado cuando se utiliza como parmetros array y estructuras.
Ejemplo:
void fun_por_referencia(int *x, int *y)
{

}
La llamada a la funcin sera: fun_por_referencia(&x, &y)
El operador & en C++ indica la direccin de una variable, dicho en otros trminos
lo que se est enviando es la direccin de memoria donde se encuentra
almacenada la variable.

Ampliar informacin consultando:


Carretero Prez, Jesus, Garcia Carballeira Felix, Garcia Snchez Jos Daniel,
Perez Menor Jos Maria, Snchez Garcia Luis Miguel. Pags. 94 a 96. Disponible
en
http://books.google.es/books?id=hERLHWu5vGIC&printsec=frontcover&dq=c%2B
%2B&hl=es&sa=X&ei=Jal7VNG7CcWogwTSioCYAg&ved=0CDsQ6AEwBA#v=one
page&q=c%2B%2B&f=false

41

Вам также может понравиться

  • Enlaces A Libros Digitales
    Enlaces A Libros Digitales
    Документ7 страниц
    Enlaces A Libros Digitales
    eduardo andres rubiano
    Оценок пока нет
  • Pregunta 1
    Pregunta 1
    Документ4 страницы
    Pregunta 1
    eduardo andres rubiano
    67% (3)
  • Cronograma Del Curso
    Cronograma Del Curso
    Документ4 страницы
    Cronograma Del Curso
    eduardo andres rubiano
    Оценок пока нет
  • Ismocol S
    Ismocol S
    Документ2 страницы
    Ismocol S
    eduardo andres rubiano
    Оценок пока нет
  • Catalogo
    Catalogo
    Документ119 страниц
    Catalogo
    eduardo andres rubiano
    Оценок пока нет
  • Rosefajofaradojoda
    Rosefajofaradojoda
    Документ2 страницы
    Rosefajofaradojoda
    Raúl Marqués Preciado
    Оценок пока нет
  • Meta Caracteres
    Meta Caracteres
    Документ5 страниц
    Meta Caracteres
    Alexis Nunez
    Оценок пока нет
  • Laboratorio Sistema Numerico
    Laboratorio Sistema Numerico
    Документ14 страниц
    Laboratorio Sistema Numerico
    Kalel Juarez
    Оценок пока нет
  • 03 Numeracion
    03 Numeracion
    Документ2 страницы
    03 Numeracion
    Carlos Pecori Zavaleta
    Оценок пока нет
  • NBLM - Texto Completo de La Clase Nº 3
    NBLM - Texto Completo de La Clase Nº 3
    Документ17 страниц
    NBLM - Texto Completo de La Clase Nº 3
    Carolina Rodríguez Gioria
    Оценок пока нет
  • 5to Grado - Bloque 4
    5to Grado - Bloque 4
    Документ56 страниц
    5to Grado - Bloque 4
    stiven miguel
    Оценок пока нет
  • 9º Mat e 31 Mayo
    9º Mat e 31 Mayo
    Документ8 страниц
    9º Mat e 31 Mayo
    Sandra Rocio Rojas Sosa
    Оценок пока нет
  • From One To Zero A Universal History Of-250-541
    From One To Zero A Universal History Of-250-541
    Документ292 страницы
    From One To Zero A Universal History Of-250-541
    jorge
    Оценок пока нет
  • 3º Nuevo Lenguaje Musical 2016
    3º Nuevo Lenguaje Musical 2016
    Документ121 страница
    3º Nuevo Lenguaje Musical 2016
    Javi Esky
    100% (2)
  • Practica 1
    Practica 1
    Документ9 страниц
    Practica 1
    Hanler Jimenez
    Оценок пока нет
  • Musica
    Musica
    Документ329 страниц
    Musica
    Carlos Bernardo Silva Sanchez
    Оценок пока нет
  • Catalogo Jochi Octub
    Catalogo Jochi Octub
    Документ40 страниц
    Catalogo Jochi Octub
    Patrick
    Оценок пока нет
  • Heavy Metal Lead Guitar
    Heavy Metal Lead Guitar
    Документ24 страницы
    Heavy Metal Lead Guitar
    Kenneth Urbieta
    Оценок пока нет
  • 03 Numeración Completo
    03 Numeración Completo
    Документ31 страница
    03 Numeración Completo
    AZURZA AGUIRRE LIZBETH
    Оценок пока нет
  • Códigos Gray, Ascii y BCD
    Códigos Gray, Ascii y BCD
    Документ8 страниц
    Códigos Gray, Ascii y BCD
    alex salas
    Оценок пока нет
  • P03 - Calculo de Presiones en Manómetros Abiertos 02
    P03 - Calculo de Presiones en Manómetros Abiertos 02
    Документ3 страницы
    P03 - Calculo de Presiones en Manómetros Abiertos 02
    Sofía marisell Quiroz trujillo
    Оценок пока нет
  • GP6 Users Manual Español v02
    GP6 Users Manual Español v02
    Документ57 страниц
    GP6 Users Manual Español v02
    JoseRevaliente
    79% (14)
  • Matematicas 2 SX
    Matematicas 2 SX
    Документ463 страницы
    Matematicas 2 SX
    ༒Alan么
    Оценок пока нет
  • Ubicamos Numeros Decimales en El TVP
    Ubicamos Numeros Decimales en El TVP
    Документ8 страниц
    Ubicamos Numeros Decimales en El TVP
    piero
    Оценок пока нет
  • IEEE754 Pasos y Ejemplos
    IEEE754 Pasos y Ejemplos
    Документ5 страниц
    IEEE754 Pasos y Ejemplos
    Rocio Quiroga
    Оценок пока нет
  • Manual Formulas DAX Power BI
    Manual Formulas DAX Power BI
    Документ19 страниц
    Manual Formulas DAX Power BI
    Eduardo Suela
    100% (2)
  • Programacion C++ en Primer Plano
    Programacion C++ en Primer Plano
    Документ52 страницы
    Programacion C++ en Primer Plano
    Krover Wilian Lazarte Ponce
    Оценок пока нет
  • MATME22E4B
    MATME22E4B
    Документ122 страницы
    MATME22E4B
    PATRICIA DUBO
    Оценок пока нет
  • Tercer Grado Mate Primaria 0
    Tercer Grado Mate Primaria 0
    Документ47 страниц
    Tercer Grado Mate Primaria 0
    Viviana
    Оценок пока нет
  • Comparacion de Fracciones para Quinto de Primaria
    Comparacion de Fracciones para Quinto de Primaria
    Документ2 страницы
    Comparacion de Fracciones para Quinto de Primaria
    Rosmery Parra
    Оценок пока нет
  • Las Vocales 2
    Las Vocales 2
    Документ74 страницы
    Las Vocales 2
    Doris Ipiales
    Оценок пока нет
  • Sistema Binario
    Sistema Binario
    Документ28 страниц
    Sistema Binario
    BryanyMaria
    Оценок пока нет
  • Tipos de Letras
    Tipos de Letras
    Документ5 страниц
    Tipos de Letras
    Carlos Perez Diaz
    Оценок пока нет
  • Los Pentagramas
    Los Pentagramas
    Документ4 страницы
    Los Pentagramas
    GEISON
    Оценок пока нет
  • Aritmetica (Cambios)
    Aritmetica (Cambios)
    Документ78 страниц
    Aritmetica (Cambios)
    efrain luis quispe tello
    Оценок пока нет