[ Foro de Pascal ]

Record o Arrays en Pascal

22-Jun-2014 20:14
carlos Idrobo
7 Respuestas

Hola, de antemano gracias por el material disponible en la pagina, (Cupas) el cual he comenzado a leer hace unos días para aprender sobre la programación en Pascal. Mi consulta es la siguiente, estoy haciendo un trabajo para manejar una lista ordenada de datos como, cédulas, nombres, apellidos, sexo..entre otros, pero como son diferentes tipos de datos he leído que se puede hacer con un Record, sin embargo el profesor me dijo que lo podía hacer con arreglos. Soy completamente nuevo en esta área, y pues estudio a distancia y este método de estudio es para aprender solo...¿Que método me recomiendas que es mas sencillo y completo para hacerla? Cabe resaltar que una vez se incluye la información al sistema, debe tener la opción de modificarla y/o eliminarla... Saludos


22-Jun-2014 20:49
Luis Torres (+18)

Los arreglos son estructuras de datos en los que se pueden almacenar provisionalmente valores enteros, reales, char, cadena; pero también puedes almacenar valores que sean registros!!!! Así que lo más adecuado para su programa sería definir un tipo registro cuyos campos sean cédula, nombre, apellido, sexo,... entre otros, y luego definir un arreglo de ese tipo registro, el arreglo deberá tener la capacidad para almacenar los datos de todas las personas se que van a guardar provisionalmente allí. Podría ser algo como esto:


.
.
. 
type 
   tPersona= record
           cedula: string[10];
           nombre: string[15];
           apellido: string[15];
           sexo: char;
           .
           .
           .
    end;

var
    vector: array[1..100] of tPersona;   (* Aquí declaramos el arreglo  del tipo de registro *)
.
.
.



Para el resto del ejercicio deberás crear un menú con las opciones de:
    MENU PRINCIPAL
      1.- Insertar
      2.- Modificar
      3.- Eliminar
La opción de Insertar es muy importante porque con ella llenarás el arreglo.
Saludos.


22-Jun-2014 21:34
carlos Idrobo

Muchas gracias por responder, pero me perdí cuando dices " definir un arreglo de ese tipo registro", es decir, que el arreglo guarda el registro?, y de verdad disculpa si te parece muy tonta la pregunta, es que tengo muchas dudas porque desconozco el tema.  


22-Jun-2014 22:16
Luis Torres (+18)

Sí, aunque parezca increíble, el arreglo va a guardar un registro tPersona para cada índice del arreglo, de la misma forma en que guardan dato enteros, reales o char.


22-Jun-2014 22:33
carlos Idrobo

Muchísimas gracias amigo, de verdad me has ayudado mucho. Una ultima pregunta, me imagino que has visto que mi nivel de conocimiento sobre esto es inferior a nulo, podrías recomendarme alguna bibliografía adicional al CUPAS para instruirme al respecto? gracias again... Saludos


22-Jun-2014 23:03
Luis Torres (+18)

Lo que te recomiendo es que leas la teoría y hagas muchos ejercicios. Trata de hacerlos por tu propia cuenta, cuando te trabes por mucho tiempo pregunta a alguien que sepa más que tú. Un libro que te enseña las cosas muy bien es "Programación en Turbo Pascal. Versiones 5.5, 6.0 y 7.0" de Luis Joyanes Aguilar. Hay otros del mismo autor, pero te sirven como documentación y no para aprender desde cero. De todas maneras en internet encuentras todo.
En cuanto al ejercicio anterior, te paso un código que elaboré hace poco, para que veas que sí funciona lo de los arreglos de registros. Te lo dejo a continuación:


program ArreglosDeRegistros;
uses Crt;
type
  tPersona= record
      cedula: string[10];
	  nombre: string[20];
	end;
var
  vector: array[1..10] of tPersona;
  i: integer;
BEGIN
  ClrScr;
  writeln('INTRODUCCION DE LOS DATOS DE LAS PERSONAS: ');
  writeln;
  for i:=1 to 3 do
   Begin
     write('Escriba la cedula de la persona ',i,': ');
	 readln(vector[i].cedula);
	 write('Escriba el nombre de la persona ',i,': ');
	 readln(vector[i].nombre);
	 writeln
   End;
  (* Mostramos los resultados *)
  ClrScr;
  writeln('CONTENIDO DEL VECTOR: ');
  writeln;
  for i:=1 to 3 do
   Begin
     write('La cedula de la persona ',i,' es: ',vector[i].cedula);
	 writeln(' y su nombre es: ',vector[i].nombre);
   End;  
  readln;
END.  



Ejecútalo, está hecho para que se introduzcan la cédula y nombre de 3 personas (con un ciclo for), luego te muestra el contenido del arreglo. El registro está reducido en cuanto a campos (solo dos campos: cedula y nombre) porque lo hice para ejemplificar, para que tengas el resto de los campos solo tienes que definirlos dentro del tipo de registro tPersona. El arreglo lo hice para que tuviera una capacidad máxima de 10 personas, pero lo puedes modificar a tus necesidades.
Saludos.


23-Jun-2014 00:02
carlos Idrobo

Gracias, estaré investigando al respecto, si me veo muy complicado, intentare preguntar por aquí de nuevo... Saludos


23-Jun-2014 00:50
Nacho Cabanes (+84)

En la versión actualizada de Cupas tienes también más detalles sobre "arrays de registros", así como ejercicios propuestos:

http://www.nachocabanes.com/pascal/cupas5/cupas04c.php






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)