Download Siracusa Emiliano Martín

Document related concepts

Algoritmo wikipedia , lookup

Algoritmo de Euclides wikipedia , lookup

Cálculo de la raíz cuadrada wikipedia , lookup

Pseudocódigo wikipedia , lookup

Algoritmo de Karatsuba wikipedia , lookup

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.