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