SlideShare una empresa de Scribd logo
1 de 27
Lenguajes de Programación 1
(IA-044)
Lenguajes de programación – Estructuras de datos internas
Permite mostrar tildes
setlocale(LC_CTYPE, "Spanish"); //me permita tildes
https://medium.com/laboratoria-how-to/programación-estructurada-7fe400bae43d
Lenguajes de programación
Lenguajes de programación
Importación
de librerías
Declaración
de variables
Entrada Proceso Salida
Parcial 2
Jornalización
1. Estructura de datos internas
2. Arreglos Unidimensionales
3. Arreglos Bidimensionales
4. Arreglos Multidimensionales
5. Creación de tablas virtuales.
6. Uso de funciones implementando arreglos :
métodos de búsqueda y ordenamiento
7. Estructura de Registros
8. Arreglos como miembros de registros
9. Arreglos de registros.
10. Uso de registros implementando funciones
11. Punteros
Lenguajes de programación – Punteros
Cuando uno declara una variable inmediatamente el
compilador “RESERVA” memoria principal para ellas, esto
limita a las variables a un espacio estático de memoria
que no puede crecer, es decir, solamente puede usarse la
cantidad de memoria reservada durante la declaración de
las mismas.
int pumita; -32 768 a 32 767
16 bits
Lenguajes de programación – Punteros
Lenguajes de programación – Punteros
Double
8bytes
7.8Kb
Lenguajes de programación – Punteros
Existe otro mecanismo para manipular la memoria de
manera dinámica, con esto el programa debe poseer
completo control sobre la gestión de las mismas, cuando
crearlas, usarlas e incluso eliminarlas de memoria.
Esto se logra con los punteros.
Lenguajes de programación – Punteros
Un puntero es un tipo simple que
permite a un determinado programa
acceder a posiciones concretas de
memoria, y más específicamente a
determinadas zonas de la memoria
dinámica.
Lenguajes de programación – Punteros
Un tipo puntero se define utilizando la
palabra reservada typedef seguida del
tipo de la variable dinámica apuntada,
un asterisco para indicar que es un
puntero a una variable de dicho tipo, y
el identificador que denomina al tipo.
Por ejemplo:
Lenguajes de programación – Punteros
Lenguajes de programación – Punteros
Gestión de Memoria Dinámica
La memoria dinámica la debe gestionar el propio programador, por
lo que cuando necesite crear una determinada variable dinámica,
debe solicitar memoria dinámica con el operador new seguido por
el tipo de la variable dinámica a crear. Este operador (new) realiza
dos acciones principales, primero aloja (reserva) espacio en
memoria dinámica para albergar a la variable, y después crea
(invocando al constructor especificado) el contenido de la variable
dinámica. Finalmente, a la variable ptr se le asigna el valor del
puntero (una dirección de memoria) que apunta a la variable
dinámica creada por el operador new.
Lenguajes de programación – Punteros
CONSTRUCTORES
Gestión de Memoria Dinámica
Por ejemplo, para crear una variable dinámica del tipo Persona
definido anteriormente utilizando el constructor por defecto de
dicho tipo:
Nombre
Teléfono
Edad
Memoria que se creará
cuando asigne valores
Lenguajes de programación – Punteros
DESTRUCTORES/RECOLECTORES DE BASURA
Gestión de Memoria Dinámica
Posteriormente, tras manipular adecuadamente, según las
características del programa, la memoria dinámica alojada,
llegará un momento en que dicha variable dinámica ya no sea
necesaria, y su tiempo de vida llegue a su fin. En este caso, el
programador debe liberar explícitamente dicha variable
dinámica mediante el operador delete de la siguiente forma:
Lenguajes de programación – Punteros
DESTRUCTORES/RECOLECTORES DE BASURA
Gestión de Memoria Dinámica
Lenguajes de programación – Punteros
DESREFEENCIAR UN PUNTERO
Para acceder a una variable dinámica apuntada por una variable de tipo
puntero, se utiliza el operador unario asterisco (*) precediendo al nombre
de la variable de tipo puntero a través de la cual es apuntada. Por
ejemplo, si ptr es una variable local de tipo puntero que apunta a una
variable dinámica de tipo Persona, entonces *ptr es la variable dinámica
apuntada, y se trata de igual forma que cualquier otra variable de tipo
Persona.
Lenguajes de programación – Punteros
DESREFEENCIAR UN PUNTERO
Lenguajes de programación – Punteros
DESREFEENCIAR UN PUNTERO
Nótese que el uso de los paréntesis es obligatorio debido a
que el operador punto (.) tiene mayor precedencia que el
operador de desreferenciación (*). Por ello, en el caso de
acceder a los campos de un registro en memoria dinámica a
través de una variable de tipo puntero, es más adecuado
utilizar el operador de desreferenciación (->).
Lenguajes de programación – Punteros
DESREFEENCIAR UN PUNTERO
Lenguajes de programación – Punteros
PUNTERO
Un PUNTERO puede APUNTAR a NULL, esto
significa que puede no estar referenciado a
un espacio de memoria aún pero si existir.
Lenguajes de programación – Punteros
LISTAS ENLAZADAS
Una de las principales aplicaciones de la Memoria Dinámica es el uso de
estructuras enlazadas, de tal forma que un campo o atributo de la variable
dinámica es a su vez también de tipo puntero, por lo que puede apuntar a
otra variable dinámica que también tenga un campo o atributo de tipo
puntero, el cual puede volver a apuntar a otra variable dinámica, y así
sucesivamente, tantas veces como sea necesario, hasta que un puntero
con el valor NULL indique el final de la estructura enlazada (lista enlazada).
Lenguajes de programación – Punteros
LISTAS ENLAZADAS
Lenguajes de programación – Punteros
LISTAS ENLAZADAS
Podemos usar listas enlazadas para optimizar estructuras
de datos como:
1. Pilas.
2. Colas.
3. Árboles.
4. Grafos.
Lenguajes de programación – Punteros
HAY QUE DEFINIR CADA UNA DE ELLAS
LISTAS ENLAZADAS
Podemos usar listas enlazadas para optimizar estructuras
de datos como:
1. Pilas.
2. Colas.
3. Árboles.
4. Grafos.
Lenguajes de programación – Punteros
LISTAS DOBLEMENTE ENLAZADAS
Lenguajes de programación – Punteros
LISTAS MULTIPLEMENTE ENLAZADAS

Más contenido relacionado

Similar a 4. Lenguajes de programación - punteros.pptx

Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
Car_00_01
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
Carlos Pastorino
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
joeshego
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
Daniela Brignolo
 
Compiladores para fortran, pascal y c
Compiladores para fortran, pascal y cCompiladores para fortran, pascal y c
Compiladores para fortran, pascal y c
Leonardo Lopez
 

Similar a 4. Lenguajes de programación - punteros.pptx (20)

Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
CONSULTA
CONSULTACONSULTA
CONSULTA
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Consulta
ConsultaConsulta
Consulta
 
Resumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamachoResumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamacho
 
Introduccion al lenguaje de programacion c
Introduccion al lenguaje de programacion cIntroduccion al lenguaje de programacion c
Introduccion al lenguaje de programacion c
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Unmsm02 2008
Unmsm02 2008Unmsm02 2008
Unmsm02 2008
 
NASM
NASM NASM
NASM
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
 
Compiladores para fortran, pascal y c
Compiladores para fortran, pascal y cCompiladores para fortran, pascal y c
Compiladores para fortran, pascal y c
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensamblador
 
GENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIOGENERACION DE CODIGO INTERMEDIO
GENERACION DE CODIGO INTERMEDIO
 

4. Lenguajes de programación - punteros.pptx

  • 2. Lenguajes de programación – Estructuras de datos internas Permite mostrar tildes setlocale(LC_CTYPE, "Spanish"); //me permita tildes
  • 4. Lenguajes de programación Importación de librerías Declaración de variables Entrada Proceso Salida
  • 5. Parcial 2 Jornalización 1. Estructura de datos internas 2. Arreglos Unidimensionales 3. Arreglos Bidimensionales 4. Arreglos Multidimensionales 5. Creación de tablas virtuales. 6. Uso de funciones implementando arreglos : métodos de búsqueda y ordenamiento 7. Estructura de Registros 8. Arreglos como miembros de registros 9. Arreglos de registros. 10. Uso de registros implementando funciones 11. Punteros
  • 6. Lenguajes de programación – Punteros Cuando uno declara una variable inmediatamente el compilador “RESERVA” memoria principal para ellas, esto limita a las variables a un espacio estático de memoria que no puede crecer, es decir, solamente puede usarse la cantidad de memoria reservada durante la declaración de las mismas. int pumita; -32 768 a 32 767 16 bits
  • 8. Lenguajes de programación – Punteros Double 8bytes 7.8Kb
  • 9. Lenguajes de programación – Punteros Existe otro mecanismo para manipular la memoria de manera dinámica, con esto el programa debe poseer completo control sobre la gestión de las mismas, cuando crearlas, usarlas e incluso eliminarlas de memoria. Esto se logra con los punteros.
  • 10. Lenguajes de programación – Punteros Un puntero es un tipo simple que permite a un determinado programa acceder a posiciones concretas de memoria, y más específicamente a determinadas zonas de la memoria dinámica.
  • 11. Lenguajes de programación – Punteros Un tipo puntero se define utilizando la palabra reservada typedef seguida del tipo de la variable dinámica apuntada, un asterisco para indicar que es un puntero a una variable de dicho tipo, y el identificador que denomina al tipo. Por ejemplo:
  • 13. Lenguajes de programación – Punteros Gestión de Memoria Dinámica La memoria dinámica la debe gestionar el propio programador, por lo que cuando necesite crear una determinada variable dinámica, debe solicitar memoria dinámica con el operador new seguido por el tipo de la variable dinámica a crear. Este operador (new) realiza dos acciones principales, primero aloja (reserva) espacio en memoria dinámica para albergar a la variable, y después crea (invocando al constructor especificado) el contenido de la variable dinámica. Finalmente, a la variable ptr se le asigna el valor del puntero (una dirección de memoria) que apunta a la variable dinámica creada por el operador new.
  • 14. Lenguajes de programación – Punteros CONSTRUCTORES Gestión de Memoria Dinámica Por ejemplo, para crear una variable dinámica del tipo Persona definido anteriormente utilizando el constructor por defecto de dicho tipo: Nombre Teléfono Edad Memoria que se creará cuando asigne valores
  • 15. Lenguajes de programación – Punteros DESTRUCTORES/RECOLECTORES DE BASURA Gestión de Memoria Dinámica Posteriormente, tras manipular adecuadamente, según las características del programa, la memoria dinámica alojada, llegará un momento en que dicha variable dinámica ya no sea necesaria, y su tiempo de vida llegue a su fin. En este caso, el programador debe liberar explícitamente dicha variable dinámica mediante el operador delete de la siguiente forma:
  • 16. Lenguajes de programación – Punteros DESTRUCTORES/RECOLECTORES DE BASURA Gestión de Memoria Dinámica
  • 17. Lenguajes de programación – Punteros DESREFEENCIAR UN PUNTERO Para acceder a una variable dinámica apuntada por una variable de tipo puntero, se utiliza el operador unario asterisco (*) precediendo al nombre de la variable de tipo puntero a través de la cual es apuntada. Por ejemplo, si ptr es una variable local de tipo puntero que apunta a una variable dinámica de tipo Persona, entonces *ptr es la variable dinámica apuntada, y se trata de igual forma que cualquier otra variable de tipo Persona.
  • 18. Lenguajes de programación – Punteros DESREFEENCIAR UN PUNTERO
  • 19. Lenguajes de programación – Punteros DESREFEENCIAR UN PUNTERO Nótese que el uso de los paréntesis es obligatorio debido a que el operador punto (.) tiene mayor precedencia que el operador de desreferenciación (*). Por ello, en el caso de acceder a los campos de un registro en memoria dinámica a través de una variable de tipo puntero, es más adecuado utilizar el operador de desreferenciación (->).
  • 20. Lenguajes de programación – Punteros DESREFEENCIAR UN PUNTERO
  • 21. Lenguajes de programación – Punteros PUNTERO Un PUNTERO puede APUNTAR a NULL, esto significa que puede no estar referenciado a un espacio de memoria aún pero si existir.
  • 22. Lenguajes de programación – Punteros LISTAS ENLAZADAS Una de las principales aplicaciones de la Memoria Dinámica es el uso de estructuras enlazadas, de tal forma que un campo o atributo de la variable dinámica es a su vez también de tipo puntero, por lo que puede apuntar a otra variable dinámica que también tenga un campo o atributo de tipo puntero, el cual puede volver a apuntar a otra variable dinámica, y así sucesivamente, tantas veces como sea necesario, hasta que un puntero con el valor NULL indique el final de la estructura enlazada (lista enlazada).
  • 23. Lenguajes de programación – Punteros LISTAS ENLAZADAS
  • 24. Lenguajes de programación – Punteros LISTAS ENLAZADAS Podemos usar listas enlazadas para optimizar estructuras de datos como: 1. Pilas. 2. Colas. 3. Árboles. 4. Grafos.
  • 25. Lenguajes de programación – Punteros HAY QUE DEFINIR CADA UNA DE ELLAS LISTAS ENLAZADAS Podemos usar listas enlazadas para optimizar estructuras de datos como: 1. Pilas. 2. Colas. 3. Árboles. 4. Grafos.
  • 26. Lenguajes de programación – Punteros LISTAS DOBLEMENTE ENLAZADAS
  • 27. Lenguajes de programación – Punteros LISTAS MULTIPLEMENTE ENLAZADAS