1/7 1- Considera el siguiente procedimiento: Algoritmo escr(E C ch

advertisement
RELACION 2
SUBALGORITMOS
DPTO. LENGUAJES Y CIENCIAS DE LA COMPUTACIÓN
ESCCUELA TÉCNICA SUPERIOR DE INGENIEROS EN TELECOMUNICACIONES
UNIVERSIDAD DE MÁLAGA
1- Considera el siguiente procedimiento:
Algoritmo escr(E C ch; E Z long)
Inicio
MIENTRAS long > 0 HACER
Escribir(ch)
long = long - 1
FINMIENTRAS
Fin
a) Si ch tiene el valor ‘X’ y numero el valor 5, ¿cuál sería el efecto de ejecutar cada una de las
siguientes llamadas al procedimiento:
escr(ch,4*numero-12) escr(ch,6)
escr(‘/’,numero)
escr(‘.’,6)
escr(5,numero)
escr(‘p’,-10)
b) Escribe llamadas al procedimiento escr para que cuando se ejecuten produzcan las siguientes
salidas:
35 guiones sucesivos
6 veces tantos espacios en blanco como el valor de numero
el valor actual de ch 14 veces
2.- Ejecuta a mano el siguiente algoritmo, mostrando lo que saldría por la pantalla.
Algoritmo uno
Variables
Z a,b,c
Algoritmo dos(E Z x,y; ES Z z)
Inicio
z=x+y+z
escribir(x,y,z)
saltoLinea
Fin
Inicio
a=5
b=8
c=3
dos(a,b,c)
dos(7,a+b+c,a)
dos(a*b,a DIV b,c)
Fin
1/7
.
3.- Considera el siguiente programa:
Algoritmo Ejercicio1
Variables
Zi
Algoritmo Proc1
Variables
Zi
Algoritmo Proc2
Inicio
i = i+2
Fin
Inicio
i=0
Proc2
escribir(i)
Fin
Algoritmo Proc3
Algoritmo Proc4
Variables
Zi
Inicio
i=4
Fin
Inicio
i = i+3
escribir(i)
Proc4
escribir(i)
Fin
Inicio
i = 12
Proc1
escribir(i)
Proc3
escribir(i)
Fin
a) Determina el ámbito de cada una de las tres variables "i" declaradas en el programa.
b) Muestra lo que ocurre cuando se ejecuta el programa.
3/7
.
4.- ¿ Qué salida produce la ejecución del siguiente algoritmo?
Algoritmo Anidado
Variables
N a,b,c,x,y
Algoritmo Primero
Inicio
a = 3*a
c = c+4
escribir("Primero",a,b,c)
saltoLinea
Fin
Algoritmo Segundo
Variables
Nb
Inicio
b=8
c = a+c+b DIV 3
escribir("Segundo",a,b,c)
saltoLinea
Fin
Algoritmo Tercero(ES N x;E N y)
Inicio
x = x+4
y = y+1
escribir("Tercero",a,b,c,x,y)
saltoLinea
Fin
Inicio
a=3
b=2
c=1
x = 11
y = 22
Primero
Segundo
Tercero(a,b)
escribir("Anidado",a,b,c,x,y)
Fin
5.- Dadas las siguientes declaraciones en un determinado algoritmo:
N a,b,c
B si
Algoritmo B uno(E N x,y)
......
Algoritmo dos(ES N x ;E N y)
......
4/7
.
Algoritmo N tres(E N x) :
¿ Cuáles de las siguientes llamadas a subalgoritmos en su cuerpo son válidas?
a) SI uno(a,b) ENTONCES ...
d) si = dos(c,5)
g) SI tres(a) ENTONCES ...
b) dos(a,b+3)
e) dos(a,tres(a))
h) b = tres(dos(a,5))
c) si = uno(c,5)
f) dos(tres(b),c)
i) dos(4,c)
6.- Dado el siguiente algoritmo anidado, ¿qué identificadores serían accesibles desde cada uno de los 3
cuerpos existentes?
Algoritmo ambitos
Variables
Z i,j
Algoritmo uno
Variables
Ck
Constantes
I = 16
Algoritmo dos
Variables
Rj
Inicio
.....
(* cuerpo del dos *)
Fin
Inicio
....... (* cuerpo del uno *)
Fin
Inicio
.......
(* cuerpo del ambitos *)
Fin
7.- Dado el siguiente algoritmo anidado, ¿a qué algoritmos se puede llamar desde: A,B,C y D?
Algoritmo A
.......
Algoritmo B
.......
Algoritmo C
......
Inicio
......
Fin
Algoritmo D
......
Inicio
......
5/7
.
Fin
Inicio
......
Fin
Inicio
......
Fin
8.- Escribe una función que tome 3 parámetros: dos de tipo natural y uno de tipo carácter. La función
deberá sumar, restar, multiplicar o dividir los valores de los dos primeros parámetros dependiendo del
código indicado en el tercer parámetro, y devolver el resultado.
9.- Diseña un algoritmo que lea desde el dispositivo de entrada estándar una serie de caracteres que
representan un número romano, lo convierta en arábigo, y lo escriba en la pantalla. Por ejemplo, si se
lee desde el teclado XIV debe salir en la pantalla 14.
10.- Desarrollar un subalgoritmo que devuelva si su argumento es o no primo.
11.- Desarrollar un subalgoritmo que devuelva el n-símo número primo, recibiendo n como parámetro.
12.- Desarrollar un subalgoritmo que escriba los números primos hasta el número que se le pasa como
parámetro.
13.- Euclides encontró que si a>b, entonces: mcd(a,b)=mcd(a-b,b) y que mcd(0,b)=b. Desarrollar un
algoritmo que devuelva el máximo común divisor de sus dos argumentos:
(a) mediante restas
(b) mediante división modular
14.- Construir un subprograma que llame a los anteriores para calcular el mcd pero mediante la técnica
práctica de: ”comunes con el menor exponente” de sus descomposiciones factoriales. Por ejemplo:
24=23x3 y 9=32, de modo que mcd(24,9)=3.
15.- Desarrollar un subalgoritmo que simplifique la fracción que se le pasa como parámetro en forma
(numerador,denominador). Usar el subalgoritmo del ejercicio anterior.
16.- Escribir un subprograma que calcule el mínimo común múltiplo de sus dos argumentos.
Buscar alguna propiedad relativa al mcd y el mcm
Utilizar la técnica de los "comunes y no comunes con el mayor exponente" en la solución del ejercicio
14.
17.- Dos números a y b se dice que son amigos si la suma de los divisores de a (salvo él mismo) coincide
con b y viceversa. Diseña un algoritmo que tenga como entrada dos números naturales n y m y que
muestre en la pantalla todas las parejas de números amigos que existan en el intervalo determinado por
n y m.
18.-Escribir un algoritmo que devuelva de un número n el total de dígitos necesarios para representarlo en
base b. Ambos parámetros (n,b) se pasan como argumentos. Por ejemplo:
NúmeroDígitos(25064,10)->5.
6/7
.
19.-Escriba un algoritmo que tome como entrada desde teclado dos números naturales "N" e "i", e
imprima en pantalla el dígito que ocupa la posición i-ésima del número N. Si i es mayor que el número
de dígitos de N, se escribirá en pantalla -1. Por ejemplo, para N = 25064 e i = 2, el resultado es el
dígito 6, y para i = 7, el resultado es -1.
20.- Hacer un algoritmo que devuelva el i-ésimo dígito en base b de un número n. Los tres datos (n,b,i) se
pasan como parámetros. Los dígitos se cuenta de menor a mayor peso, contando desde 1. Por
ejemplo Dígito(25064,10,2)->6 ó Dígito(25064,10,10)->0.
21.- Escribe un algoritmo que acepte como entrada desde teclado un número entero positivo y dé como
salida el resultado de sumar dos a dos los dígitos que aparecen en posiciones simétricas respecto al
dígito central dentro del número dado como entrada. Por ejemplo :
para el número: 2354869
la salida es: 2+9 = 11, 3 + 6 = 9, 5 + 8 = 13, 4
para el número : 6582
la salida es : 6 + 2 = 8, 5 + 8 = 13
22.- Escribe un algoritmo que lea 2 números enteros positivos y un carácter. En función de este carácter
leído efectuará las siguientes operaciones:
'p' : calcula los números perfectos en el rango dado por los 2 números.
'm': calcula el mínimo común múltiplo de ambos números.
'd' : calcula el máximo común divisor de los mismos.
'+', '*', '-', '/' : realiza la operación correspondiente con los números.
23.- Hacer todos los algoritmos de la relación anterior, utilizando procedimientos.
7/7
Descargar