Teoria de La Computacion y Logica de Programacion 2011

Embed Size (px)

Citation preview

2011

Lgica de Programacin

0

Lgica de ProgramacinUPIICSALa lgica es fundamental para la programacin y la programacin no existira sin la lgica.

Vctor Alfredo Gallardo Snchez | agosto,2011 Vctor Alfredo Gallardo Snchez 01/08/2011

Lgica de Programacin Contenido

1

Introduccin ............................................................................................................................................. 3 I. Introduccin a la lgica .................................................................................................................... 6 Qu es la lgica? ................................................................................................................................. 6 De qu trata la lgica ........................................................................................................................... 7 Correccin, verdad y analtico .............................................................................................................. 9 Presentacin de los sistemas lgicos ................................................................................................. 13 Definicin. Formas enunciativas ........................................................................................................ 17 Definicin. Grado de una forma enunciativa ..................................................................................... 17 Traduccin del lenguaje natural al lenguaje formal........................................................................... 18 Sistema Formal ................................................................................................................................... 19 Definicin Sistema Formal.............................................................................................................. 19 Ejemplo de Sistema Formal axiomtico L ...................................................................................... 20 Conectivas y tablas de verdad ............................................................................................................ 22 Significado de las conectivas .......................................................................................................... 22 lgebra de Boole y operadores binarios ............................................................................................ 25 Tipos y lenguajes de programacin.................................................................................................... 28 Fundamentos matemticos ............................................................................................................... 28 Conjuntos ....................................................................................................................................... 28 Mtodos de demostracin ................................................................................................................. 30 Proposiciones especiales, argumentos y leyes de inferencia ........................................................ 30 Modus ponens................................................................................................................................ 31 Modus Tollens ................................................................................................................................ 32 Adicin............................................................................................................................................ 32 Simplificacin ................................................................................................................................. 32 Silogismo hipottico ....................................................................................................................... 32 Silogismo disyuntivo ....................................................................................................................... 32 Prueba por vacuidad ...................................................................................................................... 32 Prueba trivial .................................................................................................................................. 32 Prueba directa ................................................................................................................................ 32 Vctor Alfredo Gallardo Snchez | agosto,2011

2

Lgica de ProgramacinPrueba indirecta ............................................................................................................................. 33 Prueba por contradiccin ............................................................................................................... 33 Reduccin al absurdo ..................................................................................................................... 33 El mtodo de induccin.................................................................................................................. 34

Sistemas numricos............................................................................................................................ 34 Teorema Fundamental de la numeracin ...................................................................................... 35 Sistema binario ............................................................................................................................... 37 Sistema octal .................................................................................................................................. 37 Sistema decimal ............................................................................................................................. 37 Sistema hexadecimal ...................................................................................................................... 37 II. Estrategias para la solucin de problemas..................................................................................... 39 Describir un patrn ............................................................................................................................ 39 Tanteo y error .................................................................................................................................... 41 Elaboracin de una tabla.................................................................................................................... 43 De atrs hacia adelante ...................................................................................................................... 45 Comprobar la respuesta del problema .............................................................................................. 47

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin Introduccin

3

La lgica simblica o matemtica estudia la lgica utilizando tcnicas y nociones matemticas. Al mismo tiempo ha contribuido a la fundamentacin de las matemticas. Aunque la lgica es una disciplina muy antigua, que hunde sus races en los filsofos griegos de la escuela de Megara, la escuela Estoica y Aristotlica, solamente se ha constituido en disciplina formal, es decir, en lgica simblica (en adelante, simplemente lgica), a partir de la segunda mitad del siglo XIX, con los trabajos de A. De Morgan y G. Boole. Con el comienzo del segundo tercio del siglo XX la lgica se ha visto fertilizada por los nuevos problemas y tcnicas surgidos alrededor de la informtica (Ciencias de la computacin e Inteligencia artificial). La mayora de los informticos reconocen la ntima conexin existente entre la lgica y la informtica, comparable en importancia a la relacin entre el anlisis matemtico y la fsica. Desde el comienzo de su relacin la lgica ha jugado diferentes papeles en el campo de la informtica. 1. Como una fuente de lenguajes y sistemas para el razonamiento, debido a su capacidad deductiva. Se han empleado diferentes tipos de lgica para describir e implementar sistemas que razonan sobre un dominio en particular (ej. en los campos de la teora de la especificacin y la inteligencia artificial). La lgica temporal, una clase de la lgica modal, se empleado para razonar sobre sistemas que incorporan el tiempo como un parmetro principal. La lgica multimodal se ha empleado para razonar sobre sistemas concurrentes e indeterministas. La lgica multimodal tambin es til en el campo de los lenguajes de especificacin. La lgica no montona se ha aplicado a una gran variedad de problemas que van desde la herencia de propiedades a las bases de datos deductivas y en todas aquellas reas en las que es necesario emular razonamientos de sentido comn o manejar informaciones imprecisas. La lgica borrosa tambin se ha utilizado para razonar sobre sistemas en los que el conocimiento es incierto. 2. Como una fuente de herramientas y tcnicas de anlisis y fundamentacin. La lgica se ha empleado como una herramienta para la representacin del conocimiento y en otras muchas reas de la inteligencia artificial. Desde el punto de vista de la fundamentacin, la lgica se ha utilizado para proporcionar un modelo de cmputo. El -Clculo y la reduccin de -expresiones a formas normales, o bien a la lgica de clusulas de Horn y el principio de resolucin SLD representan visiones idealizadas dela idea de computo. La lgica tambin se empleado para establecer una descripcinVctor Alfredo Gallardo Snchez | agosto,2011

4

Lgica de Programacinformal del significado (semntica) de los lenguajes de programacin y en la especificacin y verificacin formal de programas.

Vemos, pues, que pueden darse un gran nmero de razones para el estudio de la lgica aparte de ser una buena vacuna contra la obsolescencia tecnolgica que siempre amenaza a los profesionales de la informtica. La lgica es particularmente importante porque es la base matemtica del software. La resolucin de problemas se relaciona de muchas formas con las situaciones que cada da, se nos presentan en nuestro desempeo, en el trabajo, el hogar, la escuela y otros contextos. Existen estrategias que nos capacitan para afrontar los problemas con ms seguridad, segn sea el caso. Debemos pensar, razonar, controlar, y tomar decisiones a cada instante. Depende de la habilidad y experiencia que tengamos. No obstante el proceso para llegar a la solucin de un problema no es nico. Todos pensamos de manera diferente por lo cual somos nicos. El mtodo ms conocido, es el mtodo cientfico. Este consiste en las siguientes etapas: 1. 2. 3. 4. Observacin Desarrollo Validacin Conclusiones

Para nuestros propsitos, haremos unos cambios en el mtodo cientfico. Los cuales se ven reflejados a continuacin: i. Leer hasta entender el problema a resolver Entender el problema significa establecer de qu se trata, cul es la informacin que se tiene y cul se necesita. Hay que reconocer los datos pertinentes para llegar a la solucin y detectar los que no lo sean. Adems, en este paso es fundamental determinar si los datos que se tienen son suficientes para resolverlo. ii. Desarrollar una estrategia Identificar una estrategia que se pueden usar al resolver un problema. No siempre hay un plan nico de solucin.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programaciniii. Validar y Comprobar Es la solucin buscada, o bien es una de ellas. Puede haber ms de una solucin. iv. Conclusiones

5

Hacer un documento para dar a conocer las dificultades y como se resolvieron para llegar a la solucin o soluciones, segn sea el caso. Como se puede ver, estos pasos son lo suficientemente sencillos de seguir y posiblemente los has utilizado sin saberlo. Estos pasos ayudan a resumir el proceso que se emplea para resolver cualquier problema. Ms que escribirlo cada vez que lo utilizas, debes seguirlo mentalmente. Observa que primero se requiere comprender el problema; esto es, reconocer la suficiencia o insuficiencia de la informacin con que cuentas para lo que tienes que determinar. Es lgico que si no entiendes el problema no podrs resolverlo. Desarrollar una estrategia, es desarrollar un plan a seguir, este depende de la imaginacin, habilidad o experiencia con la que cuentas. Algunas veces se opta por una va que no conduce al resultado. Si esto, ocurre, se intenta con otra. Hasta aqu una breve introduccin de las premisas que debemos tener para comenzar a utilizar las tcnicas antes descritas, en nuestro paso por la asignatura de lgica de programacin.

Vctor Alfredo Gallardo Snchez | agosto,2011

Lgica de Programacin

6

I.

Introduccin a la lgica

Desde una perspectiva informal e intuitiva, la tarea de delimitar cual es el objeto del que se ocupa la lgica, dar una primera definicin de la misma e identificar algunos de los conceptos y nociones ms importantes que forman parte de ella. La tarea que nos impondremos, ser el hecho de precisar los conceptos introducidos en este captulo, lo que nos obligar a introducir nuevos conceptos y mtodos formales. La necesidad de introducir mtodos formales pronto nos har caer en la temida jungla de los smbolos. El nico consejo posible es: Lea con cuidado, en especial las demostraciones, y no deje de llevar cargado el rifle de su intuicin; va a comenzar una peligrosa aventura.

Qu es la lgica?Comenzamos tratando de dar una idea de las materias que conciernen a la lgica (y dentro de ellas las que nos van a interesar a nosotros). Lo primero que debemos decir es que no hay un acuerdo unnime sobre ciertos temas: Trata la lgica de cmo piensa la gente o de cmo debera pensar? Le interesa principalmente el lenguaje? Los lenguajes formales empleados por la lgica son modelos del lenguaje natural (Por lenguaje natural entendemos la clase de los lenguajes no formalizados como el espaol) o pretenden reemplazarlos?

En lo que sigue intentaremos contestar a estas preguntas y expresar, en algunos puntos, nuestro propio punto de vista. Algunos autores afirman que la lgica se limita a presentar formalizadamente las leyes a las que la mente humana se atiene cuando se aplica a razonar; ya los escolsticos calificaban a la lgica como la ciencia del recto juzgar, por lo que puede entenderse como un proceso que permite obtener razonamientos correctos. Sin embargo, la palabra razonamiento tiene connotaciones que no queremos introducir en nuestro discurso. La palabra razonamiento, muchas veces se usa para referirnos a un proceso por el cual la persona que razona llega a tener consciencia sobre la verdad de algo, un proceso que partiendo de otras viejas creencias (premisas) le permite establecer una nueva creencia (conclusin). As, descrito, el razonamiento es un proceso psicolgico, pero nuestra intencin es describir este proceso de forma neutral, para poder aplicar el trmino razonar tanto a agentes humanos como no humanos. Queremos evitar preguntas tales como: puede una computadora llegar a creer algo?; Puede una computadora tener consciencia de haber alcanzado una conclusin o del propio hecho de razonar?.Vctor Alfredo Gallardo Snchez | agosto,2011

Lgica de Programacin

7

Podemos decir que la lgica es la ciencia que estudia el razonamiento pero no desde una perspectiva psicolgica, es decir, no busca entender los efectos que producen los razonamientos sobre sus propios autores, ni mucho menos entender el comportamiento de los propios autores, sino que estudia el producto o resultado de la actividad de razonar (por ejemplo, los pasos dados en una demostracin). Por lo tanto desde nuestro punto de vista, las leyes de la lgica no son leyes psicolgicas que puedan ser confirmadas experimentalmente mediante la observacin de los individuos que razonan. Ms bien, las leyes de la lgica son leyes que determinan cuando ciertas creencias constituyen una buena razn para afirmar una conclusin. Esto es, determinan la relacin que expresa que una afirmacin es consecuencia de otra. Histricamente, comenzado con Leibniz, se han hecho esfuerzos por fundamentar la lgica como un clculo, es decir, un sistema de reglas que nos permita pasar de las premisas a la conclusin de forma mecnica, simplemente computando. Este es un aspecto de la relacin entre lgica e informtica que nos va a interesar mucho, ya que uno de los objetivos de la informtica es computar. Cuando se toma esta direccin es necesario una simplificacin del lenguaje natural (cuyas conocidas caractersticas de complejidad e imprecisin dificultan esta tarea), que conduce al uso de lenguajes formales (ya especificaremos ms adelante que entendemos por lenguaje formal). Por otra parte, el deseo de emplear la lgica como herramienta de representacin del conocimiento hace que los lenguajes formales se empleen como modelos (abstracciones) del conocimiento expresado mediante el lenguaje natural. No cabe duda de que todas estas cuestiones y sus posibles contestaciones han de tenerse en cuenta a la hora de precisar cul es el objeto de la lgica. Sin embargo, en la prctica, su importancia no es tan grande como podra suponerse. En realidad, solo despus de estar familiarizado con las materias y las tcnicas que se utilizan en la disciplina de la lgica se podr decidir sobre el particular.

De qu trata la lgicaA pesar de lo dicho, relativo que no hay una nica respuesta a las preguntas planteadas con anterioridad, sera bueno que llegsemos a algn tipo de acuerdo inicial sobre el objeto de la lgica. En una primera aproximacin al tema, podemos dar la siguiente definicin: La lgica investiga la relacin de consecuencias que se da entre una seria de premisas y conclusin de un argumento correcto. Se dice que un argumento es correcto (valido) si su conclusin se sigue o es consecuencia de sus premisas; de otro modo es incorrecto.Vctor Alfredo Gallardo Snchez | agosto,2011

8

Lgica de Programacin

Sin embargo, para que esta definicin cobre sentido, debemos precisar que entendemos por argumento, relacin de consecuencia, correccin y validez. Por argumento entendemos un sistema de enunciados, de un lenguaje determinado. Uno de sus enunciados es designado como la conclusin y el resto como las premisas. Como veremos ms adelante, es tambin til considerar casos en los que el nmero de premisas sea cero. Habitualmente, un enunciado se define como una expresin lingstica que establece un pensamiento completo. Los enunciados se pueden clasificar en interrogatorios, imperativos y declarativos. Los enunciados declarativos son aquellos sobre los que podemos afirmar su verdad o falsedad o, ms generalmente, aquellos enunciados a los que se pueden asignar un valor de verdad (posiblemente, distinto de verdadero o falso). Nosotros estamos interesados en estos ltimos y dejaremos de lado los otros tipos de enunciados; de ahora en adelante, cuando hablemos de enunciado nos estaremos refiriendo siempre a los enunciados declarativos. Podemos distinguir los siguientes tipos de enunciados: Enunciados de accin: sujeto no determinado. Ejemplos: es verano; hace calor. Enunciados de atribucin de propiedades a sujetos determinados. Ejemplos: Luis es alto, el verano es caluroso. Enunciados de relacin entre sujetos. Ejemplos: Luis es hermano de Juan (relacin binaria); los pirineos estn entre Espaa y Francia (relacin ternaria).

Una forma tradicional de presentar los argumentos es como se muestra a continuacin. Todos los hombres son mortales; Todos los mexicanos son hombres; Todos los mexicanos son mortales

Donde el smbolo suele leerse por consiguiente, por lo tanto o as pues y separa las premisas (los dos primeros enunciados del argumento anterior) de la conclusin. A nadie le resultar difcil ver que la conclusin del argumento anterior se sigue de sus premisas. En otros casos se requiere de cierta reflexin, como en: En una despensa hay exactamente 18 botes de garbanzos; Cada bote tiene al menos 150 garbanzos; Ningn bote contiene ms de 150 garbanzos; Hay en la despensa al menos 3 botes que contienen el mismo nmero de garbanzos Para ver que la conclusin de este argumento se sigue de sus premisas, debemos razonar del siguiente modo: la diferencia entre el nmero mximo y mnimo de garbanzos que puedeVctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

9

contener un bote es de 5 garbanzos; esto nos da la posibilidad de que existan hasta un mximo de 6 botes con un nmero diferente de garbanzos, es decir, un primer bote con 150, un segundo bote con 151 garbanzos, etc. Hasta un sexto bote con 155. Pero hay 18 botes en la despensa, que divididos entre 6 botes con diferente nmero de garbanzos hacen que al menos 3 botes tengan el mismo nmero de garbanzos. Finalmente, para algunos argumentos, la cuestin de saber si la conclusin se sigue de sus premisas puede ser muy difcil. Por ejemplo, nadie hasta ahora ha sido capaz de decidir si el argumento de una sola premisa El nmero entero n es par y mayor que cuatro; El nmero entero n es la suma de dos primos Es correcto. Advirtase que en el ltimo de los ejemplos, la dificultad no surge de la vaguedad que pueda existir en la premisa o en la conclusin. El aserto todo nmero entero que sea mayor que cuatro es la suma de dos primos, no parece difcil de entender; nuestro problema est en averiguar si es verdadero. Sin duda que encontramos argumentos cuya correccin no puede asegurarse por causa de vaguedad de los enunciados que lo componen. Clarificar el significado de un argumento es muy til y la lgica puede prestar considerable ayuda, pero vale la pena subrayar que la cuestin de saber si un argumento es correcto no queda inmediatamente resuelta por el mero hecho de que se tenga una idea precisa de lo que significan las premisas y la conclusin. Entonces, qu es lo que caracteriza a un argumento correcto?, en qu consiste la relacin de consecuencia lgica? Intentaremos contestar a estas preguntas en el prximo apartado.

Correccin, verdad y analticoLa nocin de correccin de un argumento se formula comnmente en trminos de verdad y de posibilidad: Un argumento es correcto si y solamente si no es posible que sus premisas sean verdaderas y su conclusin falsa. Si encontrsemos una circunstancia concebible que hiciese verdaderas las premisas y la conclusin falsa, podramos decir que el argumento es incorrecto. Esta ltima tarea, en cierto sentido, no es otra que la tarea de encontrar un contraejemplo. Establecer la correccin de un argumento por esta va, usando los conceptos de verdad y posibilidad, es una tarea ardua e imposible de automatizar: observemos que tendramos que estudiar todas las circunstancias concebibles para probar la correccin de un argumento o tener la suerte deVctor Alfredo Gallardo Snchez | agosto,2011

10

Lgica de Programacin

encontrar una situacin que nos permitiese afirmar lo contrario. Por esta razn, estaremos interesados en investigar mtodos (sintcticos) que permitan inferir la correccin de unos argumentos basndonos en la forma de los enunciados que lo componen. En un argumento correcto diremos que la conclusin es una consecuencia lgica de las premisas. Del anlisis de la definicin de argumento correcto ms arriba se desprende que: Un enunciado es consecuencia lgica de un conjunto de premisas si y solamente si, sean cuales sean las circunstancias concebibles, el enunciado es verdadero siempre que las premisas sean verdaderas. Observe que esta definicin de consecuencia lgica (y equivalentemente la de argumento correcto) lo nico que garantiza es que si las premisas son verdaderas la conclusin tambin ser verdadera. Puede haber argumentos correctos con premisas falsas y conclusin verdadera o con premisas falsas y conclusin falsa. La nica combinacin de valores de verdad que no puede darse en un argumento correcto es que las premisas sean verdaderas y la conclusin falsa.Ejemplo 1 Todos los argumentos que aparecen en este ejemplo (y aquellos que responden al

mismo patrn) son correctos pero tiene una o las dos premisas falsas y la conclusin tambin puede ser falsa. Argumento correcto con las premisas y la conclusin falsas. Todos los ngeles son mortales; Todos los demonios son ngeles; Todos los demonios son mortales Argumento correcto con las premisas falsas y la conclusin verdadera. Todos los minerales son seres vivos; Todos los animales son minerales; Todos los animales son seres vivos Consiguientemente, a la lgica no le interesa esencialmente si tales o cuales enunciados son verdaderos o falsos, sino el descubrimiento de las leyes (reglas de inferencia) que permiten obtener una conclusin (verdadera) a partir de unas premisas (verdaderas) y as construir un argumento correcto.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

11

ntimamente conectado con el concepto de argumento correcto est el de enunciado analtico. Un enunciado es analtico si y solamente si no puede ser falso. O, lo que viene a ser lo mismo, si y solamente si, en cualquier circunstancia concebible es verdadero. El enunciado Scrates muri en el 399 AC. o Scrates no muri en el 399 AC. Es analtico, porque intuitivamente podemos ver que es verdadero independientemente de los hechos que se relaten acerca de Scrates o de cualquier otra cosa. En cambio, el enunciado: Scrates muri en el 399 AC. Aunque verdadero, no es analtico. Hay circunstancias fcilmente describibles en las que sera falso. Podemos pensar en un mundo posible en el que Scrates no hubiese existido. La caracterstica de anlisis en trminos de posibilidad habitualmente se atribuye a Leibniz, aunque realmente no tenga su origen en l sino en los filsofos de la escuela de Megara como Diodoro Cronos (m. 307 AC.). Para Leibniz el mundo actual es uno de la serie infinita de mundos posibles que podran haber existido. La distincin entre mundo actual y posible conduce a una distincin similar entre los enunciados. Decir que un enunciado es verdadero, es decir, que es verdadero para el mundo actual (o uno de los mundos posibles). Algunos enunciados, sin embargo, son verdaderos para todos los mundos posibles, tales son los denominados enunciados analticos (verdades de razn, verdades necesarias, o verdades lgicas). Los enunciados que solo son verdaderos para el mundo actual (o algunos de los posibles) son denominados enunciados sintticos (verdades de hecho, o verdades contingentes). Puede considerarse que todo enunciado analtico lo es en virtud de su forma. Consideremos de nuevo el enunciado analtico Scrates muri en el 399 AC. o Scrates no muri en el 399 AC. Este enunciado est compuesto por otros dos: Scrates muri en el 399 AC. y la negacin del anterior. Ambos estn unidos por la partcula o, que los conecta. Este enunciado continua siendo verdadero, y as mismo analtico, cuando su componente enunciativo Scrates muri en el 399 AC. Se reemplaza por cualquier enunciado.

Vctor Alfredo Gallardo Snchez | agosto,2011

12

Lgica de Programacin

De este modo los enunciados: Juan muri en el 399 AC o Juan no muri en el 399 AC. La nieve es blanca o la nieve no es blanca. Son todos analticos, como tambin lo es cualquier enunciado de forma: A o no A, donde A representa cualquier enunciado. Ms adelante estableceremos la equivalencia lgica entre enunciados de la forma no A o C y un tipo especial de enunciados llamados condicionales. Un enunciado condicional es un enunciado de la forma: Si A entonces C Donde los smbolos A, denominado el antecedente, y C, denominado el consecuente, representan enunciados cualesquiera. Por equivalencia lgica queremos decir que el enunciado no A o C ser verdadero (o falso) siempre que el enunciado Si A entonces C sea verdadero (o falso), y viceversa. Debido a esta equivalencia los enunciados de la forma: Si A entonces A; son analticos, ya que es equivalente al enunciado siempre verdadero A o no A. Tambin son analtico en virtud de su forma enunciados como: Si A y B entonces A; Si A o B, y no B entonces A; Si todo A es B, y todo B es C entonces todo A es C; etc. Existe una conexin entre analtico y correccin que puede establecerse en los siguientes trminos: Dado un argumento con una serie finita de premisas

Construimos el condicional correspondiente, tomando como antecedente el enunciado que resulta de unir todas las premisas mediante la conjuncin y, y como consecuente la conclusin. En tal caso la conexin entre correccin y analtico es la siguiente: Un argumento con una serie finita de premisas es correcto si y solamente si el condicional correspondiente es analtico. Es decir, si y slo si el enunciado Si A1 y A2 y y An entonces C es analtico.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

13

Ejemplo 2 El siguiente argumento es correcto ya que el enunciado Si A o B, y no B entonces

A es analtico. A o B; No B; A Ms adelante estableceremos mtodos ms precisos y prcticos para decidir cundo un enunciado es o no analtico (al menos en el subconjunto de la lgica que llamamos lgica de preposiciones). De lo dicho hasta el momento en los ltimos prrafos se desprende otra de las caractersticas importantes de la lgica: A la lgica slo le importa la forma. La lgica se ocupa de las formas o esquemas vlidos de razonamiento.

Presentacin de los sistemas lgicosLos diferentes sistemas lgicos elementales tienen en comn, en su presentacin, una etapa previa de formalizacin simblica que suele hacerse a dos niveles: Lgica proposicional. Se ocupa de enunciados declarativos simples o proposiciones que se contemplan como un todos indivisible y que pueden ser combinados mediante partculas lgicas denominadas conectores (ejemplos: no, y, o, si entonces.., etc.). La lgica de proposiciones tambin se denomina lgica de enunciados, o lgica de conectores. Lgica de predicados. En ella las proposiciones ya no son elementos indivisibles. Se realiza un anlisis ms detallado que toma como base los componentes de una proposicin: trminos, frmulas atmicas, cuantificadores y conectores. La lgica de predicados tambin se denomina lgica de primer orden, o lgica cuantificacional.

Para fijar ideas es interesante que estudiemos un primer ejemplo de formalizacin que nos permitir intuir las diferencias entre estos dos niveles de presentacin simblica.

Vctor Alfredo Gallardo Snchez | agosto,2011

14

Lgica de Programacin

Ejemplo 3 Dado el siguiente argumento:

Si Juan es espaol entonces Juan es europeo; Juan es espaol; Juan es europeo En la lgica de proposiciones, a la hora de expresar esta argumentacin en forma simblica slo se identifican como componentes ltimos e indivisibles los enunciados elementales y las llamadas conectivas (las partculas que sirven de nexo de unin entre los enunciados elementales). En nuestra argumentacin distinguimos dos enunciados, Juan es espaol y Juan es europeo, y una conectiva, Si entonces , que, como ya hemos mencionado, suele denominarse condicional. A cada uno de estos componentes ltimos se les puede asignar un smbolo. Por ejemplo, al enunciado Juan es espaol la letra A (tambin decimos que A denota al enunciado Juan es espaol) y al enunciado Juan es europeo la letra B. Es usual denotar el condicional mediante el smbolo . De esta forma, podemos representar simblicamente el anterior argumento como: ; ;

Sin embargo, la lgica de predicados realiza un anlisis ms detallado de la estructura de los enunciados. En la lgica de predicados se distingue entre sujeto, las palabras espaol y europeo. As, si denotamos Juan mediante la letra a, espaol mediante la letra S y europeo mediante la letra E, nuestra argumentacin quedara expresada en forma simblica como: ; ;

En el caso que nos ocupa, emplear la lgica de predicados no nos aporta ninguna ventaja. Ahora bien, cuando la argumentacin incluye cuantificacin, el empleo de la lgica de predicados es imprescindible.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

15

Como hemos dicho, la lgica estudia las relaciones de consecuencia lgica entre la conclusin y un conjunto de premisas de un argumento. Dentro de cada uno de los niveles de presentacin del lenguaje que hemos introducido anteriormente, se pueden considerar dos perspectivas o formales de abordar el problema de establecer las relaciones de consecuencia lgica: Sintctica. Consiste en una definicin (posiblemente axiomtica) de una serie de estructuras deductivas correctas y de reglas para obtener nuevas estructuras deductivas correctas a partir de aqullas. La idea es establecer la relacin de consecuencia lgica entre la conclusin y las premisas empleando un procedimiento de mera manipulacin simblica, al igual que sucede en aritmtica, donde partimos de una expresin y la vamos transformando en sucesivos pasos hasta alcanzar un valor. Por ejemplo, podemos ver el problema de calcular la expresin (2+3)*(5-2) como la aplicacin de una sucesin de reglas elementales:

que nos llevan al valor final 15. De igual forma queremos ser capaces de pasar de las premisas a la conclusin empleando reglas de clculo deductivo. Dentro de esta orientacin se encuadran los mtodos de deduccin desarrollados por la teora de la demostracin: los mtodos axiomticos y los de deduccin natural. Semntica. Consiste en definir de forma precisa reglas para asignar significado y evaluar los enunciados y expresiones sintcticas. La idea es establecer la relacin de consecuencia lgica a partir de los significados de las premisas y la conclusin. Dentro de esta orientacin se utilizan las teoras de modelos y las denotaciones.

De lo dicho hasta aqu, se desprende que la lgica puede dividirse en dos partes bien diferenciadas: La sintaxis. Que estudia los sistemas formales, es decir, los lenguajes formales, los clculos deductivos y las propiedades asociadas a ellos. La semntica. Que estudia la asignacin de significado a los formalismos.

Vctor Alfredo Gallardo Snchez | agosto,2011

16

Lgica de Programacin

Al tratar tanto a la lgica de proposiciones como la lgica de predicados, seguiremos una progresin en la que estudiaremos, por orden: i. ii. iii. La sintaxis de las expresiones lgicas; La semntica; y Los sistemas formales deductivos.

Ejemplo 4 Todo el mundo convendr que el argumento:

Si Scrates es un hombre entonces Scrates es mortal; Scrates es un hombre Scrates es mortal Cuando simbolizamos un enunciado compuesto, de la manera que lo hemos hecho es el ejemplo 4, lo que queda es un armazn lgico o matriz que denominamos forma enunciativa y que puede ser comn a varios enunciados. En lo que sigue, estudiaremos formar enunciativas ms bien que enunciados particulares, ya que esto facilita nuestro anlisis de la veracidad de los argumentos e incluso los propios enunciados compuestos. Pero para realizar nuestra tarea de formalizacin, primero debemos fijar una serie de smbolos que emplearemos como vocabulario. Las letras minsculas: p, q, r, sern variables de enunciados que designan enunciados simples arbitrarios no especificados. A las variables de enunciado algunos autores las denominan letras enunciativas, o tambin letras proposicionales. Para simbolizar enunciados compuestos introducimos smbolos para las conectivas. Las conectivas ms comunes y los smbolos que emplearemos para denotarlas, se indican a continuacin: 1. Negacin . La forma enunciativa permite simbolizar un enunciado, a partir de otro cualquiera p, del tipo: no p; no es cierto que p. 2. Conjuncin . La forma enunciativa p q, simboliza enunciados del lenguaje natural de la forma p y q; p pero q, p no obstante q. 3. Disyuncin . La forma enunciativa p q, simboliza enunciados de la forma p o q, al menos p o q. 4. Condicional . La forma enunciativa p q, simboliza enunciados de la forma p entonces q, si p, q, p implica q; p slo si q. 5. Bicondicional . La forma enunciativa p q denota enunciados de la forma: p si y slo si q, p necesario y suficiente para q. Es obvio que utilizando estas conectivas se pueden construir enunciados compuestos de cualquier longitud y complejidad a partir de enunciados ms simples. Tambin usandoVctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

17

variables de enunciado y smbolos de conectiva podremos construir formas enunciativas de cualquier longitud. Podemos precisar el concepto de forma enunciativa mediante la siguiente definicin.

Definicin. Formas enunciativasUna forma enunciativa es una expresin, en la que intervienen variables de enunciado y smbolos de conectivas, que pueden formarse utilizando las siguientes reglas: Toda letra enunciativa p, q, r, es una forma enunciativa. Si A y B son formas enunciativas bien construidas, tambin son formas enunciativas: , , , , ,

Slo son formas enunciativas bien construidas las que cumplen las reglas anteriores.

Definicin. Grado de una forma enunciativaEl grado de una forma enunciativa es la aplicacin del conjunto de las formas enunciativas al conjunto de los nmeros naturales : 1. Grado(A) = 0, si A es una letra enunciativa. 2. Si A y B son formas enunciativas: a) b) c) d) e) Se hace un uso explcito de los parntesis (que forman parte del lenguaje, en pie de igualdad con los otros smbolos) para impedir cualquier ambigedad en la forma en la que una conectiva afecta a las letras proposicionales que la acompaan. El problema con los parntesis es que en ocasiones, un nmero excesivo de ellos, puede entorpecer la escritura o lectura de las formas enunciativas. Para evitar la proliferacin excesiva de parntesis y clarificar la relacin entre conectivas y letras proposicionales, cuando hay ms de una conectiva, nos atendremos a las siguientes normas en la escritura de formas enunciativas:

Vctor Alfredo Gallardo Snchez | agosto,2011

18

Lgica de Programacin

1. Una conectiva afecta a las letras proposicionales inmediatas o a las formas enunciativas inmediatas a ella que estn entre parntesis. 2. Reglas de precedencia Se define la siguiente jerarqua entre conectivas: Nivel 1 2 2 conectiva , ,

La jerarqua de la tabla indica que las conectivas de nivel i ligan ms que las de nivel i+1, tambin se dice que las primeras tienen precedencia sobre las ltimas. Esto es, cuando dos conectivas de nivel i e i+1 aparecen prximas a una variable o a otra forma enunciativa, la conectiva de nivel i es la que acta sobre dicha variable o forma enunciativa.

Traduccin del lenguaje natural al lenguaje formalEl proceso de traduccin del lenguaje natural al lenguaje formal de la lgica es complejo y requiere de mucha prctica, ya que no existen reglas fijas. Dado que en los estados iniciales del diseo de un sistema informtico (ya sea una aplicacin de gestin de la informacin o un sistema experto) las informaciones sobre el sistema se presentan muchas veces en lenguaje natural no formalizado, el dominio de las tcnicas de traduccin es de vital importancia para el informtico. Aunque no hay reglas precisas para resolver este problema, podemos seguir ciertas pautas sencillas: 1. Primero, identificar los enunciados simples y, despus, las conectivas (utilizando el significado que henos atribuido a los conectores). 2. Finalmente, asignar una letra enunciativa a cada uno de los enunciados identificados y aplicar las normas de escritura abreviada de formas enunciativas.Ejemplo 5 Traducir al lenguaje formal de la lgica de proposiciones los siguientes enunciados:

Si llueve se terminaran los problemas de segua y no har falta ms dinero Anlisis de los enunciados simples y asignacin de letras enunciativas:Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de ProgramacinLlueve Se terminarn los problemas de sequia Har falta ms dinero Formalizacin: p q r

19

Slo si distingues bien los diferentes acentos o te dice su lugar procedencia sabrs si es espaol o portugus Anlisis de los enunciados simples y asignacin de letras enunciativas: Distingues bien los diferentes acentos Te dice su lugar de procedencia Sabrs si es espaol Sabrs si es portugus Formalizacin: p q r s

Un partido de ftbol no se gana a menos que se corra mucho y se tenga calidad Anlisis de los enunciados simples y asignacin de letras enunciativas: Un partido de futbol se gana Se corra mucho Se tenga calidad Formalizacin: p q r

Sistema FormalLa palabra formal se usa para referirnos a esta situacin en la que se emplean smbolos cuyo comportamiento y propiedades estn completamente determinados por un conjunto dado de reglas. En un sistema formal los smbolos carecen de significado, y al manejarlos hemos de tener cuidado de no presuponer nada sobre sus propiedades, salvo lo que se indique en el sistema.Definicin Sistema Formal

Para especificar un sistema formal S bien diseado se requieren los siguientes componentes: Un vocabulario: Un conjunto (finito, para hacerlo ms accesible) de letras y smbolos a utilizar en el conjunto S. Reglas: que establezcan qu cadenas de signos son formulas bien formadas en S. Un conjunto de las definiciones utilizadas.Vctor Alfredo Gallardo Snchez | agosto,2011

20

Lgica de ProgramacinUn conjunto de las frmulas bien formadas de S que van a utilizarse como axiomas. Un conjunto finito de reglas de inferencia y de reglas de construccin de una deduccin en S. Las condiciones necesarias y suficientes que debe reunir una deduccin para dar como resultado un teorema de S. En caso de que puedan utilizarse, como axiomas adicionales de S, teoremas de cualquier rama de la matemtica deber especificarse1.

El vocabulario de un sistema formal tambin recibe el nombre de alfabeto. Al resultado de escribir signos del alfabeto uno a continuacin de otro, le llamaremos cadena de signos de ese formalismo. No estamos interesados en cualquier cadena de smbolos, sino, slo en aquellas que constituyen formulas bien formadas. Los axiomas son frmulas que se seleccionan como base del sistema formal. Un axioma es una frmula tan clara y evidente que se admite sin necesidad de demostracin y se usa en las deducciones sin necesidad de justificacin previa. Una deduccin es una sucesin de frmulas, construida mediante reglas precisas que se ajustan a las reglas de construccin de una deduccin de un sistema S. Se pretende que una deduccin sirva para justificar la correccin de un argumento. En la construccin de una deduccin empleamos reglas de inferencia. Una regla de inferencia es un esquema de razonamiento que nos permite, a partir de frmulas establecidas, extraer una frmula nueva. Podemos entender una regla de inferencia como una operacin por la cual de una o ms frmulas ya deducidas se pasa a una tercera. Tambin se dice de una frmula obtenida por la aplicacin de una regla de inferencia, que ha sido obtenida por inferencia inmediata y que la frmula derivada por inferencia inmediata es una consecuencia (lgica) inmediata.Ejemplo de Sistema Formal axiomtico L

El ejemplo de sistema formal que vamos a definir a continuacin es un sistema axiomtico. Histricamente, los sistemas axiomticos fueron introducidos por el matemtico alemn G.1

Mosterin asigna el nombre de formalismo al conjunto de signos y cadenas de signos que son parte de un sistema formal. Hace nfasis en que un formalismo carece de significado: un formalismo es una combinacin de signos desprovistos de toda significacin. La teora de la demostracin estudia los formalismos y sus propiedades con independencia de toda interpretacin. La teora de los modelos estudia las interpretaciones. Intuitivamente, por interpretacin debemos entender una asignacin de significado a las cadenas de smbolos de nuestro formalismo. Una valoracin puede verse como un caso especial de interpretacin en el contexto de la lgica de proposiciones. A un sistema formal tambin suele denominarse clculo o, con ms precisin, clculo deductivo. Algunos autores usan la palabra clculo para hacer referencia al formalismo: Un clculo es la estructura formal de un lenguaje, abstrayendo el significado; se transforma en un lenguaje cuando se evalan sus smbolos y sus construcciones (es decir, se les atribuye un significado, se les pone en relacin con los objetos que designan).

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

21

Frege en 1879 y posteriormente fueron popularizados por el tambin matemtico alemn D. Hilbert, por esta razn algunos autores los denominan sistemas de Hilbert. Muchas de las decisiones que toman cuando se caracteriza un sistema formal son en gran medida arbitrarias, en el que vamos a presentar se opta por la economa de medios: reduciendo el nmero de conectivas y de axiomas. Los sistemas de axiomas que conciernen nicamente a la negacin y al condicional proceden de Frege, posteriormente, J. Lukasiewicz y A. Tarski dieron un sistema formal del mismo tipo pero ms sencillo. El sistema axiomtico que presentamos aqu est inspirado en Lukasiewicz, por lo que bien podramos llamarle Sistemas de Lukasiewicz. El sistema formal L del clculo de enunciados est caracterizado por: 1. Vocabulario: el conjunto de smbolos infinito numerable { }

2. Conjunto de frmulas bien formadas: En lugar de definirla de forma extensiva, indicando cada una de las frmulas que se consideran bien formadas, daremos una definicin inductiva. a. son frmulas bien formadas } son frmulas b. son frmulas bien formadas, entonces { } y { bien formadas c. El conjunto de todas las frmulas bien formadas es el generado empleando solamente las reglas anteriores (a y b) 3. Definiciones: es abreviatura de: ( ( es abreviatura de: ( es abreviatura de: ( ( )) ) ( )))

4. Axiomas: Cualesquiera que sean las frmulas bien formadas A, B y C, las siguientes son axiomas de L L1 L2 ( ( ) ) ( )

Vctor Alfredo Gallardo Snchez | agosto,2011

22

Lgica de ProgramacinL3

(( ) ) 5. Reglas de inferencia: en L hay solamente una regla de inferencia, la regla modus ponens, que afirma: de A y (A entonces B) se puede inferir como consecuencia inmediata B, siendo A y B frmulas bien formadas cualesquiera de L.

Conectivas y tablas de verdadUno de los objetivos de la lgica es establecer relaciones de consecuencia lgica entre los enunciados que componen un argumento. Hemos visto que este problema est relacionado con la actividad de determinar el valor de verdad de los enunciados.Significado de las conectivas

Tradicionalmente, la lgica se ha regido, desde Aristteles, por el principio de bivalencia, segn el cual todo enunciado o es verdadero o es falso, pero no ambas cosas a la vez. Nosotros nos adherimos a ese principio. As pues, una variable de enunciado podr tomar uno de entre dos posibles valores de verdad: V (verdadero) o F (Falso). Como vamos a poner de manifiesto, la verdad o falsedad de un enunciado compuesto no depende de las relaciones de afinidad entre los enunciados elementales que lo componen ni de las relaciones de causalidad que puedan existir entre ellos, sino slo de los valores de verdad de sus componentes. As pues, estamos interesados en el modo en el que la verdad o falsedad de un enunciado compuesto (o forma enunciativa compuesta) depende de los valores de verdad de los enunciados simples (o variables de enunciado) que lo constituyen y de las conectivas que los unen. Por consiguiente, necesitamos definir con claridad el significado de cada una de las conectivas.Negacin. La negacin tiene el mismo significado que la partcula no del lenguaje ordinario:

Si un enunciado A es verdadero, no A es falso; y si A es falso, no A es verdadero. Podemos describir la situacin por medio de una tabla de verdad: p V F

F V

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

23

Conjuncin. La conjuncin tiene el mismo significado que la partcula y del lenguaje

ordinario: la conjuncin es verdadera, cuando tanto el enunciado A como el B son verdaderos y es falsa en el resto de los casos. La tabla de verdad es: P V V F F q V F V F

V F F F

En la tabla tenemos una fila para cada una de las posibles combinaciones de valores de verdad para p y q. La ltima columna indica los valores de verdad de la conjuncin de p y q.Disyuncin. La disyuncin tiene el mismo significado que la partcula o del lenguaje

ordinario en su sentido inclusivo: la disyuncin solamente es falsa, cuando tanto el enunciado A como el B son falsos y es verdadera en el resto de los caos. La tabla de verdad es: P V V F F q V F V F

V V V F

Sin embargo, el disyuntor no refleja el segundo de los sentidos ordinarios de la partcula o. Cuando decimos o blanco o negro estamos indicando que debe darse una cosa o la otra, pero no ambas a la vez. Este es el sentido del llamado o exclusivo, que denotamos por . La tabla de verdad asociada a la disyuncin exclusiva es: P V V F F q V F V F

F V V F

Podemos expresar la disyuncin exclusiva en trminos de la negacin, la conjuncin y la disyuncin de la forma siguiente: que traduce el sentido literal de la disyuncin exclusiva, es decir, p o q, pero no ambos.

Vctor Alfredo Gallardo Snchez | agosto,2011

24

Lgica de Programacin

Condicional. En este caso, el sentido que se da habitualmente a la conjuncin en espaol no

corresponde con el sentido que se adopta en lgica. El condicional tiene el siguiente significado: El condicional es verdadero, siempre que no se d el caso de que el antecedente, A, sea verdadero y el consecuente B, sea falso y es falsa en el resto de los casos. La tabla de verdad es: p V V F F q V F V F

V F V F

La definicin que se acaba de dar del condicional choca con el uso ordinario de si entonces. El uso ordinario del condicional suele envolver la idea de que existe algn tipo de relacin interna entre el contenido del antecedente y el consecuente. En el uso ordinario del lenguaje natural el empleo del condicional revela una relacin causa-efecto, como en el ejemplo, en la frase:

Por eso, la siguiente combinacin extravagante de enunciados que nada tiene que ver entre s:

Es un enunciado verdadero independientemente de la capacidad que los burros tengan para volar. Este problema puede aclararse si caemos en la cuenta de que el criterio seguido por la lgica de proposiciones se atiene estrictamente al valor del verdad de los enunciados y no tiene en cuenta el contenido sobre el que versan la verdad de los enunciados y no tiene en cuenta el contenido sobre el que versan stos ni las posibles relaciones (causa, efecto u otras) que puedan establecerse entre esos contenidos. Por otra parte, obsrvese que en ocasiones se utilizan, con una intencin retrica, enunciados como el siguiente: Si

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

25

Del que nadie se extraa, a pesar de que los contenidos de cada uno de los enunciados simples no tienen relacin alguna. La construccin If-then, utilizada en muchos lenguajes de programacin tambin difiere del condicional empleado en lgica. La instruccin If p then S, donde p es un enunciado (la condicin) y S es un conjunto de instrucciones, acta de la siguiente forma cuando se ejecuta: Si p es verdadero entonces se ejecuta el conjunto de instrucciones S y despus se sigue con la siguiente instruccin fuera del if, mientras que, si es p falso S no se ejecuta y se sigue directamente con la siguiente instruccin fuera del if. As pues, el if-then es procedimental y no declarativo, ya que hace nfasis en la accin y no en el concepto semntico de verdad. Bicondicional. El significado del Bicondicional es claro, es verdadero cuando A y B tengan el mismo valor de verdad (ambos verdaderos o ambos falsos). La tabla de verdad es: p V V F F q V F V F

V F F V

Nota: Obsrvese que la disyuncin exclusiva o p o q tambin puede expresarse en trminos de la negacin y el Bicondicional, escribiendo : ), ya que esta forma enunciativa es verdadera en el caso, y solamente en el caso, de que p y q sean una verdadero y la otra falsa.

lgebra de Boole y operadores binariosEl lgebra de Boole estudia las propiedades de una estructura matemtica compuesta por el conjunto { } y las operaciones que pueden realizarse con l: complementacin (-), suma (+), y producto (*). Una variable que toma valores en el conjunto { } se denomina variable booleana y puede representarse mediante bits. Las operaciones booleanas de complementacin, suma y producto, se corresponden, respectivamente, con las conectivas lgicas: , y . El lgebra de Boole es el modelo terico sobre el que se fundamenta el diseo de circuitos electrnicos. Las computadoras representan internamente la informacin mediante el uso de bits. Un bit (abreviatura de las palabras inglesas binary digit) tiene dos posibles valores, llamados cero y uno, que pueden emplearse, entre otras cosas (como codificar nmeros en base binaria), para representar los valores de verdad F (0) y V (1).Vctor Alfredo Gallardo Snchez | agosto,2011

26

Lgica de Programacin

Los operadores booleanos se han materializado por las llamadas puertas lgicas, que son componentes bsicos del micro-chip. As pues, las operaciones lgicas pueden implementarse en una computadora y son la base de su funcionamiento. Cada puerta lgica implementa un determinado operador booleano y puede combinarse con otras para formar circuitos ms complejos. Los circuitos cuya salida depende de sus entradas y no de sus estados procedentes (es decir, no tienen capacidades de memoria) se denominan circuitos combinacionales y se corresponden con funciones veritativas ms complejas. En este contexto, las operaciones habitualmente suelen denominarse NOT, OR y AND, respectivamente. Estos operadores tambin se utilizan en la realizacin de operaciones con bits. Las operaciones con bits pueden extenderse a cadenas de bits (operaciones bit-wise). Se definen las operaciones bitwise OR y bitwise AND de dos cadenas de igual longitud, como la cadena resultante de realizar las operaciones OR, respectivamente AND, bit a bit. Por ejemplo: 0 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0

bitwise OR bitwise AND

Nos interesa disponer de ciertas normas que faciliten la construccin de tablas de verdad. Para construir la tabla de verdad relativa a una forma enunciativa cualquiera, seguiremos los siguientes pasos: 1. Calculamos el nmero de filas de la tabla, a partir del nmero de variables enunciativas. Para n variables, el nmero de filas ser de . 2. Confeccin de columnas iniciales. Cuando se ha calculado el nmero de filas se encabezan con las variables enunciativas por orden alfabtico. Estas sern las columnas iniciales, que se dedicaran a la distribucin sistemtica de las combinaciones de los valores de verdad de las variables enunciativas. 3. Confeccin de columnas intermedias. Una vez dispuestas las columnas iniciales, se continua por la derecha desglosando la forma enunciativa principal en formas enunciativas de grado 1, por orden de aparicin, de grado 2, grado 3, etc. 4. Confeccin de la columna final. La ltima columna de la derecha quedar encabezada por la forma enunciativa principal, como resultado de las columnas precedentes.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de ProgramacinEjemplo 6 Sea la forma enunciativa

27

. Aplicando el

mtodo que acabamos de comentar obtenemos la siguiente tabla de verdad: p V V V V F F F F q V V F F V V F F r V F V F V F V F

F F F F V V V V

V V F F F F F F

V F V V V V V V

V F V V V F V V

V F V V V V V V

V V V V V V V V

Una forma alternativa de presentar las tablas de verdad, til cuando manipulamos formas complicadas, es la siguiente: 1. Partiendo de la forma enunciativa considerada, tomamos cada smbolo que intervienen como una columna de la tabla y escribimos todas las atribuciones veritativas posibles debajo de las variables del enunciado. 2. Se insertan debajo de las conectivas los valores de verdad de las diversas partes. Se consideran primero las conectivas de las componentes ms internas y despus las conectivas de las ms externas. 3. Se sigue as, hasta rellenar la columna correspondiente a la forma enunciativa completa.Ejemplo 7 Cuando valoramos la forma enunciativa A del ejemplo anterior con el segundo de

los mtodos obtenemos la siguiente tabla de verdad: V V V V F F F F V V F F F F F F V V F F V V F F V F V V V V V V V F V F V F V F V V V V V V V V V V V V F F F F V V F F V V F F F F V V F F V V V V F F V V F F V F V V V V V V V F V F V F V F

Vctor Alfredo Gallardo Snchez | agosto,2011

28

Lgica de Programacin

Tipos y lenguajes de programacinUn lenguaje de programacin puede verse como un sistema formal dotado de una sintaxis y una semntica. Desde el punto de vista sintctico, los lenguajes de programacin modernos se caracterizan por ser tipificados, es decir, todas las expresiones del lenguaje tienen asociadas un tipo. Todo el mundo admite que el empleo de tipos mejora el diseo de los programas y permite detectar errores de programacin en tiempo de compilacin (por ejemplo, la aplicacin de una funcin sobre un nmero real cuando esa funcin se defini para un argumento de tipo entero). Por consiguiente, un lenguaje de programacin moderno precisa del diseo de un sistema de tipos, constituido por: i. ii. Las reglas gramaticales que caracterizan el lenguaje de las expresiones de tipo, y Un mecanismo que comprueba si las expresiones contenidas en las instrucciones del programa estn bien tipificadas; la comprobacin de tipos suele realizarse en el momento de la compilacin del programa mediante el empleo de reglas de tipificacin, que permiten inferir el tipo de una expresin a partir del tipo de sus constituyentes.

El lenguaje de las expresiones de tipo est compuesto por un conjunto de tipos elementales, tambin denominados bsicos, y un conjunto de operaciones de construccin de tipos que sirven para construir nuevos tipos a partir de los elementales.

Fundamentos matemticosPresentaremos las nociones matemticas bsicas que emplearemos. Introduciremos algunas notaciones bsicas y resultados muy conocidos sobre conjuntos y relaciones de orden. Se espera que estos conceptos sean familiares al lector por lo que no se pretende dar una visin exhaustiva de los mismos. Ms bien la intencin es resumir brevemente las principales nociones, as como fijar una terminologa.Conjuntos

Un conjunto es una coleccin de objetos. Los objetos que forman un conjunto se denominan elementos o miembros del conjunto. Designaremos los conjuntos mediante letras maysculas: A, B, C, etc. Si es preciso, tambin utilizaremos subndices: A1, A2, A3, etc. Escribimos para indicar la pertenencia de un elemento e al conjunto A, y escribimos para indicar el hecho contrario. Conviene aceptar como conjunto a la coleccin vaca de objetos, que no contienen ningn elemento; a dicho conjunto se le denomina conjunto vaco, y se le denota mediante el smbolo . Es habitual describir los conjuntos listando sus elementos entre llaves {, y }.Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

29

Ejemplo 8 El conjunto de las letras minsculas del alfabeto se representa como:

{

}.

Otra forma de expresar los conjuntos es asocindoles alguna propiedad caracterstica mediante el operador de construccin de conjuntos .Ejemplo 9 El conjunto de las letras minsculas del alfabeto tambin puede representarse de

la siguiente forma: { }

Sin necesidad de enumerar todos y cada uno de sus elementos. La expresin anterior tiene la siguiente lectura: el conjunto de elementos x, tal que x es una letra minscula del alfabeto. Desde esta perspectiva, el conjunto vaco est caracterizado por una propiedad P que no cumple ningn elemento. Por convencin, cualquier objeto puede ocurrir como mucho una vez en un conjunto, de forma que un conjunto no contiene elementos duplicados. El orden en el que aparecen los objetos tampoco cuenta. Un conjunto de singular importancia es el de los nmeros naturales, del que describiremos algunas propiedades ms adelante. Por el momento introduciremos una serie de notaciones. Denotaremos el conjunto de los nmeros naturales mediante el smbolo . El segmento inicial { } del conjunto de los nmeros naturales positivos se denota por . Cuando , entonces . El conjunto de los nmeros enteros { } se denota por . El conjunto de los nmeros reales se denota por . Decimos que es un subconjunto de un conjunto o que est incluido en , y escribimos , si todo elemento de es un elemento de . Empleamos la notacin para indicar que S no est incluido en C. Decimos que un conjunto es igual a otro , y escribimos , si y ; esto es, y contienen los mismos elementos.Ejemplo 10 Dado el conjunto

, est constituido por: {

{ } de valores booleanos. El conjunto de las partes de , { } { } { }}.

Un medio para la construccin de conjuntos es el producto cartesiano de conjuntos. La idea de producto cartesiano descansa sobre el concepto de n-tupla (ordenada). Una n-tupla es . Decimos que una coleccin ordenada de elementos, que denotamos por es el primer componente, es el segundo componente,, y es el n-simo componenteVctor Alfredo Gallardo Snchez | agosto,2011

30

Lgica de Programacin

de n-tupla. En una n-tupla el orden s importa, esto quiere decir que si y slo si , para todo . El producto cartesiano de los conjuntos , que denotamos por , es el conjunto de n-tuplas { }. Denotamos tambin por el producto cartesiano formado por las n-tuplas de elementos pertenecientes a un mismo conjunto .Ejemplo 11 Dado el conjunto

{

constituido por los pares: {

} de valores booleanos. El producto cartesiano }.

est

Mtodos de demostracinProposiciones especiales, argumentos y leyes de inferencia No existe forma de ensear a un estudiante como se resuelves los problemas en matemticas, y la morfologa matemtica no se encuentra exenta de esto. A lo ms, se puede dar una serie de tcnicas bsica como herramienta para que cada individuo decida la manera de utilizarlas en la consecucin de alguna solucin. En general, resulta provechoso presentar ejemplos de cmo se han resuelto algunos problemas tipo, para que el alumno adquiera cierta experiencia; sin embargo, ser su capacidad e imaginacin la parte decisiva para su formacin dentro de estas reas. La mayor parte del contenido de estos prrafos se basa en el planteamiento y la demostracin de teoremas con base en la enunciacin de ciertas proposiciones llamadas definiciones. A pesar de que estos trminos han sido utilizados en toda clase de libros tcnicos, ampliamente, consideramos importante detenernos un poco a hablar sobre cmo y cundo se deben usar, as como de los mtodos ms comunes para demostracin de teoremas. Existe un grupo de proposiciones especiales, las cuales se han denominado de forma especfica por su funcin como sigue: Definicin. Es una proposicin que se asume como cierta sin cuestionamiento. En general, se introducen definiciones conforme se requieren, para hacer operativa una parte de cierta teora. Axioma. Es una proposicin que se asume como cierta sin cuestionamiento. (Por ejemplo una definicin), y que adems forma parte de un conjunto de proposiciones (axiomas tambin) a partir de las cuales es posible construir una teora completa. Teorema. Es una proposicin que cumple con el requisito de tener una(s) demostracin(es) de ser tautologa. Lema. Es un teorema simple que sirve para comprobar que otro teorema sea una tautologa. Un lema se demuestra como paso intermedio en la consecucin de la demostracin de un teorema. Cuando se efecta la demostracin de un lema, no nos interesa el lema en s, sino la posterior demostracin de un teorema principal. Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

31

Corolario. Es un teorema que surge como consecuencia directa de (y se encuentra ntimamente ligado a) otro teorema. Conjetura. Es una proposicin la cual todava no cuenta con una demostracin de ser tautologa. En la bibliografa se ha nombrado indistintamente a los teoremas y a las conjeturas con el sustantivo de proposicin. Esta prctica es completamente errnea, pues a pesar de que todas las entidades lgicas mencionadas son proposiciones, el sustantivo debe reflejar la funcin o relevancia de una proposicin dentro de una teora. De aqu se concluye que existen tres grandes grupos de proposiciones en una teora: las definiciones (con los axiomas como caso particular), que son proposiciones que no requieren demostracin; los teoremas, que son proposiciones que requieren y tienen demostracin; y las conjeturas, que son proposiciones que requieren, pero no cuentan, con una demostracin. Demostracin. La demostracin de teoremas es el proceso mediante el cual se verifica que una proposicin es una tautologa. Una vez alcanzado este proceso, la proposicin en cuestin recibe el nombre de teorema (o el de su clasificacin especfica). Una demostracin recibe el nombre de prueba. Una herramienta poderosa para la demostracin de teoremas es el uso de reglas (o leyes) de inferencia. Una regla de inferencia es un tipo especial de teorema (en general una proposicin compuesta) en el sentido que debe demostrarse que es una tautologa, pero se tiene expresado de una forma completamente genrica (una especie de metalenguaje) que no depende de la forma especfica de las proposiciones involucradas. Adems, una regla de inferencia sigue la estructura de un argumento, que consta de la conjuncin de cierto nmero de hiptesis y de la formulacin de una tesis, como se muestra a continuacin: Hiptesis 1 Hiptesis 2 Hiptesis 3 Hiptesis n Tesis Una proposicin de este estilo, para poder llamarse argumento, requiere ser una tautologa. Estas reglas de inferencia sirven como bloques de construccin en la demostracin de teoremas y en la generacin de mtodos de demostracin. A continuacin se dan ejemplos de las reglas de inferencia ms usuales con sus nombres, y a partir de ellas se formularn algunos mtodos de demostracin. Modus ponens [ ] Vctor Alfredo Gallardo Snchez | agosto,2011

32

Lgica de Programacin

Modus Tollens [ Adicin Simplificacin Silogismo hipottico [ Silogismo disyuntivo [ ] ] ]

Es importante hacer notar que en un argumento (o ley de inferencia) no es de importancia la veracidad de las proposiciones involucradas. Sin embargo, la conclusin ser verdadera siempre que todas y cada una de las hiptesis lo sean. Estas reglas de inferencia (o argumentos) son bloques bsicos para construir otros argumentos ms elaborados tomndolos como pequeos teoremas que sirven para sustitucin de proposiciones. De hecho. La demostracin de un teorema se puede ver como la elaboracin de un argumento y cualquier argumento genrico se puede considera una regla de inferencia. Cuando una proposicin que tiene la forma de argumento no es una tautologa, recibe el nombre de falacia (no es argumento) y no puede considerarse como regla de inferencia aun siendo genrico. Adems de las formas bsicas de demostracin, debemos conocer algunas de las pruebas de demostracin, las cuales se enunciarn a continuacin: Prueba por vacuidad En algunos casos, para demostrar que una implicacin es verdadera, basta demostrar que la hiptesis siempre es falsa (recurdese la tabla de verdad de la implicacin). Prueba trivial Si la tesis en una implicacin es siempre verdadera, la implicacin tambin lo ser. Es importante resaltar que nicamente las demostraciones que toman esta forma pueden apelarse como triviales; en caso de usar la palabra trivial como demostracin sin que se tenga este esquema, se incurre en un abuso de lenguaje. Es prctica comn (pero incorrecta) decir que una demostracin es trivial por ser muy simple. Prueba directa Dentro de una demostracin por el mtodo directo, se suele incurrir a otros esquemas de demostracin. nicamente daremos una versin especfica de prueba directa para las implicaciones como sigue: si a partir de la suposicin de que la hiptesis de una implicacin es cierta, y por media Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

33

de equivalencias, sustituciones, argumentaciones o reglas inferencia y usando proposiciones que se saben verdaderas tales como las definiciones se llega a tener como resultado a la tesis, se puede concluir que la implicacin es correcta. Este proceso es vlido intuitivamente pues indica que si la hiptesis es verdadera, nunca ocurrir el caso de que la tesis sea falsa, lo cual resulta suficiente para afirmar la veracidad de la implicacin. Prueba indirecta No siempre es posible demostrar en forma directa una implicacin. Sin embargo, siempre se puede recurrir al uso de la siguiente equivalencia:

Y utilizar el mtodo directo en la demostracin de sigue:

, quedando entonces el mtodo como

Prueba por contradiccin En su forma genrica, un argumento de contradiccin se basa en mostrar que el negado de una proposicin nos lleva a algo siempre falso (es decir contradictorio a algo siempre verdadero), lo que obliga a que la proposicin en cuestin sea verdadera. Esta forma se ve como sigue:

Este argumento, sin embargo, se puede llevar a diferentes formas equivalentes como por ejemplo: ( O el caso de uso ms frecuente: )

Este ltimo caso se apoya en el uso de una proposicin auxiliar que es tautologa, si la negacin de lo que se desea demostrar implica negar tal tautologa, se termina la demostracin. Reduccin al absurdo Cuando la proposicin por demostrar es una implicacin, se obtiene un caso de contradiccin interesante, a la cual se le ha llamado reduccin al absurdo. Existe una enorme confusin dentro de la comunidad matemtica al respecto de este hecho. El mtodo de reduccin al absurdo se indica como sigue: hallar una proposicin x tal que: [ ] [ ]

Vctor Alfredo Gallardo Snchez | agosto,2011

34

Lgica de Programacin

Es equivalente: ( )

El mtodo de induccin Antes de enunciar el mtodo de mostracin ms conocido como induccin, se mencionar un principio de gran relevancia, que ser de enorme utilidad para demostrar la validez del proceso inductivo como mtodo de demostracin. Axioma. Principio del buen orden Todo conjunto no vaco de enteros no negativos tiene un elemento mnimo. El argumento en el cual se basa el mtodo inductivo de demostracin es el siguiente: [ [ ] ] [ ]

En este argumento puede sustituirse por , o por cualquier otro conjunto infinito que se pueda numerar. Si se reemplaza por un subconjunto finito , la validez del argumento de induccin se puede verificar con facilidad.

Sistemas numricosLos sistemas numricos tienen algunas propiedades en comn, contienen un conjunto de reglas, sintaxis y estructura, por lo que se les consideran sistemas formales, no son exclusivos, todos y cada uno de nosotros podemos crear (inventar, hacer) nuestros propios sistemas siempre y cuando se conozcan las estructuras, la sintaxis y hagamos las reglas (que cumplan con las condiciones necesarias), todo depende de la imaginacin con la que contemos y el nivel de abstraccin. Es por tal motivo que los programas de cmputo, dependen del creador, pues expresan su imaginacin para resolver un problema en concreto. Algunas de las propiedades son: nulidad, cerradura, conmutabilidad, asociativa, entre otras. Los sistemas conocidos, son sistemas formales de posicin, porque importa la posicin en la que se encuentre el valor a representar. Se utilizan las reglas de notacin cientfica, la suma, la multiplicacin, los parntesis, la potenciacin, igualdad, la propiedad asociativa, la propiedad conmutativa.

Donde:

representa el valor

en la posicin .

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de ProgramacinTeorema Fundamental de la numeracin

35

Este teorema establece la forma general de construir nmeros en un sistema de numeracin posicional. Primero estableceremos unas definiciones bsicas:: Nmero vlido en el sistema de numeracin. : Base del sistema de numeracin. Nmero de smbolos permitidos en el sistema. ;Un smbolo cualquiera de los permitidos en el sistema de numeracin. : Nmero de dgitos de la parte entera. : Coma fraccionaria. Smbolo utilizado para separar la parte entera de un nmero de su parte fraccionaria. : Nmero de dgitos de la parte decimal.

La frmula general para construir un nmero N, con un nmero finito de decimales, en un sistema de numeracin posicional de base b es la siguiente:

El valor total del nmero ser la suma de cada dgito multiplicado por la potencia de la base correspondiente a la posicin que ocupa en el nmero. Esta representacin posibilita la realizacin de sencillos algoritmos para la ejecucin de operaciones aritmticas.Ejercicio en el sistema decimal

En el sistema decimal los smbolos vlidos para construir nmeros son { } (0 hasta 9, ambos incluidos), por tanto la base (el nmero de smbolos vlidos en el sistema) es diez. En la figura inferior podemos ver el teorema fundamental de la numeracin aplicado al sistema decimal.

Vctor Alfredo Gallardo Snchez | agosto,2011

36

Lgica de Programacin

Los dgitos a la izquierda de la coma fraccionaria representados por dn ... d2 d1 d0 , toman el valor correspondiente a las potencias positivas de la base (10 en el sistema decimal), en funcin de la posicin que ocupan en el nmero, y representan respectivamente al dgito de las n-unidades (10n), centenas (10=100), decenas (10=10) y unidades (100=1), ya que como se ve en el grfico estn colocados en las posiciones n..., tercera, segunda y primera a la izquierda de la coma fraccionaria. Los dgitos a la derecha de la coma fraccionaria d-1, d-2, d-3 ... d-n representan respectivamente al dgito de las dcimas (10-1=0,1), centsimas (10-2=0,01), milsimas (10-3=0,001) y n-simas (10-n) . Por ejemplo, el nmero 1492,36 en decimal, puede expresarse como: 1492/36

As, podemos representar cualquier nmero en notacin cientfica:Ejercicio 2. Represente los nmeros del 0 al 11 del sistema decimal en notacin cientfica.

Nmero en decimal 0 1 2 3 4 5

Notacin cientfica

Nmero en decimal 6 7 8 9 10 11

Notacin cientfica

Nota. Cualquier nmero elevado a la potencia cero es 1. Cualquier nmero multiplicado por cero es cero.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de ProgramacinSistema binario

37

Base: 2 Conjunto: { }

Reglas bsicas: Adicin, sustraccin, multiplicacin, cociente, potenciacin, radicacin y logaritmos. Sintaxis: De acuerdo a las regla que se trate, se tiene una sintaxis particular, es decir, para la suma el operador es + y debe cumplir con la propiedad asociativa, distributiva. Semntica: de acuerdo a la posicin que es encuentra el dgito toma el valor semntico. Estructuras:Sistema octal

Base: 8 Conjunto: { }

Reglas bsicas: Adicin, sustraccin, multiplicacin, cociente, potenciacin, radicacin y logaritmos.Sistema decimal

Base 10 Conjunto: { }

Reglas bsicas: Adicin, sustraccin, multiplicacin, cociente, potenciacin, radicacin y logaritmos.Sistema hexadecimal

Base 16 Conjunto: { }

Reglas bsicas: Adicin, sustraccin, multiplicacin, cociente, potenciacin, radicacin y logaritmos Para convertir un nmero del sistema decimal a un sistema de base , se divide el nmero entre la base y se registra el cociente y el residuo resultante; se divide entre la base y se anotan el nuevo cociente y el nuevo residuo . Este procedimiento se repiteVctor Alfredo Gallardo Snchez | agosto,2011

38

Lgica de Programacin. El nmero equivalente a en el

hasta obtener un cociente igual a cero con residuo sistema con base queda formado as:

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de Programacin

39

II.

Estrategias para la solucin de problemas

Existen varias estrategias para resolver problemas. Muchas veces utilizamos una combinacin de dos ms estrategias para resolver un problema o que podemos solucionarlo de diferentes formas. Puedes enriquecer tus estrategias que se te presentarn con alguna de tu creacin (imaginacin). Cada vez que se presente un ejemplo debes preguntarte: Hay otra manera de hacerlo?, si tu respuesta es afirmativa, procede de la forma que has pensado. A continuacin se describen algunas de estas estrategias. Describir un patrn Tanteo o error Elaboracin de una tabla De atrs hacia adelante Comprobar la respuesta del problema

Describir un patrnEsta estrategia te ayuda a describir algo que ocurre repetidas ocasiones. A veces, un patrn en un problema presenta un comportamiento en el cual la misma cantidad se ha sumado, restado, multiplicado o dividido. En otras ocasiones el patrn no tiene que ver con nmeros, sino con figuras geomtricas, letras o comportamiento. En los problemas (sean numricos o no) es posible descubrir un comportamiento que permite inducir lo que viene despus. Esto significa que se ha encontrado el patrn y con ste se puede llegar a la solucin del problema.Ejemplo 12 Para cada uno de los patrones siguientes, determina los dos trminos que siguen:

a) b) c) d)

1,3,5,7,... 1,-2,3,-4, 1,1,2,3,5,8,13, 3,12,48,192,

Ejemplo 13 Un inversionista observa que, en un periodo de cuatro meses, el valor promedio

mensual de las acciones de una compaa aumenta de la manera siguiente: 34.5, 37,39.5 y 42. De continuar as, a cunto podran ascender el octavo mes?

Vctor Alfredo Gallardo Snchez | agosto,2011

40

Lgica de Programacin

Solucin: Paso 1. Leer el problema hasta comprenderlo. Leer el problema hasta comprenderlo. Se desea el valor de las acciones en el octavo mes, dados que los valores promedios mensuales en los primeros cuatro fueron 34.5, 37, 39.5 y 42.

Paso 2. Desarrollo un plan de accin.

Desarrollo un plan de accin. Se aplicar la estrategia de buscar un patrn. Primero, se determina la diferencia entre los valores consecutivos; de ser una cantidad constante, se utiliza para calcular los valores promedios de los meses: quinto, sexto, sptimo y octavo.

Paso 3. Llevar a cabo un plan.

Llevar a cabo un plan. La diferencia entre cada valor consecutivo durante los primeros cuatro meses fue el valor constante 2.5. Por tanto, el valor promedio de los meses quinto, sexto, sptimo, y octavo ser: 44.5, 47, 49.5, 52, respectivamente.

Paso 4. Comprobar

Comprobar. La diferencia entre cada valor consecutivo durante los primeros cuatro meses fue de 2.5. Por tanto, es razonable esperar que de continuar as (este patrn), el valor promedio de los meses quinto, sexto, sptimo y octavo ser: 44.5, 47, 49.5, 52, respectivamente.

Solucin. El valor promedio esperado de la accin en el octavo mes podra ascender a $52.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de ProgramacinTanteo y error

41

Esta estrategia te ayuda cuando no conoces otra. En esencia, consiste en realizar varios intentos para llegar a la solucin. Mediante esta estrategia algunas personas dan con el resultado despus de varios intentos. Otras lo consiguen a la primera. Es conveniente acompaar esta estrategia con otras que puedan ayudar.Ejemplo 14 Para practicar las habilidades de sumar y restar nmeros cardinales, Cecilia,

maestra de cuarto grado, presenta el siguiente problema de asignacin a sus grupos de estudiantes: Escribe smbolos de suma y resta entre nmero compuestos de los dgitos:

De modo que obtengas 257 como resultado. Los dgitos no se pueden repetir y se tienen que presentar en el mismo orden que aparecen. Solucin: Paso 1. Leer el problema hasta comprenderlo. Leer el problema hasta comprenderlo. Se establece que los nmeros son compuestos, slo hay que usar los smbolos de suma o resta, utilizar los dgitos una vez y seguir el orden en que aparecen.

Paso 2. Desarrollo un plan de accin.

Desarrollo un plan de accin. El plan que conviene utilizar es tantear colocando los smbolos de suma y resta en posiciones diferentes. Se puede usar calculadora o lpiz y papel. Como el resultado tiene tres dgitos, 257, cabe suponer que al menos una cifra tiene tres dgitos y est entre 100 y 300.

Paso 3. Llevar a cabo un plan.

Llevar a cabo un plan. A partir de 359, se pueden agrupar los nmeros en esta forma: 359+10-53=316; entonces esta combinacin no funciona. Luego, se intenta con 105, ya que 910 est muy lejos, y resulta: 35+9+105-53=146; este ejercicio tampoco resulta 257. Por ltimo, se prueba una combinacin con 359 y 105: 359105+3=257; es el arreglo correcto!Vctor Alfredo Gallardo Snchez | agosto,2011

42

Lgica de ProgramacinComprobar. Obviamente se puede ver que las condiciones del problema se cumplen.

Paso 4. Comprobar

Solucin. Las condiciones del problema, se cumplen y el resultado est por dems. Mediante la estrategia de tanteo y error algunas personas dan con el resultado despus de varios intentos. Otras lo consiguen a la primera. En el caso anterior, se hicieron tres intentos antes de dar con la solucin. As pues, es conveniente acompaar esta estrategia con otras que puedan ayudar.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de ProgramacinElaboracin de una tabla

43

Con esta estrategia se puede llevar la cuenta de los nmeros, datos y combinaciones de nmeros en forma organizada. Es importante sealar que en ciertos problemas la informacin que escribes en la tabla no es numrica. Una tabla es un arreglo rectangular de informacin acomodada en filas y columnas. Te ayuda a organizar lo que se conoce y simplifica el trabajo. Particularmente, permite observar los detalles e identificar patrones con ms facilidad. Por esto, es una estrategia que se usa con mucha frecuencia en la resolucin de problemas.Ejemplo 15 En la clase de matemticas de la profesora Duran se estudian los nmero pares e

impares y las reglas de divisibilidad. La profesora pide a sus alumnos que planteen un problema de asignacin que integre algunos de estos conceptos. Jos, uno de los mejores estudiantes, trae este problema y la maestra lo selecciona para discutirlo con el grupo: El nmero misterioso tiene cuatro dgitos, est entre 4180 y 4190. Por lo menos dos de sus dgitos son impares y todos son diferentes. Si la cifra es divisible entre 9, Cul es? Solucin: Paso 1. Leer el problema hasta comprenderlo. Leer el problema hasta comprenderlo. Se busca un nmero que tenga cuatro dgitos que cumpla las condiciones siguientes:1. 2. 3. 4. Estar entre 4180 y 4190 Por lo menos dos dgitos son impares Todos los dgitos son diferentes Es divisible entre 9

Paso 2. Desarrollo un plan de accin.

Desarrollo un plan de accin. Se prepara una tabla para todos los nmeros de 4181 al 4189 hasta hallar el que satisfaga las condiciones. La tabla estar compuesta por las columnas siguientes: una con los nmeros de 4181 al 4189, otra con la clave de dos dgitos impares para escribir si cumple esta condicin, una condicin, una con la condicin de todos los dgitos diferentes y una que exprese la divisibilidad entre 9.

Vctor Alfredo Gallardo Snchez | agosto,2011

44

Lgica de ProgramacinLlevar a cabo un plan.Nmero 4181 4182 4183 4184 4185 4186 4187 4188 4189 Dos dgitos impares Si No Si No Si No Si No Si Dgitos diferentes No Si Si No Si Si Si No Si Divisibilidad entre 9 No No No No Si No No No No

Paso 3. Llevar a cabo un plan.

Paso 4. Comprobar

Comprobar. Observa que el nmero que cumple todos los requisitos del problema es 4185; es decir, aparece un s en todas las claves aplicadas a esta cifra; tiene dos dgitos impares, todos los dgitos son diferentes y al dividir 4185 entre 9 se tiene 465, que es un nmero entero.

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de ProgramacinDe atrs hacia adelante

45

Esta estrategia tambin se conoce como comenzar por el final. Es til cuando tienes que comenzar con la conclusin del problema y trabajar de atrs hacia adelante. Hasta ahora los problemas tienen solucin. Ser siempre as? Por experiencia sabrs que en la vida existen problemas que no tienen solucin o que no est a nuestro alcance; por ejemplo el hecho de saber que hay ms all de la muerte. En otras ocasiones no validamos la informacin necesaria para resolver un problema. Esto no quiere decir que el problema no tenga solucin sino que tienes que buscar la informacin.Ejemplo 16 El manat que cuidaban en el acuario, atrajo a muchas personas. El primer da

acudieron a verlo 80 espectadores menos que el segundo da. El segundo fueron 250 personas menos que el tercero. En ste acudieron 50 ms que el cuarto. Al cuarto da acudieron 500 personas. Cuntos espectadores vieron el manat el primer da? Solucin: Paso 1. Leer el problema hasta comprenderlo. Leer el problema hasta comprenderlo. Se desea determinar el nmero de personas que fueron a ver el acuario en busca del manato el primer da. Se sabe que ese da lo vieron 80 espectadores menos que el segundo, cuando fueron 250 personas menos que el tercero. Durante ste acudieron 50 espectadores ms que el cuarto da en que se presentaron 500. Desarrollo un plan de accin. Este problema se resuelve trabajando de atrs hacia adelante. Como se conoce la cantidad que fue el cuarto da, se determina cuntos fueron el tercero, luego el segundo y por ltimo el primero.

Paso 2. Desarrollo un plan de accin.

Paso 3. Llevar a cabo un plan.

Llevar a cabo un plan. Si se sabe que el cuarto da fueron 500 personasy el tercero 50 ms, cabe concluir que ese da hubo 550 asistentes. Con este dato y el hecho de que el segundo da fueron 250 personas menos que el tercero, se obtiene que la asistencia del segundo da fue de 300 personas. Para determinar la cantidad que acudi el primer da, slo queda restar 80 a la cantidad del segundo. Esto da 220 personas.

Vctor Alfredo Gallardo Snchez | agosto,2011

46

Lgica de ProgramacinComprobar. Este problema se puede revisar invirtiendo el proceso de adelante hacia atrs: si se supone que el primer da fueron 220 personas, segn las condiciones del problema, el segundo da fueron 80 ms, o sea 300. El tercer da acudieron 250 ms que el segundo; es decir 550. Sin embargo, el cuarto da fueron 50 menos que el tercero. Lo cual coincide con el hecho de que el cuarto da acudieron 500 personas.

Paso 4. Comprobar

Vctor Alfredo Gallardo Snchez | agosto, 2011

Lgica de ProgramacinComprobar la respuesta del problema

47

Hemos visto que el ltimo paso del mtodo cientfico, es comprobar la solucin obtenida y que en algunos casos basta repetir el proceso para resolver el problema y ver si la solucin es la misma o estimar la respuesta y ver si la que obtuvimos est razonablemente cerca. Sin embargo, a veces se requiere todo un proceso de comprobacin. Algunos ejemplos simples son determinar si la hora del reloj es la correcta, ver si 270 es el producto de 15 a 17. Otros casos menos simples seran los ejemplos de esta seccin si tuvieras que revisar las soluciones. A pesar de que la prctica ms comn es estimar resolver el problema y comparar la solucin obtenida con la dada, hay otras que slo se utilizan cuando se han visto en situaciones similares. Estudia el ejemplo siguiente con detenimiento.Ejemplo 17 En la eleccin para el presidente de la clase graduada, que tena cinco

candidatos, se registraron 320 votos en total. El margen de votos del primero sobre cada uno de los dems fue de 9, 13, 29 y 45 votos. Comprueba si la respuesta es que el primero obtuvo 85 votos; el segundo, 76; el tercero, 63; el cuarto 56, y el quinto, 40. Solucin: Paso 1. Leer el problema hasta comprenderlo. Leer el problema hasta comprenderlo. Se lista la informacin que da el problema y se tienen claro qu hay que comprobar. Informacin que provee el problema:a) b) c) d) e) f) Hay cinco candidatos Se emitieron 320 votos El primero obtuvo 9 votos ms que el segundo Tambin tuvo ms 13 que el tercero Asimismo, obtuvo 29 ms que el cuarto Logr 45 ms que el quinto

Paso 2. Desarrollo un plan de accin.

Desarrollo un plan de accin. En este problema convienen examinar si se satisfacen las claves aplicando operaciones de suma y resta.

Paso 3. Llevar a cabo un plan.

Llevar a cabo un plan. 85+76+63+56+40=320 es el total de votos 85-76=9 85-63=22 85-56=29 Vctor Alfredo Gallardo Snchez | agosto,2011 85-40=45

48

Lgica de ProgramacinComprobar. La respuesta da la votacin de cinco candidatos y el total de votos es 320; por lo tanto, se cumple la condicin b. La diferencia de votos del primero con el segundo es de 9, con lo cual se satisface la condicin c. La diferencia de votos del primero con el tercero es de 22 votos; por lo tanto, no se cubre la condicin d. La respuesta dada no es la solucin al problema. Basta que una de las condiciones no se cumpla para rechazar la respuesta.

Paso 4. Comprobar

Hasta aqu se han mostrado algunas de las tcnicas ms utilizadas para la resolucin de problemas, no son las nicas y depende la experiencia que se tenga para el anlisis de problemas, desarrollo de alternativas de solucin y por supuesto dar la solucin de forma clara, precisa y verdadera. Adems de la imaginacin, la creatividad y por supuesto el nivel de abstraccin (es decir, hacer un modelo de la realidad en forma esquemtica, en forma de diagramas, planos, etc.).

Vctor Alfredo Gallardo Snchez | agosto, 2011