Fundamentos de La Programacion Con PSeint - Ejercicio 5

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Fundamentos de la Programación (ING6101)

Guía 5: Funciones y procedimientos

1) Identificar los errores cometidos en el siguiente programa que utiliza la función FF:

2) Construir una función que, invocada como expo(x,n), devuelva el valor de xn , donde
𝑥 es un número real no nulo y 𝑛 es un número entero. Observación: tener en cuenta
el signo de la base y del exponente.

3) Dada la sucesión cuyo término general es:


3 𝑛−3
𝑎𝑛 = ( ) + (−2)𝑛+1
2
escribir un programa que permita ingresar distintos valores de 𝑛 y calcule el término
enésimo correspondiente a cada uno, utilizando la función implementada en el
ejercicio anterior.

4) a) Escribir una función que invierta el orden de las cifras de un número entero.
b) Utilizando la función anterior, realizar un programa que determine si un número
ingresado por el usuario es o no capicúa. Por ejemplo:
 Si el número es igual a 12321, el programa deberá mostrar por pantalla “El
número 12321 ES CAPICUA”,
 Si el número es igual a 2343, el programa deberá mostrar por pantalla “El
número 2343 NO ES CAPICUA”.

5) Escribir un programa que calcule el máximo de tres números enteros, definiendo


previamente una función que calcule el máximo de dos.

FI-UNMDP // Hoja 1
6) Investigar el modo de uso de las funciones predefinidas Azar y Aleatorio. Escribir un
programa que genere N números aleatorios en un rango dado por el usuario.

7) Considerar el siguiente experimento: se dispone de un tablero


circular de radio unitario centrado en el origen de coordenadas
inscripto en un cuadrado, tal como muestra la figura.

Teniendo en cuenta que, si se efectúa una serie de lanzamientos de dardos


uniformemente distribuidos en el cuadrado circunscripto, se puede realizar la
siguiente estimación:

4 ∗ 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑙𝑎𝑛𝑧𝑎𝑚𝑖𝑒𝑛𝑡𝑜𝑠 𝑑𝑒𝑛𝑡𝑟𝑜 𝑑𝑒𝑙 𝑐í𝑟𝑐𝑢𝑙𝑜


𝜋≅
𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑙𝑎𝑛𝑧𝑎𝑚𝑖𝑒𝑛𝑡𝑜𝑠 𝑡𝑜𝑡𝑎𝑙

donde la aproximación será tanto más precisa cuanto mayor sea el número de
lanzamientos efectuados.

Escribir un programa que permita generar N lanzamientos, donde las coordenadas


de lanzamiento se generen de forma aleatoria y tomen valores entre 0 y 1, es decir,
ubicadas en el primer cuadrante. Asimismo, el programa debe informar la cantidad
de aciertos obtenidos y calcular la aproximación de 𝜋. Repetir la experiencia con
distinto número de lanzamientos para obtener diferentes aproximaciones.

8) Escribir un programa que aproxime el valor de sen(x) (para valores pequeños de x)


por medio de la serie:

𝑥3 𝑥5 𝑥7
sen(𝑥) = 𝑥 − + − +⋯
3! 5! 7!

El programa debe leer dos variables x y precisión donde x es un ángulo en radianes


y precisión debe ser positiva y tan pequeña como se desee. Se debe obtener cada
término de la serie a partir del anterior, sumando los términos de la serie que en
valor absoluto sean mayores o iguales que precisión.

9) Desarrollar una función que, dado un número entero no negativo, obtenga su


𝑚 𝑚!
factorial. Escribir un programa que calcule el número combinatorio ( ) = 𝑘!(𝑚−𝑘)! de
𝑘
dos valores enteros no negativos 𝑚 y 𝑘, siendo 𝑚 ≥ 𝑘.

10) Desarrollar una función booleana que a partir de un entero N y un digito D, verifique
si D está presente en N. Ejemplo: Para N= 3487432 y D=8 la función debe devolver
VERDADERO. Si D=5 debe devolver FALSO.

FI-UNMDP // Hoja 2
11) Empleando la función del punto anterior, escribir un programa que ingrese un digito
y luego un conjunto de números no nulos e informe en qué porcentaje de ellos, está
presente el dígito.
Ejemplo:
Entrada: D = 8
Conjunto de números no nulos: 3581; 1; 25; 882; 1351.
Salida: El dígito 8 aparece en el 40% de los números ingresados.

12) Considerar el siguiente programa:

Indicar V o F justificando la respuesta:


a) Cuando se invoca el procedimiento Prueba se crea una posición de
almacenamiento para L.
b) Cuando se invoca el procedimiento Prueba no se reserva ninguna posición de
memoria para almacenar el valor de M.
c) Cualquier cambio de M dentro del procedimiento no constituye cambio para D.
d) L puede usarse para devolver un valor al programa principal.

13) Dado el siguiente segmento de programa:

FI-UNMDP // Hoja 3
a) Identificar parámetros formales y actuales y parámetros que se pasan por valor
o variable.

FI-UNMDP // Hoja 4
b) El contenido de la variable D ¿cambia luego de llamar al procedimiento SUMA?
Justificar.
c) El contenido de la variable A ¿cambia luego de llamar al procedimiento LIO?
Justificar.
d) Justificar cuáles de los siguientes llamados al procedimiento SUMA son
correctos:

(i) SUMA(A, B,G); (ii) SUMA(C, B, G); (iii) SUMA(A, C, G);


(iv) SUMA(3, B, Verdadero); (v) SUMA(3, 6, G); (vi) SUMA(X, Res, gr);

14) Dado el siguiente segmento de programa:

¿Cuál de las siguientes invocaciones al procedimiento es correcta? Justificar las


incorrectas.
a) prueba (letra, i, j);
b) prueba (z, x, yy);
c) prueba;
d) h <- prueba(z, x, yy);

15) Cambiar la función del ejercicio 4) por un procedimiento que además de invertir el
orden de las cifras de un número entero, indique además su cantidad de cifras.

16) Escribir un programa que lea dos valores reales h y r, correspondientes a la altura
de un cilindro circular recto y al radio del mismo, respectivamente. Luego, mediante
un menú implementado a través de un procedimiento, ofrezca las siguientes
opciones de cálculo (cada una resuelta a través de una función):
a) Perímetro de la circunferencia de la base.
b) Superficie de la base del cilindro.
c) Volumen del cilindro.
d) Superficie lateral del cilindro.

17) Escribir funciones y/o procedimientos (según corresponda) que permitan:


a) Convertir un intervalo de tiempo expresado en segundos, a horas, minutos y
segundos, y viceversa.
b) Convertir una velocidad expresada en r.p.m. a rad/s, y viceversa.

FI-UNMDP // Hoja 5
c) Convertir una velocidad expresada en m/s a km/h, y viceversa.
d) Convertir un ángulo expresado en grados, minutos y segundos a grados, y
viceversa.

18) Utilizando las funciones anteriores, escribir un programa que permita:


a) Ingresar dos intervalos de tiempo expresados en horas, minutos y segundos,
sume sus duraciones, y muestre por pantalla la duración total en horas, minutos
y segundos.
b) Ingresar dos ángulos expresados en grados, minutos y segundos, los sume, y
muestre por pantalla el resultado en grados, minutos y segundos.

19) El siguiente procedimiento calcula las raíces reales de una ecuación cuadrática:

a) ¿Es posible invocarlo si se desea hallar las raíces de la ecuación 2x2+3x+5=0?


b) Escribir una función booleana que, dados los tres coeficientes de una ecuación
cuadrática, determine si tiene o no raíces reales.
c) Escribir el programa que analice, mediante la función del inciso b), la naturaleza
de las raíces de una ecuación de 2º grado y, en caso de que existan raíces reales,
las calcule.

20) Escribir un programa modularizado que lea los valores de la pendiente m y la


ordenada al origen b de una recta R. Luego debe presentar un menú que ofrezca
las siguientes opciones:
a) Dada una serie de puntos del plano, cuya cantidad no se conoce previamente,
calcular y mostrar por pantalla la cantidad de puntos que pertenecen a R.
b) Dado un punto de coordenadas (h, k), escribir por pantalla la ecuación de la
recta paralela a R que contiene al punto (h, k).
c) Obtener el ángulo que forma la recta R con el semieje x positivo, expresándolo
en grados sexagesimales.
El menú debe reiterarse hasta que el usuario decida salir.

21) Escribir un programa que permita ingresar M conjuntos de números enteros, donde
cada conjunto finaliza en cero. Asimismo, el programa debe informar, para cada
conjunto, el número más cercano al primer valor de dicho conjunto (puede estar
repetido). Por ejemplo:

Si M=4

Conjunto Más cercano

FI-UNMDP // Hoja 6
12 2 4 11 10 13 11 0 11
849241830 8
25 20 12 0 20
2 1 2 10 2 4 0 2

FI-UNMDP // Hoja 7

También podría gustarte