Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P10 Ciencias Computacion I 2015 II
P10 Ciencias Computacion I 2015 II
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.
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.
Prof. Edwin Ch
avez R.