El Álgebra de Boole dentro de los módulos SIMM y SIMR de los ciclos de grado superior ASI y DAI Isabel López López I.E.S Villablanca. Villablanca,79 (28032 Madrid) E-mail: isabel.lopezlopez@educa.madrid.org Resumen. Se propone la impartición del Álgebra de Boole como nexo entre los sistemas de numeración y los fundamentos de sistemas informáticos dentro de los módulos Sistemas Informáticos Monousuario y Multiusuario (SIMM) y Sistemas Informáticos Multiusuario y en Red (SIMR) pertenecientes a los ciclos de grado superior Administración de Sistemas Informáticos (ASI) y Desarrollo de Aplicaciones Informáticas (DAI). Con ello se pretende justificar la necesidad del estudio de los diferentes sistemas de numeración, especialmente el binario, y hacer comprender al alumno cómo es posible procesar la información expresada en código binario empleando circuitos de conmutación, de manera que el ordenador pueda ejecutar instrucciones lógicamente y realizar cálculos aritméticos sencillos. Palabras clave. Álgebra de Boole, Puertas lógicas, ASI (Administración de Sistemas Informáticos), DAI (Desarrollo de Aplicaciones Informáticas), SIMM (Sistemas Informáticos Monousuario y en Red), SIMR (Sistemas Informáticos Multiusuario y en Red), Programación Didáctica, Unidad de Trabajo. 1 Introducción La universalización de la informática demanda en la actualidad una nueva clase de técnicos no titulados sin los cuales no es posible desarrollar de manera eficaz y eficiente los procesos productivos, ya sea de pequeñas y medianas empresas (PYMES), o de grandes empresas. Como respuesta a esta demanda real del mercado de trabajo, surgen los ciclos de grado superior en informática, dedicados a proporcionar la formación que requieren estos nuevos perfiles profesionales. De esta manera, la formación profesional cumple la misión encargada por la sociedad de proporcionar profesionales que garanticen la productividad y la competencia; permitiendo, asimismo, que aquellos alumnos con clara vocación profesional informática puedan competir con éxito para conseguir su inserción laboral. Los ciclos formativos de grado superior Administración de Sistemas Informáticos, ASI, (R.D. 1660/1994; R. D. 1675/1994) y Desarrollo de Aplicaciones Informáticas, DAI, (R. D. 1661/1994; R. D. 1676/1994) tienen una vocación eminentemente práctica, siendo su objetivo formar profesionales técnicos en informática, que sean capaces de configurar, montar, mantener y administrar sistemas informáticos (ASI); y capaces, también, de afrontar tareas de programación como desarrolladores (DAI). La formación práctica debe ser un objetivo prioritario, si se piensa en las tareas a las que se enfrentará el alumno una vez finalizados sus estudios. Sin embargo, el carácter de la informática obliga a que algunos aspectos del currículum del técnico deban ser, forzosamente, de carácter conceptual. Si ello 1 se descuidara, en aras de una actuación puramente procedimental, la operatividad de los técnicos así formados no iría más allá de la última versión de software instalada en las aulas de informática del centro. El presente trabajo se dirige a replantear la impartición de uno de los aspectos arriba señalados, dentro de los módulos de Sistemas Informáticos Monousuario y Multiusuario SIMM, y Sistemas Informáticos Multiusuario y en Red, SIMR, de los ciclos formativos de grado superior ASI y DAI. Concretamente, el objetivo es estructurar los contenidos introduciendo unas pequeñas nociones de Álgebra de Boole que permitan explicar el funcionamiento básico de las puertas lógicas, ya que éstas son los “ladrillos” con los que se construyen los sistemas de conmutación de la Unidad Central de Proceso (CPU) del ordenador. De este modo, la conexión entre los contenidos de los módulos SIMM (Muñoz, 2006; Raya y otros, 2007) y SIMR (Muñoz, 2006; Raya y otros, 2007) dedicados a “fundamentos de sistemas informáticos” y los relativos a “sistemas de numeración”, queda perfectamente justificada; sobre todo, en lo que respeta al sistema binario. Pero más importante es que el alumno llegue a comprender por qué la codificación binaria de la información permite al ordenador realizar tanto juicios lógicos como cálculos numéricos. También se propone complementar los nuevos contenidos teóricos con el diseño de actividades prácticas (Ballesta, 1996; Recio y otros, 2005) a realizar en el laboratorio docente o en el aula de informática, con el objetivo de que el alumno simule virtualmente y construya dispositivos de conmutación. 2 Álgebra de Boole y puertas lógicas: ¿Por qué son digitales los ordenadores? Históricamente, desde Aristóteles (384-322 a.C.) hasta Leibniz (1646-1717), siempre se creyó que sería posible operar con los razonamientos lógicos siguiendo un formalismo puramente matemático. Hubo que esperar a que el matemático inglés George Boole (1815-1864) publicara en 1854 su obra “Investigación sobre las leyes del pensamiento” (Boole, 1982), para poder establecer lo que, en sus propias palabras, era “un razonamiento universal expresado en formas simbólicas y regido por leyes, las cuales tienen su último acomodo en la mente humana” (discurso pronunciado en el Queen’s Collage en 1851). Es evidente, desde la perspectiva actual, que dicha sistematización del razonamiento humano ha permitido que los ordenadores puedan “razonar lógicamente”. Como ejemplo de los avances anteriores al trabajo de Boole se puede mostrar cómo Leibniz expresaba matemáticamente el silogismo: “Si todo x es y, y todo y es z, entonces todo x es z”. Si la expresión “todo x es y” se formaliza como el cociente “ x / y ”, el silogismo se obtiene como resultado del álgebra de los números racionales. En efecto: x y x ⋅ = y z z (1) Sin embargo, Leibniz no consiguió avanzar más allá de estas tentativas iniciales. La idea de Boole fue 2 introducir el “producto” y la “suma” de proposiciones con unas leyes algebraicas diferentes a las de los números racionales, de manera que los razonamientos pudiesen formalizarse como operaciones matemáticas. De este modo, esa nueva álgebra de proposiciones, actualmente denominada Álgebra de Boole, permitiría construir razonamientos “calculando” de manera análoga al álgebra de los números racionales. Al proceder de este modo, Boole introduce de manera implícita el concepto moderno de estructura algebraica. El silogismo arriba considerado fue resuelto por Boole proponiendo que “todo x es y” se expresase como el producto booleano “ x = xy ”, y que dicho producto fuese asociativo. De este modo, en lugar de la ecuación (1) se tiene: x = xy = x ( yz ) = ( xy ) z = xz (2) es decir, “ x = xz ”; o lo que es lo mismo, “todo x es z”. Además, el Álgebra de Boole se aplica a proposiciones lógicas, y éstas son verdaderas o falsas de manera excluyente. Por tanto, aplicando las leyes booleanas, se podrán construir nuevos enunciados lógicos que serán verdaderos o falsos en función de la verdad o falsedad de las proposiciones que los integren. Fijándose en este hecho, el matemático estadounidense Claude Shannon (1916-2001) estableció, en 1939, el paralelismo entre las reglas de conmutación de los circuitos compuestos de relés electromecánicos, y las operaciones formales con elementos lógicos. Un relé opera como un conmutador (interruptor) que puede estar “cerrado” o “abierto”. La idea era considerar un relé cerrado como un elemento lógico verdadero, y uno abierto como falso (siendo arbitrario el convenio: cerrado-verdadero y abierto-falso). De este modo se pudo establecer la analogía entre los estados de conmutación de los sistemas de relés y las tablas de verdad que definen las operaciones booleanas. Para ilustrar dicha analogía considérese, por ejemplo, la sentencia “y” enunciada como: “El coche es blanco y tiene motor diésel” Esta sentencia está formada por la conjunción de la proposición “x1”: “El coche es blanco” y la proposición “x2”: “El coche tiene motor diésel” En la actualidad las operaciones booleanas producto y suma se denotan como “⋅” y “+”, respectivamente. El producto expresa la conjunción lógica; y la suma, la disyunción. Por tanto, la sentencia “y” es el resultado de la operación booleana y = x1 ⋅ x2 Asimismo, la operación lógica y = x1 ⋅ x2 es equivalente al sistema de conmutación que se muestra en la Fig. 1, donde un “1” representa la aplicación de cierta tensión eléctrica aplicada en cualquiera de las entradas x1 o x2, y un “0” la ausencia de tensión. Por tanto, un “1” o un “0” como valores de “y” indican, respectivamente, tensión o ausencia de tensión en la salida del dispositivo. 3 Fig. 1 Circuito de conmutación para la operación booleana y = x1 ⋅ x2 . En efecto, si se examina la validez lógica del enunciado “y”, se observa que sólo será verdadero si el coche es blanco (“x1” verdadero) y su motor es diésel (“x2” verdadero). Por tanto, si “1” equivale a verdadero y “0” a falso, sólo se tendrá y = 1 cuando simultáneamente x1 = 1 y x2 = 1 ; y se tendrá y = 0 cuando x1 = 0 y x2 = 0 , x1 = 1 y x2 = 0 , y viceversa. Un dispositivo de conmutación como el de la Fig. 1 recibe el nombre de puerta lógica. Se denomina tabla de verdad de la puerta lógica a la tabla de estados de conmutación que define completamente el funcionamiento de la puerta lógica (véase la Fig.1). En la actualidad, las puertas lógicas no se construyen con relés electromecánicos, sino con transistores de estado sólido, generalmente integrados en microchips; y. los estados “1” y “0” se corresponden con ciertos valores fijos de tensión eléctrica en las entradas y salidas. Por ejemplo: 5 voltios indican un “1” y voltaje nulo indica un “0”. Desde un punto de vista puramente matemático, el producto booleano “⋅” es una operación definida en el conjunto B = {0,1} (conjunto de Boole) de acuerdo a la tabla operacional que se muestra en la Fig. 1. Como allí puede observarse, la regla booleana para la multiplicación es la misma que la de los números naturales. El Álgebra de Boole además incluye la operación “+” o “suma booleana”, equivalente a una disyunción lógica. En efecto, siguiendo con el ejemplo del coche, la frase “El coche es blanco o tiene motor diésel”, sería una proposición “z” cuya expresión booleana sería z = x1 + x2 . Ahora z será cierta cuando se dé una de las siguientes condiciones: x1 es cierta y x2 es falsa, x1 es falsa y x2 es cierta, o ambas son ciertas. La puerta lógica asociada a la suma booleana se muestra en la Fig. 2, donde se puede observar la correspondiente tabla de verdad. En dicha tabla se puede apreciar que la suma booleana es una operación definida en el conjunto de Boole que no sigue la regla de la suma de números naturales, ya que “1+1=1”. 4 Fig.2 Circuito de conmutación para la operación booleana y = x1 + x2 . Para recoger el hecho lógico de que toda proposición puede ser negada, se introduce la operación booleana denominada complementación. Formalmente, si x es cierta proposición, por ejemplo “hoy es lunes”, su negación “hoy no es lunes” se denota por x . La puerta lógica correspondiente se muestra en la Fig. 3. Fig. 3 Circuito de conmutación para la complementación lógica. En las figuras 1, 2 y 3 se han representado gráficamente las puertas lógicas siguiendo el convenio internacionalmente más extendido (ANSI 432.14, IEEE Std. 91), debiendo tenerse en cuenta la posibilidad de que otros autores utilicen símbolos diferentes. En el contexto técnico, las puertas lógicas de las figuras 1, 2 y 3 reciben los nombres de puerta AND, puerta OR y puerta NOT, respectivamente. También es habitual decir que dichas puertas implementan funciones lógicas: función AND (producto booleano), función OR (suma booleana) y función NOT (complementación). Aunque no poseen el mismo carácter fundamental que las anteriores, también suelen introducirse las puertas NAND, NOR y OR-Exclusiva (Fig. 4). La función NAND implementa la negación del producto lógico y la NOR, la negación de la suma. La puerta OR-Exclusiva aplica la disyunción estricta: “O el coche es blanco, o tiene motor diésel”, que será verdadera si se cumple solamente uno de los términos de la disyunción. Fig. 4 Puertas lógicas NAND, NOR y OR-Exclusiva. Los sistemas de conmutación pueden reproducir esquemas de la lógica deductiva, lo que permite implementar en los ordenadores operaciones de razonamiento que son básicas para el control de su funcionamiento. Dichos sistemas de conmutación constituyen el corazón de la Unidad Lógica incluida en la CPU. 5 Asimismo, la posibilidad de expresar los números en forma binaria y la flexibilidad del álgebra booleana permiten implementar, por medio de puertas lógicas, las operaciones matemáticas en la Unidad Aritmética de la CPU ordenador. Por ejemplo: para sumar dos números, se pueden combinar varios circuitos de conmutación cuyas entradas sean “1” o “0” según los dígitos binarios de los sumandos, y cuyas salidas entreguen una sucesión binaria que codifique el resultado de la operación. El Álgebra de Boole, por tanto, proporciona las reglas que deben guiar la construcción de las redes de conmutación del ordenador para que éste pueda operar con lógica y realizar cálculos aritméticos. Podría decirse que las leyes booleanas constituyen el “software básico”, en tanto que estructura lógicomatemática; mientras que los transistores de conmutación serían el “hardware básico”, al ser los componentes físicos elementales. 3 Funciones lógicas y circuitos de conmutación Desde el punto de vista informático, los axiomas y teoremas del Álgebra de Boole permiten codificar funciones lógicas de gran complejidad para implementar procedimientos de razonamiento o cálculos aritméticos por medio de la conmutación de los millones de transistores que integran la CPU. Buscando la analogía con los lenguajes de alto nivel, las funciones lógicas serían producto del “lenguaje de programación” definido por los axiomas y teoremas booleanos. Como toda teoría matemática bien establecida, el Álgebra de Boole se define por una serie de axiomas relativos a las operaciones internas “+” y “⋅” definidas en el conjunto B = {0,1} . Dichos axiomas se recogen en la Tabla 1 Tabla 1 Axiomas del Álgebra de Boole Axioma 1 ∀a , b ∈ B , a + b = b + a y a ⋅ b = b ⋅ a (Conmutatividad: las disyunciones o conjunciones no dependen del orden en que se expresen.) Axioma 2 El “0” es el elemento identidad de la suma: ∀a ∈ B, a + 0 = 0 + a = a (Si un término es falso, el otro determina la verdad o falsedad de una disyunción.) El “1” es el elemento identidad del producto: ∀a ∈ B, a ⋅1 = 1 ⋅ a = a (Si un término es verdadero, el otro determina la verdad o falsedad de una conjunción.) Axioma 3 ∀a, b ∈ B, a + ( b ⋅ c ) = ( a + b ) ⋅ ( a + c ) y a ⋅ ( b + c ) = ( a ⋅ b ) + ( a ⋅ c ) (Propiedad distributiva de la disyunción respecto de la conjunción y viceversa.) Axioma 4 ∀a ∈ B, existe un elemento a , denominado complemento de a , tal que: a + a = 1 y a ⋅ a = 0 ( a + a = 1 indica que toda proposición o es cierta o es falsa, y a ⋅ a = 0 que toda proposición no puede ser cierta y falsa simultáneamente) Partiendo de los axiomas del cuadro anterior y siguiendo el correspondiente proceso deductivo, se 6 obtienen los teoremas fundamentales del Álgebra de Boole que se muestran en la Tabla 2. Tabla 2 Teoremas fundamentales del Álgebra de Boole Teorema 1. Idempotencia ∀a ∈ B, a = a + a y a = a ⋅ a Teorema 2.Identidad ∀a ∈ B, a + 1 = a y a ⋅ 0 = 0 Teorema 3. Absorción ∀a, b ∈ B, a + a ⋅ b = a y a ⋅ (a + b) = a Teorema 4. Asociatividad ∀a, b, c ∈ B, a + ( b + c ) = ( a + b ) + c y a ⋅ ( b ⋅ c ) = ( a ⋅ b ) ⋅ c Teorema 5. Unicidad del complementario ∀a ∈ B, a es único. Teorema 6. Leyes de Morgan ∀x1 , x2 ,..., xn ∈ B, x1 + x2 + ... + xn = x1 ⋅ x2 ⋅ ... ⋅ xn y x1 ⋅ x2 ⋅ ... ⋅ xn = x1 + x2 + ... + xn Con estos elementos deductivos se pueden manejar formalmente expresiones algebraicas del tipo: y = f ( x1 , x2 ,..., xn ) (3) donde y es el elemento de B resultado de aplicar la función lógica f (⋅) sobre los n elementos x1 , x2 ,..., xn . Por ejemplo, sea la función lógica f ( x1 , x2 , x3 ) = x1 ⋅ x3 + x2 ⋅ x3 (4) Si se aplica el axioma 3 (distributividad), puede manipularse formalmente la expresión (4), consistente en una suma cuyos sumandos son sendos productos, y obtenerse la siguiente función lógica equivalente: f ( x1 , x2 , x3 ) = ( x1 + x2 ) ⋅ x3 (5) formada por el producto lógico de dos términos, siendo uno de ellos una suma. En cualquier caso, una función lógica f (⋅) es una función matemática definida sobre el conjunto B = {0,1} . Por tanto, a medida que las variables independientes booleanas x1 , x2 ,..., xn vayan tomando valores 0 ó 1, se irán obteniendo los diferentes valores, 0 ó 1, de la variable dependiente y . Como ejemplo, en la Tabla 3 se muestra la tabla de verdad de la función lógica (4). Dicha tabla es también la de la función lógica (5), por ser (4) y (5) expresiones equivalentes. 7 Tabla 3 Tabla de verdad de f ( x1 , x2 , x3 ) = x1 ⋅ x3 + x2 ⋅ x3 En la práctica, para diseñar un circuito de conmutación que permita a un ordenador realizar una operación lógica o un cálculo aritmético binario, debe comenzarse por establecer la función lógica correspondiente. Para escribir dicha función puede bastar una formalización algebraica, o puede partirse de una tabla de verdad de la que se acaba obteniendo la expresión correspondiente. Una vez se dispone de la expresión algebraica de la función lógica, se puede dibujar el esquema del circuito de conmutación traduciendo las operaciones booleanas elementales de suma, producto y complementación en términos de asociación de puertas lógicas OR, AND y NOT. Por ejemplo, la función lógica (4) se traduce en el circuito (a) que se muestra en la Fig. 5. Fig. 5 (a) y (b) implementan las funciones (4) y (5) respectivamente. Como ya se ha visto, la aplicación de la propiedad distributiva permite transformar la función lógica (4) en su equivalente (5). Esta operación formal conduce al circuito lógico (b) que se muestra en la Fig. 5. Es interesante observar que ambos circuitos, (a) y (b), son constructivamente distintos, pero lógicamente equivalentes. Lo que indica un paso más en la aplicación del Álgebra de Boole: la optimización del diseño de los circuitos de conmutación. Véase cómo el circuito (b) de la Fig. 6 se construye con tres puertas lógicas (una puerta NOT, una AND y una OR), mientras el (a) necesita cuatro (una puerta NOT, dos AND y una OR). 4 El Álgebra de Boole en los módulos SIMM y SIMR de los ciclos ASI y DAI Dentro de los ciclos de grado superior de ASI y de DAI, se incluyen, respectivamente, los módulos: SIMM, y SIMR. Ambos módulos tienen como objetivo dar una base de conocimiento y aplicaciones en lo referente a los sistemas operativos y las redes informáticas. En el caso del ciclo ASI, se tratan los diferentes tipos de sistemas operativos mono y multiusuario; y en el ciclo DAI, sólo los sistemas 8 operativos multiusuario, incluyendo también los sistemas operativos en red. En dichos módulos se enseña a los alumnos los diferentes sistemas de codificación de la información, con especial atención a la expresión de cantidades numéricas en diferentes sistemas de numeración, haciendo hincapié en el sistema binario. Sin embargo, en ningún momento se justifica el porqué de tal interés, más allá de invocar vagamente que el funcionamiento interno de los ordenadores se reduce básicamente a “unos y ceros”. De hecho, un alumno inquisitivo podría cuestionar la necesidad de abordar el estudio de una materia tan aparentemente desconectada del resto del temario; ya que, tras el código binario, se suele comenzar con los aspectos de aplicación concreta tanto de hardware como de software. Alguien podría defender que la codificación en diferentes sistemas de numeración es necesaria para definir variables numéricas en ciertos lenguajes de programación de alto nivel, pero ello no justificaría el énfasis dado a la codificación binaria como “lenguaje último” del ordenador. La tesis en torno a la que gira el presente trabajo es que la introducción de un tema de Álgebra de Boole implementada con puertas lógicas, después de haberse estudiado la codificación binaria, hace ver al alumno de manera patente cómo se procesan de manera automática los “unos y ceros” para que el ordenador pueda ejecutar sentencias lógicas elementales o realizar operaciones aritméticas sencillas. Es decir, no sólo el Álgebra de Boole permite entender la base de la lógica interna con la que el ordenador puede llegar a construir complicadas instrucciones de control, sino que también permite entender cómo un procedimiento basado en una lógica de dos estados (“V”, verdadero; “F”, falso) conduce a un algoritmo de cálculo aritmético, si los números se codifican en binario y los dígitos “1” y “0” se hacen corresponder con los estados “V” y “F”, respectivamente. Por un lado, el Álgebra de Boole permite aplicar criterios lógicos de verdad o falsedad traduciendo dichos estados a valores numéricos y las inferencias lógicas a operaciones matemáticas abstractas. Por otro lado, el Álgebra de Boole también permite efectuar operaciones aritméticas, si previamente se traducen los números naturales a código binario. En síntesis: los ordenadores “razonan” y calculan gracias a flujos de bits (“unos y ceros”) que discurren por la CPU gobernados por el Álgebra de Boole. Además de las razones anteriores, el conocimiento del Álgebra de Boole aporta una visión unificada y coherente de los “operadores booleanos”, operadores que el alumno deberá conocer y aplicar en otros contextos que van desde los lenguajes de programación a las opciones de búsqueda avanzada en Internet, pasando por las consultas a bases de datos. Para conseguir los objetivos cognitivos arriba expuestos, se propone incluir en la una Unidad de Trabajo denominada “Álgebra de conmutación”, dentro de la Programación Didáctica de los módulos SIMM y SIMR de los ciclos de grado superior ASI y DAI. Dicha unidad se estructura en: Conceptos, Procedimientos, Actividades de enseñanza y aprendizaje, Actividades complementarias, y Criterios de evaluación. Conceptos 9 1. Introducción Presentación del contexto de aplicación del Álgebra de conmutación dentro de los módulos SIMM y SIMR, y breve exposición histórica para ubicar el Álgebra de conmutación en relación con otros hitos cruciales del avance de la Informática. 2. Puertas lógicas: AND, OR, NOT, NAND, NOR y OR-Exclusiva Descripción de los sistemas de conmutación como combinaciones de elementos discretos denominados puertas lógicas. Descripción de los componentes físicos discretos de los sistemas de conmutación. Exposición de la evolución de la tecnología: del acoplamiento de relés electromecánicos a la integración a gran escala de transistores de estado sólido en los microprocesadores. 3. Álgebra de Boole: axiomas y teoremas Exposición de las reglas del Álgebra de Boole como herramienta práctica para especificar el funcionamiento de los sistemas de conmutación. 4. Funciones lógicas: Tablas de verdad y términos canónicos Aplicación de las funciones lógicas para especificar las relaciones entre las entradas y la salida de cualquier circuito lógico. Obtención de la función lógica de un circuito complejo a partir de su tabla de verdad. 5. Simplificación de expresiones booleanas Aplicación sistemática de los teoremas del Álgebra de Boole y del método de Karnaugh para simplificar funciones lógicas. Consecuencias prácticas: la importancia de dicha simplificación para optimizar la realización y el funcionamiento de circuitos lógicos complejos. 6. Circuitos multifunciones: operaciones aritméticas Descripción de los circuitos lógicos de salida múltiple: esquemas de conmutación con más de una variable de salida. Aplicación de los circuitos lógicos multifunción para implementar operaciones aritméticas sencillas. 7. Bibliografía E. Muñoz. Circuitos electrónicos. Digitales II. Departamento de Publicaciones de la ETSIT, Universidad Politécnica de Madrid. (1978) J. Millman. Microelectrónica. Circuitos y sistemas analógicos y digitales. Editorial Hispano Europea, S.A. (1984) Procedimientos • Representar circuitos lógicos por medio de funciones booleanas. • Identificar los términos canónicos de una función lógica a partir de tablas de verdad. • Simplificar funciones lógicas aplicando los teoremas del Álgebra de Boole. • Simplificar funciones lógicas empleando diagramas de Karnaugh. • Representar circuitos lógicos de salida múltiple por medio de multifunciones. 10 Actividades de enseñanza y aprendizaje • Interpretación, codificación y transformación de las diferentes funciones booleanas. • Codificación y transformación de tablas de verdad mediante sus términos canónicos. • Representación de funciones y multifunciones empleando diagramas de Karnaugh. Actividades complementarias Las prácticas complementarias consisten en trabajos prácticos que se deben realizar en el laboratorio docente o en el aula de informática. Dos son los objetivos: emplear software de simulación y construir pequeños dispositivos de conmutación. Actividad 1. Simulación de circuitos lógicos El software libre actualmente disponible (Manual de Electronic Work Bench; Simulador Logicly) para diseñar circuitos booleanos permite la simulación virtual del funcionamiento de sistemas de conmutación basados en puertas lógicas, y constituye una herramienta docente que permite al alumno observar el funcionamiento de los circuitos desde un punto de vista empírico, complementándose el estudio teórico previamente desarrollado. Actividad 2. Construcción de circuitos lógicos sencillos La construcción y posterior verificación del funcionamiento de circuitos lógicos sencillos montados por el alumno empleando componentes comerciales le permite acceder a la materialización de los sistemas abstractos que previamente ha estudiado. Evaluación La evaluación debe centrarse en la resolución de casos prácticos en los que se interpreten, codifiquen y transformen diferentes funciones lógicas, haciendo hincapié en dos tipos principales de problemas: • Diseño de circuitos de conmutación obteniendo las correspondientes funciones lógicas a partir de sus tablas de verdad. • Simplificación de funciones lógicas aplicando los teoremas del Álgebra de Boole. • Representación y simplificación de funciones lógicas empleando diagramas de Karnaugh. 5 Ejemplo de ejercicios prácticos: Sistema de alarma y Sumador binario Se proponen dos casos prácticos sencillos que ilustran la aplicación del Álgebra de Boole a los circuitos de conmutación. El primer caso, “Sistema de alarma”, muestra cómo un circuito de conmutación puede responder “con lógica” a estímulos externos. El segundo, “Sumador binario”, ilustra cómo los circuitos lógicos pueden realizar operaciones aritméticas con números binarios. Sistema de alarma. Se supone que una habitación tiene una puerta y una ventana, y se desea establecer un sistema de alarma para vigilar posibles intrusiones. Para ello se montan sensores de apertura en la puerta y la ventana, así como un sensor de presencia. Se sabe que cada sensor puede dispararse en falso con cierta probabilidad. Cómo debería diseñarse un circuito lógico para que indique la presencia de un intruso y a la vez disminuya la probabilidad de falsas alarmas. 11 Para plantear el circuito de conmutación debe considerarse una función lógica de tres variables: A = f ( p , v, s ) (6) donde p y v corresponden, respectivamente, a los sensores de apertura de la puerta y la ventana, y s al sensor de presencia. Dichas variables toman el valor 1 cuando se disparan los sensores, y el valor 0 en caso contrario. La alarma por intrusión se dará cuando la función A tome el valor 1. La solución trivial sería que A = 1 cuando alguna de las variables p, v ó s tomase el valor 1, y que A = 0 sólo cuando las tres variables de entrada tomasen el valor 0 simultáneamente. Sin embargo, la incidencia de las falsas alarmas sería máxima, puesto que el disparo accidental de cualquiera de los sensores daría lugar a una alarma. La solución correcta es suponer que se dé por cierta una intrusión sólo cuando el sensor de presencia indique algo y a la vez se haya abierto la puerta o la ventana. Es decir, si alguien ha entrado, ha debido hacerlo por la puerta o la ventana, y será detectada su presencia. Entonces, A = 1 cuando se dispare el sensor de la puerta o el de la ventana y a la vez lo haga el sensor de presencia, y A = 0 si sólo se dispara un sensor, o no se dispara ninguno, o no se dispara el sensor de presencia. De este modo, un solo disparo accidental no daría lugar a una alarma, tendría que dispararse accidentalmente el sensor de la puerta o la ventana y conjuntamente el sensor de presencia, lo que es un suceso mucho menos probable. Del párrafo anterior se sigue que la condición para indicar una alarma se expresa en términos lógicos con disyunciones y conjunciones, por tanto, se podrá formalizar fácilmente empleando el Álgebra de Boole. En efecto: A = f ( p , v, s ) = p ⋅ v ⋅ s + p ⋅ v ⋅ s + p ⋅ v ⋅ s (7) ya que, si p = v = s = 1 , entonces A = 1 ; si p = 0 y v = s = 1 , entonces A = 1 ; y si v = 0 y p = s = 1 , entonces A = 1 . En la explicación para el alumno, para hacer más explícita la obtención de la función lógica f ( p, v, s ) debe recurrirse a su tabla de verdad, donde se presentan de manera exhaustiva las diferentes posibilidades de disparo de los sensores. Antes de diseñar el circuito de conmutación empleando puertas lógicas, debe simplificarse la expresión (7) aplicando las leyes del Álgebra de Boole. Aplicando el axioma 3 (propiedad distributiva): A = f ( p , v, s ) = p ⋅ v ⋅ s + p ⋅ v ⋅ s + p ⋅ v ⋅ s = v ⋅ s ⋅ ( p + p ) + p ⋅ v ⋅ s (8) Por el axioma 4 se sabe que p + p = 1 , luego v ⋅ s ⋅ ( p + p ) = v ⋅ s ⋅1 . Teniendo en cuenta el axioma 2, v ⋅ s ⋅1 = v ⋅ s . Así se obtiene: A = f ( p, v, s ) = v ⋅ s + p ⋅ v ⋅ s (9) Aplicando de nuevo el axioma 3 (propiedad distributiva), la función lógica se simplifica finalmente: A = f ( p , v , s ) = s ⋅ (v + p ⋅ v ) (10) Una vez se ha obtenido la función booleana simplificada (10), su implementación con puertas lógicas conduce al circuito de conmutación que se muestra en la Fig. 6. 12 Fig. 6 Circuito de conmutación del sistema de alarma. La resolución anterior se fundamenta en la aplicación directa de las reglas del Álgebra de Boole para formular y simplificar la función lógica del circuito deseado. Sin embargo, puede abordarse también la resolución definiendo la función lógica con su tabla de verdad y obteniendo el esquema de implementación por medio de un diagrama de Karnaugh. En la impartición debe hacerse hincapié en que este segundo método no añade ninguna idea fundamental nueva, más allá de permitir la implementación sistemática a partir de tablas de verdad. Sumador binario. Diseñar un circuito de conmutación que sea capaz de sumar dos números binarios de una cifra. En este caso debe considerarse un circuito multifunción, ya que la suma de dos números binarios de una cifra puede dar un número de una o dos cifras. (De la misma manera que al sumar, en base 10, dos números naturales de una cifra puede obtenerse un número de una o dos cifras.) En esos casos surge el concepto de “acarreo”, es decir: “nueve más ocho son siete y me llevo una”. Por eso el sumador binario que se va a construir suele denominarse en la literatura técnica “sumador con acarreo”. Si los sumandos son números binarios de una cifra, se pueden expresar en términos de sendas variables booleanas A y B. Como la suma puede tener una o dos cifras, se expresará empleando dos variables booleanas C0 y C1 . Es decir: A ⋅ 20 + B ⋅ 20 = C1 ⋅ 21 + C0 ⋅ 20 (11) Por tanto deben diseñarse dos circuitos, uno para la función lógica C0 = f ( A, B ) y otro para C1 = f ( A, B ) . De estas dos funciones, la más sencilla de escribir en términos lógicos es la del dígito de acarreo C1 . En efecto: C1 debe ser 1 sólo si A = B = 1 , y debe ser 0 en caso contrario; lo que coincide con la definición del producto booleano A ⋅ B . Por tanto: C1 = A ⋅ B . Para obtener C0 debe tenerse en cuenta que sólo puede valer 1 cuando uno de los sumandos sea 1 y el otro cero, ya que cuando ambos sumandos son 1 o son cero, el valor de C0 debe ser 0. Así que: C0 = A ⋅ B + A ⋅ B . Dada la sencillez de las expresiones booleanas de C0 y C1 , se pueden implementar directamente con puertas lógicas sin necesidad de simplificación. El resultado se muestra en la Fig. 7. 13 Fig. 7 Circuito de conmutación del sumador binario. Al igual que en el ejemplo anterior, en la explicación para el alumno pueden obtenerse las funciones lógicas a partir de una tabla de verdad de doble salida aplicando el método de Karnaugh. Este ejercicio muestra de manera explícita cómo el Álgebra de Boole, que sólo puede actuar sobre “unos y ceros” de acuerdo a las reglas de la lógica, es capaz de sumar dos números naturales gracias a que éstos se han expresado en código binario. 6 Conclusiones Se propone introducir el Álgebra de Boole dentro de los módulos Sistemas Informáticos Monousuario y Multiusuario (SIMM) y Sistemas Informáticos Multiusuario y en Red (SIMR) pertenecientes a los ciclos de grado superior Administración de Sistemas Informáticos (ASI) y Desarrollo de Aplicaciones Informáticas (DAI). Para ello se debe incluir una Unidad de Trabajo denominada “Álgebra de conmutación” donde se explique cómo es posible diseñar sistemas de conmutación para procesar automáticamente la información operando con criterios lógicos similares a los del pensamiento humano, y cómo esos mismos esquemas de procesamiento son capaces de realizar operaciones aritméticas elementales con números binarios. Siendo esto último de importancia capital a la hora de mostrar al alumno el nexo entre las unidades de trabajo “Sistemas de numeración” y “Fundamentos de los sistemas informáticos”. Además se han expuesto los aspectos principales del Álgebra de Boole como una introducción sugerente para aquéllos docentes que puedan interesarse en su impartición. De este modo, dicha exposición constituye una primera guía para la elaboración de los contenidos teóricos sobre los que el docente pueda fundamentar su actuación en el aula. Finalmente, como guía para la praxis, se sugieren dos supuestos prácticos para exponer las dos principales líneas de aplicación del Álgebra de Boole a los circuitos de conmutación, a saber: el diseño de un sistema de alarma doméstico, como muestra de un circuito que toma decisiones lógicas en función de estímulos externos; y la implementación de un sumador de números binarios, como ejemplo de circuito lógico capaz de realizar cálculos aritméticos sencillos. 14 Agradecimientos La autora desea agradecer la disponibilidad y espíritu de colaboración de los equipos docentes de los centros I.E.S. Europa de Rivas-Vaciamadrid (Madrid) e I.E.S. Francisco de Quevedo de Madrid, en los que las ideas expuestas en este artículo fueron llevadas a la práctica con éxito durante los cursos académicos 2005/06, 2006/07 y 2007/08. Y, sobre todo, a los alumnos: por su receptividad y por contagiar a la autora el entusiasmo necesario para escribir el presente artículo a partir de las experiencias acumuladas durante la impartición de aquellas clases. Referencias BALLESTA PAGÁN J. (1996). Función didáctica de los materiales curriculares. Píxel-Bit, Revista de Medios y Comunicación, Nº 6. BOOLE G. (1982) Investigación sobre las leyes del pensamiento. Madrid, Paraninfo. 11-164. Manual de Electronic Work Bench. http://www.uclm.es/gsee/aie/circuitos/EWB.pdf MUÑOZ LÓPEZ F. J. (2006). Sistemas Informáticos Multiusuario y en Red. Madrid. McGraw Hill. MUÑOZ LÓPEZ F. J. (2006). Sistemas Informáticos Monousuario y Multiusuario. Madrid. McGraw Hill. RAYA GONZÁLEZ L., RODRIGO RAYA V., SANTOS GONZÁLEZ M., MARTÍNEZ RUIZ M. A. (2007). Sistemas Informáticos Multiusuario y en Red. Madrid. Ra-Ma. RAYA GONZÁLEZ L., RODRIGO RAYA V., SANTOS GONZÁLEZ M., MARTÍNEZ RUIZ M. A. (2007). Sistemas Informáticos Monousuario y Multiusuario. Madrid. Ra-Ma. RECIO SAUCEDO M. A., CABERO ALMENARA J. (2005). Enfoques de aprendizaje, rendimiento académico y satisfacción de los alumnos en formación en entornos virtuales. Píxel-Bit, Revista de Medios y Comunicación, Nº 25. 93-115. R.D. 1660/1994, de 22 de julio, por el que se establece el título de Técnico en Administración de Sistemas Informáticos y las correspondientes enseñanzas mínimas. R. D. 1661/1994, de 22 de julio, por el que se establece el título en Técnico de Desarrollo de Aplicaciones Informáticas y las correspondientes enseñanzas mínimas. R. D. 1675/1994, de 22 de julio, por el que se establece el currículo del ciclo formativo de grado superior correspondiente al título de Técnico de Administración de Sistemas Informáticos. R. D. 1676/1994, de 22 de julio, por el que se establece el currículo del ciclo formativo de grado superior correspondiente al título de Técnico de Desarrollo de Aplicaciones Informáticas. Simulador Logicly. http://www.tecnologiadiaria.com/2009/05/simulador-online-circuitoselectricos.html/ 15