67
Instituto Tecnológico de Roque Departamento de Sistemas y Computación Curso de nivelación: LÓGICA

Instituto Tecnológico de Roque · 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

  • Upload
    dinhanh

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

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

Luego, el número de combinaciones posibles será de: 2 x 2 x 2 = 23

= 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 el fichero

“NuevoMundo.mdo” que guardaste en el punto anterior).

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() (avanza una esquina)

2. turnleft() (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 facingEast

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

1

Valor de la función

2 Resultado final

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

1

Valor de la función

2 Resultado final

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.