loopar
Uppgift:
Skriv en funktion som heter mySum som tar två parametrar start och stop och som sen beräknar summan av talen från och med start till och med stop. Kontrollera din lösning genom att skriva ett huvudprogram som anropar funktionen för tre olika värden.
Vad händer om start är större än stop? Hantera detta fall antingen genom att låta funktionen returnera NaN eller genom att ändra intervallet till [stop, start] istället. Kontrollera att resultatet blir det du tänkt dig.
lösning:
function result = mySum( start, stop )
%Calculates the sum of the numbers in the interval [start, stop]
if start < stop
result = sum(start:stop);
else
result = sum(start:-1:stop);
end
end
Min lärare hade sagt att man bör undvika använda loopar i matlab. Här har de använt sig av loop. Är det för att sum() inte kan räkna summan från start till slutet och det behövs en loop för att kunna köra sum() flera gånger tills start=stop??
och en till fråga. Hur vet man var i koden man får ha semikolon ??
Var ser du en loop? Loopar snurrar flera gånger, i MATLAB är det for och while. Ser ingetdera här.
Under huven gör MATLAB sedan loopar av detta, men den gör det mycket mer effektivt än om man hade använt t.ex. for i MATLAB. Din MATLAB-kod skall alltså så långt möjligt undvika for och while, men ibland behövs de.
Semikolon har man för att undertrycka utskrift vid tilldelning. Editorn brukar varna om man glömt sådana, den varnar också för onödiga semikolon.
You are back! trots att det är en tidigt lördagsmorgon
Ja du har rätt. Jag trodde även if räknas som en loop.
Men vad säger sum(start:-1:stop) ? säger den om start är större än stop då ska man minska start med -1 tills man kommer till stop?
Testa att skriva 10:-1:1 i kommandofönstret!