Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/10/2010, 13:03
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda estudiante acciones y funciones

Si no me equivoco lo que a vos te enseñan como Acción es lo que a mí me enseñaron como Procedimiento: un trozo de código que hace cosas con sus parámetros, pide datos si los necesita, pero no devuelve un valor. Una función sería una rutina de código que devuelve un valor, no modifica sus datos de entrada, y no pide datos extra al usuario.

Sí se puede hacer un procedimiento que calcule el área, porque no es lo mismo devolver datos a una rutina del programa que al usuario (lo siguiente pretende ser código PASCAL, disculpa si tiene algún error)
Código:
PROCEDURE AreaCuadrado();
VAR
    lado : INTEGER;
    area : INTEGER;
BEGIN
    READ("Escribe el lado", lado);
    area := lado*lado;
    WRITE("El area es ");
    WRITELN(area);
END;
Lo anterior no devuelve un valor a una rutina que lo invoque, pero sí devuelve datos en la salida estándar. Es un procedimiento.
Lo siguiente sería un programa con una función Area definida:
Código:
PROGRAM AreaCuadrado;
VAR
    lado, area : INTEGER;

FUNCTION AreaCuadrado(INTEGER lado) : INTEGER;
BEGIN
    AreaCuadrado := lado*lado;
END;

BEGIN
    Read("Escribe el lado", lado);
    area = AreaCuadrado(lado);
    WriteLn(area);
END.
Acá la función devuelve un valor al programa principal cuando éste la llama. Una función, en teoría, no debe tocar ni la entrada ni la salida estándar.

Función y Procedimiento son conceptos casi que puramente teóricos, de los lenguajes que conozco solamente Pascal tiene una sintaxis diferente para cada cosa. Los demás simplemente tienen funciones y el programador decide cómo trabajan (como procedimientos o como funciones) siguiendo esa clasificación.


Saludos.