Programación con Assertions

Slides:



Advertisements
Presentaciones similares
Condicional if y switch
Advertisements

Estructuras de control
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones.
Programación Interactiva Fundamentos de Programación
Instrucciones y excepciones
Programación Básica con NQC Pedro F. Toledo – Patricio Castillo 18/08/2006.
Estructuras de decisión en C
Entendiendo la definición de clases
Introducción al lenguaje de especificación JML
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Tema 2: Lenguaje PHP básico
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
FUNCIONES EN C.
Informática II Prof. Dr. Gustavo Patiño MJ
Preguntas tipo test (Tema I)
SENTENCIA CONDICIONAL if
Ocurre con frecuencia, tanto en programación como en la vida real, que las decisiones que se nos pide tomar son más complicadas que una simple selección.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Modificadores.
1 Procedimientos Es un conjunto de sentencias incluidas entre las declaraciones Sub o Function y End Sub/Function VB utiliza varios tipos de procedimientos:
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
Tema 4: Sentencias de control
Ingeniero Anyelo Quintero
Estructuras de Decisión Múltiple
Semana 5 Subprogramas..
El lenguaje de programación Java
Switch en PHP Programación en Internet II. Switch en PHP Programación en Internet II Universidad de Guadalajara | Centro Universitario de la Costa Elegir.
INGENIERIA EN SISTEMAS COMPUTACIONALES
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Capítulo 1 “Elementos de Programación”
Conversión cadena a número
Tema 11: Excepciones Antonio J. Sierra.
Computación II Unidad IV Funciones y Módulos. Objetivos: –Comprender como construir programas en forma modular partiendo de pequeñas partes conocidas.
Programación Básica con NQC Patricio A. Castillo Pizarro 25/08/2007.
Computación II Unidad X Manejo de Excepciones. Presentación de la Unidad Objetivos: –Saber manejar situaciones inesperadas dentro de un programa –Comprender.
Informática Ingeniería en Electrónica y Automática Industrial
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CUATRO CONTROL DE FLUJOS, EXCEPCIONES Y ASERSIONES.
Resumen Fundamentos de Programación/ Programación I
Módulo 8: Manejo de Errores y Excepciones
EXPRESIONES Y SENTENCIAS
Excepciones Unidad 5.
Programación orientada a objetos Capítulo 12 Manejo de errores.
Programación Básica con NQC Patricio A. Castillo 10/05/2008.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Programación orientada a objetos
Tratamiento de excepciones

27 de marzo de 2010 Presentan: Díaz Orea Elizabeth Leal Alvarado Angelina.
Se pueden incluir comentarios en cualquier parte de un programa pero deben delimitarse con llaves o con paréntesis y asterisco:
Definición y cumplimiento de responsabilidades Giovanni Hernández P. Nivel 4.
INTERRUPCIONES – ABRAZO MORTAL
Estructuras de Decisión
Excepciones definidas por el usuario Semana 7. Aprendizajes esperados Construye procedimientos almacenados, triggers de base de datos, cursores y funciones.
Ada 2º Parte (variables, ámbitos, subrutinas, tipos abstractos de datos y excepciones)
EL TIPO DE DATO LOGICO y constantes.
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
Operadores de asignación
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 5.
Tema – 5 Construcciones condicionales Introducción En un programa es usual ejecutar unas instrucciones u otras en función de unas condiciones especificadas.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
1 Clase 6: control (1ª parte) iic1102 – introducción a la programación.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Programación con Assertions

Qué es un assertion? Es un enunciado colocado en un programa, que el programador tiene la seguridad de que en ese lugar el enunciado siempre es verdad. Se utiliza para ayudar en la verificación de la correctitud del programa. Como precondición Se coloca al comienzo de una sección de código Como Post condición  describe el estado esperado al final de la ejecución.

Funcionamiento Una vez definidos lo Assertions se comprueban en tiempo de ejecución o estáticamente a veces.  Una aserción se evalúa como false en tiempo de ejecución, se produce un error de aserción, que por lo general hace que la ejecución deba abortar.

Mas… El uso de las afirmaciones ayuda al programador en el diseño, desarrollo y a razonar acerca de un programa. Se utilizan solamente para comprobar los supuestos en tiempo de ejecución.

Diseño por contrato Las afirmaciones pueden funcionar como una forma de documentación: Pueden describir el estado del código que se espera encontrar antes de ejecutar (sus condiciones ), y el estado del código que se espera producir cuando termine de ejecutarse También puede especificar invariantes de una clase. 

Ventajas La ventaja de la utilización de las declaraciones de aserción en lugar de afirmaciones en los comentarios es que el programa puede comprobar las afirmaciones cada vez que se ejecuta, si la afirmación no se sostiene, un error se puede informar .  Esto evita que el código de conseguir fuera de sintonía con las afirmaciones (un problema que puede ocurrir con los comentarios).

Ejemplo int total = countNumberOfUsers(); if (total % 2 == 0) { // total es par } else { // total impar y no negativo assert(total % 2 == 1); }

Uso Para declarar un assertion en una clase Java, se usa la palabra clave assert que tiene la siguiente sintáxis: assert Expresion1; assert Expresión1:Expresión2;  Expresión1 tiene que ser una expresión booleana o se producirá un error de compilación. Cuando se evalúa un assertion que solo tenga Expresión1, se comprueba la veracidad de la expresión y si es verdadera se continúa la ejecución del programa, pero si es falsa, se lanza una excepción de tipo AssertionError.

Ejemplo: Si supiesemos que…. Alguna condición debía ser cierta en alguna parte del código (el invariante) lo colocaba como comentario: if (a==1){ ... } else if (a==2){ ... } else { //cuando a==3 ... } Aqui es donde se puede aplicar la nueva instrucción assert, (y en general para cualquier invariante): else { assert (a==3) ... }

De esta manera conseguimos proteger el else De esta manera conseguimos proteger el else. Si se entra por el else y el aserto no se cumple, se genera una excepción de tipo AssertionError. Otro candidato para los asertos es una sentencia switch que no tenga cláusula default. En este caso el aserto comprobará que nunca se entra por el default, de esta manera:

Assertion con switch switch (suerte) { case Moneda.CARA: ... return; case Moneda.CRUZ: ... return; case default: assert false; }

Conclusiones Los assertions son un buen método para comprobar valores de variables, expresiones y para comprobar estados del programa por donde no se tiene que pasar. Esto también se puede hacer con una serie de If's, pero no sería tan eficiente, y sobre todo no se podría desactivar cuando uno quiera. Como moraleja final, en el informe de fallo del Ariane 5 (explotó en el aire por una mala conversión de un float de 64 bits a un integer de 32) donde los asertos (comprobando la buena conversión) hubiesen evitado la catástrofe.