1.3 Funciones de cálculo con bucles
Estas
funciones son un paso más allá porque implican operaciones más complejas de
manipulación que incluyen una repetición de pasos o bucle. Las sentencias de
control for y while cuesta trabajo introducirlas porque el alumno no entiende
bien las condiciones de finalización.
1.3.1
Función tal que dado un número entero n imprime en pantalla la tabla de
multiplicar (de 1 a 10). Este problema sirve para introducir los bucles
mediante algo que los alumnos conocen sobradamente como las tablas de
multiplicar. Hay que advertir que es una función void porque su misión no es
devolver algo sino imprimir en pantalla. La solución tiene dos versiones con
for o con while:
1.3.2 Reutilizando la función anterior escriba una función tal que dado un número n imprima en pantalla todas las tablas de multiplicar de 1 a n. Este es un ejemplo de que incluso las funciones void se pueden reutilizar. Hágase notar como no hay ningún conflicto entre la variable cont de esta función y la variable de igual identificador de la función 1.3.1
1.3.2 Reutilizando la función anterior escriba una función tal que dado un número n imprima en pantalla todas las tablas de multiplicar de 1 a n. Este es un ejemplo de que incluso las funciones void se pueden reutilizar. Hágase notar como no hay ningún conflicto entre la variable cont de esta función y la variable de igual identificador de la función 1.3.1
1.3.3 Función que lea desde teclado y devuelva un número entero positivo. Teniendo en cuanta que si el número leído no es positivo deberá seguir leyendo hasta que lo sea.
1.3.4 Función tal que dados un número real (base) y un entero (exponente) calcula la potencia de la base elevada al exponente. Este ejemplo puede servir para introducir la función pow y algunas de las funciones de la librería math.h:
1.3.5 Función tal que dado un número entero devuelve su factorial. Este ejemplo puede plantear el problema de que el alumno no sepa el concepto de factorial de un número y por tanto, difícilmente va a entender su implementación:
1.3.6 Función tal que dado un número entero n devuelve la suma de los n primeros números naturales:
1.3.7 Función tal que dado dos números enteros n y m devuelve la suma de números naturales entre n y m ambos inclusive.
Claramente este problema es una generalización del anterior, ya que una invocación
sumatorio = sumaEntre(1,valor);
es equivalente a
sumatorio = sumaPrimeros(valor);
1.3.8 Dado un número entero m devolver si es cuadrado perfecto:
1.3.9 Dado un número entero m devolver si es primo. Esto es, que no es divisible por ningún número entre 2 y m/2
1.3.10 Un posible
programa principal para invocar estas funciones podría ser:
En este tipo de ejercicios el alumno debe aprender a distinguir los siguientes conceptos:
1. Los argumentos de entrada
son variables locales a la función. Por tanto, no deben volver a declararse.
2. No tiene por qué existir
relación entre los nombres (identificadores) de los parámetros formales y
reales, de hecho es conveniente poner nombres distintos a los parámetros reales
y hacer varias invocaciones con distintos argumentos reales para reforzar este
concepto.
3. Las variables locales tanto
de las funciones como del main sólo tienen ámbito entre las llaves de la
función y deben declararse e inicializarse antes de usarse.
4. Los valores de los
argumentos reales se copian en los formales cuando se invoca la función. Si una
función modificara el parámetro formal esto no afectaría al parámetro real.
No hay comentarios:
Publicar un comentario