Pascal/Turbo Pascal - Gracias Cris, pero otra molestia

 
Vista:

Gracias Cris, pero otra molestia

Publicado por benjamin (10 intervenciones) el 19/02/2001 23:18:21
Por ahi lei que un apuntador era algo asi como para ahorrar memoria, osea, como un array que comienza con 1 espacio pero le puedes ir aumentando conforme necesitas si desperdiciar memoria, me podrias explicar esto y la función new()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Gracias Cris, pero otra molestia

Publicado por Diego Romero (282 intervenciones) el 20/02/2001 03:46:59
Lo que te han dicho técnicamente se llama implementar una lista dinamica y funciona asi: conforme se necesita espacio de memoria para almecenar datos esta se asigna mediante puntero.
Supongamos que tienes el siguiente problema, denes almacenar las edades de un grupo de personas pero no sabes cuántas personas son, ni siquiera al inicio del programa (ej.: personas que entran a un cine), podrias declarar un array de 100 elementos pero basta con que haya 101 personas para que el programa no funcione. Si necesitas que te emplie esta respuesta mandame un mail ([email protected])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias Cris, pero otra molestia

Publicado por Cris (29 intervenciones) el 20/02/2001 09:49:45
Los apuntadores no se usan para ahorrar espacio, simplemente cuando tienes que almacenar datos de los cuales no sabes cuantos son, los apuntadores te ahorran el uso de muchas variables, como en las listas (en este caso se les llama listas ligadas o enlazadas).
Supongamos que quieres hacer una lista de todos los alumnos que tomen determinado curso, junto con su codigo de alumno.
pero no sabes cuantos se inscribiran en dicho curso.
por lo tanto puedes hacer lo tipico, hacer un arreglo de registros:

type
alumno=record
nombre:string[15];
codigo:string[10];
end;

lista=array[0..30] of alumno

aqui tienes una lista con arreglos de 30 alumnos maximo no?
y que tal si solo se inscriben 3?, o si se inscriben 31?, en el primer caso desperdiciaras espacio en memoria, en el segundo caso tu programa tronara, pues no acepta mas de de 30 alumnos.
Los apuntadores entran aqui para hacer mas dinamico el asunto. Solo utilizaras los registros necesarios.
Te explico como se implementa:

type
alumno=record
nombre:string[15];
codigo:string[10];
siguiente:^alumno; {es el apuntador al siguiente registro}
end;

por lo tanto en este registro tendras tres campos, el nombre el codigo y un puntero a un registro, (recuerda que es la direccion de memoria de otro registro).

asi cuando se de de alta algun alumno se creara un nuevo registro.
Aqui es donde se usa el new(), donde le mandas un puntero a inicializar.
y dispose() se usa para liberar la memoria que se estaba usando.
para decir que un puntero no apunta a nada, le asignas nil, es una constante que sig
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

continuacion...

Publicado por Cris (29 intervenciones) el 20/02/2001 11:16:47
continuacion...
_nifica que apunta a ningun lado.
Bueno, como te dije anteriormente la teoria de apuntadores es bastante larga como para explicarla por aqui, te recomiendo que leas algun libro de estructuras de datos y si tienes una duda un poco mas concreta con gusto te la resolvere.
Espero haberte ayudado
Saludos
Cristina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar