0% encontró este documento útil (0 votos)
43 vistas18 páginas

Punteros

Una estructura de datos es una colección de datos organizados que permite realizar operaciones sobre ellos, clasificándose en estáticas (arreglos, structs) y dinámicas (listas, pilas, colas, árboles, grafos). Los punteros son variables que almacenan direcciones de memoria y son cruciales para mejorar el rendimiento en operaciones repetitivas, aunque su uso incorrecto puede llevar a errores comunes. La elección de la estructura de datos adecuada depende del problema a resolver y del lenguaje de programación utilizado.

Cargado por

dabanob
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
43 vistas18 páginas

Punteros

Una estructura de datos es una colección de datos organizados que permite realizar operaciones sobre ellos, clasificándose en estáticas (arreglos, structs) y dinámicas (listas, pilas, colas, árboles, grafos). Los punteros son variables que almacenan direcciones de memoria y son cruciales para mejorar el rendimiento en operaciones repetitivas, aunque su uso incorrecto puede llevar a errores comunes. La elección de la estructura de datos adecuada depende del problema a resolver y del lenguaje de programación utilizado.

Cargado por

dabanob
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

CONCEPTUALIZACIÓN DE

ESTRUCTURA DE DATOS
CONCEPTUALIZACIÓN DE ESTRUCTURA
DE DATOS

Una estructura de datos es la colección de datos que se caracterizan por su


organización y las operaciones que se definen en ella. Los datos de tipo
estándar pueden ser organizados en diferentes estructuras de datos:
estáticas y dinámicas.
CONCEPTUALIZACIÓN DE ESTRUCTURA
DE DATOS
Podemos enumerar como estructuras estáticas :

Los arreglos: Unidimensionales


Bidimensionales

Los Struct

Y en las estructuras dinámicas::

Listas
Pilas
Colas
Arboles
Grafos.
CONCEPTUALIZACIÓN DE ESTRUCTURA
DE DATOS

Las estructuras estáticas son aquellos en las que el espacio ocupado en memoria
se define en tiempo de compilación y no puede ser modificado durante la
ejecución del programa; por el contrario, en las estructuras de datos dinámicas el
espacio ocupado en memoria puede ser modificado en tiempo de ejecución.
La unidad de dato en la programación es la Variable

Nombre

A Dirección de Memoria

Valor
CONCEPTUALIZACIÓN DE ESTRUCTURA
DE DATOS
La elección de la estructura de datos idónea dependerá de la naturaleza
del problema a resolver y en menor medida, del lenguaje. Las estructuras
de datos tienen en común que un identificador, nombre, puede representar
a múltiples datos individuales.
Las estructuras estáticas denominadas arreglos, las podemos definir como
la colección de datos del mismo tipo, que se almacenan en posiciones
consecutivas de memoria y reciben un nombre común. Para referirse a un
determinado elemento de un arreglo se deberá utilizar un índice, que
especifique la posición relativa en el arreglo. Los arreglos pueden ser:
PUNTEROS
Estructura de datos
QUE ES UN PUNTERO
Un puntero es una variable capaz de almacenar direcciones de
memoria y mediante los operadores adecuados acceder a la
información que contiene la dirección de memoria a la que “apunta”
en cada momento
ASÍ SE DECLARAN
PUNTEROS:
 necesita saber el tipo apuntado (dato) para poder manipularlo.

<tipo> * <Identificador>
<Tipo> tipo de dato del objeto referenciado por el puntero
<Identificador> Identificador de la variable de tipo puntero

int *p; // puntero a entero


char *c; // puntero a carácter
OPERADORES * Y &

& devuelve la dirección de memoria donde comienza la variable .

* devuelve el contenido del objeto referenciado por el puntero . El operador *


se usa para acceder a los objetos a los que apunta un puntero
¿POR QUÉ SON IMPORTANTES LOS PUNTEROS?.

 Los punteros a datos mejoran significativamente el rendimiento de las


operaciones repetitivas tales como cadenas de desplazamiento, tablas de
búsqueda, tablas de control y estructuras árbol.
 Cuando se declara un puntero se reserva memoria para albergar una
dirección de memoria, pero NO PARA ALMACENAR EL DATO AL QUE APUNTA
EL PUNTERO. El espacio de memoria reservado para almacenar un puntero
es el mismo independientemente del tipo de dato al que apunte: el espacio
que ocupa una dirección de memoria.
¿CUÁLES SON LOS PELIGROS / ERRORES
TÍPICOS CON PUNTEROS?.
 Olvidarnos de reservar memoria, Olvidarnos de devolver memoria.
 Apuntar a dónde no es, No utilizar el operador adecuado (*, &).
EJEMPLOS:
#include <iostream> p_num = &num;
#include <stdio.h> cout<<"el número es: "<<*p_num<<endl;
cout<<"la dirección de memoria es:
#include <conio.h>
"<<p_num;

using namespace std; getch();


return 0;
}
int main()
{
int num;
int *p_num;
cout<<"ingrese un numero";
cin>>num;
EJEMPLOS:
#include <stdio.h>
#include <stdlib.h>

int main(){
int valor =5 ;
int *p;
int **pp;
p=&valor;
pp=&p;

printf("Contenido en memoria: %8d Direccion de memoria: %p Tipo de dato: int\n",


valor, &valor );
printf("Contenido en memoria: %p Direccion de memoria: %p Tipo de dato: int*\
n",p,&p);
printf("Contenido en memoria: %p Direccion de memoria: %p Tipo de dato: int**\
n",pp,&pp);
printf("\n\nEl valor al que apunta mi puntero a entero es: %d",*p);
}
EJEMPLOS:
#include <iostream> for (i = 0; i < 4; i++)
#include <stdio.h> {
printf("%d ", *p++ );
#include <conio.h>
using namespace std; }
getch();
return 0;
int main()
}
{
int t[] = {1, 2, 3, 5};
int *p;
int i;
p = &t[0];
//p=t;
EJEMPLOS:
#include "iostream"
#include "stdio.h" int main()
{
using namespace std; int numero = 10;
cout << "Antes de funcion " << numero << "\n";
int funcion(int valor)
funcion(numero); //Se pasa por valor
{
valor = valor + 10;
cout << "Despues de funcion " << numero << "\n";
return valor; cout << "Antes de funcionPunteros " << numero <<
} funcionPunteros(&numero);
cout << "Despues de funcionPunteros " << numero <
int funcionPunteros(int* valor) system("pause");
{ return 0;
*valor = *valor + 10; }
return *valor;
}
EJERCICIO
 Realice un ejercicio en Dev que permita conocer si un numero es par o
impar además imprima las direcciones de memoria.
 Realice un ejercicio en Dev C++, que permita ingresar n elementos al
vector y averiguar cuantos son primos (utilizar punteros)
PUNTERO A void ingresar()
{
cout<<"Ingrese datos de la estructura";

ESTRUCTURAS for (int i=0;i<3;i++)


{
cout<<"\ningresa el codigo: ";
#include<iostream>
cin>>((p_a+i)->codigo);
#include<conio.h> getchar();
#include <stdio.h> cout<<"\ningresa el nombre: ";
using namespace std; [Link]((p_a+i)->nombre,30,'\n');
struct alumno{ cout<<"\ningresa el apellido: ";
int codigo; [Link]((p_a+i)->apellido,30,'\n');
char nombre[25]; cout<<"\n\n";
char apellido[25]; }
}
}a[3];
void imprimir(alumno *)
alumno *p_a = a; {
void ingresar(); system("cls");
void imprimir(alumno *); cout<<"Datos Ingresados";
int main() for (int i=0;i<3;i++)
{ {
ingresar(); cout<<"\nel codigo: "<<(p_a+i)->codigo;
imprimir(p_a); cout<<"\ningresa el nombre: "<<(p_a+i)-
>nombre;
getch(); cout<<"\ningresa el apellido: "<<(p_a+i)-
return 0; >apellido;
} cout<<"\n\n";

También podría gustarte