Está en la página 1de 3

Universidad Nacional Mayor de San Marcos

Facultad de Ciencias Matem


aticas
E.A.P. de Computaci
on Cientfica
Pr
actica de Ciencias de la Computaci
on I, Semestre 2015 - II
Funciones y Procedimientos

Practica 10
1. Responder con verdadero o falso
( ) Las variables globales se definen en el procedimiento principal.
( ) Los parametros pasados por referencia deben escribirse siempre antes de
los parametros que se pasan por valor
( ) El trabajo realizado por una funcion, siempre puede realizarse por un
procedimiento
( ) El trabajo realizado por un procedimiento, siempre puede realizarse por
una funcion
( ) Los parametros referencia de un procedimiento pueden recibir valores del
programa principal y luego ser modificados por dicho procedimiento, retornandolos modificados al programa principal
( ) Los parametros por valor de un procedimiento reciben valores del programa principal, pero no pueden ser modificados por el procedimiento
2. Completar:
(a) Los procedimientos y funciones son una herramienta conceptual para
................ un problema en .....................
(b) Cuando usamos procedimientos y funciones de esta forma se puede escribir
mas facilmente programas ............. y ..............
(c) Los procedimientos y las funciones nos permiten evitar la ......................
de codigo, consiguiendo escribir programas mas .................
(d) Las funciones solo pueden retornar un ..............
unico y aqu se recomienda
que se utilicen solamente con parametros de entrada por .............
(e) Los procedimientos pueden contener parametros de ............. por valor y
por ...............
(f) Los procedimientos pueden contener parametros de salida por ............
(g) En el uso de los parametros por referencia se dice que un procedimiento
puede retornar ........ de un valor, tantos como parametros ................. se
coloquen.
(h) Las variables globales son las que se definen al ...............del programa y
pueden ser usadas por cualquier ................. o .................
3. Escriba la funcion distancia que calcule la distancia entre dos puntos (x1 , y1 ) y
(x2 , y2 ). Todos los valores de los n
umeros y valores de regreso deberan de ser
del tipo real.

Prof. Edwin Ch
avez R.

Universidad Nacional Mayor de San Marcos


Facultad de Ciencias Matem
aticas
E.A.P. de Computaci
on Cientfica
Pr
actica de Ciencias de la Computaci
on I, Semestre 2015 - II
Funciones y Procedimientos

4. El maximo com
un divisor de los enteros x e y es el entero mas grande que
divide en forma completa tanto a x como a y. Escriba una funcion recursiva
gcd que regrese el maximo com
un divisor de x y de y. El mcd de x y de y
se define en forma recursiva como sigue: Si y es igual a 0, entonces mcd (de
x,y) es x; de lo contrario mcd (de x, y) es igual a mcd(y, x%y) donde % es el
operador de modulo.
5. (Torres de Hanoi) Todos los cientficos de computo incipientes deben de enfrentarse con ciertos problemas clasicos, y las Torres de Hanoi es uno de los
mas famosos. Dice la leyenda que en un templo del Lejano Este, los monjes
estan intentando mover una pila de discos de una estaca hacia otra. La pila
inicial tema 64 discos ensartados en una estaca y acomodados de la parte inferior a la superior en tama
no decreciente. Los monjes estan intentando mover la
pila de esta estaca a la segunda con las limitaciones que exactamente un disco
debe de ser movido a la vez, y en ning
un momento se puede colocar un disco
mayor por encima de un disco menor. Existe una tercera estaca disponible
para almacenamiento temporal de discos. Se supone que cuando los monjes
terminen su tarea llegara el fin del mundo, por lo cual para nosotros existe
poca motivacion en ayudarles en sus esfuerzos. Supongamos que los monjes
estan intentando mover los discos de la estaca 1 a la estaca 3. Deseamos desarrollar un algoritmo que imprima la secuencia precisa de las transferencias
disco a disco entre estacas.
Si fueramos a enfocar este problema con metodos convencionales, nos encontraramos rapidamente enmara
nados y sin esperanza de poder manejar los discos. En vez de ello, si atacamos el problema teniendo en mente la recursion,
de inmediato se vuelve manejable.
El mover n discos puede ser visualizado en terminos de solo mover n 1 discos
(y de all la recursion), como sigue:
1. Mover n 1 discos de la estaca 1 a la estaca 2, utilizando a la estaca 3
como un area de almacenamiento temporal.
2. Mover el u
ltimo disco (el mas grande) de la estaca 1 a la estaca 3.
3. Mover los n 1 discos de la estaca 2 a la estaca 3, utilizando la estaca 1
como area de almacenamiento temporal.
El proceso termina cuando la u
ltima tarea consiste en mover el disco n = 1, es
decir, el caso base. Esto se lleva a cabo en forma trivial moviendo el disco, sin
necesidad de utilizar el area temporal de almacenamiento.
Escriba un programa para resolver el problema de las Torres de Hanoi. Utilice
una funcion recursiva con cuatro parametros:
1. El n
umero de discos a moverse

Prof. Edwin Ch
avez R.

Universidad Nacional Mayor de San Marcos


Facultad de Ciencias Matem
aticas
E.A.P. de Computaci
on Cientfica
Pr
actica de Ciencias de la Computaci
on I, Semestre 2015 - II
Funciones y Procedimientos

2. La estaca en la cual se acumularan estos discos al inicio


3. La estaca a la cual esta pila de discos se movera
4. La estaca a utilizarse como area de almacenamiento temporal
Su programa debera imprimir las instrucciones precisas que deberan seguirse
para mover los discos de la estaca de arranque a la estaca destino. Por ejemplo,
para mover una pila de tres discos de la estaca 1 a la estaca 3, su programa
debera imprimir la serie siguiente de movimientos:
1 - 3 (Esto significa mover un disco de la estaca 1 a la estaca 3)
1-2
3-2
1 -3
2-1
2-3
1-3
6. Cualquier programa que puede ser organizado en forma recursiva, puede ser
organizado tambien en forma iterativa, aunque algunas veces con mayor dificultad y con menor claridad. Escribir una version iterativa de las Torres de
Hanoi.
7. Elaborar una funcion que reciba un n
umero entero y retorne 1 si el n
umero
es negativo. Si el n
umero es positivo debe devolver una clave calculada de la
siguiente manera: Se suma cada dgito que compone el n
umero y a esa suma se
le calcula el modulo 7. Por ejemplo: para la cifra 513, la clave sera 5+1+3=9; 9
mod 7 = 2. Utilice la funcion para construir un programa que lea una secuencia
de valores y determine si el n
umero ledo fue negativo o si fue positivo que clave
le corresponde.
8. Desarrolle la pregunta anterior pero en lugar de utilizar una funcion utilice un
procedimiento.
9. Elaborar un programa que lea n caracteres y los almacene en un arreglo. Se
cumple siempre que el n
umero de caracteres es menor a 15. Cada caracter debe
almacenarse en un elemento del arreglo. El conjunto de caracteres forma una
palabra. El programa debe escribir si la palabra es palndromo o no. Utilizar
una funcion que tome el arreglo y devuelva 0 si la palabra no es un palndromo
o 1 si lo es.
10. Desarrolle la pregunta anterior pero en lugar de utilizar una funcion utilice un
procedimiento.

Prof. Edwin Ch
avez R.

También podría gustarte