EJERCICIOS DE FUNCIONES
 
Mis aficiones nuevo
EL HOMBRE QUE CALCULABA ( resumen)
EJERCICIOS DE DECISION SIMPLE
BIENVENIDOS A CANDY_LUNA INFORMATIC
TEORIA DE INFORMATICA
TAREA SEIS
DEFINICION DE ALGORITMO
RESOLUCION DE PROBLEMAS
BIOGRAFIAS DE MATEMATICOS
EJERCICIOS SECUENCIALES
MANUAL DEL DFD
EJERCICIOS DE DECISION MULTIPLE
EJERCICIOS DE CICLOS
EJERCICIOS DE FUNCIONES
EJERCICIOS DE ARREGLOS
TAREA SIETE
TAREA UNO
TAREA TRES
Mis aficiones nuevo
PROGRAMACION ORIENTADA A OBJETOS
EJERCICIOS DE FUNCIONES
FUNCIONES

algo f1ccc;
inicio
entero sumatoria (entero n);
Ppal
inicio
entero num, res;
Escriba ("digite límite para la sumatoria:"); lea (num);
res= sumatoria (num);
Escriba ("la sumatoria de %d es: %d", num, res);
final
entero sumatoria (entero n)
inicio
entero sum, cont=1;
MQ (cont < = n)
inicio
sum= sum+cont;
cont ++;
final
devuelva (sum);
final
final



algo f2ccf;
inicio
entero factorial (entero n);
Ppal
inicio
entero facto, num;
Escriba ("digite límite del factorial:"); lea (num);
facto= factorial (num);
Escriba ("la factorial es: %d",facto);
final
entero factorial (entero n)
inicio
entero fa, cont;
fa=1; cont=1;
haga
inicio
fa = fa*cont; cont ++;
final
MQ (cont < = n);
devuelva (fa);
final
final



algo f3cp;
inicio
entero multipli (entero a, entero b);
Ppal
inicio
entero m, n, res;
Escriba ("digite multiplicando:");
lea (m);
Escriba ("digite multiplicador:");
lea (n);
res = multipli (m, n);
Escriba (" %d * %d", m, n, res);
final
entero multipli (entero a, entero b)
inicio
entero i, mul = 0;
Para (i=1; i < = b; i ++)
inicio
mul = mul + a;
final
devuelva (mul);
final
final


algo f4ccc;
inicio
entero exponente (entero a, entero b);
Ppal
inicio
entero m, n, expo;
Escriba ("digite base:");
lea (m);
Escriba ("digite exponente:");
lea (n);
expo = exponente (m, n);
Escriba (" %d a la %d es: %d", m, n, expo);
final
entero exponente (entero a, entero b)
inicio
entero x, ex;
ex=a; x=1;
MQ (x inicio
ex = ex + a; x ++;
final
devuelva (ex);
final
final



algo f5ccf;
inicio
entero mamon (entero m, entero n);
Ppal
inicio
entero m, n, resul;
Escriba ("digite base:");
lea (m);
Escriba ("digite exponente:");
lea (n);
resul = mamon (m, n);
Escriba (" %d a la %d es %d", m, n, resul);
final
entero mamon (entero m, entero n)
inicio
entero x, sum;
sum=m; x=1;
haga
inicio
sum = sum + m; x ++;
final
MQ (x < = n);
devuelva (sum);
final
final

algo f6cp;
inicio
entero MCD (entero a, entero b);
Ppal
inicio
entero a, b, macodi;
Escriba ("digite primer numero:"); lea (a);
Escriba ("digite segundo numero:"); lea (b);
macodi = MCD (a, b);
Escriba ("El máximo común divisor entre %d y %d es: %d", a, b, macodi);
final
entero MCD (entero a, entero b)
inicio
entero c=a; d=b;
Para (;c ! = d;)
inicio
si (c>d) entonces
c = c - d;
sino
d = d - c
fsi
final
devuelva (c);
final
final

algo f7ccc;
inicio
entero MCM (entero a, entero b);
Ppal
inicio
entero a, b, micomu;
Escriba ("digite primer numero:"); lea (a);
Escriba ("digite segundo numero:"); lea (b);
micomu = MCM (a, b);
Escriba (" El mínimo común multiplo de %d y %d es: %d", a, b, micomu);
final
entero MCM (entero a, entero b)
inicio
entero c=a; d=b; c1, d1;
c1=c; d1=d;
MQ (c = d)
inicio
si (a > b) entonces
d = d + d1
sino
c = c + c1
fsi
final
devuelva (d);
final
final


algo f8.1cp;
inicio
entero fibonaci (entero n);
Ppal
inicio
entero fibo, num;
Escriba ("digite cuantos numeros de la serie quiere encontrar:"); lea (num);
fibo = fibonaci (num);
final
Nulo fibonaci (entero n)
inicio
f0=0, f1=1, i, f2;
Para (i=1; i < = n; i ++)
inicio
Escriba ("El término %d es: %d, i, f0);
f2 = f0 + f1;
f0 = f1;
f1 = f2;
final
final
final


algo f8.2ccf;
inicio
entero sumafibo (entero a);
Ppal
inicio
entero num, suma;
Escriba ("digite límite de suma:"); lea (num);
suma = sumafibo (num);
Escriba ("La suma de la serie es %d", suma);
final
entero sumafibo (entero a)
inicio
entero f0=0; f1=1; i=1, sum, f2;
haga
inicio
sum = sum + f0;
f2 = f0 + f1;
f1 = f2; i ++;
final
MQ (i < = n);
devuelva (sum);
final
final


algo f8.3ccf;
inicio
entero fibo (entero n);
Ppal
inicio
entero num, serie;
Escriba ("digite límite de la serie:"); lea (num);
serie = fibo (num);
Escriba ("De 1 a %d" hay %d términos de la serie, num, serie);
final
entero fibo (entero n)
inicio
entero f0=0; f1=1; i=1, f2, cont=0;
haga
inicio
f2 = f0 + f1;
f0 = f1;
f1 = f2; cont ++;
final
MQ (i<=n);
devuelva (cont);
final
final


algo f8.4ccc;
inicio
entero término (entero n);
Ppal
inicio
entero num, ter;
Escriba ("digite el numero de la serie que desea:"); lea (num);
ter = término (num);
Escriba (" El término buscado es: %d", ter);
final
entero término (entero n)
inicio
entero f0=0; f1=1; i=1, f2;
MQ (i < = n)
inicio
f2 = f0 + f1;
f0 = f1;
f1 = f2; i++;
final
devuelva (f0);
final
final


algo f9.1ccf;
inicio
Nulo primo (entero n);
Ppal
inicio
entero num, pri;
Escriba ("digite numero a evaluar:"); lea (num);
pri = primo (num);
final
Nulo primo (entero n)
inicio
entero cont=0, p; p=n;
haga
inicio
si (n % p == 0) entonces
cont ++;
fsi
p --;
final
MQ (p>0);
si (cont == 2) entonces
Escriba ("es primo");
sino
Escriba ("no es primo:");
fsi
final
final


algo f9.2cp;
inicio
entero conteoprimo (entero n);
Ppal
inicio
entero num, res;
Escriba ("digite límite para evaluar:"); lea (num);
res = conteoprimo (num);
Escriba ("De 1 a %d hay %d primos:", num, res);
final
entero conteoprimo (entero n)
inicio
entero cont=0, p, cont2=0, i;
Para (i=2; i<=n; i ++)
inicio
cont1=1;
Para (p=i; p>0, p ++)
inicio
si (i % p == 0) entonces
cont ++;
fsi
final
si (cont1 == 2) entonces
cont2 ++;
fsi
final
Escriba ("De 1 a %d hay %d primos", n, cont2);
final
final



algo f9.3ccc;
inicio
entero sumprimo (entero a);
Ppal
inicio
entero n, suma;
Escriba ("digite límite par suma:"); lea (n);
suma = sumprimo (n);
Escriba (" la suma de los primeros %d primos es: %d", n, suma);
final
entero sumprimo (entero a)
inicio
entero cont2=0; cont1, sum, p, i=2;
MQ (cont2<=n)
inicio
cont1=0; p=i;
MQ (p>0)
inicio
si (i % p == 0) entonces
cont1 ++;
fsi
p--;
final


si (cont1 == 2) entonces
inicio
cont2++;
sum = sum + i;
final
fsi
i ++;
final
devuelva (sum);
final
final

algo f9.4ccf;
inicio
entero sumapri (entero a);
Ppal
inicio
entero n, sum;
Escriba ("digite límite a evaluar:"); lea (n);
sum = sumapri (n);
Escriba ("La suma de los primos da: %d", sum);
final
entero sumapri (entero a)
inicio
P=i; cont1=0;
haga
inicio
si (i % p == 0) entonces
cont1 ++;
fsi
p--;
final
MQ (p>0);
si (cont1==2) entonces
suma = suma + i;
fsi
i ++;
final
MQ (i<=n)
devuelva (suma);
final


algo f10cp;
inicio
entero reves (entero n);
Ppal
inicio
entero num, rev;
Escriba ("digite numero:"); lea (num);
rev = reves (num);
Escriba ("El inverso es: %d", rev);
final
entero reves (entero n)
inicio
entero de, re, sv;
sv = 0;
Para (; n > 0;)
inicio
di=/10; re= n%10;
sv= sv * 10 + re; n=di;
final
devuelva (sv)
final
final


algo f11ccc;
inicio
entero tres (entero n);
Ppal
inicio
entero res, num=500;
res = tres (num)
Escriba ("De 1 a 500 hay %d numeros 3", res);
final
entero tres (entero n)
inicio
entero cont=1; cnt=0, x, di, re;
MQ (cont<=n)
inicio
x= cont;
MQ (x>0)
inicio
di= x/10; re= x%10; x=di;
final
si (re == 3) entonces
cnt++;
fsi
cont ++;
final
devuelva (cnt);
final
final



algo f12ccf;
inicio
entero binario (entero n);
Ppal
inicio
entero num, bin;
Escriba ("digite numero a evaluar:"); lea (num);
bin = binario (num);
Escriba ("El binario equivale a: %d", bin);
final
entero binario (entero n)
haga
inicio
entero r, b=0, ct=1; n;
r=n%2; n=n/2;
b=r*ct+b;
ct=ct*10;
final
MQ (n>0);
devuelva (r);
final


algo f14cp;
inicio
# define EQUIS 4
# define ENE 10
real malan (entero m, entero n);
real facto (entero n);
Ppal
inicio
entero i;
real ss=10;
Para (i=0; i < = ENE; i ++)
ss= ss + (malan [EQUIS, i] / facto [i]);
Escriba ("La suma de la serie es: %f", ss);
final
real malan (entero m, entero n)
inicio
entero x;
real ex=10;
Para (x; x<=n; x ++)
ex=ex*m;
devuelva (ex)
final
real facto (entero n)
inicio
entero i;
real fa=10;
Para (i=1; i<=n; i++)
fa = fa * i;
devuelva (fa);
final
final



algo f17ccc;
inicio
entero serie(entero n);
Ppal
inicio
entero lim, valor;
lim=10;
valor=serie(lim);
Escriba ("El total de la serie es: %d",valor);
final
entero serie(entero n);
inicio
entero i=1,res=1,b=2,c;
MQ(i <=n )
inicio
si (b > 0) entonces
inicio
c=i;
b=b*(-1);
res=res + b;
b--;
final
sino
inicio
b=b*(-1);
res=res + b;
b ++;
final
fsi
i ++;
final
devuelva (res);
final
final

Anexo:

FUNCIONES:


Matematica mente una funcion es una operación que toma 1 o mas valores llamados argumentos y producen un valor denominado resultado –valor de la funcion para los argumentos dados-.

Todos los lenguajes de programacion tienen funciones incorporadas o intrincecas.


Ejemplo:
x
F(x) = -------
1 + x²


Donde F es el nombre de lfuncion y X es el argumento. Observese que ningun valor especifico se asocia con X; es un parametro normal utilizado en la definicion de la funcion. Para evaluar X debemos darle valor real o actual a X; con este valor se puede evaluar el resultado. Con X = 3 se obtieel valor 0.3 que se expresan escribiendo


F(3) = 0.3

F(3) = 3 3
------- = --------- = 0.3
1 + 9 10


Una funcion puede tener varios argumentos. Por consiguiente,

F(x, y) = X – Y
---------





Es una funcion con dos argumentos. Sin embargo, solamente un valor se asocia con la funcion para cualquier par de valores dados a los argumentos.

Cada lenguaje de programacion tiene sus propias funciones incorporadas, que se utilizan escribiendo sus nombres con los argumentos adecuados en las expresiones tales como


Raiz 2( A + cos ( x ) )


Cuando la expresion se evalua, el valor de X se da primero al sub programa ( funcion ) coseno y se calcula cos ( X). El valor de A + cos ( X ) se utilizan entonces como argumento de la funcion raiz 2 ( raiz cuadrada ), que evalua el resultado final.

Cada funcion se evoca utilizando su nombre en una expresion con los argumentos actuales o reales encerrados entre parentesis.

Las funciones incorporadas al sistema se denominan funciones internas o intrincecas y las funciones definidas por el usuario, funciones externas. Cuando las funciones estandares o internas no permiten realizar el tipo de calculo deseado es necesario recurrir a las funciones externas, que pueden ser definidas por el usuario mediante una declaracion de una funcion.

Aunque a una funcion no se le llama explicitamente, sino que se le invoca o referencia mediante un nombre y una lista de parametros actuales.

El algoritmo o programa llama o invoca a la funcion con el nombre de esta ultima en una expresion seguida de una lista de argumentos que deben coincidir en cantidad, tipo y orden con los de la funcion que fue destinada. La funcion devuelve un unico valor.

Las funciones son diseñadas para realizar tareas especificas: Tomar una lista de valores - llamados argumentos ( parametros de entrada: E ) – y devolver un unico valor.


DECLARACION DE FUNCIONES:


La declaracion de una funcion requiere de una serie de pasos que la definen. Una funcion como tal sub algoritmo o subprograma tiene una constitucion similar a los algoritmos, por consiguiente, constara de una cabecera que comenzara con el tipo del valor devuelto por la funcion, seguido de la palabra funcion y del nombre y argumento de dicha funcion.

A continuacion ira el cuerpo de la funcion, que sera una serie de acciones o instrucciones cuya ejecusion hara que se asigne un valor al nombre de la funcion. Esto determina el valor particular de l resultado que ha de devolverse al programa llamador.

La declaracion de la funcion sera:


< tipo_de_resultado> funcion < nombre_fun> ( vista de parametros ) { declaraciones locales}inicio < acciones > // cuerpo de la funcion devolver ( < expresion > ) fin_funcion




Lista de parametros: Lista de parametros formales o argumentos, con uno o

mas argumentos de la siguiente forma:

( { E|S|E/S} tipo_de_dato A: Parametro 1 { , parametro 2 }...
{ E|S|E/S} tipo_de_dato B: Parametro x { , parametro y}...)
E: Entrada; S: Salida; E/S: Entrada/ Salida


Nombre_func: Nombre asociado con la funcion, que sera un nombre de

identificador valido

< Acciones > Instrucciones que constituyen la definicion de la funcion y que

deben contener una unica instrucción: devolver ( < expresion>)

Tipo_de_resultado Tipo del resultado que devuelve la funcion


Por ejemplo la funcion:


F(x,y)= X
------- 2
1+x

se definira como:

real funcion f(x)
inico
devolver (X / (1 +X * ) )
fin_funcion


otro ejemplo puede ser la definicion de la funcion trigonometrica, cuyo valor es:

tar(x)=sen(x)
cos(x)

donde sen(x) y cos(x) son las funciones seno ycoseno –normalmente funciones internas-
la declaracion de la funcion es :

real funcion tan (E real: X) / / X,parametro de la Entrada
/ / funcion tan igual a sen (X) / cos (X), angulo X en rediantes
inicio
devolver (sen (X) / cos (X)
fin_funcion



Observe que se incluye un comentario para des cribir la funcion. Es buene practica incluir documentacion que describa brevemente lo que hace la funcion, lo que representan sus parametros o cualquier otra informacion que explique la definicion de la funcion. En aquellos lenguajes de programacion –como Pascal-que exigen seccion de declaracion, estas se situaran al principio del programa.
Para que las acciones descritas en un subprograma funcion sea ejecutadas, se necesita que este sea invocado desde un programa principal o desde otros subprogramas a fin de proporcionarle los argumentos de entrada necesarios para realizar estas acciones.
Los argumentos de la declaracion de la funcion se denominan parametros formales,ficticos o mudos (dummy); son nombres de variables, de otras funciones o procedimientos y solo se utilizan dentro del cuerpo de la funcion. Los argumentos utilizados en llamada de la funcion denominan parametros actuales, que a su vez pueden ser constantes, variables,expresiones, valores de funciones o nombres de las funciones o procedimientos.



INVOCACION A LAS FUNCIONES

Una funcion puede ser llama de la siguiente manera:








Nombre_funcion funcion que llama

Lista de parametros actuales constantes,variables,expresiones valores de la
Funcion,nombres de las funciones o
Procedimientos




Cada vez que se llama una funcion desde el algoritmo principal se establece automaticamente una correspondencia entre los parametros formales los parametros actuales. Debe haber exactamente el mismo numero de parametros formales de parametros actuales que de parametros formales de la declaracion de la funcion y se presupone correspondencia uno a uno de izquierda a derecha dentro los parametros formales y actuales.







Una llamada a la funcion implica los siguientes pasos:

1-a cada parametro formal se le asigna el valor real desu correspondiente parametro actual.
2-se ejecuta el cuerpo de acciones de la funcion.
3-se devuelve eñl valor de la funcion al nombre de la funcion y se retorna al punto de llamada.

Ejemplo:
n
Definicion de la funcion: Y = X ( potencia n de X )

Real funcion potencia (E real: X; E entero : n )
Var
Entero : i, y
Inicio
Y 1
Desde i 1 hasta abs (n) hacer
Y Y * X
Fin_desde
Si n < 0 entonces
Y 1/Y
Fin_si
Devolver (Y)
Fin_funcion


Abs (n) es la funcion valor absoluto de n a fin de considerar exponentes positivos o negativos.



Invocacion de la funcion:


z potencia ( 2.5, -3 ) parametros actuales.


Transferencias de informacion:

X = 2.5 N = -3

Z= 0.064.







VARIABLES LOCALES Y GLOBALES


Las variables utilizadas en los programas principales y sub programas se clasifican en dos tipos:



· VARIABLES LOCALES
· VARIABLES GLOBALES




Una variable local es aquella que esta declarada y definida dentro de un sub programa, en el sentido de que esta dentro de ese sub programa y es distinta a las variables con el mismo nombre declaradas en cualquier parte del programa principal. El significado de una variable se confina al procedimiento en el que esta declarada. Cuando otro sub programa utiliza el mismo nombre se refiere a una posicion diferente en memoria. Se dice que tales variables son locales al sub programa en el que edeclaradas.

Una variable global es aquella que esta declarada para el programa o el algoritmo principal, del que dependen todos los sub programas.

Las partes del programa / algoritmo en que una variable se define se conoce como ambito ( scope, en ingles ).

El uso de variables locales tiene muchas ventajas. En particular, hace a los sub programas independientes, con la comunicación entre el programa principal y los programas manipulados estructuralmente entre la lista de parametros. Para utilizar un procedimiento solo necesitamos conocer lo que hace y no tenemos que estar preocupados por su diseño, es decir, como estan programados.




ccc
Esta característica hace posible dividir grandes proyectos empiezan más pequeñas independientes. Cuando diferentes programadores están implicados, ellos pueden trabajar independientemente.

A pesar del hecho importante de los sub programas independientes y las variables locales, la mayoría de los lenguajes proporcionan algún tipo de método para tratar ambos tipos de variables.

Una variable local a un sub programa no tiene ningún significado en otros sub programas. Si un sub programa asigna un valor a una de sus variables locales, este valor no es accesible a otros programas, es decir, no pueden utilizar este valor. A veces, también es necesario que una variable tenga el mismo nombre en diferentes sub programas.

Por el contrario, las variables locales tienen la ventaja de compartir informacion de diferentes sub programas sin una correspondiente entrada en la salida de parámetros.

En un programa sencillo con un sub programa, cada variable u otro identificador es o bien local al procedimiento o global al programa seguido. Sin embargo, si el programa incluye procedimientos que engloban a otros - procedimientos anidados -, entonces la noción de global / local es algo mas complicado de entender.

El ámbito de un identificador ( variables, constantes, procedimientos ) es la parte del programa donde se conoce el identificador. Si un procedimiento esta definido localmente a otro procedimiento, tendrá significado solo dentro del ámbito de ese procedimiento. A las variables les sucede lo mismo; si están definidas localmente dentro de un procedimiento, su significado o uso se confina a cualquier función o procedimiento que pertenezca a esa definición.



PASOS DE PARÁMETROS



Existen diferentes métodos para la transmisión o el paso de parámetros a sub programas. Es preciso conocer el método adoptado por cada lenguaje, ya que la elección puede afectar a la semántica del lenguaje. Dicho de otro modo, un mismo programa puede producir diferentes resultados bajo diferentes sistemas de pasos de parámetros.

Los parámetros pueden ser clasificados como:



Entradas: las entradas proporcionan valores desde el programa que
( E ) llama y que se utiliza dentro de un procedimiento. En los
sub programas función, las entradas son los argumentos
en el sentido tradicional;


Salidas:
( S ) Las salidas producen los resultados del sub programa; de
nuevo si se utiliza el caso una función, este devuelve un
valor calculado por dicha función, mientras que con
procedimientos pueden calcularse cero, una o varias
Salidas;






Entradas / salidas: Un solo parámetro se utiliza para mandar argumentos a
( E/S ) un programa y para devolver resultados.






Desgraciadamente, el conocimiento del tipo de parámetros no es suficiente para caracterizar su funcionamiento; por ello, examinaremos los diferentes métodos que se utilizan para pasar a transmitir parámetros.

Los métodos más empleados para realizar el paso de parámetro son:



· Pasos por valor ( También conocido por parámetro valor ),
· Paso por referencia o dirección ( También conocido por parámetro variable),
· Paso por nombre,
· Paso por resultado.




PASO POR VALOR:


El paso por valor se utiliza en lenguajes de programación; por ejemplo, C, Modula 2, Pascal, Algol y Snobol. La razón de su popularidad es la analogía con los argumentos de una función, donde los valores se proporcionan en el orden de calculo de resultados. Los parámetros se tratan como variables locales y los valores iniciales se proporcionan copiando los valores de los correspondientes argumentos.

Los parámetros formales – locales a la función – reciben como valores iniciales los valores de los parámetros actuales y con ello se ejecutan las acciones descritas en el sub programa.

No se hace diferencia entre un argumento que es variable, constante o expresión, ya que solo importa el valor del argumento.

El mecanismo de paso se resume así:

Valor primer parámetro: A = 5.
Valor segundo parámetro: Constante = 18.
Valor tercer parámetro: B x 3 + 4 = 25.


Los valores 5, 18 y 25 se transforman en los parámetros x, y, z, respectivamente, cuando se ejecuta el procedimiento.

Aunque el paso por valor es sencillo, tiene una limitación acusada: No existe ninguna otra conexión con los parámetros actuales, y entonces los cambios que se produzcan por efecto del sub programa no producen cambios a los argumentos originales y, por consiguiente, no se pueden pasar valores de retorno al punto de llamada: es decir, todos los parámetros son solo de entrada. El parámetro actual no puede modificarse por el subprograma. Cualquier cambio realizado en los valores de los parámetros formales durante la ejecución del sub programa se destruyen cuando se termina el sub programa.

La llamada por valor no devuelve información al programa que llama.





EJEMPLOS:






1. Función potencia para el calculo de N elevado a A. el numero N deberá ser positivo, aunque podrá tener parte fraccionaria, A es un real.

Algoritmo Elevar_a_potencia
Var
real: a, n
inicio
escriba( ‘digite numero positivo’)
lea( n)
escriba( ‘ digite exponente’ )
lea(a)
escriba( ‘N elevado a =’, potencia(n, a ) )
fin

real función potencia (E real n, a )
inicio
devolver (exp (a x ln (n) )
fin_funcion


2- diseñar un algoritmo que contenga un subprograma de calculo del factorial de un numero y una llamada al mismo.
Como ya es conocido por el lector el algoritmo factorial, lo indicaremos expresamente:

Entero función FACTORIAL ( E entero: n )
Var
entero: I, f
/ / advertencia, según el resultado, f puede ser real
inicio
f 1
desde i 1 hasta n hacer
f f * i
fin_desde
devolver ( f)
fin_funcion

y el algoritmo que contiene un subprograma de calculo del factorial de un numero y una llamada al mismo:

algoritmo funcion_factorial
var entero: X, y, numero

inicio
escriba ( ‘ digite un numero entero y positivo ‘ )
lea(numero)
X factorial (numero)
Y factorial (5)
Escribir (x, y)
fin
Entero función factorial ( E entero: n )
var entero: i , f
inicio
f 1
desde i 1 hasta n hacer
f f * i
fin_desde
devolver (f)
fin_funcion











3
3- Realizar el diseño de la funcion Y = X (calculo del cubo de un numero).

algoritmo prueba
var
entero : N
inicio / / programa principal
N cubo (2)
Escriba ( ‘2 al cubo es’ , N)
Escriba ( ‘3 al cubo es’ , cubo (3) )
Fin

Entero funcion cubo ( E entero : X )
Inicio
Devolver( X * X* X)
Fin_funcion

La salida del algoritmo seria:
2 al cubo es 8
3 al cubo es 27



4-algoritmo que contiene y utiliza unas funciones (seno y coseno ) a las que les podemos pasar el angulo en grados.

Algoritmo sen_cos_en_grados
Var real : g

Inicio
Escribir ( ‘ digite angulos en grado ‘ )
Lea(g)
Escribir(seno (g) )
Escribir(coseno (g) )
Fin

Real funcion coseno ( E real : g )
Inicio
Devolver (cos (g *2 * 3.141592/360)
Fin_funcion

Real funcion seno ( E real g )
Inicio
Devolver ( sen (g *2 * 3.141592/360 )
Fin_funcion





5-Algoritmo que simplifique que un quebrado, dividido entre numerador y denominador por un maximo comun divisor.

Algoritmo simplificar_quebrado
Var
Entero : n , d

Inicio
Escribir (‘ digite numerador’ )
Lea ( n )
Escribir ( ‘ digite numerador ‘ )
Lea ( d )
Escribir ( n, ‘ / ‘, d, ‘=’, div mcd (n, d ), ‘/ ‘, d div mcd(n, d ) )
Fin
Entero funcion mcd ( E entero : n, d )
Var
Entero : r
Inicio
r n mod d
mientras r <> 0 hacer
n d
d r
r n MOD d
fin_mientras
devolver (d)
fin_funcion



6-supuesto que nuestro compilador no tiene la funcion seno.podriamos calcular seno de x mediante la siguiente serie :


sen(x)=x - X + X - X +…(hasta 17 terminos)
3! 5! 7!


X ( angulo en radianes).

Programa nos tiene que permitir el calculo del seno del angulo en grados, mediante el diseño de una funcion SENO (x), que utilizara,a su vez,las funciones POTENCIA (x ,n) y FACTORIAL (n), que tambien deberan ser implementadas en el algoritmo.
Se terminaran cuando respondamos N(no) a la petencion del otro angulo.

Algoritmo calcular_seno
Var real : gr
Carácter : resp

Inicio
Repetir
Escriba( ‘digite angulo de grado’ )
Lea (gr )
Escriba ( ‘seno (‘, gr, ‘ ) =’, seno(gr) )
Escriba ( ‘ ¿ otro angulo?’ )
lea(resp)
hasta_que resp =’ N’
fin
real funcion factorial ( E entero : n )
var
real : f
entero : i
inicio
f 1
desde i 1 hasta n hacer
f f * 1
fin_desde
devolver (f)
fin_funcion

real funcion potencia ( E real: x; E entero: n )
var real : pot
entero : i
inicio
pot pot * x
desde i 1 hasta n hacer
pot pot * x
fin_desde
devolver( pot)
fin_funcion
real funcion seno ( E real : gr )
var real : x , s
entero : i, n
inicio
x gr * 3.141592 / 180
s x
desde i 2 hasta 17 hacer
n 2 * i - 1
si i mod 2 <> 0 entonces
s s - potencia (x, n ) / factorial (n)
si_no
s s + potencia ( x, n ) / factorial (n)
fin_si
fin_desde
devolver(s)
fin_funcion







7- La funcion (signo)realiza la siguiente tarea: todo un numero real x, si x es 0, entonces se devuelve un 0; si x es positivo,se devuelve 1, y x es negativo, se devuelve un valor
-1.

La declaracion de la funcion es:

Entero funcion signo ( E real: x )
Var entero : s
Inicio
/ / valores de signo : + 1,0, -1
si x = 0 entonces s 0
si x > 0 entonces s 1
si x < 0 entonces s -1
devolver
fin_funcion

antes de llamar a la funcion, la variable (s), como se declara dentro del subprograma,es local al subprograma ,es local al subprograma y solo se conoce dentro del mismo. Veamos ahora un pequeño algoritmo donde se invova la funcion.

Algoritmo SIGNOS
Var
Entero : a , b , c
Real : x , y , z
Inicio
X 5.4
A signos (x)
Y 0
B signo (y)
Z 7.8975
C signo (z – 9 )
Escribir ( ‘las respuestas son ‘, a , ‘ ‘ , b, ‘ ‘ , c )
Fin

Si se ejecuta este algoritmo,se obtiene los siguientes valores:

X = 5.4 X es el parametro actual de la primera llamada a signo (x)
A = signo ( 5.4 ) A toma el valor 1
Y = 0
B = signo ( 0 ) B toma el valor de 0
Z = 7.8975
C = signo ( 7.8975-9 ) C el valor –1

La linea escrita al final sera:

Las respuestas son 1 0 -1

8- algoritmo DEMOX
var
inicio
X 5
A 10
Y F (X)
Escriba ( X, A, Y )
Fin

Entero funcion F ( Eentero : N )
Var
Entero : X
inicio
A 5
X 12
Devolver ( N + A)
Fin_funcion


A la variablegobal A se puede acceder desde el algoritmo y desde la funcion. Sin embargo, X identifica a dos variables distintas : una local al algortmo y solo se puede acceder desde el y otra local a la funcion.


9-realizar el calculo del area de un circulo y la longitud de la circunferencia en fel valor del radio leido desde el teclado.

Procedimiento circulo ( E real : radio; S real : area, longitud )
/ / parametros valor : radio
/ / parametros variable : area , longitud
var
real: pi
inicio
pi 141592
area pi * radio * radio
longitud 2 * pi * radio
fin_procedimiento



10-Consideremos un subprograma N con dos parametros formales : i, transmitido por valor, y j, por variable.

Algoritmo M
/ / variable A , B enteras
var
entero : A , B




inicio
A 2
B 3
Llamar_a N(A , B)
Escriba ( A , B )
Fin / / algoritmo M


Procedimiento N ( E entero : I; E/S entero : j )
/ / parametros i
/ / parametros variable j
inicio
i i + 10
j j + 10
escribir ( i , j )
fin_procedimiento



Imagen