Documente Academic
Documente Profesional
Documente Cultură
1.FUNCIONES
OBJETIVO DE LA UNIDAD
INTRODUCCION
Las funciones se pueden agrupar en bibliotecas que contienen rutinas comprobadas para
ser utilizadas por el programador, entre estas la más importante es la biblioteca estándar
ANSI (American National Standards Institute), por lo que resulta de gran ayuda
contar con el manual del compilador para la consulta de las muchas funciones. En
este manual se mencionarán solo algunas.
Esta Unidad iniciará con el uso de las funciones de biblioteca Estándar ANSI que vienen
incluidas con el compilador C++ y a continuación el programador aprenderá a escribir sus
propias funciones que le permitirán dividir programas extensos en tareas sencillas para
reutilizarlas en el mismo programa o en otros.
Los compiladores de C++, proporcionan la biblioteca estándar de funciones, que contiene una
colección de funciones que facilitan el realizar cálculos matemáticos, manipulación de cadenas,
funciones de entrada y salida, manejo de archivos y muchas otras cosas, de uso corriente.
Existen muchas de estas librerías, algunas tienen sus características definidas según el estándar,
ANSI C o C++; otras son específicas del compilador, otras del sistema operativo, también las hay para
plataformas Windows, LINUX u otras.
Cada biblioteca estándar tiene su archivo de cabecera que contiene los prototipos de todas las
funciones de dicha biblioteca y las definiciones de varios tipos de datos y de constantes requeridas
para dichas funciones. Este archivo de cabecera obligatoriamente se debe mencionar antes de utilizar
la función correspondiente.
En los compiladores la ayuda (F1), explica los parámetros y sintaxis para el uso de las diferentes
funciones de las librerías. La utilización o no de algunas de las funciones, depende del compilador
instalado; esto es, no todas las funciones se pueden utilizar en los diferentes compiladores.
1
MANUAL DE PROGRAMACIÓN EN C++
Para utilizar una función simplemente se escribe el nombre y entre paréntesis el argumento Los
argumentos de las funciones pueden ser constantes, variables o expresiones.
A continuación se mencionarán algunas librerías con las funciones más usuales.
Función
Descripción Ejemplo
Matemática
sqrt(x) Raiz cuadrada de x sqrt(900.0) es 30.0
x
exp(x) Función exponencial e exp(1.0) es 2.718282
abs(x) Valor absoluto de x fabs(-3.0)=3.0
y
pow(x,y) x elevado a la potencia de y (x ) pow(2,7)=128
sin(x) Seno trigonométrico de x, en radianes sin(0.0)=0.0
cos(x) Coseno trigonométrico de x, en radianes cos(0.0)=1.0
tan(x) Tangente trigonométrica de x, en radianes tan(0.0)=0.0
Ejemplo:
CÓDIGO EN C++:
//Ejemplo de utilización de funciones matemáticas.
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double c1=13.0, d=3.0, f=4.0, r;
cout<<"raiz cuadrada de 9 igual a: "<<sqrt(9.0)<<endl;
cout<<"raiz de 13+3 igual a: "<<sqrt(c1+d)<<endl;
cout<<"4 elevado a la 2 igual a: "<<pow(f,2)<<endl;
cout<<"Ingrese los radianes para calcular el coseno \n (un numero entre 0 y 6.28)"<<endl;
cin>>r;
if(r>=0 && r<=6.28)
cout<<"El coseno de "<<r<<" es: "<<cos(r)<<endl;
else
cout<<"No se realizo el calculo por no estar en el rango solicitado"<<endl;
system("pause");
return 0;
}
2
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
SALIDA:
INTERPRETACIÓN:
Muestra los resultados según los parámetros proporcionados.
Función Descripción
system("pause") Detiene la consola que muestra los resultados luego de ejecutar un programa.
system("cls") borra la consola que muestra los resultados
Cuando se ejecuta el comando de sistema system("color 2"); cambia el color de la
system("color n") fuente de la consola a verde. Otros colores: 0, negro; 1, azul; 4, roja; 5 morado; 6,
amarillo; 7 blanco; A, B, C, D, E F, produce los colores pero en tonos mas brillantes.
Genera números aleatorios, entre 0 y RAND_MAX, que es por lo menos el número
rand()
32767 o el valor máximo de un entero de dos bytes (16 bits).
Números Aleatorios:
Un número aleatorio es un resultado de una variable al azar especificada por una función de
distribución. En el computador es fácil simular la generación de números aleatorios, mediante
mecanismos de generación de números seudoaleatorios.
La función rand(), genera números seudoaleatorios, esto es, cada vez que el programa se ejecuta
genera la misma secuencia. La función srand() genera en el programa números diferentes tomando
un argumento entero como semilla. Si utilizamos la función time() o reloj del computador como
semilla, generaríamos números diferentes cada vez que se corra el programa.
Ejemplo:
3
MANUAL DE PROGRAMACIÓN EN C++
CÓDIGO EN C++:
#include<iostream>
#include <cstdlib>
#include<ctime>
using namespace std;
int main()
{ cout<<"EJEMPLO DE NUMEROS ALEATORIOS"<<endl;
system("pause");
system("cls");
system("color 2");
srand(time(NULL));
for(int x=1;x<=10;x++){
cout<<"Estoy lanzando un dado: "<<endl;
cout<<rand()%6+1<<endl;}
system("pause");
return 0;
}
SALIDA:
INTERPRETACIÓN:
Inicialmente imprime en la consola y a continuación la borra.
Seguidamente imprime 10 números aleatorios en color verde
4
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
Función Descripción
toupper() Convierte un carácter a mayúscula
Ejemplo:
CÓDIGO EN C++:
//Programa que da información de fechas de matrículas
#include<iostream>
#include <cctype>
using namespace std;
int main()
{ char Nombre[30];
char Codigo[10];
char Programa;
system("color 2");
cout<<"Escriba su Nombre Completo"<<endl;
cin.getline(Nombre,32);
cout<<"Escriba su Codigo"<<endl;
cin>>Codigo;
cout<<"Escriba el Programa: A para administracin, D para derecho, I para Ingenieria"<<endl;
cin>>Programa;
system("color 3");
cout<<Nombre<<endl;
cout<<Codigo<<endl;
Programa=toupper(Programa);
cout<<Programa<<endl;
switch(Programa){
case 'A':
cout<<"Matricula el 5 de diciembre"<<endl;
break;
case 'D':
cout<<"Matricula el 6 de diciembre"<<endl;
break;
case 'I':
cout<<"Matricula el 7 de diciembre"<<endl;
break;
default: cout<<"Dato erroneo"<<endl;
}
system("pause");
return 0;
}
5
MANUAL DE PROGRAMACIÓN EN C++
SALIDA:
INTERPRETACIÓN:
Se capturan los datos en variables carácter. Con la instrucción toupper(Programa) aseguramos que la variable quede
en mayúscula para la correspondiente selección.
Ejemplo:
CÓDIGO EN C++:
//Programa que lee un caracter del teclado y comprueba que es una letra
#include<iostream>
#include <cctype>
using namespace std;
int main()
{ char letra;
cout<<"Escriba una letra, para terminar escriba algo que no lo sea"<<endl;
cin>>letra;
while (isalpha(letra))
{
cout<<"caracter valido"<<endl;
cout<<"Escriba nuevamente una letra"<<endl;
cin>>letra;
}
cout<<"Termino por que no escribio una letra"<<endl;
system("pause");
return 0;
}
SALIDA:
6
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
INTERPRETACIÓN:
Mientras que se ingresen letras, el programa solicita datos de entrada; cuando se ingresa un número o un símbolo el
programa termina.
Una función contienen las instrucciones que le permite realizar una tarea específica. Esta
tarea puede ser utilizada varias veces por el programa o puede ser reutilizada en otro
proyecto.
Por ejemplo:
Si se quiere escribir un programa para obtener una lista de caracteres por teclado y que
el computador los ordene alfabéticamente y los visualice en pantalla, en lugar de escribir
todas las tareas en el programa principal, se puede escribir funciones independientes para
cada tarea que se mandan a ejecutar desde el programa principal así:
int main()
{
//llamar la funcion para capturar los caracteres
capturarcaracteres();
//llamar la funcion para ordenar los caracteres
ordenarcaracteres();
//llamar la funcion para visualizar los caracteres
capturarcaracteres();
}
7
MANUAL DE PROGRAMACIÓN EN C++
Las funciones contienen varias sentencias bajo un mismo nombre, que un programa
puede utilizar una o más veces.
Un programa se puede componer de varias funciones, cada una de las cuales realiza una
tarea principal. Las funciones en general se llaman desde el programa principal pero se
pueden llamar desde cualquier parte del programa.
Programa Principal
FuncionA FuncionB
Las funciones contienen las instrucciones que la tarea debe realizar, deben tener un
nombre y deben ser llamadas por su nombre para que se ejecuten, al finalizar la función
debe retornar el control al punto donde fue llamada.
A continuación se muestran dos ejemplos de programas que usan una función definida
por el programador para escribir el programa modularmente. Observe las tres partes que
conforman la función: Prototipo, Llamada y Estructura.
EJEMPLO 1:
/*programa que calcula los cuadrados de los números del 1 al 10 utilizando una funciones del usuario*/
#include<iostream>
int cuadrado(int); PROTOTIPO
using namespace std;
int main()
{
int x;
for(x=1;x<=10;x++)
cout<<”\n”<<x<<” “<<cuadrado(x); Llamada de la función
system("pause");
return 0;
}
int cuadrado(int y)
{
return y*y; ESTRUCTURA
}
8
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
EJEMPLO 2.
int main()
{
float L1,L2,L3;
cout<<"INGRESE LA MEDIDA DE LOS TRES LADOS DEL TRIANGULO"<<endl;
cin>>L1>>L2>>L3;
AREA(L1,L2,L3); Llamada de la función
system("pause");
return 0;
}
Las funciones no se pueden anidar, esto significa que una función no se puede declarar
dentro de otra función. Las funciones se pueden llamar desde cualquier parte del
programa.
PROTOTIPO DE LA FUNCIÓN
C++ requiere que una función se declare o defina antes de su uso. La declaración de la
función se denomina prototipo. Los prototipos se sitúan normalmente luego de las
instrucciones de preprocesador y terminan en punto y coma.
Un prototipo consta de los siguientes elementos: contiene inicialmente el tipo de dato que
retorna, observe que toda función solo puede retornar un dato, nombre de la función, una
lista de argumentos encerrados entre paréntesis y un punto y coma. La inclusión del
nombre de los parámetros es opcional.
Sintaxis de la instrucción:
Tipo_de_retorno nombre_función (lista_de _parámetros);
int cuadrado(int);
9
MANUAL DE PROGRAMACIÓN EN C++
LLAMADA DE LA FUNCIÓN
Sintaxis de la instrucción:
Nombre_de_la_función(parámetros);
cuadrado(x)
AREA(L1,L2,L3);
Las funciones para ser ejecutadas, han de ser llamadas o invocadas, simplemente
escribiendo su nombre y entre paréntesis los datos que requiera para que la tarea pueda
llevarse a cabo.
Al llamar la función hace que el control del programa se dirija a la función llamada, hasta
tanto se encuentre la sentencia return o llave de cierre para retornar nuevamente el
control del programa al punto desde donde fue llamada.
10
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
Sintaxis de la instrucción:
Tipo_de_retorno nombre_función (lista_de _parámetros)
{
cuerpo de la función
return expresión
}
int cuadrado(int y)
{
return y*y;
}
float S,A;
S=(X1+X2+X3)/2;
A=sqrt(S*(S-X1)*(S-X2)*(S-X3));
cout<<"EL AREA DEL TRIANGULO ES "<<A<<endl;
}
La estructura de la función se escribe por fuera del programa principal, puede ser antes o
después de la función main().
Las variables que declaren en la estructura son locales a la misma y no perduran fuera de
ella. El valor devuelto por la función se hace mediante la palabra return, cuando no se
requiere devolver valores simplemente se hace su mención.
RETORNO DE LA FUNCIÓN
Tan pronto como el programa encuentra una de las sentencias return, devuelve el control
a la sentencia llamadora. La función retorna un valor único del tipo que se defina en el
prototipo.
11
MANUAL DE PROGRAMACIÓN EN C++
Si el tipo de la función es void, esto es, que no devuelve valor, el retorno se escribe:
return;
o simplemente no se escribe nada, así:
void func1()
{
cout<<”MENSAJE DE AMISTAD”;
}
En el ejemplo1, retorna un entero producto de obtener el cuadrado del número, al punto
donde fue llamada la función en el programa principal.
return y*y;
return ;
PARAMETROS DE LA FUNCIÓN
Los parámetros son los argumentos o datos que requiere la función sean transmitidos
para poder operar.
C++ utiliza dos métodos de parámetros para pasar datos entre funciones: parámetros por
valor y parámetros por referencia. También puede no tener parámetros.
La función recibe una copia de los valores de los parámetros que le permite hacer la tarea
para la cual fue creada.
cuadrado(x)
int cuadrado(int y)
12
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
En el ejemplo2 anterior, las variables de los parámetros de la llamada L1, L2, L3, son
copiadas por las variables X1, X2, X3, en la estructura de la función:
AREA(L1,L2,L3);
Cuando C++ compila la función y el código llama a la función, esta recibe una copia de
los valores de los parámetros por lo tanto estos corresponden exactamente en cantidad y
tipo para cuando se invocan, se definen o se declaran.
Cada vez que se llama una función se establece automáticamente una correspondencia
entre los parámetros formales de la función y los parámetros del programa principal.
Cuando una función debe modificar el valor del parámetro pasado y devolver este valor
modificado a la función llamadora, se ha de utilizar el método de paso de parámetro por
referencia.
Cuando una función tiene un parámetro por referencia, este no recibe un valor, sino que
el compilador pasa la dirección de memoria del valor del parámetro a la función. Al
modificar el valor del parámetro, este queda almacenado en la misma dirección de
memoria, por lo que al retornar a la función llamadora contendrá el valor modificado.
Los parámetros por referencia reciben la dirección de los argumentos pasados y cambian
los valores de los argumentos originales.
CÓDIGO EN C++:
//Ejemplo de parámetro por referencia.
#include<iostream>
using namespace std;
int n;
void aumentar(int &);
int main()
{
cout<<"Digite valor de n: ";
cin>>n;
aumentar(n);
cout<<"\nDespues de la funcion aumentar()\n";
cout<<"n= "<<n<<'\n';
system("pause");
return 0;
}
void aumentar(int &num)
{
cout<<"\nEn la funcion aumentar()\n";
cout<<"num= "<<num<<'\n';
cout<<"Aumentamos el valor num en 10\n";
num+=10;
cout<<"Nuevo valor para num= "<<num<<'\n';
cout<<"Fin de la funcion aumentar()\n";
}
13
MANUAL DE PROGRAMACIÓN EN C++
SALIDA:
INTERPRETACION:
Se lee en main(), un valor para “n”, en el ejemplo es de 25, luego se envía como
parámetro por referencia a la función aumentar, en la función lo recibe en la variable
“num”, le sumamos 10 al valor de “num”; al terminar la función aumentar y regresar a
main(), el valor de “n”, se ve aumentado en 10.
aumentar(n);
Variables Punteros:
Una variable puntero o puntero simplemente, es una variable que contiene direcciones de
memoria de otras variables donde se almacenan datos.
El siguiente ejemplo muestra que cuando una variable se declara, se asocia tres atributos
fundamentales: nombre, tipo y dirección de memoria
CÓDIGO EN C++:
14
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
SALIDA:
INTERPRETACIÓN:
Cuando requerimos una variable para almacenar la dirección de otra variable, utilizamos
una variable puntero, para identificarla utilizamos el símbolo “*” asterisco.
CÓDIGO EN C++:
//Ejemplo de punteros.
#include<iostream>
using namespace std;
int main()
{
double a=14.5;
double* p=&a;
cout<<"a= "<<a<<endl;
cout<<"&a= "<<&a<<endl;
cout<<"p= "<<p<<endl;
cout<<"&p= "<<&p<<endl;
system("pause");
return 0;
}
SALIDA:
15
MANUAL DE PROGRAMACIÓN EN C++
INTERPRETACIÓN:
Ejemplos:
CÓDIGO EN C++:
SALIDA:
16
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
INTERPRETACIÓN:
La función maximo, tiene como tarea retornar el mayor de tres enteros. En la llamada a la función pasa como parámetro
los tres enteros a, b, c que son copiados en x, y, z.
CÓDIGO EN C++:
int main()
{
double precio=0,valiva=0;
pideprecio(&precio);
cout<<precio<<endl;
calculaiva( precio, &valiva);
cout<<precio<<" IVA: "<<valiva<<endl;
imprimeiva( precio, valiva);
return 0;
}
SALIDA:
17
MANUAL DE PROGRAMACIÓN EN C++
INTERPRETACIÓN:
El programa principal tiene tres funciones que le permiten realizar las tareas de solicitud del dato, cálculo del IVA e
impresión de los datos solicitados.
Con la primera función el valor del artículo que tenía de valor inicial de 0, se solicita el valor del artículo y queda
almacenado en la misma dirección de memoria, por lo que al retornar a la función llamadora imprime el valor del artículo
digitado por el usuario.
Con la segunda función se pasa por valor el valor del artículo y por referencia el valor del IVA, para que sea almacenado
en la misma dirección de memoria una vez se realice el cálculo.
Finalmente se imprimen los datos con la función que recibe los datos como paso de parámetros por valor.
C++ reconoce el ámbito o alcance de una variable, según haya sido declarada como local
o global.
En C++ las variables globales, tienen ámbito de programa y suelen definirse en las
declaraciones globales del programa. Pueden ser referenciadas por cualquier función en el
desarrollo del programa. Ejemplo:
#include <iostream>
using namespace std;
int g=50,h;
int main()
{
Una variable que se declara fuera de cualquier función y cuya declaración tiene la palabra
reservada static tiene ámbito de archivo fuente. Ejemplo:
static int j;
void precio()
{
Cuando las variables locales, tienen ámbito de función, se pueden referenciar desde
cualquier parte de la función pero por fuera de esta no existen. Cuando la función no se
está ejecutando, sus variables locales no ocupan espacio en memoria ya que no existen.
18
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
Ejemplo:
#include<iostream>
using namespace std;
double a = 128; //variable global
int main ()
{
double a = 256; //variable local
double b=a+a;
double c=::a+::a;
Una variable declarada en un bloque tiene ámbito de bloque y puede ser referenciada en
cualquier parte del bloque, estas no son visibles por fuera del bloque. Ejemplo:
#include<iostream>
using namespace std;
int main()
{ float x;
cout<<"Ingrese un valor "<<endl;
cin>>x;
if(x>0)
{
for(int i=0;i<=10;i++)
cout<<i<<endl;
}
//Aqui ya no es visible i
// Si escribo en este sitio: cout<<i<<endl;
// Me arroja el compilador error
system("pause");
return 0;
}
19
MANUAL DE PROGRAMACIÓN EN C++
1.4 RECURSIVIDAD
Un subprograma puede llamar otro subprograma y éste a otro, y así sucesivamente; esto
significa que los subprogramas se pueden anidar.
En el lenguaje C++, se presenta la facilidad de que una función se llame a sí misma, con
el fin de realizar un cálculo repetitivo y específico. La escritura de un procedimiento o
función recursiva es similar a sus equivalentes no recursivos; sin embargo para evitar que
la recursión continúe indefinidamente es preciso incluir una condición de terminación.
Un algoritmo típico que conduce a una implementación recursiva es el cálculo del factorial
de un número, así pues:
0!= 1
1!= 1
2!= 2*1
3!= 3*2*1
4!= 4*3*2*1
:
n!= n*(n-1)* (n-2)*…….4*3*2*1
4!= 4*3!
3!= 3*2!
2!= 2*1!
1!= 1*0!
:
n!= n*(n-1)!
20
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
int main()
{
int n;
cout<<" escriba el numero al que le desea calcular el factorial: "<<endl;
cin>>n;
cout<<" el factorial del número es: "<<Factorial(n)<<endl;
system("pause");
return 0;
}
Ejemplo:
CÓDIGO EN C++:
#include <iostream>
using namespace std;
void pidebase(int &);
void pideexpo(int &);
int potencia(int,int);
void muestracum(int,int);
int main()
{
int base,ponente=0;
do{
pidebase(base);
pideexpo(ponente);
muestracum(base,ponente);
}while(base != 0);
return 0;
}
SALIDA:
INTERPRETACIÓN:
El programa principal tiene tres funciones que le permiten realizar las tareas de solicitud de la base, el exponente e
impresión de los datos, mientras no se digite cero como base.
La función muestracum, llama la función recursiva potencia donde base es la variable que lleva el valor acumulado y
ponente es la variable que se tiene en cuenta para salir de la función.
Con la segunda función se pasa por valor el valor del artículo y por referencia el valor del IVA, para que sea almacenado
en la misma dirección de memoria una vez se realice el cálculo.
return base * potencia(base,ponente – 1) retorna el valor de la función mientras la variable ponente sea mayor de uno.
22
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
RESUMEN
- C++ permite realizar programas estructurados o modulares, con la utilización de
funciones.
- Todo programa C++ tiene la función main() y por lo general varias funciones de
biblioteca y funciones definidas por el programador, cada una de las cuales realiza una
tarea.
- Las funciones no se pueden anidar, esto significa que una función no se puede
declarar dentro de otra función.
- Las funciones contienen varias sentencias bajo un mismo nombre, que un programa
puede utilizar una o más veces en varios puntos del programa.
- Cuando una función tiene un parámetro por valor esta recibe una copia de los valores
de los parámetros, Los parámetros son los argumentos o datos que requiere la
función sean transmitidos para poder operar.
- C++ reconoce el ámbito de una variable, según haya sido declarada como local o
global, las variables globales suelen definirse en las declaraciones globales del
programa, mientras que la variables locales se definen en los cuerpos de las funciones
iniciando como primeras instrucciones.
23