Módulo 3: Algoritmos y expresiones Tecnologías en la Educación Matemática Dr. Carlos Gonzalía DCIC - UNS Técnologías en la educación matemática – Dr. Carlos Gonzalía – 1 de Copyright ● ● ● Copyright © 2012 M. Capobianco, C. Gonzalía Se asegura la libertad para copiar, distribuir y modificar este documento de acuerdo a los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni textos de cubierta delantera o trasera. Una copia de esta licencia está siempre disponible en la página http://www.gnu.org/copyleft/fdl.html. Técnologías en la educación matemática – Dr. Carlos Gonzalía – 2 Qué queremos aprender Debemos aprender a decirle a la computadora cómo resolver un problema ● Problema Solución Implementación Técnologías en la educación matemática – Dr. Carlos Gonzalía – 3 Qué queremos aprender ● ● Un lenguaje más flexible para especificar como resolver un problema: lenguaje de diseño de algoritmos Un lenguaje de programación para implementar esta especificación en la computadora: lenguaje Pascal Técnologías en la educación matemática – Dr. Carlos Gonzalía – 4 Algoritmos ● ● ● Definición: un algoritmo es una secuencia finita de pasos u operaciones, que cuando se los ejecuta, producirá resultados. Visión estática: es la especificación de la solución Visión dinámica: es la ejecución de la solución, al realizar los pasos alcanzamos la solución Técnologías en la educación matemática – Dr. Carlos Gonzalía – 5 Algoritmos ● ● Un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida) Un algoritmo es tal que funciona paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular. Técnologías en la educación matemática – Dr. Carlos Gonzalía – 6 ¿De donde viene la palabra algoritmo? Abu Abdallah Muḥammad ibn Mūsā al-Jwārizmī (Abu Yā'far), conocido generalmente como alJuarismi, fue un matemático, astrónomo y geógrafo persa musulmán chií, que vivió aproximadamente entre 780 y 850. Debemos a su nombre y al de su obra principal, "Hisāb al-ŷabr wa'l muqābala", nuestras palabras álgebra, guarismo y algoritmo. Es considerado como el padre del álgebra. Técnologías en la educación matemática – Dr. Carlos Gonzalía – 7 Métodos para expresar un algoritmo ● Lenguaje natural ● Diagramas de Flujo ● Pseudo código ● Sistemas Formales ● Lenguajes de programación Técnologías en la educación matemática – Dr. Carlos Gonzalía – 8 Lenguaje Natural ● ● ● Las descripciones en lenguaje natural tienden a ser ambiguas y extensas No son recomendables Los diagramas de flujo y el pseudo código evitan las ambigüedades Técnologías en la educación matemática – Dr. Carlos Gonzalía – 9 Diagramas de flujo ● ● ● Los diagramas de flujo son descripciones gráficas de algoritmos Usan símbolos conectados con flechas para indicar la secuencia de instrucciones Sólo usados para algoritmos simples porque abarcan mucho espacio y son engorrosos de construir Técnologías en la educación matemática – Dr. Carlos Gonzalía – 10 Pseudo código ● ● Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de programación pero con algunas convenciones del lenguaje natural Posee varias ventajas con respecto a los diagramas de flujo, entre las que se destaca el poco espacio que se requiere para representar instrucciones complejas. Técnologías en la educación matemática – Dr. Carlos Gonzalía – 11 Lenguajes de programación ● ● La mayoría de los algoritmos se crean para luego implementarse en un lenguaje de programación Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por las computadoras Técnologías en la educación matemática – Dr. Carlos Gonzalía – 12 Pasos para construir un programa ● Metodología que usaremos: – Descripción de alto nivel – Descripción más estructurada con un algoritmo en pseudo código – Implementación en un lenguaje de programación (en nuestro caso Pascal) Técnologías en la educación matemática – Dr. Carlos Gonzalía – 13 Pseudo código (LDA) ● ● El lenguaje de diseño de algoritmos que usaremos sigue una serie de pautas A continuación resumiremos como debemos construir nuestros algoritmos Técnologías en la educación matemática – Dr. Carlos Gonzalía – 14 Datos en los algoritmos ● ● ● Al resolver el problema se deben identificar los diferentes datos que usará el algoritmo: – Datos de entrada – Datos de salida – Datos auxiliares Todo dato deberá estar identificado en el algoritmo Un dato no identificado será considerado un Técnologías en la educación matemática – Dr. Carlos Gonzalía – 15 ERROR Datos en los algoritmos ● ● ● ● Un dato en un algoritmo tiene un nombre fijo que lo identifica unívocamente El nombre de un dato debe ser claro y representativo de cuál es la finalidad del dato dentro del algoritmo Todo dato en un algoritmo tiene un valor, que puede ser modificado Hay distintos tipos de datos (numéricos, lógicos, etc) Técnologías en la educación matemática – Dr. Carlos Gonzalía – 16 Expresiones con datos ● Operadores matemáticos: * / /e + - ● raíz cuadrada ● Paréntesis ( ) ● Operadores lógicos : y , o , no ● Los operadores = > < ● // Ejemplos: (num1 + 3) > (num2+num3) (resto=0) y (divisor > 3) Técnologías en la educación matemática – Dr. Carlos Gonzalía – 17 Acciones en un algoritmo 1)Secuencia de acciones: impone implícitamente un orden de arriba hacia abajo y de izq. a derecha 2)Asignación de valores a datos (←) 3)Condiciones 4)Repeticiones Técnologías en la educación matemática – Dr. Carlos Gonzalía – 18 Asignación ● <nombre de dato> ← <expresión> ● La flecha indica el orden de la evaluación ● ● Se evalúa la expresión, se obtiene un valor y luego se modifica el valor del dato a la izquierda del símbolo ← El tipo de la expresión tiene que ser compatible con el del dato a modificar Técnologías en la educación matemática – Dr. Carlos Gonzalía – 19 Asignación ● Pensar ejemplos de asignaciones ● Diseñar secuencias de asignaciones Técnologías en la educación matemática – Dr. Carlos Gonzalía – 20 Ejemplos ● AñoNacimiento ← 1980 ● AñoCorriente ← 2010 ● Edad ← AñoCorriente – AñoNacimiento ● Existe ← falso ● Positivos ← ( A> 0 ) y ( B >0) Técnologías en la educación matemática – Dr. Carlos Gonzalía – 21 Intercambiar dos datos ● ● Dados dos datos A y B que tienen valores, intercambiar los valores de A y B Ejemplo: A tiene 3 y B tiene 10, al intercambiar queda A con 10 y B con 3 ¿Qué ocurre si tiene dos vasos, uno con te y otro con café? ¿cómo intercambia el contenido? Auxiliar ← A A←B B ← Auxiliar Técnologías en la educación matemática – Dr. Carlos Gonzalía – 22 Ejercicios ● ● Hacer un algoritmo para determinar si un número es par Hacer un algoritmo para determinar si un año es bisiesto Técnologías en la educación matemática – Dr. Carlos Gonzalía – 23 Condiciones ● Si el día está soleado vamos al parque ● Si el día está lluvioso vamos al cine ● Si apruebo ambos parciales curso la materia, sino debo rendir recuperatorio Técnologías en la educación matemática – Dr. Carlos Gonzalía – 24 Condiciones (I) ● Si <condición> entonces <acción>. – ● Si la expresión <condición> da un resultado de valor verdadero entonces se ejecuta la <acción> si da falso no hace nada Ejemplo: – Si A // 2 = 0 entonces es_par ← verdadero Técnologías en la educación matemática – Dr. Carlos Gonzalía – 25 Condiciones (II) ● ● Si <condición> entonces <acción 1> sino <acción 2> Ejemplo: – Si A // 2 = 0 entonces es_par ← verdadero sino es_par ← falso Técnologías en la educación matemática – Dr. Carlos Gonzalía – 26 Correctitud ● ● ● ¿Qué significa que un algoritmo sea correcto? Para cualquier valor de datos de entrada dentro del dominio, el algoritmo deberá “devolver” los datos de salida esperados, de acuerdo con la finalidad de nuestro algoritmo. ¿Cómo podemos comprobar si un algoritmo es correcto? Técnologías en la educación matemática – Dr. Carlos Gonzalía – 27 Comprobación ● ● ● Debemos probar el comportamiento del algoritmo con distintos datos de entrada Esta tarea se llama comprobar o testear un algoritmo Es importante tener claro cual es el dominio de los datos de entrada y los de salida Técnologías en la educación matemática – Dr. Carlos Gonzalía – 28 Comprobación ● ● ● ● Una TRAZA de un algoritmo nos permitirá ver el comportamiento de los datos Para ello ejecutamos el algoritmo para ciertos datos de entrada, y llevamos cuenta de los cambios efectuados en los datos cuando se ejecuta el algoritmo. En forma gráfica podemos utilizar una tabla que tenga a cada dato en una columna y las modificaciones de sus valores en las filas El último valor del dato es el único que vale Técnologías en la educación matemática – Dr. Carlos Gonzalía – 29 Comprobación ● ● Importante: probar un algoritmo con distintos datos de entrada, representativos para nuestro problema, que permitan verificar que el algoritmo es correcto. Cuidado: una traza no demuestra que un algoritmo es correcto, sólo puede mostrar su correctitud para los valores elegidos Técnologías en la educación matemática – Dr. Carlos Gonzalía – 30 Condicionales anidados SI <condicion> SI <condicion 1> ENTONCES ENTONCES SI < condicion 2 > ENTONCES <acción 1> SINO <acción 2> < secuencia de acciones 1> SI NO < secuencia de SINO SI < condicion 3 > ENTONCES <acción 4> SINO <acción 5> acciones 2> Técnologías en la educación matemática – Dr. Carlos Gonzalía – 31 Condicionales anidados ● ¿Son equivalentes los siguientes algoritmos? CONDICIONALES CONDICIONALES ANIDADOS SI ( A > 10 ) ENTONCES <ACCION 1 > SI ( B = 0 ) ENTONCES <ACCION 2> SI ( C > 20 ) ENTONCES <ACCION 3> SI ( A > 10 ) ENTONCES <ACCION 1> SINO SI ( B = 0 ) ENTONCES <ACCION 2> SINO SI ( C > 20 ) ENTONCES <ACCION 3> REALIZAR UNA TRAZA CON A = 20, B = 10, C = 100 A = 1, B = 0, C = 100 A = 1, B = 0, C = 1 Técnologías en la educación matemática – Dr. Carlos Gonzalía – 32 Condicionales anidados ● ● Cada SINO corresponde siempre al SIENTONCES más cercano Es muy importante usar la indentación adecuada. Facilita la lectura y comprensión del algoritmo Técnologías en la educación matemática – Dr. Carlos Gonzalía – 33 Para resolver ● Ejercicio: escribir un algoritmo que nos devuelva el mayor de tres números enteros. Luego de escribirlo comprobar el algoritmo con el conjunto de datos de entrada que le parezca más adecuado Técnologías en la educación matemática – Dr. Carlos Gonzalía – 34 ALGORITMO Máximo entre tres números DE: A, B, C {natural} DS: máximo {natural} DA: COMIENZO SI (A > B) ENTONCES SI (A > C) ENTONCES máximo ← A SINO máximo ← C SINO SI (B > C) ENTONCES máximo ← B SINO máximo ← C FIN ALGORITMO Técnologías en la educación matemática – Dr. Carlos Gonzalía – 35 Ejercicio ● Hacer un algoritmo para determinar si dos fechas son iguales. Cada fecha se representa mediantes tres datos, día, mes y año. Técnologías en la educación matemática – Dr. Carlos Gonzalía – 36 Algoritmos claros ● ● Es muy importante que un algoritmo sea claro, y que no presente ambigüedades para quien lo lea. Para lograr esto hay que tener en cuenta una serie de pautas de “buen estilo” para la confección de algoritmos: – Indentación – Líneas para agrupar en bloques – Uso de “Fin” – Uso de nombres representativos Técnologías en la educación matemática – Dr. Carlos Gonzalía – 37 Lógica proposicional: repaso Técnologías en la educación matemática – Dr. Carlos Gonzalía – 38 Proposiciones Una proposición es una afirmación que puede ser verdadera o falsa. Ejemplos: –Proposición A = “Hoy es lunes” –Proposición B = “Todas las aves vuelan” –Proposición C = “La luz está apagada o la bombilla no funciona”. –Proposición D = “Si hoy está nublado, entonces el el dólar se mantendrá estable”. ● Técnologías en la educación matemática – Dr. Carlos Gonzalía – 39 Lógica En lógica proposicional hay sólo dos valores lógicos: verdadero y falso ● Las expresiones lógicas se construyen con los siguientes tres operadores básicos: –Y (and) conjunción, también denotada –O (or) disyunción, también denotada –NO (not) negación, también denotada Se puede determinar una tabla para mostrar todos los posibles valores que estas operaciones definen. Pueden usarse los dos tipos de notaciones. ● Técnologías en la educación matemática – Dr. Carlos Gonzalía – 40 Tablas de verdad Una tabla de verdad para un operador lógico, muestra el resultado de todas las posibilidades. ●La tabla de verdad para la negación ( es: ● A verdadero falso A falso verdadero Técnologías en la educación matemática – Dr. Carlos Gonzalía – 41 Tablas de verdad •La tabla de verdad para la conjunción es: A B AyB verdadero verdadero verdadero falso verdadero falso verdadero falso falso falso falso falso Técnologías en la educación matemática – Dr. Carlos Gonzalía – 42 Tablas de verdad •La tabla de verdad para la disjunción es: A B AoB verdadero verdadero falso verdadero falso verdadero falso falso verdadero verdadero verdadero falso Técnologías en la educación matemática – Dr. Carlos Gonzalía – 43 Implicación lógica Otro operador lógico importante es la implicación, denotada ●Es interpretado como indicativo de consecuencia lógica: ● jugar y hacer más goles que el rival ganar. arrojar un vaso de cristal el vaso se rompe. Si AB, entonces A es el antecedente de la implicación, y B es el consecuente ● Técnologías en la educación matemática – Dr. Carlos Gonzalía – 44 Implicación lógica ● La implicación lógica también tiene tabla de verdad A B AB verdadero verdadero verdadero verdadero falso falso falso verdadero verdadero falso falso verdadero Técnologías en la educación matemática – Dr. Carlos Gonzalía – 45 Expresiones lógicas Una expresión lógica es una proposición cuyo valor es llamado valor de verdad. ●Por ejemplo No hay conexion a Internet si el cable está desenchufado o el cable está enchufado y el modem apagado o nos cortaron el servicio por falta de pago ● Técnologías en la educación matemática – Dr. Carlos Gonzalía – 46 Expresiones lógicas El uso de paréntesis es importante para el significado de la expresión... ●Por ejemplo No hay conexion a Internet si el cable está desenchufado o (el cable está enchufado y el módem apagado) o nos cortaron el servicio por falta de pago ● Técnologías en la educación matemática – Dr. Carlos Gonzalía – 47 Expresiones lógicas •El uso de paréntesis es importante para el significado de la expresión... •Por ejemplo No hay conexion a Internet si (el cable está desenchufado o el cable está enchufado) y (el módem apagado o nos cortaron el servicio por falta de pago) Técnologías en la educación matemática – Dr. Carlos Gonzalía – 48 Ejercicios Dibuje la tabla de verdad para las siguientes expresiones lógicas –(A y B) o C –A y (no A) –A o (no A) ● Dibuje la tabla de verdad para la siguiente expresión lógica: –tiene_auto y tiene_dinero y saldrá_de_viaje ● Técnologías en la educación matemática – Dr. Carlos Gonzalía – 49 Equivalencia lógica Dos expresiones lógicas son equivalentes si una es verdadera si y sólo sí la otra también lo es. (A o B) y C es equivalente a (A y C) o (B y C) ● A B C AoB v v v v f f f f v v f f v v f f v f v f v f v f v v v v v v f f (AoB)yC v f v f v f f f (AyC) (ByC) (AyC)o(ByC) v f v f f f f f v f f f v f f f v f v f v f f f Técnologías en la educación matemática – Dr. Carlos Gonzalía – 50 Implicación lógica La implicación en realidad es el “resumen” de otra expresión lógica: ● AB es equivalente a A ∨ B •Ejercicio: hacer la tabla de verdad de las dos expresiones y verificar la equivalencia. Técnologías en la educación matemática – Dr. Carlos Gonzalía – 51 Ejercicios ¿Es equivalente la expresión (A o B) a la expresión (A y B)? ●¿Es equivalente la expresión (A y B) a la expresión (A o B)? ●¿Es equivalente la expresión (A o B) y C a la expresión A o (B y C)? ● Técnologías en la educación matemática – Dr. Carlos Gonzalía – 52 Tautologías Una tautología es una expresión lógica que siempre es verdadera. ●Es decir, al hacer la tabla de verdad, todos los casos dan verdadero. ●Ejemplos: –A∨A ● (B A)) ●EJERCICIO: Hacer la tabla de verdad de la última proposición. –(A Técnologías en la educación matemática – Dr. Carlos Gonzalía – 53 Ejercicios ¿Cuáles de las siguientes expresiones denota una tautología? ● –(tengo dinero y veré el partido) o (no tengo dinero y veré el partido) –(estoy en Buenos Aires) o (no estoy en Buenos Aires) La negación de una tautología...¿es siempre falsa? ● ¿Puede una expresión de la forma (A y B), donde A y B son expresiones lógicas, ser una tautología? ● Técnologías en la educación matemática – Dr. Carlos Gonzalía – 54 Resumen de operadores “” Negación: P es verdadera si P es falsa, y falsa si P es verdadera. “” Implicación: P Q es verdadera si P es falsa o Q es verdadera. “” Conjunción: P ∧ Q es verdadera si P y Q son verdaderas. “” Disyunción: P ∨ Q es verdadera si P o Q son verdaderas. “”Equivalencia: P Q es verdadera si P y Q tienen el mismo valor de verdad, i.e., son ambas verdaderas o ambas falsas. Técnologías en la educación matemática – Dr. Carlos Gonzalía – 55 Continuamos con los algoritmos... Técnologías en la educación matemática – Dr. Carlos Gonzalía – 56 Repetición ● ● ● ● Problema: calcular cuantos múltiplos de un número natural K hay entre 1 un y tope dado ¿Qué significa que un número N sea múltiplo de K? Expresión: N//K=0 ¿Cómo calculamos cuántos múltiplos de K hay entre 1 y un tope dado? Técnologías en la educación matemática – Dr. Carlos Gonzalía – 57 Estrategia ● El primer candidato a considerar es 1. ● Voy incrementando el candidato de uno en uno, ● Si es múltiplo, incremento la cantidad en uno. ● Termino cuando el candidato es mayor al tope Técnologías en la educación matemática – Dr. Carlos Gonzalía – 58 Entonces... candidato ← 1 SI candidato // K = 0 ENTONCES cantidad ← cantidad + 1 candidato ← candidato + 1 SI candidato // K = 0 ENTONCES cantidad ← cantidad + 1 candidato ← candidato + 1 SI candidato // K = 0 ENTONCES cantidad ← cantidad + 1 ........ Técnologías en la educación matemática – Dr. Carlos Gonzalía – 59 Repetir ● Claramente hay un bloque que se repite varias veces ● ¿Hasta cuando deben repetirse estas acciones? ● Hasta que candidato > tope Técnologías en la educación matemática – Dr. Carlos Gonzalía – 60 Repetición REPETIR MIENTRAS <condición> REPETIR Acción 1 Acción 2 ... Acción n HASTA <condición> Acción 1 Acción 2 ... Acción n REPETIR <cantidad> VECES Acción 1 Acción 2 ... Acción n Técnologías en la educación matemática – Dr. Carlos Gonzalía – 61 Contar múltiplos ALGORITMO ContarMúltiplos DE: K y N DS: Cantidad Candidato ← 1 Cantidad ← 0 REPETIR SI Candidato // K = 0 ENTONCES Cantidad ← Cantidad + 1 Candidato ← Candidato + 1 HASTA Candidato > N Técnologías en la educación matemática – Dr. Carlos Gonzalía – 62 Contar múltiplos ALGORITMO ContarMúltiplos DE: K y N Ahora con DS: Cantidad repetir Candidato ← 1 mientras Cantidad ← 0 REPETIR MIENTRAS Candidato <= N SI Candidato // K = 0 ENTONCES Cantidad ← Cantidad + 1 Candidato ← Candidato + 1 Técnologías en la educación matemática – Dr. Carlos Gonzalía – 63 Repetir n veces ● ● Las acciones dentro de un ciclo REPETIR <cantidad> VECES se ejecutan exactamente el número de veces que indica la expresión <cantidad> ¿Cómo quedaría el algoritmo ContarMúltiplos con esta estructura? Técnologías en la educación matemática – Dr. Carlos Gonzalía – 64 Contar múltiplos ALGORITMO ContarMúltiplos DE: K y N Con repetir n DS: Cantidad veces Candidato ← 1 Cantidad ← 0 REPETIR N VECES SI Candidato // K = 0 ENTONCES Cantidad ← Cantidad + 1 Candidato ← Candidato + 1 Técnologías en la educación matemática – Dr. Carlos Gonzalía – 65 Formas de repetición ● ● ● Las formas de repetición REPETIR MIENTRAS y REPETIR HASTA son repeticiones condicionales (dependen de una condición lógica o booleana) La forma de repetición REPETIR n VECES es una repetición incondicional (no depende de ninguna condición) La estructura REPETIR n VECES es menos expresiva Técnologías en la educación matemática – Dr. Carlos Gonzalía – 66 Ciclos infinitos S ←0 I ← 1 REPETIR MIENTRAS I>0 S ← S + 1 I ← I + 1 S ← 0 I ← 1 REPETIR MIENTRAS I>0 S ← S + I Técnologías en la educación matemática – Dr. Carlos Gonzalía – 67 Ciclos infinitos ● ● ● Una repetición que se realiza infinitas veces se denomina ciclo infinito Puede haber ciclos infinitos si: – el dato de control no tiene valor inicial – el dato de control no se modifica – la condición de corte es errónea Son siempre incorrectos! Técnologías en la educación matemática – Dr. Carlos Gonzalía – 68 Dígitos de un número ● ● ● Escriba un algoritmo para contar cuántas veces aparece un dígito D en un número natural N. Ejemplo: si D = 3 y N=123, entonces D aparece 1 vez. Ejemplo: si D = 6 y N=6226, entonces D aparece 2 veces. Técnologías en la educación matemática – Dr. Carlos Gonzalía – 69 Estrategia ● ● Debemos examinar dígito por dígito. Tenemos dos operaciones que podemos usar para “desarmar” un número: – Obtener el último dígito: N // 10 – “Podar” el último dígito de N: N /e 10 Técnologías en la educación matemática – Dr. Carlos Gonzalía – 70 Algoritmo ALGORITMO CuantasVeces DE: Número, dígito {natural} DS: Cantidad {natural} DA: COMIENZO Cantidad ← 0 {inicializo acumulador} REPETIR SI (Número // 10) = dígito ENTONCES Cantidad ← Cantidad + 1 Número ← Número / 10 {“podo” el último dígito} HASTA Número = 0 {hasta que no haya más digitos} FIN Técnologías en la educación matemática – Dr. Carlos Gonzalía – 71 Ejercicio ● ● Escribir un algoritmo para ver si un número N puede expresarse como la suma de números naturales consecutivos a partir del 1 (1+2+3.. + ... K) ¿Con que estructura repetir puede realizarse? Técnologías en la educación matemática – Dr. Carlos Gonzalía – 72