SlideShare una empresa de Scribd logo
1 de 164
Descargar para leer sin conexión
Universidad Autónoma de Occidente




                 UNIVERSIDAD AUTÓNOMA DE OCCIDENTE
                   FACULTAD DE INGENIERÍAS
          DEPARTAMENTO DE CIENCIAS DE LA INFORMACIÓN
              PROGRAMA DE INGENIERÍA INFORMÁTICA




                                             INFORMÁTICA 1
                                            (Algoritmos con Java)
                MATERIAL RECOPILADO POR LOS PROFESORES
                 J. ANTONIO LEMOS B. Y EDUARDO VICTORIA Z.

                              SANTIAGO DE CALI, AGOSTO DE 2004




Informática I. Versión 1.0 Agosto de 2004
                                                                    1
Universidad Autónoma de Occidente


        ASIGNATURA:                             INFORMÁTICA 1
        CODIGO:                                 532219
        CREDITOS:                               3
        PRERREQUISITOS:                         22 créditos aprobados
        CARACTERÍSTICAS:                        HOMOLOGABLE, VALIDABLE
        FACULTAD:                               INGENIERÍA
        PROGRAMA:                               INGENIERÎAS
        DEPARTAMENTO QUE FRECE:                 CIENCIAS DE LA INFORMACIÓN
        AREA:                                   INFORMÂTICA
        PERIODO ACADÉMICO:                      Agosto – Diciembre de 2004


OBJETIVO GENERAL
Capacitar al estudiante en el diseño e implementación de algoritmos computacionales, utilizando los
conceptos básicos de la algoritmia, e introduciéndolo en el estudio de la programación orientada a
objetos.

OBJETIVOS ESPECÍFICOS

           identificar los sistemas básicos de numeración y sus operaciones
           fundamentales.
           Comprender las operaciones básicas de la lógica booleana.
           Modelar procesos mediante técnicas algorítmicas.
           Reconocer y aplicar correctamente las diferentes estructuras de decisión y de
           repetición en programación de computadores.
           Conocer y apropiar el paradigma Orientado a Objetos y su aplicación en la
           programación.

CONTENIDO PROGRAMÁTICO

           UNIDAD 1 - Sistemas numéricos                                        Pág. 7

           1.1 Sistema binario
           1.2 Sistema octal
           1.3 Sistema hexadecimal
           1.4 Sistema decimal
           1.5 Conversión entre sistemas
           1.6 Suma y resta binaria
           1.7 Código ASCII y UNICODE
           1.8 Clase práctica

           UNIDAD 2 - Sistemas lógicos                                          Pág. 15


           2.1 Conectivos relacionales y lógicos
           2.2 Proposiciones lógicas simples y compuestas
           2.3 Tablas de verdad para las operaciones lógicas básicas
           2.4 Clase práctica

           UNIDAD 3 - Herramienta de Programación                               Pág. 29

Informática I. Versión 1.0 Agosto de 2004
                                                                                                 2
Universidad Autónoma de Occidente


           3.1 Breve historia de los estilos de Programación
           3.2 Origen del paradigma Orientado a Objetos
           3.3 Definiciones de clases y objetos
           3.4 Características básicas del lenguaje Java
           3.5 Construcción básica de una aplicación
           3.6 Entrada de datos estándar
           3.7 Salida de datos estándar
           3.8 Descarga e instalación del lenguaje
           3.9 Compilación y ejecución de una aplicación
           3.10 Clase práctica

           UNIDAD 4 - Tipos de datos, variables y Operadores (Java)    Pág. 61

           4.1 Variables
           4.2 Palabras reservadas
           4.3 Tipos de datos
           4.4 Promoción de datos (Casting)
           4.5 Operadores aritméticos
           4.6 Operador módulo ( % )
           4.7 Operadores de asignación
           4.8 Operadores de incremento y decremento
           4.9 Operadores relacionales
           4.10 Operadores lógicos boléanos
           4.11 Precedencia y asociatividad de los operadores
           4.12 Clase práctica

           UNIDAD 5 – Algoritmos                                       Pág. 69

           5.1 Historia de la programación
           5.2 Tipos de Algoritmos
           5.3 Representación de los Algoritmos
           5.4 Propiedades de los Algoritmos
           5.5 Clase práctica

           UNIDAD 6 - Sentencias de control en Java                   Pág. 113

           6.1 Sentencias de decisión o selección
               6.1.2 Selección simple ( if )
               6.1.3 Selección doble ( if – else ; if – else - if )
               6.1.4 Selección múltiple ( switch )
           6.2 Sentencias de Repetición ( 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 práctica

           UNIDAD 7 – Arreglos

           7.1 Definición de Arreglos
           7.2 Arreglos Unidimensionales


Informática I. Versión 1.0 Agosto de 2004
                                                                                 3
Universidad Autónoma de Occidente




METODOLOGÍA

El profesor dedicará 180 minutos semanales (dos bloques de 90 minutos) a las actividades
presenciales, las cuales estarán compuestas por:
       1) Clases teórico-prácticas en las cuales el profesor expondrá cada uno de los nuevos temas con
          ejemplos descriptivos y asignará las lecturas y prácticas necesarias.
       2) Talleres (Prácticas Dirigidas) en los cuales, por grupo de estudio, se resolverán ejercicios.
          El profesor asesorará a los grupos. Al final todos los estudiantes deberán tener resueltos los
          ejercicios y cada grupo avanzará en el proceso de conocimiento según su particular interés
          y necesidad de saber. Estos ejercicios realizados en clase deberán ser implementados en
          computador en las prácticas de laboratorio.
       3) Prácticas Independientes: para ser realizadas en las macro-salas de PC’s de la UAO en el
          tiempo libre del estudiante.
       4) Se efectuarán 3 evaluaciones parciales de la asignatura con la ponderación que se muestra en
          el numeral V. De esta forma, para obtener resultados satisfactorios, el estudiante deberá ir
          construyendo el conocimiento a través de aproximaciones sucesivas y durante: las clases,
          talleres, trabajo personal y trabajo en grupo de estudio.


EVALUACIÓN
                                                               Mínimo: 3 talleres, 3 quices y 3 trabajos
           Primer Parcial                   15%                independientes. Se sugieren grupos de 2
           Segundo Parcial                  25%                o de 3 estudiantes.
           Tercer Parcial                   25%
           Talleres y Quices                    15% (Algunos talleres como trabajo independiente)
           Trabajos Adicionales             20% (Trabajo independiente)

REFERENCIAS BIBLIOGRÁFICAS

           1. Área de Informática UAO, Módulo de Informática 1, Publicaciones UAO.
           2. CEBALLOS, Francisco J., JAVA 2 Curso de Programación. Ed. Alfaomega. Ra–Ma.
              2000.
           3. Joyanes Aguilar Luis & Zahonero Martínez Ignacio, “Programación en Java 2 –
              Algoritmos, Estructuras de Datos y Programación orientada a Objetos”, Ed. McGrawHill,
              2002.
           4. DEITEL, H.M., DEITEL, P. J. How to program Java. 3ª Edición. Ed. Prentice Hall. 2000.
           5. FROUFE, Augustín. JAVA2 Manual de Usuario y Tutorial. 2ª Edición Ed. Alfa Omega
              2000.
           6. WU, Thomas C. Introducción a la programación orientada a objetos con Java. Ed. Mc
              Graw Hill. España. 2000.
           7. ARNOW, David. WEISS, Gerald, Introducción a la programación con Java. Un enfoque
              orientado a objetos. Ed. Addison Wesley. España.2001

ELECTRÓNICAS
           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.   Documentación 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/

Informática I. Versión 1.0 Agosto de 2004
                                                                                                           4
Universidad Autónoma de Occidente

FUENTES DE DONDE SE RECOPILÓ EL MATERIAL PARA LA ELABORACIÓN DE
ESTE MÓDULO DE INFORMÁTICA I.

- Universidad de Valencia, España, Depto. de Informática
           http://informatica.uv.es/docencia/fguia/TI/Libro/PDFs/CAPI4.pdf

- Universidad de Oviedo,España, Depto. de Informática
     Profesor Daniel Gayo.
       http://di002.edv.uniovi.es/~dani/asignaturas/

- Aprenda Java como si estuviera en primero, Escuela Superior de Ingenieros Industriales de San
  Sebastián.
     http://mat21.etsii.upm.es/ayudainf/aprendainf/Java/Java2.pdf

- Matemáticas para Computación, Seymour Lipschutz, McGraw – Hill, 1992

- Informática III, Programación Orientada a Objetos (Java), Recopilación: Lyda Peña Paz




Informática I. Versión 1.0 Agosto de 2004
                                                                                                  5
Universidad Autónoma de Occidente




Informática I. Versión 1.0 Agosto de 2004
                                            6
Universidad Autónoma de Occidente

UNIDAD 1. SISTEMAS NUMÉRICOS

ARITMÉTICA Y REPRESENTACIÓN DE LA
INFORMACIÓN EN EL COMPUTADOR

Dos de los aspectos básicos que se presentan en el tratamiento de la información, son cómo
representarla (de lo cual dependerá sus posibilidades de manipulación) y cómo almacenarla
físicamente. La primera se resuelve recurriendo a un código adecuado a las posibilidades internas del
computador, que abordaremos en el presente capítulo. La segunda tiene que ver con los llamados
soportes de información y es una cuestión que pertenece al ámbito del soporte físico del computador.

En la raíz de los desarrollos informáticos está el hecho de que todo dato puede ser representado por
un conjunto de bits (Los dígitos de un número binario se conocen como bits -Binary digit – digito
binario- por su nombre en inglés), circunstancia que permite a la ALU (Unidad Aritmético-Lógica)
realizar un gran número de operaciones básicas utilizando su representación binaria. El paso a
códigos binarios es una misión que el computador lleva a cabo automáticamente, 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, cuestión indispensable para
comprender determinados comportamientos de la máquina. Para ello empezaremos recordando
algunos conceptos relativos al sistema de numeración binario y a las transformaciones entre éste y el
sistema decimal.

1.1 Sistemas de numeración en informática

       Llamaremos sistema de numeración en base b, a la representación de números mediante un
alfabeto compuesto por b símbolos o cifras. Así todo número 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 posición que ocupa dentro del número.

En el sistema de numeración decimal, se utiliza, b = 10 y el alfabeto está constituido por diez
símbolos, denominados también cifras decimales:

           {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}                     (1.1)

y, por ejemplo, el número decimal 278.5 puede obtenerse como suma de:

                                 200
                                  70
                                   8
                                   0.5
                                 278 .5

es decir, se verifica que:                  278.5 = 2×102 + 7×101 + 8×100 + 5×10-1

Cada posición, por tanto, tiene un peso específico (en el sistema decimal, cada posición además tiene
un nombre):
                     Valor en el ejemplo          Nombre
posición 0 peso b0            8                   unidades
                  1
posición 1 peso b             7                   decenas
posición 2 peso b2            2                   centenas
posición -1 peso b-1          5                   décimas
Informática I. Versión 1.0 Agosto de 2004
                                                                                                   7
Universidad Autónoma de Occidente


Generalizando, se tiene que la representación de un número 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.

Nótese que el valor que tome b determina la longitud de la representación; así, por un lado, resulta
más cómodo que los símbolos (cifras) del alfabeto sean los menos posibles, pero, por otra parte,
cuanto menor es la base, mayor es el número de cifras que se necesitan para representar una cantidad
dada. Como ejemplo veamos cual es el número 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 = 1×85 + 7×84 + 5×83 + 3×82 + 7×81 + 2×80 =
                = 6×104 + 4×103 + 2×102 + 5×101 + 0×100 = 64250)10

1.1.1 Definición del Sistema Binario

En el sistema de numeración binario b es 2, y se necesita tan sólo un alfabeto de dos elementos para
representar cualquier número: {0,1}. Los elementos de este alfabeto se denominan cifras binarias o
bits. En la Tabla 1.1 se muestran los números enteros binarios que se pueden formar con 3 bits, que
corresponden a los decimales de 0 a 7.

                                            Tabla 1.1.- Números binarios del 0 al 7

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


Estos números son generados así: el primer dígito de derecha a izquierda se multiplica por 20, el
segundo por 21 y el tercero por 22; por lo tanto el binario 1012 sería
         1x22 + 0x21 + 1x20 = 1x4 + 0x2 + 1x1 = 5.

1.1.2 Transformaciones entre bases binaria y decimal

Para transformar un número 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 números binarios:

           110100; 0.10100; 10100.001

           110100)2 = (1×25) + (1×24) + (1×22) = 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


Informática I. Versión 1.0 Agosto de 2004
                                                                                                    8
Universidad Autónoma de Occidente

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 números: 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 número decimal a binario:

a) La parte entera del nuevo número (binario) se obtiene dividiendo la parte entera del número
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 serán
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 número binario se obtiene multiplicando por 2 sucesivamente la
parte fraccionaria del número decimal de partida y las partes fraccionarias que se van obteniendo en
los productos sucesivos. El número binario se forma con las partes enteras (que serán 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, habiéndonos detenido cuando la parte decimal es nula, el número decimal 26.1875 en
binario es:
       26.1875)10 = 11010.0011)2

NOTA: un número real no entero presentará siempre cifras después del punto decimal, pudiendo ser
necesario un número finito o infinito de éstas, dependiendo de la base en que se represente; por
ejemplo el número 1.6)10 representado en binario sería 1.100110011001...)2, requiriendo infinitas
cifras para ser exacto, como también ocurre con muchos números representados en decimal.

Informática I. Versión 1.0 Agosto de 2004
                                                                                                   9
Universidad Autónoma de Occidente

1.1.3 Códigos Intemedios

Como acabamos de comprobar, el código binario produce números con muchas cifras, y para evitarlo
utilizamos códigos intermedios que son bases mayores, que no se alejen de la binaria. Estos se
fundamentan en la facilidad de transformar un número 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 códigos intermedios los
sistemas de numeración en base 8 (u octal) y en base 16 (o hexadecimal).

1.1.3.1 Base Octal

       Un número octal puede pasarse a binario aplicando los algoritmos ya vistos en secciones
anteriores. No obstante, al ser b=8=23, el proceso es más 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 símbolos binarios (3 bits) se agrupan para formar una cifra de la representación en octal, por
tanto en general puede hacerse la conversión fácilmente, de la forma siguiente:

Para transformar un número binario a octal se forman grupos de tres cifras binarias a partir del
punto decimal hacia la izquierda y hacia la derecha (añadiendo ceros no significativos cuando sea
necesario para completar grupos de 3). Posteriormente se efectúa directamente la conversión a octal
de cada grupo individual de 3 cifras, y basta con recordar como se generaron los números en la tabla
1.1 para poder realizar rápidamente la conversión.
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 más que convertir individualmente a binario (tres bits) cada cifra
octal, manteniendo el orden del número original. Por ejemplo:

           537.24)8 = 5   3   7  .  2   4
                     101 011 111 . 010 100 = 101011111.0101)2

Para transformar un número de octal a decimal se aplica la expresión (1.3) con b=8.

Para transformar un número de decimal a octal se procede de forma análoga 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 número en base hexadecimal (esto es, b=16) es necesario disponer de un
alfabeto de 16 símbolos:
                             {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}
                             Tabla 1.2.- Números binarios del 0 al 7
Hexadec  0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
Décimal  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



Informática I. Versión 1.0 Agosto de 2004
                                                                                                  10
Universidad Autónoma de Occidente

Al ser b=16=24, de modo similar al caso octal, cada símbolo hexadecimal se corresponde con 4
símbolos 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 fácil convertir números de binario a octal, y viceversa,
y de binario a hexadecimal, y viceversa, también resulta sencillo efectuar esta operación
electrónicamente o por programa, por lo que a veces el computador utiliza este tipo de notaciones
intermedias como código interno o de entrada/salida, y también para visualizar el contenido de la
memoria o de los registros.

Para transformar un número de hexadecimal a decimal se aplica la expresión (1.3) con b=16.

Para pasar un número de decimal a hexadecimal se hace de forma análoga 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 Aritméticas y Lógicas

       El procesamiento de la información incluye realizar una serie de operaciones con los datos;
estas operaciones y las particularidades de las mismas en su realización por el computador son el
objeto de los próximos apartados.

Operaciones Aritméticas con Números Binarios

Las operaciones aritméticas básicas (suma, resta, multiplicación y división) en sistema binario se
realizan en forma análoga a la decimal aunque, por la sencillez de su sistema de representación, las
tablas son realmente simples:

                                Tabla 1.3.- Operaciones básicas en binario
           Suma aritmética            Resta aritmética           Producto aritmético
            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 (negación de cada bit). Posteriormente a
este número 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 número de
términos excede al minuendo, se debe realizar desbordamiento de extremos. (No se toma el bit de
extrema izquierda en el resultado ).
Informática I. Versión 1.0 Agosto de 2004
                                                                                                 11
Universidad Autónoma de Occidente

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)

                                                                Como se presenta acarreo se omite el bit

                                                                de extrema izquierda.

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 aritméticas 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 añadir un cero a la derecha, o desplazar el punto decimal a la derecha, siendo esto similar
a multiplicar por 10)10 un número 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



Informática I. Versión 1.0 Agosto de 2004
                                                                                                           12
Universidad Autónoma de Occidente

                                                        Ejercicios
Llene todas las casillas en blanco, sabiendo que las columnas agrupan el sistema numérico y el
número 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 Lógicas

Un dígito binario, además de representar una cifra en base dos, también puede interpretarse como un
valor booleano o dato lógico (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í, además de las operaciones aritméticas con
valores binarios, se pueden llevar a cabo operaciones booleanas o lógicas en las que estos valores se
consideran señales generadas por conmutadores. Las operaciones booleanas más importantes son:

           OR lógico (también denominado unión, suma lógica (+) o función O),
           AND lógico (también intersección, producto lógico ( . ) o función Y)
           la complementación ( - ) (o inversión, negación, o función NOT o NO).

Nótese que las dos primeras son operaciones de dos operandos o binarios mientras que la
complementación es unaria. Estas operaciones se rigen según la Tabla 4.4.

Informática I. Versión 1.0 Agosto de 2004
                                                                                                  13
Universidad Autónoma de Occidente

                                            Tabla 1.4.- Operaciones lógicas

                                            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 lógicos se corresponden parcialmente con el producto y suma
binarios, y lo más significativo, es la posibilidad de implementar estas operaciones lógicas, y por
tanto las aritméticas binarias, en forma de circuitos. En la siguiente unidad se revisa más
ampliamente las operaciones lógicas.




Informática I. Versión 1.0 Agosto de 2004
                                                                                                14
Universidad Autónoma de Occidente

UNIDAD 2. SISTEMAS LÓGICOS

LOGICA, TABLAS DE VERDAD

2.1 Introducción.

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, están 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, implícitamente, 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
            minúsculas o mayúsculas, con o sin subíndices) para denotar enunciados.


2.2 Conjunción, p ^ q

Dos enunciados cualesquiera se pueden combinar con la palabra “y” para formar un enunciado
compuesto llamado la conjunción de los enunciados originales. Simbólicamente, p ^ q.

Denota la conjunción 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:
                                            p     q     p^q
                                            V     V      V
                                            V     F      F
                                            F     V      F
                                            F     F      F


En este caso, la primera línea es una manera abreviada de decir que si p es verdadero y q es
verdadero, entonces p ^ q es verdadero. Las otras líneas tienen significados análogos. Consideramos
que esta tabla define precisamente el valor de verdad del enunciado compuesto p ^ q como una
función 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.

Informática I. Versión 1.0 Agosto de 2004
                                                                                                   15
Universidad Autónoma de Occidente

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 Disyunción, 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 disyunción de los dos enunciados originales. Simbólicamente, p ν q.

Denota la disyunción 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     pνq
                                                   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.

  Observación: La palabra española “o” se usa comúnmente 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 señaló 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 Católica” usa el “o” en el segundo sentido llamado disyunción exclusiva.
A no ser que se diga otra cosa, la “o” se usara en el primer sentido. Esta observación hace sobresalir
la precisión que ganamos con nuestro lenguaje simbólico: pν q esta definido por su tabla de verdad y
siempre significa “p y / o q”.

2.4 Negación, ~ p
Dado cualquier enunciado p, se puede formar otro enunciado, llamado la negación de p, escribiendo “
Es falso que...” antes de p o, si es posible insertando en p la palabra “no”. Simbólicamente, ~ p,
denota la negación de p (se lee “no p”).




Informática I. Versión 1.0 Agosto de 2004
                                                                                                    16
Universidad Autónoma de Occidente

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 negación 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 negación de (a); y (e) y (f) son cada uno la negación 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.

Observación: La notación lógica para las conectivas “y”, “o” y “no” no es estándar. 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 lógicas (^, ν, ~ y otras que se discutirán 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
proposición.
   Ahora el valor de verdad de una proposición depende exclusivamente de los valores de verdad de
sus variables, mejor dicho, el valor de verdad de una proposición se conoce una vez que se conozcan
los valores de verdad de sus variables. La tabla de verdad de la proposición ~ (p ^ ~ q), por ejemplo,
se construye como sigue:


                                                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
Observe que las primeras                                                 columnas de la tabla son para
las variables p,q,...y que hay suficientes líneas 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 líneas; para 3 variables se necesitan 8 líneas; y, en general, para n variables se necesitan 2n líneas.)
Hay pues una columna para cada etapa “elemental” de la construcción 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 proposición, que aparece en la ultima columna.
Informática I. Versión 1.0 Agosto de 2004
                                                                                                       17
Universidad Autónoma de Occidente

    Observación: La tabla de verdad de la proposición, anterior consiste precisamente en las
columnas bajo las variables y la columna bajo la proposición:
                                                   p         q       ~(p^~q)
                                                   V         V         V
                                                   V         F         F
                                                   F         V         V
                                                   F         F         V

Las otras columnas se usaron solamente en la construcción 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 proposición se escribe en la línea superior a la derecha de sus variables, y que hay una
columna bajo cada variable o conectiva de la proposición. Los valores de verdad se colocan entonces
en la tabla de verdad en varios pasos como sigue:


   P        q      ~         (p       ^        ~       q)                      p          q       ~        (p        ^       ~     q)
 V     V                    V                            V                     V          V                V                 F     V
 V     F                    V                            F                     V          F                V                 V     F
 F     V                    F                            V                     F          V                F                 F     V
 F     F                    F                            F                     F          F                F                 V     F
  Paso                      1                            1                         Paso                     1                 2     1

                             (a)                                                          (b)


   P        q      ~         (p       ^        ~       q)                            p        q       ~         (p       ^   ~     q)
 V     V                    V         F       F          V                          V        V        V         V    F       F     V
 V     F                    V         V       V          F                          F        V        F         V    V       V     F
 F     V                    F         F       F          V                          F        F        V         F    F       F     V
 F     F                    F         F       V          F                          F        F        V         F    F       V     F
  Paso                      1         3       2          1                                 Paso        4        1     3        2    1
(c )                                                                                     (d)

La tabla de verdad de la proposición 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 Tautologías 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
Informática I. Versión 1.0 Agosto de 2004
                                                                                                                                    18
Universidad Autónoma de Occidente

llama tautologías. Análogamente, una proposición P(p,q,…)se llama contradicción 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 proposición “p o no p”, es decir, p ν ~ p, es una tautología y la
proposición “p y no p”, es decir, p ^ ~ p, es una contradicción. Esto se verifica construyendo sus
tablas de verdad.


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


Observemos que la negación de una tautología es una contradicción ya que siempre es falsa, y la
negación de una contradicción es una tautología ya que siempre es verdadera.
    Ahora, sea P(p, q, ...) una tautología, 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 tautología P(p, q, …) y tenemos
aún una tautología. En otras palabras:

       Principio de substitución: Si P (p, q, ...) es una tautología, entonces P(P1, P2,...) es una
      tautología para proposiciones cualesquiera P1, P2,...

Ejemplo 5: Por la anterior tabla de verdad, pν ~ p es una tautología. Reemplazando p por q ^ r
obtenemos la proposición ( q ^ r ) ν ~ ( q ^ r ) que, por el principio de substitución también debiera
ser una tautología.
Esto se verifica con la siguiente tabla de verdad.

                                     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


2.7 Equivalencia Lógica: Álgebra de Proposiciones

Se dice que dos proposiciones P ( p, q, ...) y Q (p, q, ...) son lógicamente 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:

          p      q       p^q ~ (p^q)                      p     Q       ~p      ~q      ~pν~q
          V      V       V           F                    V    V        F       F           F
          V      F       F           V                    V    F        F       V           V
          F      V       F           V                    F    V        V       F           V
          F      F       F           V                    F    F        V       V           V
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 lógicamente
equivalentes y podemos escribir:
                                  ~ ( p^q) ≡ ~ p ν ~ q
Informática I. Versión 1.0 Agosto de 2004
                                                                                                       19
Universidad Autónoma de Occidente

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 lógicamente
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 tautología y f denota una contradicción.

2.8 Enunciados Condicional y Bicondicional

Muchos enunciados, particularmente en la matemática, 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 sólo si q”.
Otro enunciado común 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:

                                      p     q    p→ q              p     q    p↔q
                                      V     V     V                 V    V     V
                                      V     F     F                V     F     F
                                      F     V     V                F     V     F
                                      F     F     V                F     F     V


                                                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 involución
                              9       ~ ~ p≡p
                                                Leyes de DeMorgan
                              10a. ~ (p ν q) ≡ ~ p ^ ~ q 10b. ~ (p ^ q) ≡ ~ p ν ~ q


                                        Tabla 2.1. Leyes del Álgebra de Proposiciones
Informática I. Versión 1.0 Agosto de 2004
                                                                                                     20
Universidad Autónoma de Occidente

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 idéntica a la tabla de verdad de p → q. Así que p→ q es
lógicamente equivalente a la proposición ~ p ν q:

                                                      p→q≡~pνq

En otras palabras, el enunciado condicional “Si p entonces q” es lógicamente 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.


                                            Condicional   Recíproca    Inversa   Contrarecíproca
                            p        q        p→q         q→ p        ~p→~q       ~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 lógicamente equivalentes. Por
otra parte, se puede ver que un enunciado condicional y su contrarreciproco son lógicamente
equivalentes. Enunciamos este resultado formalmente:

Teorema 2.1: Un enunciado condicional p→ q y su contrarreciproca ~ q→ ~ p son lógicamente
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² )
Informática I. Versión 1.0 Agosto de 2004
                                                                                                   21
Universidad Autónoma de Occidente

           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 conclusión; denotamos un argumento por
             P1,P2,..., Pn + Q

Se dice que un argumento es valido si las premisas dan (como consecuencia) la conclusión; mas
formalmente, damos la siguiente

           Definición: Un argumento P1,P2,,...., Pn + Q es válido si Q es verdadero cada vez que las
           premisas P1,P2,..., Pn sean verdaderas.

Un argumento que no es válido se llama falacia.

Ejemplo 8:

     (a) El siguiente argumento es válido:

                                            p.p → q + q (Ley de independencia, modus poniendo ponens.)

       la demostración 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 simultáneamente 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 simultáneamente 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:

Informática I. Versión 1.0 Agosto de 2004
                                                                                                         22
Universidad Autónoma de Occidente

                                     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)
           VV    V    V      V      V      V      V       V      V      V      V       V      V
           VV    F    V      V      V      F      V       F      F      V      V       F      F
           VF    V    V      F      F      F      F       V      V      V      V       V      V
           VF    F    V      F      F      F      F       V      F      V      V       F      F
           FV    V    F      V      V      V      V       V      V      V      F       V      V
           FV    F    F      V      V      F      V       F      F      V      F       V      F
           FF    V    F      V      F      V      F       V      V      V      F       V      V
           FF    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
simultáneamente solo en los casos (lineas) 1, 5, 7 y 8, y en estos casos la conclusión 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 jóvenes.
En este caso el enunciado S debajo de la línea denota la conclusión del argumento, y los enunciados
S1 y S2 por encima de la línea 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 válido.

2.10 Implicación Lógica.

      Se dice que una proposición P (p,q,...) implica lógicamente una proposición 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 lógicamente 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 (líneas) 1 y 2, y en estos casos
pν q también es verdadera. En otras palabras , p implica lógicamente p ν q.




Informática I. Versión 1.0 Agosto de 2004
                                                                                                     23
Universidad Autónoma de Occidente

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

       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 válido, y recíprocamente. Aún más, el argumento P + Q es válido si y solo si el enunciado
condicional P → Q es siempre verdadero, o sea, si es una tautología. 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 lógicamente a Q (p, q, ...).
           (ii)       El argumento P (p,q,...) + Q (p, q, ...) es válido.
           (iii)      La proposición P (p,q,...) → Q (p, q, ...) es una tautología.

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 también es cierto. Así, la noción de implicación lógica está intimamente ligada a la de la
equivalencia lógica.


                                                  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 español.

       (1) No hace frió.                        (4) Está lloviendo o no está haciendo frío.
       (2) Está haciendo frío y está lloviendo. (5) Ni está haciendo frío ni está lloviendo.
       (3) Está haciendo frío 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 simbólica 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)

Informática I. Versión 1.0 Agosto de 2004
                                                                                                                      24
Universidad Autónoma de Occidente

Proposiciones y sus Tablas de Verdad.

2.3 Encuentre la tabla de verdad de ~ p ^ q.
                                                 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     ~p^q
                                                    V        V     F       F
                                                    V        F     F       F
                                                    F        V     V       V
                                                    F        F     V       F
                                            Paso    2          1     3      1
Método 1                                      Método 2


2.4 Encuentre la tabla de verdad de ~ (p ν q).
                                                                 p       q   ~      (p       ν       q)
p      q        p ν q ~ (p ν q)                                  V       V   F      V        V        V
V      V         V       F                                       V       F   F      V        V        F
V       F        V       F                                       F       V   F      F        V        V
F       V        V       F                                       F       F   V      F        F        F
F       F        F       V
                                                                  Paso        3 1     2               1
       Método 1                                                              Método 2


2.5 Encuentre la tabla de verdad de ~ (p ν ~ q).

p q            ~ q p ν ~ q ~ (p ν ~ q)                      p    q           ~ (p ν ~ q)
V V            F      V        F                             V V             F V V               F    V
V F            V      V        F                             V F             F V V               V    F
F V            F      F        V                             F V             V F F               F    V
F F            V      V        F                             F F             F F V               V    F
                                                             Paso             4 1 3              2    1
               Método1                               Método 2

(observe que esta tabla de verdad es idéntica a la del problema 2.3)


Tautologías y Contradicciones.

2.6 Verifique que la proposición p ν ~ (p ^ q) es una tautología.
     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
Informática I. Versión 1.0 Agosto de 2004
                                                                                                          25
Universidad Autónoma de Occidente


     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 tautología.

2.7 Verifique que la proposición (p ^ q) ^ ~ (p ν q) es una contradicción.

     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 contradicción.

Equivalencia Lógica.

2.8 Demuestre que la disyunción distribuye sobre la conjunción, 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 idénticas, las proposiciones son equivalentes.

2.9 Demuestre que la operación de disyunción se puede escribir en términos de las operaciones
    conjunción y negación. Específicamente, 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 idénticas, las proposiciones son equivalentes.




Informática I. Versión 1.0 Agosto de 2004
                                                                                                     26
Universidad Autónoma de Occidente

2.10 Simplifique cada proporción usando la tabla 2-1: (a) p ν (p ^ q), (b) ~( pν q) ν (~ p ^ q).

(a)             Equivalencia                                               Razón
       (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                                            Razón
       (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


Negación.

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)
                          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



       (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

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


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 francés.
      (b)   No es cierto que él estudie física pero no matemática.
      (c)   No es cierto que las ventas estén bajando y los precios subiendo.
      (d)   No es cierto que no esté haciendo frió o que esté lloviendo.


Informática I. Versión 1.0 Agosto de 2004
                                                                                                   27
Universidad Autónoma de Occidente

     (a) Sea p “Su madre es inglesa” y sea q “Su padre es Francés”. Entonces el enunciado dado es
         ~ ( pν q ). Pero ~ ( pν q ) ≡ ~ p ^ ~ q. Por lo tanto, el enunciado dado es lógicamente
         equivalente con el enunciado “Su madre no es inglesa y su padre no es francés”.
     (b) Sea p “El estudia fisica” y q “El estudia matemáticas”. Entonces el enunciado dado es
         ~ ( p ^ ~ q).pero ~ (p ^ ~ q) ≡ ~ pν ~ ~ q ≡ ~ p ν q. Así que el enunciado dado es lógicamente
         equivalente al enunciado “El no estudia fisica o estudia matemáticas”.
     (c) Como ~ (p ^ q) ≡ ~ p ν ~ q, el enunciado dado es lógicamente equivalente al enunciado “Las
         ventas estan subiendo o los precios estan bajando”.
     (d) Como ~ (~ p ν q) ≡ p ^ ~ q, el enunciado dado es lógicamente 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 frío 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 lógicamente equivalente con la bicondicional
    “p si y sólo si q”; o sea, (p → q) ^ ( q → p) ≡ p ↔ q

     (c) Demuestre que la bicondicional p ↔ q se puede escribir en términos 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)




Informática I. Versión 1.0 Agosto de 2004
                                                                                                    28
Universidad Autónoma de Occidente

UNIDAD 3. HERRAMIENTA DE PROGRAMACIÓN.

3.1 Introducción
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 módulo, se tratará solamente la acepción de orientado a
objetos como paradigma de programación.

El paradigma orientado a objetos se asoció durante mucho tiempo con los lenguajes y la programación
orientada a objetos, sin embargo, en la actualidad, el uso de objetos debería incluir tanto el análisis
como el diseño orientados a objetos, el uso de bases de datos y en general, la ingeniería de software
orientada a objetos.

Aunque no intencionalmente, la programación orientada a objetos implica un mayor grado de análisis,
ya que de alguna forma deben estar definidas las clases, atributos y métodos que se van a
implementar. Por ende, al aumentar el tiempo dedicado al análisis y concepción del software, el
tiempo de las otras etapas se reduce.

3.2 Origen del paradigma Orientado a Objetos
Orientado a Objetos es un término que empezó a acuñarse a finales de los 80's, cuando la
programación requería nuevos paradigmas, nuevas formas de interpretarse. Durante los 90's tomó gran
fuerza, pero indiscutiblemente son las dos últimas décadas las que han empezado a recoger los frutos;
en otros países ya la programación orientada a objetos es un hecho y algunos programadores no
podrían 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 programación como en técnicas apropiadas de
análisis y diseño. Ejemplo de ello son los métodos propuestos por Grady Booch, Ivar Jacobson o
James Rumbaugh entre otros.

3.2.1 Definición de Orientado a Objetos
El concepto de orientado a objetos está relacionado con otros múltiples conceptos: la programación,
las interfaces de usuario y la representación jerárquica de hechos, tienen todos orientación a objetos.
Entonces, ¿cómo podría definirse este término?.

Una definición 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 orientación a objetos es la forma natural de nuestro aprendizaje.
Cuando estamos pequeños se nos enseña a distinguir y agrupar objetos acorde a sus características y/o
comportamientos y es por ello que logramos distinguir una silla de un caballo aunque ambos tengan
patas.

La programación orientada a objetos es un "estilo" de programación 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 métodos que permiten su interacción y la ejecución de diversas tareas para cumplir el
propósito del programa.

Existen muchos lenguajes que permiten realizar la programación orientada a objetos, entre ellos se
destacan Smalltalk, Java, C++, Object Pascal, Eiffel.



Informática I. Versión 1.0 Agosto de 2004
                                                                                                    29
Universidad Autónoma de Occidente

3.3 Breve historia de los estilos de Programación
Desde el principio de la programación se han intentado muchos métodos y procedimientos para lograr
una programación fácil y eficiente.

El primer enfoque, si se puede llamar así, es la programación no estructurada o "programación
espagueti", bajo la cual el programador se sienta frente al computador y empieza a escribir líneas de
código (instrucciones) sin estructura alguna, resultando en un programa largo, difícil de entender y
aun más difícil de modificar.

El primer enfoque formal que se formalizó fue el enfoque procedural (o procedimental), que se
podría resumir como "Usted decide qué procedimiento quiere, y usa el mejor algoritmo que pueda
encontrar". Aunque este enfoque resultaba muy práctico para resolver problemas particulares, no así
cuando se quería reutilizar parte del código o emplear ciertas funciones en otros programas. En
resumen, el enfoque procedural no permitía mejorar la productividad de la construcción del software
por sus características particulares.

Surge entonces un segundo enfoque o paradigma, la programación modular (o funcional). Para esta
época ya se ha incrementado visiblemente el tamaño de los programas desarrollados, lo cual genera
problemas adicionales de productividad. El enfoque de programación modular es algo como "Decide
los módulos que quieres, de forma que las partes del programa y los datos queden ocultos tras los
módulos". La intención primordial de este enfoque es dividir el problema (programa necesario) en
partes independientes pero relacionadas, que se puedan solucionar de manera separada.

La programación modular propicia la reutilización de código, ya que existen partes (módulos) que
podrían 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 código pero no por los datos y, normalmente, los módulos requerían de datos que
estaban fuera de ellos.

En un intento por mejorar la concepción 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 reutilización de código, y la programación por
componentes; ahora se podría "armar" un programa, tal como se arma un computador o una nevera,
bastaría conseguir las piezas adecuadas y establecer los enlaces necesarios. A este novedoso enfoque
se le conoce como programación orientada a objetos.

La programación orientada a objetos presenta múltiples ventajas. Empecemos por decir que los
programas ahora estarán compuestos por objetos. Cada objeto, a su vez, está compuesto por los datos
o características que lo distinguen y los métodos o procedimientos necesarios para su manipulación.

3.4 Definiciones de clases y objetos
Todos los estilos o enfoques de programación se encuentran basados en un marco referente, de la
misma forma todas las técnicas 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, según Booch, se compone de cuatro elementos esenciales, sin los cuales
perdería la propiedad de orientación a objetos. Estos son:

•    Abstracción
Informática I. Versión 1.0 Agosto de 2004
                                                                                                  30
Universidad Autónoma de Occidente

•    Encapsulamiento
•    Modularidad
•    Jerarquía

Igualmente incluye otros elementos que, sin ser esenciales, resultan bastante útiles dentro de este
estilo de programación:

•    Tipos
•    Concurrencia

La adecuada comprensión 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 programación orientada
a objetos dejaría de emplear todo el poder que otorgan los objetos.

3.4.1.1 Abstracción
El primer concepto fundamental del paradigma orientado a objetos es la abstracción. Una definición
bastante apropiada del término abstracción es la dictada por Booch:

"Una abstracción denota las características 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 características
básicas de ésta, permitiéndonos 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
interés particular.

Actividad #1: Describa las abstracciones que usted posee de computador, mesa, cama, gato.

3.4.1.2 Encapsulamiento
Una característica 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 interactúan con él
no requieren conocimiento alguno sobre la forma como opera internamente, requiriendo sólo el
conocimiento de los parámetros necesarios para dicha interacción.

Si los objetos no mantienen el encapsulamiento, se estaría violando uno de los principios básicos de la
orientación a objetos.

La definición original de Booch plantea: "Encapsulamiento es el proceso de compartimentalizar los
elementos de una abstracción, 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 cómo
realizan su funcionamiento, pues ellos están encapsulados.

3.4.1.3 Modularidad
La modularidad es un concepto muy antiguo. Aunque es válido para la orientación a objetos no es
exclusivo de ésta. Meyers mencionó la ventaja de la modularidad como: "La acción de partir un
programa en componentes individuales puede reducir su complejidad en algún grado.... aunque la
Informática I. Versión 1.0 Agosto de 2004
                                                                                                    31
Universidad Autónoma de Occidente

partición de un programa es útil por esto, una justificación más poderosa para partir un programa es
que él sea un número de límites bien definidos y documentados. Estos límites o interfaces son
invaluables en la comprensión del programa".

La modularidad es básicamente la división en partes de un programa de software (para nuestro caso),
considerando que estos módulos deben mantener la cohesión y el acoplamiento adecuado.

Actividad #3: Normalmente las cosas que nosotros empleamos se encuentran compuestas de partes
(al menos eso dice la Teoría General de Sistemas). Intenta determinar las partes que componen: una
bicicleta, un computador, una casa.

3.4.1.4 Jerarquía
La jerarquía se puede entender como la clasificación u ordenamiento de las abstracciones, esto
permite asociar unos objetos con otros.
Existen dos clases básicas de jerarquías (o clasificaciones), la que corresponde a es parte de, llamada
también jerarquía de partes. Por ejemplo, el manubrio es parte de la bicicleta, o la RAM es parte del
computador. La otra jerarquía es la que corresponde a es un, llamada también jerarquía de tipos. Por
ejemplo, La vaca es un mamífero, la silla es un mueble.

Actividad #4: Intente establecer la jerarquía 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, Automóvil, Llantas, Bujías, Tanque de Gasolina.

3.4.1.5 Tipos
Los tipos son la representación de las jerarquías de tipos. Cuando varios elementos se agrupan de
acuerdo a ciertas características específicas que ellos guardan en común, 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 más pueden ser intercambiados sólo
en forma muy restringida".

Actividad #5: Es normal que cada cosa que conocemos la caractericemos como perteneciente a un
tipo particular. En qué tipo caracterizaría usted los siguientes objetos: casa, computador, vaca, perro,
silla, cuaderno, libro, universidad.

3.4.1.6 Concurrencia
Normalmente los objetos deben realizar tareas simultáneas, sin que unas afecten a otras. A estos
requerimientos de ejecución 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 abstracción del mundo real que puede representar un hilo de
control separado (una ruta diferente de ejecución).

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 electrónico, una máquina de hacer café, un microondas.

Informática I. Versión 1.0 Agosto de 2004
                                                                                                     32
Universidad Autónoma de Occidente

3.4.2 Definiciones de Orientación a Objetos
Cuando nos referimos específicamente a la programación orientada a objetos, se emplean los
conceptos vistos a través de términos 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 educación, empleamos procesos difíciles de asociación de características y
modelos a nombres determinados.

Una clase es un concepto que incluye características o atributos (datos), y procedimientos de una
entidad del mundo real. Ejemplos de clases son: Mueble, Auto, Medio de Transporte, Edificación, 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 características que los hacen particulares. Tales características son:

•    Tiene un estado (atributos o características)
•    Tiene un comportamiento (métodos 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 características relevantes de esta. Como
se puede suponer, los atributos de la clase se determinan de acuerdo al problema o situación que se
desea tratar; es decir, dependen de la abstracción 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 número de patas, el tipo de tapizado, el estilo, el
   material, la fecha en que fue fabricada.
• La clase carro: tiene como atributos el número de puertas, la marca, el modelo, el precio.

3.4.2.3 Operaciones, métodos y servicios
Las clases, además de atributos, contienen los procedimientos que pueden manipular o procesar estos
datos. A estos procedimientos se les conoce como operaciones, métodos o servicios.

Estos métodos 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 métodos o servicios, arrancar, parar, frenar, aumentar velocidad,
   disminuir velocidad.
• La clase computador: tiene como métodos o servicios, encender, iniciar, arrancar programa.




Informática I. Versión 1.0 Agosto de 2004
                                                                                                     33
Universidad Autónoma de Occidente

3.4.2.4 Identidad
Los objetos deben ser creados y durante su creación deben recibir un nombre y una asignación 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 métodos para cada uno de los conceptos mencionados a
continuación, y especifique si son clases u objetos. Si es un objeto, indique a qué clase pertenecería:
árbol, manzana, casa, Corporación Universitaria Autónoma de Occidente, Secretaría de Gobierno,
Amigo, Estudiante, Perro, Ferrari.

3.4.2.6 Relaciones con otros objetos
Los objetos han sido determinados como partes de la solución 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 métodos de cada objeto. Un objeto envía a otro un mensaje, en
el cual se indica el destino, la operación requerida y los parámetros que debe incluir.

Los mensajes son el corazón 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 través 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 métodos. La herencia responde a la necesidad
de hacer clases nuevas que contienen características 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 número de
líneas a implementar.

Algunos lenguajes como Java resultan ser muy estrictos en términos 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 métodos 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 más, lo cual se
conoce como herencia múltiple.

Del concepto de herencia, se deriva el concepto de jerarquía de clases, que presenta esquemáticamente
la herencia entre las clases.



Informática I. Versión 1.0 Agosto de 2004
                                                                                                    34
Universidad Autónoma de Occidente

Agregación
Cuando un objeto o clase se encuentra compuesta por otros, se dice que existe una relación de
agregación entre ellos.

Actividad #8: Indique que clase de relación existe entre cada conjunto de elementos (considerando
que todos son objetos y que guardan alguna relación).
Procesador, memoria, unidad de disco, diskette, computador, usuario.
Casa, sala, Edificación, Biblioteca pública, sillas, mesas, mesa de comedor.

Polimorfismo
El Polimorfismo es una característica 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 métodos se diferencian básicamente por la
clase de parámetros que reciben. Al recibir el mensaje el objeto, mediante los parámetros identifica
automáticamente la operación que se desea ejecutar; esto se conoce como sobrecarga de métodos. Por
ejemplo: imprimir(factura), imprimir(reporte), imprimir(paz y salvo); aunque la función (método) es
la misma, dependiendo el tipo de argumento que recibe se realizarán diferentes labores.

Algunos lenguajes, como C++, permiten además lo que se llama sobrecarga de operadores (operator
overloading) gracias a la cual se pueden redefinir los operadores aritméticos básicos ( +, - , * , / ). Por
ejemplo: 3 + 5 sumará enteros, mientras "Hola" + " amigos", concatenará cadenas.

Sobreescritura
La sobreescritura corresponde a la otra clase de polimorfismo, llamado también polimorfismo de
generalización. En éste, los métodos heredados de una superclase pueden ser sobrescritos para
elaborar funciones diferentes. Sin embargo, NO se puede variar la signatura (ó firma) del método; es
decir; NO se puede cambiar el nombre, el tipo de los parámetros, el número de parámetros que recibe
y el tipo de dato que devuelve.




Informática I. Versión 1.0 Agosto de 2004
                                                                                                        35
Universidad Autónoma de Occidente

                                               Ejercicios
1. Indique si cada uno de los enunciado presentados a continuación 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 métodos de un objeto no pueden ser usados por otro.
   c. La programación orientada a objetos facilita la reutilización de código.
   d. La relación de herencia indica que un objeto es parte de otro.
   e. Un objeto sólo puede pertenecer a una clase.
   f. El polimorfismo permite que varios métodos tengan igual nombre.
   g. La programación “espagueti” se puede considerar modular.
   h. La programación procedural admite la herencia.
   i. Los métodos de una clase se implementan siguiendo las directrices de la programación
       estructurada
   j. La herencia especifica que una clase posee los mismos métodos y atributos de la clase de la
       cual hereda.
   k. Auto es una instanciación 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. Métodos de Teléfono son establecer comunicación y timbrar.
   p. Manzano hereda de Árbol.
   q. Manzana hereda de Manzano.
   r. Tablero es parte de Profesor.
   s. Otoño es una clase de Estación.
   t. Windows hereda de Sistemas Operativos.
2. Complete las siguientes frases con la palabra adecuada
   a.      La sobrecarga es la implementación de _____________________________________.
   b.      Un objeto es una _________________de una clase.
   c.      La programación __________________________________se basa en partes, cada una con
           características y funciones específicas.
   d.      Cuando una clase redefine un método con la misma signatura que tenía en la clase de la
           cual heredó se denomina __________________.
   e.      La herencia puede ser _________________________o múltiple.
   f.      Las características esenciales que distinguen a un objeto se conocen como
           ____________________del objeto.
   g.      La primera técnica formal de programación conocida fue la programación
           _______________________________________.
   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.      Matemáticas es un objeto de la clase _________________.
   q.      _____________ es un objeto de clase pescado.
   r.      Arroz con pollo ______________ comida.
Informática I. Versión 1.0 Agosto de 2004
                                                                                                 36
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1
trabajo1

Más contenido relacionado

La actualidad más candente

2) ECUACIONES EN DERIVADAS PARCIALES
2) ECUACIONES EN DERIVADAS PARCIALES2) ECUACIONES EN DERIVADAS PARCIALES
2) ECUACIONES EN DERIVADAS PARCIALESedvinogo
 
Ecuaciones diferenciales de primer orden, coeficientes homogéneos
Ecuaciones diferenciales de primer orden, coeficientes homogéneosEcuaciones diferenciales de primer orden, coeficientes homogéneos
Ecuaciones diferenciales de primer orden, coeficientes homogéneosJuan Antonio Garcia Avalos
 
Fisica 3 Hugo Medina Guzmán
Fisica 3 Hugo Medina GuzmánFisica 3 Hugo Medina Guzmán
Fisica 3 Hugo Medina GuzmánHenry Quilla
 
Ecuacion diferencial lineal
Ecuacion diferencial linealEcuacion diferencial lineal
Ecuacion diferencial linealLuis Diaz
 
Guia de practicas de sistema de ecuaciones 2
Guia de practicas de sistema de ecuaciones 2Guia de practicas de sistema de ecuaciones 2
Guia de practicas de sistema de ecuaciones 2Bertha Canaviri
 
Isoclinas, campos de dirección y métodos de euler
Isoclinas, campos de dirección y métodos de eulerIsoclinas, campos de dirección y métodos de euler
Isoclinas, campos de dirección y métodos de eulerCentro de Multimedios
 
Informe de laboratorio de electricidad resistencias en serie y paralelo
Informe de laboratorio de electricidad resistencias en serie y paraleloInforme de laboratorio de electricidad resistencias en serie y paralelo
Informe de laboratorio de electricidad resistencias en serie y paraleloLuis Guevara Aldaz
 
Ecuaciones diferenciales
Ecuaciones diferencialesEcuaciones diferenciales
Ecuaciones diferencialesJuan Martinez
 
Aplicaciones de calculo de integrales dobles y triples
Aplicaciones de calculo de integrales dobles y triplesAplicaciones de calculo de integrales dobles y triples
Aplicaciones de calculo de integrales dobles y tripleswalterabel03
 
Taller componetes rectangulares de un vector
Taller componetes rectangulares de un vectorTaller componetes rectangulares de un vector
Taller componetes rectangulares de un vectorDulmar Torrado
 
Clase 13 PC
Clase 13 PCClase 13 PC
Clase 13 PCTensor
 
Unidad 5. Seleccion sobre Sistemas de Ecuaciones Lineales
Unidad 5.  Seleccion sobre Sistemas de Ecuaciones LinealesUnidad 5.  Seleccion sobre Sistemas de Ecuaciones Lineales
Unidad 5. Seleccion sobre Sistemas de Ecuaciones LinealesRosa Cristina De Pena Olivares
 
Lab nº 3-campo_magnético_generado_en_una_bobina-f2_2019-ciclo 1 marzo
Lab nº 3-campo_magnético_generado_en_una_bobina-f2_2019-ciclo 1 marzoLab nº 3-campo_magnético_generado_en_una_bobina-f2_2019-ciclo 1 marzo
Lab nº 3-campo_magnético_generado_en_una_bobina-f2_2019-ciclo 1 marzoWrcIngenieriaGeotecn
 

La actualidad más candente (20)

2) ECUACIONES EN DERIVADAS PARCIALES
2) ECUACIONES EN DERIVADAS PARCIALES2) ECUACIONES EN DERIVADAS PARCIALES
2) ECUACIONES EN DERIVADAS PARCIALES
 
Ecuaciones diferenciales de primer orden, coeficientes homogéneos
Ecuaciones diferenciales de primer orden, coeficientes homogéneosEcuaciones diferenciales de primer orden, coeficientes homogéneos
Ecuaciones diferenciales de primer orden, coeficientes homogéneos
 
Fisica 3 Hugo Medina Guzmán
Fisica 3 Hugo Medina GuzmánFisica 3 Hugo Medina Guzmán
Fisica 3 Hugo Medina Guzmán
 
Examen 1 de numeros reales
Examen 1 de numeros realesExamen 1 de numeros reales
Examen 1 de numeros reales
 
Ecuacion diferencial lineal
Ecuacion diferencial linealEcuacion diferencial lineal
Ecuacion diferencial lineal
 
Espacios vectoriales
Espacios vectoriales Espacios vectoriales
Espacios vectoriales
 
Guia de practicas de sistema de ecuaciones 2
Guia de practicas de sistema de ecuaciones 2Guia de practicas de sistema de ecuaciones 2
Guia de practicas de sistema de ecuaciones 2
 
Evaluacion de funcion cuadratica
Evaluacion de funcion cuadraticaEvaluacion de funcion cuadratica
Evaluacion de funcion cuadratica
 
Isoclinas, campos de dirección y métodos de euler
Isoclinas, campos de dirección y métodos de eulerIsoclinas, campos de dirección y métodos de euler
Isoclinas, campos de dirección y métodos de euler
 
Informe de laboratorio de electricidad resistencias en serie y paralelo
Informe de laboratorio de electricidad resistencias en serie y paraleloInforme de laboratorio de electricidad resistencias en serie y paralelo
Informe de laboratorio de electricidad resistencias en serie y paralelo
 
Evaluación de funciones reales bachillerato
Evaluación de funciones reales bachilleratoEvaluación de funciones reales bachillerato
Evaluación de funciones reales bachillerato
 
Ecuaciones diferenciales
Ecuaciones diferencialesEcuaciones diferenciales
Ecuaciones diferenciales
 
Aplicaciones de calculo de integrales dobles y triples
Aplicaciones de calculo de integrales dobles y triplesAplicaciones de calculo de integrales dobles y triples
Aplicaciones de calculo de integrales dobles y triples
 
Taller componetes rectangulares de un vector
Taller componetes rectangulares de un vectorTaller componetes rectangulares de un vector
Taller componetes rectangulares de un vector
 
Clase 13 PC
Clase 13 PCClase 13 PC
Clase 13 PC
 
Flujo eléctrico
Flujo eléctricoFlujo eléctrico
Flujo eléctrico
 
Unidad 5. Seleccion sobre Sistemas de Ecuaciones Lineales
Unidad 5.  Seleccion sobre Sistemas de Ecuaciones LinealesUnidad 5.  Seleccion sobre Sistemas de Ecuaciones Lineales
Unidad 5. Seleccion sobre Sistemas de Ecuaciones Lineales
 
Lab nº 3-campo_magnético_generado_en_una_bobina-f2_2019-ciclo 1 marzo
Lab nº 3-campo_magnético_generado_en_una_bobina-f2_2019-ciclo 1 marzoLab nº 3-campo_magnético_generado_en_una_bobina-f2_2019-ciclo 1 marzo
Lab nº 3-campo_magnético_generado_en_una_bobina-f2_2019-ciclo 1 marzo
 
2 problemas alterna
2 problemas alterna2 problemas alterna
2 problemas alterna
 
Integrales multiples
Integrales multiplesIntegrales multiples
Integrales multiples
 

Similar a trabajo1

Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosqueraAlex Lozada
 
Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosqueraed10mos891
 
EDINSON MOSQUERA
 EDINSON MOSQUERA EDINSON MOSQUERA
EDINSON MOSQUERAed10mos891
 
Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosqueraed10mos891
 
Inteligencia artificia 2010 ii
Inteligencia artificia 2010 iiInteligencia artificia 2010 ii
Inteligencia artificia 2010 iiSilencerz
 
Rc(reconocimiento del curso)RC clemencia alvarado)
Rc(reconocimiento del curso)RC clemencia alvarado)Rc(reconocimiento del curso)RC clemencia alvarado)
Rc(reconocimiento del curso)RC clemencia alvarado)clemealvarado19
 
Programa analitico
Programa analiticoPrograma analitico
Programa analiticoymendal
 
Silabo fundamentos programación
Silabo fundamentos programaciónSilabo fundamentos programación
Silabo fundamentos programaciónFernando Solis
 
Rc mónica morantes
Rc mónica morantesRc mónica morantes
Rc mónica morantesMonykhaEM
 
Rc mónica morantes
Rc mónica morantesRc mónica morantes
Rc mónica morantesMonykhaEM
 
Rc mónica morantes
Rc mónica morantesRc mónica morantes
Rc mónica morantesMonykhaEM
 
A152 w0i9 inteligenciaartificial
A152 w0i9 inteligenciaartificialA152 w0i9 inteligenciaartificial
A152 w0i9 inteligenciaartificialjcbp_peru
 
Silabo fund programación abril agosto2015
Silabo fund programación abril agosto2015Silabo fund programación abril agosto2015
Silabo fund programación abril agosto2015Fernando Solis
 
Cc414 taller programacion_concurrente_distribuida
Cc414 taller programacion_concurrente_distribuidaCc414 taller programacion_concurrente_distribuida
Cc414 taller programacion_concurrente_distribuidadeyvis usan
 
Rc sonia judith_linaresdiaz.ppt.
Rc sonia judith_linaresdiaz.ppt.Rc sonia judith_linaresdiaz.ppt.
Rc sonia judith_linaresdiaz.ppt.UNAD
 

Similar a trabajo1 (20)

Modulo Grado11
Modulo Grado11Modulo Grado11
Modulo Grado11
 
Programación II
Programación IIProgramación II
Programación II
 
Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosquera
 
Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosquera
 
EDINSON MOSQUERA
 EDINSON MOSQUERA EDINSON MOSQUERA
EDINSON MOSQUERA
 
Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosquera
 
Inteligencia artificia 2010 ii
Inteligencia artificia 2010 iiInteligencia artificia 2010 ii
Inteligencia artificia 2010 ii
 
Rc(reconocimiento del curso)RC clemencia alvarado)
Rc(reconocimiento del curso)RC clemencia alvarado)Rc(reconocimiento del curso)RC clemencia alvarado)
Rc(reconocimiento del curso)RC clemencia alvarado)
 
Programa analitico
Programa analiticoPrograma analitico
Programa analitico
 
Silabo fundamentos programación
Silabo fundamentos programaciónSilabo fundamentos programación
Silabo fundamentos programación
 
Octavo ciclo
Octavo cicloOctavo ciclo
Octavo ciclo
 
Rc mónica morantes
Rc mónica morantesRc mónica morantes
Rc mónica morantes
 
Rc mónica morantes
Rc mónica morantesRc mónica morantes
Rc mónica morantes
 
Rc mónica morantes
Rc mónica morantesRc mónica morantes
Rc mónica morantes
 
A152 w0i9 inteligenciaartificial
A152 w0i9 inteligenciaartificialA152 w0i9 inteligenciaartificial
A152 w0i9 inteligenciaartificial
 
Estructura Datos
Estructura DatosEstructura Datos
Estructura Datos
 
Septimo ciclo
Septimo cicloSeptimo ciclo
Septimo ciclo
 
Silabo fund programación abril agosto2015
Silabo fund programación abril agosto2015Silabo fund programación abril agosto2015
Silabo fund programación abril agosto2015
 
Cc414 taller programacion_concurrente_distribuida
Cc414 taller programacion_concurrente_distribuidaCc414 taller programacion_concurrente_distribuida
Cc414 taller programacion_concurrente_distribuida
 
Rc sonia judith_linaresdiaz.ppt.
Rc sonia judith_linaresdiaz.ppt.Rc sonia judith_linaresdiaz.ppt.
Rc sonia judith_linaresdiaz.ppt.
 

trabajo1

  • 1. Universidad Autónoma de Occidente UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍAS DEPARTAMENTO DE CIENCIAS DE LA INFORMACIÓN PROGRAMA DE INGENIERÍA INFORMÁTICA INFORMÁTICA 1 (Algoritmos con Java) MATERIAL RECOPILADO POR LOS PROFESORES J. ANTONIO LEMOS B. Y EDUARDO VICTORIA Z. SANTIAGO DE CALI, AGOSTO DE 2004 Informática I. Versión 1.0 Agosto de 2004 1
  • 2. Universidad Autónoma de Occidente ASIGNATURA: INFORMÁTICA 1 CODIGO: 532219 CREDITOS: 3 PRERREQUISITOS: 22 créditos aprobados CARACTERÍSTICAS: HOMOLOGABLE, VALIDABLE FACULTAD: INGENIERÍA PROGRAMA: INGENIERÎAS DEPARTAMENTO QUE FRECE: CIENCIAS DE LA INFORMACIÓN AREA: INFORMÂTICA PERIODO ACADÉMICO: Agosto – Diciembre de 2004 OBJETIVO GENERAL Capacitar al estudiante en el diseño e implementación de algoritmos computacionales, utilizando los conceptos básicos de la algoritmia, e introduciéndolo en el estudio de la programación orientada a objetos. OBJETIVOS ESPECÍFICOS identificar los sistemas básicos de numeración y sus operaciones fundamentales. Comprender las operaciones básicas de la lógica booleana. Modelar procesos mediante técnicas algorítmicas. Reconocer y aplicar correctamente las diferentes estructuras de decisión y de repetición en programación de computadores. Conocer y apropiar el paradigma Orientado a Objetos y su aplicación en la programación. CONTENIDO PROGRAMÁTICO UNIDAD 1 - Sistemas numéricos Pág. 7 1.1 Sistema binario 1.2 Sistema octal 1.3 Sistema hexadecimal 1.4 Sistema decimal 1.5 Conversión entre sistemas 1.6 Suma y resta binaria 1.7 Código ASCII y UNICODE 1.8 Clase práctica UNIDAD 2 - Sistemas lógicos Pág. 15 2.1 Conectivos relacionales y lógicos 2.2 Proposiciones lógicas simples y compuestas 2.3 Tablas de verdad para las operaciones lógicas básicas 2.4 Clase práctica UNIDAD 3 - Herramienta de Programación Pág. 29 Informática I. Versión 1.0 Agosto de 2004 2
  • 3. Universidad Autónoma de Occidente 3.1 Breve historia de los estilos de Programación 3.2 Origen del paradigma Orientado a Objetos 3.3 Definiciones de clases y objetos 3.4 Características básicas del lenguaje Java 3.5 Construcción básica de una aplicación 3.6 Entrada de datos estándar 3.7 Salida de datos estándar 3.8 Descarga e instalación del lenguaje 3.9 Compilación y ejecución de una aplicación 3.10 Clase práctica UNIDAD 4 - Tipos de datos, variables y Operadores (Java) Pág. 61 4.1 Variables 4.2 Palabras reservadas 4.3 Tipos de datos 4.4 Promoción de datos (Casting) 4.5 Operadores aritméticos 4.6 Operador módulo ( % ) 4.7 Operadores de asignación 4.8 Operadores de incremento y decremento 4.9 Operadores relacionales 4.10 Operadores lógicos boléanos 4.11 Precedencia y asociatividad de los operadores 4.12 Clase práctica UNIDAD 5 – Algoritmos Pág. 69 5.1 Historia de la programación 5.2 Tipos de Algoritmos 5.3 Representación de los Algoritmos 5.4 Propiedades de los Algoritmos 5.5 Clase práctica UNIDAD 6 - Sentencias de control en Java Pág. 113 6.1 Sentencias de decisión o selección 6.1.2 Selección simple ( if ) 6.1.3 Selección doble ( if – else ; if – else - if ) 6.1.4 Selección múltiple ( switch ) 6.2 Sentencias de Repetición ( 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 práctica UNIDAD 7 – Arreglos 7.1 Definición de Arreglos 7.2 Arreglos Unidimensionales Informática I. Versión 1.0 Agosto de 2004 3
  • 4. Universidad Autónoma de Occidente METODOLOGÍA El profesor dedicará 180 minutos semanales (dos bloques de 90 minutos) a las actividades presenciales, las cuales estarán compuestas por: 1) Clases teórico-prácticas en las cuales el profesor expondrá cada uno de los nuevos temas con ejemplos descriptivos y asignará las lecturas y prácticas necesarias. 2) Talleres (Prácticas Dirigidas) en los cuales, por grupo de estudio, se resolverán ejercicios. El profesor asesorará a los grupos. Al final todos los estudiantes deberán tener resueltos los ejercicios y cada grupo avanzará en el proceso de conocimiento según su particular interés y necesidad de saber. Estos ejercicios realizados en clase deberán ser implementados en computador en las prácticas de laboratorio. 3) Prácticas Independientes: para ser realizadas en las macro-salas de PC’s de la UAO en el tiempo libre del estudiante. 4) Se efectuarán 3 evaluaciones parciales de la asignatura con la ponderación que se muestra en el numeral V. De esta forma, para obtener resultados satisfactorios, el estudiante deberá ir construyendo el conocimiento a través de aproximaciones sucesivas y durante: las clases, talleres, trabajo personal y trabajo en grupo de estudio. EVALUACIÓN Mínimo: 3 talleres, 3 quices y 3 trabajos Primer Parcial 15% independientes. Se sugieren grupos de 2 Segundo Parcial 25% o de 3 estudiantes. Tercer Parcial 25% Talleres y Quices 15% (Algunos talleres como trabajo independiente) Trabajos Adicionales 20% (Trabajo independiente) REFERENCIAS BIBLIOGRÁFICAS 1. Área de Informática UAO, Módulo de Informática 1, Publicaciones UAO. 2. CEBALLOS, Francisco J., JAVA 2 Curso de Programación. Ed. Alfaomega. Ra–Ma. 2000. 3. Joyanes Aguilar Luis & Zahonero Martínez Ignacio, “Programación en Java 2 – Algoritmos, Estructuras de Datos y Programación orientada a Objetos”, Ed. McGrawHill, 2002. 4. DEITEL, H.M., DEITEL, P. J. How to program Java. 3ª Edición. Ed. Prentice Hall. 2000. 5. FROUFE, Augustín. JAVA2 Manual de Usuario y Tutorial. 2ª Edición Ed. Alfa Omega 2000. 6. WU, Thomas C. Introducción a la programación orientada a objetos con Java. Ed. Mc Graw Hill. España. 2000. 7. ARNOW, David. WEISS, Gerald, Introducción a la programación con Java. Un enfoque orientado a objetos. Ed. Addison Wesley. España.2001 ELECTRÓNICAS 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. Documentación 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/ Informática I. Versión 1.0 Agosto de 2004 4
  • 5. Universidad Autónoma de Occidente FUENTES DE DONDE SE RECOPILÓ EL MATERIAL PARA LA ELABORACIÓN DE ESTE MÓDULO DE INFORMÁTICA I. - Universidad de Valencia, España, Depto. de Informática http://informatica.uv.es/docencia/fguia/TI/Libro/PDFs/CAPI4.pdf - Universidad de Oviedo,España, Depto. de Informática Profesor Daniel Gayo. http://di002.edv.uniovi.es/~dani/asignaturas/ - Aprenda Java como si estuviera en primero, Escuela Superior de Ingenieros Industriales de San Sebastián. http://mat21.etsii.upm.es/ayudainf/aprendainf/Java/Java2.pdf - Matemáticas para Computación, Seymour Lipschutz, McGraw – Hill, 1992 - Informática III, Programación Orientada a Objetos (Java), Recopilación: Lyda Peña Paz Informática I. Versión 1.0 Agosto de 2004 5
  • 6. Universidad Autónoma de Occidente Informática I. Versión 1.0 Agosto de 2004 6
  • 7. Universidad Autónoma de Occidente UNIDAD 1. SISTEMAS NUMÉRICOS ARITMÉTICA Y REPRESENTACIÓN DE LA INFORMACIÓN EN EL COMPUTADOR Dos de los aspectos básicos que se presentan en el tratamiento de la información, son cómo representarla (de lo cual dependerá sus posibilidades de manipulación) y cómo almacenarla físicamente. La primera se resuelve recurriendo a un código adecuado a las posibilidades internas del computador, que abordaremos en el presente capítulo. La segunda tiene que ver con los llamados soportes de información y es una cuestión que pertenece al ámbito del soporte físico del computador. En la raíz de los desarrollos informáticos está el hecho de que todo dato puede ser representado por un conjunto de bits (Los dígitos de un número binario se conocen como bits -Binary digit – digito binario- por su nombre en inglés), circunstancia que permite a la ALU (Unidad Aritmético-Lógica) realizar un gran número de operaciones básicas utilizando su representación binaria. El paso a códigos binarios es una misión que el computador lleva a cabo automáticamente, 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, cuestión indispensable para comprender determinados comportamientos de la máquina. Para ello empezaremos recordando algunos conceptos relativos al sistema de numeración binario y a las transformaciones entre éste y el sistema decimal. 1.1 Sistemas de numeración en informática Llamaremos sistema de numeración en base b, a la representación de números mediante un alfabeto compuesto por b símbolos o cifras. Así todo número 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 posición que ocupa dentro del número. En el sistema de numeración decimal, se utiliza, b = 10 y el alfabeto está constituido por diez símbolos, denominados también cifras decimales: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} (1.1) y, por ejemplo, el número decimal 278.5 puede obtenerse como suma de: 200 70 8 0.5 278 .5 es decir, se verifica que: 278.5 = 2×102 + 7×101 + 8×100 + 5×10-1 Cada posición, por tanto, tiene un peso específico (en el sistema decimal, cada posición además tiene un nombre): Valor en el ejemplo Nombre posición 0 peso b0 8 unidades 1 posición 1 peso b 7 decenas posición 2 peso b2 2 centenas posición -1 peso b-1 5 décimas Informática I. Versión 1.0 Agosto de 2004 7
  • 8. Universidad Autónoma de Occidente Generalizando, se tiene que la representación de un número 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. Nótese que el valor que tome b determina la longitud de la representación; así, por un lado, resulta más cómodo que los símbolos (cifras) del alfabeto sean los menos posibles, pero, por otra parte, cuanto menor es la base, mayor es el número de cifras que se necesitan para representar una cantidad dada. Como ejemplo veamos cual es el número 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 = 1×85 + 7×84 + 5×83 + 3×82 + 7×81 + 2×80 = = 6×104 + 4×103 + 2×102 + 5×101 + 0×100 = 64250)10 1.1.1 Definición del Sistema Binario En el sistema de numeración binario b es 2, y se necesita tan sólo un alfabeto de dos elementos para representar cualquier número: {0,1}. Los elementos de este alfabeto se denominan cifras binarias o bits. En la Tabla 1.1 se muestran los números enteros binarios que se pueden formar con 3 bits, que corresponden a los decimales de 0 a 7. Tabla 1.1.- Números binarios del 0 al 7 binario 000 001 010 011 100 101 110 111 decimal 0 1 2 3 4 5 6 7 Estos números son generados así: el primer dígito de derecha a izquierda se multiplica por 20, el segundo por 21 y el tercero por 22; por lo tanto el binario 1012 sería 1x22 + 0x21 + 1x20 = 1x4 + 0x2 + 1x1 = 5. 1.1.2 Transformaciones entre bases binaria y decimal Para transformar un número 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 números binarios: 110100; 0.10100; 10100.001 110100)2 = (1×25) + (1×24) + (1×22) = 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 Informática I. Versión 1.0 Agosto de 2004 8
  • 9. Universidad Autónoma de Occidente 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 números: 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 número decimal a binario: a) La parte entera del nuevo número (binario) se obtiene dividiendo la parte entera del número 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 serán 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 número binario se obtiene multiplicando por 2 sucesivamente la parte fraccionaria del número decimal de partida y las partes fraccionarias que se van obteniendo en los productos sucesivos. El número binario se forma con las partes enteras (que serán 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, habiéndonos detenido cuando la parte decimal es nula, el número decimal 26.1875 en binario es: 26.1875)10 = 11010.0011)2 NOTA: un número real no entero presentará siempre cifras después del punto decimal, pudiendo ser necesario un número finito o infinito de éstas, dependiendo de la base en que se represente; por ejemplo el número 1.6)10 representado en binario sería 1.100110011001...)2, requiriendo infinitas cifras para ser exacto, como también ocurre con muchos números representados en decimal. Informática I. Versión 1.0 Agosto de 2004 9
  • 10. Universidad Autónoma de Occidente 1.1.3 Códigos Intemedios Como acabamos de comprobar, el código binario produce números con muchas cifras, y para evitarlo utilizamos códigos intermedios que son bases mayores, que no se alejen de la binaria. Estos se fundamentan en la facilidad de transformar un número 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 códigos intermedios los sistemas de numeración en base 8 (u octal) y en base 16 (o hexadecimal). 1.1.3.1 Base Octal Un número octal puede pasarse a binario aplicando los algoritmos ya vistos en secciones anteriores. No obstante, al ser b=8=23, el proceso es más 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 símbolos binarios (3 bits) se agrupan para formar una cifra de la representación en octal, por tanto en general puede hacerse la conversión fácilmente, de la forma siguiente: Para transformar un número binario a octal se forman grupos de tres cifras binarias a partir del punto decimal hacia la izquierda y hacia la derecha (añadiendo ceros no significativos cuando sea necesario para completar grupos de 3). Posteriormente se efectúa directamente la conversión a octal de cada grupo individual de 3 cifras, y basta con recordar como se generaron los números en la tabla 1.1 para poder realizar rápidamente la conversión. 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 más que convertir individualmente a binario (tres bits) cada cifra octal, manteniendo el orden del número original. Por ejemplo: 537.24)8 = 5 3 7 . 2 4 101 011 111 . 010 100 = 101011111.0101)2 Para transformar un número de octal a decimal se aplica la expresión (1.3) con b=8. Para transformar un número de decimal a octal se procede de forma análoga 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 número en base hexadecimal (esto es, b=16) es necesario disponer de un alfabeto de 16 símbolos: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} Tabla 1.2.- Números binarios del 0 al 7 Hexadec 0 1 2 3 4 5 6 7 8 9 A B C D E F Décimal 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 Informática I. Versión 1.0 Agosto de 2004 10
  • 11. Universidad Autónoma de Occidente Al ser b=16=24, de modo similar al caso octal, cada símbolo hexadecimal se corresponde con 4 símbolos 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 fácil convertir números de binario a octal, y viceversa, y de binario a hexadecimal, y viceversa, también resulta sencillo efectuar esta operación electrónicamente o por programa, por lo que a veces el computador utiliza este tipo de notaciones intermedias como código interno o de entrada/salida, y también para visualizar el contenido de la memoria o de los registros. Para transformar un número de hexadecimal a decimal se aplica la expresión (1.3) con b=16. Para pasar un número de decimal a hexadecimal se hace de forma análoga 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 Aritméticas y Lógicas El procesamiento de la información incluye realizar una serie de operaciones con los datos; estas operaciones y las particularidades de las mismas en su realización por el computador son el objeto de los próximos apartados. Operaciones Aritméticas con Números Binarios Las operaciones aritméticas básicas (suma, resta, multiplicación y división) en sistema binario se realizan en forma análoga a la decimal aunque, por la sencillez de su sistema de representación, las tablas son realmente simples: Tabla 1.3.- Operaciones básicas en binario Suma aritmética Resta aritmética Producto aritmético 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 (negación de cada bit). Posteriormente a este número 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 número de términos excede al minuendo, se debe realizar desbordamiento de extremos. (No se toma el bit de extrema izquierda en el resultado ). Informática I. Versión 1.0 Agosto de 2004 11
  • 12. Universidad Autónoma de Occidente 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) Como se presenta acarreo se omite el bit de extrema izquierda. 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 aritméticas 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 añadir un cero a la derecha, o desplazar el punto decimal a la derecha, siendo esto similar a multiplicar por 10)10 un número 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 Informática I. Versión 1.0 Agosto de 2004 12
  • 13. Universidad Autónoma de Occidente Ejercicios Llene todas las casillas en blanco, sabiendo que las columnas agrupan el sistema numérico y el número 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 Lógicas Un dígito binario, además de representar una cifra en base dos, también puede interpretarse como un valor booleano o dato lógico (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í, además de las operaciones aritméticas con valores binarios, se pueden llevar a cabo operaciones booleanas o lógicas en las que estos valores se consideran señales generadas por conmutadores. Las operaciones booleanas más importantes son: OR lógico (también denominado unión, suma lógica (+) o función O), AND lógico (también intersección, producto lógico ( . ) o función Y) la complementación ( - ) (o inversión, negación, o función NOT o NO). Nótese que las dos primeras son operaciones de dos operandos o binarios mientras que la complementación es unaria. Estas operaciones se rigen según la Tabla 4.4. Informática I. Versión 1.0 Agosto de 2004 13
  • 14. Universidad Autónoma de Occidente Tabla 1.4.- Operaciones lógicas 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 lógicos se corresponden parcialmente con el producto y suma binarios, y lo más significativo, es la posibilidad de implementar estas operaciones lógicas, y por tanto las aritméticas binarias, en forma de circuitos. En la siguiente unidad se revisa más ampliamente las operaciones lógicas. Informática I. Versión 1.0 Agosto de 2004 14
  • 15. Universidad Autónoma de Occidente UNIDAD 2. SISTEMAS LÓGICOS LOGICA, TABLAS DE VERDAD 2.1 Introducción. 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, están 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, implícitamente, 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 minúsculas o mayúsculas, con o sin subíndices) para denotar enunciados. 2.2 Conjunción, p ^ q Dos enunciados cualesquiera se pueden combinar con la palabra “y” para formar un enunciado compuesto llamado la conjunción de los enunciados originales. Simbólicamente, p ^ q. Denota la conjunción 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: p q p^q V V V V F F F V F F F F En este caso, la primera línea es una manera abreviada de decir que si p es verdadero y q es verdadero, entonces p ^ q es verdadero. Las otras líneas tienen significados análogos. Consideramos que esta tabla define precisamente el valor de verdad del enunciado compuesto p ^ q como una función 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. Informática I. Versión 1.0 Agosto de 2004 15
  • 16. Universidad Autónoma de Occidente 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 Disyunción, 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 disyunción de los dos enunciados originales. Simbólicamente, p ν q. Denota la disyunción 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 pνq 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. Observación: La palabra española “o” se usa comúnmente 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 señaló 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 Católica” usa el “o” en el segundo sentido llamado disyunción exclusiva. A no ser que se diga otra cosa, la “o” se usara en el primer sentido. Esta observación hace sobresalir la precisión que ganamos con nuestro lenguaje simbólico: pν q esta definido por su tabla de verdad y siempre significa “p y / o q”. 2.4 Negación, ~ p Dado cualquier enunciado p, se puede formar otro enunciado, llamado la negación de p, escribiendo “ Es falso que...” antes de p o, si es posible insertando en p la palabra “no”. Simbólicamente, ~ p, denota la negación de p (se lee “no p”). Informática I. Versión 1.0 Agosto de 2004 16
  • 17. Universidad Autónoma de Occidente 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 negación 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 negación de (a); y (e) y (f) son cada uno la negación 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. Observación: La notación lógica para las conectivas “y”, “o” y “no” no es estándar. 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 lógicas (^, ν, ~ y otras que se discutirán 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 proposición. Ahora el valor de verdad de una proposición depende exclusivamente de los valores de verdad de sus variables, mejor dicho, el valor de verdad de una proposición se conoce una vez que se conozcan los valores de verdad de sus variables. La tabla de verdad de la proposición ~ (p ^ ~ q), por ejemplo, se construye como sigue: 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 Observe que las primeras columnas de la tabla son para las variables p,q,...y que hay suficientes líneas 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 líneas; para 3 variables se necesitan 8 líneas; y, en general, para n variables se necesitan 2n líneas.) Hay pues una columna para cada etapa “elemental” de la construcción 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 proposición, que aparece en la ultima columna. Informática I. Versión 1.0 Agosto de 2004 17
  • 18. Universidad Autónoma de Occidente Observación: La tabla de verdad de la proposición, anterior consiste precisamente en las columnas bajo las variables y la columna bajo la proposición: p q ~(p^~q) V V V V F F F V V F F V Las otras columnas se usaron solamente en la construcción 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 proposición se escribe en la línea superior a la derecha de sus variables, y que hay una columna bajo cada variable o conectiva de la proposición. Los valores de verdad se colocan entonces en la tabla de verdad en varios pasos como sigue: P q ~ (p ^ ~ q) p q ~ (p ^ ~ q) V V V V V V V F V V F V F V F V V F F V F V F V F F V F F F F F F F V F Paso 1 1 Paso 1 2 1 (a) (b) P q ~ (p ^ ~ q) p q ~ (p ^ ~ q) V V V F F V V V V V F F V V F V V V F F V F V V V F F V F F F V F F V F F F V F F F F V F F F V F F V F Paso 1 3 2 1 Paso 4 1 3 2 1 (c ) (d) La tabla de verdad de la proposición 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 Tautologías 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 Informática I. Versión 1.0 Agosto de 2004 18
  • 19. Universidad Autónoma de Occidente llama tautologías. Análogamente, una proposición P(p,q,…)se llama contradicción 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 proposición “p o no p”, es decir, p ν ~ p, es una tautología y la proposición “p y no p”, es decir, p ^ ~ p, es una contradicción. Esto se verifica construyendo sus tablas de verdad. p ~p pν~p p ~ p p ^~ p V F V V F F F V V F V F Observemos que la negación de una tautología es una contradicción ya que siempre es falsa, y la negación de una contradicción es una tautología ya que siempre es verdadera. Ahora, sea P(p, q, ...) una tautología, 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 tautología P(p, q, …) y tenemos aún una tautología. En otras palabras: Principio de substitución: Si P (p, q, ...) es una tautología, entonces P(P1, P2,...) es una tautología para proposiciones cualesquiera P1, P2,... Ejemplo 5: Por la anterior tabla de verdad, pν ~ p es una tautología. Reemplazando p por q ^ r obtenemos la proposición ( q ^ r ) ν ~ ( q ^ r ) que, por el principio de substitución también debiera ser una tautología. Esto se verifica con la siguiente tabla de verdad. 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 2.7 Equivalencia Lógica: Álgebra de Proposiciones Se dice que dos proposiciones P ( p, q, ...) y Q (p, q, ...) son lógicamente 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: p q p^q ~ (p^q) p Q ~p ~q ~pν~q V V V F V V F F F V F F V V F F V V F V F V F V V F V F F F V F F V V V 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 lógicamente equivalentes y podemos escribir: ~ ( p^q) ≡ ~ p ν ~ q Informática I. Versión 1.0 Agosto de 2004 19
  • 20. Universidad Autónoma de Occidente 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 lógicamente 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 tautología y f denota una contradicción. 2.8 Enunciados Condicional y Bicondicional Muchos enunciados, particularmente en la matemática, 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 sólo si q”. Otro enunciado común 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: p q p→ q p q p↔q V V V V V V V F F V F F F V V F V F F F V F F V 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 involución 9 ~ ~ p≡p Leyes de DeMorgan 10a. ~ (p ν q) ≡ ~ p ^ ~ q 10b. ~ (p ^ q) ≡ ~ p ν ~ q Tabla 2.1. Leyes del Álgebra de Proposiciones Informática I. Versión 1.0 Agosto de 2004 20
  • 21. Universidad Autónoma de Occidente 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 idéntica a la tabla de verdad de p → q. Así que p→ q es lógicamente equivalente a la proposición ~ p ν q: p→q≡~pνq En otras palabras, el enunciado condicional “Si p entonces q” es lógicamente 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. Condicional Recíproca Inversa Contrarecíproca p q p→q q→ p ~p→~q ~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 lógicamente equivalentes. Por otra parte, se puede ver que un enunciado condicional y su contrarreciproco son lógicamente equivalentes. Enunciamos este resultado formalmente: Teorema 2.1: Un enunciado condicional p→ q y su contrarreciproca ~ q→ ~ p son lógicamente 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² ) Informática I. Versión 1.0 Agosto de 2004 21
  • 22. Universidad Autónoma de Occidente 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 conclusión; denotamos un argumento por P1,P2,..., Pn + Q Se dice que un argumento es valido si las premisas dan (como consecuencia) la conclusión; mas formalmente, damos la siguiente Definición: Un argumento P1,P2,,...., Pn + Q es válido si Q es verdadero cada vez que las premisas P1,P2,..., Pn sean verdaderas. Un argumento que no es válido se llama falacia. Ejemplo 8: (a) El siguiente argumento es válido: p.p → q + q (Ley de independencia, modus poniendo ponens.) la demostración 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 simultáneamente 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 simultáneamente 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: Informática I. Versión 1.0 Agosto de 2004 22
  • 23. Universidad Autónoma de Occidente 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) VV V V V V V V V V V V V V VV F V V V F V F F V V F F VF V V F F F F V V V V V V VF F V F F F F V F V V F F FV V F V V V V V V V F V V FV F F V V F V F F V F V F FF V F V F V F V V V F V V FF 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 simultáneamente solo en los casos (lineas) 1, 5, 7 y 8, y en estos casos la conclusión 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 jóvenes. En este caso el enunciado S debajo de la línea denota la conclusión del argumento, y los enunciados S1 y S2 por encima de la línea 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 válido. 2.10 Implicación Lógica. Se dice que una proposición P (p,q,...) implica lógicamente una proposición 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 lógicamente 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 (líneas) 1 y 2, y en estos casos pν q también es verdadera. En otras palabras , p implica lógicamente p ν q. Informática I. Versión 1.0 Agosto de 2004 23
  • 24. Universidad Autónoma de Occidente p q pν q V V V V F V F V V F F F 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 válido, y recíprocamente. Aún más, el argumento P + Q es válido si y solo si el enunciado condicional P → Q es siempre verdadero, o sea, si es una tautología. 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 lógicamente a Q (p, q, ...). (ii) El argumento P (p,q,...) + Q (p, q, ...) es válido. (iii) La proposición P (p,q,...) → Q (p, q, ...) es una tautología. 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 también es cierto. Así, la noción de implicación lógica está intimamente ligada a la de la equivalencia lógica. 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 español. (1) No hace frió. (4) Está lloviendo o no está haciendo frío. (2) Está haciendo frío y está lloviendo. (5) Ni está haciendo frío ni está lloviendo. (3) Está haciendo frío 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 simbólica 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) Informática I. Versión 1.0 Agosto de 2004 24
  • 25. Universidad Autónoma de Occidente Proposiciones y sus Tablas de Verdad. 2.3 Encuentre la tabla de verdad de ~ p ^ q. 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 ~p^q V V F F V F F F F V V V F F V F Paso 2 1 3 1 Método 1 Método 2 2.4 Encuentre la tabla de verdad de ~ (p ν q). p q ~ (p ν q) p q p ν q ~ (p ν q) V V F V V V V V V F V F F V V F V F V F F V F F V V F V V F F F V F F F F F F V Paso 3 1 2 1 Método 1 Método 2 2.5 Encuentre la tabla de verdad de ~ (p ν ~ q). p q ~ q p ν ~ q ~ (p ν ~ q) p q ~ (p ν ~ q) V V F V F V V F V V F V V F V V F V F F V V V F F V F F V F V V F F F V F F V V F F F F F V V F Paso 4 1 3 2 1 Método1 Método 2 (observe que esta tabla de verdad es idéntica a la del problema 2.3) Tautologías y Contradicciones. 2.6 Verifique que la proposición p ν ~ (p ^ q) es una tautología. 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 Informática I. Versión 1.0 Agosto de 2004 25
  • 26. Universidad Autónoma de Occidente 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 tautología. 2.7 Verifique que la proposición (p ^ q) ^ ~ (p ν q) es una contradicción. 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 contradicción. Equivalencia Lógica. 2.8 Demuestre que la disyunción distribuye sobre la conjunción, 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 idénticas, las proposiciones son equivalentes. 2.9 Demuestre que la operación de disyunción se puede escribir en términos de las operaciones conjunción y negación. Específicamente, 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 idénticas, las proposiciones son equivalentes. Informática I. Versión 1.0 Agosto de 2004 26
  • 27. Universidad Autónoma de Occidente 2.10 Simplifique cada proporción usando la tabla 2-1: (a) p ν (p ^ q), (b) ~( pν q) ν (~ p ^ q). (a) Equivalencia Razón (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 Razón (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 Negación. 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) 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 (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 p ~q ~~p V F V F V F 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 francés. (b) No es cierto que él estudie física pero no matemática. (c) No es cierto que las ventas estén bajando y los precios subiendo. (d) No es cierto que no esté haciendo frió o que esté lloviendo. Informática I. Versión 1.0 Agosto de 2004 27
  • 28. Universidad Autónoma de Occidente (a) Sea p “Su madre es inglesa” y sea q “Su padre es Francés”. Entonces el enunciado dado es ~ ( pν q ). Pero ~ ( pν q ) ≡ ~ p ^ ~ q. Por lo tanto, el enunciado dado es lógicamente equivalente con el enunciado “Su madre no es inglesa y su padre no es francés”. (b) Sea p “El estudia fisica” y q “El estudia matemáticas”. Entonces el enunciado dado es ~ ( p ^ ~ q).pero ~ (p ^ ~ q) ≡ ~ pν ~ ~ q ≡ ~ p ν q. Así que el enunciado dado es lógicamente equivalente al enunciado “El no estudia fisica o estudia matemáticas”. (c) Como ~ (p ^ q) ≡ ~ p ν ~ q, el enunciado dado es lógicamente equivalente al enunciado “Las ventas estan subiendo o los precios estan bajando”. (d) Como ~ (~ p ν q) ≡ p ^ ~ q, el enunciado dado es lógicamente 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 frío 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 lógicamente equivalente con la bicondicional “p si y sólo si q”; o sea, (p → q) ^ ( q → p) ≡ p ↔ q (c) Demuestre que la bicondicional p ↔ q se puede escribir en términos 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) Informática I. Versión 1.0 Agosto de 2004 28
  • 29. Universidad Autónoma de Occidente UNIDAD 3. HERRAMIENTA DE PROGRAMACIÓN. 3.1 Introducción 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 módulo, se tratará solamente la acepción de orientado a objetos como paradigma de programación. El paradigma orientado a objetos se asoció durante mucho tiempo con los lenguajes y la programación orientada a objetos, sin embargo, en la actualidad, el uso de objetos debería incluir tanto el análisis como el diseño orientados a objetos, el uso de bases de datos y en general, la ingeniería de software orientada a objetos. Aunque no intencionalmente, la programación orientada a objetos implica un mayor grado de análisis, ya que de alguna forma deben estar definidas las clases, atributos y métodos que se van a implementar. Por ende, al aumentar el tiempo dedicado al análisis y concepción del software, el tiempo de las otras etapas se reduce. 3.2 Origen del paradigma Orientado a Objetos Orientado a Objetos es un término que empezó a acuñarse a finales de los 80's, cuando la programación requería nuevos paradigmas, nuevas formas de interpretarse. Durante los 90's tomó gran fuerza, pero indiscutiblemente son las dos últimas décadas las que han empezado a recoger los frutos; en otros países ya la programación orientada a objetos es un hecho y algunos programadores no podrían 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 programación como en técnicas apropiadas de análisis y diseño. Ejemplo de ello son los métodos propuestos por Grady Booch, Ivar Jacobson o James Rumbaugh entre otros. 3.2.1 Definición de Orientado a Objetos El concepto de orientado a objetos está relacionado con otros múltiples conceptos: la programación, las interfaces de usuario y la representación jerárquica de hechos, tienen todos orientación a objetos. Entonces, ¿cómo podría definirse este término?. Una definición 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 orientación a objetos es la forma natural de nuestro aprendizaje. Cuando estamos pequeños se nos enseña a distinguir y agrupar objetos acorde a sus características y/o comportamientos y es por ello que logramos distinguir una silla de un caballo aunque ambos tengan patas. La programación orientada a objetos es un "estilo" de programación 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 métodos que permiten su interacción y la ejecución de diversas tareas para cumplir el propósito del programa. Existen muchos lenguajes que permiten realizar la programación orientada a objetos, entre ellos se destacan Smalltalk, Java, C++, Object Pascal, Eiffel. Informática I. Versión 1.0 Agosto de 2004 29
  • 30. Universidad Autónoma de Occidente 3.3 Breve historia de los estilos de Programación Desde el principio de la programación se han intentado muchos métodos y procedimientos para lograr una programación fácil y eficiente. El primer enfoque, si se puede llamar así, es la programación no estructurada o "programación espagueti", bajo la cual el programador se sienta frente al computador y empieza a escribir líneas de código (instrucciones) sin estructura alguna, resultando en un programa largo, difícil de entender y aun más difícil de modificar. El primer enfoque formal que se formalizó fue el enfoque procedural (o procedimental), que se podría resumir como "Usted decide qué procedimiento quiere, y usa el mejor algoritmo que pueda encontrar". Aunque este enfoque resultaba muy práctico para resolver problemas particulares, no así cuando se quería reutilizar parte del código o emplear ciertas funciones en otros programas. En resumen, el enfoque procedural no permitía mejorar la productividad de la construcción del software por sus características particulares. Surge entonces un segundo enfoque o paradigma, la programación modular (o funcional). Para esta época ya se ha incrementado visiblemente el tamaño de los programas desarrollados, lo cual genera problemas adicionales de productividad. El enfoque de programación modular es algo como "Decide los módulos que quieres, de forma que las partes del programa y los datos queden ocultos tras los módulos". La intención primordial de este enfoque es dividir el problema (programa necesario) en partes independientes pero relacionadas, que se puedan solucionar de manera separada. La programación modular propicia la reutilización de código, ya que existen partes (módulos) que podrían 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 código pero no por los datos y, normalmente, los módulos requerían de datos que estaban fuera de ellos. En un intento por mejorar la concepción 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 reutilización de código, y la programación por componentes; ahora se podría "armar" un programa, tal como se arma un computador o una nevera, bastaría conseguir las piezas adecuadas y establecer los enlaces necesarios. A este novedoso enfoque se le conoce como programación orientada a objetos. La programación orientada a objetos presenta múltiples ventajas. Empecemos por decir que los programas ahora estarán compuestos por objetos. Cada objeto, a su vez, está compuesto por los datos o características que lo distinguen y los métodos o procedimientos necesarios para su manipulación. 3.4 Definiciones de clases y objetos Todos los estilos o enfoques de programación se encuentran basados en un marco referente, de la misma forma todas las técnicas 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, según Booch, se compone de cuatro elementos esenciales, sin los cuales perdería la propiedad de orientación a objetos. Estos son: • Abstracción Informática I. Versión 1.0 Agosto de 2004 30
  • 31. Universidad Autónoma de Occidente • Encapsulamiento • Modularidad • Jerarquía Igualmente incluye otros elementos que, sin ser esenciales, resultan bastante útiles dentro de este estilo de programación: • Tipos • Concurrencia La adecuada comprensión 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 programación orientada a objetos dejaría de emplear todo el poder que otorgan los objetos. 3.4.1.1 Abstracción El primer concepto fundamental del paradigma orientado a objetos es la abstracción. Una definición bastante apropiada del término abstracción es la dictada por Booch: "Una abstracción denota las características 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 características básicas de ésta, permitiéndonos 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 interés particular. Actividad #1: Describa las abstracciones que usted posee de computador, mesa, cama, gato. 3.4.1.2 Encapsulamiento Una característica 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 interactúan con él no requieren conocimiento alguno sobre la forma como opera internamente, requiriendo sólo el conocimiento de los parámetros necesarios para dicha interacción. Si los objetos no mantienen el encapsulamiento, se estaría violando uno de los principios básicos de la orientación a objetos. La definición original de Booch plantea: "Encapsulamiento es el proceso de compartimentalizar los elementos de una abstracción, 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 cómo realizan su funcionamiento, pues ellos están encapsulados. 3.4.1.3 Modularidad La modularidad es un concepto muy antiguo. Aunque es válido para la orientación a objetos no es exclusivo de ésta. Meyers mencionó la ventaja de la modularidad como: "La acción de partir un programa en componentes individuales puede reducir su complejidad en algún grado.... aunque la Informática I. Versión 1.0 Agosto de 2004 31
  • 32. Universidad Autónoma de Occidente partición de un programa es útil por esto, una justificación más poderosa para partir un programa es que él sea un número de límites bien definidos y documentados. Estos límites o interfaces son invaluables en la comprensión del programa". La modularidad es básicamente la división en partes de un programa de software (para nuestro caso), considerando que estos módulos deben mantener la cohesión y el acoplamiento adecuado. Actividad #3: Normalmente las cosas que nosotros empleamos se encuentran compuestas de partes (al menos eso dice la Teoría General de Sistemas). Intenta determinar las partes que componen: una bicicleta, un computador, una casa. 3.4.1.4 Jerarquía La jerarquía se puede entender como la clasificación u ordenamiento de las abstracciones, esto permite asociar unos objetos con otros. Existen dos clases básicas de jerarquías (o clasificaciones), la que corresponde a es parte de, llamada también jerarquía de partes. Por ejemplo, el manubrio es parte de la bicicleta, o la RAM es parte del computador. La otra jerarquía es la que corresponde a es un, llamada también jerarquía de tipos. Por ejemplo, La vaca es un mamífero, la silla es un mueble. Actividad #4: Intente establecer la jerarquía 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, Automóvil, Llantas, Bujías, Tanque de Gasolina. 3.4.1.5 Tipos Los tipos son la representación de las jerarquías de tipos. Cuando varios elementos se agrupan de acuerdo a ciertas características específicas que ellos guardan en común, 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 más pueden ser intercambiados sólo en forma muy restringida". Actividad #5: Es normal que cada cosa que conocemos la caractericemos como perteneciente a un tipo particular. En qué tipo caracterizaría usted los siguientes objetos: casa, computador, vaca, perro, silla, cuaderno, libro, universidad. 3.4.1.6 Concurrencia Normalmente los objetos deben realizar tareas simultáneas, sin que unas afecten a otras. A estos requerimientos de ejecución 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 abstracción del mundo real que puede representar un hilo de control separado (una ruta diferente de ejecución). 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 electrónico, una máquina de hacer café, un microondas. Informática I. Versión 1.0 Agosto de 2004 32
  • 33. Universidad Autónoma de Occidente 3.4.2 Definiciones de Orientación a Objetos Cuando nos referimos específicamente a la programación orientada a objetos, se emplean los conceptos vistos a través de términos 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 educación, empleamos procesos difíciles de asociación de características y modelos a nombres determinados. Una clase es un concepto que incluye características o atributos (datos), y procedimientos de una entidad del mundo real. Ejemplos de clases son: Mueble, Auto, Medio de Transporte, Edificación, 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 características que los hacen particulares. Tales características son: • Tiene un estado (atributos o características) • Tiene un comportamiento (métodos 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 características relevantes de esta. Como se puede suponer, los atributos de la clase se determinan de acuerdo al problema o situación que se desea tratar; es decir, dependen de la abstracción 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 número de patas, el tipo de tapizado, el estilo, el material, la fecha en que fue fabricada. • La clase carro: tiene como atributos el número de puertas, la marca, el modelo, el precio. 3.4.2.3 Operaciones, métodos y servicios Las clases, además de atributos, contienen los procedimientos que pueden manipular o procesar estos datos. A estos procedimientos se les conoce como operaciones, métodos o servicios. Estos métodos 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 métodos o servicios, arrancar, parar, frenar, aumentar velocidad, disminuir velocidad. • La clase computador: tiene como métodos o servicios, encender, iniciar, arrancar programa. Informática I. Versión 1.0 Agosto de 2004 33
  • 34. Universidad Autónoma de Occidente 3.4.2.4 Identidad Los objetos deben ser creados y durante su creación deben recibir un nombre y una asignación 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 métodos para cada uno de los conceptos mencionados a continuación, y especifique si son clases u objetos. Si es un objeto, indique a qué clase pertenecería: árbol, manzana, casa, Corporación Universitaria Autónoma de Occidente, Secretaría de Gobierno, Amigo, Estudiante, Perro, Ferrari. 3.4.2.6 Relaciones con otros objetos Los objetos han sido determinados como partes de la solución 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 métodos de cada objeto. Un objeto envía a otro un mensaje, en el cual se indica el destino, la operación requerida y los parámetros que debe incluir. Los mensajes son el corazón 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 través 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 métodos. La herencia responde a la necesidad de hacer clases nuevas que contienen características 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 número de líneas a implementar. Algunos lenguajes como Java resultan ser muy estrictos en términos 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 métodos 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 más, lo cual se conoce como herencia múltiple. Del concepto de herencia, se deriva el concepto de jerarquía de clases, que presenta esquemáticamente la herencia entre las clases. Informática I. Versión 1.0 Agosto de 2004 34
  • 35. Universidad Autónoma de Occidente Agregación Cuando un objeto o clase se encuentra compuesta por otros, se dice que existe una relación de agregación entre ellos. Actividad #8: Indique que clase de relación existe entre cada conjunto de elementos (considerando que todos son objetos y que guardan alguna relación). Procesador, memoria, unidad de disco, diskette, computador, usuario. Casa, sala, Edificación, Biblioteca pública, sillas, mesas, mesa de comedor. Polimorfismo El Polimorfismo es una característica 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 métodos se diferencian básicamente por la clase de parámetros que reciben. Al recibir el mensaje el objeto, mediante los parámetros identifica automáticamente la operación que se desea ejecutar; esto se conoce como sobrecarga de métodos. Por ejemplo: imprimir(factura), imprimir(reporte), imprimir(paz y salvo); aunque la función (método) es la misma, dependiendo el tipo de argumento que recibe se realizarán diferentes labores. Algunos lenguajes, como C++, permiten además lo que se llama sobrecarga de operadores (operator overloading) gracias a la cual se pueden redefinir los operadores aritméticos básicos ( +, - , * , / ). Por ejemplo: 3 + 5 sumará enteros, mientras "Hola" + " amigos", concatenará cadenas. Sobreescritura La sobreescritura corresponde a la otra clase de polimorfismo, llamado también polimorfismo de generalización. En éste, los métodos heredados de una superclase pueden ser sobrescritos para elaborar funciones diferentes. Sin embargo, NO se puede variar la signatura (ó firma) del método; es decir; NO se puede cambiar el nombre, el tipo de los parámetros, el número de parámetros que recibe y el tipo de dato que devuelve. Informática I. Versión 1.0 Agosto de 2004 35
  • 36. Universidad Autónoma de Occidente Ejercicios 1. Indique si cada uno de los enunciado presentados a continuación 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 métodos de un objeto no pueden ser usados por otro. c. La programación orientada a objetos facilita la reutilización de código. d. La relación de herencia indica que un objeto es parte de otro. e. Un objeto sólo puede pertenecer a una clase. f. El polimorfismo permite que varios métodos tengan igual nombre. g. La programación “espagueti” se puede considerar modular. h. La programación procedural admite la herencia. i. Los métodos de una clase se implementan siguiendo las directrices de la programación estructurada j. La herencia especifica que una clase posee los mismos métodos y atributos de la clase de la cual hereda. k. Auto es una instanciación 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. Métodos de Teléfono son establecer comunicación y timbrar. p. Manzano hereda de Árbol. q. Manzana hereda de Manzano. r. Tablero es parte de Profesor. s. Otoño es una clase de Estación. t. Windows hereda de Sistemas Operativos. 2. Complete las siguientes frases con la palabra adecuada a. La sobrecarga es la implementación de _____________________________________. b. Un objeto es una _________________de una clase. c. La programación __________________________________se basa en partes, cada una con características y funciones específicas. d. Cuando una clase redefine un método con la misma signatura que tenía en la clase de la cual heredó se denomina __________________. e. La herencia puede ser _________________________o múltiple. f. Las características esenciales que distinguen a un objeto se conocen como ____________________del objeto. g. La primera técnica formal de programación conocida fue la programación _______________________________________. 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. Matemáticas es un objeto de la clase _________________. q. _____________ es un objeto de clase pescado. r. Arroz con pollo ______________ comida. Informática I. Versión 1.0 Agosto de 2004 36