Skip to content

Modelado del ejercicio de Alumnos que figura en el apunte de funcional en lenguaje estructurado

Notifications You must be signed in to change notification settings

uqbar-project/eg-alumnos-c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ejercicio de modelado de Alumnos

C/C++ CI

Resolución del ejercicio de alumno en ANSI C modelando con TADs y testeado con cSpec perteneciente al apunte de modelado del paradigma funcional.

requisitos

  1. Eclipse C/C++ / VsCode

  2. cSpec

    para su instalación correr

    git clone https://github.com/mumuki/cspec.git
    cd cspec
    make
    sudo make install

Enunciado

Modelar un alumno, que define

  • un nombre,
  • la fecha de nacimiento,
  • el legajo (sin dígito verificador),
  • las materias que cursa
  • y el criterio para estudiar ante un parcial:
    • algunos son estudiosos: estudian siempre,
    • otros son hijos del rigor: estudian si el parcial tiene más de n preguntas,
    • y también están los cabuleros, que estudian si la materia tiene una cantidad impar de letras.

Requerimientos

  • Modelar un parcial
  • Modelar el tipo que representa el criterio de estudio.
  • Modelar genéricamente un alumno.
  • Representar con la abstracción que crea más conveniente al criterio estudioso, hijo del rigor y cabulero.
  • Modelar a Nico, un alumno estudioso
  • Hacer que Nico pase de ser estudioso a hijo del rigor (buscar una abstracción lo suficientemente genérica)
  • Determinar si Nico va a estudiar para el parcial de Paradigmas

Modelado

Si bien se implementa un recorte del enunciado, creamos un TAD que representa la abstracción de Alumno. El modelo en cuestión define la siguiente estructura de datos y funciones que trabajan sobre los mismos:

typedef struct AlumnoType {
	char * nombre;
	char * apellido;
	char * direccion;
	int edad;
	int legajo;
	bool (*criterioEstudio)(Parcial*);
} Alumno;

char * nombreCompleto(Alumno * unAlumno);
void setCriterioDeEstudio(Alumno * unAlumno, bool (*criterioEstudio)(Parcial*));
bool esMayorDeEdad(Alumno * unAlumno);

Alumno * Alumno_new(char * nombre, char * apellido, char * direccion, int edad,
		int legajo, bool (*criterioEstudio)(Parcial *));

El criterio de estudio lo consideramos como una nueva abstracción que se modela en otro TAD, ya que si bien no tiene un estado (que modelamos con la estructura), tenemos comportamiento diferencial bien definido.

bool estudioso (Parcial *);
bool hijoDelRigor (Parcial *);
bool hijoDelRigorConMasDe (int, Parcial *);
bool cabulero (Parcial *);

Para verificar el funcionamiento de nuestro modelo se realizaron una serie de tests que pueden ejecutar.

Otro tip

En la implementación de Alumno_new se encuentra comentado el malloc que solicita el espacio de memoria, dado que fue reemplazado por la línea siguiente que ejecuta un macro de Ansi C

About

Modelado del ejercicio de Alumnos que figura en el apunte de funcional en lenguaje estructurado

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published