C++ y las INVARIANTES

Hola, estoy estudiando primero de carrera en la Universidad de Gijon.

No se les ha ocurrido mejor cosa para la asignatura de Programacion que empezar a impartir INVARIANTES.

¿Alguien me puede explicar mejor que esta gente como se hacen, para que sirven y darme unos pocos conceptos de su utilizacion y aplicacion?

PD: Utilizamos lenguage C++
Invariantes?

EDIT: Nada, creia que hablabas de las constantes.

Salu2.

PD: Esto va a software no?
Que recuerdos de cuando estab en primero xD. No creo que te puede ayudar mucho, ya que nunca llegue a entenderlos muy bien. En principio sirven para ver si al final de un bucle se cumple la condicion de parada y no hay un bucle infinito (o al menos es lo unico que recuerdo ahora), y basicamente consiste en definir un invariante y comprobar que este se cumple al final del bucle.

A ver si alguien te pude ayudar mejor que yo, porque la verdad no recuerdo nada de ello.

P.D. La universidad es de Oviedo, lo unico que tu estas en el campus de Gijón xD.

Un saludo
mmmmnnn pues yo no me acuerdo mu bien, pero vamos, que no creo que sean muy importantes, ya que yo no las he usado, ni creo que las vaya usa (asin me va....jeje), si preguntas de algo que me acuerde pues ya te cuento [beer]
Yo me estudié los básicos de recorrido de bucles para ponerlos en los ejercicios y la saqué en junio, programando, sin hacer el ejercicio del invariante, lo que pasa que me parece que ahora el ejercicio son 4 puntos (antes eran 2 o 2 y medio) y es una cantidad considerable. Obviamente aprobé por programar, no porque me pongan una sucesión y tenga que sacar su invariante (que fue lo que mandaban en ese examen)

Yo tampoco los intenté ni entender, me parece un método que si no tienes un buen nivel matemático algebraico provoca más quebraderos de cabeza que soluciones.

PD por lo que recuerdo, el invariante se ha de cumplir antes, durante y al finalizar el bucle, no solo al final.
PPD: Quédate un poco con ellos y con lo de la condición de parada y precondiciones, que eso lo verás un poco (poco) más en algunas asignaturas de la carrera.
PPPD: en español es lenguaje, que te confundes con la palabra escrita en inglés xD (me pasaba a mi tb :P)
un invariante es algo asi como la precondicion de un bucle, y ademas indica a grandes rasgos que es lo que sucede en ese diseño.
Por ejemplo en un vector la invariante seria 1Es una chorrada que no sirve para nada, es escribir lo k piensas, pero lo tienes que escribir de una forma especifica y rallarte la cabeza, ya que con los vectores es muy sencillo pero luego las cosas se complicant y no sabes k invariante poner. Mucha gente hace el programa y luego busca la invariante del bucle que ha hecho xDD

En la vida real no lo usaras.
Si, pero aqui en Gijon le dan muchisima importancia a la tonteria de las invariantes.

Todo sea por eliminar gente, y yo, la verdad, como que no acabo de entender ni para que existen.
Aqui tienes apuntes de pseudocodigo con invariantes y demas, los ejemplos de invariantes son aplicables a cpp sin problema.
son los que he usado yo este cuatrimestre y aprobe sin problemas ;)


http://www.ctr.unican.es/asignaturas/programacion1/#Apuntes
Diskover escribió:Si, pero aqui en Gijon le dan muchisima importancia a la tonteria de las invariantes.

Todo sea por eliminar gente, y yo, la verdad, como que no acabo de entender ni para que existen.


Yo nunca llegué a comprenderlas, y creo que son una perdida total de tiempo. Salvo que quieras hacer algo sumamente crítico que necesites verificar la corrección de forma teorica, no las vas a volver a ver en la vida (bueno, quizás en septiembre :)
Bueno, ¿entonces alguien me puede ayudar con esto?
Ya te las han explicado más o menos. Se trata de una condición que se cumple antes y después de la ejecución.

No solo se aplican a bucles, se podría aplicar a por ejemplo una lista ordenada. Antes y después de insertar elementos la lista debe estar ordenada siempre.

De la EUITIO (la de Oviedo) tienes por aquí material: http://petra.euitio.uniovi.es/asignaturas/teo.pro/index.html
11 respuestas