[ Foro de Pascal ]

Enunciados de dos ejercicios

29-Jan-2013 15:56
Antonio Rodrigues
9 Respuestas

Bueno, dejando eso a un lado, necesito ayuda con el enunciado de 2 ejercicios. Aviso no necesito ayuda con el ejercicio, sino con el enunciado porque hay unas cosas en el enunciado que no entiendo.

1º Ejercicio. El enunciado es el siguiente:

"Escriba la definición de un tipo de usuario registro llamado TCOMPRADOR que almacene los datos de un comprador, que son los indicados en el enunciado anterior y ademas un campo (pagar) que indica si el comprado ha pagado ya (pagar=true) o aun no ha pagado (pagar=false) y aun sigue en la tienda."

Como podéis ver es algo muy fácil de hacer y yo no tengo ningún problema en hacer el ejercicio. Mi problema esta en el enunciado. Es que la primera parte ("Escriba la definición de un tipo de usuario registro llamado TCOMPRADOR") no entiendo bien lo que quiere decir. Se que el ejercicio me pide que haga un registro llamado TCOMPRADOR y que almacene unos datos en ese registro. Pero es solo eso o cuando dice "Escriba la definición de un tipo de usuario registro" se refiere a algo más ???

2º Ejercicio. El enunciado es el siguiente:

"Escriba la definición de un tipo tabla llamada TTIENDA. Esta tabla de registro almacenara los datos de los compradores que están en la tienda. La información de cada comprador es la indica en la cuestión 1 (es el ejercicio que he dejado antes), por lo que puede utilizar el tipo TCOMPRADOR para declarar la tabla."

Bueno en este 2º ejercicio es lo mismo que en el primer ejercicio. Mi problema esta en el enunciado. Me dice que tengo que hacer una tabla llamada TTIENDA que almacene los datos de los compradores del ejercicio anterior. Pero cuando dice esto "Escriba la definición de un tipo tabla" quiere que haga algo más o es solo la tabla ??


30-Jan-2013 00:06
Nacho Cabanes (+30)

En el primer ejercicio, se refieren a que no crees una variable que sea un record directamente, sino que uses la palabra "type" para crear (definir) un nuevo tipo de datos.

En el segundo... lo mismo... debes usar "type" para crear un tipo de datos nuevo. Mira el apartado 7.3 del curso, si eso te suena a desconocido:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=135


30-Jan-2013 02:32
Luis Torres (+12)

Sí, estamos acostumbrados a declarar variables de algún tipo, dicho tipo está predefinido por el lenguaje Pascal como los son los tipos integer, char, string, real, byte, boolean, etc. Pero Pascal permite que nostros mismos creemos nuestros propios tipos, para hacerlo utilizamos la palabra reservada type y lo escribimos antes de definir las variables con la palabra reservada var.

Por ejemplo, podemos definir un tipo al que llamaremos cadena40, que será un string y, más adelante declarar alguna variables del tipo cadena40:

 
program ejemplificacionDeDefinicionDeTipos;
 
type
 cadena40= string[40];
 
var
 apellidos: cadena40;
 nombres: cadena40;
 edad: byte;
 .
 .
 .
 
 



En el caso de los ejercicios que mencionas, los tipos que tendrás que definir serán registros, deberás colocar un nombre y los campos que contiene ese registro. Será algo más o menos así:

 
program definicionTiposRegistros;
 
type
 TDATOS= record
   nombre: string[40];
   apellido: string[40];
   edad: byte;
   direccion: string[100];
   pagar: boolean;
  end;
 
 TARREGLODATOS= array[1..10] of TDATOS;
 
var
 usuario: TDATOS;
 miTienda: TARREGLODATOS;
 .
 .
 .
 
 



Saludos.


30-Jan-2013 02:46
Antonio Rodrigues

AH xD. A eso se refiere. Yo es que no entendia a lo que se referia el enunciado, pero eso yo lo se hacer perfectamente. Es mas, siempre que utilizo registros, arreglos o ficheros, siempre los declaro dentro de "type".
Gracias por la ayuda Nacho y Luis. Ahora ya entiendo lo que pide el enunciado.

Bueno, otra cosa. Antes de terminar necesito ayuda con otra cosa.
Necesito saber para que sirve la instruccion filesiza y como y cuando se usa ?? Toda la informacion que me podeis dar sobre esta intruccion.


30-Jan-2013 18:43
Luis Torres (+12)

Cuando tenemos archivos que contienen registros (NO cuando sean archivos de texto), filesize(nombreArchivo) es muy útil, porque devuelve la cantidad de registros que hay en el archivo. De esta manera, se puede utilizar filesizs(nombreArchivo) y ciclos for para recorrer todos los registros del archivo.

Saludos.


30-Jan-2013 18:59
Antonio Rodrigues

Gracias Luis, pero no acabo de entenderlo del todo. Me podrias poner un ejemplo por favor ?


31-Jan-2013 03:37
Luis Torres (+12)

Supongamos que tenemos un archivo llamado cursoMat.dat con los datos de los alumnos referentes a su nombre y nota de la asignatura de Matematicas. Nombre y nota son los campos de los tantos registros almacenados en el archivo. El código para mostrar en pantalla todos los registros sería el siguiente:

 
program usoFilesize;
 
type
 TDatos = record
   nombre: string[20];
   nota: byte;
  end;
var
 alumno: TDatos;
 archivo: file of TDatos;
 i: integer;
 
Begin
 assign(archivo,'C:\cursoMat.dat');
 reset(archivo);
 writeln('LAS NOTAS DE TODOS LOS ALUMNOS DEL CURSO DE MATEMATICAS SON: ');
 for i:=1 to FileSize(archivo) do
  begin
    read(archivo,alumno);
    write(i,' Nombre: ',alumno.nombre: 22);
    writeln('Nota: ',alumno.nota: 5);  
  end;   
 readln;
End;
 




También podrías declarar una variable del tipo longint y utilizarla en el ciclo for, de la siguiente manera:

 
var
 total: longint;
 .
 .
 .
 total:= FileSize(archivo);
 for i:= 1 to total do
  begin
    .
    .
    .
  end;
 .
 .
 .
 



Esto es todo. Junto con esta función se usa mucho otra función llamada FilePos(nombreArchivo), la cual te devuelve la posición del puntero interno del fichero dentro del archivo. La posición se numera desde cero (0).

Saludos.


31-Jan-2013 10:09
Antonio Rodrigues

Vale ya empiezo a entendre eso mejor. Entonces filesize sirve solo para saber la cantidad de registro de un fichero binario, o tiene alguna otra funciona mas ??
Otra cosa, en tu respuesta anterior me has dado 2 formas de como utilizar filesize, pero me gustaria saber si hay alguna otra forma de utilizar esta instruccion ??
Por ultimo, esta intruccion (filesize) se utiliza cuando queremos saber la cantidad de registros que hay en un fichero binario, y tambien se utiliza cuando queremos trabajar con todos los registros del fichero, usando la intruccion en el ciclo for. Pero solo se utiliza en estas circunstancias o se puede utilizar en alguna otra ??


31-Jan-2013 15:07
Luis Torres (+12)

En programación hay muchas formas de hacer una misma tarea.

Saludos.


31-Jan-2013 18:09
Antonio Rodrigues

Ok Luis.Muchas gracias por la ayuda.






(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.)