viernes, 9 de marzo de 2018

Este ejercicio está mal, y lo sé porque te lo corrijo con un ejercicio mal

Recordaréis la entrada que publiqué sobre la historia de cómo se pilló a un profesor que se estaba copiando de un ejercicio de un alumno sin decir que era de un alumno. El problema más que nada reside ahí, en que no dijo que se estaba copiando, si lo llega a decir, no hubiese pasado nada. Así que estoy dispuesto a hacer llegar esto hasta donde haga falta, y para esto, hoyvoy a demostrar que además se estaba copiando de un ejercicio que estaba mal.


El ejercicio en cuestión consistía en hacer un incremento. Pues bien, este profesor se estaba copiando de un ejercicio, que además, estaba mal, no hacía lo que pedía.


Aquí os dejo parte del ejercicio, pero lo más interesante es un detalle que, a lo mejor, no sé si llegáis a apreciar en la foto {por cierto, te pedía obtener el cod_cuenta y cod_cliente sin usar cod_cliente...en fin}.


Uno de los grandes problemas de ese ejercicio, son esas líneas que muestro. Lo que enseño es una variable que recoge el valor obtenido de una función que recibe 2 parámetros y cómo se hace el UPDATE con el SET y los datos de esa variable ¿El problema? Que si se tenía que tratar de un incremento, eso, no incrementaba.

Es decir, si tú a esa función le metes los datos 9 y 20, te resultará un 10.8 que redondea a 11, por lo cual el campo saldo será igual a 11. Esto en caso de que inicialmente el saldo valga 0, vale, pero sino, no se estaría haciendo un incremento, lo que se estaría haciendo sería sustituir el valor anterior por el nuevo.

La solución a esa parte es tan sencilla como

SET valor_anterior=(SELECT saldo FROM ebanca.cuentas WHERE cod_cliente=vcli and cod_cuenta=vcuenta);
SET vvalor=valor_anterior+(ebanca.incrementar_saldo(vsaldo,porcent));
UPDATE ebanca.cuentas SET sueldo=vvalor WHERE cod_cuenta=vcuenta and cod_cliente=vcli; 

Tan sencillo como sumarle el valor anterior. Ya está, si antes valía 0, entinces hará 0+11=11. Si antes valía 11, ahora 11+11=22. Como ahora vale 22, en la siguiente pasada sería 22+11=33 y así sucesivamente en caso de usar siempre los mismos datos.
De lo contrario, si se usase el código que, en teoría es de mi profesor, lo que haría sería constantemente poner un 11, pero sin incrementar ni nada. Pues eso, lo dio por bueno aunque no es lo creáis.

¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...