Вы находитесь на странице: 1из 3

Metodologa y Tecnologa de la Programacin I

Prctica 5: Funciones y Procedimientos


Objetivos de la prctica: Entender la necesidad de utilizar funciones y procedimientos. Aprender los conceptos bsicos de la programacin estructurada. Aprender a disear programas mediante una programacin modular. Entender los conceptos de variables locales y globales, mbitos de las variables y los mdulos, paso de parmetros por valor y por referencia, parmetros formales y actuales. Requisitos previos: Conocer la sintaxis de declaracin, definicin y llamada a procedimientos y funciones. Conocer los conceptos de variables locales y globales, mbitos de las variables y los mdulos, paso de parmetros por valor y por referencia. Actividades bsicas: 1. Dado el siguiente programa: PROGRAM paso_par; VAR num,i:INTEGER; PROCEDURE referencia(VAR num:INTEGER); BEGIN i := i+1; num := 2*num; END; PROCEDURE valor(num:INTEGER); BEGIN i := i+1; num := 2*num; END; {------------------------ Mdulo principal --------------} BEGIN i := 1; num := 1; WHILE num<=10 DO BEGIN WRITELN(i,num); referencia(num); WRITELN(i,num); valor(num); WRITELN(i,num); i := i+1; END; END. Determina en papel la salida del programa. Cuntas veces se repite el bucle? Razonar la respuesta. Para comprobar tu respuesta, escribe el programa y tracealo visualizando las variables i y num. Mostrar tambin el contenido de la pila (stack) cuando se llama a los procedimientos.

Metodologa y Tecnologa de la Programacin I

Prctica 5: Funciones y Procedimientos

2.

Disear una funcin FACTORIAL(N) que calcule el factorial del parmetro N. Tener el cuenta el caso especial 0!=1. Utilizar esta funcin para escribir un programa que calcule:
n n! = r r !( n r )!

3.

Escribir un procedimiento para intercambiar el valor de sus dos parmetros (INTERCAMBIAR(a,b))

4. Escribir un programa (utilizando una descomposicin modular) que permita al usuario elegir a travs de un men qu serie de las siguientes desea calcular (una ltima opcin del men podra incluir el clculo de todas las series): a) S= i=1+2+3+..+N b) S= 2*i=2+4+6+..+2*N c) S= (2*i+1)=1+3+5++2*N+1 d) S= i=1*2*3*4**N f) S= i2=12+22+32++N2 e) S= i!==1!+2!+3!++N! g) S= 2i=21+22+23++2N Actividades de refuerzo: 1. Disear un mdulo para calcular X elevado a Y (POTENCIA(X,Y)). 2. Disear una funcin para leer un ao y determinar si es bisiesto. NOTA: un ao es bisiesto si es mltiplo de 4. Los mltiplos de 100 no son bisiestos, salvo si son tambin mltiplos de 400. 3. Escribir un procedimiento para que muestre en pantalla un men con al menos 5 opciones. 4. Disear una funcin para calcular la suma de los dgitos de un nmero entero. Ejemplo: 3452 la suma de sus dgitos ser 3+4+5+2=14 5. Disear un mdulo para determinar cuando un carcter es uno de los dgitos de 0a9 6. Disear una funcin MOD(X,Y) que devuelva el resto de la divisin de x por y (todos los valores son enteros). Cuestionario: 1. La variable i utilizada en los procedimientos del ejercicio 1 es una variable global o local? 2. La variable num utilizada en los procedimientos del ejercicio 1 es una variable global o local? 3. Se podra haber implementado el procedimiento referencia del ejercicio 1 como una funcin sin parmetros? Razonar la respuesta.

Metodologa y Tecnologa de la Programacin I

Prctica 5: Funciones y Procedimientos

4. Por qu no se puede utilizar una funcin para implementar el ejercicio 3? Cmo se han pasado los parmetros al procedimiento, por valor o por referencia? 5. Qu tipo de bucle has utilizado para calcular el valor de cada una de las series del ejercicio 4?. Razonar la respuesta. 6. En el ejercicio 4 las series b y c tienen el mismo nmero de elementos (es decir, suman el mismo nmero de datos)?. Razonar la respuesta.

Вам также может понравиться