TECNOLÓGICO NACIONAL DE
MÉXICO
INSTITUTO TECNOLÓGICO SUPERIOR
DE ALVARADO - Campus Medellín
INGENIERIA INDUSTRIAL
ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
4ª ING. INDUSTRIAL- SEMI ESCOLARIZADO
INVESTIGACIÓN
ARREGLOS, FUNCIONES Y EJEMPLOS
REYES CRUZ MARISSA
EMMANUEL ZENÉN RIVERA BLAS
Arreglos
Un vector o array unidimensional es un tipo de dato que almacena una secuencia de
datos del mismo tipo. Los elementos de un vector se almacenan en zonas contiguas
de memoria y se puede acceder a ellos de manera directa mediante un índice o
posición.
Se grafica de la siguiente forma:
Numero[0]=2;
Numero[1]=5;
Numero[2]=8;
Numero[3]=1;
Numero[4]=9;
Para definir un vector se utiliza:
• Tipo nombre [tamaño];
Ejemplo para definir los arreglos:
Int números[10];
Char letras [5];
Float reales [15];
Int numero []={1,4,6,7,3};
2
Funciones
Una función es un conjunto de líneas de código que realizan una tarea especifica y puede
retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento.
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.
<tipo> [clase::] <nombre> ( [Parámetros] ).
{
cuerpo;
}
3
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 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 parámetros pasados por valor o copia 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.
Parámetros por valor
La función cuadrado () (ver arriba) es un clásico ejemplo que muestra el paso de parámetros
por valor, en ese sentido la función cuadrado () recibe una copia del parámetro n. En la misma
función se puede observar que se realiza un cálculo (n*n), sin embargo, el parámetro original
no sufrirá cambio alguno, esto seguirá siendo cierto aun cuando dentro de la función hubiera
una instrucción parecida a n = n * n; o n*=n.
Parámetros por referencia
Para mostrar un ejemplo del paso de parámetros por referencia, vamos a retomar el caso de la
función cuadrado, salvo que en esta ocasión cambiaremos ligeramente la sintaxis para definir
la misma. Veamos:
// regresar el cuadrado de un número
double cuadrado2(double &n)
{
n *= n;
return n;
}
4
Al poner a prueba las funciones cuadrado () y cuadrado2() se podrá verificar que la primera de
estas no cambia el valor del parámetro original, mientras que la segunda sí lo hace.
Llamar a una función
para llamar a la función cuadrado () vista anteriormente, podemos emplear:
cout << cuadrado(25);
cout << cuadrado(X);
R = cuadrado(X); // guardar en R el cuadrado de X
Funciones void
Bajo ciertas circunstancias se deseará escribir funciones que no regresen valor alguno (esto
sería algo parecido a escribir procedures en Pascal) y para ello podemos declarar a la función
como void. La palabra reservada void es utilizada para declarar funciones sin valor de retorno
y también para indicar que una función específica no requiere de parámetros. Por ejemplo, la
función pausa () que se verá en seguida, no devolverá valor alguno y la misma no requiere de
parámetros.
// esta función requiere de la librería iostream
void pausa(void)
{
cout << "Por favor presione <Enter> HOLA...";
[Link]();
[Link](255, '\n'); // rechazar caracteres introducidos antes de <Enter>
}
Notas: se debe de aclarar que el uso de la palabra void dentro de los parentesis es opcional al
momento de declarar una función. Así, la función pausa () podría haberse declarado como void
pausa (), y la misma puede invocarse como: pausa ();.
Funciones anidadas
A diferencia de Pascal, el lenguaje C, C++ no permite anidar funciones, sin embargo, dentro de
una funcíon puede existir la llamada a una o más funciones declaradas previamente, que
determinara en cierto punto un resultado para que sea ejecutado cuando el programador lo
desee.
5
Funciones de tipo puntero (*)
En muchas ocasiones se desea que ciertas funciones regresen una referencia o puntero hacia
un tipo (sea este estructurado o no) específico de dato en lugar de un valor específico. En tales
casos, la función se deberá declarar como para que regrese un puntero. Por ejemplo,
supongamos que deseamos crear una función para convertir un número entero en notación
decimal a una cadena de caracteres en forma de números binarios, luego, la función
mencionada podría escribirse para que reciba el número entero como parámetro y regrese un
puntero a una cadena de caracteres conteniendo la conversión. Para ser más puntuales, vamos
a escribir un programa en donde se verá la función binstr (), y cuyo objetivo será precisamente
convertir números decimales en cadenas binarias.
Nota: observe que en la sintaxis para declarar funciones tipo puntero se debe de poner el
símbolo * después del tipo y antes del nombre de la función que se está declarando. Esto se
puede ver en el programa, ya que la función binstr se declara como: char *binstr(unsigned int);
#include <iostream>
#include <cstring>
using namespace std;
// declaración de prototipo
char *binstr(unsigned int);
// punto de prueba
int main()
{
int n = 128;
cout << "decimal = " << n << ", binario = " << binstr(n) << endl;
[Link]();
}
// definición de función binstr()
// nota: esta funcion requiere de la librería estándar string
char *binstr(unsigned int n)
{
static char buffer[65];
int i = 0;
strcpy(buffer, "0");
if (n > 0) {
while (n > 0) {
buffer[i] = ( n & 1 ) + '0';
i++;
n >>= 1;
6
}
buffer[i] = '\0';
strrev(buffer);
} // fin (n > 0)
return buffer;
}
Ejemplos:
7
8
9
10
Fuentes de información
[Link]
[Link]
[Link]
n
11