Programación y matemática



Documentos relacionados
UNIDAD I. ALGORITMOS

UNIVERSIDAD SAN MARCOS

2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

Algebra de Boole. Algebra de Boole. Ing. José Alberto Díaz García. EL Diseño Lógico. Página 1

CURSOSO. Aritmética: Númerosnaturalesyenteros. Númerosracionalesyfraciones. MATEMÁTICAS. AntonioF.CostaGonzález

CAPITULO II. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

Introducción a la Teoría de Automátas

ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS Tipos de datos Expresiones Operadores y operandos Identificadores como localidades de memoria

Teoría de conjuntos. Tema 1: Teoría de Conjuntos.

Lección 8: Potencias con exponentes enteros

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria.

Expresión, Operador, Operando, Asignación, Prioridad

SISTEMA DE NUMERACIÓN BINARIO

TEMA 2: TEORÍA DE CONJUNTOS Y CONJUNTOS NUMÉRICOS.

Area Académica: Licenciatura en Administración. Profesor: I.E.C. Roxana Sifuentes Carrillo

Expresiones algebraicas

Etapas para la solución de un problema por medio del computador

Universidad Politécnica de Puerto Rico Departamento de Ciencias y Matemáticas. Preparado por: Prof. Manuel Capella-Casellas, M.A.Ed.

José A. Jiménez Nieto

UNIDAD 5. FRACCIONES Y OPERACIONES

UNIDAD 2: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACiÓN R

La ecuación de segundo grado para resolver problemas.

Algebra Operativa. Matías Enrique Puello Chamorro 26 de julio de 2015

Tema 2. Funciones Lógicas. Algebra de Conmutación. Representación de circuitos digitales. Minimización de funciones lógicas.

MATEMÁTICAS BÁSICAS UNIVERSIDAD NACIONAL DE COLOMBIA - SEDE MEDELLÍN CLASE # 5

Universidad de Puerto Rico en Arecibo Departamento de Matemáticas Expresiones Algebraicas y Polinomios

Algoritmos y Diagramas de flujo

PROGRAMACIÓN ALGORITMOS y DIAGRAMAS

Los números enteros. > significa "mayor que". Ejemplo: 58 > 12 < significa "menor que". Ejemplo: 3 < 12 Cualquier número positivo siempre es mayor

operaciones inversas Para unificar ambas operaciones, se define la potencia de exponente fraccionario:

Herramientas digitales de auto-aprendizaje para Matemáticas

2.Teoría de Autómatas

PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo SCT. Obligatorio Plan Común

CONJUNTOS. Consideremos, por ejemplo, los siguientes conjuntos:

Conjuntos. Dra. Noemí L. Ruiz Limardo Revisado 2011 Derechos Reservados

OPERADORES LÓGICOS JAVASCRIPT. EJEMPLOS. RELACIONALES MAYOR, MENOR, IGUAL, DISTINTO. AND, OR, NOT. CORTO- CIRCUITO (CU01117E)

Existen distintas formas de representar una función lógica, entre las que podemos destacar las siguientes:

1. El sistema de los números reales

Capítulo 4 Representación interna de los Datos

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Lógica de Predicados MRC

INSTRUCCIONES PARA EL USO DEL SOFTWARE (IS)

1 Números racionales

Conceptos básicos de programación. Arquitectura de Computadoras. Conceptos básicos de programación

Análisis de problemas

3.2. Conceptos generales. (A) Una fracción es el cociente, razón o división de dos números enteros. El dividendo se llama

TEORÍA DE CONJUNTOS A ={ 1, 2, 3, 4, 5, 6 }

Capítulo 1. El Conjunto de los números Reales

Práctica 3. CÁLCULO DE LA FUNCIÓN SENO UTILIZANDO UN DESARROLLO EN SERIE

Fracciones numéricas enteras

TEMA 2: EL INTERÉS SIMPLE

Definición(2) La base (r) de un sistema de numeración especifica el número de dígitos o cardinal* de dicho conjunto ordenado. Las bases más utilizadas

Autómatas Finitos y Lenguajes Regulares

Unidad 1: Números reales.

Introducción a la Geometría Computacional

Sintaxis y Semántica del Lenguaje. Gramáticas

Lógica de Predicados

OBJETIVOS CONTENIDOS PROCEDIMIENTOS. Variables. Relación funcional.

CENTRO DE EDUCACIÓN MEDIA CURSO CERO. Departamento: Matemáticas y Física. Área Académica: Matemáticas. Nombre de la materia: Curso Cero

TEMA 6. LAS FRACCIONES. Fraccionar es dividir en partes iguales. Se puede fraccionar en las partes que se quiera siempre que sean iguales.

Capítulo 5 IDENTIFICADORES, VARIABLES Y CONSTANTES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Teoría de errores. Departamento de Análisis Matemático Universidad de La Laguna

SESIÓN 1 PRE-ALGEBRA, CONCEPTOS Y OPERACIONES ARITMÉTICAS BÁSICAS

Parte 1: Introducción a la lógica funcional Parte 2: Introducción a la teoría intuitiva de conjuntos

Proyecto Unico - Parte 1 - Solución

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES

Práctica 2 Métodos de búsqueda para funciones de una variable

Serafín Moral Departamento de Ciencias de la Computación. Modelos de Computación ITema 2: Autómatas Finitos p.1/88

Problemas de Recursividad

Qué Tipos de Datos se Almacenan en OpenOffice.org Calc?

k k N b Sistemas Númericos Sistemas con Notación Posicional (1) Sistemas con Notación Posicional (2) Sistemas Decimal

TEMA 1: NÚMEROS REALES

1 of 18 10/25/2011 6:42 AM

Representación de Algoritmos Fundamentalmente, dos tipos de notación: Pseudocódigo Diagramas de flujo.

Introducción a las sentencias de control

Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A)

Tema 3. Análisis de riesgo. Tema 3. Análisis de riesgo

Presentación: Jessica Rivero Espinosa ( ) Inteligencia en Redes de Comunicaciones. Ingeniería de Telecomunicación.

Teoría de Autómatas y Lenguajes Formales. Capítulo 1: Introducción. Teoría de Autómatas y Lenguajes formales es un repaso a la informática teórica.

UNIDAD #1: CONJUNTOS NUMERICOS

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR. Ciencias de la ingeniería

Introducción. Reglas para dibujar un diagramas de flujo.

Algebra de Boole y simplificación de funciones lógicas. Capítulo 4

MATEMÁTICAS 1ero ESO

Combinación Lineal. Departamento de Matemáticas, CCIR/ITESM. 10 de enero de 2011

Ing. Ramón Morales Higuera

UNIVERSIDAD INTERAMERICANA DE PUERTO RICO RECINTO METROPOLITANO

Lenguajes Regulares. Antonio Falcó. - p. 1

Representación de números enteros: el convenio complemento a uno

33 ESO. «Es imposible aprender matemáticas sin resolver ejercicios» Godement. Matemático

Generación de funciones lógicas mediante multiplexores

UNIDAD 2 COMPUERTAS LOGICAS

Lección 10: Representación gráfica de algunas expresiones algebraicas

Representación de los números naturales

TEMA I: LOS CONCEPTOS FUNDAMENTALES DE LA TEORÍA DE LA COMPUTABILIDAD

Pertenencia y no pertenencia

I PRELIMINARES 3 1 Identidades notables Productos y potencias notables Uso del símbolo de sumatoria Símbolo de sumatoria:

DIBUJO TÉCNICO II BLOQUE 1_TRAZADOS GEOMÉTRICOS

Proposiciones Condicionales

Funciones lineales y no lineales (páginas )

Transcripción:

Programación y matemática Los objetos matemáticos se describen usando un lenguaje al que llamamos lenguaje matemático. Como este lenguaje tiene pautas claras que indican cuáles descripciones tienen sentido y cuáles no, podemos llamarlo lenguaje formal o formalismo: identificamos una expresión con sentido por su forma. Es así que podemos reconocer un objeto matemático en la expresión "(2 + 1) * 5"; y un sinsentido en la expresión "/* 111 5 -+ 34". Las expresiones del lenguaje matemático se evalúan utilizando reglas de transformación que describen cómo se obtiene otra expresión más simple que la original, al ser aplicadas a expresiones (una o más de una). Más simple significa que el número de pasos de reducción para llegar a obtener una expresión para la cual no hay regla a aplicar (o sea, no puede ser reducida), es menor. La expresión que no puede ser reducida se denomina forma canónica de la expresión (en realidad, lo es de todas las obtenidas en los pasos de reducción). El término reducir proviene del hecho de que el número de pasos hasta la forma canónica es menor y el término evaluar proviene del que la forma canónica se denomina también el valor de la expresión. Ejemplo: (2 + 1) * 5 puede reducirse a la expresión 3 * 5 y ésta a 15, que es la forma canónica. Decimos que 15 (está en forma canónica) o es la forma canónica de la expresión (2 + 1) * 5 o que (2 + 1) * 5 tiene forma canónica (valor) 15. Las reglas de transformación que se aplican en este ejemplo son la funciones + y *. 3 * 5 es más simple que (2+1)*5 porque el número de pasos de reducción hasta la forma canónica es menor (desde (2+1)*5 a 15 hay dos pasos, mientras que de 3 *5 hay un solo paso). Las reglas pueden ser aplicadas siguiendo distintas estrategias, pero por cualquiera de ellas se llega a una misma forma canónica (si la misma existe). Por ejemplo, la expresión (2 + 1) * 5 puede reducirse a la expresión 3 * 5 y ésta a 15, o a la expresión 10 + 5 y luego a 15. Algunas expresiones no tienen forma canónica, es decir, su valor no existe. Por ejemplo para la expresión 2/0, no puede hallarse un valor, pues la regla involucrada (/) no está definida para denominador 0, mientras que para la expresión x * 2, no puede hallarse el valor porque la variable x es libre, es decir, no tiene valor ni está cuantificada.

Algunos tipos de expresiones Caracteres y cadenas de caracteres Los elementos de un conjunto pueden ser las letras del abecedario. Podemos definir palabras como los subconjuntos de ese conjunto de letras. Y podemos definir relaciones y funciones sobre conjuntos de letras o de palabras. Por ejemplo, se puede definir una operación llamada concatenación, que dadas dos palabras, devuelve otra formada por las letras de la primera seguidas por las de la segunda. Cuando buscamos una palabra en un diccionario, utilizamos una relación de orden entre las palabras. Sabemos por ejemplo, que gato está después de casa y antes que sol y esa relación determina el algoritmo de búsqueda que empleamos para buscarla. Cree Ud. que puede definirse en matemática ese algoritmo de búsqueda? Si, se puede y este problema es uno de los tipos de problemas que se tratan en matemática discreta. También puede programarse es decir, representarse en un lenguaje de programación. En matemática discreta y en programación, a las letras (y símbolos en general, por ejemplo los del teclado) se les llama caracteres y a las palabras se les llama cadenas de caracteres o strings y en este curso se denotan entre comillas, por ejemplo Sylvia es la cadena formada por la concatenación de los caracteres S, y, l, v, i, a, o también por la concatenación de las palabras Syl y via, por ejemplo. Expresiones booleanas 1 Uno de los conjuntos con que trabajamos es el conjunto formado por los valores true y false (verdadero y falso, usaremos los nombres en inglés para comodidad con ISetL), que en este curso llamamos Bool, es decir Bool = {true, false}. Las expresiones que evalúan o reducen a true o a false se denominan expresiones booleanas de la misma forma que las expresiones que evalúan a un valor entero, se denominan expresiones enteras. Las variables cuyo valor es true o false se denominan variables booleanas. 1 El nombre proviene del matemático George Boole.

Todo lo que hemos dicho para las expresiones matemáticas vale para las expresiones booleanas, por ejemplo, 2*(3+1) > 4 reduce a 2*4 > 4 reduce a 8 > 4, que a su vez reduce a true. true es la forma canónica de las expresiones y es una expresión canónica (o sea un valor). La regla que se aplica en este caso es la denotada por >. abc < abd evalúa a true y en este caso < denota la relación de orden lexicográfico entre palabras (la que usa el diccionario). Estrategias de evaluación Dada una expresión de la forma f(a 1, a 2,, a n ) donde los a i (i natural), son expresiones (canónicas o no) y f es el símbolo que denota una regla de transformación, existen distintas estrategias de evaluación de dicha expresión. Mencionamos dos: a) se aplica f sin evaluar las expresiones a i, salvo que ello sea necesario para efectuar la reducción y b) se evalúan las expresiones a i hasta su forma canónica y luego se aplica f. Observe si esta descripción general de las estrategias coincide con lo que Ud. señaló para los casos particulares de la pregunta 3) de la actividad 0. Indique para cada caso la estrategia usada (a o b). Lenguajes de programación Un lenguaje de programación es un formalismo en el cual se representan objetos por medio de expresiones del lenguaje, que se evalúan utilizando reglas de transformación sobre las expresiones. Las reglas también se representan en el lenguaje, de modo que puedan ser aplicadas por un computador y la evaluación de las expresiones se hace entonces automáticamente. Veremos que las reglas son algoritmos y que también pueden ser representados en el lenguaje matemático. Existen lenguajes de programación en los cuales pueden representarse las pruebas de propiedades y ejecutarse (semi) automáticamente (el semi es porque hay partes de las pruebas que son indecidibles). Estos lenguajes de programación se llaman asistentes de pruebas. Citamos dos opiniones que definen la relación entre matemática y computación bajo una perspectiva que compartimos.

La primera está extraída de la traducción castellana del articulo La revolución en matemáticas de Marshall Stone, aparecido en 1978 en La enseñanza de las matemáticas modernas de Jean Piaget y otros autores. Refiriéndose a la introducción de computadores, a los que llama potentes auxiliares en el quehacer matemático, dice así: Después de la introducción de estos potentes auxiliares los matemáticos ya no tienen que preocuparse de reducir sus soluciones a una forma sencilla de calcular a mano o con calculadoras corrientes; su misión ha pasado a ser la de traducir estos cálculos a programas de cuya ejecución se encargarán computadoras electrónicas de gran velocidad, lo que ha dado lugar a la aparición de una nueva rama de las matemáticas dedicada a la teoría y práctica de la confección de programas. Unos años mas tarde, en On the cruelty of really teaching computer science, Dijkstra define ciencia de la computación con estas palabras: Y agrega: It is -and will always be- concerned with the interplay between mechanized and human symbol manipulation, usually referred to as computing and programming respectively. 1 In the map of academic disciplines, computer science has to be located in the direction of formal mathematics and applied logic. 2 El lenguaje matemático es manejado por humanos, mientras que un lenguaje de programación es manejado por un autómata, un computador. Esto plantea algunas consideraciones, la primera de las cuales es que ambos lenguajes han sido diseñados por humanos y por lo tanto pueden contener inexactitudes o ambigüedades. Ahora bien, el lenguaje matemático es usado por humanos, quienes pueden advertir las inexactitudes y/o ambigüedades, de una manera similar a lo que sucede con el lenguaje natural. Sin embargo, un lenguaje de programación es usado por un computador, que ejecutará o realizará las instrucciones sin detenerse a reflexionar ni en la pertinencia ni en el significado de las mismas, actuando siempre como si estuvieran completas y fueran exactas. Por ello, el programar exige rigurosidad en el uso del lenguaje, es más, cumplir con este requisito, es una de las mayores

dificultades en la construcción de software y una de las fuentes de errores de esa actividad. Hay lenguajes de programación que ayudan a superar estas inexactitudes mejor que otros y veremos más adelante el caso de ISetL. Este es un curso de Matemática Discreta, donde el lenguaje de programación ISetL se utiliza para representar los objetos matemáticos. Esto significa que NO es un curso de programación y que lo más importante es la representación de los objetos en matemática. [1] Concierne a la relación entre la manipulación simbólica mecanizada y la humana, referidas como computar y programar respectivamente. [2] En el mapa de las disciplinas académicas, la ciencia de la computación debe ser ubicada entre la matemática formal y la lógica aplicada.