2.1 Definición de un subprograma.
Un subprograma tambien se puede llamar una función. Una función es unn bloque se sentencias que realiza determinadas tareas bien definidas, el bloque es el cuerpo y al que nos referimos con un nombre. Todo programa en C consta de una o varias funciones. Si un programa contiene varias funciones, sus definiciones no pueden estar incluidas en otras. Además, el cuerpo y el nombre, hay que especifcar los parámetros en los que se apoyan las operaciones.
Una función procesará la información que le es pasada desde el punto del programa en donde se accede a ella y devolverá un solo valor.
La informacion se pasa por medio de identificadores especiales llamados argumentos (parámetros) y es devuelta por la instrucción return.
C++ utiliza funciones de bibliotecas, declaradas en los archivos de cabacera y funciones definidas por el usuario.
La definición de una función tiene dos componentes principales:
Cabecera = Especifica el tipo de valor devuelto por la función, el nombre y los parámetros.
Cuerpo = Declaraciones de variables, sentencias, y estas deben ser entre llaves.
2.1.1 Estructura de un subprograma
La estrcutura de un subprograma es muy sencillo:
tipo-resultado nombrefuncion (parámetros)
{
declaraciones;
sentencias;
valor de retorno;
}
Las declaraciones se pueden situar en cualquier parte del programa con la unica condición de preceder a las instrucciones que las utilizan.
2.1.2 Valor de retorno
La sentencia return se utiliza para dos propósitos:
Devolver el control del programa a la función (return;)
Devolver un valor de expresión a la función (return expresión; ó return (expresión);)
Puede aparecer más de una vez en el cuerpo de la función.
Una funcionn no puede devolver ningun valor. Se indica con la palabra o tipo void :
void max3 (int x, int y)
Con esta palabra se pueden definir funciones sin parámetro:
double decimalescomunes (void)
Que seria lo mismo:
double decimales comunes ()
2.2 Declaración de un programa
La declaración de una función, conocido como prototipo de la función, indica, además del nombre de la función, cuántos parámetros tiene y de qué tipo son, así como el tipo del valor retornado. Su sintaxis es:
tipo-resultado nombrefuncion (parámetros);
Los prototipos de las funciones indican al compilador el nombre y naturaleza de las funciones que utiliza el programa. Se debe declarar un prototipo para cada función de un programa antes de que el programa utilice esa función. C++ permite inicializar los argumentos en las declaraciones.
2.3 Bibliotecas o librería de un suprograma.
Todas las versiones del lenguaje C++ vienen con una biblioteca estándar de funcioes en tiempo de ejecución que proporcioan soporte para operaciones utilizadas con más frecuencia. Estas funciones permiten realizar una operación con sólo una llamada a la función.
Los nombres de los archivos de cabecera etándar mas utilizados son:
assert.h
limits.h
stdarg.h
time.h
ctype.h
math.h
stdef.h
erro.h
setjmp.h
stdio.h
float.h
signal.h
string.h
iostream.h
conio.h
En los módulos de programa se pueden icluir lineas #include con los archivos de cabecera.
Algunos de los grupos de funciones de biblioteca más usuales son:
- E/S estándar
- Rutinas estándar
- Visualizar vetana de texto
- de conversión
- de diagnóstico
- de manipulación de memoria
- Control de proceso
- Clasificación
- Directorios
- Fecha y hora
- de interfaz
- búsqueda
- Manipulación d cadenas
- Gráficos
Las rutinas de E/S y las rutinas de memoria, no se suelen utilizar en C++, en su lugar se utilizan flujos (cin y cout) y operadores (new, delete).
2.4 Primer acercamiento a clases y objetos.
Una clase define un tipo de dato, como un struc estaría en C. En un sentido de la informática, un tipo consiste en un sistema de estados y un sistema de las operaciones de transición entre esos estados. Así interno es un tipo porque tiene un sistema de estados y tiene operaciones como i + j ó i++, etc. Exactamente de la misma manera, una clase proporciona un sistema de operaciones (generalmente publica), y un sistema de bits de datos (generalmente públicos) que representan los valores del etracto que los casos del tipo pueden tener.
Un programador de C puede pensar en una clase que tiene funciones del miembro llamadas operator++, etc.
Un objeto es una región del almacenaje con la semántica asociada. Una clase define el comportamiento posible de muchos objetos.
Para almacenar e identificar a los objetos se hace uso de las clases. Las clases son elementos abstractos y genéricos que por si tienen entidad propia.
2.5 Ámbito y tiempo de vida de una variable
Se denomina ámbito de una variable a la parte de un programa donde dicha variable puede ser referenciada por su nombre. Una variable puede ser limitada a un bloque, a un fichero, a una función o a una declaración de una función.
Variables globales y locales
Cuando una variable se declara en un programa fuera de todo el bloque es accesible desde su punto de definición o declaración hasta el final del fichero fuente. Esta variable recibe el nombre de global.
Una variable global existe y tiene valor desde el principio hast el final de la ejecución del programa.
Si la declaración de una variable se hace dentro de un bloque, el acceso queda limitado a ese bloque y a los bloques contenidos dentro de este por debajo de su punto de declaración. Esta variable recibe el nombre de local o automatica.
Una variable local existe y tiene valor desde su punto de declaración hasta el final del bloque donde está definida. Cada vez que se ejecuta el bloque que la contiene, la variable local es nuevamente definida y cuando finaliza la ejecución del mismo, la variable deja de existir.
2.6 Argumentos y paso de parámetros
Un argumento por defecto en C++ es un parámetro que una llamada a la función no es necesario que se proporcione; a veces se conocen como parámetros opcionales. Si se pasaun valor, se utiliza el valor; si no le pasa un valor aun parámetro opcional se utiliza un valor por defecto como argumento.
Ejemplo:
guiones (10,0,30);
guiones(10,0,30,'-');
Los argumentos por defecto se deben indicar al final del conjunto de argumentos.
Cuando se llama una función, el primer argumento en la llamada es pasado al primer parámetro de la función, el segundo argumento al segundo parámetro y así sucesivamente. La función se pasa una copia del valor del argumento. Esto supone que la función invocada trabaje sobre la copia, no pudiendo alterar las variables de donde procede.
un ejemplo claro del paso de parametros lo encontramos en un ejercicio de la unidad 1, el cual consiste en el intercambio de valores al final del programa, el programa en cuestión se encuentra dentro de la carpeta y fuera de el como imagen para poder checarlo, el nombre del programa es INTERCAMB.CPP.
2.7 Sobrecarga de subprogramas
Un subprograma sobrecargará un significado ya existente siempre que su especificación sea suficientemente diferente, es decir, pueden existir dos subprogramas con el mismo identificador siempre que se distingan por el número o tipo de sus parámetros.
La sobrecarga de funciones permit escribir y utilizar multiples funciones con el mismo nombre, pero con diferente lista de argumentos, la lista de argumentos es diferente si tiene un argumento con un tipo de dato distinto, si tiene un número diferente de argumentos o ambos.
Como C++ soporta sobrecarga se podrian definir funciones sobrecargadas que tuvieran el mismo nombre y argumentos diferentes.
Ejemplo:
int cuadrado (int x);
long cuadrado (long x);
double cuadrado (double x);
2.8 Recursividad
Es la propiedad que tienen las funciones en C++ de poder llamarse así mismas. Una función recursiva necesita una condición de salida.
El proceso se utiliza para computaciones repetidas en las que cada acción se determia en función de un resultado anterior.
Se deben cumplir dos condiciones:
Escribir el problema en forma recursiva.
La instrucción debe incluir una condición de fin.
Ejemplo:
Para calcular el factorial:
n!=1 x 2 x 3 x....... x n
Lo anterior recursivamente se escribe:
n!=n(n-1)!
Y la condición de fin seria:
1!=1
Referencias:
- Programación en C; Byron Gottfried;segunda edición;Mc GrawHill;Pags.:218,219,226,235,241.
- C/C++ Curso de programación; Francisco Ceballos;segunda edición;Alfaomega;Pags.:62,63,64,65,68,76.
- Borland C++ 4/4.5 Iniciación y referencia;Luis Joyanes Aguilar;Mc Graw Hill;Pags.:89,90,91,92,95,97