Lección 16 · 16 de 20
Registros (record) · Pascal
Agrupe datos relacionados en un record de Pascal: los productos de una papelería con nombre, precio y existencias, y funciones que los usan.

Un `record` agrupa varios campos, de tipos distintos, en un tipo nuevo. Se declara en el bloque `type`: TProduct tiene Name, Price y Stock. Por costumbre, en Pascal los nombres de tipo empiezan por T.
A cada campo se llega con un punto: diary.Name := 'Diary'. MakeProduct es una función que devuelve un TProduct completo; dentro, Result.Name, Result.Price y Result.Stock rellenan sus campos.
Asignar un record copia todos sus campos: diary := book crea una copia independiente del cuaderno, y cambiarle el nombre no afecta a book, que sigue llamándose Notebook.
Un record se pasa a un procedimiento como cualquier otro valor. Show(const p: TProduct) lo recibe con const, sin copiarlo, y escribe sus campos en columnas con :10, :8:2 y :5. Con los campos también se calcula el valor de las existencias.
Código · main.pas
program main;type TProduct = record Name: String; Price: Double; Stock: Integer; end;function MakeProduct(const name: String; price: Double; stock: Integer): TProduct;begin Result.Name := name; Result.Price := price; Result.Stock := stock;end;procedure Show(const p: TProduct);begin WriteLn(p.Name:10, p.Price:8:2, p.Stock:5);end;var pen, book, diary: TProduct;begin pen := MakeProduct('Pen', 1.20, 50); book := MakeProduct('Notebook', 3.75, 12); // Assigning a record copies every field. diary := book; diary.Name := 'Diary'; Show(pen); Show(book); Show(diary); WriteLn('Stock value: ', pen.Price * pen.Stock + book.Price * book.Stock:0:2);end.Salida · fpc main.pas && ./main
Pen 1.20 50
Notebook 3.75 12
Diary 3.75 12
Stock value: 105.00Para recordar
record ... endagrupa campos en un tipo nuevo.- Los campos se leen y se cambian con un punto:
p.Price. - Asignar un record copia todos sus campos.
- Las funciones pueden recibir y devolver records.
Ejercicio
Añada a TProduct un campo Category: String, rellénelo en MakeProduct y escríbalo en Show; después cree una goma de borrar de 0,60 euros con 80 unidades.