Está en la página 1de 10

1 PROGRAMACIÓN MODULAR

Hasta este punto la gran mayoría de los programas que se han desarrollado, son mucho más
largos de lo realmente necesario, ya que la mejor forma de escribirlos y mantenerlos es a
partir de segmentos menores o módulos, denominados funciones de usuario; siendo cada una
de ellas más fáciles de manipular, al contrario de los programas que contienen la totalidad de
su código en una sola función.

Utilizar funciones en la elaboración de un programa en el lenguaje C++, facilita el diseño,


implementación, operación y mantenimiento de programas con gran cantidad de código.

La programación modular, también llamada programación estructurada, se realiza cuando el


programador define funciones de usuario, donde cada una realiza una tarea sencilla.

En el siguiente diagrama la función principal o main se comunica con varias funciones en


forma jerárquica y estas a su vez se relacionan con otras funciones.

Para aplicar el concepto de funciones en un programa, se sugiere seguir los siguientes pasos:
 Declaración: es la instrucción que se realiza antes de su usar la función, y la cual se
le denomina prototipo.
 Llamado: es la instrucción que permite invocar el uso de la función, la cual puede
retornar o no valores.
 Definición: es la estructura que define el conjunto de instrucciones necesarias para
que la función cumpla con su cometido.

A continuación se muestra un programa que usa una función definida por el programador para
calcular el cuadrado de un número. Observe las tres partes que conforman la función:

Ejemplo:

/*Programa que calcula los cuadrados de los números del 1 al 10


utilizando una funciones del usuario*/
#include<iostream>
int cuadrado(int);
using namespace std; Declaración
int main() {
int x; Llamado
for (x = 1; x <= 10; x++)
cout << x << " " << cuadrado(x) << endl;
system("pause");
}
int cuadrado(int y) {
Definición de la función
Definición
return y*y;
}
1
1.1 PROTOTIPO DE LA FUNCIÓN

C++ requiere que una función se declare antes de su uso. La declaración de la función se
denomina prototipo. Los prototipos se sitúan en las instrucciones de preprocesador.
Sintaxis de la instrucción:

Tipo_de_retorno nombre_función (lista_de _parámetros);

Tipo de retorno: Tipo de dato que retorna la función, una función solo retorna un
dato a la vez, en caso de que la función no tenga que retornar
nada, se escribe la palabra reservada void.
Nombre de la función: identificador apropiado de la función.

Lista de parámetros: son los datos que recibe la función para llevar a cabo su tarea. En
el prototipo solo se describe el tipo de dato de cada uno de los
parámetros, en caso de que sean varios se deben separar con
comas.

Como el prototipo es una instrucción, se debe finalizar con un punto y coma.

Ejemplos:
int cuadrado(int); float
radianes(float); double
area(float,float); void
imprimir(int,long int,float);
void titulos(void);

1.2 LLAMADA DE LA FUNCIÓN


Como se ha abordado en unidades anteriores, el proceso de compilación de un programa o
proyecto en el lenguaje C++, inicia por la función main(), por ende, se le cataloga como la
función principal.

2
Una de las características principales de una función es que puede ser invocada desde
cualquier parte del programa y reutilizarse si así se requiere. En el caso de las funciones de
usuario, existe la opción de incluir dentro de sus paréntesis uno o más argumentos, los cuales
son sencillamente variables con datos para ser enviados al desarrollo de la función.

Sintaxis de la instrucción:
Nombre_de_la_función(argumentos); Ejemplos:
z=ecuacion(x,y);
cout<<Area_del_circulo(x);
cout<<x<<" "<<cuadrado(x)<<endl;
imprimir(a,b,c); titulos();

El llamado de la función conlleva a su ejecución, y podrá retornar o no algún valor. Si en el


proceso de llamado de la función no se desea enviar datos, el paréntesis no contendrá
argumentos, como se observa en la función titulos(), de los ejemplos anteriores.

Las funciones de programador no se pueden anidar, esto significa que una función no se puede
declarar dentro de otra función.

En el ejemplo, la función de nombre ecuación proporciona los datos almacenados en x y y,


para que se realice la tarea y retorne el resultado para almacenarlo en la variable z.

En la segunda línea del ejemplo, se llama la función Area_del_circulo y se le proporciona el


dato almacenado en el argumento x, para que el resultado que retorne sea impreso.

En C++ todas las funciones son externas o globales, es decir, pueden ser llamadas desde
cualquier punto del programa, ya sea desde la función principal o desde otra función.

1.3 DEFINICIÓN DE LA FUNCIÓN (ESTRUCTURA)

La estructura de la función es la que contiene las sentencias o el código para realizar la tarea
para la cual fue creada. Se puede escribir antes o después de la función main().

Sintaxis de la instrucción:

Tipo_de_retorno nombre_función (lista_de _parámetros)


{ cuerpo de la función
return expresión;
}

La primera línea se llama la cabecera de la función y encerrado entre llaves, se escribe el


cuerpo de la función

Tipo de retorno: Tipo de dato que retorna la función, debe coincidir con lo escrito
en el prototipo.

Nombre de la función: Escriba el identificador escogido para el prototipo.

3
Lista de parámetros: A diferencia del prototipo, además del tipo de dato a utilizar, se
debe declarar las variables locales a la función que se está
definiendo.
{ }: Las llaves encierran el cuerpo de la función.

Ejemplos:

int cuadrado(int y)
{ return y * y;
}
void imprimir(int a,long int b,float
c)
{
cout<<"EDAD: "<<a<<endl;
cout<<"IDENTIFICACION: "<<b<<endl; cout<<"SUELDO BASICO:
"<<c<<endl; cout<<"SUELDO A PAGAR: "<<c*0.11<<endl; }

1.4 RETORNO DE LA FUNCIÓN


El retorno de la función se escribe como última línea en la estructura de la función. Una
función retorna un valor único del tipo que se defina en el prototipo.
Ejemplo:

return y * y;
Al tomar como referencia el ejemplo del apartado anterior, se observa una instrucción que
retorna un entero, producto de obtener el cuadrado del número a la llamada de la función.
Las funciones que no devuelven valores, se denominan de tipo void o procedimientos.

1.5 ÁMBITO DE LAS VARIABLES

C++ reconoce el ámbito de una variable, según haya sido declarada como local o global.

El ámbito de la variable es la parte del programa en que el compilador la reconoce. Si una


función reconoce una variable, se dice que es visible en esa función.

Las variables globales pueden ser referenciadas por cualquier función en el programa,
mientras que las variables locales tienen ámbito solo en la función.

Las variables globales tienen ámbito de programa, por lo que suelen definirse en las
declaraciones globales del programa. Las variables locales, tienen ámbito de función, es
decir, se pueden referenciar desde cualquier parte de la función, pero por fuera de esta no
se pueden utilizar, y se definen casi siempre como primeras instrucciones en los cuerpos de
las funciones.

/*Programa que muestra variables globales y locales*/

#include<iostream>
double z; int
cuadrado(int); void
imprimir(void);
using namespace std;

4
int main()
{ int x;
cout<<"Ingrese un valor para x:"<<endl;
cin>>x; z=cuadrado(x); imprimir();
system("pause"); return 0;
}
int cuadrado(int y)
{ return y*y; }
void
imprimir(void)
{
cout<<"El cuadrado es: "<<z<<endl;
return;
}

La variable global z, es visible en todo el programa, por lo que es referenciada en la función


main y en la función imprimir. Las variables x y y, son locales y solo son visibles en la
función en la cual fueron declaradas.

En caso de que una variable global y una local tengan el mismo nombre, el programa
reconocerá el ámbito de la variable local. Si el programador requiere el dato de la variable
global, deberá utilizar un juego de doble dos puntos (::), antes de la variable para utilizarla.

Ejemplo:

/*Programa que muestra variables globales y locales*/


#include<iostream>
double a = 1; using
namespace std;
int
main()
{ double a = 5; double
b= a + a;
double c=::a + ::a;
cout << "Local a: " << a << endl; cout <<
"Local b: " << b << endl; cout << "Global
a: " << ::a << endl; cout << "Local c: "
<< c << endl;
system("pause");
return 0; }

5
1.6 PASO DE PARAMETROS POR VALOR
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 argumentos en el programa principal; es decir, a
cada parámetro de la función, se le asigna el valor real en su correspondiente argumento. A
esto se le denomina parámetros por valor o llamada por valor.

Cuando C++ compila la función y el código llama a la función, esta recibe una copia de los
valores de los argumentos que deben corresponder exactamente en cantidad y tipo a los
parámetros declarados.

La siguiente ilustración muestra como es esta correspondencia:

float calculo(float, float, float);


int main()
{
cout<<calculo(numero,
años, tasa);
}

En este caso se establece una correspondencia entre los tres parámetros de la función calculo
y los argumentos en la llamada de la función desde el programa principal.

EJERCICIO 1
En el siguiente ejemplo se muestra un programa que contiene una función de usuario que
recibe tres parámetros y retorna el mayor de los tres números proporcionados:
/*Programa que calcula el mayor de tres enteros*/
#include<iostream> int
maximo(int,int,int);
using namespace std;
int
main()
{ int a,b,c;
cout<<"Digite tres enteros: ";
cin>>a>>b>>c;
cout<<"El Maximo es: "<< maximo(a,b,c)<<endl;
system("pause"); return 0;
}
int maximo(int x,int y,int
z)
{ int max=z; if
(x>y&&x>z)
max=x;
if (y>x&&y>z)
max=y;
return max;
}

6
El prototipo de la función, es declarado en las instrucciones de preprocesador.
Declara la función entera de nombre máximo y la lista de los parámetros, en este
caso son tres enteros.

En la función principal, se hace la llamada de la función desde el flujo de salida, esto


es se invoca la función maximo, con sus argumentos. Una vez la función retorna el
valor, estará listo el programa para la impresión.

A continuación del programa principal se encuentra la estructura de la función, en el


encabezado, se indica el tipo de dato que regresa, el nombre de la función y los
argumentos, así esta función recibe tres parámetros enteros en las variables x, y, z
y retorna un valor entero.

En la función se declara la variable entera local max para el cálculo del máximo de
tres números enteros. La instrucción de retorno a su punto de referencia, devuelve el
valor que contiene la variable max.

EJERCICIO 2
En el siguiente ejemplo se muestra un programa, donde se utilizan procedimientos para
imprimir resultados:

/*Programa que intercambia los dígitos para números entre 10 y 99


utiliza un procedimiento para imprimir*/
#include<iostream> void
intercambio(int); using
namespace std;
int
main()
{ int a;
cout<<"Entre UN NUMERO ENTRE 10 Y 99: "<<endl;
cin>>a;
if (a>=10 && a<=99)
intercambio(a);
else
cout<<"\n DATO INVALIDO: ";

cout<<"\n FIN DEL PROGRAMA ";


system("pause");
return 0;
}
void intercambio(int x)
{ int z, y;
z=x%10;

7
y=x-z;
y=y/10;
cout<<x<<" invertido es: "<<z*10+y;
}

Como el prototipo de la función intercambio inicia con void, indica que no hay retorno de
valor en esta función o procedimiento; así mismo, se le declara un parámetro de tipo entero.

En caso de que se cumpla la condición se hace el llamado a la función intercambio, con el


argumento a, de lo contrario cuando no se cumple la condición llama el flujo de salida: DATO
INVALIDO.

En la definición del procedimiento, se encuentra el encabezado void, el nombre de la función


y el argumento, así esta función recibe el valor en el parámetro x. La Instrucción de retorno
es sin parámetros.

EJERCICIO 3
/*Programa de juegos de azar*/
#include<iostream> #include<time.h>
#include<stdlib.h>
int ALEATORIO(int); using namespace
std; int main() { int
n,a,A=0,b,c,opcion=1; while (opcion!=9)
{
cout<<endl<<"===================== "<<endl<<endl;
cout<<" CASINO
"<<endl<<endl; cout<<"1.
Cara o Sello"<<endl; cout<<"2.
Juego del Dado"<<endl; cout<<"3. Numero
magico"<<endl;
cout<<"oprima la tecla 9 para salir del
programa"<<endl<<endl; cout<<"seleccione la opcion:";
cin>>opcion; switch(opcion) {
case 1:
n=2;
cout<<"Elija 1 para cara -0 para sello"<<endl;
cin>>c; a=ALEATORIO(n); if(c==a)

8
cout<<"====GANO==== salio "<<a; else
cout<<"====PERDIO==== salio"<<a; break;
case 2:
n=6;
cout<<"Adivine el numero que saca el dado
"<<endl; cin>>c; a=ALEATORIO(n); if(c==a+1)
cout<<"====GANO==== salio "<<a+1; else
cout<<"====PERDIO==== salio"<<a+1;
break;
case 3:
n=99;
cout<<"adivine el numero magico"<<endl;
a=ALEATORIO(n); while(a!=c) {
A=A+1; cin>>c; if(a<c) cout<<"mas
pequeño"<<endl;
else if (a>c) cout<<"mas
grande"<<endl;
else cout<<"ha ganado en "<<A<<" intentos"<<endl;
break;
}
break; case 9: cout<<"Gracias por usar nuestros
juegos "<<endl; break;
default: cout<<"opcion fuera del
menu"<<endl;
}

} system("pause");
return 0;
} int ALEATORIO (int
x) {
srand(time(NULL));
return rand()%x;
}

9
La función generará los números aleatorios, necesarios para cada uno de los juegos. El
programa se desarrolla mediante un menú de opciones que hace en cada juego la
llamada a la función.

RESUMEN

- El lenguaje de Programación C++ permite realizar programas estructurados o modulares,


con el uso de funciones.

- Las funciones de usuario es un conjunto de instrucciones que cumple con una labor
específica, que puede ser utilizada una o varias veces en el programa.

- Los programas en C++ poseen varios tipos de funciones, unas predefinidas por el
lenguaje como la función main, y funciones de biblioteca y otras funciones definidas por
el programador.

- Las funciones no se pueden anidar, esto significa que una función no se puede declarar
dentro de otra función.

- Para utilizar funciones en un programa, se sugiere seguir estos pasos: Que la función se
defina antes de su uso (prototipo), que se haga la llamada de la función y finalmente que
se defina o escriba la función (estructura).

- La estructura de una función se puede escribir antes o después de la función main().

- El llamado a una función se realiza mediante su nombre y los argumentos que


proporcionan la información necesaria, para llevar a cabo la tarea designada.

- Un procedimiento a diferencia de las funciones, no devuelve valores, por lo tanto inician


con la palabra void.

- Los procedimientos siguen las mismas reglas que las funciones: Se debe definir antes de
su uso (prototipo), se hace la llamada del procedimiento y finalmente se define o escribe
el procedimiento (estructura).

- El lenguaje de programación C++ reconoce el ámbito de una variable, es decir, que su


uso puede ser local o global, dependiendo como haya sido declarada.

- Cuando una función tiene un parámetro por valor recibe una copia de los valores de los
argumentos.

10

También podría gustarte