Modulo Info

Embed Size (px)

Citation preview

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 1

    UNIVERSIDAD AUTNOMA DE OCCIDENTE

    FACULTAD DE INGENIERAS DEPARTAMENTO DE CIENCIAS DE LA INFORMACIN

    PROGRAMA DE INGENIERA INFORMTICA

    INFORMTICA 1

    (Algoritmos con Java) MATERIAL RECOPILADO POR LOS PROFESORES

    J. ANTONIO LEMOS B. Y EDUARDO VICTORIA Z.

    SANTIAGO DE CALI, AGOSTO DE 2004

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 2

    ASIGNATURA: INFORMTICA 1 CODIGO: 532219 CREDITOS: 3 PRERREQUISITOS: 22 crditos aprobados CARACTERSTICAS: HOMOLOGABLE, VALIDABLE FACULTAD: INGENIERA PROGRAMA: INGENIERAS DEPARTAMENTO QUE FRECE: CIENCIAS DE LA INFORMACIN AREA: INFORMTICA PERIODO ACADMICO: Agosto Diciembre de 2004

    OBJETIVO GENERAL Capacitar al estudiante en el diseo e implementacin de algoritmos computacionales, utilizando los conceptos bsicos de la algoritmia, e introducindolo en el estudio de la programacin orientada a objetos.

    OBJETIVOS ESPECFICOS identificar los sistemas bsicos de numeracin y sus operaciones

    fundamentales. Comprender las operaciones bsicas de la lgica booleana. Modelar procesos mediante tcnicas algortmicas. Reconocer y aplicar correctamente las diferentes estructuras de decisin y de

    repeticin en programacin de computadores. Conocer y apropiar el paradigma Orientado a Objetos y su aplicacin en la

    programacin. CONTENIDO PROGRAMTICO

    UNIDAD 1 - Sistemas numricos Pg. 7 1.1 Sistema binario 1.2 Sistema octal 1.3 Sistema hexadecimal 1.4 Sistema decimal 1.5 Conversin entre sistemas 1.6 Suma y resta binaria 1.7 Cdigo ASCII y UNICODE 1.8 Clase prctica

    UNIDAD 2 - Sistemas lgicos Pg. 15

    2.1 Conectivos relacionales y lgicos 2.2 Proposiciones lgicas simples y compuestas 2.3 Tablas de verdad para las operaciones lgicas bsicas 2.4 Clase prctica UNIDAD 3 - Herramienta de Programacin Pg. 29

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 3

    3.1 Breve historia de los estilos de Programacin 3.2 Origen del paradigma Orientado a Objetos 3.3 Definiciones de clases y objetos 3.4 Caractersticas bsicas del lenguaje Java 3.5 Construccin bsica de una aplicacin 3.6 Entrada de datos estndar 3.7 Salida de datos estndar 3.8 Descarga e instalacin del lenguaje 3.9 Compilacin y ejecucin de una aplicacin 3.10 Clase prctica

    UNIDAD 4 - Tipos de datos, variables y Operadores (Java) Pg. 61

    4.1 Variables 4.2 Palabras reservadas 4.3 Tipos de datos 4.4 Promocin de datos (Casting) 4.5 Operadores aritmticos 4.6 Operador mdulo ( % ) 4.7 Operadores de asignacin 4.8 Operadores de incremento y decremento 4.9 Operadores relacionales 4.10 Operadores lgicos bolanos 4.11 Precedencia y asociatividad de los operadores 4.12 Clase prctica UNIDAD 5 Algoritmos Pg. 69 5.1 Historia de la programacin 5.2 Tipos de Algoritmos 5.3 Representacin de los Algoritmos 5.4 Propiedades de los Algoritmos 5.5 Clase prctica UNIDAD 6 - Sentencias de control en Java Pg. 113 6.1 Sentencias de decisin o seleccin

    6.1.2 Seleccin simple ( if ) 6.1.3 Seleccin doble ( if else ; if else - if ) 6.1.4 Seleccin mltiple ( switch )

    6.2 Sentencias de Repeticin ( ciclos o bucles): 6.2.1 Ciclo para ( for ) 6.2.2 Ciclo mientras ( while ) 6.2.3 Ciclo haga mientras ( do while )

    6.3 Clase prctica

    UNIDAD 7 Arreglos 7.1 Definicin de Arreglos 7.2 Arreglos Unidimensionales

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 4

    METODOLOGA

    El profesor dedicar 180 minutos semanales (dos bloques de 90 minutos) a las actividades presenciales, las cuales estarn compuestas por:

    1) Clases terico-prcticas en las cuales el profesor expondr cada uno de los nuevos temas con ejemplos descriptivos y asignar las lecturas y prcticas necesarias.

    2) Talleres (Prcticas Dirigidas) en los cuales, por grupo de estudio, se resolvern ejercicios. El profesor asesorar a los grupos. Al final todos los estudiantes debern tener resueltos los ejercicios y cada grupo avanzar en el proceso de conocimiento segn su particular inters y necesidad de saber. Estos ejercicios realizados en clase debern ser implementados en computador en las prcticas de laboratorio.

    3) Prcticas Independientes: para ser realizadas en las macro-salas de PCs de la UAO en el tiempo libre del estudiante.

    4) Se efectuarn 3 evaluaciones parciales de la asignatura con la ponderacin que se muestra en el numeral V. De esta forma, para obtener resultados satisfactorios, el estudiante deber ir construyendo el conocimiento a travs de aproximaciones sucesivas y durante: las clases, talleres, trabajo personal y trabajo en grupo de estudio.

    EVALUACIN

    Primer Parcial 15% Segundo Parcial 25% Tercer Parcial 25% Talleres y Quices 15% (Algunos talleres como trabajo independiente) Trabajos Adicionales 20% (Trabajo independiente)

    REFERENCIAS BIBLIOGRFICAS

    1. rea de Informtica UAO, Mdulo de Informtica 1, Publicaciones UAO. 2. CEBALLOS, Francisco J., JAVA 2 Curso de Programacin. Ed. Alfaomega. RaMa.

    2000. 3. Joyanes Aguilar Luis & Zahonero Martnez Ignacio, Programacin en Java 2

    Algoritmos, Estructuras de Datos y Programacin orientada a Objetos, Ed. McGrawHill, 2002.

    4. DEITEL, H.M., DEITEL, P. J. How to program Java. 3 Edicin. Ed. Prentice Hall. 2000. 5. FROUFE, Augustn. JAVA2 Manual de Usuario y Tutorial. 2 Edicin Ed. Alfa Omega

    2000. 6. WU, Thomas C. Introduccin a la programacin orientada a objetos con Java. Ed. Mc

    Graw Hill. Espaa. 2000. 7. ARNOW, David. WEISS, Gerald, Introduccin a la programacin con Java. Un enfoque

    orientado a objetos. Ed. Addison Wesley. Espaa.2001

    ELECTRNICAS 1. Descargar el software J2SE 1.4, del sitio web: http://java.sun.com/downloads 2. Descargar el editor JCreator 3.0, del sitio web: http://www.jcreator.com 3. Documentacin de JAVA (JDK 1.4) http://java.sun.com/j2se/1.4/download.html 4. Tutorial de Java (JDK1.4) http://java.sun.com/docs/books/tutorial/ 5. Free Electronic Books in Java and C++: http://www.ibiblio.org/pub/docs/books/eckel/ 6. FTP: ftp://turing.cuao.edu.co/

    Mnimo: 3 talleres, 3 quices y 3 trabajos independientes. Se sugieren grupos de 2 o de 3 estudiantes.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 5

    FUENTES DE DONDE SE RECOPIL EL MATERIAL PARA LA ELABORACIN DE ESTE MDULO DE INFORMTICA I. - Universidad de Valencia, Espaa, Depto. de Informtica

    http://informatica.uv.es/docencia/fguia/TI/Libro/PDFs/CAPI4.pdf - Universidad de Oviedo,Espaa, Depto. de Informtica Profesor Daniel Gayo.

    http://di002.edv.uniovi.es/~dani/asignaturas/ - Aprenda Java como si estuviera en primero, Escuela Superior de Ingenieros Industriales de San Sebastin.

    http://mat21.etsii.upm.es/ayudainf/aprendainf/Java/Java2.pdf - Matemticas para Computacin, Seymour Lipschutz, McGraw Hill, 1992 - Informtica III, Programacin Orientada a Objetos (Java), Recopilacin: Lyda Pea Paz

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 6

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 7

    UNIDAD 1. SISTEMAS NUMRICOS ARITMTICA Y REPRESENTACIN DE LA INFORMACIN EN EL COMPUTADOR Dos de los aspectos bsicos que se presentan en el tratamiento de la informacin, son cmo representarla (de lo cual depender sus posibilidades de manipulacin) y cmo almacenarla fsicamente. La primera se resuelve recurriendo a un cdigo adecuado a las posibilidades internas del computador, que abordaremos en el presente captulo. La segunda tiene que ver con los llamados soportes de informacin y es una cuestin que pertenece al mbito del soporte fsico del computador. En la raz de los desarrollos informticos est el hecho de que todo dato puede ser representado por un conjunto de bits (Los dgitos de un nmero binario se conocen como bits -Binary digit digito binario- por su nombre en ingls), circunstancia que permite a la ALU (Unidad Aritmtico-Lgica) realizar un gran nmero de operaciones bsicas utilizando su representacin binaria. El paso a cdigos binarios es una misin que el computador lleva a cabo automticamente, por lo que el usuario puede despreocuparse de este proceso. Sin embargo es conveniente tener algunas ideas acerca de la forma como el computador codifica y opera internamente, cuestin indispensable para comprender determinados comportamientos de la mquina. Para ello empezaremos recordando algunos conceptos relativos al sistema de numeracin binario y a las transformaciones entre ste y el sistema decimal. 1.1 Sistemas de numeracin en informtica

    Llamaremos sistema de numeracin en base b, a la representacin de nmeros mediante un alfabeto compuesto por b smbolos o cifras. As todo nmero se expresa por un conjunto de cifras, contribuyendo cada una de ellas con un valor que depende:

    a) de la cifra en s, b) de la posicin que ocupa dentro del nmero.

    En el sistema de numeracin decimal, se utiliza, b = 10 y el alfabeto est constituido por diez smbolos, denominados tambin cifras decimales:

    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} (1.1) y, por ejemplo, el nmero decimal 278.5 puede obtenerse como suma de:

    200 70 8 0.5 278 .5

    es decir, se verifica que: 278.5 = 2102 + 7101 + 8100 + 510-1 Cada posicin, por tanto, tiene un peso especfico (en el sistema decimal, cada posicin adems tiene un nombre):

    Valor en el ejemplo Nombre posicin 0 peso b0 8 unidades posicin 1 peso b1 7 decenas posicin 2 peso b2 2 centenas posicin -1 peso b-1 5 dcimas

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 8

    Generalizando, se tiene que la representacin de un nmero en una base b:

    N = ... n4 n3 n2 n1 n0 . n-1 n-2 n-3 ... (1.2) es una forma abreviada de expresar su valor, que es:

    N = ... n4b4 + n3b3 + n2b2 + n1b1 + n0b0 + n-1b-1 ... (1.3) donde el punto separa los exponentes negativos de los positivos. Ntese que el valor que tome b determina la longitud de la representacin; as, por un lado, resulta ms cmodo que los smbolos (cifras) del alfabeto sean los menos posibles, pero, por otra parte, cuanto menor es la base, mayor es el nmero de cifras que se necesitan para representar una cantidad dada. Como ejemplo veamos cual es el nmero decimal correspondiente de 175372, en base 8, (cuyo alfabeto es {0, 1, 2, 3, 4, 5, 6, 7} y recibe el nombre de sistema octal).

    175372)8 = 185 + 784 + 583 + 382 + 781 + 280 = = 6104 + 4103 + 2102 + 5101 + 0100 = 64250)10 1.1.1 Definicin del Sistema Binario En el sistema de numeracin binario b es 2, y se necesita tan slo un alfabeto de dos elementos para representar cualquier nmero: {0,1}. Los elementos de este alfabeto se denominan cifras binarias o bits. En la Tabla 1.1 se muestran los nmeros enteros binarios que se pueden formar con 3 bits, que corresponden a los decimales de 0 a 7.

    Tabla 1.1.- Nmeros binarios del 0 al 7

    Estos nmeros son generados as: el primer dgito de derecha a izquierda se multiplica por 20, el segundo por 21 y el tercero por 22; por lo tanto el binario 1012 sera

    1x22 + 0x21 + 1x20 = 1x4 + 0x2 + 1x1 = 5. 1.1.2 Transformaciones entre bases binaria y decimal Para transformar un nmero binario a decimal: Basta tener en cuenta las expresiones (1.2) y (1.3), en las que b = 2. Ejemplo 1: Transformar a decimal los siguientes nmeros binarios:

    110100; 0.10100; 10100.001

    110100)2 = (125) + (124) + (122) = 25 + 24 + 22 = 32 + 16 +4 = 52)10 0.10100)2 = 2-1 + 2-3 = (1/2) + (1/8) = 0.625)10 10100.001)2 = 24 + 22 + 2-3 = 16+4+(1/8) = 20125)10

    binario 000 001 010 011 100 101 110 111decimal 0 1 2 3 4 5 6 7

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 9

    Observando el Ejemplo 1 se deduce que se puede transformar de binario a decimal sencillamente sumando los pesos de las posiciones en las que hay un 1, como se pone de manifiesto en el siguiente ejemplo. Ejemplo 2: Transformar a decimal los nmeros: 1001.001)2 y 1001101)2 1001.001)2 1 0 0 1 0 0 1 = 8 + 1 + 1/8 = 9.125)10 pesos 8 4 2 1 1/8 1001101)2 1 0 0 1 1 0 1 = 64 + 8 + 4 + 1 = 77)10 pesos 64 32 16 8 4 2 1 Para transformar un nmero decimal a binario: a) La parte entera del nuevo nmero (binario) se obtiene dividiendo la parte entera del nmero decimal por la base, 2, (sin obtener decimales en el cociente) de partida, y de los cocientes que sucesivamente se vayan obteniendo. Los residuos de estas divisiones y el ltimo cociente (que sern siempre menores que la base, esto es, 1 o 0), en orden inverso al que han sido obtenidos, son las cifras binarias. Ejemplo 3: Pasar a binario el decimal 26

    26 2 26)10 = 11010)2 0 13 2 1 6 2

    0 3 2 1 1 2 1 0 b) La parte fraccionaria del nmero binario se obtiene multiplicando por 2 sucesivamente la parte fraccionaria del nmero decimal de partida y las partes fraccionarias que se van obteniendo en los productos sucesivos. El nmero binario se forma con las partes enteras (que sern ceros o unos) de los productos obtenidos, como se hace en el siguiente ejemplo. Ejemplo 4: Para pasar a binario el decimal 26.1875 separamos la parte fraccionaria: 0.1875 y la parte entera: 26 (ya transformada en el Ejemplo anterior).

    0.1875 0.3750 0.7500 0.5000 2 2 2 x2

    0.3750 0.7500 1.5000 1.0000 Por tanto, habindonos detenido cuando la parte decimal es nula, el nmero decimal 26.1875 en binario es:

    26.1875)10 = 11010.0011)2 NOTA: un nmero real no entero presentar siempre cifras despus del punto decimal, pudiendo ser necesario un nmero finito o infinito de stas, dependiendo de la base en que se represente; por ejemplo el nmero 1.6)10 representado en binario sera 1.100110011001...)2, requiriendo infinitas cifras para ser exacto, como tambin ocurre con muchos nmeros representados en decimal.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 10

    1.1.3 Cdigos Intemedios Como acabamos de comprobar, el cdigo binario produce nmeros con muchas cifras, y para evitarlo utilizamos cdigos intermedios que son bases mayores, que no se alejen de la binaria. Estos se fundamentan en la facilidad de transformar un nmero en base 2, a otra base que sea una potencia de 2 (22=4; 23=8; 24=16, etc.), y viceversa. Usualmente se utilizan como cdigos intermedios los sistemas de numeracin en base 8 (u octal) y en base 16 (o hexadecimal). 1.1.3.1 Base Octal

    Un nmero octal puede pasarse a binario aplicando los algoritmos ya vistos en secciones anteriores. No obstante, al ser b=8=23, el proceso es ms simple puesto que, como puede verse

    n525 + n424 + n323 + n222 + n121 + n020 + n-12-1 + n-22-2 + n-32-3 = (n522 + n421 + n320) 23 + (n222 + n121 + n020) 20 + (n-122 + n-221 + n-320) 2-3 = (m1) 81 + (m0) 80 + (m-1) 8-1

    Cada 3 smbolos binarios (3 bits) se agrupan para formar una cifra de la representacin en octal, por tanto en general puede hacerse la conversin fcilmente, de la forma siguiente: Para transformar un nmero binario a octal se forman grupos de tres cifras binarias a partir del punto decimal hacia la izquierda y hacia la derecha (aadiendo ceros no significativos cuando sea necesario para completar grupos de 3). Posteriormente se efecta directamente la conversin a octal de cada grupo individual de 3 cifras, y basta con recordar como se generaron los nmeros en la tabla 1.1 para poder realizar rpidamente la conversin. As por ejemplo

    10001101100.1101)2 = 010 001 101 100 . 110 100 2 1 5 4 . 6 4 = 2154.64)8

    De octal a binario se pasa sin ms que convertir individualmente a binario (tres bits) cada cifra octal, manteniendo el orden del nmero original. Por ejemplo:

    537.24)8 = 5 3 7 . 2 4 101 011 111 . 010 100 = 101011111.0101)2 Para transformar un nmero de octal a decimal se aplica la expresin (1.3) con b=8. Para transformar un nmero de decimal a octal se procede de forma anloga a como se hizo para pasar de decimal a binario dividiendo o multiplicando por 8 en lugar de por 2. As se puede comprobar que 1367.25)8 = 759.328125)10 que 760.33)10 =1370.2507...)8 1.1.3.2 Base Hexadecimal

    Para representar un nmero en base hexadecimal (esto es, b=16) es necesario disponer de un alfabeto de 16 smbolos:

    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} Tabla 1.2.- Nmeros binarios del 0 al 7

    Hexadec 0 1 2 3 4 5 6 7 8 9 A B C D E F Dcimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 11

    Al ser b=16=24, de modo similar al caso octal, cada smbolo hexadecimal se corresponde con 4 smbolos binarios (4 bits) y las conversiones a binario se realizan agrupando o expandiendo en grupos de 4 bits. Se pueden comprobar las transformaciones siguientes:

    10111011111.1011011)2 = 0101 1101 1111 . 1011 0110 5 D F . B 6 = 5DF.B6)H

    1A7.C4 )H = 1 A 7 . C 4

    0001 1010 0111 . 1100 0100 = 110100111.110001)2 De la misma forma que manualmente es muy fcil convertir nmeros de binario a octal, y viceversa, y de binario a hexadecimal, y viceversa, tambin resulta sencillo efectuar esta operacin electrnicamente o por programa, por lo que a veces el computador utiliza este tipo de notaciones intermedias como cdigo interno o de entrada/salida, y tambin para visualizar el contenido de la memoria o de los registros. Para transformar un nmero de hexadecimal a decimal se aplica la expresin (1.3) con b=16. Para pasar un nmero de decimal a hexadecimal se hace de forma anloga a los casos binario y octal: la parte entera se divide por 16, as como los cocientes enteros sucesivos, y la parte fraccionaria se multiplica por 16, as como las partes fraccionarias de los productos sucesivos. As se puede comprobar que 12A5.7C)H = 4773.484375)10 que 16237.25)10 = 3F6D.4)H 1.2 Operaciones Aritmticas y Lgicas

    El procesamiento de la informacin incluye realizar una serie de operaciones con los datos; estas operaciones y las particularidades de las mismas en su realizacin por el computador son el objeto de los prximos apartados. Operaciones Aritmticas con Nmeros Binarios Las operaciones aritmticas bsicas (suma, resta, multiplicacin y divisin) en sistema binario se realizan en forma anloga a la decimal aunque, por la sencillez de su sistema de representacin, las tablas son realmente simples:

    Tabla 1.3.- Operaciones bsicas en binario Suma aritmtica Resta aritmtica Producto aritmtico

    0 + 0 = 0 0 - 0 = 0 0 . 0 = 0 0 + 1 = 1 0 - 1 = 1 y debo 1 (*) 0 . 1 = 0 1 + 0 = 1 1 - 0 = 1 1 . 0 = 0 1 + 1 = 0 y llevo 1(*) 1 - 1 = 0 1 . 1 = 1

    (*) Llamado normalmente acarreo. En binario 1+1=10 (es 0 y me llevo 1), igual que en decimal 6+6=12 (es 2 y me llevo 1) Resta en un SC2

    Se toma el sustraendo y se le hace complemento a uno (negacin de cada bit). Posteriormente a este nmero se le suma uno, dando como resultado el complemento a dos. Este ltimo resultado (que equivale al sustraendo negativo) se le suma al minuendo y obtendremos la respuesta. Si el nmero de trminos excede al minuendo, se debe realizar desbordamiento de extremos. (No se toma el bit de extrema izquierda en el resultado ).

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 12

    Ejemplo 5: (minuendo) 0 1 1 1 (7) (sustraendo) -0 1 0 1 (5) Complemento a uno del sustraendo 1 0 1 0 Se suma uno + 1 Complemento a dos 1 0 1 1 (-5) Minuendo 0 1 1 1 (7) Complemento a dos + 1 0 1 1 (-5)

    Respuesta 0 0 1 0 (2) Ejemplo 6: Minuendo 0 1 0 0 1 0 1 1 ( 75) Sustraendo 0 1 1 0 1 0 0 1 (105) Complemento a uno del sustraendo 1 0 0 1 0 1 1 0 Se suma uno + _______ 1 Complemento a dos 1 0 0 1 0 1 1 1 (-105) Complemento a dos 0 1 0 0 1 0 1 1 ( 75) Suma minuendo + 1 0 0 1 0 1 1 1 (-105) Respuesta 1 1 1 0 0 0 1 0 (- 30) Ejemplo 7: Efectuar las siguientes operaciones aritmticas binarias:

    1110101 1101010 1101010 1010011 110.01 10 +1110110 -1010111 11 10 10 11.001

    11101011 0010011 1101010 0000000 010 1101010_ 1010011_ 10 100111110 10100110 00010 10 00 A partir del ejemplo anterior, se observa que multiplicar por 10)2 (es decir, por 2 en decimal) equivale a aadir un cero a la derecha, o desplazar el punto decimal a la derecha, siendo esto similar a multiplicar por 10)10 un nmero decimal. De la misma forma dividir por 10)2 = 2)10 equivale a eliminar un cero a la derecha, o desplazar el punto decimal a la izquierda. Por ejemplo:

    1010011)2 2 = 10100110)2 1010100)2 / 2 = 101010)2 10101.01)2 2 = 101010.1)2 110.01)2 / 2 = 11.001)2 1.101101)2 25 = 110110.1)2 10101.101)2 / 26 = 0.010101101)2

    Como se presenta acarreo se omite el bit

    de extrema izquierda.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 13

    Ejercicios Llene todas las casillas en blanco, sabiendo que las columnas agrupan el sistema numrico y el nmero a convertir lo da la fila que tenga el dato.

    DECIMAL BINARIO OCTAL HEXA

    230 1101001 326 BC3

    A48D 1543 100100101

    1872 255

    Realice las siguientes operaciones :

    Operando 1 Operando 2 Suma Resta 11000011 10000

    1001110010 11100101 1101 1100111

    1101001111 101101111 1111111111111 1111

    1010101011 10100001 11111100000 1010101010

    101000001100 11000110010 11001010000010 10001111100011

    11001010 1011111 101100110101 1110000001 10101110110 10101 11111111111 1111111111

    100100000010 1011111 1001111101111110000 1111111000000000000

    1.2.2 Valores Booleanos y Operaciones Lgicas Un dgito binario, adems de representar una cifra en base dos, tambin puede interpretarse como un valor booleano o dato lgico (en honor a George Boole), entendiendo como tal una cantidad que solamente puede tener dos estados (Verdadero/Falso, SI/NO, 1/0, etc.) y por tanto con capacidad para modelizar el comportamiento de un conmutador. As, adems de las operaciones aritmticas con valores binarios, se pueden llevar a cabo operaciones booleanas o lgicas en las que estos valores se consideran seales generadas por conmutadores. Las operaciones booleanas ms importantes son:

    OR lgico (tambin denominado unin, suma lgica (+) o funcin O), AND lgico (tambin interseccin, producto lgico ( . ) o funcin Y) la complementacin ( - ) (o inversin, negacin, o funcin NOT o NO).

    Ntese que las dos primeras son operaciones de dos operandos o binarios mientras que la complementacin es unaria. Estas operaciones se rigen segn la Tabla 4.4.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 14

    Tabla 1.4.- Operaciones lgicas

    OR __ AND ______ NOT 0 + 0 = 0 0 . 0 = 0 0 = 1 0 + 1 = 1 0 . 1 = 0 1 = 0 1 + 0 = 1 1 . 0 = 0 1 + 1 = 1 1 . 1 = 1

    Como puede observarse, el AND y OR lgicos se corresponden parcialmente con el producto y suma binarios, y lo ms significativo, es la posibilidad de implementar estas operaciones lgicas, y por tanto las aritmticas binarias, en forma de circuitos. En la siguiente unidad se revisa ms ampliamente las operaciones lgicas.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 15

    UNIDAD 2. SISTEMAS LGICOS

    LOGICA, TABLAS DE VERDAD 2.1 Introduccin. Un computador puede ser programado para tomar decisiones basadas en si ciertos enunciados por ejemplo, El numero que se ha computado es mayor que 100-son verdaderos o falsos. A la verdad o falsedad de un enunciado se le llama valor de verdad; un enunciado es verdadero o falso, pero no ambas cosas. Algunos enunciados son enunciados compuestos, es decir, estn integrados por subenunciados y varias conectivas.

    Ejemplo 1:

    (a) Las rosas son rojas y las violetas azules es un enunciado compuesto por los subenunciados las rosas son rojas y las violetas son azules.

    (b) El es inteligente o estudia todas las noches es, implcitamente, un enunciado compuesto por

    los subenunciados El es inteligente y estudia todas las noches.

    (c) Para donde va? no es un enunciado ya que no es ni verdadero ni falso.

    La propiedad fundamental de un enunciado compuesto es que su valor de verdad esta completamente determinado por los valores de verdad de sus subenunciados junto con la manera como estan conectados para formar el enunciado compuesto. Comenzamos con un estudio de algunas de estas conectivas. En este capitulo usaremos las letras p, q, r (en minsculas o maysculas, con o sin subndices) para denotar enunciados.

    2.2 Conjuncin, p ^ q Dos enunciados cualesquiera se pueden combinar con la palabra y para formar un enunciado compuesto llamado la conjuncin de los enunciados originales. Simblicamente, p ^ q. Denota la conjuncin de los enunciados p y q, que se lee p ^ q.

    La tabla de verdad del enunciado compuesto p ^ q esta dada por la siguiente tabla:

    En este caso, la primera lnea es una manera abreviada de decir que si p es verdadero y q es verdadero, entonces p ^ q es verdadero. Las otras lneas tienen significados anlogos. Consideramos que esta tabla define precisamente el valor de verdad del enunciado compuesto p ^ q como una funcin de los valores de verdad de p y de q. Observe que p ^ q es verdadero solamente en el caso en que ambos subenunciados sean verdaderos.

    p q p ^ q

    V V V

    V F F

    F V F

    F F F

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 16

    Ejemplo 2: Considere los cuatro enunciados siguientes: (i) Paris esta en Francia y 2+2=4. (iii) Paris esta en Inglaterra y 2+2=4. (ii) Paris esta en Francia y 2+2=5 (iv) Paris esta en Inglaterra y 2+2=5. Solamente el primer enunciado es verdadero. Cada uno de los otros enunciados es falso ya que por lo menos uno de sus subenunciados es falso. 2.3 Disyuncin, p q Dos enunciados pueden combinarse con la palabra o (en el sentido de y/o) para formar un nuevo enunciado que se llama la disyuncin de los dos enunciados originales. Simblicamente, p q. Denota la disyuncin de los enunciados p y q y se lee p o q. El valor de verdad de p q esta dado por la siguiente tabla de verdad, que consideramos define a p q:

    p q pq V V V V F V F V V F F F

    Observe que p ^ q es falso solamente cuando ambos enunciados son falsos. Ejemplo 3: Considere los cuatro enunciados:

    (i) Paris esta en Francia o 2 + 2 = 4. (ii) Paris esta en Francia o 2 + 2 = 5.

    (iii) Paris esta en Inglaterra o 2 + 2 = 4. (iv) Paris esta en Inglaterra o 2 + 2 = 5. Solamente (iv) es falso. Cada uno de los otros enunciados es verdadero ya que por lo menos uno de sus subenunciados es verdadero. Observacin: La palabra espaola o se usa comnmente de dos maneras. Algunas veces se usa en el sentido de p o q o ambos, mejor dicho, por lo menos una de las dos alternativas ocurre, como antes se seal y algunas veces se usa en el sentido de p o q pero no ambos, mejor dicho, exactamente una de las dos alternativas ocurre. Por ejemplo, la frase El estudiara en la Universidad Nacional o en la Universidad Catlica usa el o en el segundo sentido llamado disyuncin exclusiva. A no ser que se diga otra cosa, la o se usara en el primer sentido. Esta observacin hace sobresalir la precisin que ganamos con nuestro lenguaje simblico: p q esta definido por su tabla de verdad y siempre significa p y / o q. 2.4 Negacin, ~ p Dado cualquier enunciado p, se puede formar otro enunciado, llamado la negacin de p, escribiendo Es falso que... antes de p o, si es posible insertando en p la palabra no. Simblicamente, ~ p, denota la negacin de p (se lee no p).

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 17

    La tabla de verdad de ~ p esta dada por la siguiente tabla:

    p ~ p V F F V

    En otras palabras, si p es verdadero entonces ~ p es falso entonces ~ p es verdadero. As, el valor de verdad de la negacin de cualquier enunciado es siempre el opuesto del valor de verdad del enunciado original. Ejemplo 4: Considere los siguientes enunciados

    (a) Paris esta en Francia. (d) 2 + 2= 5 (b) Es falso que Paris esta en Francia. (e) Es falso que 2 + 2=5. (c) Paris no esta en Francia. (f ) 2 + 2 5.

    Entonces (b) y (c) son cada una de la negacin de (a); y (e) y (f) son cada uno la negacin de (d. Ya que (a) es verdadero, los enunciados (b) y (c) son falsos; y como (d) es falso, los enunciados (e) y (f) son verdaderos. Observacin: La notacin lgica para las conectivas y, o y no no es estndar. Por ejemplo, algunos textos usan: p & q. p . q o pq para p ^ q p+q para p q p . p o p para ~ p 2.5 Proposiciones y Tablas de Verdad Con su uso repetido de las conectivas lgicas (^, , ~ y otras que se discutirn adelante), podemos construir enunciados compuestos que son mas elaborados. En el caso en que los subenunciados p, q, ... de un enunciado compuesto P (p,q,...) sean variables, llamamos al enunciado compuesto una proposicin. Ahora el valor de verdad de una proposicin depende exclusivamente de los valores de verdad de sus variables, mejor dicho, el valor de verdad de una proposicin se conoce una vez que se conozcan los valores de verdad de sus variables. La tabla de verdad de la proposicin ~ (p ^ ~ q), por ejemplo, se construye como sigue:

    Observe que las primeras columnas de la tabla son para las variables p,q,...y que hay suficientes lneas en la tabla para permitir todas las posibles combinaciones de V y F para estas variables. (Para 2 variables, como en el caso anterior, se necesitan 4 lneas; para 3 variables se necesitan 8 lneas; y, en general, para n variables se necesitan 2n lneas.) Hay pues una columna para cada etapa elemental de la construccin del enunciado el valor de verdad de cada paso es determinado por las etapas anteriores con las definiciones de las conectivas ^, , ~. Finalmente, obtenemos la tabla de verdad de la proposicin, que aparece en la ultima columna.

    p q ~ q p^~q ~(p^~q) V V F F V V F V V F F V F F V F F V F V

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 18

    Observacin: La tabla de verdad de la proposicin, anterior consiste precisamente en las columnas bajo las variables y la columna bajo la proposicin: Las otras columnas se usaron solamente en la construccin de la tabla de verdad. Otra manera de construir la tabla de verdad anterior para ~ (p ^ ~ q) es la siguiente. Primero se construye la siguiente tabla:

    p q ~ (p ^ ~ q) V V V F F V F F

    Paso Observe que la proposicin se escribe en la lnea superior a la derecha de sus variables, y que hay una columna bajo cada variable o conectiva de la proposicin. Los valores de verdad se colocan entonces en la tabla de verdad en varios pasos como sigue: P q ~ (p ^ ~ q) V V V V V F V F F V F V F F F F Paso 1 1 Paso 1 2 1

    (a) (b) P q ~ (p ^ ~ q) V V V F F V V F V V V F F V F F F V F F F F V F Paso 1 3 2 1 Paso 4 1 3 2 1 (c ) (d) La tabla de verdad de la proposicin est formada, pues, por las columnas originales bajo las variables y la ltima columna colocada en la tabla, mejor dicho, el ltimo paso. 2.6 Tautologas y Contradicciones Algunas proposiciones P(p, q,) contienen solamente V en la ltima columna de sus tablas de verdad, es decir, son verdaderas para cualquier valor de verdad de sus variables. A tales proposiciones se les

    p q ~(p^~q) V V V V F F F V V F F V

    p q ~ (p ^ ~ q) V V V F V V F V V F F V F F V F F F V F

    p q ~ (p ^ ~ q)V V V V F F V F V F V V V F F F V F F F V F F V F F V F

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 19

    llama tautologas. Anlogamente, una proposicin P(p,q,)se llama contradiccin si contiene solamente F en la ltima columna de su tabla de verdad, o sea, es falso para cualquier valor de verdad de sus variables. Por ejemplo, la proposicin p o no p, es decir, p ~ p, es una tautologa y la proposicin p y no p, es decir, p ^ ~ p, es una contradiccin. Esto se verifica construyendo sus tablas de verdad.

    p ~ p p ~ p V F V F V V

    Observemos que la negacin de una tautologa es una contradiccin ya que siempre es falsa, y la negacin de una contradiccin es una tautologa ya que siempre es verdadera.

    Ahora, sea P(p, q, ...) una tautologa, y sean P(p, q, ...), P(p,q,...),...proposiciones cualesquiera. Como el valor de verdad de P(p,q,...) no depende de los valores de verdad particulares de sus variables p, q, ... podemos reemplazar P, q por P, ...en la tautologa P(p, q, ) y tenemos an una tautologa. En otras palabras:

    Principio de substitucin: Si P (p, q, ...) es una tautologa, entonces P(P1, P2,...) es una tautologa para proposiciones cualesquiera P1, P2,...

    Ejemplo 5: Por la anterior tabla de verdad, p ~ p es una tautologa. Reemplazando p por q ^ r obtenemos la proposicin ( q ^ r ) ~ ( q ^ r ) que, por el principio de substitucin tambin debiera ser una tautologa. Esto se verifica con la siguiente tabla de verdad.

    .

    2.7 Equivalencia Lgica: lgebra de Proposiciones

    Se dice que dos proposiciones P ( p, q, ...) y Q (p, q, ...) son lgicamente equivalentes, o sencillamente equivalentes o iguales, denotado por

    P (p, q, ...) Q (p, q, )

    Si tienen identicas tablas de verdad. Por ejemplo, considere las tablas de verdad de ~ ( p^q) y ~ p q:

    Como las tables de verdad son las mismas, mejor dicho, ambas proposiciones son falsas en el primer caso y verdaderas en los otros tres casos, las proposiciones ~ ( p ^ q) y ~ p ~ q son lgicamente equivalentes y podemos escribir:

    ~ ( p^q) ~ p ~ q

    p ~ p p ^~ p V F F F V F

    q r q ^ r ~ (q^r) (q^r) ~(q^r) V V V F V V F F V V F V F V V F F F V V

    p q p^q ~ (p^q) V V V F V F F V F V F V F F F V

    p Q ~ p ~ q ~ p ~ q V V F F F V F F V V F V V F V F F V V V

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 20

    Ejemplo 6: Considere el enunciado Es falso que las rosas son rojas y las violetas son azules.

    Este enunciado se puede escribir en la forma ~ ( p ^ q) en donde p es las rosas son rojas y q es las violetas son azules. Sin embargo, por las tablas de verdad anteriores, ~ ( p q) es lgicamente equivalente con ~ p ~ q. Asi, el enunciado dado tiene el mismo significado que el ennunciado.

    Las rosas no son rojas, o las violetas no son azules. Las proposiciones satisfacen muchas equivalencias logicas, o leyes, fuera de las descritas

    anteriormente. Algunas de las leyes mas importantes, con sus nombres se dan en la tabla 2.1. en la tabla, t denota una tautologa y f denota una contradiccin.

    2.8 Enunciados Condicional y Bicondicional

    Muchos enunciados, particularmente en la matemtica, son de la forma Si p entonces q. Tales enunciados se llaman enunciados condicionales y se denotan por p q El condicional p q frecuentemente se lee p implica q o p slo si q. Otro enunciado comn es la forma p si y solo si q. Tales enunciados denotados por p q se llaman enunciados bicondicionales. Los valores de verdad de p q y p q se dan en las siguientes tablas:

    Tabla 2.1. Leyes del lgebra de Proposiciones

    Leyes de idempotencia 1a. p p p 1b. p ^ p p

    Leyes Asociativas 2a (p q) r p (q r) 2b. (p ^ q) ^ r p ^ ( q ^ r)

    Leyes conmutativas 3a p q q p 3b. p ^ q q ^ p

    Leyes distributivas 4a p ( q ^ r) (p q) ^ (p r) 4b. p ^ (q r) (p ^ q) (p ^ r)

    Leyes de identidad 5a p f p 5b. p ^ t p 6a p t t 6b. p ^ f f

    Leyes de complementos 7a p ~ p t 7b. p ^ ~ p f 8a ~ t f 8b. ~ f t

    Ley de involucin 9 ~ ~ p p

    Leyes de DeMorgan 10a. ~ (p q) ~ p ^ ~ q 10b. ~ (p ^ q) ~ p ~ q

    p q p q V V V V F F F V F F F V

    p q p q V V V V F F F V V F F V

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 21

    Observe que el condicional p q es falso solamente cuando la primera parte p es verdadera y la segunda parte q es falsa. En caso de que p sea falso, el condicional p q es verdadero sin importar el valor de verdad de q. Observe tambien que p q es verdadero cuando p y q tienen los mismos valores de verdad y falso en los demas casos. Ahora considere la tabla de verdad de la proposicion ~ p q:

    p q ~p ~ p q V V F V V F F F F V V V F F V V

    Observe que la anterior tabla de verdad es idntica a la tabla de verdad de p q. As que p q es lgicamente equivalente a la proposicin ~ p q: p q ~ p q En otras palabras, el enunciado condicional Si p entonces q es lgicamente equivalente al enunciado No p o q, que solamente usa las conectivas y ~ y, por lo tanto, ya era parte de nuestro lenguaje. Considere la proposicion condicional p q y las otras proposiciones condicionales simples que contienen p y q: q p, ~ p ~ q y ~ q ~ p Estas proposiciones se llaman respectivamente la reciproca, inversa, y contrarreciproca de la proposicion p q. En seguida presentamos las tablas de verdad de las cuatro proposiciones.

    p

    q

    Condicional p q

    Recproca q p

    Inversa ~ p ~ q

    Contrarecproca ~ q ~ p

    V V V V V V V F F V V F F V V F F V F F V V V V

    Observe que un enunciado condicional y su reciproco o inverso no son lgicamente equivalentes. Por otra parte, se puede ver que un enunciado condicional y su contrarreciproco son lgicamente equivalentes. Enunciamos este resultado formalmente: Teorema 2.1: Un enunciado condicional p q y su contrarreciproca ~ q ~ p son lgicamente equivalentes. Ejemplo 7:

    (a) Considere los siguientes enunciados sobre un triangulo A: p q: Si A es equilatero, entonces A es isoseles. q p: Si A es Isoseles, entonces A es equilatero.

    En este caso p q es verdadero, pero su reciproco q p es falso.

    (b) Sea x un entero. Demuestre: (p q). Si x es impar entonces x es impar. Demostramos que la contrarreciproca ~ q ~ p, Si x es par, entonces x es par es verdadera. Sea x par; entonces, x = 2n en donde n es un entero. Por lo tanto,

    x = (2n)(2n) = 2(2n )

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 22

    tambien es par. Como la contrarreciproca ~ q ~ p es verdadera, el enunciado condicional original p q es tambien verdadero.

    2.9 Argumentos Un argumento es una relacion entre un conjunto de proposiciones P1,P2,..., Pn, llamadas premisas, y otra proposicion Q, llamada la conclusin; denotamos un argumento por P1,P2,..., Pn + Q Se dice que un argumento es valido si las premisas dan (como consecuencia) la conclusin; mas formalmente, damos la siguiente

    Definicin: Un argumento P1,P2,,...., Pn + Q es vlido si Q es verdadero cada vez que las premisas P1,P2,..., Pn sean verdaderas.

    Un argumento que no es vlido se llama falacia. Ejemplo 8:

    (a) El siguiente argumento es vlido:

    p.p q + q (Ley de independencia, modus poniendo ponens.) la demostracin de esta regla se sigue de la siguiente tabla de verdad.

    p q p q V V V V F F F V V F F V

    Ya que p es verdadero en los casos (lineas) 1 y 2, y p q es verdadero en los casos 1, 3 y 4; se sigue que p y q q son verdaderos simultneamente en el caso 1. como en este caso q es verdadero, el argumento es valido. (b) El siguiente argumento es una falacia: p q, q + p. Ya que p q y q son ambos verdaderos en el caso (linea) 3 en la anterior tabla de verdad, pero en este caso p es falso. Ahora las proposiciones P1,P2,..., Pn son verdaderas simultneamente si y solo si la proposicion (P1 ^ P2 ^...^ Pn) es verdadera. Asi el argumento P1,P2,..., Pn + Q es valido si y solo si Q es verdadero cada vez que P1 ^ P2 ^...^ Pn sea verdadero o, equivalentemente, si y solo si la proposicion (P1 ^ P2 ^...^ Pn) Q Es una tautologia. Establecemos este resultado formalmente. Teorema 2.2: El argumento P1,P2,..., Pn + Q es valido si y solo si (P1 ^ P2 ^...^ Pn) Q es una tautologia. En el siguiente ejemplo aplicamos este teorema. Ejemplo 9: Un principio fundamental del racionamiento logico dice:

    Si p implica q y q implica r, entonces p implica r O sea, el siguiente argumento es valido:

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 23

    p q. q r + p r (ley del silogismo) Este hecho se verifica con la siguiente tabla de verdad que muestra que la proposicion [(p q) ^ (q r)] (p r) Es una tautologia:

    p q r [(p q) ^ (q r)] (p r) V V V V V V V V V V V V V V V V F V V V F V F F V V F F V F V V F F F F V V V V V V V F F V F F F F V F V V F F F V V F V V V V V V V F V V F V F F V V F V F F V F V F F F V F V F V F V V V F V V F F F F V F V F V F V F V F

    Paso 1 2 1 3 1 2 1 4 1 2 1 Equivalentemente, el argumento es valido ya que las premisas p q y q r son verdaderas simultneamente solo en los casos (lineas) 1, 5, 7 y 8, y en estos casos la conclusin p r tambien es verdadera. (observe que la tabla de verdad requiere 2 = 8 lineas, ya que hay tres variables p, q y r.) Es necesario destacar que la validez del argumento no depende de los valores de verdad o del contenido de los enunciados que aparecen en el argumento, sino solamente de la estructura formal del argumento. Esto se ilustra con el siguiente ejemplo. Ejemplo 10: Considere el siguiente argumento: S1: Si un hombre es soltero, es infeliz. S2: Si un hombre es infeliz, muere joven. ................................................................. S: Los solteros mueren jvenes. En este caso el enunciado S debajo de la lnea denota la conclusin del argumento, y los enunciados S1 y S2 por encima de la lnea denotan las premisas. Afirmamos que el argumento es de la forma p q , q r + p r Es donde p es El es soltero, q es El es infeliz y r es El muere joven; y por el ejemplo 4.9 este argumento (Ley de silogismo) es vlido. 2.10 Implicacin Lgica.

    Se dice que una proposicin P (p,q,...) implica lgicamente una proposicin Q (p,q,...), escrito P (p,q,...) Q (p, q, ...)

    Si Q (p, q, ...) es verdadera cada vez que P (p,q,...) sea verdadera. Ejemplo 11: Afirmamos que P implica lgicamente p q. Considere las tablas de verdad de p y de p q en la tabla de abajo. Observe que p es verdadera en los casos (lneas) 1 y 2, y en estos casos p q tambin es verdadera. En otras palabras , p implica lgicamente p q.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 24

    Ahora si Q (p, q, ...) es verdadera cada vez que P (p,q,...) sea verdadera, entonces el argumento

    P (p,q,...) + Q (p, q, ...)

    es vlido, y recprocamente. An ms, el argumento P + Q es vlido si y solo si el enunciado condicional P Q es siempre verdadero, o sea, si es una tautologa. Establecemos este resultado formalmente. Teorema 3: Para proposiciones cualesquiera P (p,q,...) y Q (p, q, ...) los tres enunciados siguientes son equivalentes:

    (i) P (p,q,...) implica lgicamente a Q (p, q, ...). (ii) El argumento P (p,q,...) + Q (p, q, ...) es vlido. (iii) La proposicin P (p,q,...) Q (p, q, ...) es una tautologa.

    Si P Q y Q P entonces P y Q deben tener la misma tabla de verdad, y por lo tanto P Q. El reciproco tambin es cierto. As, la nocin de implicacin lgica est intimamente ligada a la de la equivalencia lgica.

    PROBLEMAS RESUELTOS

    Enunciados y Enunciados Compuestos. 2.1 Sea p Hace fri y sea q Est lloviendo. D una frase verbal sencilla que describa cada uno de

    los siguientes enunciados:

    (1) ~ p, (2) p ^ q, (3) p q, (4) q ~p, (5) ~p ^ ~q, (6) ~ ~ q En cada caso, traduzca ^, y ~ para que se lea y, o y Es falso que o No,

    respectivamente, y luego simplifique la frase en espaol.

    (1) No hace fri. (4) Est lloviendo o no est haciendo fro. (2) Est haciendo fro y est lloviendo. (5) Ni est haciendo fro ni est lloviendo. (3) Est haciendo fro o est lloviendo (6) No es verdad que est lloviendo.

    2.2 Sea p El es alto y sea q El es buen mozo. Escriba cada uno de los siguientes enunciados en

    forma simblica usando p y q. (Suponga que El es bajo significa El no es alto, o sea ~ p.).

    (1) El es alto y buen mozo. (4) El no es ni alto ni buen mozo. (2) El es alto pero no buen mozo. (5) El es alto, o es bajo y buen mozo. (3) Es falso que el sea bajo o buen mozo. (6) No es cierto que l sea bajo o no buen mozo.

    (1) p ^ q (3) ~ (~p q) (5) p (~p ^ q) (2) p ^ ~q (4) ~p ^ ~q (6) ~ (~ p ~q)

    p q p q V V V V F V F V V F F F

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 25

    Proposiciones y sus Tablas de Verdad. 2.3 Encuentre la tabla de verdad de ~ p ^ q.

    p q ~ p ~ p ^ q V V F F V F F F F V V V F F V F

    Paso 2 1 3 1 Mtodo 1 Mtodo 2 2.4 Encuentre la tabla de verdad de ~ (p q). p q p q ~ (p q) V V V F V F V F F V V F F F F V

    Paso 3 1 2 1 Mtodo 1 Mtodo 2 2.5 Encuentre la tabla de verdad de ~ (p ~ q). p q ~ q p ~ q ~ (p ~ q) V V F V F V F V V F F V F F V F F V V F Paso 4 1 3 2 1 Mtodo1 Mtodo 2 (observe que esta tabla de verdad es idntica a la del problema 2.3) Tautologas y Contradicciones. 2.6 Verifique que la proposicin p ~ (p ^ q) es una tautologa.

    Construya la tabla de verdad de p ~ (p ^ q):

    p q p ^ q ~ (p ^ q) p ~ (p ^ q) V V V F V V F F V V F V F V V F F F V V

    p q ~ p ^ q V V F V F V V F F V F F F V V F V V F F V F F F

    p q ~ (p q) V V F V V V V F F V V F F V F F V V F F V F F F

    p q ~ (p ~ q) V V F V V F V V F F V V V F F V V F F F V F F F F V V F

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 26

    Como la tabla de verdad de p ~ (p ^ q) es verdadera para todos los valores de verdad de p y de q, entonces es una tautologa.

    2.7 Verifique que la proposicin (p ^ q) ^ ~ (p q) es una contradiccin.

    Construya la tabla de verdad de (p ^ q) ^ ~ (p q):

    P q p ^ q p q ~ (p q) (p ^ q) ^ ~ (p q) V V V V F F V F F V F F F V F V F F F F F F V F

    Como la tabla de verdad de (p ^ q) ^ ~ (p q) es F para todos los valores de verdad de p y de q, entonces es una contradiccin.

    Equivalencia Lgica. 2.8 Demuestre que la disyuncin distribuye sobre la conjuncin, o sea, demuestre la ley distributiva

    p (q ^ r) ( p q) ^ (p r).

    Construya las tablas de verdad requeridas.

    p q r q ^ r p (q ^ r) p q p r ( p q) ^ (p r) V V V V V V V V V V F F V V V V V F V F V V V V V F F F V V V V F V V V V V V V F V F F F V F F F F V F F F V F F F F F F F F F

    Como las tablas de verdad son idnticas, las proposiciones son equivalentes.

    2.9 Demuestre que la operacin de disyuncin se puede escribir en trminos de las operaciones

    conjuncin y negacin. Especficamente, p q ~ (~ p ^ ~ q).

    Construya las tablas de verdad requeridas

    p q p q ~ p ~ q ~ p ^ ~ q ~ (~ p ^ ~ q) V V V F F F V V F V F V F V F V V V F F V F F F V V V F

    Como las tablas de verdad son idnticas, las proposiciones son equivalentes.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 27

    2.10 Simplifique cada proporcin usando la tabla 2-1: (a) p (p ^ q), (b) ~( p q) (~ p ^ q). (a) Equivalencia Razn (1) p (p ^ q) (p ^ t) (p ^ q) (1) Ley de Identidad (2) p ^ ( t q) (2) Ley distributiva (3) p ^ t (3) Ley de Identidad (4) p (4) Ley de Identidad (b) Equivalencia Razn (1) ~ (p q) (~ p ^ q) (~ p ^ ~ q) (~ p ^ q) (1) Ley de DeMorgan (2) ~ p ^ (~ p q) (2) Ley distributiva (3) ~ p ^ t (3) Ley de complemento (4) ~ p (4) Ley de Identidad Negacin. 2.11 Demuestre las leyes de DeMorgan: (a) ~( p ^ q) ~ p ~ q; (b) ~( p q) ~ p ^ ~ q.

    En cada caso construya las tablas de verdad requeridas. (a)

    (b) p q p q ~( p q) ~ p ~ q ~ p ^ ~ q V V V F F F F V F V F F V F F V V F V F F F F F V V V V

    2.12 Verifique ~ ~ p p 2.13 Use los resultados de los problemas 2.11 y 2.12 para simplificar los siguientes enunciados.

    (a) No es cierto que su madre sea inglesa o que su padre sea francs. (b) No es cierto que l estudie fsica pero no matemtica. (c) No es cierto que las ventas estn bajando y los precios subiendo. (d) No es cierto que no est haciendo fri o que est lloviendo.

    p q p ^ q ~ (p ^ q) ~ p ~ q ~ p ~ q V V V F F F F V F F V F V V F V F V V F V F F F V V V V

    p ~ q ~ ~ p V F V F V F

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 28

    (a) Sea p Su madre es inglesa y sea q Su padre es Francs. Entonces el enunciado dado es ~ ( p q ). Pero ~ ( p q ) ~ p ^ ~ q. Por lo tanto, el enunciado dado es lgicamente equivalente con el enunciado Su madre no es inglesa y su padre no es francs.

    (b) Sea p El estudia fisica y q El estudia matemticas. Entonces el enunciado dado es ~ ( p ^ ~ q).pero ~ (p ^ ~ q) ~ p ~ ~ q ~ p q. As que el enunciado dado es lgicamente equivalente al enunciado El no estudia fisica o estudia matemticas.

    (c) Como ~ (p ^ q) ~ p ~ q, el enunciado dado es lgicamente equivalente al enunciado Las ventas estan subiendo o los precios estan bajando.

    (d) Como ~ (~ p q) p ^ ~ q, el enunciado dado es lgicamente equivalente al enunciado Esta haciendo fri y no esta lloviendo.

    Condicionales y Bicondicionales. 2.14 Escriba de nuevo los siguientes enunciados sin usar la condicional.

    (a) Si hace fri, l se pone sombrero. (b) Si la productividad sube, los sueldos suben.

    Recuerde que Si p entonces q es equivalente con No p o q; o sea, p q ~ p q.

    (a) No est haciendo fro o l se pone el sombrero. (b) La productividad no sube o los sueldos suben.

    2.15 (a) Demuestre que p implica q y q implica p es lgicamente equivalente con la bicondicional

    p si y slo si q; o sea, (p q) ^ ( q p) p q

    (c) Demuestre que la bicondicional p q se puede escribir en trminos de las tres conectivas originales , ^ y ~.

    (a)

    p q p q p q q p (p q) ^ ( q p) V V V V V V V F F F V F F V F V F F F F V V V V

    (c) Ahora p q ~ p q y q p ~ q p; por lo tanto por (a)

    p q ( p q) ^ ( q p) (~ q q) ^ (~ q p)

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 29

    UNIDAD 3. HERRAMIENTA DE PROGRAMACIN. 3.1 Introduccin Aunque el concepto de orientado a objetos, se ha asociado al desarrollo de software, realmente, este es una forma de concebir el mundo, de manejar conceptos y de entender el funcionamiento de sistemas, sin embargo, para el objetivo del presente mdulo, se tratar solamente la acepcin de orientado a objetos como paradigma de programacin. El paradigma orientado a objetos se asoci durante mucho tiempo con los lenguajes y la programacin orientada a objetos, sin embargo, en la actualidad, el uso de objetos debera incluir tanto el anlisis como el diseo orientados a objetos, el uso de bases de datos y en general, la ingeniera de software orientada a objetos. Aunque no intencionalmente, la programacin orientada a objetos implica un mayor grado de anlisis, ya que de alguna forma deben estar definidas las clases, atributos y mtodos que se van a implementar. Por ende, al aumentar el tiempo dedicado al anlisis y concepcin del software, el tiempo de las otras etapas se reduce. 3.2 Origen del paradigma Orientado a Objetos Orientado a Objetos es un trmino que empez a acuarse a finales de los 80's, cuando la programacin requera nuevos paradigmas, nuevas formas de interpretarse. Durante los 90's tom gran fuerza, pero indiscutiblemente son las dos ltimas dcadas las que han empezado a recoger los frutos; en otros pases ya la programacin orientada a objetos es un hecho y algunos programadores no podran pensar en otra forma de desarrollar software. Autores de gran reconocimiento empezaron a trabajar de manera aislada explorando este nuevo paradigma, logrando avances tanto en lenguajes de programacin como en tcnicas apropiadas de anlisis y diseo. Ejemplo de ello son los mtodos propuestos por Grady Booch, Ivar Jacobson o James Rumbaugh entre otros. 3.2.1 Definicin de Orientado a Objetos El concepto de orientado a objetos est relacionado con otros mltiples conceptos: la programacin, las interfaces de usuario y la representacin jerrquica de hechos, tienen todos orientacin a objetos. Entonces, cmo podra definirse este trmino?. Una definicin bastante general de objeto es: todo aquello que tiene limites definidos. En ese orden, los libros, las sillas, las personas, los animales, las empresas, son todos objetos. Algunas personas afirman que la orientacin a objetos es la forma natural de nuestro aprendizaje. Cuando estamos pequeos se nos ensea a distinguir y agrupar objetos acorde a sus caractersticas y/o comportamientos y es por ello que logramos distinguir una silla de un caballo aunque ambos tengan patas. La programacin orientada a objetos es un "estilo" de programacin bajo el cual se divide el problema a solucionar en los objetos que lo componen. Luego se ver que cada objeto de estos contiene atributos y mtodos que permiten su interaccin y la ejecucin de diversas tareas para cumplir el propsito del programa. Existen muchos lenguajes que permiten realizar la programacin orientada a objetos, entre ellos se destacan Smalltalk, Java, C++, Object Pascal, Eiffel.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 30

    3.3 Breve historia de los estilos de Programacin Desde el principio de la programacin se han intentado muchos mtodos y procedimientos para lograr una programacin fcil y eficiente. El primer enfoque, si se puede llamar as, es la programacin no estructurada o "programacin espagueti", bajo la cual el programador se sienta frente al computador y empieza a escribir lneas de cdigo (instrucciones) sin estructura alguna, resultando en un programa largo, difcil de entender y aun ms difcil de modificar. El primer enfoque formal que se formaliz fue el enfoque procedural (o procedimental), que se podra resumir como "Usted decide qu procedimiento quiere, y usa el mejor algoritmo que pueda encontrar". Aunque este enfoque resultaba muy prctico para resolver problemas particulares, no as cuando se quera reutilizar parte del cdigo o emplear ciertas funciones en otros programas. En resumen, el enfoque procedural no permita mejorar la productividad de la construccin del software por sus caractersticas particulares. Surge entonces un segundo enfoque o paradigma, la programacin modular (o funcional). Para esta poca ya se ha incrementado visiblemente el tamao de los programas desarrollados, lo cual genera problemas adicionales de productividad. El enfoque de programacin modular es algo como "Decide los mdulos que quieres, de forma que las partes del programa y los datos queden ocultos tras los mdulos". La intencin primordial de este enfoque es dividir el problema (programa necesario) en partes independientes pero relacionadas, que se puedan solucionar de manera separada. La programacin modular propicia la reutilizacin de cdigo, ya que existen partes (mdulos) que podran ser empleadas en otros programas, siempre que se requiera la misma utilidad. Esta idea, aunque en apariencia buena, no surti mucho efecto ya que los programadores normalmente se preocupaban por el cdigo pero no por los datos y, normalmente, los mdulos requeran de datos que estaban fuera de ellos. En un intento por mejorar la concepcin modular surgen los llamados tipos abstractos de datos o TADs, los cuales intentan agrupar, en la misma estructura, los datos necesarios y las operaciones requeridas para su manejo. Sigiuendo el concepto de TADs pronto se encontr otro mecanismo para lograr que se crearan unidades independientes, que permitieran la reutilizacin de cdigo, y la programacin por componentes; ahora se podra "armar" un programa, tal como se arma un computador o una nevera, bastara conseguir las piezas adecuadas y establecer los enlaces necesarios. A este novedoso enfoque se le conoce como programacin orientada a objetos. La programacin orientada a objetos presenta mltiples ventajas. Empecemos por decir que los programas ahora estarn compuestos por objetos. Cada objeto, a su vez, est compuesto por los datos o caractersticas que lo distinguen y los mtodos o procedimientos necesarios para su manipulacin. 3.4 Definiciones de clases y objetos Todos los estilos o enfoques de programacin se encuentran basados en un marco referente, de la misma forma todas las tcnicas orientadas a objetos se basan en un marco, que Grady Booch ha llamado el Modelo de Objetos. 3.4.1 El Modelo de Objetos El modelo de Objetos, segn Booch, se compone de cuatro elementos esenciales, sin los cuales perdera la propiedad de orientacin a objetos. Estos son: Abstraccin

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 31

    Encapsulamiento Modularidad Jerarqua Igualmente incluye otros elementos que, sin ser esenciales, resultan bastante tiles dentro de este estilo de programacin: Tipos Concurrencia La adecuada comprensin de estos conceptos no es ni exclusiva ni elemental para programar orientado a objetos. Sin embargo, si no se toman en cuenta estos elementos, la programacin orientada a objetos dejara de emplear todo el poder que otorgan los objetos. 3.4.1.1 Abstraccin El primer concepto fundamental del paradigma orientado a objetos es la abstraccin. Una definicin bastante apropiada del trmino abstraccin es la dictada por Booch: "Una abstraccin denota las caractersticas esenciales de un objeto, que lo distingue de todas las otras clases de objetos y lo provee de conceptos definidos, relativos a la perspectiva del usuario". Dos cosas importantes deben resaltarse aqu. La primera es que lo que aprendemos, realmente son abstracciones de la realidad: la idea que tenemos de una mesa, por ejemplo, releva las caractersticas bsicas de sta, permitindonos diferenciarla de una silla o de un sof aunque puedan ser parecidos. La segunda idea importante, es que las abstracciones dependen de la perspectiva del usuario: diferentes personas tienen diferentes abstracciones de los objetos, dependiendo de su experiencia e inters particular. Actividad #1: Describa las abstracciones que usted posee de computador, mesa, cama, gato. 3.4.1.2 Encapsulamiento Una caracterstica esencial de los objetos es el encapsulamiento, por la cual, cada objeto mantiene oculto su interior. Al tratar un objeto como una caja negra, los otros objetos que interactan con l no requieren conocimiento alguno sobre la forma como opera internamente, requiriendo slo el conocimiento de los parmetros necesarios para dicha interaccin. Si los objetos no mantienen el encapsulamiento, se estara violando uno de los principios bsicos de la orientacin a objetos. La definicin original de Booch plantea: "Encapsulamiento es el proceso de compartimentalizar los elementos de una abstraccin, que constituyen su estructura y comportamiento. Una ventaja adicional del encapsulamiento se refiere a que el interior de los objetos puede cambiarse (mejorarse) sin que se requieran cambios en la interfaz que stos mantienen con otros objetos. Actividad #2: Enumere 10 elementos que usted emplea normalmente sin conocer realmente cmo realizan su funcionamiento, pues ellos estn encapsulados. 3.4.1.3 Modularidad La modularidad es un concepto muy antiguo. Aunque es vlido para la orientacin a objetos no es exclusivo de sta. Meyers mencion la ventaja de la modularidad como: "La accin de partir un programa en componentes individuales puede reducir su complejidad en algn grado.... aunque la

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 32

    particin de un programa es til por esto, una justificacin ms poderosa para partir un programa es que l sea un nmero de lmites bien definidos y documentados. Estos lmites o interfaces son invaluables en la comprensin del programa". La modularidad es bsicamente la divisin en partes de un programa de software (para nuestro caso), considerando que estos mdulos deben mantener la cohesin y el acoplamiento adecuado. Actividad #3: Normalmente las cosas que nosotros empleamos se encuentran compuestas de partes (al menos eso dice la Teora General de Sistemas). Intenta determinar las partes que componen: una bicicleta, un computador, una casa. 3.4.1.4 Jerarqua La jerarqua se puede entender como la clasificacin u ordenamiento de las abstracciones, esto permite asociar unos objetos con otros. Existen dos clases bsicas de jerarquas (o clasificaciones), la que corresponde a es parte de, llamada tambin jerarqua de partes. Por ejemplo, el manubrio es parte de la bicicleta, o la RAM es parte del computador. La otra jerarqua es la que corresponde a es un, llamada tambin jerarqua de tipos. Por ejemplo, La vaca es un mamfero, la silla es un mueble. Actividad #4: Intente establecer la jerarqua entre estos elementos: Impresora, Bandeja, Epson Stylus, Cartucho, Impresora de Burbuja, Impresora Laser, Toner, Panel de Mando, Conector, HP LaserJet. Motor, Puerta, Mazda 323, Daewo Lanus, Automvil, Llantas, Bujas, Tanque de Gasolina. 3.4.1.5 Tipos Los tipos son la representacin de las jerarquas de tipos. Cuando varios elementos se agrupan de acuerdo a ciertas caractersticas especficas que ellos guardan en comn, se dice que corresponden a un mismo tipo. Los tipos, definidos por Booch, son "la parte fundamental de la clase de un objeto, de forma que los objetos de tipos diferentes no pueden ser intercambiados, o a lo ms pueden ser intercambiados slo en forma muy restringida". Actividad #5: Es normal que cada cosa que conocemos la caractericemos como perteneciente a un tipo particular. En qu tipo caracterizara usted los siguientes objetos: casa, computador, vaca, perro, silla, cuaderno, libro, universidad. 3.4.1.6 Concurrencia Normalmente los objetos deben realizar tareas simultneas, sin que unas afecten a otras. A estos requerimientos de ejecucin de varias tareas se les conoce como concurrencia. Booch la define como "La propiedad que distingue un objeto activo de uno que no est activo", entendiendo un objeto activo como una abstraccin del mundo real que puede representar un hilo de control separado (una ruta diferente de ejecucin). Actividad #6: Muchos de los sistemas (computacionales o no) que encontramos en la vida diaria pueden realizar procesos concurrentes (varias cosas al tiempo), intente clasificar los siguientes sistemas como concurrentes o no: un computador con windows, un computador con linux, una persona, un cajero electrnico, una mquina de hacer caf, un microondas.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 33

    3.4.2 Definiciones de Orientacin a Objetos Cuando nos referimos especficamente a la programacin orientada a objetos, se emplean los conceptos vistos a travs de trminos que hacen referencia al programa y las partes con las que se establece. 3.4.2.1 Clases y Objetos El concepto de objetos es para muchos la forma "normal" de asociar las cosas de la vida con nombres. Cuando iniciamos nuestra educacin, empleamos procesos difciles de asociacin de caractersticas y modelos a nombres determinados. Una clase es un concepto que incluye caractersticas o atributos (datos), y procedimientos de una entidad del mundo real. Ejemplos de clases son: Mueble, Auto, Medio de Transporte, Edificacin, etc. De otra parte, se entiende que las clases son generalizaciones de los objetos, o lo que es lo mismo, los objetos son instancias de clase. Ejemplos de objetos son: La silla del rector, el carro de Pedro, El asiento rojo, etc. Los objetos poseen ciertas caractersticas que los hacen particulares. Tales caractersticas son: Tiene un estado (atributos o caractersticas) Tiene un comportamiento (mtodos asociados) Tiene una identidad (ocupa un lugar en memoria) Tiene un ciclo de vida Tiene una visibilidad Se relaciona y colabora con otros objetos 3.4.2.2 Atributos Los atributos de una clase (y por ende, de un objetos) son las caractersticas relevantes de esta. Como se puede suponer, los atributos de la clase se determinan de acuerdo al problema o situacin que se desea tratar; es decir, dependen de la abstraccin que se haga del objeto. Por ser los objetos instancias de las clases, contienen todos los atributos de stas. Por ejemplo: La clase silla: tiene como atributos la clase, el nmero de patas, el tipo de tapizado, el estilo, el

    material, la fecha en que fue fabricada. La clase carro: tiene como atributos el nmero de puertas, la marca, el modelo, el precio. 3.4.2.3 Operaciones, mtodos y servicios Las clases, adems de atributos, contienen los procedimientos que pueden manipular o procesar estos datos. A estos procedimientos se les conoce como operaciones, mtodos o servicios. Estos mtodos exhiben el comportamiento posible del objeto. Este comportamiento ocasionar que el objeto mismo cambie de un estado a otro. Por ejemplo: La clase auto: tiene como mtodos o servicios, arrancar, parar, frenar, aumentar velocidad,

    disminuir velocidad. La clase computador: tiene como mtodos o servicios, encender, iniciar, arrancar programa.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 34

    3.4.2.4 Identidad Los objetos deben ser creados y durante su creacin deben recibir un nombre y una asignacin de espacio en memoria. En este sentido, los objetos, a diferencia de las clases, existen dentro del computador por un tiempo que determinar el programador. 3.4.2.5 Ciclo de Vida Como se dijo anteriormente, los objetos cambian de estado dependiendo del comportamiento que desarrollen. A todos estos cambios de estado por los que pasa (o puede pasar) un objeto desde que es creado hasta que muere, se le denomina ciclo de vida. Actividad #7: Establezca atributos y mtodos para cada uno de los conceptos mencionados a continuacin, y especifique si son clases u objetos. Si es un objeto, indique a qu clase pertenecera: rbol, manzana, casa, Corporacin Universitaria Autnoma de Occidente, Secretara de Gobierno, Amigo, Estudiante, Perro, Ferrari. 3.4.2.6 Relaciones con otros objetos Los objetos han sido determinados como partes de la solucin de un problema y ello implica que tengan que relacionarse para cumplir su cometido. Las relaciones entre los objetos pueden ser de muchas clases: Mensajes Los mensajes activan las operaciones y mtodos de cada objeto. Un objeto enva a otro un mensaje, en el cual se indica el destino, la operacin requerida y los parmetros que debe incluir. Los mensajes son el corazn del comportamiento del sistema, ya que le indica a los objetos comunicarse entre ellos para ejecutar sus operaciones. Normalmente la clase de relaciones que se establecen a travs de los mensajes se les denomina relaciones de uso, ya que un objeto usa a otro. Herencia Las clases pueden heredar de otras clases sus atributos y mtodos. La herencia responde a la necesidad de hacer clases nuevas que contienen caractersticas similares (o iguales) a las de otra clase ya existente. Parte (mucho) del arte de programar orientado a objetos es determinar la mejor forma de estructurar el programa economizando clases. Conviene aclarar que al emplear herencia, se reduce el nmero de lneas a implementar. Algunos lenguajes como Java resultan ser muy estrictos en trminos de herencia, ya que todas las clases deben heredar de alguna. por lo anterior, JAVA tiene una "superclase" llamada Object, de la cual se derivan todas las restantes. Cuando una clase hereda de otra, puede variar los atributos y mtodos que ha heredado, logrando su propia identidad respecto a la clase de la cual se origin. Algunos Lenguajes Orientados a Objetos, permiten que una clase hereda de dos o ms, lo cual se conoce como herencia mltiple. Del concepto de herencia, se deriva el concepto de jerarqua de clases, que presenta esquemticamente la herencia entre las clases.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 35

    Agregacin Cuando un objeto o clase se encuentra compuesta por otros, se dice que existe una relacin de agregacin entre ellos. Actividad #8: Indique que clase de relacin existe entre cada conjunto de elementos (considerando que todos son objetos y que guardan alguna relacin). Procesador, memoria, unidad de disco, diskette, computador, usuario. Casa, sala, Edificacin, Biblioteca pblica, sillas, mesas, mesa de comedor. Polimorfismo El Polimorfismo es una caracterstica propia de los objetos, que permite que operaciones diferentes posean el mismo nombre Sobrecarga La sobrecarga es una clase de polimorfismo, en la cual los mtodos se diferencian bsicamente por la clase de parmetros que reciben. Al recibir el mensaje el objeto, mediante los parmetros identifica automticamente la operacin que se desea ejecutar; esto se conoce como sobrecarga de mtodos. Por ejemplo: imprimir(factura), imprimir(reporte), imprimir(paz y salvo); aunque la funcin (mtodo) es la misma, dependiendo el tipo de argumento que recibe se realizarn diferentes labores. Algunos lenguajes, como C++, permiten adems lo que se llama sobrecarga de operadores (operator overloading) gracias a la cual se pueden redefinir los operadores aritmticos bsicos ( +, - , * , / ). Por ejemplo: 3 + 5 sumar enteros, mientras "Hola" + " amigos", concatenar cadenas. Sobreescritura La sobreescritura corresponde a la otra clase de polimorfismo, llamado tambin polimorfismo de generalizacin. En ste, los mtodos heredados de una superclase pueden ser sobrescritos para elaborar funciones diferentes. Sin embargo, NO se puede variar la signatura ( firma) del mtodo; es decir; NO se puede cambiar el nombre, el tipo de los parmetros, el nmero de parmetros que recibe y el tipo de dato que devuelve.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 36

    Ejercicios 1. Indique si cada uno de los enunciado presentados a continuacin es verdadero o falso y justifique

    su respuesta: a. Al programar orientado a objetos, lo que se definen son clases. b. Debido al encapsulamiento, los mtodos de un objeto no pueden ser usados por otro. c. La programacin orientada a objetos facilita la reutilizacin de cdigo. d. La relacin de herencia indica que un objeto es parte de otro. e. Un objeto slo puede pertenecer a una clase. f. El polimorfismo permite que varios mtodos tengan igual nombre. g. La programacin espagueti se puede considerar modular. h. La programacin procedural admite la herencia. i. Los mtodos de una clase se implementan siguiendo las directrices de la programacin

    estructurada j. La herencia especifica que una clase posee los mismos mtodos y atributos de la clase de la

    cual hereda. k. Auto es una instanciacin de Medio de Transporte. l. Pedro es un objeto de la clase Persona. m. Pedro es una clase. n. Atributos de auto son rojo, grande y mazda. o. Mtodos de Telfono son establecer comunicacin y timbrar. p. Manzano hereda de rbol. q. Manzana hereda de Manzano. r. Tablero es parte de Profesor. s. Otoo es una clase de Estacin. t. Windows hereda de Sistemas Operativos.

    2. Complete las siguientes frases con la palabra adecuada a. La sobrecarga es la implementacin de _____________________________________. b. Un objeto es una _________________de una clase. c. La programacin __________________________________se basa en partes, cada una con

    caractersticas y funciones especficas. d. Cuando una clase redefine un mtodo con la misma signatura que tena en la clase de la

    cual hered se denomina __________________. e. La herencia puede ser _________________________o mltiple. f. Las caractersticas esenciales que distinguen a un objeto se conocen como

    ____________________del objeto. g. La primera tcnica formal de programacin conocida fue la programacin

    _______________________________________. h. Si un sistema puede realizar varias tareas al tiempo, se dice que tiene procesamiento

    ________________. i. Los __________ son estructuras de datos que dieron origen a los objetos. j. Memoria ___________________ de Computador. k. IBM NetVista es ____________________ de Computador. l. Fuente de Poder es ______________ de Computador. m. Maria Isabel ____________ de clase Estudiante n. La clase persona usa la clase _________________ o. La clase perro _______________ la clase animal. p. Matemticas es un objeto de la clase _________________. q. _____________ es un objeto de clase pescado. r. Arroz con pollo ______________ comida.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 37

    3.5 Caractersticas bsicas del lenguaje Java 3.5.1 Historia de JAVA Una de las reas reconocidas de avance para la computacin e informtica, es la de los dispositivos electrnicos inteligentes. En razn de esto, Sun Microsystems financi un proyecto de investigacin interno con el nombre Proyecto Green en 1991. Uno de los resultados de este poyecto fue un lenguaje basado en C y C++, llamado Oak, creado por James Gosling, Patrick Naughton, Chris Warth, Ed Frank y Mike Sheridan. Poco despus se descubri que ya exista un lenguaje con este nombre, as que surgi el nombre de JAVA (una clase de caf). El prototipo original, desarrollado en 18 meses, fue mejorado con la ayuda de muchas personas, lo cual tom ms de 3 aos. El propsito inicial con el proyecto fue crear un lenguaje independiente de la plataforma, que facilitara el uso en diferentes dispositivos electrnicos. Hasta el momento, C y C++ eran los lenguajes ms empleados, sin embargo no permitan la facilidad requerida ya que debe proveerse del compilador especifico para la CPU necesaria, lo cual puede llevar algn tiempo de construccin. Sin embargo, mientras se desarrollaba JAVA apareci el otro elemento que formara parte esencial de su construccin, el World Wide Web; de no ser por este aspecto, JAVA probablemente no habra pasado de ser un lenguaje ms empleado por los diseadores de hardware en sus laboratorios. Es conveniente aclarar que aunque JAVA bas su desarrollo en C y C++, de ninguna manera es una versin avanzada de estos, no es compatible con alguna versin de C++, ni intenta reemplazarlo; ms bien maneja otras caractersticas importantes que se requeran en su momento, dando a los programadores un ambiente familiar.

    Respecto a la programacin, JAVA presenta muchas ventajas, como mencionan Naugthon y Schildt: "Java fue diseado, probado y refinado por programadores autnticos. Es un lenguaje que se basa en las necesidades y experiencia de la gente que lo ha inventado.... Java es un lenguaje coherente y lgicamente consistente.... Java le permite al programador tener el control total, excepto en aquellas limitaciones impuestas por Internet. Si uno programa bien, el programa lo reflejar; si uno programa mal, el programa tambin lo reflejar. Dicho de otro modo, Java no es un lenguaje con ruedas de entrenamiento, sino que es un leguaje para programadores profesionales". La intencin de Sun Microsystems con el desarrollo de JAVA no fue el lucro, sino facilitar sus propias labores en la construccin de dispositivos de hardware. Por tanto, el JAVA y sus herramientas asociadas siempre han sido de dominio pblico, de forma que basta entrar al sitio de sun (www.java.sun.com), para obtener la versin actualizada del JDK (Java Development Kit). Exactamente, en el sitio web http://java.sun.com/downloads , usted puede descargar el kit de desarrollo de Java. 3.5.2 Caractersticas Bsicas de JAVA JAVA posee muchas caractersticas importantes. A continuacin se mencionarn aquellas ms sobresalientes. Orientado a Objetos puro Muchos lenguajes tienen como caracterstica ser orientado a objetos, lo cual implica que permitan crear clases, manejar herencia y mantener el encapsulamiento. No obstante, existen dos clases de lenguajes orientados a objetos: aquellos que permiten las caractersticas del manejo de objetos, pero tambin mantienen caractersticas de otros estilos de programacin (v.g. programacin procedimental); a estos lenguajes se les conoce normalmente como hbridos. Un ejemplo clsico de este tipo de lengujes es el C++ que, adems de soportar el manejo de objetos, tambin permite la escritura de cdigo propio de C.

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 38

    La otra clase de lenguajes son los denominados puros, tal como Java o Smalltalk, en donde slo se pueden manejar clases y objetos. Por lo tanto, cualquier fragmento de cdigo que se quisiera escribir debe formar parte de una clase. Simple Una preocupacin de SUN es mantener el lenguaje simple. Desde su comienzo, las instrucciones propuestas, similares al C, tienen por objeto facilitar al programador su comprensin, incluso con estndares muy sencillos como que las clases se escriben iniciando en mayscula y los objetos con minsculas. Con miras a esto, se quitaron algunos aspectos que C++ maneja; tales como sobrecarga de operadores, herencia mltiple y apuntadores; por considerar que no aportaban de manera significativa en relacin con la complejidad que revestan y se adicionaron otros aspectos para facilitar la vida del programador, tal como el colector de basura. Distribuido Java ha sido diseado para interactuar de manera sencilla con el conjunto de protocolos TCP / IP (manejados en Internet), de manera que las aplicaciones de Java puedan abrir y acceder a objetos a travs de URLs de manera tan sencilla como si estuvieran en la misma mquina. Robusto La robustez de un software es una de las caractersticas de calidad ms importantes y se refiere a la posibilidad del software de prevenir posibles errores que, de ocurrir, podran interrumpir la ejecucin adecuada del mismo. Java se preocupa por ello y hace un especial nfasis en la deteccin de problemas, chequeo dinmico (en tiempo de ejecucin) y eliminar posibles situaciones de error. Seguro Una de las intenciones de Java es que ste sea empleado en entornos de red y distribuidos, pero se debe tener conciencia de la importancia de la seguridad en ambientes de este estilo. Por ello, el lenguaje mismo provee mecanismos apropiados para evitar la construccin de virus o trampas. Tambin tiene mecanismos de autenticacin basados en encriptamiento de llaves (SSL). Arquitectura Neutral Para que las aplicaciones que se hacen en java puedan efectivamente viajar a travs de la red, el lenguaje debe proveer mecanismos que permitan ejecutar el software en cualquier sistema, independiente de su plataforma; por ello, Java provee una archivo en un formato de arquitectura neutra que puede ser ejecutado en diferentes procesadores con la ayuda del adecuado sistema de ejecucin de java. Portable La arquitectura neutra es la base para la portabilidad, pero para lograr que el software sea portable se requiere mucho ms. Por ejemplo, el manejo de los diferentes tipos de datos y las interfaces grficas deben ser independientes de la plataforma en que se ejecutan. El sistema Java mismo es altamente portable, el compilador est escrito en JAVA y el runtime (ejecutador) est escrito en ANSI C. Interpretado El interpretador de Java puede ejecutar directamente los bytecodes (cdigo de bytes, generado despus de la compilacin) directamente en la mquina en la cual se encuentra instalado. Muchas

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 39

    personas han visto esta caracterstica como una desventaja de Java, debido a que el proceso de enlace (link, p. ej. en C / C ++) es mucho ms rpido y liviano. Sin embargo, debe reconocerse que la interpretacin ayuda en los procesos de depuracin. Alto desempeo Aunque el desempeo del interpretador comnmente es suficiente, si se requiere un mayor nivel de desempeo puede traducirse el bytecode a un cdigo particular para la mquina en la cual se ejecuta. Multihilos Multihilo es es la forma de construir aplicaciones de manera que puedan realizar varias actividades (hilos) al mismo tiempo. Java tiene primitivas bsicas que permiten monitorear y usar los hilos; esto logra una mejor interaccin y un comportamiento de tiempo real (limitado slo por la mquina en la cual est corriendo). Dinmico Java fue diseado para adaptarse a un entorno cambiante. El hecho de manejar objetos permite que los cambios que se requieran en un software determinado no afecten de manera significativa los procesos existentes. Ver mas en www.java.sun.com/docs/white/langenv/ Actividad #9: Tome dos de las caractersticas bsicas de JAVA, investigue ms al respecto indicando en qu consisten exactamente y qu otros lenguajes de programacin tienen estas caractersticas (una u otra). 3.5.3 La estructura de JAVA Compilado o Interpretado? Una de las primeras inquietudes que surgen cuando se empieza a interactuar con Java es si realmente es un lenguaje compilado o interpretado; la respuesta es sencilla: los dos. La forma de operar de Java es un tanto diferente a la forma en que operan otros lenguajes ms tradicionales y esto es, justamente, lo que permite que los programas desarrollados en Java puedan emplearse en diferentes plataformas. El siguiente grfico, presenta la forma como se debera procesar un programa en Java.

    Procesamiento de un programa en JAVA ( Fuente: Java Tutorial)

    Como se puede observar, el programa fuente (myProgram.java) debe ser compilado para crear el programa en bytecode (myProgram.class), el cual puede ser ejecutado en cualquier plataforma, ya que

  • Universidad Autnoma de Occidente

    Informtica I. Versin 1.0 Agosto de 2004 40

    la mquina que lo ejecutar en particular tiene su intepretador (diferente para cada mquina) que lee, interpreta y ejecuta cada una de las instrucciones que encuentra en el bytecode. Plataforma de Java Como plataforma se conoce al entorno Hardware Software en el cual se ejecuta un programa. Normalmente se asocia con el sistema operativo y la mquina sobre la que este corre; as, se tienen como plataformas: Windows (en cada una de sus formas), MacOS, Linux, Unx, Solaris, etc. La plataforma de Java se compone de dos elementos bsicos: Java Application Programming Interface (Java API) y la Java Virtual Machine (JVM). Su ubicacin se presenta en el siguiente grfico.

    Plataforma de Java (Fuente: Java Tutorial)

    El Java Virtual Machine es el intrprete de Java. Como se dijo anteriormente, existen un JVM para cada plataforma y es el que permite que un programa sea escrito una vez y ejecutado en varias plataformas sin requerir cambios.

    La API de Java o Interface de Programas de Aplicacin es una coleccin de componentes de software que provee diferentes utilidades para el programador, tal como la interfaz grfica de usuario (GUI). La API se encuentra organizada en libreras que contienen clases o interfaces, conocidas como paquetes (packages). El siguiente grfico muestra lo que incluye el Java 2 SDK (Standard Developer Kit).

    Contenido del Java 2 SDK (Fuente: Java Tutorial) El JRE o Java 2 Runtime Environment es: la mquina virtual, la plataforma de clases y los archivos de soporte. El SDK (Standard Developer Kit) incluye el JRE y las herramientas de desarrollo como compiladores y depuradores. 3.5.4 Instalacin de JAVA Java pertenece al software de dominio libre, es decir que cualquier persona puede entrar al sitio de Intern