Introducción a la computación. Charlie

Documentos relacionados
Algoritmos para determinar Caminos Mínimos en Grafos

Teoremas de Convergencia

Autómatas Mínimos. Encontrar el autómata mínimo. Universidad de Cantabria. Introducción Minimización de Autómatas Deterministas Resultados Algoritmo

Taller de Resolución de Problemas Computacionales

Diseño por Contratos y Aserciones

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Diseño Estructurado de Algoritmos

Ampliación Matemática Discreta. Justo Peralta López

ESTRUCTURAS REPETITIVAS EN PHP

!"#! "$%"&'(&) *('(+, -)"%!.(-

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

SOBRE LOGICA MATEMATICA. Sandra M. Perilla-Monroy. Departamento de Ciencias Básicas, Universidad Santo Tomás, Bogotá, Colombia.

Es importante recordar el concepto de intervalo abierto notado. (a, b)={x R/a x bt} donde a y b no pertenecen al intervalo abierto

PROGRAMACIÓN LINEAL ENTERA

Resumen sobre mecánica analítica

ALGORITMOS GENÉTICOS

Índice Proposiciones y Conectores Lógicos Tablas de Verdad Lógica de Predicados Inducción

Estructuras de Repetición (Hacer-Mientras)

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Matemá'cas generales

MATERIAL RECOPILADO POR E.A.D. PRÁCTICAS PROFESIONALES (2014)

Curso Propedéutico de Cálculo Sesión 2: Límites y Continuidad

NÚMEROS COMPLEJOS: C

Algoritmos glotones. mat-151

Inducción Matemática Conjuntos Funciones. Matemática Discreta. Agustín G. Bonifacio UNSL. Repaso de Inducción, Conjuntos y Funciones

EJERCICIOS ADICIONALES.

Diagnóstico de fallas en circuitos digitales

Diagramas de secuencia

CONCAVIDAD. Supongamos que tenemos la siguiente información, referente a una curva derivable: Cómo la graficaríamos?

Inteligencia en Redes de Comunicaciones. Razonamiento lógico. Julio Villena Román.

Modelos de dinámica de poblaciones aisladas Ecología (1861 y 1812) Grado de Biología y de Ciencias Ambientales. UMU

Tema 6: Teoría Semántica

Estructuras Repetitivas

Notación Asintótica 2

Tema 6: Ecuaciones diferenciales lineales.

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

Expliquemos con exactitud qué queremos decir con valores máximos y mínimos.

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE CIENCIAS NATURALES Y MATEMÁTICAS DEPARTAMENTO DE MATEMÁTICAS CURSO DE NIVELACIÓN S

f: D IR IR x f(x) v. indep. v. dependiente, imagen de x mediante f, y = f(x). A x se le llama antiimagen de y por f, y se denota por x = f -1 (y).

Ecuaciones Diofánticas

Operadores de comparación

Proceso Selectivo para la XXII IMC, Bulgaria

Guía práctica de estudio 03: Algoritmos

TEMA 6: DIVISIÓN DE POLINOMIOS RAÍCES MATEMÁTICAS 3º ESO

PHP: Lenguaje de programación

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Producto de matrices triangulares superiores

Guía práctica de estudio 03: Algoritmos

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

Demostraciones a Teoremas de Límites

Especificación y uso de módulos en C++(II)

Conjuntos, relaciones y funciones Susana Puddu

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

PREPARACION OLIMPIADA MATEMATICA CURSO

Productos notables. Se les llama productos notables (también productos especiales) precisamente porque son muy utilizados en los ejercicios.

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS. Fracciones continuas, ecuación de Pell y unidades en el anillo de enteros de los cuerpos cuadráticos

Profesorado de Nivel Medio y Superior en Biología Matemática - 1º Cuatrimestre Año 2013 FUNCIÓN CUADRÁTICA

PREGUNTAS TIPO EXAMEN- ESTADÍSTICA DESCRIPTIVA 2

POST-OPTIMIZACIÓN Y SENSIBILIDAD EN PROBLEMAS LINEALES.

Por ser f continua y R compacto, existen x 0, y 0 en R tales que f(x 0 ) = sup{f(t) : t R} y f(y 0 ) = inf{f(t) : t R}

MATERIALES DIDÁCTICOS

Continuidad y monotonía

LEER Y ESCRIBIR ARCHIVOS DE TEXTO CON PHP. FUNCIONES FOPEN (MODOS), FGETS, FPUTS, FCLOSE Y FEOF. EJEMPLOS (CU00836B)

Enunciados de los problemas (1)

ESTRUCTURAS REPETITIVAS

AMPLIACIÓN DE MATEMÁTICAS

Reemplazos Algebraicos. Gabriel Darío Uribe Guerra Universidad de Antioquia. XIII COLOQUIO REGIONAL DE MATEMÁTICAS y III SIMPOSIO DE ESTADÍSTICA.

T I T U L O I N O R M A S G E N E R A L E S 1/21

3. Estructuras iterativas

Sucesiones Introducción

CI 2125, Computación I

Estructuras de Control

1. Cinemática: Elementos del movimiento

PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS

Colegio San Patricio A Incorporado a la Enseñanza Oficial Fundación Educativa San Patricio

Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función.

b) Sea una relación de equivalencia en A y una operación en A. Decimos que y son compatibles si a b a c b c y c a c b para todo a, b, c A

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Clase 4 Funciones polinomiales y racionales

PROGRAMACION CONCURRENTE Y DISTRIBUIDA

Aritmética entera. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Aritmética entera 1 / 15

FUNCIONES REALES 1º DE BACHILLERATO CURSO

Un ejemplo de casos de uso. Sokoban

Ecuaciones no Algebraicas

CONTINUIDAD DE FUNCIONES. SECCIONES A. Definición de función continua. B. Propiedades de las funciones continuas. C. Ejercicios propuestos.

PASO 1: Poner el problema en forma estandar.

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

Parte II CALCULO DIFERENCIAL.

= 310 (1 + 5) : 2 2 = = = 12 ( 3) ( 5) = = 2 = ( 4) + ( 20) + 3 = = 21

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

2. SEÑALES Y SISTEMAS DISCRETOS EN EL TIEMPO. Una señal puede ser definida como una portadora física de información. Por ejemplo,

Crédito efectivo con garantía líquida

La Lección de hoy es sobre Ángulos formados por las Cuerdas, Secantes, y Tangentes.

=, una sucesión de intervalos cerrados. f x una función continua en el punto x = x0. = 0, el teorema queda demostrado. Si ( )

Los números, operaciones y sus propiedades

Problema Cinemático Directo

Guía práctica de estudio 05: Diagramas de flujo

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

Transcripción:

Introducción a la computación Charlie

Estado Se denomina estado en un modelo de cómputo a un punto en la ejecución de un programa en dicho modelo. En el modelo de Von Neumann esto responde al valor de las variables, constantes y la instrucción del programa que corresponde a dicho punto de la ejecución.

Especificación de algoritmos Especificar un algoritmo es describir qué es lo que hace a partir de detallar cuál es el estado posterior a su ejecución en función del estado anterior a la misma. pre = {precondición} P post = {postcondición}

Instrucción (Otra oportunidad) Una instrucción es una operación que produce una transformación del estado en que se encuentra la ejecución del programa (recordar que la instrucción en la que se encuentra la ejecución es parte del estado y por lo tanto la alteración del flujo de control es una transformación del estado tanto como la modificación del contenido de una posición de memoria).

Corrección Repetición: while ([expr1][comp][expr2]) { [prog] } Supongamos que tenemos la siguiente situación, S1={...} while (cond){[prog]} S2={...} y queremos saber si el ciclo es correcto respecto de los estados S1 y S2. Luego, debemos ver que:

Corrección Repetición: while ([expr1][comp][expr2]) { [prog] } Supongamos que tenemos la siguiente situación, S1={...} while (cond){[prog]} S2={...} y queremos saber si el ciclo es correcto respecto de los estados S1 y S2. Luego, debemos ver que: Pero primero...

Invariante Un invariante de un programa/algoritmo es un predicado cuyo valor de verdad no se ve afectado a lo largo de la ejecución de dicho programa/algoritmo.

Invariante Un invariante de un programa/algoritmo es un predicado cuyo valor de verdad no se ve afectado a lo largo de la ejecución de dicho programa/algoritmo. x=22; x=2*x; y=x/22; x>=22 && y < 3 x=x+1;

Invariante Un invariante de un programa/algoritmo es un predicado cuyo valor de verdad no se ve afectado a lo largo de la ejecución de dicho programa/algoritmo.

Invariante Un invariante de un programa/algoritmo es un predicado cuyo valor de verdad no se ve afectado a lo largo de la ejecución de dicho programa/algoritmo. x=1; y=0; while (x<11){ y=y+x; x<=11 && y == Sum (i, 1<=i<x) x++; }

Invariante Un invariante de un programa/algoritmo es un predicado cuyo valor de verdad no se ve afectado a lo largo de la ejecución de dicho programa/algoritmo.

Invariante Un invariante de un programa/algoritmo es un predicado cuyo valor de verdad no se ve afectado a lo largo de la ejecución de dicho programa/algoritmo. Un invariante va a ser la herramienta a partir de la cual transferiremos información desde el estado de comienzo de un ciclo hacia el estado de finalización.

Función variante y cota A los efectos prácticos sólo nos interesará la corrección de algoritmos con lo que para que un ciclo sea correcto debe terminar. Cómo garantizamos que un ciclo termina?

Función variante y cota A los efectos prácticos sólo nos interesará la corrección de algoritmos con lo que para que un ciclo sea correcto debe terminar. Cómo garantizamos que un ciclo termina? Demostrando que la condición del ciclo se hace falsa en algún momento.

Función variante y cota Formalmente esto implica encontrar una función monótona decreciente para la que existe una cota que una vez alcanzada la condición del ciclo deja de valer...

Función variante y cota Formalmente esto implica encontrar una función monótona decreciente para la que existe una cota que una vez alcanzada la condición del ciclo deja de valer... Dicho de otra forma:

Función variante y cota Formalmente esto implica encontrar una función monótona decreciente para la que existe una cota que una vez alcanzada la condición del ciclo deja de valer... x=1; y=0; while (x<11){ y=y+x; x++; } f(x) = 11-x, cota: 0

Función variante y cota Formalmente esto implica encontrar una función monótona decreciente para la que existe una cota que una vez alcanzada la condición del ciclo deja de valer... x=1; y=0; while (x<11){ y=y+x; x++; } f(x) = 11-x, cota: 0 Ahora sí!

Función variante y cota Al final del día: lo que vamos a hacer es argumentar que existe un estado alcanzable en la ejecución de nuestro programa para el cual la condición del ciclo deja de ser verdadera y consecuentemente, el ciclo termina.

Corrección Repetición: while ([expr1][comp][expr2]) { [prog] } S1={...} while (cond){[prog]} S2={...} 1.- 2.- 3.- 4.- Si vale S1, entonces vale Inv Inv && cond [prog] Inv Si vale Inv &&!cond, entonces vale S2 Existe una cota para la validez de cond

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } S1={x==1 && y==0} while (x < 11) {y = y + x;x=x+1;} S2={x==11 && y==55} Y el invariante?

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } S1={x==1 && y==0} while (x < 11) {y = y + x;x=x+1;} S2={x==11 && y==55} Y el invariante? Ya lo vimos pero tratemos de deducir qué necesitamos para llegar a S2 desde S1.

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } S1={x==1 && y==0} while (x < 11) {y = y + x;x=x+1;} S2={x==11 && y==55} Y el invariante? Ya lo vimos pero tratemos de deducir qué necesitamos para llegar a S2 desde S1. Sabemos que siempre que el ciclo ejecute x<=11 (1) y es la suma entre 1 y x

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } 1.- Si vale S1, entonces vale Inv S1={x==1 && y==0}, Inv: x<=11 && y es la suma entre 1 y x (no inclusive)

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } 1.- Si vale S1, entonces vale Inv S1={x==1 && y==0}, Inv: x<=11 && y es la suma entre 1 y x (no inclusive) Es trivial ver que x==1 implica x<=11. Luego, si x==1, entonces la suma de los números entre 1 y 1 (no inclusive) da como resultado 0, y considerando que S1 afirma y==0, implicamos trivialmente que y==0.

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } 2.- Inv && cond [prog] Inv Inv: x<=11 && y es la suma entre 1 y x (no inclusive), cond: x<11 Esto lo saben hacer, asi que les queda como tarea ;-)

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } 3.- Si vale Inv &&!cond, entonces vale S2 Inv: x<=11 && y es la suma entre 1 y x (no inclusive),!cond: x>=11 S2={x==11 && y==55}

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } 3.- Si vale Inv &&!cond, entonces vale S2 Inv: x<=11 && y es la suma entre 1 y x (no inclusive),!cond: x>=11 S2={x==11 && y==55} Si vale Inv y!cond, entonces vale {x<=11 && y es la suma entre 1 y x (no inclusive) && x>=11}, que es equivalente a {x==11 && y es la suma entre 1 y x (no inclusive)}. Luego, reemplazando en la expresión de y, se tiene que {x==11 && y=1+2+...+10}, que es equivalente a {x==11 && y==55}

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } 4.- Existe una cota para la validez de cond

Corrección (Ejemplos) Repetición: while ([expr1][comp][expr2]) { [prog] } 4.- Existe una cota para la validez de cond Como mencionamos anteriormente en el ejemplo, se puede ver que la función f(x)=11-x decrece en cada iteración del ciclo por efecto de la asignación x=x+1 de forma que en algún momento f(x) queda acotada por 0, precisamente cuando x==11, en la última iteración.

Resumen Ufffffffffffffffffff... corrección para: - Ciclos