Está en la página 1de 11

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas

Programacin y Computacin (Ingeniera)


Gua de Function y Procedure en Pascal 1. Cambia estas function a procedure
function todos_positivos(a,b,c:integer):boolean; begin if (a>0) and (b>0) and (c>0) then todos_positivos:=true else todos_positivos:=false end; Anlisis: esta function require tres parmetros de entrada y devuelve un valor boolean. La tarea que realiza es :verficar si todos los nmeros son positivos, devolver true de los contrario False procedure todos_positivos(a,b,c:integer var resul:boolean); begin if (a>0) and (b>0) and (c>0) then resul:=true else resul:=false end;

function maximo(a,b,c:integer):integer; begin if (a>b)and (a>c)then maximo:=a else if (b>a) and(b>c) then maximo:=b else maximo:=c end; function promedio(a,b,c:integer):real; begin promedio:=((a+b+c)/3); end; function potencia(b,e:integer):integer; var // locales p:integer; i:integer; begin

Para cambiar la function a procedure se debe declarar la variable resul como parmetros de salida, atenponiendo la palabra var Procedure maximo(a,b,c:integer; var max:integer);
begin Begin (*principal) Randomize; if (a>b)and (a>c)then max:=a else if (b>a) and(b>c) then max:=b else max:=c

A:=Random(56)+5; b:=Random(56)+5; C:=Random(56)+5; Maximo(a,b,c,mayor);//ejecucin procedure maximo Writeln( El mayor de ,a,b,c, es=,mayor); D:=random(56)+5; Mximo(mayor, d,54, mayor1); Writeln( El mayor de , mayor,d,54, es ,mayor1)

end;

procedure promedio(a,b,c:integer,var prom:real); begin prom:=((a+b+c)/3); end; procedure potencia(b,e:integer;var pot:integer); var // locales i:integer; begin pot:=1;

//las variables a,b,c,d,mayor,mayor1 son variables globales

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas

Programacin y Computacin (Ingeniera)


p:=1; for i:=1 to e do p:=p*b; potencia:=p; end; //------------------------------------function eval_pol(x:integer): integer; var px:integer; begin px:= 2*potencia (x,9) - 3* potencia (x,7)+ 5*potencia (x,3)- x +6; eval_pol:=px; end; for i:=1 to e do pot:=pot*b; potencia:=p; end; //------------------------------------Procedure eval_pol(x:integer;var px:real); begin px:= 2*potencia (x,9) - 3* potencia (x,7)+ 5*potencia (x,3)- x +6; end;

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)


2. Cree un programa que calcule la siguiente expresin matemtica

( + ) +
= =

( )

= =

El programa podra tener UNA function sumatoria y ejecutarlas tres veces?.SE DEBEN CREAR DOS FUNCTION DADOS QUE LOS ARGUMENTOS SON SUMAS (I+5, I-J); Y RODUCTOS (2*I, 3*I). a. Crea las instrucciones necesarias en el begin principal, de modo de ejecutar la function para obtener e imprimir cada sumatoria por separado. b. Crear otra function para determinar el valor de T , ejectala . c. Cambia la function sumatoria a un procedure. Ejectala. Program sumas; Uses crt; Var // gobales N,l:integer; Total1,total2,total3, total4:real; Function sumatoria(ini,fin,arg:integer):real; Var i:integer; s:real; Begin For i:=ini to fin do S:=s+(i+arg); Sumatoria:=s; End; Function T(total1, total2, total3, total4:real):real; Begin T:=total1+total2-(total3/total4); End;// cierre function

Begin (*principal*) repeat Writeln('Ingrese el n de iteraciones de la sumatoria >9'); Readln(n); Until(n>9); L:=5; total1:= sumatoria(1,n,5); writeln('sumatoria 1=',total1:4:0); Function total2:= sumatoria(4,n-5,-5); sumatoria_2(ini,fin,arg:integer):real ; writeln('sumatoria 2=',total2:4:0); Var total3:=sumatoria_2(1,2*n,2); i:integer;s:real; writeln('sumatoria 3=',total3:4:0); Begin total4:= sumatoria_2(2,n-3,3); For i:=ini to fin do writeln('sumatoria 4=',total4:4:0); S:=s+(i*arg); writeln(' El total T=',T(total1, total2, total3, Sumatoria_2:=s; total4):4:0); End; readkey; end. 3. Disee un procedimiento que transforme un nmero complejo representado en coordenadas cartesianas a coordenadas polares, y otro que realice la transformacin inversa. Cree los procedimientos necesarios para leer y escribir nmeros en coordenadas polares, as como los procedimientos para leer y escribir nmeros de coordenadas cartesianas. Para ello hay que decidir previamente como representaren pantalla los nmeros en coordenadas cartesianas y en polares. Por ejemplo, en cartesianas podras ser: c(partereal, parteimaginaria), y en polares: p(angulo, radio). Cree el programa y lea dos nmeros complejos, en cualquier representacin, los muestre el resultado en polares.

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)


Program carteasianas_polares; // este programa obtiene las coordenadas polares de un pto cartesiano Uses crt; Var //globales x,y:integer; Procedure coordenada(x,y:integer);// este procedure imprime un punto en coordenadas polares var r,teta,px,py:real; Begin R:=sqrt(sqr(x)+sqr(y)); if(x>0) and(y>=0) then teta:=arctan(y/x) else if(x>0) and(y<0) then teta:=arctan(y/x)+2*pi else if(x<0) then teta:=arctan(y/x)+pi else if (x=0) and(y>0) then teta:=pi/2 else if(x=0) and(y<0) then teta:=(3*pi)/2; writeln(' El ngulo es=',teta:8:5); px:=r*cos(teta); py:=r*sin(teta); writeln('(',px:4:2, ',',py:4:2,')'); end; begin // principal write('ingrese coordenada x:');readln(x); write('ingrese coordenada y:');readln(y); coordenada(x,y); readkey; end.

4. Crea un procedimiento que genere e imprima n- nmeros de la serie Fibonacci. La serie de Fibonacci es 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, Algoritmo: Se inicia con los dos primeros nmeros 0,1, los nmeros restantes se forman a partir de la suma de los dos anteriores. program FIBONACCI ; uses crt; var // globales n:integer; procedure n_fibonacci(n:integer); var s1,s2,s3,i:integer; begin s1:=0; s2:=1; writeln(' N sucesin de FIBONACCI:'); write(s1,'-',s2,'-'); for i:=1 to n-2 do begin s3:=s1+s2; write(s3,'-'); s1:=s2; s2:=s3; end; end;// cierra procedure begin // PRINCIPAL repeat

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)


WRITE(' Cuntos n de la sucesin de Fibonacci desea generar=?'); readln(n); until(n>0); n_fibonacci(n); readkey; end. a. Un subprograma: Que calcula las distancias entre dos puntos program dis; uses crt; var x,y,z,w:integer; di:real; Procedure d(x,y,z,w:integer;var dist:real); Begin Dist:=sqrt(sqr(x-z)+sqr(y-w)) End; Begin //PRINCIPAL repeat write('ingrese coordenada x e y el pto 1='); readln(x,y); write('ingrese coordenada x e y el pto 2='); readln(z,w); until(x<>z) and(y<>w); d(x,y,z,w,di); writeln('la distancia es=', di); readkey; end. Las races de una funcin de segundo grado program ecuacion; program ecuacion; //procedure no devuelva valor calcula e //procedure devuelve valor boolean //imprime uses crt; uses crt; var var A,B,C:INTEGER; A,B,C:INTEGER; R1,R2,DIS:REAL; procedure ec(a,b,c:integer); RE:BOOLEAN; var procedure ec(a,b,c:integer;VAR dis:real;var dis,R1,R2,R3:real; R:BOOLEAN); begin begin dis:=sqr(b)-4*a*c; dis:=sqr(b)-4*a*c; if (dis>0 )then if (dis>=0 )then begin R:=TRUE writeln(' existen dos races distintas'); else R:=FALSE; r1:=(-b+dis)/(2*a); end;// cierra procedure r2:=(-b-dis)/(2*a); begin// PRINCIPAL writeln('r1:=',r1:8:2); WRITE('INGRESE LOS COEFICIENTES A,B Y C DE writeln('r2:=',r2:8:2); LA EC DE SEGUNDO GRADO'); end READLN(A,B,C); else if( dis=0) then EC(A,B,C,DIS,RE); begin IF RE THEN writeln(' Existen races reales e BEGIN iguales'); writeln(' existen dos races distintas'); r1:=-b/(2*a); r1:=(-b+dis)/(2*a); end r2:=(-b-dis)/(2*a); else writeln(' Races imaginarias'); writeln('r1:=',r1:8:2); end;// cierra procedure writeln('r2:=',r2:8:2); begin// PRINCIPAL END WRITE('INGRESE LOS COEFICIENTES A,B ELSE Y C DE LA EC DE SEGUNDO GRADO'); writeln(' Races imaginarias'); READLN(A,B,C); readkey; EC(A,B,C); end. readkey; end.

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)


i. Si un pto pertenece a una circunferencia de radio r y centro(h,k) program CIRCUNF; uses crt; var x,y,h,k,r:integer; re:boolean; PROCEDURE CIR(X,Y,H,K,r:INTEGER; VAR RE:BOOLEAN); begin WRITELN(' LOS DATOS INGRESADOS Y GENERADOS'); writeln('El centro de la circunferencia es C(',h,',',k,')', 'y el radio r=',r); WRITELN('El pto a evaluar es (', x,',',y,')'); if sqr(r)=(sqr(x-h)+sqr(y-k))then re:=true else re:=false end;//cierra procedure (************************************) BEGIN // PRINCIPAL RANDOMIZE; R:=RANDOM(10)+1; WRITE('Ingrese centro de la circunferencia h,k= '); readln(h,k); writeln; write(' Ingrese pto a evaluar si pertenece a la circunferencia= '); readln(x,y); // ejecutar procedure cir CIR(X,Y,H,K,r,RE); WRITELN; WRITELN(' R E S U L T A D O S '); WRITELN; if re then writeln(' El pto (',x,',',y,')', 'pertenece a la circunferencia ') else writeln(' El pto NO PERTENECE A LA CIRCUNFERENCIA; puede estar en el interior o exterior de la circunferencia'); readkey; end.

5. Crea un programa que permita imprimir cada trmino del BINOMIO, las sumas parciales y la suma total de n-trminos. Para ello debes utilizar function y procedure. Anlisis del problema: RESPONDE: Puedes identificar cuntas subtareas o subproblemas visualizas para resolver lo solicitado?

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)


Cuntas subprogramas, function y procedure crears? Cules son las tareas que resolver cada uno? PARA EL DESARROLLO DE ESTE PROBLEMA SE REQUIEREN AL MENOS DE TRES FUNCTION: POTENCIA, la cual se ejecutar n+1veces para an-k y b ejecutar en el begin principal.
k

. Esta function se

FACTORIAL, Tambin se ejecutar n+1 veces para n!, k!, (n-k)!. Esta function la ejecuta la function combinatoria, no se ejecuta en el begin principal. COMBINATORIA, Esta function calcula la combinatoria, para ello debe ejecutar la function factorial y realizar la multiplicacin y divisin. Esta function es ejecutada en el begin principal N+1 veces.

Sean a y b nmeros reales y adems n y k nmeros enteros, tal que , entonces:

Donde program BINOMIO; uses crt; VAR // GLOBALES T1,T2:longint; A,B,N,K:integer; re_comb,tt:real; FUNCTION POTENCIA(A,B:INTEGER):longint; VAR I:INTEGER; BEGIN Potencia:=1; FOR I:=1 TO B DO Potencia:=Potencia*A; END;// CIERRA FUNCTION

FUNCTION FACTORIAL(N:INTEGER):LONGINT; VAR I:INTEGER; BEGIN if n=0 then factorial:=1 else begin FACTORIAL:=1 ; FOR I:=1 TO N DO FACTORIAL:=FACTORIAL*I; end;// cierra if n=0 END;// CIERRA FACTORIAL FUNCTION COMBINATORIA(N,K:INTEGER):REAL; VAR C:REAL; R1,R2,R3:LONGINT; BEGIN R1:=FACTORIAL(N); R2:=FACTORIAL(K); R3:=FACTORIAL(N-K); //WRITELN(' EL FACTORIAL DE ',N,' ES=',R1);

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)


//WRITELN(' EL FACTORIAL DE ',K,' ES=',R2); // WRITELN(' EL FACTORIAL DE ',N,' -',K,' ES=',R3); C:=R1/(R2*R3); COMBINATORIA:=C;// LA FUNCTION DEVUELVE EL VALOR A LA LNEA SIGUIENTE DE DONDE FUE EJECUTADA //LA FUNCTION COMBINATORIA END;// CIERRA FUNCTION COMBINATORIA (******************************************************************** ******) begin WRITELN('PROGRAMA QUE CALCULA EL VALOR DEL TEOREMA DEL BINOMIO'); WRITELN(' (A+B)^n'); WRITE(' INGRESE A Y B='); READLN(A,B); REPEAT WRITE(' INGRESE N='); READLN(N); UNTIL(N>0); for k:= 0 to n do begin re_comb:=COMBINATORIA(N,K); WRITELN(' LA COMBINATORIA DE ',N,' SOBRE ',K,' ES=',re_comb:7:2); writeln('la base =',a,' exponente=',n-k); T1:=POTENCIA(A,N-K); WRITELN('La potencia 1=',T1); T2:=POTENCIA(B,K); WRITELN('La potencia 2=',T2); TT:=TT+re_comb*t1*t2; writeln('la suma parcial',k+1,' es =',tt:7:2); WRITELN('****************************************'); end; writeln('------------------------------------'); write('EL RESULTADO DEL BINOMIO (',a,',',b,')^',n,'= ',tt:7:2); readkey; end. 6.

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)


7. Cree una programa para resolver la siguiente situacin, el programa debe tener: a. Una funcin que calcule el porcentaje de descomposicin en gramos de una sustancia de a cuerdo a la

siguiente tabla, la function debe considerar como parmetros las variables del peso y nmero

b.

de das: Un procedure que lea y/o genere los siguientes datos: Ingrese el nombre de cada una de las sustancias qumicas. Genere o ingrese el peso en gramos de cada sustancia, entre [0,10 y 5500,00] gramos. Genere o ingrese la cantidad de das expuestos de cada sustancia, entre 0 y 50 das. c. Un subprograma que imprima los siguientes datos: el nombre, peso, das y

grado de descomposicin de las sustancias qumicas. d. Una funcin que lea un entero en rango [1, 15] e. En el Begin Principal use las function y procedures anteriores para:
Leer la cantidad de sustancias a utilizar Ingresar el nombre, peso, das que lleva expuesta cada sustancia. Calcule el porcentaje de descomposicin de cada sustancia. Imprimir los datos del nombre, peso, das y porcentaje de descomposicin de cada sustancia qumica. Modifique el programa implementando function o procedure de modo de poder contar: Cuantas sustancias tienen un porcentaje de descomposicin mayor a 1500 gramos. Cuantas sustancias pesan menos de 1000 gramos.

program ejer_7; uses crt; var //globales n,d,i:integer; p_des,peso:real; nom_sus:string; function porc_descom(peso:real;n_dias:integer):real; begin if (n_dias <= 3) then porc_descom:=0.15*peso else if( n_dias<=8 )then porc_descom:=0.3*peso else if (n_dias>=15) then porc_descom:=0.50*peso else porc_descom:=0.90*peso end;// cierra function porc_descom procedure datos( var nom_sus:string;var peso:real; var d:integer); begin write('Ingrese el nombre de la sustancia qumica:'); readln(nom_sus);

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)

repeat write('Ingrese el peso en gramos de la sustancia ',nom_sus,' est debe estar [0,1..5500] gramos.'); readln(peso); until(peso>0.1) and(peso<=5500); repeat write('Ingrese la cantidad de das expuesto de la sustancia ingresada [0..50] das.'); readln(d); until(d>0) and(d<=50); end;// cierra procedure procedure imprimir(nom_sus:string; peso,desc:real; d:integer); begin writeln('**************************************'); writeln('Sustancia :', nom_sus); writeln('Peso writeln('Das end; function valor:integer; begin valor:=random(15)+1; writeln('El valor generado =',valor); end; begin // PRINCIPAL randomize; // ejecutar la function valor n:=valor; for i:=1 to n do begin datos( nom_sus,peso,d); // procedure datos p_des:=porc_descom(peso,d);// ejecuta function porc_descom imprimir(nom_sus,peso,p_des,d); //Modifique el programa implementando function o procedure de modo de poder contar: //Cuantas sustancias tienen un porcentaje de descomposicin mayor a 1500 gramos. //Cuantas sustancias pesan menos de 1000 gramos. me cans..... :',peso:7:2); :',d);

writeln('Grado de descomposicin:',desc:4:1,'%');

Ac. Horas: Claudia Toledo Robles

Universidad de La Serena Facultad de Ciencias Departamento de Matemticas Programacin y Computacin (Ingeniera)

writeln('--------------------------------'); end;

readkey; end.

Ac. Horas: Claudia Toledo Robles

También podría gustarte