next up previous contents
Siguiente: Recursividad Subir: Ejercicios Anterior: Matrices   Índice General

Procedimientos y funciones

  1. Escribe una función que evalúe el signo de un número. La función debe retornar el valor 1 si el número es mayor que cero, 0 si el número es igual a cero y -1 si el número es menor que cero.

  2. Escribe un programa que contenga:
    1. Una función que calcule el máximo de dos números enteros.
    2. Una función que recibe un carácter y nos diga si es una letra o no.
    3. Una función que recibe un carácter y nos diga si es una letra o un número.

  3. Escribe una función que reciba una letra mayúscula y devuelva su equivalente en minúscula.

  4. Escribe la función mcd() que calcula el máximo común divisor de dos números enteros positivos utilizando el algoritmo de Euclides. El algoritmo de Euclides es el siguiente:
    1. Realiza la división entera.
    2. Si el resto es cero, el mcd es el divisor.
    3. En caso contrario, copia el valor del divisor en el dividendo, el valor del resto en el divisor, y vuelve al primer paso.

  5. Escribe una función que, mediante bucles, calcule la potencia $n$ de un número ($X^n$).

  6. Escribe una función que, mediante bucles, calcule el factorial de un número ($X!$).

  7. Cuando un lenguaje de programación no tiene las funciones matemáticas, podemos utilizar el desarrollo en serie de McLaurin para calcularlas. Por ejemplo, la función seno() podemos evaluarla calculando la siguiente serie:


    \begin{displaymath}
sen(X) = X - \frac{X^3}{3!} + \frac{X^5}{5!} - \frac{X^7}{7!} +
\frac{X^9}{9!} + ...
\end{displaymath}

    Utilizando las funciones de los dos problemas anteriores ($X^n$ y $X!$), escribe una función que calcule sen(X) realizando el desarrollo en serie de McLaurin hasta que el valor de $\frac{X^n}{n!}$ sea menor que $10^{-5}$.

  8. Modifica el programa anterior para que también evalúe $e^x$ realizando la siguiente serie mientras no se alcance una precisión de $10^{-4}$.

    \begin{displaymath}
E(X) = 1 + X + \frac{X^2}{2!} + ... + \frac{X^n}{n!}
\end{displaymath}

  9. Escribe una función que calcule la suma de los 10 elementos de un vector. NOTA: La función debe trabajar correctamente independientemente del rango del índice del vector.

  10. Escribe una función que calcule la suma de todos los elementos de un vector, independientemente del tamaño del vector y del rango del índice del vector.

  11. Escribe una función que recibe un vector con números enteros y nos diga cual es la posición del menor.

  12. Utilizando la función anterior, escribe un programa que reciba N números, los inserte en una tabla y escriba la tabla en pantalla ordenada de menor a mayor.

  13. Escribe una función que sume dos vectores de igual tamaño y rangos cualesquiera, dando como resultado otro vector de igual tamaño.

  14. Escribe una calculadora que, mediante funciones y procedimientos, permita sumar, restar, multiplicar y dividir números romanos.

  15. Escribe una calculadora que permita sumar, restar y multiplicar (escalar y vectorialmente) vectores.

  16. La amplitud de un vector $(V_1,V_2, ... , V_n)$ se calcula aplicando la siguiente fórmula:

    \begin{displaymath}
L = \sqrt{ V_1^2 + V_2^2 + ... + V_n^2 }
\end{displaymath}

    Escribe una función que calcule la amplitud de un vector de números reales.
    1. Considera que el vector sólo contiene cuatro elementos.
    2. Considera que el vector tiene un número arbitrario de elementos.

  17. Decimos que dos vectores $U$ y $V$ son ortogonales cuando se verifica que:

    \begin{displaymath}
\sum_{i=1}^{n} u_i * v_i = 0
\end{displaymath}

    Escribe una función que nos sirva para saber si dos vectores (de cualquier tamaño) son ortogonales.

  18. Escribe una función que compruebe si el nombre de un identificador sigue las reglas de Ada.

  19. Utilizando la función anterior, escribe un programa que lea de teclado una línea de texto y nos diga cuantas palabras son identificadores Ada válidos.

  20. Definimos la rotación de un vector a la derecha como una operación que mueve cada elemento una posición a la derecha y el último lo coloca en la primera posición. Escribe una función que rote un vector un número determinado de posiciones a la derecha.

  21. En estadística, la mediana es el valor central de un conjunto de valores ordenados. En caso de que el número de valores sea par, la mediana es el valor medio de los dos valores centrales. Escribe una función que reciba un número arbitrario (y no ordenado) de valores de entrada y retorne la mediana.

  22. En estadística, la moda es el valor que más veces se repite en un conjunto de datos. Escribe una función que reciba un número arbitrario de valores de entrada y retorne la moda.

  23. Supongamos que nuestro lenguaje de programación no es capaz de trabajar con matrices de rango (1..N, 1..M). Escribe un programa que, mediante funciones, nos permita trabajar con un un vector como si fuese una matriz. Por ejemplo, cuando queremos acceder al elemento (4,4), accedemos al elemento 44 del vector; cuando queremos acceder al elemento (2,3), accedemos al elemento 23, y así sucesivamente.

  24. Generiliza la solución del problema anterior para que se pueda trabajar con matrices de cualquier rango.

  25. Escribe las declaraciones Ada necesarias para representar la siguiente tabla que indica si un país es vecino de otro:

                        Belgica    Italia   Francia 
             Belgica      no         si       no
             Francia      si         no       si
             Italia       no         si       no
    

    Añade algunos países más y escribe la función Número_De_Vecinos() que recibe como parámetro un país y una tabla similar a la descrita anteriormente y calcula el número de vecinos de dicho país.

  26. Escribe una función que nos diga si una matriz es simétrica.

  27. Escribe las funciones Fila() y Columna() que nos permiten obtener los elementos de una determinada fila o columna de cualquier matriz de números enteros positivos.

  28. Escribe una función que calcule el producto escalar de dos vectores.

  29. Utilizando las funciones de los dos problemas anteriores, escribe un programa que realice la multiplicación de dos matrices cualesquiera.

  30. Escribe un programa que lea un mensaje y nos codifique y decodifique mensajes en Morse. La tabla de codificación Morse es la siguiente:

            A .-      H ....   O ---    U ..-
            B -...    I ..     P .--.   V ...-
            C -.-.    J .---   Q --.-   W .--
            D -..     K -.-    R .-.    X -..-
            E .       L .-..   S ...    Y -.--
            F ..-.    M --     T -      Z --..
            G --.     N -.
    

    NOTA: La codificación la debe realizar el procedimiento Codificar y la decodificación el procedimiento Decodificar.

  31. Escribe un programa que, mediante funciones, nos permita sumar, restar, multiplicar y dividir dos fracciones. NOTA: El resultado debe mostrarse en pantalla también en forma de fracción.

  32. Una empresa nos ha encargado un programa para llevar la gestión de su inventario. Por cada artículo necesitan que el programa recuerde:

    Escribe un programa que lee esta información desde teclado y a continuación espera a que le demos una orden. Las órdenes posibles son:

    NOTA: Cada una de estas operaciones la debe realizar un procedimiento diferente.



Subsecciones
next up previous contents
Siguiente: Recursividad Subir: Ejercicios Anterior: Matrices   Índice General
Javier Miranda 2002-10-03