Göm menyn

TDDD44 Problemlösning och programmering

Lathund - underprogram


I MatLab finns det endast en typ av underprogram. Dessa kallas funktioner. Här är lite beskrivningar över hur man skriver dessa.

Generell beskrivning

En generell beskrivning över hur en funktion skrivs i MatLab kan se ut på följande sätt:

	function {return_value=}function_name{(parameter_list)}
	    {comments}
	    statements
	end

En kort beskrivning av ovanstående generella beskrivning:

	Själva ordet "function" används för att säga att detta är en
	definition av en funktion.

	Efter detta måste man ange vad funktionen heter, "function_name".

	Beroende på om funktionen skall returnera något värde eller ej
	behövs "return_value=" eller inte.

	Om funktionen skall ta emot några indata skall man skriva sin
	parameterlista, "parameter_list", inom parenteser efter
	funktionsnamnet. Om funktionen inte behöver indata slopar man
	hela parentesen.

	De krullparenteser som står i beskrivningen betyder alltså att
	man kan utelämna det som är mellan dem.

	Själva satserna som gör det som skall utföras av funktionen är
	markerade ovan med "statements".

	Kommentarerna som kommer direkt efter själva funktionshuvudet
	är lite speciella. Man kan dessutom ha kommentarer bland
	saterna, men dessa berör vi inte här.

	Om man skriver en kommentar på raden efter funktionshuvudet
	kommer denna att tolkas som en kommentar som MatLabs inbyggda
	hjälpkommandon kan använda för att visa vad funktionen gör.

	Skriver man "help function_name" får man hela den
	kommentar som finns efter funktionshuvudet. Skriver man
	däremot "lookfor function_name" får man endast den
	första kommentarsraden.

	Om man har en tom rad innan kommentaren kommer denna endast
	att ses som en normal kommentar internt i funktionen och
	"help" och "lookfor" visar inte denna.

Exempel på hur några olika funktioner

Ett exempel på en funktion som varken tar emot några data eller returnerar något skulle kunna vara t.ex. ett välkomstmeddelande eller ett huvudprogram. Det skulle kunna se ut på något av följande sätt:

	function main
	    % Huvudprogrammet som gör något.

	    disp('Hello world!');
	end


	function welcome
	
	    disp('Welcome to the world.');
	end

En funktion som tar emot ett data, men inte returnerar något:

	function print_message(message)

	    disp(message);
	end

En funktion som endast returnerar ett värde:

	function y = random
	    % random - returnerar ett slumptal.

	    y = rand;
	end

En funktion med både indata och (ett) utdata:

	function sum = add(a, b)

	    sum = a + b;
	end

En funktion med flera utdata:

	function [x, y] = swap(a, b)

	    x = b;
	    y = a;
	end

Vill man lösa just det sista exemplet på lite kortare sätt skulle man kunna göra på följande sätt (även om detta är mer oläsligt och därför kanske inte är att rekommendera):

	function [b, a] = swap(a, b)
	
	end


Sidansvarig: Torbjörn Jonsson
Senast uppdaterad: 2012-08-16