SlideShare una empresa de Scribd logo
TIPOS DE
DATOS
ABSTRACTOS
(TDA)
Uso, manejo de plantillas, gestión
de memoria estática y dinámica
USO DE TDA
UN TDA ES UN MODELO MATEMÁTICO QUE DEFINE UNA COLECCIÓN DE PROPIEDADES Y OPERACIONES QUE SE
PUEDEN REALIZAR CON ÉL.
LA ABSTRACCIÓN SE CENTRA EN LA INDEPENDENCIA DE LA REPRESENTACIÓ N, LO QUE PERMITE AL PROGRAMADOR
MODIFICAR LA REPRESENTACIÓN DEL TAD SIN AFECTAR SU UTILIZACIÓN.
EJEMPLO:
UNA FECHA
TIENE UN DÍA, MES AÑO.
VA INCREMENTÁNDOSE SEGÚN EL PASO DE LOS DÍAS.
SE PUEDEN COMPARAR DOS Y DETERMINAR LA DISTANCIA QUE EXISTE ENT RE ESTAS.
SE EMPLEA UNA INTERFAZ, QUE PROPORCIONA INFORMACIÓN SOBRE CÓMO USAR EL TAD, SIN EXPONER SU
REPRESENTACIÓN INTERNA.
LA CONSTRUCCIÓN MODULAR PERMITE CAMBIOS EN LA IMPLEMENTACIÓN SIN AFECTAR EL CÓDIGO QUE UTILIZA EL
TAD.
LA ESPECIFICACIÓN DEBE SER PRECISA, GENERAL, LEGIBLE Y NO AMBIGUA PARA GARANTIZAR UNA COMPRENSIÓN
CLARA.
IMPLEMENTACIÓN DE UN TDA FECHA
FECHA.H
#IFNDEF FECHA_H
#DEFINE FECHA_H
CLASS FECHA {
PRIVATE:
INT DIA, MES, ANIO;
PUBLIC:
FECHA(INT D, INT M, INT A);
FECHA INCREMENTAR(INT NUMDIAS);
INT DISTANCIA(FECHA FIN);
INT OBTENERMES();
PRIVATE:
INT DIASENMES(INT M, INT A);
INT DIASDESDE1900(INT D, INT M, INT A);
};
#ENDIF
IMPLEMENTACIÓN DE UN TDA FECHA
FECHA.CPP
#INCLUDE "FECHA.H"
FECHA::FECHA(INT D, INT M, INT A) {
DIA = D;
MES = M;
ANIO = A;
}
FECHA FECHA::INCREMENTAR(INT NUMDIAS) {
DIA += NUMDIAS;
IF (DIA > DIASENMES(MES, ANIO)) {
DIA -= DIASENMES(MES, ANIO);
MES++;
IF (MES > 12) {
MES = 1;
ANIO++;
}
}
RETURN FECHA(DIA, MES, ANIO);
}
IMPLEMENTACIÓN DE UN TDA FECHA
INT FECHA::DISTANCIA(FECHA FIN) {
INT DIASINICIO = DIASDESDE1900(DIA, MES, ANIO);
INT DIASFIN = DIASDESDE1900(FIN.DIA, FIN.MES, FIN.ANIO);
RETURN DIASFIN - DIASINICIO;
}
INT FECHA::OBTENERMES() {
RETURN MES;
}
INT FECHA::DIASENMES(INT M, INT A) {
IF (M == 2) {
IF (A % 4 == 0 && (A % 100 != 0 || A % 400 == 0)) {
RETURN 29;
} ELSE {
RETURN 28;
}
} ELSE IF (M == 4 || M == 6 || M == 9 || M == 11) {
RETURN 30;
} ELSE {
RETURN 31;
}
}
IMPLEMENTACIÓN DE UN TDA FECHA
INT FECHA::DIASDESDE1900(INT D, INT M, INT A) {
INT DIAS = 0;
FOR (INT I = 1900; I < A; I++) {
IF (I % 4 == 0 && (I % 100 != 0 || I % 400 == 0)) {
DIAS += 366;
} ELSE {
DIAS += 365;
}
}
FOR (INT I = 1; I < M; I++) {
DIAS += DIASENMES(I, A);
}
DIAS += D - 1;
RETURN DIAS;
}
PLANTILLAS
GENÉRICAS
7 T D A ’ S
Las plantillas son una forma
especial de escribir funciones
y clases para que puedan
usarse con cualquier tipo de
cosas, similar a la sobrecarga
de funciones, pero evite
escribir todas las versiones de
una función.
Ventajas:
Los templates permiten escribir código que funciona con varios tipos de datos.
Esto es diferente del polimorfismo basado en herencia que se logra con clases
y funciones virtuales.
Esto lleva a un código más general y reutilizable.
Desventajas:
El uso extensivo de templates puede llevar a un aumento en el tiempo de
compilación.
Los mensajes de error del compilador relacionados con templates pueden ser
largos y complejos. Interpretar y corregir estos mensajes puede resultar
desafiante
PLANTILLAS GENÉRICAS - SINTAXIS
Una definición de plantilla comienza con la palabra reservada template seguida por una lista de
parámetros de la plantilla separados por comas, encerrados entre estas llaves < >. La lista de
parámetros no puede estar vacía.
T es un parámetro tipo, que puede ser cambiado por cualquier letra, también es conocido como el
argumento de la plantilla, y se puede especificar un puntero (T * parámetro) o una referencia (T &
parámetro)” (Luis Joyanes,2007, p 159).
template <class T>
template <typename T>
PLANTILLAS GENÉRICAS –
IMPLEMENTACIÓN EN UN TDA
Calculo.h
#include<iostream>
#include<conio.h>
// **Declaración de la plantilla de la clase Calculo**
template < typename T >
class Calculo
{
public:
// **Constructor**
// Este constructor inicializa las 2 variables privadas
// de la clase Calculo, con los valores especificados en
// los valores especificados en los argumentos ayb tipo template
Calculo(T a, T b) : a(a), b(b) {};
// **Función para sumar los valores de ayb**
T sumar ();
// **Función para restablecer los valores de ayb**
T restablecer ();
// **Función para multiplicar los valores de ayb**
T multiplicar ();
private:
// **Atributos**
// Almacenan los valores de tipo T que se utilizarán en las operaciones.
T a;
T b;
};
PLANTILLAS GENÉRICAS –
IMPLEMENTACIÓN EN UN TDA
Calculo.cpp
#include<iostream>
#include<conio.h>
#include "Calculo.h"
#include <stdio.h>
using namespace std;
// **Función para sumar los valores de a y b**
template <typename T>
T Calculo<T>::sumar() {
return a + b;
}
// **Función para restar los valores de a y b**
template <typename T>
T Calculo<T>::restar() {
return a - b;
}
// **Función para multiplicar los valores de a y b**
template <typename T>
T Calculo<T>::multiplicar() {
return a * b;
}
PLANTILLAS GENÉRICAS –
IMPLEMENTACIÓN EN UN TDA
main.cpp
#include "Calculo.cpp"
#include <stdio.h>
int main()
{
float a, b; //Declaracion de variables tipo float
printf("Calculadora para numeros mayores a ceronn ");
do {
//se pide que se ingresen 2 numeros mayores a cero
printf("Ingrese un numero a: ");
scanf("%f", &a);
printf("Ingrese un numero b: ");
scanf("%f", &b);
if (a <= 0 || b <= 0) {
//si no se ingresa un numero correcto se imprime el mensaje y se vuelve a pedir los valores
printf("El numero ingresado no es valido. Ingrese un numero mayor a cero nn");
}
}while (a <= 0 || b <= 0);
// **Crea un objeto de la clase Calculo de tipo float**
Calculo<float> intCalculo(a, b);
// **Asigna los resultados de las operaciones aritméticas a variables**
float resultadoSuma = intCalculo.sumar();
float resultadoResta = intCalculo.restar();
float resultadoMultiplicacion = intCalculo.multiplicar();
// **Imprime los resultados**
printf("La suma es: %fn", resultadoSuma);
printf("La resta es: %fn", resultadoResta);
printf("La multiplicacion es: %fn", resultadoMultiplicacion);
// **Retorna 0**
return 0;
}
SOBRECARGA DE
OPERADORES Y
FUNCIONES
La sobrecarga es una característica que ofrece el
lenguaje C++ para aplicar una misma operación, a través
de operadores o funciones, a diferentes tipos de datos.
Se pueden sobrecargar operadores, por ejemplo +, *, –,
etcétera y funciones definidas por el propio usuario.
Esto promueve la reutilización del código y simplifica la
implementación de clases y estructuras personalizadas.
Sobrecarga de operadores – detalles y sintaxis
Sobrecarga de Operadores.
La sobrecarga de operadores consiste en definir comportamientos específicos para
operadores en contextos distintos. Facilita la manipulación de tipos de datos personalizados,
permitiendo definir el comportamiento de los operadores en esos tipos.
Operadores que se pueden sobrecargar:
1.Operadores Aritméticos.
2.Operadores de comparación:
3.Operadores Lógicos:
4.Operadores de Incremento y decremento
5.Operadores de miembro.
6.Operador de asignación.
tipo operator operador (parámetros)
{
//Instrucciones
}
TABLA Operadores que
pueden sobrecargarse en C++
+ ++ & =
% >> / |
* << - !
> > ^ ==
Sobrecarga de operadores – Implementación
ClasesFrac.h
#include <iostream>
using namespace std;
class Frac{
private:
int a;
int b;
public:
Frac() : a(0), b(0){}
void in();
Frac operator*(const Frac &obj);
void out();
};
ClasesFrac.cpp
#include <iostream>
#include "Frac.h"
using namespace std;
void Frac::in(){
cout << "Ingrese el numerador : ";
cin >> a;
cout<< "Ingrese el denominator : ";
cin >> b;
}
// Overload the * operator
Frac Frac::operator*(const Frac &obj){
Frac temporal;
temporal.a = a * obj.a;
temporal.b = b * obj.b;
return temporal;
}
void Frac::out(){
cout << "La multiplicacion de la fraccion es: " << a << "/" << b;
}
Sobrecarga de operadores – Implementación
main.cpp
#include <iostream>
#include "Frac.h"
int main(){
Frac F1, F2, result;
system("cls");
cout << "Ingresar la primera fracion: "
<< endl;
F1.in();
cout << " Ingresar la segunda fracion: "
<< endl;
F2.in();
result = F1 * F2;
result.out();
return 0;
}
SOBRECARGA DE FUNCIONES – DETALLES E IMPLEMENTACIÓN
La sobrecarga de funciones es el proceso de definir dos o más funciones con el mismo nombre, que solo difieren en los parámetros que
requieren y en el tipo de resultado que producen.
Si se usa demasiado, el programa puede ser poco legible. Además, es importante tener en cuenta que no es factible definir dos funciones que
varían solo en el tipo de resultado.
ClaseFuncion.h
#pragma once
class Multiplicar {
private:
int result;
public:
int multiplicar(int valor1, int valor2);
int multiplicar(int valor1, int valor2, int valor3);
};
ClaseFuncion.cpp
#include "funcion.h"
int Multiplicar::multiplicar(int valor1, int valor2) {
result = valor1 * valor2;
return result;
}
int Multiplicar::multiplicar(int valor1, int valor2, int valor3)
{
result = (valor1 * valor2) * valor3;
return result;
}
SOBRECARGA DE FUNCIONES – DETALLES E IMPLEMENTACIÓN
Main.cpp
#include <iostream>
#include "Metodo.h"
using namespace std;
int main() {
system("cls");
int a,b,c;
Multiplicar m;
cout <<"tOPERADOR SOBRECARGADOS"<<endl;
cout << "MULTIPLICACION DE DOS NUMEROS : " <<endl;
cout << "Ingrese el primer numero: ";
cin >> a;
cout << "Ingrese el segundo numero: ";
cin >> b;
cout << "La multiplicacion es: " << m.multiplicar(a,
b)<<endl;
cout << "MULTIPLICACION DE TRES NUMEROS: " <<endl;
cout << "Ingrese el primer numero: ";
cin >> a;
cout << "Ingrese el segundo numero: ";
cin >> b;
cout << "Ingrese el tercer numero: ";
cin >> c;
cout << "La multiplicacion de tres numeros es: " <<
m.multiplicar(a, b,c) << endl;
return 0;
}
GESTIÓN DE MEMORIA
ESTÁTICA
La memoria estática cómo su nombre lo dice es aquella que no
puede variar en tiempo de ejecución, así como tampoco puede ser
liberada automáticamente, es necesario liberarla manualmente una
vez se complete el funcionamiento.
No se podrá almacenar en memoria estática los objetos
correspondientes a procedimientos o funciones recursivas, ya que
en tiempo de compilación no se sabe el número de variables que
serán necesarias.
GESTIÓN ESTÁTICA - IMPLEMENTACIÓN
ClaseVector.h
#pragma once
#include <iostream>
class vector {
private:
int vect[10];
public:
vector(int[10]);
public:
vector (int[10]);
vector()=default;
void setvect(int[10]);
int* getvect();
~vector();
}
ClaseVector.cpp
#include "vector.h"
vector::vector(int vec[10]){
for(int i=0;i<10;i++){
vect[i]=vec[i];
}
}
void vector::setVect(int vec[10]){
for(int i=0;i<10;i++){
vect[i]=vec[i];
}
}
int* vector::getVect(){
return vect;
}
vector::~vector(){
}
GESTIÓN ESTÁTICA - IMPLEMENTACIÓN
claseOperaciones.h
#pragma once
#include <iostream>
#include "Vector.h"
class Operaciones{
private:
Vector v;
public:
Operaciones()=default;
Operaciones(Vector&);
void encerar();
void ingresar();
float procesar();
void imprimir();
Vector getVec();
};
GESTIÓN ESTÁTICA - IMPLEMENTACIÓN
claseOperaciones.cpp
#include <stdlib.h>
#include <claseOperaciones.h>
Operaciones:: Operaciones(Vector&vec){
}
void Operaciones::encerar(){
int vec [10];
for(int i=0;i<10;i++){
vec[i]=0;
}
}
viod Operaciones::ingresar(){
int vec [10];
for(int i=0;i<10;i++){
vec[i]=rand()%11;
}
this->v.setVect(vec);
}
float Operaciones::procesar(){
float vec [10];
for(int i=0;i<10;i++){
promedio+v.getVect()[i];
}
return promedio/10;
}
viod Operaciones::imprimir(){
std::count<<*nvector={";
for(int i=0;i<10;i++){
std::count<<v.grtVect()[i]<<"";
}
std::count<<"}";
}
vector Operaciones::getVector()
{
return v:
}
GESTIÓN ESTÁTICA - IMPLEMENTACIÓN
main.cpp
#include <iostream>
#include "Operaciones.h"
#include <conio.h>
int main(int argc, char* argv) {
std::cout<<"Taller Numero 3 Memoria
Estatica Vectores"<<std::endl;
Operaciones op;
op.encerar();
op. Ingresar();
std::cout Promedio: *<<up.procesar();
op.imprimir();
getch();
return 0;
}
return gol(f, seed, [])
}
GESTIÓN DE MEMORIA
DINÁMICA
En la memoria dinámica durante la ejecución del programa el
tamaño de la estructura puede cambiar, las estructuras de datos
dinámicas se generan a partir de un dato conocido como referencia
(dirección de memoria).
Punteros: Es una variable que contiene una posición de memoria, y por tanto se
dice que apunta a esa posición de memoria.
Declaración: Declaración <tipo> *<identificador> <tipo> Tipo de dato del objeto
referenciado por el puntero <identificador> Identificador de la variable de tipo
puntero.
Dirección: Operador & &<id> devuelve La dirección de memoria donde
comienza la variable <id>.
El operador & se utiliza para asignar valores a datos de tipo puntero
Indirección: Operador * devuelve el contenido del referenciado por el puntero.
objeto El operador * se usa para acceder a los objetos a los que apunta un
puntero.
Asignación: Operador = A un puntero se le puede asignar una dirección de
memoria concreta, la dirección de una variable o el contenido de otro puntero.
Punteros a punteros: Es un puntero que contiene la dirección de memoria de
otro puntero.
GESTIÓN DINÁMICA - CONSIDERACIONES
Para acceder al valor de la variable ‘a’ podemos escribir a (forma
habitual)
*p (a través del puntero p)
**q (a través del puntero a puntero q)
q contiene la dirección de p, que contiene la dirección de a
Operador New: Sirve para reservar memoria Este operador
permite crear un objeto de cualquier tipo, incluyendo tipos
definidos por el usuario, devuelve un adecuado) al objeto creado.
Operador Delete: Se usa para liberar la memoria dinámica
reservada con new. La expresión será normalmente un puntero,
el operador delete[] se usa para liberar memoria de arrays
dinámicos. Es importante liberar siempre usando delete la
memoria reservada con new.
Recursos complementarios
•Recurso Video de tipos de datos abstractos.
https://www.youtube.com/watch?v=f2EXztXim_4
•Recurso Video de Memoria estática y dinámica.
https://www.youtube.com/watch?v=qfH9ySFxC2A
•Recurso Video de Memoria Dinámica.
https://www.youtube.com/watch?v=3IHRO2ReNPc
Referencias
Guardati, , S. G. (2017).ESTRUCTURA DE DATOS
ORIENTADA A OBJETOS Algoritmos con C+ 1ra.
Castillo, Bernardino Gutiérrez Hernández Supervisor de
producción: Rodrigo Romero Villalobo.
Himadri, M. (2016) Data structures with C - by Schaum Series,
Academia.edu. Available at:
https://www.academia.edu/27906978/Data_Structures_With_C
_by_schaum_series (Accessed: 10 January 2024).
Climent, J. J. (2009). Introducción a los tipos abstractos de
datos (TADs) [PDF]. Universitat Oberta de Catalunya.
https://openaccess.uoc.edu/bitstream/10609/9122/1/Intro_TAD
s.pdf

Más contenido relacionado

Similar a Concepto y definición de tipos de Datos Abstractos en c++.pptx

Sesion 4
Sesion 4Sesion 4
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
computaciondosunefm
 
Novedades sl-2003-03
Novedades sl-2003-03Novedades sl-2003-03
Novedades sl-2003-03
roberto velez
 
Funciones
FuncionesFunciones
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
Daniel Carpio Contreras
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
Bryangio2002
 
Semana 02 software libre maxima
Semana 02 software libre maximaSemana 02 software libre maxima
Semana 02 software libre maxima
Juan Carlos Broncanotorres
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
Gladys Coromoto Vergel Rivera
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
tacubomx
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
joeshego
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
HUGOJAREDSANCHEZMARTINEZ
 
Yerdelis programacion
Yerdelis programacionYerdelis programacion
Yerdelis programacion
yerdelis
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadores
r0na91
 
Capitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cCapitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en c
ecastelocc
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacion
sandra gutierrez
 
Programación en C++
Programación en C++Programación en C++
Programación en C++
Elvin Fortin
 
Escuela
EscuelaEscuela
Escuela
judithely
 
Escuela
EscuelaEscuela
Escuela
judithely
 
Clase 1 Programación II
Clase 1 Programación IIClase 1 Programación II
Clase 1 Programación II
reynaldocastillo
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
Aldo Hernán Zanabria Gálvez
 

Similar a Concepto y definición de tipos de Datos Abstractos en c++.pptx (20)

Sesion 4
Sesion 4Sesion 4
Sesion 4
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Novedades sl-2003-03
Novedades sl-2003-03Novedades sl-2003-03
Novedades sl-2003-03
 
Funciones
FuncionesFunciones
Funciones
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Semana 02 software libre maxima
Semana 02 software libre maximaSemana 02 software libre maxima
Semana 02 software libre maxima
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Yerdelis programacion
Yerdelis programacionYerdelis programacion
Yerdelis programacion
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadores
 
Capitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cCapitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en c
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacion
 
Programación en C++
Programación en C++Programación en C++
Programación en C++
 
Escuela
EscuelaEscuela
Escuela
 
Escuela
EscuelaEscuela
Escuela
 
Clase 1 Programación II
Clase 1 Programación IIClase 1 Programación II
Clase 1 Programación II
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
 

Más de Fernando Solis

AULA INVERTIDA.pdf
AULA INVERTIDA.pdfAULA INVERTIDA.pdf
AULA INVERTIDA.pdf
Fernando Solis
 
Subcadenas-en-C
Subcadenas-en-CSubcadenas-en-C
Subcadenas-en-C
Fernando Solis
 
BÚSQUEDA DE SUBCADENAS EN C
BÚSQUEDA DE SUBCADENAS EN CBÚSQUEDA DE SUBCADENAS EN C
BÚSQUEDA DE SUBCADENAS EN C
Fernando Solis
 
Almacenamiento de informacion en una estructura
Almacenamiento de informacion en una estructuraAlmacenamiento de informacion en una estructura
Almacenamiento de informacion en una estructura
Fernando Solis
 
Entrada y salida de datos
Entrada y salida de datosEntrada y salida de datos
Entrada y salida de datos
Fernando Solis
 
Longitud y Concatenacion
Longitud y ConcatenacionLongitud y Concatenacion
Longitud y Concatenacion
Fernando Solis
 
Lectura de datos de cadena
Lectura de datos de cadenaLectura de datos de cadena
Lectura de datos de cadena
Fernando Solis
 
Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)
Fernando Solis
 
Archivos Binarios vs Archivos de Texto
Archivos Binarios vs Archivos de TextoArchivos Binarios vs Archivos de Texto
Archivos Binarios vs Archivos de Texto
Fernando Solis
 
DEFINICION DE CADENAS O STRINGS
DEFINICION DE CADENAS O STRINGSDEFINICION DE CADENAS O STRINGS
DEFINICION DE CADENAS O STRINGS
Fernando Solis
 
Declaración e inicialización de variables de tipo cadena
Declaración e inicialización de variables de tipo cadenaDeclaración e inicialización de variables de tipo cadena
Declaración e inicialización de variables de tipo cadena
Fernando Solis
 
Conversion de Strings
Conversion de StringsConversion de Strings
Conversion de Strings
Fernando Solis
 
Comparacion de arreglos Strings
Comparacion de arreglos StringsComparacion de arreglos Strings
Comparacion de arreglos Strings
Fernando Solis
 
Cadenas y/o strings
Cadenas y/o stringsCadenas y/o strings
Cadenas y/o strings
Fernando Solis
 
Asignacion
AsignacionAsignacion
Asignacion
Fernando Solis
 
Acceso en tipos de datos abstractos
Acceso en tipos de datos abstractosAcceso en tipos de datos abstractos
Acceso en tipos de datos abstractos
Fernando Solis
 
Arreglo Orden Seleccion
Arreglo  Orden SeleccionArreglo  Orden Seleccion
Arreglo Orden Seleccion
Fernando Solis
 
Algoritmos de Busqueda
Algoritmos de BusquedaAlgoritmos de Busqueda
Algoritmos de Busqueda
Fernando Solis
 
Quick Sort
Quick SortQuick Sort
Quick Sort
Fernando Solis
 
Ordenacion Radix
Ordenacion RadixOrdenacion Radix
Ordenacion Radix
Fernando Solis
 

Más de Fernando Solis (20)

AULA INVERTIDA.pdf
AULA INVERTIDA.pdfAULA INVERTIDA.pdf
AULA INVERTIDA.pdf
 
Subcadenas-en-C
Subcadenas-en-CSubcadenas-en-C
Subcadenas-en-C
 
BÚSQUEDA DE SUBCADENAS EN C
BÚSQUEDA DE SUBCADENAS EN CBÚSQUEDA DE SUBCADENAS EN C
BÚSQUEDA DE SUBCADENAS EN C
 
Almacenamiento de informacion en una estructura
Almacenamiento de informacion en una estructuraAlmacenamiento de informacion en una estructura
Almacenamiento de informacion en una estructura
 
Entrada y salida de datos
Entrada y salida de datosEntrada y salida de datos
Entrada y salida de datos
 
Longitud y Concatenacion
Longitud y ConcatenacionLongitud y Concatenacion
Longitud y Concatenacion
 
Lectura de datos de cadena
Lectura de datos de cadenaLectura de datos de cadena
Lectura de datos de cadena
 
Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)
 
Archivos Binarios vs Archivos de Texto
Archivos Binarios vs Archivos de TextoArchivos Binarios vs Archivos de Texto
Archivos Binarios vs Archivos de Texto
 
DEFINICION DE CADENAS O STRINGS
DEFINICION DE CADENAS O STRINGSDEFINICION DE CADENAS O STRINGS
DEFINICION DE CADENAS O STRINGS
 
Declaración e inicialización de variables de tipo cadena
Declaración e inicialización de variables de tipo cadenaDeclaración e inicialización de variables de tipo cadena
Declaración e inicialización de variables de tipo cadena
 
Conversion de Strings
Conversion de StringsConversion de Strings
Conversion de Strings
 
Comparacion de arreglos Strings
Comparacion de arreglos StringsComparacion de arreglos Strings
Comparacion de arreglos Strings
 
Cadenas y/o strings
Cadenas y/o stringsCadenas y/o strings
Cadenas y/o strings
 
Asignacion
AsignacionAsignacion
Asignacion
 
Acceso en tipos de datos abstractos
Acceso en tipos de datos abstractosAcceso en tipos de datos abstractos
Acceso en tipos de datos abstractos
 
Arreglo Orden Seleccion
Arreglo  Orden SeleccionArreglo  Orden Seleccion
Arreglo Orden Seleccion
 
Algoritmos de Busqueda
Algoritmos de BusquedaAlgoritmos de Busqueda
Algoritmos de Busqueda
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 
Ordenacion Radix
Ordenacion RadixOrdenacion Radix
Ordenacion Radix
 

Último

Módulo 1 de didactica de la lecto escritura
Módulo 1 de didactica de la lecto escrituraMódulo 1 de didactica de la lecto escritura
Módulo 1 de didactica de la lecto escritura
marilynfloresyomona1
 
1.- manual-para-la-creacion-33-dias-de-manifestacion-ulises-sampe.pdf
1.- manual-para-la-creacion-33-dias-de-manifestacion-ulises-sampe.pdf1.- manual-para-la-creacion-33-dias-de-manifestacion-ulises-sampe.pdf
1.- manual-para-la-creacion-33-dias-de-manifestacion-ulises-sampe.pdf
MiNeyi1
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
LuanaJaime1
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
RicardoValdiviaVega
 
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdfEvaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
EfranMartnez8
 
La vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primariaLa vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primaria
EricaCouly1
 
Eureka 2024 ideas y dudas para la feria de Ciencias
Eureka 2024 ideas y dudas para la feria de CienciasEureka 2024 ideas y dudas para la feria de Ciencias
Eureka 2024 ideas y dudas para la feria de Ciencias
arianet3011
 
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍACINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
Fernández Gorka
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
Jose Luis Jimenez Rodriguez
 
Mi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste BlancoMi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste Blanco
Ruth Noemí Soto Villegas
 
Los Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres VivosLos Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres Vivos
karlafreire0608
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
JonathanCovena1
 
Mapa Mental documentos que rigen el sistema de evaluación
Mapa Mental documentos que rigen el sistema de evaluaciónMapa Mental documentos que rigen el sistema de evaluación
Mapa Mental documentos que rigen el sistema de evaluación
ruthmatiel1
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
josseanlo1581
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
Sandra Mariela Ballón Aguedo
 
Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.
genesiscabezas469
 
Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
eleandroth
 
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdfAPUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
VeronicaCabrera50
 
MATERIAL ESCOLAR 2024-2025 3 AÑOS CEIP SAN CRISTÓBAL
MATERIAL ESCOLAR 2024-2025 3 AÑOS CEIP SAN CRISTÓBALMATERIAL ESCOLAR 2024-2025 3 AÑOS CEIP SAN CRISTÓBAL
MATERIAL ESCOLAR 2024-2025 3 AÑOS CEIP SAN CRISTÓBAL
Ana Fernandez
 

Último (20)

Módulo 1 de didactica de la lecto escritura
Módulo 1 de didactica de la lecto escrituraMódulo 1 de didactica de la lecto escritura
Módulo 1 de didactica de la lecto escritura
 
1.- manual-para-la-creacion-33-dias-de-manifestacion-ulises-sampe.pdf
1.- manual-para-la-creacion-33-dias-de-manifestacion-ulises-sampe.pdf1.- manual-para-la-creacion-33-dias-de-manifestacion-ulises-sampe.pdf
1.- manual-para-la-creacion-33-dias-de-manifestacion-ulises-sampe.pdf
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
 
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdfEvaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
 
A VISITA DO SENHOR BISPO .
A VISITA DO SENHOR BISPO                .A VISITA DO SENHOR BISPO                .
A VISITA DO SENHOR BISPO .
 
La vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primariaLa vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primaria
 
Eureka 2024 ideas y dudas para la feria de Ciencias
Eureka 2024 ideas y dudas para la feria de CienciasEureka 2024 ideas y dudas para la feria de Ciencias
Eureka 2024 ideas y dudas para la feria de Ciencias
 
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍACINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
 
Mi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste BlancoMi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste Blanco
 
Los Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres VivosLos Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres Vivos
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
 
Mapa Mental documentos que rigen el sistema de evaluación
Mapa Mental documentos que rigen el sistema de evaluaciónMapa Mental documentos que rigen el sistema de evaluación
Mapa Mental documentos que rigen el sistema de evaluación
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
 
Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.
 
Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
 
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdfAPUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
 
MATERIAL ESCOLAR 2024-2025 3 AÑOS CEIP SAN CRISTÓBAL
MATERIAL ESCOLAR 2024-2025 3 AÑOS CEIP SAN CRISTÓBALMATERIAL ESCOLAR 2024-2025 3 AÑOS CEIP SAN CRISTÓBAL
MATERIAL ESCOLAR 2024-2025 3 AÑOS CEIP SAN CRISTÓBAL
 

Concepto y definición de tipos de Datos Abstractos en c++.pptx

  • 1. TIPOS DE DATOS ABSTRACTOS (TDA) Uso, manejo de plantillas, gestión de memoria estática y dinámica
  • 2. USO DE TDA UN TDA ES UN MODELO MATEMÁTICO QUE DEFINE UNA COLECCIÓN DE PROPIEDADES Y OPERACIONES QUE SE PUEDEN REALIZAR CON ÉL. LA ABSTRACCIÓN SE CENTRA EN LA INDEPENDENCIA DE LA REPRESENTACIÓ N, LO QUE PERMITE AL PROGRAMADOR MODIFICAR LA REPRESENTACIÓN DEL TAD SIN AFECTAR SU UTILIZACIÓN. EJEMPLO: UNA FECHA TIENE UN DÍA, MES AÑO. VA INCREMENTÁNDOSE SEGÚN EL PASO DE LOS DÍAS. SE PUEDEN COMPARAR DOS Y DETERMINAR LA DISTANCIA QUE EXISTE ENT RE ESTAS. SE EMPLEA UNA INTERFAZ, QUE PROPORCIONA INFORMACIÓN SOBRE CÓMO USAR EL TAD, SIN EXPONER SU REPRESENTACIÓN INTERNA. LA CONSTRUCCIÓN MODULAR PERMITE CAMBIOS EN LA IMPLEMENTACIÓN SIN AFECTAR EL CÓDIGO QUE UTILIZA EL TAD. LA ESPECIFICACIÓN DEBE SER PRECISA, GENERAL, LEGIBLE Y NO AMBIGUA PARA GARANTIZAR UNA COMPRENSIÓN CLARA.
  • 3. IMPLEMENTACIÓN DE UN TDA FECHA FECHA.H #IFNDEF FECHA_H #DEFINE FECHA_H CLASS FECHA { PRIVATE: INT DIA, MES, ANIO; PUBLIC: FECHA(INT D, INT M, INT A); FECHA INCREMENTAR(INT NUMDIAS); INT DISTANCIA(FECHA FIN); INT OBTENERMES(); PRIVATE: INT DIASENMES(INT M, INT A); INT DIASDESDE1900(INT D, INT M, INT A); }; #ENDIF
  • 4. IMPLEMENTACIÓN DE UN TDA FECHA FECHA.CPP #INCLUDE "FECHA.H" FECHA::FECHA(INT D, INT M, INT A) { DIA = D; MES = M; ANIO = A; } FECHA FECHA::INCREMENTAR(INT NUMDIAS) { DIA += NUMDIAS; IF (DIA > DIASENMES(MES, ANIO)) { DIA -= DIASENMES(MES, ANIO); MES++; IF (MES > 12) { MES = 1; ANIO++; } } RETURN FECHA(DIA, MES, ANIO); }
  • 5. IMPLEMENTACIÓN DE UN TDA FECHA INT FECHA::DISTANCIA(FECHA FIN) { INT DIASINICIO = DIASDESDE1900(DIA, MES, ANIO); INT DIASFIN = DIASDESDE1900(FIN.DIA, FIN.MES, FIN.ANIO); RETURN DIASFIN - DIASINICIO; } INT FECHA::OBTENERMES() { RETURN MES; } INT FECHA::DIASENMES(INT M, INT A) { IF (M == 2) { IF (A % 4 == 0 && (A % 100 != 0 || A % 400 == 0)) { RETURN 29; } ELSE { RETURN 28; } } ELSE IF (M == 4 || M == 6 || M == 9 || M == 11) { RETURN 30; } ELSE { RETURN 31; } }
  • 6. IMPLEMENTACIÓN DE UN TDA FECHA INT FECHA::DIASDESDE1900(INT D, INT M, INT A) { INT DIAS = 0; FOR (INT I = 1900; I < A; I++) { IF (I % 4 == 0 && (I % 100 != 0 || I % 400 == 0)) { DIAS += 366; } ELSE { DIAS += 365; } } FOR (INT I = 1; I < M; I++) { DIAS += DIASENMES(I, A); } DIAS += D - 1; RETURN DIAS; }
  • 7. PLANTILLAS GENÉRICAS 7 T D A ’ S Las plantillas son una forma especial de escribir funciones y clases para que puedan usarse con cualquier tipo de cosas, similar a la sobrecarga de funciones, pero evite escribir todas las versiones de una función. Ventajas: Los templates permiten escribir código que funciona con varios tipos de datos. Esto es diferente del polimorfismo basado en herencia que se logra con clases y funciones virtuales. Esto lleva a un código más general y reutilizable. Desventajas: El uso extensivo de templates puede llevar a un aumento en el tiempo de compilación. Los mensajes de error del compilador relacionados con templates pueden ser largos y complejos. Interpretar y corregir estos mensajes puede resultar desafiante
  • 8. PLANTILLAS GENÉRICAS - SINTAXIS Una definición de plantilla comienza con la palabra reservada template seguida por una lista de parámetros de la plantilla separados por comas, encerrados entre estas llaves < >. La lista de parámetros no puede estar vacía. T es un parámetro tipo, que puede ser cambiado por cualquier letra, también es conocido como el argumento de la plantilla, y se puede especificar un puntero (T * parámetro) o una referencia (T & parámetro)” (Luis Joyanes,2007, p 159). template <class T> template <typename T>
  • 9. PLANTILLAS GENÉRICAS – IMPLEMENTACIÓN EN UN TDA Calculo.h #include<iostream> #include<conio.h> // **Declaración de la plantilla de la clase Calculo** template < typename T > class Calculo { public: // **Constructor** // Este constructor inicializa las 2 variables privadas // de la clase Calculo, con los valores especificados en // los valores especificados en los argumentos ayb tipo template Calculo(T a, T b) : a(a), b(b) {}; // **Función para sumar los valores de ayb** T sumar (); // **Función para restablecer los valores de ayb** T restablecer (); // **Función para multiplicar los valores de ayb** T multiplicar (); private: // **Atributos** // Almacenan los valores de tipo T que se utilizarán en las operaciones. T a; T b; };
  • 10. PLANTILLAS GENÉRICAS – IMPLEMENTACIÓN EN UN TDA Calculo.cpp #include<iostream> #include<conio.h> #include "Calculo.h" #include <stdio.h> using namespace std; // **Función para sumar los valores de a y b** template <typename T> T Calculo<T>::sumar() { return a + b; } // **Función para restar los valores de a y b** template <typename T> T Calculo<T>::restar() { return a - b; } // **Función para multiplicar los valores de a y b** template <typename T> T Calculo<T>::multiplicar() { return a * b; }
  • 11. PLANTILLAS GENÉRICAS – IMPLEMENTACIÓN EN UN TDA main.cpp #include "Calculo.cpp" #include <stdio.h> int main() { float a, b; //Declaracion de variables tipo float printf("Calculadora para numeros mayores a ceronn "); do { //se pide que se ingresen 2 numeros mayores a cero printf("Ingrese un numero a: "); scanf("%f", &a); printf("Ingrese un numero b: "); scanf("%f", &b); if (a <= 0 || b <= 0) { //si no se ingresa un numero correcto se imprime el mensaje y se vuelve a pedir los valores printf("El numero ingresado no es valido. Ingrese un numero mayor a cero nn"); } }while (a <= 0 || b <= 0); // **Crea un objeto de la clase Calculo de tipo float** Calculo<float> intCalculo(a, b); // **Asigna los resultados de las operaciones aritméticas a variables** float resultadoSuma = intCalculo.sumar(); float resultadoResta = intCalculo.restar(); float resultadoMultiplicacion = intCalculo.multiplicar(); // **Imprime los resultados** printf("La suma es: %fn", resultadoSuma); printf("La resta es: %fn", resultadoResta); printf("La multiplicacion es: %fn", resultadoMultiplicacion); // **Retorna 0** return 0; }
  • 12. SOBRECARGA DE OPERADORES Y FUNCIONES La sobrecarga es una característica que ofrece el lenguaje C++ para aplicar una misma operación, a través de operadores o funciones, a diferentes tipos de datos. Se pueden sobrecargar operadores, por ejemplo +, *, –, etcétera y funciones definidas por el propio usuario. Esto promueve la reutilización del código y simplifica la implementación de clases y estructuras personalizadas.
  • 13. Sobrecarga de operadores – detalles y sintaxis Sobrecarga de Operadores. La sobrecarga de operadores consiste en definir comportamientos específicos para operadores en contextos distintos. Facilita la manipulación de tipos de datos personalizados, permitiendo definir el comportamiento de los operadores en esos tipos. Operadores que se pueden sobrecargar: 1.Operadores Aritméticos. 2.Operadores de comparación: 3.Operadores Lógicos: 4.Operadores de Incremento y decremento 5.Operadores de miembro. 6.Operador de asignación. tipo operator operador (parámetros) { //Instrucciones } TABLA Operadores que pueden sobrecargarse en C++ + ++ & = % >> / | * << - ! > > ^ ==
  • 14. Sobrecarga de operadores – Implementación ClasesFrac.h #include <iostream> using namespace std; class Frac{ private: int a; int b; public: Frac() : a(0), b(0){} void in(); Frac operator*(const Frac &obj); void out(); }; ClasesFrac.cpp #include <iostream> #include "Frac.h" using namespace std; void Frac::in(){ cout << "Ingrese el numerador : "; cin >> a; cout<< "Ingrese el denominator : "; cin >> b; } // Overload the * operator Frac Frac::operator*(const Frac &obj){ Frac temporal; temporal.a = a * obj.a; temporal.b = b * obj.b; return temporal; } void Frac::out(){ cout << "La multiplicacion de la fraccion es: " << a << "/" << b; }
  • 15. Sobrecarga de operadores – Implementación main.cpp #include <iostream> #include "Frac.h" int main(){ Frac F1, F2, result; system("cls"); cout << "Ingresar la primera fracion: " << endl; F1.in(); cout << " Ingresar la segunda fracion: " << endl; F2.in(); result = F1 * F2; result.out(); return 0; }
  • 16. SOBRECARGA DE FUNCIONES – DETALLES E IMPLEMENTACIÓN La sobrecarga de funciones es el proceso de definir dos o más funciones con el mismo nombre, que solo difieren en los parámetros que requieren y en el tipo de resultado que producen. Si se usa demasiado, el programa puede ser poco legible. Además, es importante tener en cuenta que no es factible definir dos funciones que varían solo en el tipo de resultado. ClaseFuncion.h #pragma once class Multiplicar { private: int result; public: int multiplicar(int valor1, int valor2); int multiplicar(int valor1, int valor2, int valor3); }; ClaseFuncion.cpp #include "funcion.h" int Multiplicar::multiplicar(int valor1, int valor2) { result = valor1 * valor2; return result; } int Multiplicar::multiplicar(int valor1, int valor2, int valor3) { result = (valor1 * valor2) * valor3; return result; }
  • 17. SOBRECARGA DE FUNCIONES – DETALLES E IMPLEMENTACIÓN Main.cpp #include <iostream> #include "Metodo.h" using namespace std; int main() { system("cls"); int a,b,c; Multiplicar m; cout <<"tOPERADOR SOBRECARGADOS"<<endl; cout << "MULTIPLICACION DE DOS NUMEROS : " <<endl; cout << "Ingrese el primer numero: "; cin >> a; cout << "Ingrese el segundo numero: "; cin >> b; cout << "La multiplicacion es: " << m.multiplicar(a, b)<<endl; cout << "MULTIPLICACION DE TRES NUMEROS: " <<endl; cout << "Ingrese el primer numero: "; cin >> a; cout << "Ingrese el segundo numero: "; cin >> b; cout << "Ingrese el tercer numero: "; cin >> c; cout << "La multiplicacion de tres numeros es: " << m.multiplicar(a, b,c) << endl; return 0; }
  • 18. GESTIÓN DE MEMORIA ESTÁTICA La memoria estática cómo su nombre lo dice es aquella que no puede variar en tiempo de ejecución, así como tampoco puede ser liberada automáticamente, es necesario liberarla manualmente una vez se complete el funcionamiento. No se podrá almacenar en memoria estática los objetos correspondientes a procedimientos o funciones recursivas, ya que en tiempo de compilación no se sabe el número de variables que serán necesarias.
  • 19. GESTIÓN ESTÁTICA - IMPLEMENTACIÓN ClaseVector.h #pragma once #include <iostream> class vector { private: int vect[10]; public: vector(int[10]); public: vector (int[10]); vector()=default; void setvect(int[10]); int* getvect(); ~vector(); } ClaseVector.cpp #include "vector.h" vector::vector(int vec[10]){ for(int i=0;i<10;i++){ vect[i]=vec[i]; } } void vector::setVect(int vec[10]){ for(int i=0;i<10;i++){ vect[i]=vec[i]; } } int* vector::getVect(){ return vect; } vector::~vector(){ }
  • 20. GESTIÓN ESTÁTICA - IMPLEMENTACIÓN claseOperaciones.h #pragma once #include <iostream> #include "Vector.h" class Operaciones{ private: Vector v; public: Operaciones()=default; Operaciones(Vector&); void encerar(); void ingresar(); float procesar(); void imprimir(); Vector getVec(); };
  • 21. GESTIÓN ESTÁTICA - IMPLEMENTACIÓN claseOperaciones.cpp #include <stdlib.h> #include <claseOperaciones.h> Operaciones:: Operaciones(Vector&vec){ } void Operaciones::encerar(){ int vec [10]; for(int i=0;i<10;i++){ vec[i]=0; } } viod Operaciones::ingresar(){ int vec [10]; for(int i=0;i<10;i++){ vec[i]=rand()%11; } this->v.setVect(vec); } float Operaciones::procesar(){ float vec [10]; for(int i=0;i<10;i++){ promedio+v.getVect()[i]; } return promedio/10; } viod Operaciones::imprimir(){ std::count<<*nvector={"; for(int i=0;i<10;i++){ std::count<<v.grtVect()[i]<<""; } std::count<<"}"; } vector Operaciones::getVector() { return v: }
  • 22. GESTIÓN ESTÁTICA - IMPLEMENTACIÓN main.cpp #include <iostream> #include "Operaciones.h" #include <conio.h> int main(int argc, char* argv) { std::cout<<"Taller Numero 3 Memoria Estatica Vectores"<<std::endl; Operaciones op; op.encerar(); op. Ingresar(); std::cout Promedio: *<<up.procesar(); op.imprimir(); getch(); return 0; } return gol(f, seed, []) }
  • 23. GESTIÓN DE MEMORIA DINÁMICA En la memoria dinámica durante la ejecución del programa el tamaño de la estructura puede cambiar, las estructuras de datos dinámicas se generan a partir de un dato conocido como referencia (dirección de memoria). Punteros: Es una variable que contiene una posición de memoria, y por tanto se dice que apunta a esa posición de memoria. Declaración: Declaración <tipo> *<identificador> <tipo> Tipo de dato del objeto referenciado por el puntero <identificador> Identificador de la variable de tipo puntero. Dirección: Operador & &<id> devuelve La dirección de memoria donde comienza la variable <id>. El operador & se utiliza para asignar valores a datos de tipo puntero Indirección: Operador * devuelve el contenido del referenciado por el puntero. objeto El operador * se usa para acceder a los objetos a los que apunta un puntero. Asignación: Operador = A un puntero se le puede asignar una dirección de memoria concreta, la dirección de una variable o el contenido de otro puntero. Punteros a punteros: Es un puntero que contiene la dirección de memoria de otro puntero.
  • 24. GESTIÓN DINÁMICA - CONSIDERACIONES Para acceder al valor de la variable ‘a’ podemos escribir a (forma habitual) *p (a través del puntero p) **q (a través del puntero a puntero q) q contiene la dirección de p, que contiene la dirección de a Operador New: Sirve para reservar memoria Este operador permite crear un objeto de cualquier tipo, incluyendo tipos definidos por el usuario, devuelve un adecuado) al objeto creado. Operador Delete: Se usa para liberar la memoria dinámica reservada con new. La expresión será normalmente un puntero, el operador delete[] se usa para liberar memoria de arrays dinámicos. Es importante liberar siempre usando delete la memoria reservada con new.
  • 25. Recursos complementarios •Recurso Video de tipos de datos abstractos. https://www.youtube.com/watch?v=f2EXztXim_4 •Recurso Video de Memoria estática y dinámica. https://www.youtube.com/watch?v=qfH9ySFxC2A •Recurso Video de Memoria Dinámica. https://www.youtube.com/watch?v=3IHRO2ReNPc Referencias Guardati, , S. G. (2017).ESTRUCTURA DE DATOS ORIENTADA A OBJETOS Algoritmos con C+ 1ra. Castillo, Bernardino Gutiérrez Hernández Supervisor de producción: Rodrigo Romero Villalobo. Himadri, M. (2016) Data structures with C - by Schaum Series, Academia.edu. Available at: https://www.academia.edu/27906978/Data_Structures_With_C _by_schaum_series (Accessed: 10 January 2024). Climent, J. J. (2009). Introducción a los tipos abstractos de datos (TADs) [PDF]. Universitat Oberta de Catalunya. https://openaccess.uoc.edu/bitstream/10609/9122/1/Intro_TAD s.pdf