SlideShare una empresa de Scribd logo
1 de 8
INTEGRANTES José Machado
 Bryan Coro
CURSO
3° DE BACHILLERATO
PARALELO
“B”
ESPECIALIDAD
INFORMATICA
 Una de las construcciones más interesantes que puede crear es un
array de punteros a funciones. Para elegir una función, sólo indexe el
array y dereferencie el puntero. Esto permite implementar el
concepto de código dirigido por tabla(table-driven code); en lugar
de usar estructuras condicionales o sentencias case, se elige la
función a ejecutar en base a una variable (o una combinación de
variables). Este tipo de diseño puede ser útil si añade y elimina
funciones de la tabla con frecuencia (o si quiere crear o cambiar una
tabla dinámicamente).
 El siguiente ejemplo crea algunas funciones falsas usando una macro
de preprocesador, después crea un array de punteros a esas funciones
usando inicialización automática. Como puede ver, es fácil añadir y
eliminar funciones de la table (y por tanto, la funcionalidad del
programa) cambiando una pequeña porción de código.
 Supongamos que queremos pasar un array a una función. La solución es pasar punteros. El nombre de un
array es un puntero al primer elemento del array. Así, si hemos definido int taco[10]como un array de diez
enteros, taco será un puntero al array. Por ejemplo, sea guacamole un array de 6 enteros: 6, 63, 112, 18, -52,
16. guacamole es simplemente un puntero al primer elemento. Entonces, *guacamole equivale al valor 6. Si
tratamos de acceder al elemento guacamole[6], estamos accediendo a lo que haya después del último
elemento del array. Los resultados son inesperados.
Veamos un ejemplo de cómo pasar un array a una función:
# include <iostream.h>
void eat_at_joes(int guacamole[])
{
guacamole[0] = 1;
guacamole[1] = 2;
guacamole[2] = 3;
}
main()
{
int taco[3];
int nacho[2];
eat_at_joes(taco);
eat_at_joes(nacho);
}
 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í. 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>
void eat_at_joes(int guacamole[], int size)
{
if (size > 0)
guacamole[0] = 1;
if (size > 1)
guacamole[1] = 2;
if (size > 2)
guacamole[2] = 3;
}
main()
{
int taco[3];
int nacho[2];
eat_at_joes(taco,3);
eat_at_joes(nacho,2);
}
Por default, los arrreglos en C se pasan a una función como referencia y no como valor. Esto significa que todas
las modificaciones que hagamos dentro de la función en C al arreglo que recibimos como parámetro, realmente
se realizan en el arreglo original que se utilizó como argumento al momento de llamar a la función.
Al escribir una función en C, la forma de indicar que uno de los parámetros que se va a recibir es un arreglo de
una dimensión, es decir de que tipo va a ser el arreglo y el nombre con el cual vamos a manipular dicho arreglo
dentro de nuestra función seguido de corchetes que abren y cierran; nuestra función también debe recibir un
segundo parámetro que nos indique el tamaño del arreglo, o dicho de otra forma, el número de elementos de los
que consta nuestro arreglo, recordemos que como el arreglo se pasa a la función como referencia, lo que esta
recibiendo la función en realidad es un apuntador al primer elemento del arreglo, pero no sabe en donde termina
el arreglo, por eso es necesario que la función también reciba como parámetro el número de elementos del
arreglo.
Por ejemplo, el prototipo de una función en C que va a regresar un entero y va a recibir un arreglo de 10
elementos de tipo entero sería algo asi:
int Mi Función(int mi_arreglo[], int num_elemetos);
Para llamar a la función anterior, se pone como primer argumento el nombre del arreglo (sin corcehetes) y como
segundo argumento el número de elementos del arreglo. Supongamos que tenemos un arreglo de 10 elementos
de tipo entero llamado números y queremos guardar en una variable llamada “x” el valor que nos regresa la
función “Mi Función” al llamarla pasándole como argumentos el arreglo “números”, haríamos algo como esto
x = Mi Función(numeros, 10);
El siguiente programa solicita al usuario que ingrese 10 números de tipo entero y los almacena en un arreglo;
después le pide que introduzca un número para que busque su posición dentro del arreglo..
El programa utiliza una función llamada Busca Numero que recibe como parámetros el arreglo con los 10
números capturados, el número de elementos del arreglo (en este caso 10) y el número del cual se desea saber su
posición dentro del arreglo.. La función regresa -1 si el número que se busca no se encuentra en el arreglo y en
caso contrario, regresa la primera posición del arreglo que contiene dicho número.
El programa también utiliza una función llamada Muestra Arreglo que no regresa valor alguno, sólo recibe como
parámetros el arreglo y el número de elementos. Esta función imprime en pantalla los elementos del arreglo
separados por un tabulador.
//: C03:FunctionTable.cpp
// Using an array of pointers to functions
#include <iostream>
using namespace std;
// A macro to define dummy functions:
#define DF(N) void N() {  cout << "function “
#N " called..." << endl; } DF(a); DF(b); DF(c); DF(d); DF(e); DF(f);
DF(g);
void (*func_table[])() = { a, b, c, d, e, f, g };
int main() { while(1) { cout << "press a key from 'a' to 'g' " "or q to
quit" << endl;
char c, cr;
cin.get(c);
cin.get(cr);
// second one for CR
if ( c == 'q' ) break; // ... out of while(1)
if ( c < 'a' || c > 'g' )
continue; (*func_table[c - 'a'])();
}
} ///:~
Funciones con vectores c++

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Funciones
FuncionesFunciones
Funciones
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
Capítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimientoCapítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimiento
 
Introducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje CIntroducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje C
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioLenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE C
 
Apuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cApuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje c
 
Indentificacion de funciones
Indentificacion de funcionesIndentificacion de funciones
Indentificacion de funciones
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
Principales codigos visual basic
Principales codigos visual basicPrincipales codigos visual basic
Principales codigos visual basic
 
Funciones
FuncionesFunciones
Funciones
 
Estructura de un programa en c
Estructura de un programa en cEstructura de un programa en c
Estructura de un programa en c
 
Funcion del lex
Funcion del lexFuncion del lex
Funcion del lex
 
Presentación 13 Paso por referencia
Presentación 13 Paso por referenciaPresentación 13 Paso por referencia
Presentación 13 Paso por referencia
 
Presentación 09 Cajas blanca
Presentación 09 Cajas blancaPresentación 09 Cajas blanca
Presentación 09 Cajas blanca
 
Funciones
FuncionesFunciones
Funciones
 
Funcion scanf
Funcion scanfFuncion scanf
Funcion scanf
 
JavaScript funciones
JavaScript funcionesJavaScript funciones
JavaScript funciones
 

Similar a Funciones con vectores c++

Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en cDiego Maxdj Chicaiza
 
Funciones en lenguage c
Funciones en lenguage cFunciones en lenguage c
Funciones en lenguage cLorena Sanchez
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
Fonciones de cadenas
Fonciones de cadenasFonciones de cadenas
Fonciones de cadenasmkbenitez
 
Funciones de cadena
Funciones de cadenaFunciones de cadena
Funciones de cadenaAlfredo Joya
 
Fonciones de cadenas
Fonciones de cadenasFonciones de cadenas
Fonciones de cadenasmkbenitez
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++LenHugo
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Bryangio2002
 
Funciones en excel
Funciones en excelFunciones en excel
Funciones en excelmillercuesta
 
Taller formulas y funciones
Taller formulas y funcionesTaller formulas y funciones
Taller formulas y funcionesRopoga
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funcioneseulo10
 

Similar a Funciones con vectores c++ (20)

Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
 
Funciones
FuncionesFunciones
Funciones
 
Funciones en lenguage c
Funciones en lenguage cFunciones en lenguage c
Funciones en lenguage c
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Fonciones de cadenas
Fonciones de cadenasFonciones de cadenas
Fonciones de cadenas
 
Funciones de cadena
Funciones de cadenaFunciones de cadena
Funciones de cadena
 
Fonciones de cadenas
Fonciones de cadenasFonciones de cadenas
Fonciones de cadenas
 
Funciones
FuncionesFunciones
Funciones
 
Funciones
FuncionesFunciones
Funciones
 
P_UNIDAD 4 FUNCIONES.pptx
P_UNIDAD 4 FUNCIONES.pptxP_UNIDAD 4 FUNCIONES.pptx
P_UNIDAD 4 FUNCIONES.pptx
 
Semana 02 software libre maxima
Semana 02 software libre maximaSemana 02 software libre maxima
Semana 02 software libre maxima
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
Python03
Python03Python03
Python03
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Funciones en excel
Funciones en excelFunciones en excel
Funciones en excel
 
Exposicion iac
Exposicion iacExposicion iac
Exposicion iac
 
8448148681
84481486818448148681
8448148681
 
Taller formulas y funciones
Taller formulas y funcionesTaller formulas y funciones
Taller formulas y funciones
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Clase 10
Clase 10Clase 10
Clase 10
 

Último

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 

Último (8)

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 

Funciones con vectores c++

  • 1. INTEGRANTES José Machado  Bryan Coro CURSO 3° DE BACHILLERATO PARALELO “B” ESPECIALIDAD INFORMATICA
  • 2.
  • 3.  Una de las construcciones más interesantes que puede crear es un array de punteros a funciones. Para elegir una función, sólo indexe el array y dereferencie el puntero. Esto permite implementar el concepto de código dirigido por tabla(table-driven code); en lugar de usar estructuras condicionales o sentencias case, se elige la función a ejecutar en base a una variable (o una combinación de variables). Este tipo de diseño puede ser útil si añade y elimina funciones de la tabla con frecuencia (o si quiere crear o cambiar una tabla dinámicamente).  El siguiente ejemplo crea algunas funciones falsas usando una macro de preprocesador, después crea un array de punteros a esas funciones usando inicialización automática. Como puede ver, es fácil añadir y eliminar funciones de la table (y por tanto, la funcionalidad del programa) cambiando una pequeña porción de código.
  • 4.  Supongamos que queremos pasar un array a una función. La solución es pasar punteros. El nombre de un array es un puntero al primer elemento del array. Así, si hemos definido int taco[10]como un array de diez enteros, taco será un puntero al array. Por ejemplo, sea guacamole un array de 6 enteros: 6, 63, 112, 18, -52, 16. guacamole es simplemente un puntero al primer elemento. Entonces, *guacamole equivale al valor 6. Si tratamos de acceder al elemento guacamole[6], estamos accediendo a lo que haya después del último elemento del array. Los resultados son inesperados. Veamos un ejemplo de cómo pasar un array a una función: # include <iostream.h> void eat_at_joes(int guacamole[]) { guacamole[0] = 1; guacamole[1] = 2; guacamole[2] = 3; } main() { int taco[3]; int nacho[2]; eat_at_joes(taco); eat_at_joes(nacho); }
  • 5.  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í. 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> void eat_at_joes(int guacamole[], int size) { if (size > 0) guacamole[0] = 1; if (size > 1) guacamole[1] = 2; if (size > 2) guacamole[2] = 3; } main() { int taco[3]; int nacho[2]; eat_at_joes(taco,3); eat_at_joes(nacho,2); }
  • 6. Por default, los arrreglos en C se pasan a una función como referencia y no como valor. Esto significa que todas las modificaciones que hagamos dentro de la función en C al arreglo que recibimos como parámetro, realmente se realizan en el arreglo original que se utilizó como argumento al momento de llamar a la función. Al escribir una función en C, la forma de indicar que uno de los parámetros que se va a recibir es un arreglo de una dimensión, es decir de que tipo va a ser el arreglo y el nombre con el cual vamos a manipular dicho arreglo dentro de nuestra función seguido de corchetes que abren y cierran; nuestra función también debe recibir un segundo parámetro que nos indique el tamaño del arreglo, o dicho de otra forma, el número de elementos de los que consta nuestro arreglo, recordemos que como el arreglo se pasa a la función como referencia, lo que esta recibiendo la función en realidad es un apuntador al primer elemento del arreglo, pero no sabe en donde termina el arreglo, por eso es necesario que la función también reciba como parámetro el número de elementos del arreglo. Por ejemplo, el prototipo de una función en C que va a regresar un entero y va a recibir un arreglo de 10 elementos de tipo entero sería algo asi: int Mi Función(int mi_arreglo[], int num_elemetos); Para llamar a la función anterior, se pone como primer argumento el nombre del arreglo (sin corcehetes) y como segundo argumento el número de elementos del arreglo. Supongamos que tenemos un arreglo de 10 elementos de tipo entero llamado números y queremos guardar en una variable llamada “x” el valor que nos regresa la función “Mi Función” al llamarla pasándole como argumentos el arreglo “números”, haríamos algo como esto x = Mi Función(numeros, 10); El siguiente programa solicita al usuario que ingrese 10 números de tipo entero y los almacena en un arreglo; después le pide que introduzca un número para que busque su posición dentro del arreglo.. El programa utiliza una función llamada Busca Numero que recibe como parámetros el arreglo con los 10 números capturados, el número de elementos del arreglo (en este caso 10) y el número del cual se desea saber su posición dentro del arreglo.. La función regresa -1 si el número que se busca no se encuentra en el arreglo y en caso contrario, regresa la primera posición del arreglo que contiene dicho número. El programa también utiliza una función llamada Muestra Arreglo que no regresa valor alguno, sólo recibe como parámetros el arreglo y el número de elementos. Esta función imprime en pantalla los elementos del arreglo separados por un tabulador.
  • 7. //: C03:FunctionTable.cpp // Using an array of pointers to functions #include <iostream> using namespace std; // A macro to define dummy functions: #define DF(N) void N() { cout << "function “ #N " called..." << endl; } DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g); void (*func_table[])() = { a, b, c, d, e, f, g }; int main() { while(1) { cout << "press a key from 'a' to 'g' " "or q to quit" << endl; char c, cr; cin.get(c); cin.get(cr); // second one for CR if ( c == 'q' ) break; // ... out of while(1) if ( c < 'a' || c > 'g' ) continue; (*func_table[c - 'a'])(); } } ///:~