SOBRECARGA DE FUNCIONES

Slides:



Advertisements
Presentaciones similares
Introducción a C++ Sistemas Operativos
Advertisements

El lenguaje de programación C - El primer programa -
Ordenamiento de Arreglos
Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene.
Arithmetic Operators & Operators Precedence
Ejemplo de un programa en C++ donde se manipulan archivos de datos
Clases en C++.
Instrucciones Básicas Entrada de Información
Ejemplo de Programa C++
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Programacion de Computadora Prof. Obadiah Oghoerore.
EJERCICIOS DE PROGRAMACION
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Tema Función main Elementos básicos del lenguaje.
INFORMATICA I Funciones CLASE 13.
ESTRUCTURA DEL LENGUAJE C
Prof. Franklin Cedeño. FUNCIONES EN C++ Cuando tratamos de resolver un problema, resulta muy útil utilizar la filosofía de “divide y vencerás”. Esta estrategia.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Introducción a la Computación
Funciones Funciones De biblioteca Definidas por el usuario
Estructuras de Datos Cont. C++ y Tipos de Datos. Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota;
Estructuras de Datos Punteros y algo más.
Ejemplos en C /* Ejemplos L/E en C con printf y scanf */ #include #include main(){ int i; int i; char nombre[30]; char nombre[30]; printf ("\nIntroduce.
Acciones y funciones Concepto
Funciones Computación.
FUNCIONES EN C.
El lenguaje de programación C - Funciones -
4A4A4A4A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.
Estructuras de repetición
Diseño de algoritmos “Estructuras”
LIA. SUEI CHONG SOL, MCE.. #include void main() { float N1,N2,N3,SUMA; cout>N2;
Programa “Coordenadas” Ing. Arturo Díaz Vargas Departamento de Sistemas División de Ciencias Básicas e Ingeniería UNIVERSIDAD AUTONOMA METROPOLITANA.
POO en C++ Programación Orientada a Objetos. Declaración de clases con struct Las clases en C++ pueden definirse utilizando la construcción struct Ejemplo:
Introducción a la Computación
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
Sección 5-2 Estructuras de Control de Decisión Expresiones Lógicas.
Programación III Clase 07 Funciones.
FUNCIONES EN C.
Arreglos.
Programación III Clase 06 Funciones.
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
Cátedra de COMPUTACIÓN FACULTAD DE INGENIERÍA - UNA La mejor manera de aprender Programación es PROGRAMANDO !!!!!! CLASE Nro. 1.
Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Ejemplos openMP.
Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 2- 1.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
FIEE VARIABLES Ing. José Antonio Poma G.. FIEE Variables Una variable es un identificador (nombre de la variable) que hace referencia a.
Entrada y Salida de Archivos
Elementos básicos del lenguaje
Sección 2-4 Estructuras de Control de Decisión Expresiones Lógicas.
Trazado. 1 Intercambio sin error #include void intercambio(int *, int *); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(&a,&b);
Recursividad. 2 Son funciones que se llaman a sí mismas. Requisitos: – Deben retornar un valor. – Deben tener expresiones en las que se llaman a sí mismas:
Tema ‧ Comando - while Repeticiones. Comando while ‧ Un ciclo es cualquier construcción de programa que repite una sentencia ó secuencia de sentencias.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
INTRODUCCIÓN AL LENGUAJE C++
Código (salario) #include int main() { int hours; double gross_pay,rate; cout rate; if (hours > 40) gross_pay = rate*40.
Ejercicios de c++ Dado un numero verificar si es positivo, negativo o nulo Codificación: #include #include int main () { int numero; printf("Inserte.
Programación estructurada
Algoritmo.
Corporación Universitaria del Caribe CECAR Fundamentos de programación II.
Arreglos Ejemplo paso a paso. Planteamiento Como estudiante de ingeniería, quieres usar tus habilidades de programador para llevar un registro de tus.
ARREGLOS O ARRAYS.
ESTRUCTURAS DE DECISION MULTIPLE
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
Integrantes:  Gómez Desire  Orgelys Linares  Oriannys Linares  Sánchez Alfredo  Wendher Villasmil.
ARREGLOS Por: Astaroth.  En la clase anterior vimos que c++, es un mundo de cajas, bien hoy hablaremos de una caja un tanto particular “vagoncin” el.
Lenguaje C++ Problemas.
Arreglos en C++ (una y dos dimensiones)
++
Transcripción de la presentación:

SOBRECARGA DE FUNCIONES C++ permite definir varias funciones con el mismo nombre, siempre y cuando tengan diferentes grupos de parámetros (cuando menos en lo que concierne a sus tipos). Esta capacidad se llama sobrecarga de funciones. Cuando se llama a una función sobrecargada, el compilador de C++ selecciona la función adecuada examinando el número, tipos y orden de los argumentos de la llamada. La sobrecarga de funciones se utiliza para crear varias funciones con el mismo nombre que realicen tareas similares, pero sobre distintos tipos [Deitel]. # include <iostream.h> int cuadrado (int x) {return x * x; } double cuadrado (double y) { return y * y;} int main () { cout<< "el cuadrado del número 7 tipo integer es "<< cuadrado (7) << "\n el cuadrado del número 7.5 tipo double es " << cuadrado (7.5) << endl; return 0; }

SOBRECARGA DE CONSTRUCTORES Aunque realicen un único servicio, las funciones constructoras no son muy diferentes de otros tipos de funciones; también pueden sobrecargarse. Para sobrecargar una función constructora de una clase, simplemente hay que declarar las diferentes formas que tendrá y definir cada acción relativa a estas formas. temporizador (char *t) {segundos=atoi(t);} class temporizador temporizador (int t) { segundos=t; } temporizador (int min , int seg) { segundos=min*60+seg;}

SOBRECARGA DE CONSTRUCTORES void temporizador::ejecutar(void) { clock_t t1, t2; t1=t2=clock()/CLK_TCK; while (segundos) if (t1/CLK_TCK+1<=(t2=clock())/CLK_TCK) segundos--; t1=t2; } cout<<"\a"; class temporizador { int segundos; public: temporizador (char *t) segundos = atoi (t); } temporizador (int t) segundos = t; temporizador (int min, int seg) segundos=min*60 + seg; void ejecutar (void); }; main (void) { temporizador a(1), b("2"), c(0,10); a.ejecutar(); b.ejecutar(); c.ejecutar(); return 0; } Como se puede observar, cuando se crean a, b y c dentro de main() se le dan valores iniciales usando los tres métodos diferentes soportados por las funciones constructor sobrecargadas. Cada enfoque produce el uso del constructor adecuado, e inicializa cada una de las tres variables de la forma correcta.

VARIABLES LOCALES EN C++ En C++ es posible que al principio de un bloque todas las variables locales que se usan dentro de un bloque. En C++ se puede declarar una variable en un bloque después de haber utilizado otro tipo de sentencia. # include <iostream.h> # include <string.h> main (void) { int i; i=10; int j=100; cout<<i*j<<"\n"; cout<<"Introducir una cadena: "; char cad[80]; cin>>cad; int k; k=strlen(cad); k--; while (k>=0) cout<<cad[k]; } return 0; Como se puede observar el programa muestra que en C++ se pueden declarar variables locales en cualquier parte dentro de un bloque de código. Como gran parte de la filosofía de C++ es la encapsulación de código y datos, lo que hace que tenga sentido poder declarar variables cerca de donde se van a usar y no sólo al principio del bloque.

INICIALIZACIÓN DINÁMICA # include <iostream.h> # include <string.h> main (void) { int i; i=10; int j=100; cout<<i*j<<"\n"; cout<<"Introducir una cadena: "; char cad[80]; cin>>cad; // inicializando k de forma dinámica en tiempo de //ejecución int k=strlen(cad)-1; while (k>=0) cout<<cad[k]; k--; } return 0; En C++, las variables locales y las variables globales pueden inicializarse en tiempo de ejecución. Al usar inicialización dinámica, una variable puede ser inicializada en tiempo de ejecución usando cualquier expresión válida de C++, a la vez que se declara la variable. Esto significa que puede inicializar una variable usando otras variables o llamadas a funciones.

APLICANDO LA INICIALIZACIÓN DINÁMICA A LOS CONSTRUCTORES # include <iostream.h> # include <stdlib.h> # include <time.h> class temporizador { int segundos; public: temporizador (char *t) {segundos=atoi(t);} temporizador (int t) {segundos = t;} temporizador (int min, int seg) { segundos=min*60+seg;} void ejecutar(void); }; void temporizador::ejecutar(void) clock_t t1,t2; t1=t2=clock()/CLK_TCK; while (segundos) if (t1/CLK_TCK+1<=(t2=clock())/CLK_TCK) segundos--; t1=t2; } cout<<"\a"; Un objeto, como las variables simples, puede inicializarse dinámicamente cuando se crea. Esto significa que se puede crear exactamente el tipo de objeto que se necesite usando información que sólo se conoce en tiempo de ejecución. Para ilustrar cómo funciona la inicialización dinámica. Esto permite al programador la flexibilidad de usar el constructor que más se ajuste al formato de los datos disponibles en ese momento.

APLICANDO LA INICIALIZACIÓN DINÁMICA A LOS CONSTRUCTORES main (void) { temporizador a(10); a.ejecutar(); cout<<"introducir número de segundos: "; char cad[80]; cin>>cad; temporizador b(cad); b.ejecutar(); cout<<"Introducir minutos y segundos "; int min, seg; cin>>min>>seg; temporizador c(min,seg); c.ejecutar(); return 0; } Como se puede ver, el objeto a se construye usando una constante entera. Sin embargo, b y c se construyen usando información introducida por el usuario. Como el usuario introduce una cadena para b, tiene sentido sobrecargar temporizador() para que acepte una cadena. De la misma forma, el objeto c también se construye en tiempo de ejecución con información introducida por el usuario.

EL OPERADOR this # include <iostream.h> class cl { int i; public: void carga_i (int val) {this->i=val;} int poner_i(void) {return this->i;} }; main (void) cl o; o.carga_i(100); cout<<o.poner_i(); return 0; } Antes de pasar a la sobrecarga de operadores es necesario aprender otra palabra clave de C++, this, que es un ingrediente esencial para muchas de las sobrecargas de operadores. Cada vez que se invoca una función miembro, se pasa automáticamente un puntero al objeto que la invoca. Se puede acceder a este puntero automáticamente usando this. El puntero this es un parámetro impícito para todas las funciones miembro.

SOBRECARGA DE OPERADORES Una característica de C++ que está relacionada con la sobrecarga de funciones es la sobrecarga de operadores. Por ejemplo, una clase que defina una lista enlazada podría usar el operador + para añadir un objeto a la lista. Otra clase puede usar el operador + de otra forma completamente diferente. Cuando se sobrecarga un operador significa que se ha definido una nueva operación con relación a una clase específica. Por tanto, sobrecargar el + para manejar listas enlazadas no modifica su significado con relación a los enteros (es decir, suma de ellos). sobrecargado + + elementos a una lista enlazada + sigue realizando las operaciones de adición en enteros

SOBRECARGA DE OPERADORES Para sobrecargar un operador se debe definir qué operación significa con relación a la clase a la que se aplica. Para hacer esto, hay que crear una función operador que defina su acción. La forma general de una función operador es: tipo nombreclase::operator# (lista_argumento) { //operación definida con relación a la clase } Aquí, el operador que se quiere sobrecargar se sustituye por el # y tipo es el tipo de valor devuelto por la operación especificada. Las funciones operador pueden ser miembros o amigas de la clase para la cual se usan. Aunque sean muy similares, hay varias diferencias entre la forma en la que se sobrecarga una función operador miembro y una función amiga.

CONCLUSIONES La sobrecarga de funciones constructoras le permite al programador gestionar una complejidad mayor, permitiendo que los objetos se construyan de la forma más natural posible con relación a su uso específico.