# Tema CS5: Programación
(Soluciones de ejercicios propuestos)

## Ejercicio 1

Ejercicio 1.1. Definir la función tangente tal que tangente(f,a) es la ecuación 
de la tangente a la función f en el punto de abscisa a. Por ejemplo,
   (%i1) (f(x):=x^3, tangente(f,2));
   (%o1) y=12*(x-2)+8

Ejercicio 1.2. Calcular la tangente a f(x)=ln(tan(|x|) en el punto de abscisa
-pi/12.

## Ejercicio 2

Ejercicio 2.1. Definir el procedimiento signosTrinomio tal que 
signosTrinomio(a,b,c) es la tabla de la variación de los signos del trinomio 
ax^2+bx+c. Por ejemplo,
   (%i1) signosTrinomio(1,-2,1);
   (%o1) [[[-inf,1],+],[1,0],[[1,inf],+]]
   (%i2) signosTrinomio(-1,2,-1);
   (%o2) [[[-inf,1],-],[1,0],[[1,inf],-]]
   (%i3) signosTrinomio(1,-3,2);
   (%o3) [[[-inf,1],+],[1,0],[[1,2],-],[2,0],[[2,inf],+]]
   (%i4) signosTrinomio(-1,3,-2);
   (%o4) [[[-inf,2],-],[2,0],[[2,1],+],[1,0],[[1,inf],-]]
   (%i5) signosTrinomio(1,0,1);
   (%o5) [[[-inf,inf],+]]
   (%i6) signosTrinomio(-1,0,-1);
   (%o6) [[[-inf,inf],-]]
Se supone que a es distinto de cero.

Ejercicio 2.2. Calcular la tabla de la variación de los signos del trinomio
-6x^2-3x+14/3

## Ejercicio 3

Se lanza un dado cúbico equilibrado hasta que se obtiene la cara 6 por primera 
vez. Se designa por X la variable aleatorio que cuenta el número de lanzamientos
efectuados. Se dice que X es el tiempo de espera del primer 6.

Ejercicio 3.1. Definir el procedimiento X() que simule una serie de lanzamientos
del dado y devuelva el número de lanzamientos realizados para obtener el 6 por 
primera vez.

Ejercicio 3.2. Con la ayuda del bucle for, definir el procedimiento 
simulacion(n) que simule una serie de n lanzamientos y devuelva la lista
de frecuencia de los eventos [X=i] para 1 <= i <= 60. Por ejemplo,
   (%i1) simulacion(1000);
   (%o1) [0,145,115,104,88,61,65,53,51,50,40,28,30,29,27,13,21,18,10,6,8,4,9,3,
          5,1,2,4,3,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
          0,0,0]

Ejercicio 3.3. Definir la función media tal que media(n) es el valor medio de X en
n lanzamientos. Calcular tres veces media(1000).

## Ejercicio 4

La conjetura de Goldbach afirma que todo número natural par mayor que 3 se puede
escribir como la suma de dos números primos. Por ejemplo,
   4 = 2 + 2, 20 = 3 + 17, 50 = 3 + 47

Ejercicio 4.1. Definir la función goldbach tal que goldbach(n) es una 
descomposición de n como suma de dos números primos. Por ejemplo,
   (%i1) goldbach(20);
   (%o1) [3,17]
Indicación: Iterar los primos desde x=2 hasta n/1 hasta que n-x sea primo.

Ejercicio 4.2. Descomponer 2010 como suma de dos primos.

Ejercicio 4.3. Definir la función goldbachTodas tal que goldbachTodas(n) es la 
lista de todas las descomposiciones de n como suma de dos números primos x e y 
con x<=y. Por ejemplo,
   (%i1) goldbachTodas(20);
   (%o1) [[7,13],[3,17]]

Ejercicio 4.4. Calcular el número de descomposiciones de 2010 como suma de 
dos primos.