1. UNIVERSIDAD
TECNICA DE AMBATO
FACULTAD DE CIENCIAS
HUMANAS Y DE LA EDUCACION
CARRERA DE DOCENCIA EN
INFORMATICA
PROGRAMACION II
DOCENTE:
Ing. WILMA GAVILÁNEZ
NOMBRE:
DIEGO SANTIAGO CHICAIZA PAREDES
2. FUNCIONES EN C.
Las funciones se declaran y se definen exactamente igual que en C, y, al igual que en éste,
se puede utilizar prototipo
Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para
implementar operaciones que son comúnmente utilizadas durante un programa y de esta
manera reducir la cantidad de código. Cuando una función es invocada se le pasa el control
a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el
cual la función fue llamada.
PARÁMETROS.
Normalmente, las funciones operan sobre ciertos valores pasados a las mismas ya sea como
constantes literales o como variables, aunque se pueden definir funciones que no reciban
parámetros. Existen dos formas en C++ de pasar parámetros a una función; por referencia o
por valor. El hecho es que si en una declaración de función se declaran parámetros por
referencia, a los mismos no se les podrá pasar valores literales ya que las referencias
apuntan a objetos (variables o funciones) residentes en la memoria; por otro lado, si un
parámetro es declarado para ser pasado por valor, el mismo puede pasarse como una
constante literal o como una variable. Los parámetros pasados por referencia pueden ser
alterados por la función que los reciba, mientras que los parametros pasados por valor o
copía no pueden ser alterados por la función que los recibe, es decir, la función puede
manipular a su antojo al parámetro, pero ningún cambio hecho sobre este se reflejará en el
parámetro original.
DECLARACIÓN DE FUNCIONES.
La definición de la función se realiza en el código fuente (o en librerías precompiladas), del
fuera bloque de cualquier otra función, incluyendo main y, a excepción de la capacidad del
C++ de lo que se denomina sobrecarga, solo está permitida en cada programa una
definición para cada función
Antes de empezar a utilizar una función debemos declararla. La declaración de una función
se conoce también como prototipo de la función. En el prototipo de una función se tienen
que especificar los parámetros de la función, así como el tipo de dato que devuelve. Los
prototipos de las funciones que se utilizan en un programa se incluyen generalmente en la
cabecera del programa y presentan la siguiente sintaxis:
tipo_de_retorno nombre_de_la_función(lista_de_parámetros);
3. En el prototipo de una función no se especifican las sentencias que forman parte de la
misma, sino sus características. Por ejemplo:
int cubo(int numero);
En este caso se declara la función cubo que recibe como parámetro una variable de tipo
entero (numero) y devuelve un valor del mismo tipo. En ningún momento estamos
especificando qué se va a hacer con el variable número, sólo declaramos las características
de la función cubo.
Cabe señalar que el nombre de los parámetros es opcional y se utiliza para mejorar la
comprensión del código fuente. De esta manera, el prototipo de la función cubo podría
expresarse de la siguiente manera:
int cubo(int);
¿Cómo declaro una función?
Cuando declaramos las librerías que vamos a usar en el programa, inmediatamente se
declara la función, junto con sus parámetros con que va a trabajar.
Ejemplo:
(…etc)
int suma(int a, int b);
¿Cómo la llamo?
En el programa principal, solo escribes el nombre, más los parámetros de dicha función.
Esto le indica al compilador de C++ que es una función y que se está invocando.
Ejemplo:
suma(a, b)
RESTRICCIONES
La función main adolece de ciertas limitaciones que la diferencian del resto de funciones
C++:
No puede ser invocada explícitamente a lo largo del programa, es invocada de
forma automática por el módulo de inicio
No puede obtenerse su dirección, por lo tanto no pueden declararse punteros a
ella:
int (* pmain)() = &main; // Error!!
4. No puede ser sobrecargada
No puede ser declarada como inline
La función main debe estar en el espacio global de una de las unidades de
compilación del programa, lo que significa que no puede pertenecer a una clase.
VECTORES CON FUNCIONES
Los vectores son una forma de almacenar datos que permiten contener una serie de valores
del mismo tipo, cada uno de los valores contenidos tiene una posición asociada que se usará
para accederlos. Está posición o índice será siempre un número entero positivo.
En C la cantidad de elementos que podrá contener un vector es fijo, y en principio se define
cuando se declara el vector. Los vectores se pueden declarar de la siguiente forma:
tipo_elemento nombre[largo];
Esto declara la variable nombre como un vector de tipo_elementos que podrá contener
largo cantidad de elementos, y cada uno de estos elemento podrá contener un valor de tipo
tipo_elemento.
Por ejemplo:
double valores[128];
En este ejemplo declaramos un vector de 128 elementos del tipo double, los índices de los
elementos irían entre 0 (para el primer elemento y 127 para el último).
De la misma forma que con las otras declaraciones de variables que hemos visto se le puede
asignar un valor iniciar a los elementos.
O también se pueden declarar:
tipo_elemento nombre[largo]={valor_0, valor_1, valor_2};
En caso estamos asignadole valores a los primeros 3 elementos del vector nombre. Notar
que largo debe ser mayor o igual a la cantidad de valores que le estamos asignando al
vector, en el caso de ser la misma cantidad no aporta información, por lo que el lenguaje
nos permite escribir:
tipo_elemento nombre[]={valor_0, valor_1, valor_2};
Que declarará nombre como el vector de largo 3.
Para acceder a un elemento accederemos a través de su posición. Es decir:
5. tipo_elemento elemento;
...
elemento = nombre[2];
Asumiendo que tenemos el vector anterior definido estaríamos guardando valor_2 en
elemento.
EJEMPLO DE FUNCIONES CON VECTORES.
Diseñe un programa utilizando vectores y funciones que me permita llenar un vector en
forma intercalada con 2 factores leídos desde teclado, en donde el primer factor sea siempre
un múltiplo de 3 y el segundo factor sea siempre un múltiplo de 4, recorra el vector y
encuentre todos los números pares, asígnelos en un nuevo vector y preséntelos en forma
ordenada y represéntelos en forma ascendente y descendente.
6. MATRICES
Matrices Una matriz es un array multidimensional. Se definen igual que los vectores
excepto que se requiere un índice por cada dimensión. Su sintaxis es la siguiente:
tipo nombre [tamaño 1][tamaño 2]...;
Una matriz bidimensional se podría representar gráficamente como una tabla con filas y
columnas. La matriz tridimensional se utiliza, por ejemplo, para trabajos gráficos con
objetos 3D. En el ejemplo puedes ver como se rellena y visualiza una matriz bidimensional.
Se necesitan dos bucles para cada una de las operaciones. Un bucle controla las filas y otro
las columnas.
Sinopsis
Cuando hay que pasar una matriz bidimensional como argumento a una función, la
declaración de parámetros formales de esta debe incluir el número de columnas, ya que la
función receptora debe conoce la estructura interna de la matriz, para poder para acceder a
sus elementos, y esto solo es posible informándole de su tipo y dimensiones. En el caso
que nos ocupa las dimensiones son dos, por lo que la definición de la función llamada sería
algo así:
func (int dias[2][12]) {...}
Observe que en la expresión anterior está incluida toda la información necesaria: número de
filas, número de columnas y tamaño de cada elemento (un int). Desde luego la función
receptora necesita conocer también la dirección de inicio del almacenamiento, pero ya
hemos señalado que "el identificador de una matriz puede ser utilizado como un puntero a
su primer elemento", con lo que si mentalmente sustituimos días por un puntero al número
31 (primer elemento) de la primera matriz, la información pasada es completa.
Al definir la función, no hemos puesto ningún número entre los corchetes. Esto significa
que estamos permitiendo que un array de cualquier tamaño pueda ser pasado a la función.
En la función main, hemos declarado dos arrays de enteros, taco y nacho. Primero pasamos
taco a la función, que en realidad es la direccion del array taco. Ahora bien, el segundo
array, nacho, tiene sólo dos elementos. Cuando la función trate de acceder al tercer
elemento del array, que realmente no existe. Ya que los arrays son muchas variables
almacenadas una detrás de otra en la memoria del ordenador, tratará y accederá a la
variable almacenada despueés del segundo elemento del array, que no existe.
Además, el programa compilará y correrá sin mensajes de error. Esto sucedía ya en C, que
permite leer y escribir en la memoria del ordenador sin saber si realmente hay variables allí.
7. Se deben evitar casos como el del ejemplo, porque, o bien el programa correrá sin mensajes
de error, o bien casca.
Una forma de evitarlo es añadiendo un segundo parámetro que indique el tamaño del array:
# include <iostream.h>
Ejemplo de matrices y funciones