Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pre-condición de las primitivas (TDA) #9

Open
dato opened this issue Oct 28, 2020 · 0 comments
Open

Pre-condición de las primitivas (TDA) #9

dato opened this issue Oct 28, 2020 · 0 comments

Comments

@dato
Copy link
Owner

dato commented Oct 28, 2020

A menos que se especifique lo contrario, todas las primitivas de nuestras estructuras de datos (pila, lista, hash...) tienen como precondición que se les pasa como primer argumento un puntero válido a la estructura.

Esto es: para cada primitiva <tda>_<nombre_primitiva>(arg, ...), se da por hecho que arg es un puntero obtenido con <tda>_crear().

Esto incluye que el argumento sea un puntero no nulo; por tanto, en esta implementación:

bool pila_esta_vacia(pila_t *pila) {
    if (pila == NULL || pila->cantidad == 0)  // XXX
      //...
}

la comprobación de NULL, sobra.

Además de ser pre-condición, este comportamiento tiene la virtud (que se hará visible, por ejemplo, durante el TP1) de se hace más fácil detectar errores: si se pasa NULL por error, un segmentation fault es más visible que un false que no se entiende de dónde viene.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant