Download Siracusa Emiliano Martín
Document related concepts
Transcript
1 Siracusa Emiliano Martín Trabajo Práctico N°2 ALGORITMOS - PARTE I Datos de entrada y de salida Ejercicio 1: Indicar cuáles son, a su criterio, los datos de entrada y los datos de salida asociados a cada uno de los siguientes enunciados. Detallar el dominio de cada dato (ej: naturales, enteros, lógicos, etc.) aclarando también cualquier otra restricción adicional. Sumar dos números enteros. Obtener el cociente y resto de dividir dos números enteros entre sí. Calcular el divisor común mayor (DCM) de dos números enteros. Determinar si una fecha es válida. Obtener la fecha siguiente a una fecha dada. Dado un número natural, encontrar el primo inmediato siguiente a él. Hallar la suma de los n primeros términos de la sucesión: 1 / 2 + 1 / 4 + 1 / 8 + 1 / 16 + . . . + 1 / 2n h) Calcular la suma de todos los números primos menores que un n dado. a) b) c) d) e) f) g) Expresiones Lógicas Ejercicio 2: Dos expresiones lógicas (es decir., expresiones que evalúan en verdaderas o falsas) E1 y E2 se dicen equivalentes si cada vez que E1 toma un determinado valor de verdad (verdadero o falso), E2 toma el mismo valor de verdad que E1, y viceversa. a) Comprobar que las siguientes expresiones son equivalentes, evaluándolas con valores verdadero y falso para cada uno de sus datos. no A y no B no(A o B) = no A o no B no(A y b) = no(A y no B) no A o B = b) Dados tres datos lógicos a, b, c, con valores verdadero, falso y verdadero, respectivamente, indicar cuál es el valor de verdad de las siguientes expresiones: 1) 2) 3) 4) 5) 6) ((a y b) o c) y (a o b) (a o b o c) (a y (b y (c o b))) (no b) y (no c) y (no a) (no (no a)) y (no (a y b)) ((no a) y (no b)) y (a o b) c) Escribir una expresión lógico-matemática para determinar si un año es bisiesto o no. Asignación Ejercicio 3: Considerar los siguientes trozos de algoritmos escritos en lenguaje de diseño. Indicar cuál será el valor de los datos a, b y c, tras finalizar la ejecución de cada uno de ellos. Determinar si en algún caso quedan datos indefinidos. 2 (1) a —3 b—4 b—a (2) a—1 a—2*a a—2*a a—2*a (3) b—0 a—b c—a (4) b—0 a—b+1 c — a+1 (5) a —7 b — 100 c—a a—b b—c (6) a—1 b—5 b—a a—b (7) a—4 b—8 c — a>b (8) c —7 b — 25 a — c > (b-8) a — no a a — (b>c) y a Ejercicio 4: Suponiendo que cada uno de los siguientes datos tiene un valor asignado dentro del dominio que especificamos en la tabla de la izquierda, completar la tabla de la derecha detallando el dominio de x en cada operación. Dato a, b Dominio entero c, d Real e, f lógico Asignación Dominio de x x—a+b x—a+c x—c>d x—eof Ejercicio 5 Escribir un algoritmo para cada uno de los incisos que se presentan a continuación. Recordar que todo algoritmo debe comenzar con la palabra ALGORITMO seguida de un nombre, continuar con la especificación de los datos de entrada y los datos de salida con sus respectivos dominios y finalizar con el cuerpo del algoritmo. a) Dado un número a, devolver el número siguiente b) Dados dos números a y b, calcular la suma de ambos. c) Dado un valor x, devolver el 30% de x. d) Dados dos números a y b, determinar si a es mayor o igual que b. e) Dados dos números naturales a y b, devolver el valor de b en a y el valor de a en b, es decir, realizar un intercambio de datos. Ej: si a = 3 y b = 6 , el resultado será a = 6 y b = 3. Dado un valor c representando un vuelto en pesos a entregar con la menor cantidad de billetes posibles, y suponiendo que se dispone de una cantidad ilimitada de billetes de 25,10,5 y 1 pesos, calcular cuántos billetes de cada tipo se debe entregar. Condicionales Ejercicio 6: Hallar el valor de los datos a y b al finalizar la ejecución de cada uno de los trozos de algoritmo que se indican a continuación: Observación: el operador // (llamado "módulo") representa el resto de la división entera. 3 (2) (1) a—1 b—2 Si a // 2 = 1 Entonces a — a +1 Sino b — b+1 Si a // 2 = 1 Entonces a — a +1 Sino b — b +1 a—3 b—1 Si b = 1 Entonces b—0 Si b=1 Entonces a—b Si a = b Entonces a — a+1 (3) a—3 b —1 Si b = 1 Entonces a—b Si b = 0 Entonces b —0 Si a = b Entonces a — a+1 (4) a—1 b—2 Si a < b Entonces a —a+1 Sino Si a = b Entonces b — b+10 Ejercicio 7: Dados los siguientes trozos de algoritmo Si ( a > 10 ) entonces a — a-1 Si ( b = 0 ) entonces b — b-1 Si ( c > 20 ) entonces c — c-1 Si ( a > 10 ) entonces a — a-1 sino Si ( b = 0 ) entonces b — b-1 sino si ( c > 20 ) entonces c — c-1 Realizar la traza de los mismos para los siguientes valores: i) a = 20, b = 10, c = 100 ii) a = 1, b = 0, c = 100 iii) a = 1, b = 0, c = 1 ¿Los algoritmos son equivalentes? Justifique su respuesta Ejercicio 8: Dados los siguientes trozos de algoritmo si a < a:= si a < a:= 10 entonces a-5 5 entonces a-1 si a < 10 entonces a:= a - 5 sino si a < 5 entonces a:= a - 1 Realizar la traza de para a = 9. ¿Los algoritmos son equivalentes? Justifique su respuesta Ejercicio 9: Escribir algoritmos para a) Dados tres números a, b, y c, si la diferencia entre a y b es mayor que c, calcular el producto de a y b; de lo contrario, calcular el cociente entre a y b. b) Dado un número natural n, determinar si dicho número es par. c) Dados dos números naturales n y d, determinar si n es divisible por d. d) Dados cuatro números a, b, c y d e Z, determinar cuál es el mayor de ellos. e) Dada una fecha, determinar si es válida. 4 f) Dado el sueldo básico de un empleado, calcular el monto final que debe abonársele sabiendo que si el sueldo básico es de p (p e R+ ) pesos por mes, debe agregarse un incremento calculado como un porcentaje a partir de p según la siguiente tabla: Sueldo Incremento 0 < p < 500 10 % 500 < p <1000 5% 1000 = p 3% Repetición Ejercicio 10: Indicar en cada caso cuál será el valor de los datos a, b yc después de ejecutar los siguientes trozos de algoritmos. (1) (2) (3) (4) (5) a—0 b—1 Repetir Mientras a<100 b — b*2 c — 100 Repetir c—c-1 Hasta c = 0 a—9 Repetir Mientras a<10 a—a+1 a—0 Repetir a — a +1 Hasta a = 0 b—5 Repetir Mientras b=0 b—b-1 Ejercicio 11: a) Determinar cuál será el valor de los datos a, b y c después de ejecutar el siguiente trozo de algoritmo, suponiendo que al comienzo a = 3 y b = 2. ¿Qué relación hay entre el valor final de c y los valores iniciales de a y b? c—a Repetir Mientras b > 0 c—c+1 b—b-1 b) ¿Qué ocurre si ejecuta el mismo trozo de código para un valor negativo de b? Ejercicio 12: Escribir algoritmos para: a) Hallar la suma de los primeros 1000 números naturales. b) Sumar los primeros n números naturales. c) Calcular el producto de los primeros n naturales pares. d) Dado un número entero x, contar la cantidad c de dígitos que lo forman. Ej: si x=343, entonces c=3; si x = -20, entonces c=2. e) Dado un número entero x, calcular la suma S de todos los dígitos que lo forman. Ej: si x=12, entonces S=1+2=3. f) Determinar si un dígito d está presente en un número entero x. Ej: el dígito 5 está presente en el entero 345; el dígito 3 no está presente en el entero -122. g) Indicar si un entero positivo n es o no un número primo. Recordar que un entero n es primo si y sólo si es divisible por sí mismo y por la unidad. 5 Ejercicio 13: Dado el siguiente algoritmo: Algoritmo ¿Qué? a) Realizar las trazas necesarias para determinar qué operación matemática realiza, usando valores de w mayores que 1. b) ¿Qué inconveniente se presenta para w =1?. Justificar. c) Escribir una nueva versión de este algoritmo que resuelva el problema encontrado. En esta nueva versión, es importante utilizar nombres significativos para los datos. Datos de Entrada: x , w {números naturales} Datos de Salida : a Datos Auxiliares: z Comienzo del Algoritmo a—x Repetir z—a+x w—w-1 a—z Hasta w = 1 Fin del Algoritmo Ejercicio 14: Considerando el siguiente algoritmo Algoritmo Sorpresa Datos de Entrada: a {número natural} Datos de Salida : b {número natural} Datos Auxiliares: dig Comienzo del Algoritmo b—a Repetir dig — a // 10 a — a /e 10 b — b * 10 + dig Hasta a = 0 Fin del Algoritmo a) ¿Qué operación realiza el algoritmo SORPRESA? Confeccionar una traza para a=4834 y a=4830 b) ¿Qué ocurre si se cambia la primera asignación, es decir, b — a por b — 0? Ejercicio 15: Dado el siguiente algoritmo: Algoritmo Desconocido Datos de Entrada: x {número natural} Datos de Salida : a a) Confeccionar las trazas necesarias para determinar qué Comienzo del Algoritmo a—x Repetir x—x-1 a—a*x Hasta x = 1 Fin del Algoritmo b) ¿Qué inconveniente presenta para x=1?. Justificar. operación matemática realiza el algoritmo Desconocido usando valores de x mayores o iguales que 2. c) Escribir una nueva versión del mismo que resuelva el problema encontrado. En esta versión es importante utilizar nombres significativos para los datos.