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.