09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

13.1. Descripción del tipo de datos registro 275<br />

with vbleRegistro do Instrucci—n<br />

,<br />

Figura 13.2.<br />

Al igual que todos los tipos de datos compuestos, un registro no puede<br />

ser el resultado de una función. Para solucionar este problema actuaremos<br />

como de costumbre, transformando la función <strong>en</strong> un procedimi<strong>en</strong>to con un<br />

parámetro por variable adicional de tipo registro que albergue el resultado<br />

de la función. Así, por ejemplo:<br />

procedure LeerFicha(var unAlumno: tFicha);<br />

{Efecto: lee del input el cont<strong>en</strong>ido del registro unAlumno}<br />

begin<br />

Write(’Nombre del alumno:’);<br />

LeerNombre(unAlumno.nombre);<br />

Write(’Día de nacimi<strong>en</strong>to: ’);<br />

ReadLn(unAlumno.fechaNac.dia);<br />

Write(’Mes de nacimi<strong>en</strong>to: ’);<br />

LeerMes(unAlumno.fechaNac.mes);<br />

Write(’A~no de nacimi<strong>en</strong>to: ’);<br />

ReadLn(unAlumno.fechaNac.anno);<br />

Write(’Calificación: ’);<br />

LeerNota(unAlumno.nota)<br />

<strong>en</strong>d; {LeerFicha}<br />

• Como puede observarse, es incómodo estar constantem<strong>en</strong>te repiti<strong>en</strong>do el<br />

id<strong>en</strong>tificador unAlumno. Para evitar esta repetición <strong>Pascal</strong> dispone de la<br />

instrucción with que se emplea sigui<strong>en</strong>do la estructura descrita <strong>en</strong> el diagrama<br />

sintáctico de la figura 13.2.<br />

Por ejemplo, para el procedimi<strong>en</strong>to LeerFicha se podrían utilizar dos<br />

instrucciones with anidadas de la sigui<strong>en</strong>te forma:<br />

procedure LeerFicha(var unAlumno: tFicha);<br />

{Efecto: lee del input el cont<strong>en</strong>ido del registro unAlumno}<br />

begin<br />

with unAlumno do begin<br />

WriteLn(’Introduce el nombre del alumno:’);<br />

LeerNombre(nombre);<br />

with fechaNac do begin

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!