Download Instituto Tecnológico de Roque Curso de nivelación: LÓGICA

Document related concepts

Proposición wikipedia , lookup

Lógica proposicional wikipedia , lookup

Doble negación wikipedia , lookup

Negación lógica wikipedia , lookup

Tabla de verdad wikipedia , lookup

Transcript
Instituto Tecnológico de Roque
Departamento de Sistemas y Computación
Curso de nivelación:
LÓGICA
LÓGICA PROPOSICIONAL O LÓGICA DE ENUNCIADOS
1.- LOS SIGNOS
Signo es todo aquello que, para alguien, representa o evoca otra cosa distinta
de sí misma.
Ejemplos: señales de tráfico, palabras, la danza de las abejas, el humo…
Para que algo pueda ser considerado signo, es necesario, en primer lugar, que
tenga significado para alguien.
Una primera clasificación de los signos distingue entre aquellos que poseen un
solo significado (son llamados señales), y aquellos que poseen significaciones
múltiples (símbolos). Ahora bien, si tenemos en cuenta el tipo de relación que
los signos mantienen con su significado, éstos se clasifican en:
* Vestigios o índices: La relación que este tipo de signos mantiene con su
significado es de carácter natural. Por ejemplo: el humo es «índice» o «vestigio»
del fuego, una huella en la arena lo es del animal correspondiente, etc.
* Imágenes o iconos: La relación que este tipo de signos mantiene con su
significado es una relación de semejanza o parecido. Por ejemplo: algunas
señales de tráfico, las fotografías, las pinturas realistas, etc.
* Símbolos: son aquel tipo de signos que mantienen con su significado una
relación puramente arbitraria o convencional. Por ejemplo: las palabras del
lenguaje natural humano, los números, las pinturas abstractas, las banderas o
los signos de la lógica…
La ciencia que estudia los signos se llama SEMIÓTICA. Ésta, a su vez, se divide
en tres partes, que constituyen tres maneras de estudiar los signos:
1. Sintaxis: estudia los signos teniendo únicamente en cuenta las diversas
relaciones que se establecen entre ellos con independencia de su significado.
Este es el tipo de estudio que realizan todas las Gramáticas.
2. Semántica: estudia los signos teniendo en cuenta la relación que mantienen
con su significado o referencia, es decir, con las cosas de la realidad
representada por ellos. Este es el tipo de estudio que hacen los Diccionarios o
las Etimologías.
3. Pragmática: estudia los signos teniendo en cuenta la relación que existe entre
ellos y las personas que los utilizan para comunicarse o representar algo. Este
es el tipo de estudio que realizan los investigadores de las jergas o argots
profesionales, étnicos, regionales, de pandillas…
2. COMUNICACIÓN, LENGUAJE Y METALENGUAJE
La comunicación es un fenómeno natural basado en la capacidad que poseen
todas las especies animales de transmitirse mediante signos de muy diverso
tipo: sonoros, visuales, olfativos, etc.
Esta capacidad la encontramos especialmente desarrollada en el lenguaje
humano.
Pues aunque los animales pueden transmitir información mediante signos
unívocos (señales: así, por ejemplo, que un perro gruña y te enseñe los dientes
es señal indudable de que te puede morder), el lenguaje humano está
compuesto principalmente de signos multívocos (símbolos), y además posee la
capacidad referirse a sí mismo. Es decir, puede convertirse en un
Metalenguaje: es el lenguaje usado para hablar del propio lenguaje, es decir, de
sí mismo.
Ejemplo: La frase «“Gato” tiene cuatro letras» es una frase en la que el lenguaje
habla de sí mismo y, por tanto, pertenece al «metalenguaje». A diferencia de la
frase «El gato de mi casa es gris», en la cual el lenguaje se usa para referirse a
la realidad, siendo el uso habitual que le damos al lenguaje.
3. LENGUAJE NATURAL
Se entiende por Lenguaje Natural al lenguaje (=conjunto de símbolos) utilizado
por una sociedad para comunicarse. Hay que precisar que el lenguaje que
usamos para comunicarnos y referirnos a la realidad no es ‘natural’ en sentido
estricto, sino que lo aprendemos en sociedad, a diferencia de lo que ocurre con
los demás animales cuyo lenguaje es natural o innato, es decir, lo desarrollan
naturalmente aunque no estén en contacto con individuos de su misma especie.
Al lenguaje que aprendemos en sociedad y que usamos para comunicarnos y
referirnos a las cosas que nos rodean, lo llamamos Lenguaje Cotidiano o
Lenguaje Ordinario o Lenguaje Natural.
3.1 ELEMENTOS DEL LENGUAJE NATURAL: SÍMBOLOS Y REGLAS
El Lenguaje Natural humano consta de un conjunto finito de símbolos (palabras
y signos lingüísticos, que forman el Vocabulario) y un número finito también de
reglas (constituyen la Sintaxis), las cuales determinan cómo combinar
correctamente los símbolos del vocabulario, es decir, establecen cómo formar
correctamente oraciones en ese lenguaje.
3.2. ¿QUÉ ES UNA ORACIÓN?
Es una expresión lingüística sintácticamente correcta (=está bien construida de
acuerdo con las reglas) y que posee sentido completo. Llamamos «expresión
lingüística» a cualquier combinación de símbolos de un lenguaje. Ejemplos: “El
cuarzo es un mineral”, “¿Qué hora es?”, “Cierra la puerta”,…
Por el contrario, expresiones como “Vivir con cuando”, “Lloviendo noche estaba
aquella”, etc. no son oraciones porque o bien no tienen sentido completo o son
sintácticamente defectuosas.
3.3. ¿QUÉ ES UNA ORACIÓN ENUNCIATIVA O ENUNCIADO?
Es una expresión lingüística que tiene sentido completo y que puede ser
verdadera o falsa. De los anteriores ejemplos de oraciones, sólo el primero (“El
cuarzo es un mineral”) es un enunciado, pues dice algo que puede ser
verdadero o falso, mientras que los otros dos ejemplos (“¿Qué hora es?”,
“¡Cierra la puerta!”) no lo son porque no cabe preguntarse si es verdadero o
falso lo que ‘dicen o expresan’.
Desde Aristóteles se denomina “uso apofántico” del lenguaje a la utilización de
éste para formular oraciones cuyo contenido puede ser verdadero o falso; estas
oraciones reciben el nombre de enunciados. Son oraciones que se refieren a
algún hecho de la realidad y que, por tanto, si lo ‘expresan’ bien, son
verdaderas, y si no, falsas.
3.4. INSUFICIENCIAS DEL LENGUAJE NATURAL
Dada la multivocidad (=riqueza significativa) que lo caracteriza, el Lenguaje
Natural resulta insuficiente para las exigencias de exactitud de la ciencia o para
la formulación precisa de razonamientos complejos (aunque esa riqueza
expresiva lo convierta en el mejor aliado del poeta, el novelista o el orador). Las
insuficiencias del Lenguaje Natural con respecto a la precisión de sus
expresiones son consecuencia de:
a) Ambigüedades semánticas: en el Lenguaje Natural hay muchas palabras y
expresiones cuyo significado no es preciso, sino ambiguo; rebosa de términos
polisémicos (es decir, palabras que tienen más de un significado).
Ejemplo:
“Pedro alquiló una casa” (no sabemos si la casa que Pedro alquila es de su
propiedad y se la alquila a otra persona, o si Pedro la alquiló para habitarla él),
“Llevaba el gato en el coche”, “Te sigo”,…
b) Deficiencias sintácticas: las reglas sintácticas que determinan cómo combinar
correctamente las palabras del lenguaje natural carecen de criterios rigurosos
que permitan evitar oraciones sin sentido. Ejemplos: “Los martillos cerrados
paladean locamente”, “Allí donde los libros bordean las ásperas playas se alza el
fondo de planicie más elevado”,…
4. LENGUAJE ARTIFICIAL
Tratando de superar las citadas limitaciones del Lenguaje Natural, para
proporcionarle a las ciencias un lenguaje exacto y riguroso, se han ido
construyendo los Lenguajes Artificiales, esto es, lenguajes bien definidos que
poseen una estructura operativa más eficaz.
En líneas generales puede decirse que todas las ciencias, en especial las
ciencias de la naturaleza, emplean Lenguajes Artificiales y que ésta ha sido una
de las condiciones para su progreso. Por ejemplo, los símbolos de la Química, la
Física, la Biología, pero también los de la Economía, la Lingüística, etc.,
constituyen tipos de lenguaje artificial.
4.1. ELEMENTOS QUE INTEGRAN UN LENGUAJE ARTIFICIAL
Básicamente consta de los mismos elementos que cualquier lenguaje natural
(un conjunto se signos y una serie de reglas sintácticas), pero se le exige
además:
a) Que los signos estén bien definidos, para que no quepan ambigüedades;
b) Que el conjunto de las reglas para la formación de expresiones, impida la
construcción de expresiones carentes de sentido y permita saber, en cualquier
momento, si una determinada combinación de signos es una expresión bien
formada del Lenguaje;
c) Y que posea, además, un conjunto de reglas operativas o de transformación
de expresiones, que permita deducir a partir de unas expresiones correctas del
Lenguaje otras que también lo sean, para de ese modo construir rigurosas y
complejas cadenas deductivas.
5. LENGUAJE FORMAL
Se denomina Lenguaje Formal a un Lenguaje Artificial cuyos signos son
formales (es decir, carecen de significado) y cuyas reglas sintácticas permiten
operar con dichos signos como en un cálculo.
La Lógica y las Matemáticas son Lenguajes Artificiales y, además, Formales.
¿Qué significa que los signos de un Lenguaje Formal carecen de
significado?
Pues que tales signos no se refieren en absoluto a la realidad. Así, por ejemplo,
el signo matemático ‘2’ no se refiere a dos cosas concretas, como dos
manzanas o dos peras; y lo mismo le ocurre a los signos lógicos ‘p’, ‘q’, ‘r’, que
no se refieren a ninguna proposición determinada.
¿Qué significa que las reglas de un Lenguaje Formal poseen la eficacia de
un cálculo?
- Que mediante tales reglas siempre podremos saber si una expresión (es decir,
un conjunto de signos) está bien formada en ese lenguaje.
- Y que mediante la aplicación de dichas reglas podremos transformar
expresiones bien formadas en dicho lenguaje en otras expresiones que también
lo estén, y que por algún motivo nos interesen.
6. LA LÓGICA COMO LENGUAJE FORMAL
La Lógica puede definirse como aquella ciencia o reflexión sistemática que
estudia las condiciones o leyes que debe cumplir todo razonamiento para ser
formalmente válido.
6.1. ¿QUÉ ES UN RAZONAMIENTO?
Un razonamiento es un proceso mental que se caracteriza porque en él se
produce el paso de ciertas afirmaciones (las PREMISAS) a otra afirmación (la
CONCLUSIÓN) que se deriva, deduce o infiere de aquéllas.
{Una pequeña aclaración: todo razonamiento es pensamiento (es decir, es una
actividad mental), pero no todo pensamiento es razonamiento, pues podemos
pensar (en un árbol, en una isla o en un triangulo, por ejemplo), sin pretender
sacar conclusión alguna acerca de lo pensado, es decir, sin integrarlo en un
razonamiento.}
6.2. CONDICIONES QUE DEBE REUNIR UN RAZONAMIENTO PARA SER
FORMALMENTE VÁLIDO
Un razonamiento es formalmente válido, es decir, posee una estructura lógica
correcta, cuando existe una conexión entre sus afirmaciones tal que la
conclusión se deduce necesariamente de las premisas.
Hemos de distinguir entre verdad y validez:
- La verdad es una propiedad de los enunciados. Un enunciado será verdadero
o falso si lo que él afirma ocurre o no en la realidad. Por ejemplo, “los gatos son
animales con alas” o “está lloviendo”, son enunciados verdaderos si lo que
afirman puede ser observado en la realidad.
- Los razonamientos, sin embargo, son válidos no porque los enunciados que lo
integren
sean
verdaderos,
pues
es
posible
construir
razonamientos
perfectamente válidos con enunciados falsos, sino que un razonamiento es
válido únicamente si la conclusión se deduce necesariamente de las premisas.
Veamos el siguiente ejemplo que nos permite distinguir verdad de validez:
7. LA LÓGICA PROPOSICIONAL O LÓGICA DE ENUNCIADOS
La proposición lógica constituye el elemento fundamental de la lógica.
Una proposición lógica es un enunciado lingüístico que debe cumplir con la
condición de ser susceptible de poder ser verdadero o falso.
Por ejemplo:
“La temperatura ambiente es mayor de 20 grados” es un enunciado que puede
ser Verdadero o Falso.
La proposición puede ser verdadera o falsa en un momento dado, decimos
entonces que, el valor de verdad de una proposición lógica es, por definición,
verdadero o falso, y es representado por las letras V o F.
El valor de verdad de la proposición de acuerdo a la relación de su contenido
con la realidad no es el objeto de estudio de la lógica. Es por esta razón que se
afirme que la lógica habla de lo posible, pero no de lo real. De esta manera,
dada la proposición “hace frío”, independiente de las creencias de cualquiera o
de la realidad de que esté o no haciendo frío, independiente del lenguaje o de la
forma lingüística usada como “la temperatura está baja”, la lógica sólo se ocupa
de la posibilidad de ser verdadero o falso de la proposición.
De allí que se suela afirmar que “la verdad lógica es una verdad formal, que no
tiene contenido”.
Observemos que las proposiciones se dan mediante un enunciado lingüístico,
generalmente en la forma gramatical de oración enunciativa:
Recordemos que la oración enunciativa se corresponde con los actos de habla
declarativos, los cuales comunican sin más, un hecho: “Juan es Colombiano”.
Estas expresiones contienen un sujeto perfectamente definido o dado por el
contexto, un predicado y una conjugación del verbo ser, observemos algunos
ejemplos:
Ejemplos:
oy es sábado
De esta manera, podemos afirmar que la lógica se ocupa de las proposiciones.
Más adelante, estudiaremos reglas que permiten la transformación de unas
expresiones en otras equivalentes, y veremos como, de acuerdo a estas reglas
o leyes lógicas, a partir del valor de verdad de una o varias proposiciones
logramos inferir la verdad o falsedad de otras proposiciones.
Representación de las proposiciones
La lógica utiliza un lenguaje exacto que no da lugar a imprecisiones, para tal fin
toma como elemento básico de análisis a la proposición, que no es otra cosa
que una oración del lenguaje cotidiano con un significado mucho más limitado;
en tales condiciones, se puede considerar una proposición como una excepción
lingüística que tiene la propiedad de ser verdadera o falsa. Galindo (1999)
Las proposiciones se representan simbólicamente mediante el uso de letras
minúsculas del alfabeto tales como p, q, r, s, ..., x, y, z, las cuales reciben el
nombre de letras o variables proposicionales; de esta forma, el lenguaje
proposicional se hace más simple y exacto que el lenguaje natural. Así, también
se logra simplificar la escritura de argumentos lógicos complicados, creando un
lenguaje simbólico artificial, en donde se establece un conjunto de reglas claras,
bien definidas y que no presentan las ambigüedades ni vaguedades del lenguaje
corriente o natural:
Los siguientes ejemplos ilustran cómo se pueden simbolizar las proposiciones:
Ejemplos:
p : Hoy es sábado
q : Estudio filosofía
r : Colombia es el país con el mayor número de especies de aves del mundo
x : 4 + 3 = 10
En el lenguaje cotidiano se encuentran expresiones como las siguientes:
Ejemplos:
y tienen espinas.
o perdió?
no hay violencia.
Si estudio lógica matemática entonces podré determinar la validez de un
razonamiento lógico.
si y sólo si se puede dividir por 2.
Para la formación de las oraciones del ejemplo anterior se utilizaron las
expresiones especiales: y, o, no, si … entonces, sí y sólo si, que sirvieron
para unir o enlazar los enunciados; denominamos a éstas partículas o términos
de enlace "nexos o conectivas", que establecen relaciones sintácticas como
función de coordinación y subordinación determinadas entre las proposiciones
que la integran; tal ocurre en la función de las conjunciones en las oraciones
compuestas de la lengua.
Al igual que a las proposiciones, también les asignamos un lenguaje simbólico
así:
Partiendo del ejemplo anterior, podemos hallar la notación simbólica de las
expresiones planteadas:
Ejemplos:
y tienen espinas.
p : Las rosas son rojas
q : Las rosas tienen espinas
p∧q
o perdió?
r: La selección Colombia ganó?
s: La selección Colombia perdió?
r ∨s
no hay violencia.
t : En el país hay violencia.
t¬
Si estudio lógica matemática entonces podré determinar la validez de un
razonamiento lógico
x : Estudio lógica matemática
y : Seré un destacado ingeniero de sistemas
x→y
si y sólo si se puede dividir por 2.
u : 4 es un número par
v : 4 es divisible por 2
u ↔ v
Clasificación de las proposiciones
En lógica se consideran y se simbolizan dos clases de proposiciones: atómicas
o simples y moleculares o compuestas, veamos:
Proposiciones simples
Se denominan proposiciones simples aquellas oraciones que no utilizan
conectivos lógicos.
Estos son algunos ejemplos:
p : El eclipse es un fenómeno natural
q : La luna es un satélite de la tierra
r : La UNAD es una universidad abierta
s: -3 es el inverso aditivo de 3.
El valor de verdad de una proposición simple puede ser verdadero (V) o falso
(F), pero no los dos valores al mismo tiempo, pues dejaría de ser proposición.
Recordemos que una proposición debe tener sentido completo, es decir debe
ser posible asignarle un valor de verdad (es falsa o verdadera).
Ejemplos: 1 + 4 = 5
3 es número par
Medellín es la capital de Antioquia
Proposiciones Compuestas
Si se unen dos o más proposiciones simples, mediante términos de enlace, tales
como no, y, o, si…entonces, se forman las proposiciones compuestas; el valor
de verdad de dichas proposiciones es verdadero o falso, dependiendo sólo de
los valores de verdad de las proposiciones simples que las conforman.
Ejemplos: La igualdad de oportunidades conduce a la paz
Si un triángulo es isósceles, entonces es equilátero
Quieres gaseosa o helado
Las proposiciones compuestas son aquellas que se obtienen combinando dos o
más proposiciones simples mediante términos de enlace.
Estos son algunos ejemplos de proposiciones compuestas:
Sean: p : Está lloviendo
q: El sol brilla
“Está lloviendo y el sol brilla” p ∧ q
Sean: x : Quieres café?
y : Quieres té?
“¿quieres café o té?” x ∨ y
Sean: s : Llueve
r : Hace frío
“Si llueve entonces hace frío” r→s
Sean: p : Un triángulo es equilátero
q: Un triángulo tiene sus tres lados iguales
p ↔ q “Un triángulo es equilátero si y sólo si tiene sus tres lados iguales.”
Conectivos Lógicos
Como ya se dijo en la sección anterior, los símbolos que sirven para enlazar dos
o más proposiciones simples, se llaman conectivos lógicos. Los conectivos
lógicos son: la conjunción, la disyunción, la negación, el condicional y el
bicondicional.
Conjunción: “ ᴧ “
Sean p y q dos proposiciones simples. La proposición compuesta p y q
simbolizada por “p ∧ q“, se denomina la conjunción de p y q.
Ejemplo 1: r ∧ s: 6 es número par y entero positivo, en donde:
r : 6 es un número par.
∧:y
s : entero positivo.
Ejemplo 2: p ∧ q: Diego estudia psicoanálisis y Ana estudia conductismo.
p : Diego estudia psicoanálisis
∧:y
q : Ana estudia conductismo
Para determinar el valor de verdad de proposición compuesta formada por dos
proposiciones simples unidas por una conjunción utilizaremos la representación
gráfica mediante el uso de los diagramas de VENN. Los diagramas de VENN, a
través de áreas sombreadas muestran claramente el conjunto de verdad de la
operación que se está realizando, veamos:
La siguiente figura representa el conjunto de verdad de la conjunción, donde:
U = {todas las personas}
P = {personas que juegan futbol}
Como se dijo en la sección anterior, el valor de verdad de una proposición
compuesta no sólo depende del conectivo lógico, sino del valor de verdad de
cada una de sus proposiciones simples. Por lo tanto, surgen las siguientes
posibilidades:
Caso 1: Que p sea verdadera y q sea verdadera
Caso 2: Que p sea verdadera y q sea falsa
Caso 3: Que p sea falsa y q sea verdadera
Caso 4: Que p sea falsa y q sea falsa
Estudiemos estos cuatro casos en el ejercicio propuesto:
Caso 1: r: Santiago es jugador de futbol
s: Santiago es Colombiano
r ∧ s : Verdadera (V)
Caso 2: r: Santiago es jugador de futbol
s: Santiago no es Colombiano
r ∧ s: Falsa (F)
Caso 3: r: Santiago no es jugador de futbol
s: Santiago es Colombiano
r ∧ s : Falsa (F)
Caso 4: r : Falsa. Santiago no es jugador de futbol
s: Falsa. Santiago no es Colombiano
r ∧ s : Falsa (F).
A continuación se analizan estas posibilidades para el ejemplo 1:
Caso 1: r: Verdadera 6 es un número par
s: Verdadera 6 es un entero positivo
r ∧ s: Verdadera (V)
Caso 2: r: Verdadera 6 es un número par
s: Falsa 6 no es un entero positivo
r ∧ s: Falsa (F) rs∧
Caso 3: r: Falsa 6 no es un número par
s: Verdadera 6 es un entero positivo
r ∧ s: Falsa (F)
Caso 4: r : Falsa 6 no es un número par
s: Falsa 6 no es un entero positivo
r ∧ s: Falsa (F)
Podemos resumir estos resultados utilizando la siguiente tabla, llamada tabla de
verdad de la conjunción:
La disyunción “ v “
Sean p y q dos proposiciones simples. La proposición p o q, simbolizada “p v q”
se llama disyunción de p y q.
Ejemplo 1: Uso del “o” incluyente
r v s: Juan estudia ingeniería o Paola estudia medicina
r : Juan estudia ingeniería
v:o
s: Paola estudia medicina
Ejemplo 2: Uso del “o” excluyente
x v y : Quieres helado o gaseosa.
x : Quieres helado.
v:o
y: Quieres gaseosa.
Ejemplo 3: Uso del “o” excluyente
p v q: Alexandra vive en Bogotá o en Barranquilla.
p : Alexandra vive en Bogotá.
v:o
q : Alexandra vive en Barranquilla.
Los ejemplos anteriores muestran los usos del operador “o”. En el ejemplo 2
tenemos el llamado “o incluyente” el cual hace que el valor de verdad de una de
las dos proposiciones simples repercuta en el valor verdadero de la proposición
disyuntiva; mientras que el conectivo lógico “o” de los ejemplos 2 y 3 actúa como
un “o excluyente”, donde el valor de verdad de una proposición excluye la
veracidad de la otra proposición, esto hace que la proposición disyuntiva
siempre tome el valor verdadero.
Para establecer el valor de verdad de una proposición disyuntiva, consideremos
las siguientes funciones proposicionales:
U = {personas que son Colombianas}
P(x) = x es una persona que vive en Bogotá
Q(x) = x es una persona que vive en Barranquilla
Como se analizó en la conjunción, el valor de verdad de la proposición
compuesta no sólo depende del conectivo lógico, sino del valor de verdad de
cada una de sus proposiciones simples. Por lo tanto, surgen las mismas cuatro
posibilidades:
Caso 1: Que p sea verdadera y q sea verdadera
Caso 2: Que p sea verdadera y q sea falsa
Caso 3: Que p sea falsa y q sea verdadera
Caso 4: Que p sea falsa y q sea falsa
A continuación se analizan estas posibilidades para las siguientes dos
proposiciones:
Sean: r: 2 es un número par
s: 5 es un número impar
Caso 1:
r: Verdadera 2 es par
s: Verdadera 5 es impar
r ∨ s: Verdadera (V) 2 es par o 5 es impar
Caso 2:
r: Verdadera 2 es par
s: Falsa 5 es no es impar
r ∨ s : Verdadera (V) 2 es par o 5 no es impar
Caso 3:
r: Falsa 2 no es par
s: Verdadera 5 es impar
r ∨ s: Verdadera (V) 2 no es par o 5 es impar
Caso 4:
r:
Falsa 2 no es par
s: Falsa 2 no es impar
r ∨ s: Falsa (F) 2 no es par o 5 no es impar
De lo planteado en los casos anteriores podemos concluir que la tabla de verdad
de la disyunción es:
Es decir, la disyunción es falsa solamente cuando las dos proposiciones simples
son falsas. En los otros casos es verdadera
La negación ~
Sea p una proposición simple. Se define la negación de p mediante la
proposición compuesta no p simbolizada por: “~ p” o por “” p¬
Ejemplo 1: p: 3 es un número entero primo.
p¬: 3 no es un número entero primo, también se puede leer.
es
falso que 3 es un número entero primo.
Ejemplo 2: q: El automóvil de Francisco es rojo.
~ q: El automóvil de Francisco no es rojo ,o, es falso que el automóvil
de Francisco es rojo.
Claramente se puede establecer que si una proposición es verdadera su
negación es falsa y recíprocamente, si una proposición es falsa su negación es
verdadera, por lo tanto la tabla de verdad de la negación es:
El área sombreada corresponde a la negación de P
El condicional “→“
Se dice que una proposición compuesta es condicional, si esta formada por dos
proposiciones simples enlazadas por la expresión “si…entonces”.
Si p y q representan dos proposiciones, la expresión “si p entonces q” se
simboliza así: p → q y se lee p implica q.
La proposición precedida por la expresión “si”, se llama antecedente o
hipótesis y la proposición precedida por la expresión “entonces”, se llama
consecuente o conclusión de la implicación.
En la expresión p → q, el antecedente es p y el consecuente es q.
Las proposiciones condicionales se pueden enunciar en nuestro lenguaje natural
de diferentes maneras, algunas son:
p entonces q
p sólo si q
q si p
p es suficiente para q
q es necesaria para p
Los siguientes ejemplos ilustran los anteriores enunciados:
Si un entero es múltiplo de 4 entonces es divisible por 2
Apruebo el semestre sólo si estudio
El algoritmo está bien enunciado si el programa corre
Si dos rectas nunca se cortan necesariamente son paralelas
Si es conductista entonces reduce toda conducta humana a la
relación estímulo-respuesta
¿Cómo determinar el valor de verdad de la proposición condicional?
Supongamos verdadera la siguiente proposición:
“Si es un día soleado entonces hace calor”
Sea p: es un día soleado
q: hace calor
Como lo analizamos en los casos anteriores, surgen cuatro posibilidades:
Caso 1: Es un día soleado y hace calor. En este caso el antecedente y el
consecuente se cumplen. Por lo tanto la proposición compuesta p → q
es
verdadera.
Caso 2: Es un día soleado pero no hace calor. En este caso el antecedente se
cumple pero no se cumple el consecuente. Por lo tanto la proposición
compuesta p → q es falsa.
Caso 3: No es un día soleado pero a pesar de esto hace calor. En este caso
encontramos que aunque el antecedente se cumple el consecuente no. No
obstante esto no hace falsa la proposición compuesta original “Si es un día
soleado entonces hace calor”. Por lo tanto la proposición compuesta p → q es
verdadera.
Caso 4: Es no es un día soleado y no hace calor. En este caso no se da el
antecedente y no se cumple el consecuente. Por lo tanto la proposición
compuesta p → q es verdadera.
De los casos planteados concluimos que la tabla de verdad para la implicación
toma los siguientes valores:
El bicondicional “↔ “
Se denomina bicondicional a la proposición formada por dos proposiciones
simples conectadas por la expresión “sí y sólo sí”.
Simbólicamente si p y q son proposiciones simples, la doble implicación p ↔ q
constituye un bicondicional, donde p recibe el nombre de primer miembro y q
segundo miembro.
El bicondicional está formado por las implicaciones p → q y q → p, las cuales
deben tener el mismo valor de verdad para formar una equivalencia entre p y q;
en consecuencia, se dice que la proposición p es equivalente a la proposición q
y se acostumbra a escribir p ↔ q.
La proposición bicondicional tiene varias formas de traducción más no de
significación, veamos:
p sí y sólo si q
q sí y sólo si p
p entonces q y recíprocamente
q entonces q y recíprocamente
p es una condición necesaria y suficiente para q
q es una condición necesaria y suficiente para p
A continuación un ejemplo con premisas asociadas a la geometría:
Ejemplo 1: Dadas las proposiciones atómicas:
p: Un triángulo es rectángulo
q: Un triángulo tiene un ángulo recto
El bicondicional p ↔ q se puede traducir de las siguientes formas:
es un triángulo rectángulo
tiene un ángulo recto entonces es un triángulo rectángulo.
que tenga un ángulo recto.
recto es que sea un triángulo rectángulo.
¿Cómo determinar el valor de verdad de la proposición bicondicional?
Supongamos verdadera la siguiente proposición:
“Si y sólo si es un día soleado entonces hace calor”
Sea p: es un día soleado
q: hace calor
Como lo analizamos en los ejemplos anteriores, surgen cuatro posibilidades:
Caso 1: Es un día soleado y hace calor. En este caso ambas proposiciones se
cumplen. Por lo tanto la proposición compuesta p ↔ q es verdadera.
Caso 2: Es un día soleado pero no hace calor. En este caso se cumple sólo una
de las dos proposiciones simples, lo que de acuerdo con la expresión “Si y sólo
si es un día soleado entonces hace calor” no debería darse. Por lo tanto tal
proposición compuesta (p ↔ q) es falsa.
Caso 3: No es un día soleado pero hace calor. En este caso se cumple sólo una
de las dos proposiciones simples, lo que de acuerdo con la expresión “Si y sólo
si es un día soleado entonces hace calor” no debería darse. Por lo tanto tal
proposición compuesta (p ↔ q) es falsa.
Caso 4: No es un día soleado y no hace calor. En este caso se cumple sólo una
de las dos proposiciones simples, lo que no se contradice con la expresión “Si y
sólo si es un día soleado entonces hace calor”. Por lo tanto la proposición
compuesta (p ↔ q) es verdadera.
De los casos planteados concluimos que la tabla de verdad para la doble
implicación toma los siguientes valores:
Ejercicio Propuesto 8: De acuerdo a la definición estudiada para el bicondicional;
para determinar los valores de verdad de la proposición bicondicional basta
indagar por el valor de verdad de la conjunción entre las implicaciones p → q y q
→ p. Se propone al estudiante hacer la demostración.
Proposición: Proposiciones con sentido completo cuyo valor es verdadero o
falso, pero no ambos a la vez. Expresión lingüística con la propiedad de ser
verdadera o falsa.
Las proposiciones se representan simbólicamente mediante las letras p, q, r, s, t.
Conectivos lógicos: Son términos que sirven para unir o enlazar proposiciones
simples. Los conectivos lógicos fundamentales son:
Clases de proposiciones
1. Simples o atómicas: oraciones con sentido completo que no utilizan
conectivos lógicos.
2. Compuestas o moleculares: Se obtienen combinando dos o más
proposiciones simples mediante la utilización de los conectivos lógicos. Unión de
dos o más proposiciones simples mediante términos de enlace como o, y,
si…entonces, si y sólo si. Su valor de verdad depende de los valores que
tomen las proposiciones que la conforman.
3. Tablas de verdad para los conectivos lógicos:
1.9 Tablas de Verdad
Una tabla de verdad es una representación esquemática de las relaciones entre
proposiciones; sirve para determinar los valores de verdad de proposiciones
compuestas, las cuales dependen de los conectivos utilizados y de los valores
de verdad de sus proposiciones simples.
En la elaboración de una tabla de verdad los términos de enlace tales como la
negación ( “ ~ “), la disyunción ( “ v “) y la conjunción ( “ ᴧ “) se consideran
conectivos fundamentales; por tal razón, sus valores de verdad constituyen la
base para establecer bajo qué condiciones una proposición compuesta es
verdadera o falsa.
Como lo aprendimos en la lección anterior, la siguiente tabla resume los valores
de verdad de los conectivos lógicos:
Construcción de Tablas de Verdad
Para determinar el valor de verdad de una proposición compuesta es necesario
elaborar la correspondiente tabla de verdad; para tal fin y mediante el siguiente
ejemplo se enuncian los pasos a seguir:
Ejemplo 1:
Construir la tabla de verdad para la proposición ¬ (p ∧ q)
Paso 1: Identificar las proposiciones simples presentes en el razonamiento
lógico:
p,q
Paso 2: De acuerdo al número total de proposiciones simples se determina la
cantidad de combinaciones posibles entre los valores de verdad de las
proposiciones simples:
El ejercicio propuesto tiene dos proposiciones simples p y q, luego, las
combinaciones posibles de los valores de verdad serán:
¿Cuántos casos posibles tendremos para la proposición compuesta:
(p ∧ q) ∨ q?
Recordemos que el primer paso es identificar el número de proposiciones
simples:
Una vez más, las proposiciones simples son dos (2): p, q luego el número de
casos posibles es también de cuatro (4): FF, VF, VV, y FV.
¿Cuántos casos posibles tendremos para la proposición compuesta:
(p ∧ q) ∨ r?
El primer paso será identificar el número de proposiciones simples:
p, q, r
Si lo analizamos detenidamente, hay dos posibilidades para la p (V, F), también
hay dos posibilidades para la q (V, F) y dos posibilidades para la r (V, F):
3
Luego, el número de combinaciones posibles será de: 2 x 2 x 2 = 2 = 8
Esta conclusión nos permite encontrar una fórmula para calcular el número de
combinaciones posibles de acuerdo al número de variables lógicas o letras
proposicionales involucradas en la fórmula proposicional:
2n
NOTA: Más adelante, en el curso de probabilidad aprenderás que este es un
caso de combinación denominado permutaciones con repetición.
De esta manera, una función lógica con 4 letras proposicionales tendrá 16 casos
posibles, una función lógica con 5 letras proposicionales tendrá 32 casos
posibles, una función lógica con 6 letras proposicionales tendrá 64, una función
lógica con 7 letras proposicionales tendrá 128, una función lógica con 8 letras
proposicionales tendrá 256, una función lógica con 9 letras proposicionales
tendrá 512….
¿Te parecen conocidos estos números? Búscalos en el mundo de la
computación
Aunque lo determinante en el análisis de la tabla de verdad es que se
encuentren todas las combinaciones posibles y no el orden en que éstas sean
analizadas, el orden es un factor determinante para evitar casos repetidos en el
momento de construir la tabla de verdad.
Una convención es iniciar por el caso en que todas las proposiciones simples
sean verdaderas, terminando con el caso en el que todas las proposiciones
simples son falsas:
Para lograrlo, en la primera columna de izquierda a derecha iniciamos por
asignar grupos de valores de verdad iguales consecutivos, en la segunda
columna asignamos grupos de valores de verdad iguales consecutivos, en la
tercera columna asignamos grupos de valores de verdad iguales consecutivos
hasta obtener en la última columna valores de verdad intercalados. 22n 24n 28n
De esta manera, para n=3 asignaremos grupos de 4 valores de verdad (8/2)
valores de verdad iguales para la primera columna, la mitad de este valor (2)
para la segunda e intercalados (1) para la tercera:
Igualmente, para construir una tabla de verdad de 4 proposiciones simples
partimos asignado 8 valores verdaderos y 8 falsos, para la segunda columna
asignaremos de a 4 valores de verdad, para la tercera de a 2 y para la cuarta
columna de a 1.
Sin importar de que formula proposicional se trate, si el número de
proposiciones simples es igual, la combinación de los posibles casos de verdad
en la tabla es siempre el mismo.
Paso 3: Se hace un recorrido desde adentro hacia afuera de acuerdo a los
signos de agrupación:
.
Los signos de agrupación que encontraremos en una fórmula proposicional
sigue el orden:
{[({[(…)]})]}
Paso 4: Se identifica el conectivo que aparece dentro del paréntesis, en este
ejemplo propuesto ¬ (p ∧ q) es la conjunción.
Paso 5: Se precisa el término de enlace que precede al paréntesis, en el
ejemplo la negación.
Paso 6: Se elabora la tabla con el número de columnas determinado por:
Ejemplo 2:
Elaborar la tabla de verdad de la proposición: (p ∨ q) ∧ (p ∧ q)
Al realizar la fórmula proposicional encontramos que la tabla de verdad tendrá
cuatro (4) casos posibles, posteriormente, se observa que la proposición está
conformada por dos paréntesis conectados por la disyunción. De manera que
debemos encontrar los valores de verdad del paréntesis p ∨ q y del paréntesis p
∧ q, siguiendo el recorrido de adentro de los paréntesis hacia afuera.
Finalmente, haremos la conjunción entre los paréntesis: (p ∨ q) ∧ (p ∧ q)
Ejemplo 4:
Elaborar la tabla de verdad de la proposición: (p ∧ q) → r
Al realizar la fórmula proposicional encontramos que la tabla de verdad tendrá
ocho (8) casos posibles, posteriormente, se observa que la proposición está
conformada por un paréntesis conectado por un condicional. De manera que
debemos encontrar los valores de verdad del paréntesis p ∧ q y de la
proposición r , siguiendo el recorrido de adentro de los paréntesis hacia afuera.
Finalmente, resolveremos para el conectivo principal:
Desarrolla en este espacio el numeral 7:
Introducción
Por qué programamos Karel
Programar
un
ordenador
en
un
lenguaje
como
JAVA,
requiere
un
secuenciamiento preciso de los pasos, uno detrás de otro, escogiendo qué
pasos hay que seguir en cada caso, y controlando la repetición de ciertos pasos,
en el proceso de resolución de un problema. Aunque esta precisión se requiere
para las operaciones sin razonamiento de las computadoras, es extraña a los
humanos.
Los
humanos
somos
mucho
menos
rígidos
en
nuestro
comportamiento y podemos retroceder elegantemente si nuestros pasos no
parecen llevar a la consecución de un objetivo. Debido a que son diferentes las
habilidades de las computadoras y lo humanos, expresar la solución de un
problema en instrucciones que una computadora puede seguir está comprobado
que es difícil para mucha gente. Para conocer estos conceptos, nosotros
empezaremos programando el Robot Karel. Karel es una herramienta de
aprendizaje que presenta los conceptos de una forma visual, lo cual es menos
abstracto que programar en un lenguaje como JAVA o C. El Robot Karel fue
introducido por Richard Pattis en su libro Karel the Robot: A Gentle Introduction
to the Art of Programming with Pascal, John Wiley & Sons, Inc., 1981. Aunque el
lenguaje por default es Pascal, también se puede programar en JAVA.
Nosotros programaremos Karel, un Robot simple que vive en un mundo simple.
Debido a que Karel y su mundo son simulados, ¡nosotros podemos realmente
ver los resultados de un programa en acción ! El lenguaje con el que
programaremos Karel es una versión especial de JAVA, por lo tanto, la mayor
parte de lo que aprendamos, podrá ser aplicado directamente al lenguaje de
programación estándar JAVA.
El mundo de Karel
Karel puede orientarse en una de las cuatro direcciones: Este, Oeste, Norte y
Sur. Sólo gira 90º cada vez, por tanto no puede orientarse hacia en NordEste,
por ejemplo. En el mundo de Karel, las calles van de Este a Oeste, y son
numeradas comenzando por 1. No hay números de calle igual a 0 o negativos.
Las avenidas van de Norte a Sur, y también están numeradas empezando por 1.
Tampoco hay números de avenida igual a 0 o negativos. Se le llama esquina a
la intersección de una calle con una avenida. Karel va de una esquina a la
siguiente en un solo movimiento.
Ejecuta el programa Karel.exe de la carpeta
KarelOMI . Se iniciará el simulador del Robot. Ahora deberías ver la ventana de
abajo.
Esta ventana muestra las calles y avenidas que usa Karel para desplazarse.
Primero debemos inicializar (o crear) el mundo que Karel va a ocupar. La idea
es que puedas introducir algunos elementos en el mundo inicial de Karel.
Puedes colocar y quitar muros en el Norte, Sur, Este u Oeste del cursor dando
click con el botón izquierdo del ratón en la intersección de las calles
correspondientes. Los muros que limitan las calles y avenidas no se pueden
quitar, éstos son los que previenen que Karel se salga del mundo. Prueba a
introducir algunos muros para ver que aspecto tienen.
Otro elemento de interés en el mundo de Karel son los zumbadores. Un
zumbador es una forma de marca que Karel puede escuchar sólo cuando se
encuentra en la misma esquina que el zumbador. Karel tiene una mochila que
puede utilizar para poner los zumbadores que vaya cogiendo. También puede
hacer lo contrario, es decir, sacar los zumbadores de su mochila y depositarlos
en las esquinas por las que va pasando. Puedes ajustar el número inicial de
zumbadores en cada esquina dando click con el botón derecho del ratón en la
calle deseada y seleccionando el número de zumbadores deseados (para
colocar entre 10 y 99 zumbadores, selecciona la opción N zumbadores y escribe
el número deseado).
Prueba a poner algunos zumbadores para ver como se visualizan en el mundo.
Crea el mundo inicial que se muestra a continuación. Dado que hemos realizado
todo el trabajo necesario para crear un mundo para Karel, ¡vamos a guardarlo !
Pulsa sobre el botón Guardar, ve a tu directorio particular y guarda el mundo
como “NuevoMundo.mdo”
Finalmente, ¡Karel tiene su sitio en el mundo! Mueve el cursor del ratón hacia la
esquina de la Avenida 15 y Calle 1 y da click con el botón derecho del mouse,
situa el puntero del ratón en la opción "Situar a Karel" y elige "Orientado al
Oeste". Ahora deberías visualizar el mundo de abajo. Haz de nuevo click sobre
el botón "Guardar" , para almacenar los cambios.
Programando Karel
Antes de poder empezar, necesitamos dar a Karel un programa (serie de
instrucciones) a seguir. Después de todo, ¡es sólo un Robot!. Pulsa sobre la
pestaña "Programa" Ahora deberías ver una ventana con el aspecto de esta de
abajo. La zona que está vacía es donde escribiremos y veremos el programa de
Karel.
El lenguaje por default es Pascal, para programar en JAVA, selecciona la opción
que viene a la izquierda de los botones. Ahora pulsa en el botón "Nuevo ". Un
esqueleto del programa será creado automáticamente. Se creará un programa
inicial. Este programa inicial contiene los comandos básicos que son necesarios
en cada programa. Ahora deberías ver una ventana como la siguiente.
Date cuenta de que el programa anterior sólo le dice a Karel que se apague.
Antes de apagarlo, vamos a mandarle algunas tareas. La orden "move" le dice
a Karel que se mueva hacia adelante una esquina. Escribe "move();" antes
de"turnoff();" . Date cuenta de que el punto y coma se usa para separar órdenes
(tal como en JAVA). Ahora pulsa el botón "Compilar". Si no has cometido ningún
error, tu programa tendrás el aspecto del de la ventana siguiente:
Pulsa la pestaña de Ejecutar, y después haz click en el botón Inicializar.
(Ejecutar inicia la ejecución (correr) de nuestro programa. Al Inicializar, se
muestra el mundo que habíamos creado previamente (NuevoMundo.mdo)).
Ahora deberías ver la ventana de abajo (asumiendo que el fichero
“NuevoMundo.mdo” que creaste está todavía abierto. Si no, pulsa en la pestaña
“Mundo”,
y
pulsando
en
el
botón
“Abrir”,
selecciona
“NuevoMundo.mdo” que guardaste en el punto anterior).
el
fichero
Cuando des click en adelante podrás darte cuenta que la instrucción "move();"
se colorea de rojo. En este punto haz click en “Adelante” para que Karel realice
esa primera orden del programa. ¡Wow, Karel se ha movido solo ! Date cuenta
que la instrucción en rojo ahora es "turnoff();". Haz click sobre “Adelante”de
nuevo. Ahora el programa terminará correctamente. Si quieres probarlo otra vez,
antes tendrás que pulsar sobre el botón "Inicializar".
Ejercicio 1 : Escribe un programa de Karel para que se mueva a la esquina de
la 1ª Calle con la 1ª Avenida y se desconecte, asumiendo que empieza en la
esquina de la Calle 15 y la Avenida 15 con orientación hacia el Oeste. Guarda el
programa con el nombre “primerPrograma.txt”. Como mundo utiliza el guardado
anteriormente con el nombre “NuevoMundo.mdo”.
¡¡ Inténtalo !!
Comandos básicos de Karel
Hay cinco comandos básicos para Karel, estos son:
1. move()
2. turnleft()
(avanza una esquina)
(gira a la izquierda)
3. pickbeeper()
(coge un zumbador)
4. putbeeper()
(deja un zumpador)
5. turnoff()
(desconéctate)
La salud de Karel
Andar entre muros no es bueno para un robot, por lo tanto Karel tiene algunos
mecanismos salvavidas dentro de él. Si un programa le dice a Karel que se
mueva aunque haya un muro delante de él, él dirá que hay un error y no
realizará la acción. Lo mismo ocurrirá si le decimos que coja un zumbador en
una esquina y no existe ninguno. Las únicas órdenes que siempre lleva a cabo
sin importar la situación en la que se encuentre son turnleft() y turnoff(). Cuando
Karel nos dice que hay un error, no tenemos que echarle la culpa, sino que
probablemente habremos escrito mal alguna instrucción.
Ejercicio 2 : Cada mañana Karel se levanta de la cama y tiene que recoger el
periódico, representado por un zumbador, que está en el porche de la casa.
Escribe un programa que ordene a Karel que recoja el periódico y lo lleve de
vuelta a la cama. La situación inicial es la de la imagen de abajo, y la situación
final debe tener a Karel de vuelta en la cama (misma esquina, misma dirección
que cuando empezó) con el periódico (zumbador en su mochila). Crea un
mundo como el de la imagen y guárdalo como “periodico.mdo”.
Sentencias de Control de KAREL
Las sentencias de control se usan para elegir qué hacer, y/o cuantas veces
hacerlo. Sin embargo, por si solos no causan que ocurra algo. Simplemente
controlan la ejecución de otras sentencias o
fragmentos de código. A
continuación se lista una serie de sentencias de control de Karel:

if

iterate

if/else

while
Siempre a continuación de las sentencias de control y después de la expresión
booleana, se debe colocar una llave que abre "{" para iniciar el grupo de
sentencias a ser realizado. El grupo de sentencias va seguido de una llave que
cierra "}". Utilizamos el par "{ }" para un sólo parámetro o para varios, no
importa el número de ellos. El compilador devolverá una advertencia en caso de
que no se siga este estilo.
La sentencia if
En el Ejercicio 1 asumimos que Karel estaba orientado hacia el Este. ¿Y si
supiéramos que cuando se inicia está orientado hacia el Oeste o hacia el Sur ?
A veces necesitaremos girar primero tres veces, y a veces no. En este caso, la
sentencia de control if es lo que necesitamos en nuestro programa. Aquí hay un
ejemplo de como se debe escribir:
...
if (facingSouth) {
turnleft();
turnleft();
turnleft();
}
...
Las líneas " ... " significan que pueden haber otras sentencias antes o después
de la sentencia if. Nos da igual en esta explicación ya que no hay restricciones
en cuanto a lo que hay antes o después de la sentencia if.
La forma más general de la sentencia if es:
...
if (xxx) {
yyy
}
...
Donde
xxx es una condición y yyy es cualquier número de sentencias a
ejecutar si la condición if es verdadera.
Condiciones que puede detectar Karel
Date cuenta de que la condición facingSouth, en el fragmento de programa de la
página del if
...
if (facingSouth) {
turnleft();
turnleft();
turnleft();
}
...
La condición es una función de la situación actual de Karel, a medida que se
ejecuta el programa. Si Karel está actualmente orientado hacia el Sur, el valor
de la función facingSouth será verdadero, y el conjunto de sentencias entre las
llaves "{ }", se ejecutará. De otra manera, el valor facingSouth será falso y el
bloque de sentencias se saltará. Karel comprende cualquier función booleana
que comprueba su situación actual. Aquí hay un listado:
frontIsClear
nextToABeeper
frontIsBlocked notNextToABeeper
facingEast
facingWest
leftIsClear
anyBeepersInBeeperBag notFacingNorth
leftIsBlocked
noBeepersInBeeperBag notFacingSouth
rightIsClear
facingNorth
notFacingEast
rightIsBlocked facingSouth
notFacingWest
"clear" significa que no hay ningún muro, mientras que "blocked" significa que
hay un muro en esa dirección. Karel puede detectar si hay o no algún zumbador
en la esquina en la que se encuentra actualmente, así como detectar si tiene
algún zumbador en la mochila o no. También tiene una brújula para detectar
hacia qué dirección está orientado.
Por si fuera poco podemos unir dos o más funciones booleanas con los
operadores lógicos Y, O, y NO.
Podemos ver la síntaxis de los operadores y sus valores con las siguientes
tablas:
Operador y ("&&" )
Síntaxis: funciónBooleana1 && funciónBooleana2
Valor de la función Valor de la función
Resultado final
1
2
falso
falso
falso
falso
verdadero
falso
verdadero
falso
falso
verdadero
verdadero
verdadero
Operador o ("||")
Síntaxis: función-booleana1 || función-booleana2
Valor de la función Valor de la función
Resultado final
1
2
falso
falso
falso
falso
verdadero
verdadero
verdadero
falso
verdadero
verdadero
verdadero
verdadero
Operador no ("!")
Síntaxis: ! función-booleana
Valor de la función Resultado final
falso
verdadero
verdadero
falso
Los operadores "&&" y "||" se aplican sobre dos funciones y el operador "!" solo
sobre una. Lo mejor de los operadores lógicos es que si ponemos dentro de un
par de paréntesis las funciones con el operador lógico, entonces toda la
operación se vuelve una función booleana, por lo que podemos aplicar más
operadores lógicos sobre ella. ¿No quedó claro? Revisa estos ejemplos:
(facingNorth || facingSouth) && frontIsClear
(! (frontIsBlocked && nextToABeeper)) || facingEast
! (nextToABeeper && frontIsClear)
Ten mucho cuidado de colocar bien los paréntesis, ya que si no lo haces, no te
marcará error, pero seguramente hará algo extraño que tu no quieres que haga.
Por ejemplo, si queremos que Karel avance si está viendo al norte y el frente
esté libre, podemos hacer lo siguiente:
...
if (facingNorth && frontIsClear) {
move();
}
...
Ejercicio 3: Escribe un programa de Karel que haga que Karel esté orientado
al Norte, desde cualquier dirección inicial, y a continuación se apague. Debería
terminar en la misma intersección en la que empezó.
¿Alguna sugerencia?
En un mundo nuevo inserta el ejemplo visto arriba para el caso en que Karel
está orientado hacia el Sur. Pero, ¿qué ocurre cuando no está orientado hacia el
Sur?. ¡Podría estar también orientado hacia el Norte o el Este !. Entonces
necesitas dos sentencias if adicionales, en las cuales se especifique que es lo
que debe hacer Karel en esas situaciones.
Modifica el mundo inicial de Karel para probar cualquiera de las 4 direcciones de
inicio, y para cada una de ellas vuelve a ejecutar el programa.
En esta sección hemos visto como usar las sentencias de control para adaptar
Karel a cada situación.
La sentencia iterate
En el ejercicio 2, tenías que contar la secuencia correcta de pasos para que
Karel pudiese resolver el problema. En este caso probablemente no hay una
forma más corta de resolverlo. Sin embargo, en algunos problemas hay
aspectos del problema que tienen una naturaleza repetitiva. Por ejemplo, para ir
de la esquina 15 a la 1 tendríamos que poner un total de 14 “move()”. ¿Es difícil
dar justo con el número correcto?. El lenguaje de programación de Karel ofrece
un método mejor, la sentencia de control iterate. Se escribe como sigue:
...
iterate (xxx) {
yyy
}
...
Donde xxx debe ser un número entero positivo, y yyy representa cualquier
número de sentencias de Karel. El problema de los 14 avances podría haberse
escrito :
...
iterate (14) {
move();
}
Ejercicio 4: Asume que Karel está en la esquina de la 8ª Avenida y la 8ª Calle,
con el escenario que se ve en la siguiente imagen. Escribe un programa que
haga a Karel recoger todos los zumbadores y acabe en la 1ª esquina orientado
al Sur.
¿Crees que es muy difícil?
Bien… puede ser que un poco de ayuda venga bien. Si puedes imaginar como
hacerlo una vez (el primer zumbador de la esquina 7,7), la sentencia repite lo
hará tantas veces como tú quieras.
Crea un mundo como el de arriba y guárdalo con el nombre “diagonal.mdo”.
Escribe el programa y guárdalo con el nombre "diagonal.txt”. Asegurate de
utilizar la sentencia iterate. Prueba el programa en este mundo inicial. Karel
debería terminar en la esquina de la primera Avenida con la primera Calle, y
llevando 7 zumbadores en la mochila.
La sentencia if/else
Aquí puedes ver como se escribe una sentencia if/else:
...
if (xxx) {
yyy
}
else {
zzz
}
...
Donde xxx es una condición, yyy son sentencias a realizar si xxx es verdadero, y
zzz son las sentencias a ejecutar si xxx es falso.
Ejercicio 5 : Karel tiene la tarea de alinear una colección de zumbadores en la
primera Calle que ha sido distribuida desigualmente. Empieza en la 1ª Calle y la
15ª Avenida y está orientado al Oeste. Se supone que en cada esquina hay
exactamente un zumbador. Sin embargo, Karel puede encontrar 0, 1 o 2
zumbadores en cualquier intersección. Su tarea es asegurar que exactamente
hay un zumbador antes de continuar hacia la siguiente esquina. Cuando llega a
la esquina 1,1 debe apagarse.
Diseña el mundo inicial para que Karel comience en la esquina 1,15 orientado
hacia el Oeste. Karel debe empezar con 15 zumbadores en la mochila.
Aleatoriamente sitúa 1 o 2 zumbadores en esquinas a lo largo de la 1ª Calle, y
deja alguna sin zumbadores. Guarda tu mundo inicial con el nombre
“lineaDeZumbadores.mdo”.
Escribe el programa para hacer que Karel complete la tarea descrita
anteriormente. Guarda tu programa con el nombre “lineaDeZumbadores.txt”.
Truco: utiliza iterate, un if/else, y un if.
Recuerda, ¡no sabemos qué esquinas tienen el número equivocado de
zumbadores! Karel debe hacer la tarea correctamente independientemente del
nº de zumbadores que haya en cada esquina.