Pascal/Turbo Pascal - diferencia entre procedure y function

 
Vista:

diferencia entre procedure y function

Publicado por Diego (3 intervenciones) el 02/06/2012 19:29:03
cual es?
con procedure puede o no entregar un valor, si es parametro por valor o variable. en cambio una funcion tiene obligadamente que entregar un valor.
entonces... para que esta exactamente function?
si con un procedure puedo cumplir la mismo objetivo que function
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

diferencia entre procedure y function

Publicado por ramon (2158 intervenciones) el 04/06/2012 17:01:03
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{La diferencia que axiste entre un procedimiento y una funcion es.
Que la funcion entrega un valor al procedimiento que lo llamo.
Mientras que el procedimiento no en trega valor.
Por ejemplo este procedimiento no entrega un balor al procedimiento
llamador si no a la variable asignada.}
 
 uses
    crt, dos;
  type
    string10 = string[10]; {asignado para la variable hora}
  var
    h : string10;
 
  procedure entregahora(var hora : string10);
  var
   anon,mes,dia, diasem : Word;
   ca1, ca2 : string[2];
   ca3 : string[4];
   begin
    GetDate(anon,mes,dia,diasem);
    str(dia,ca1);
    str(mes,ca2);
    str(anon,ca3);
    hora := (ca1 + '/' + ca2 + '/' + ca3);
   end;
 
  {Mientras que la funcion si lo entrega.}
 
   function entregahora2 : string10;
   var
   anon,mes,dia, diasem : Word;
   ca1, ca2 : string[2];
   ca3 : string[4];
   begin
    GetDate(anon,mes,dia,diasem);
    str(dia,ca1);
    str(mes,ca2);
    str(anon,ca3);
    entregahora2 := (ca1 + '/' + ca2 + '/' + ca3);
   end;
 
   procedure llamamos;
   var
      dato1, dato2 : string;
   begin
      entregahora(h);  {llamamos al procedimiento}
      dato1 := h;      { y asignamos valor}
      dato2 := entregahora2; {solo asignamos valor desde la funcion}
      writeln('procedimiento : ',dato1);
      writeln;
      writeln('Funcion : ',dato2);
      readkey;
   end;
 
 
   begin
       clrscr;
       llamamos;
   end.
 
  {Como puedes apreciar si que es lomismo en ejecucion pero
   mientras que el procedimiento necesita tener una variable
   activa a parte del procedimiento la funcion no con lo cual
   tenemos un dato para cualquier procedimiento o funcion
   constantemente actibo aorrando espacio en memoria para otras
   variables y aorrandonos de doble intruccion como es la llamada
   al procedimiento y la asignacion de la variable que con la funcion
   es directo.
   Esto es como decir paraque queremos coches o otro medio de transporte
   si tenemos pies, sencillo para emplearlo cuando lo necesitemos
   en nuestro caminar.
   Espero esto te sirva de algo para entender el porque los dos sistemas
   combiven juntos y los dos sirven.
   Y estara en ti emplear un sistema o otro en cada momento del programa}
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

diferencia entre procedure y function

Publicado por sanguedolce franco (32 intervenciones) el 15/06/2012 20:19:56
ramon es muy interesante esto de poner la fecha y la hora, he conseguido hacer que el procedure de la hora se actualize solo cada segundo, creando el efecto de que el reloj avanza, pero cuando quiero agregar esto a un programa donde necesite manejar otro menu simultaneamente el programa se queda en el reloj y no avanza... paso a dejarte el codigo del reloj:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Function Hora:string;     {Funcion que devuelve la hora del sistema}
Var
       h,m,s,o:word;
       ca1,ca2,ca3:string[2];
Begin
         GetTime(h,m,s,o);
          Str(h,ca1);
          Str(m,ca2);
          Str(s,ca3);
          Hora:=(ca1+':'+ca2+':'+ca3);
End;
 
Procedure PonerHora;     {Procedimiento que muestra la hora en pantalla}
Var
     DHora:string[8]; {Variable que almacena la Hora devuelta por la function}
     H:byte;   {Variable para mantener el reloj corriendo}
Begin
          H:=1;
          While H=1 do {Con este while logro el efecto del reloj corriendo}
          Begin
          DHora:=Hora;
          GotoXY(70,25);
          ClrEol;
          Write(DHora);
          Delay(1000);     {Este delay cumple la funcion de esperar un segundo antes de actualizar}
End;                              {De manera que logra el efecto de contar los segundos}


como veras, es sencillo, pero cuando añado el procedure al programa se queda en el reloj y no avanza, no sigue el programa...
Supongo que es por el while qe use, no lo se bien.
Gracias de nuevo por todas tus respuestas!.
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

diferencia entre procedure y function

Publicado por ramon (2158 intervenciones) el 15/06/2012 23:58:40
uses
crt, dos;

Function Hora:string; {Funcion que devuelve la hora del sistema}
Var
h,m,s,o:word;
ca1,ca2,ca3:string[2];
Begin
GetTime(h,m,s,o);
Str(h,ca1);
Str(m,ca2);
Str(s,ca3);
Hora:=(ca1+':'+ca2+':'+ca3);
End;

Procedure PonerHora;
var
tc : char;
Begin
while tc <> #27 do
begin
gotoxy(20,2);write(hora);
delay(30);
gotoxy(20,2);clreol;
if keypressed then
tc := readkey;
end;
End;

begin
clrscr;
PonerHora;
end.

Mira este fragmento
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