Learning machine #18 - Programando en Pascal - Estructuras de datos (Record).

Hola de nuevo a todos, el día de hoy vamos a continuar con mas del aprendizaje del lenguaje de programación en pascal.

"En el capítulo anterior de <<Learning machine>>" vimos cómo es que se usan los arreglos de una o varias dimensiones. Hoy vamos a ver cómo es que se usan las estructuras de datos o "Record" (registro en español). Un registro  básicamente es un conjunto de variables bajo un mismo nombre o tipo.

Para crear un registro, hay que crear un tipo usando la palabra "Type" seguido del nombre o identificador que le daremos al registro, hasta aquí todo es igual a cuando creamos los tipos, ahora la diferencia viene en que hay que asignarlo al tipo "Record", es decir tendríamos algo cómo: "Type NombreDelRegistro = Record" una vez creado, dentro de este nuevo tipo, agregaremos "campos"; cada campo sera una variable de cualquiera de los tipos soportados por Pascal. Una vez agregados todos los campos, finalizaremos la declaracion, con la palabra reservada "end;". Para apreciar un poco mejor cómo es todo el proceso, tomemos el siguiente ejemplo:

Type MiCancion = Record
	Cancion,Artista,Album : string;
	Year : Integer;
	BeatPerMinute : single
end;

Con esto habremos creado un nuevo registro llamado "MiCancion"; este contendrá los campos: "Cancion, Artista, Album, Year y BeatPerMinute" del tipo "string, string, string, integer y single" respectivamente. Para poder usar el registro, crearemos variables del tipo que acabamos de crear.

Si queremos acceder a los campos, bastará con escribir el nombre de la variable seguido de "." y despues el nombre del campo. Para visualizar mejor cómo es que se hace, observemos el siguiente código:

        KillerQueen.Cancion := 'Killer Queen.flac';
	KillerQueen.Artista := 'Queen';
	KillerQueen.Album := 'Sheer Heart Attack';
	KillerQueen.Year := 1974;
	KillerQueen.BeatPerMinute := 117.27;

	writeln(KillerQueen.Cancion);
	writeln(KillerQueen.Artista);
	writeln(KillerQueen.Album);
	writeln(KillerQueen.Year);
	writeln(KillerQueen.BeatPerMinute);

Una forma de agilizar el acceso al registro, es hacer uso de la palabra reservada "with", para ello, escribiremos "with" seguido del nombre del registro al cual queremos acceder seguido de de la palabra reservada "do", luego "begin", para poder acceder a los miembros solo bastará con escribir el nombre de cada campo; y cómo cada sección, la finalizaremos con su respectivo "end;". Ahora revisemos el siguiente código que ejemplifica lo anterior.

with Epitaph do
	begin
		Cancion := 'Epitaph.flac';	
		Artista := 'King Crimson';
		Album := 'In the court of the crimson king';
		Year := 1969;
		BeatPerMinute := 100.37;
	end;

Los registros son utiles a la hora de trabajar con estructuras de datos ya que una vez que se crean y se asignan los valores correspondientes, todo el conjunto pasara a ser parte de la misma variable y si por ejemplo asignamos "KillerQueen := Epitaph" tendremos una copia exacta del primero.

Solo por si se ofrece, dejo el código de un programa completo que hace uso de los registros.

program Registros(output);

uses crt, sysutils;

Type MiCancion = Record
	Cancion,Artista,Album : string;
	Year : Integer;
	BeatPerMinute : single
end;

var

KillerQueen, Epitaph : MiCancion;

begin
	KillerQueen.Cancion := 'Killer Queen.flac';
	KillerQueen.Artista := 'Queen';
	KillerQueen.Album := 'Sheer Heart Attack';
	KillerQueen.Year := 1974;
	KillerQueen.BeatPerMinute := 117.27;

	writeln(KillerQueen.Cancion);
	writeln(KillerQueen.Artista);
	writeln(KillerQueen.Album);
	writeln(KillerQueen.Year);
	writeln(KillerQueen.BeatPerMinute);

	with Epitaph do
	begin
		Cancion := 'Epitaph.flac';	
		Artista := 'King Crimson';
		Album := 'In the court of the crimson king';
		Year := 1969;
		BeatPerMinute := 100.37;
	end;
    
	writeln(Epitaph.Cancion);
	writeln(Epitaph.Artista);
	writeln(Epitaph.Album);
	writeln(Epitaph.Year);
	writeln(Epitaph.BeatPerMinute);
	
	readln();

end.

Y bien, por ahora es todo. El código lo puedes copiar para probarlo. Antes de terminar, hay que aclarar algo, si bien en español, se puede leer "Record" cómo registro, no hay que confundirlo con "Register" que es una cosa completamente diferente (que eventualmente veremos).

Los leo luego.

No hay comentarios.