Funciones con arrays y vectores en c

12

Click here to load reader

Transcript of Funciones con arrays y vectores en c

Page 1: Funciones con arrays y vectores en c

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

Page 2: Funciones con arrays y vectores en c

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);

Page 3: Funciones con arrays y vectores en c

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!!

Page 4: Funciones con arrays y vectores en c

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:

Page 5: Funciones con arrays y vectores en c

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.

Page 6: Funciones con arrays y vectores en c

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í.

Page 7: Funciones con arrays y vectores en c

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

Page 8: Funciones con arrays y vectores en c
Page 9: Funciones con arrays y vectores en c
Page 10: Funciones con arrays y vectores en c
Page 11: Funciones con arrays y vectores en c
Page 12: Funciones con arrays y vectores en c