Previous topic | Next topic | Ada Home Page | Index
Parameter Modes

Parameter modes

describe flow of data between a procedure and its caller

Named from perspective of called procedure (worker):

From perspective of caller (co-ordinator):

Data Flow and Parameters

data flow can be shown on structure charts

data flow identifies parameters

Data flow: in parameters

down arrow shows a value that is given to the procedure by its caller

	-----------------------------------------------------
	-- print the grade corresponding to a given mark
	-----------------------------------------------------

	procedure print_grade (mark : in INTEGER) is


	begin -- print_grade

	    case mark is
	        when 85 .. 100 =>  PUT ("  HD");
	        when 75 ..  84 =>  PUT ("  DN");
	        when 65 ..  74 =>  PUT ("  CR");
	        when 50 ..  64 =>  PUT ("  PS");
	        when  0 ..  49 =>  PUT ("  FL");
	        when others    =>  null;
	    end case;

	end print_grade;

Data flow: out parameters

up arrow shows a value that is generated by the procedure and returned to its caller

	-----------------------------------------------------
	-- Get a student's exam mark from the user
	-----------------------------------------------------

	procedure get_exam (exam : out INTEGER) is

	    mark : INTEGER;		-- number typed by the user

	begin -- get_exam

	    -- read mark repeatedly until in range
	    loop
	        PUT ("Please enter the exam mark (0-50) ");
	        GET (mark); SKIP_LINE;
	        exit when (0 <= mark) and (mark <= 50);
	        PUT_LINE ("Out of range, please try again");
	    end loop;

	    exam := mark;			-- return the valid mark

	end get_exam;

Data flow: in out parameters

two-way arrow shows a value that is supplied by the caller for use in the procedure, and (perhaps) modified within the procedure

	-----------------------------------------------------
	-- Adjust a student's final mark if they bombed the
	-- exam and need their mark reduced as a result
	-----------------------------------------------------

	procedure adjust (exam : in     INTEGER;
	                  mark : in out INTEGER) is

	    acceptable : constant := 20;	-- min ok exam mark
	    limit      : constant := 44;	-- max if bad exam

	begin -- adjust

	    if (exam < acceptable) and (mark > limit) then
	        mark := limit;
	    end if;

	end adjust;


Summary of parameter modes

in out in out
Can be used to pass information into a procedure yes no yes
Can be used to pass information back from a procedure no yes yes
Actual parameter can be a variable name yes yes yes
Actual parameter can be an expression yes no no
Can assign to formal parameter inside procedure no yes yes
Can use value of formal parameter inside procedure yes no yes


Previous topic | Next topic | Ada Home Page | Index
c-lokan@adfa.oz.au / 14 Feb 96