Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 3: Punteros
Sesión de Laboratorio - 5B
Profesores:
María Hilda Bermejo mbermejo@utec.edu.pe
Jaime Farfán jfarfan@utec.edu.pe
Diego Montalvo dmontalvo@utec.edu.pe
Estanislao Contreras econtreras@utec.edu.pe
Jorge Villavicencio jvillavicencio@utec.edu.pe
Ian Brossard ibrossard@utec.edu.pe
Jonathan Silva jsilva@utec.edu.pe
José Fiestas jfiestas@utec.edu.pe
Autores:
María Hilda Bermejo
Ruben Rivas
Índice:
• Unidad 3: Punteros
○ Definicion
○ Manejo de memoria dinámica
Programación Orientada a Objetos 1
3 Unidad 3: Punteros
Logro de la sesión:
Al finalizar la sesión, los alumnos podrán:
6
Un array es una estructura de datos, que permita almacenar elementos del mismo tipo, los que se
acceden por su posición.
Los arrays estáticos tiene un tamaño definido y su tamaño no puede variar en todo el programa.
Para definir un array estático, se tiene que saber su tamaño previamente.
Un array dinámico es más flexible y su tamaño se puede decidir cuando se ejecuta el programa.
7
Un array estático se define así:
int A[10]={9,45,3,7,10,25,14,15,100,120};
8
Definición:
int arr[10]; // es un array de 10 elementos.
int w;
float F[w]; //--- error: w es una variable.
11
Cuando se define un array, los elementos están de manera contigua en la memoria del
computador.
int A[5]={0,10,20,30,40};
A
Ox7fe1059025b0
Ox7fe1059025b1
A representa la dirección de memoria donde Ox7fe1059025b2
Ox7fe1059025b3
se encuentra el primer elemento del array. Ox7fe1059025b4
Ox7fe1059025b5
Ox7fe1059025b6
Ox7fe1059025b7
Ox7fe1059025b8
Ox7fe1059025b9
Ox7fe1059025ba
Ox7fe1059025bb
Ox7fe1059025bc
Ox7fe1059025bd
Ox7fe1059025be
Ox7fe1059025bf
Ox7fe1059025c0
Ox7fe1059025c1
Ox7fe1059025c2
Ox7fe1059025c3
10
Cuando se quiere imprimir los elementos de un array, no se puede realizar con una sola instrucción, se debe
recorrer uno a uno los elementos del array.
#include <iostream>
using namespace std;
Se imprime:
int main()
{ int A[7]={ 71,72,73,74,75,76,77};
A[0]=71
//--- se recorre el array y se imprimen los datos A[1]=72
for(int i=0; i<7; i++) A[2]=73
cout << "A[" << i << "]=" << A[i] << "\n"; A[3]=74
A[4]=75
//-- se imprimen las direcciones donde se encuentra cada elemento A[5]=76
cout << "\nInicio del array " << A << "\n"; A[6]=77
cout << "\nImprimimos las direcciones de cada casillero del Inicio del array 0x7fff52a26a00
Arreglo A \n";
for(int i=0; i<7; i++) Imprimimos las direcciones de cada
cout << "&A[" << i << "]= " << &A[i] << " Guarda el " << A[i] <<"\n"; casillero del Arreglo A
&A[0]= 0x7fff52a26a00 Guarda el 71
return 0; &A[1]= 0x7fff52a26a04 Guarda el 72
} &A[2]= 0x7fff52a26a08 Guarda el 73
&A[3]= 0x7fff52a26a0c Guarda el 74
&A[4]= 0x7fff52a26a10 Guarda el 75
&A[5]= 0x7fff52a26a14 Guarda el 76
&A[6]= 0x7fff52a26a18 Guarda el 77
11
Arreglos dinámicos
12
Array dinámicos:
int *pia = new int[10]; // bloque de 10 unidades de int
int *pia2 = new int[10] (); // bloque de 10 int inicializador con cero
¿
Para liberar el espacio de memoria:
delete [] pia3;
13
Se crea un array de 5 elementos p
en el heap: 0xb12345678abc 0x5fe1094025c0
int *p;
p = new int[5];
for(size_t i = 0; i < 5 ;i++)
p[i] = i*10;
//--- Si ya no se va a utilizar se libera la memoria
delete []p;
p=nullptr; //--- el puntero ahora apunta a nullptr
14
Ejemplo 1:
Realice un programa que permita leer como dato un número que
representa la cantidad de elementos que tendrá un array dinámico.
Luego realice lo siguiente:
El programa luego tendrá que indicar cuántas veces está el dato a buscar en el
array y además creará un segundo array con las posiciones en que el dato se
encuentra en el array.
Si el dato no está en el array, entonces se imprimirá solo el mensaje que indica que
el dato no se encuentra en el array.
Ejemplo 3:
Desarrollar un programa que permita generar
aleatoriamente un array de números enteros
del 1 al 30, el tamaño del array es un dato que
ingresará el usuario.
Deitel. P.J. and Deitel. H. M. (2016) C++ How to Program, Prentice Hall.
Stroustrup, Bjarne (2013). The C++ Programming Language, 4th Addison-Wesley.
Eckel, Bruce, 2000. Thinking in C++, Vol 1: Introduction to Standard C++, 2nd Edition, Prentice Hall
Gracias
Nos vemos en la siguiente clase!