Innhold:

Når skal du og når skal du ikke bruke semikolon (;) i Matlab !? Denne artikkelen prøver å gi et overblikk ..

Tilordninger og semikolon

En tilordning i Matlab er å lagre en verdi i en variabel. En annen måte å si dette på er at vi «gir variabelen en verdi»

saldo = 100;

Hovedregelen er at vi alltid avslutter en tilordning med semikolon. Det er ett unntak her, og det er at vi dropper semikolon ved feilsøking. De færreste programmer fungerer etter hensikten i første forsøk på å skrive dem[1]. Enten kommer det rødskrift på skjermen, eller så får vi helt andre resultater enn planlagt. Da er det behov for å skrive ut noen mellomregninger til skjerm underveis, slik at vi kan finne ut av hva som egentlig foregår. Siden dette dessverre skjer altfor ofte har de som laget Matlab lagt inn et «triks» i språket for oss,

Vi  ikke ha et slikt triks, for vi kunne like gjerne ha lagt inn en ny programsetning med

disp(saldo);

etter tilordningen av saldo. Nå er det en gang mye enklere å ta bort eller legge til semikoloner når du leter etter feil enn å legge inn helt nye linjer med kall til den innebygde funksjonen disp. Derfor syntes forfatterne av Matlab dette var «kjekt å ha». Så ble det slik.

 

Blokker og semikolon

Programmeringsspråk har to hovedingredienser, tilordninger (eller enkle programsetninger) ogblokker. Vi kan se på blokker som «bokser» for å samle programsetninger som logisk hører sammen. I grunnkurset har vi lært om blokkene vist i Tabell 1.

Tabell 1. Blokker i Matlab.

if (betingelse)
end
 
 
if (betingelse)
else
end
 
if (betingelse)
elseif (betingelse)
else
end
forliste
end
 
 
while (betingelse)
end
 
 
function returvariabel =funksjonsnavn(parameter,...)
end
 
 


Hver av disse kan inneholde en eller flere enkle programsetninger. De kan også inneholde nye blokker, f.eks. kan if-end inneholde en ny if-end, for-end kan inneholde en ny for-end; eller kanskje også en if-end. I dataspråk kalles dette å nøste blokker:

for i = 1:length(liste)
    if (liste(i) >= 0)
        Npos = Npos + 1;
    end
end   
for i = 1:m
    for j = 1:n
         sum2 = sum2 + tab(i,j)^2;
 end
end                             
while (tall > 0)
    if (mod(tall,2) == 0)
        like = like + 1;
    end
    tall = input();
end

Alle blokkene starter med spesielle ord som Matlab kjenner igjen — ifforwhilefunctionog til slutt end for å angi hvor blokka slutter. Slike spesielle ord kalles for nøkkelord. For blokker gjelder regelen at

Egentlig er dette litt intuitivt. Et semikolon forteller hvor en enkel programsetning slutter. På samme vis forteller nøkkelordet end hvor en blokk slutter. Da blir det litt smør på flesk å forsøke seg med semikolon etter end.

 

Spesialtilfeller

Det er to tilfeller hvor bruk av semikolon ikke spiller noen rolle — Matlab fungerer nøyaktig likt enten du bruker det eller ikke.

return
Nøkkelordet return brukes for å hoppe ut av en funksjon hvis det ikke er mer å gjøre[2]. Matlab fungerer likt både med og uten semikolon her.


disp
Den innebygde funksjonen disp skriver ut på skjermen innparameteren (tall eller tabell) du gir den. Du får samme resultat med og uten semikolon; det ville ikke ha noen mening å skrive resultatet to ganger på skjermen.

 


1. Gjelder ikke Fortran-programmerere.
2. Mange programmerere, inkludert Matlab-heftet, bruker return for å avslutte en funksjon. Dette er «arvegods» fra Fortran return-end og inkonsistent med andre blokkstrukturerte programmeringsspråk.
  • No labels