Pascal/Turbo Pascal - funciones en pascal

 
Vista:

funciones en pascal

Publicado por adriana (2 intervenciones) el 04/11/2009 20:19:43
Chicos, no me queda claro como definir y llamar una librería con procedimientos y funciones adentro. En realidad había hecho una sencilla sin variables, y cuando la llamé desde un programa funcionó bien. Pero tengo problemas cuando llamo una librería que tenga procedimientos con variables, que deben pasarse desde y hacia el programa principal. Yo estaba haciendo un programa que tuviera un menú de superficies de figuras, y que cuando elegía la figura llamase a una función que debería estar en la librería, y que ella solita realizara el cálculo, el resultado quedase en una variable que me devolvería al programa principal. Cosa de no tener que ir a buscar fórmulas o hacer memoria. Quizá alguien me pudiera pasar una explicación sencilla, y yo lo llevaría a la práctica. No necesito que hagan el programa, simplemente que me guíen para poder hacerlo yo. Gracias si es que pueden ayudarme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:funciones en pascal

Publicado por adriana (2 intervenciones) el 04/11/2009 21:27:28
Logré definir funciones en una librería. No se si voy a poder hacer procedures en vez de funciones. Les paso lo que hice y diganme si está bien. A mi me funcionan. Cree las funciones en una librería, y las llamo desde el programa principal.
Librería:

unit suppoli;
interface
uses crt;
type
lado=real;
base=real;
altura=real;
function supcuad(lado:real):real;
function suptri(base,altura:real):real;
implementation
function supcuad(lado:real):real;
begin
supcuad:=lado*lado;
end;
function suptri(base,altura:real):real;
begin
suptri:=base*altura/2;
end;
end.

Programa principal:

program superfpoligonos;
uses crt,suppoli;
var
op:integer;
lado,superf,base,altura:real;
begin
clrscr;
repeat
writeln ('1. Superficie del cuadrado');
writeln ('2. Superficie del triangulo');
writeln ('3. Superficie del rectangulo');
writeln ('4. Superficie del trapecio');
writeln ('5. Superficie del rombo');
writeln ('6. Superficie del romboide');
writeln ('7. Superficie del trapezoide');
writeln ('8. Superficie del poligono regular');
writeln ('9. Superficie del circulo');
writeln ('10. Superficie del sector circular');
writeln ('11. Salir');
writeln ('Ingrese una opcion');
readln (op);
case op of
1:begin
clrscr;
writeln ('Sup. del cuadrado- Ingrese lado: ');
gotoxy (40,1);
readln (lado);
superf:=supcuad(lado);
writeln ('La superficie del cuadrado es ', superf:0:2);
readkey;
end;
2:begin
clrscr;
writeln ('Sup. del triangulo- Ingrese base: ');
gotoxy (40,1);
readln (base);
writeln (' Ingrese altura: ');
gotoxy (40,2);
readln (altura);
superf:=suptri(base,altura);
writeln ('La superficie del triangulo es ', superf:0:2);
readkey;
end;
3:begin
end;
4:begin
end;
5:begin
end;
6:begin
end;
7:begin
end;
8:begin
end;
9:begin
end;
10:begin
end;
11:writeln ('Usted decidio salir');
end;
until op=11;
readkey;
end.

Obvio que solo armé la superficie de dos poligonos, pero quiero saber si es así la cosa. Gracias por darme bolilla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones en pascal

Publicado por Diego Romero (996 intervenciones) el 05/11/2009 07:15:17
Lo que has hecho está perfecto, salvo por el detalle de que has definido tres tipos que luego no usas y que para todo efecto son innecesarios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar